You don’t create the new camera. You have a camera inside say workspace maybe centered on a part. you then set the viewportFrame’s camera to the camera centered on the part. Then to render something you can just set the character’s CFrame to the part’s CFrame and shove it in the ViewportFrame.
Here’s my setup for an ItemThumbnail:
In blue is the camera brick, and it’s facing the grey BasePart.
Here’s my workspace setup.
Then I set the ViewportFrame’s camera to the camera in the model.
Then when I want to render something I clone it out of ReplicatedStorage and set the base part’s CFrame to the CFrame of the Base part.
Now on to animations and armor/updates, there are a few things to take note of:
You can only use a LocalScript to edit the model in the ViewportFrame
Make sure when doing things like loading animations or editing the model, you are editing the clone inside the ViewportFrame
For adding Accessories/armor, make sure you either:
Set the CFrame of the new accessory to the CFrame of the clone
Put the clone (with the accessories) into workspace (Like I said before, workspace has properties that mash the Accessories to the right place)
Make sure you are adding things like accessories and stuff Inside the model in the ViewportFrame
That’s not all of them but those are a few major things to take note of.
Also please share your code if you have further issues.
This is all just my personal preference and other people like it better when they create the camera themselves but I just like a solid foundation.
presumably, you can clone the character and update the CFrame of each part when the CFrame of the corresponding parts change, and just use the offset from HumanoidRootPart to move the character within the ViewportFrame?
This works perfectly, but I think there’s a memory leak or something because if I rapidly equip and unequip a tool, my FPS just keeps decimating and decimating. I went from like 80fps to 20 from maybe 10-15 seconds of quick switching