Quick answer: Call camera.ResetPreviousMatrix() on the frame of any cut/teleport. Cinemachine handles vcam switches via OnCameraCut. For one-off teleports, set a flag and reset on the next LateUpdate.
Cutscene snaps to a different angle. The first rendered frame after the cut shows everything streaked across the screen. Motion Blur thinks the world moved at 1000 m/s.
The Symptom
One-frame full-screen smear right after a camera teleport. Smooths out the next frame as Motion Blur stabilizes.
The Fix
public class CameraCut : MonoBehaviour
{
public Camera cam;
private bool _justCut;
public void Teleport(Vector3 newPos, Quaternion newRot)
{
cam.transform.SetPositionAndRotation(newPos, newRot);
_justCut = true;
}
void LateUpdate()
{
if (_justCut)
{
cam.ResetPreviousMatrix();
_justCut = false;
}
}
}
ResetPreviousMatrix sets the previous-frame matrix equal to current. Velocity is zero; no smear.
Cinemachine
CinemachineBrain calls Camera.ResetPreviousMatrix on virtual camera cuts (impulse-priority change with no blend). For instant blends within Cinemachine you usually don’t need extra code.
Verifying
Trigger a teleport. Frame after the cut should be clean. Without the fix, full-screen blur for one frame.
“ResetPreviousMatrix on cut. No streak. Cinemachine does it for vcam switches.”
Related Issues
For Cinemachine blend, see blend jumps. For Volume blend, see Volume blend.
Reset previous. Cuts stay clean.