I've been working on a custom camera script and I tried to implement a poppercam back into the scriptable camera. I've learned that there's a function GetLargestCutoffDistance() that returns a float, which refers to the number of studs the camera must move forward if there is something blocking it. Here's a little snippet of my code:

runService.RenderStepped:Connect(function()
	local Character = localPlayer.Character
	local rootPart = Character:FindFirstChild("HumanoidRootPart")
	
	if Character and rootPart then
		Camera.Focus = Character.Head.CFrame
		
		--How many studs to move forward
		local cutoff = Camera:GetLargestCutoffDistance({})
		
		--Set rotated start cframe inside head
		local startCFrame = CFrame.new((rootPart.CFrame.p + Vector3.new(0,2,0)))*CFrame.Angles(0, math.rad(xAngle), 0)
			*CFrame.Angles(math.rad(yAngle), 0, 0)
		
		--Set camera focus and cframe
		local cameraCFrame = startCFrame + startCFrame:vectorToWorldSpace(Vector3.new(cameraPos.X,cameraPos.Y,cameraPos.Z))
		local cameraFocus = startCFrame + startCFrame:vectorToWorldSpace(Vector3.new(cameraPos.X,cameraPos.Y,-50000))
		
		--Set camera CFrame. I've played around with numbers and this seems to be where I should add the cutoff to make the camera move forward
		Camera.CFrame = CFrame.new(cameraCFrame.p,cameraFocus.p) * CFrame.new(0, 0, -cutoff)
	end
end)

It seems correct, but when testing, the camera jitters back and forth between the CFrame before adding the cutoff, and after.

Any ideas?