Make viewmodel transition smoother

how can i make the transition from first to third person smoother

you can see when i which from first the third, the hand basically teleports.

script.Parent.Equipped:Connect(function()
	
	local animation = Instance.new('Animation')
	animation.AnimationId = 'rbxassetid://129541095783664'
	equipanim = character.Humanoid:FindFirstChildWhichIsA("Animator"):LoadAnimation(animation)
	equipanim:Play()
	
	equipped = true
	mouse.Icon = 'rbxassetid://83638201236035'
	local VM = script.Parent.VM.Value:Clone()
	VM.Parent = workspace.CurrentCamera
	paramss.FilterDescendantsInstances = {tool,VM}
	local leftShoulder = character.Torso["Left Shoulder"]
	local rightShoulder = character.Torso["Right Shoulder"]

	armrepfunc = run.RenderStepped:Connect(function(dt)
		character:FindFirstChild("Right Arm").LocalTransparencyModifier = 0
		
		local Delta = game.UserInputService:GetMouseDelta()
		SwaySpring:shove(Vector3.new(-Delta.X/100, Delta.Y/100, Delta.Y/100))
		BobSpring:shove(Vector3.new(Bob(5), Bob(10), Bob(5)) / 10 * (Character.PrimaryPart.Velocity.Magnitude) / 10)
		local handssway = SwaySpring:update(dt)
		local handsbob = BobSpring:update(dt)
		
		VM:PivotTo(workspace.CurrentCamera.CFrame * CFrame.new(0,0,-1.3) * CFrame.new(handssway.X, handssway.Y, handssway.Z) * CFrame.new(handsbob.X, handsbob.Y, handsbob.Z))
		local distance = (head.Position - camera.CFrame.Position).Magnitude
		if distance < 1 then
			rightShoulder.Part0 = VM.Torso
			leftShoulder.Part0 = VM.Torso
		else
			rightShoulder.Part0 = character.Torso
			leftShoulder.Part0 = character.Torso
		end
	end)
end)

Will you be able to have any zoom or will it be a lock first person and lock third person with no in between?

you’ll be able to have zoom 30 asdasdawd

And are you able to see the gun in third person?