Reproduction steps:
1. Open the attached “repro_IN-96137“ project
2. Open the “Assets/Scenes/SampleScene.unity“ Scene
3. Enter the Play Mode
4. Open the Game view
5. Move around the Scene and observe the Game view while the “Capsule“ GameObject is moving
Expected result: There is no visible camera jitter
Actual result: There is visible camera jitter
Reproducible with: 3.1.3 (2022.3.59f1, 6000.0.41f1, 6000.1.0b9, 6000.2.0a6)
Reproducible on: Windows 10 (22H2)
Not reproducible on: No other environments tested
Notes:
- Reproducible in Player
- According to the user, the jitter is caused by “Cinemachine Brain” Component not being updated at the same rate as the tracked GameObject
- According to the user, the only way they can fix the jitter is by setting position
- damping to 0
====
This test project calls ManualUpdate from an ECS system, without any logic to ensure that it happens exactly once per render frame or physics frame.
The issue is that CinemachineBrain.ManualUpdate cannot be called more than once per frame. If you call it more often, then the cameras will not be updated on the additional calls. The result is that Cinemachine cannot be presented with steady target motion in this setup.
To support this in CM, need to search code for uses of Time.frameCount and find some way to make this compatible with multiple ManualUpdates per frame.
Related issue: https://discussions.unity.com/t/cinemachinebrain-manualupdate-cant-seem-to-work-when-called-in-fixedupdate-or-latefixedupdate/1611952/4
Here, client wants to call ManualUpdate from a custom LateFixedUpdate phase, but the fixed-frame logic within ManualUpdate does not allow this.