Rotating a camera is more performant according to this developer article.
Moving a viewport’s physical children is less performant than keeping them static. If you need to update the view, it’s better to move the camera than move the parts/models.
For @CallCopsIKillTime checkout the placefile
The code should look like this:
--CF is the model position, you can replace it with part.Position or handle.Position.
local cf, size = model:GetBoundingBox()
local distance = vpfModel:GetFitDistance(cf.Position) --Calculated by module, or you could set any number
game:GetService("RunService").RenderStepped:Connect(function(dt)
theta = theta + math.rad(20 * dt)
orientation = CFrame.fromEulerAnglesYXZ(math.rad(-20), theta, 0)
camera.CFrame = CFrame.new(cf.Position) * orientation * CFrame.new(0, 0, distance)
end)