I have a virtual camera following the player, I'm doing all my updates on FixedUpdate, and the cinemachine brain update method is set to "Smart Update". On both the editor and the PC build, the camera follows the player smoothly, no jitter at all. However I published a demo of my project and some people complained about the camera jittering, I tried to modify some parameters in order to see if I could reproduce the issue, but it seems the only way to make the camera jitter is by changing the cinemachine brain update method, if I set it to "FixedUpdate" the camera follows the target smoothly most of the time, just a tiny amount of jittering at some points, if I set it to "LateUpdate" there's a very notorious amount of jittering. The best explanation I can think so far is that for some reason the cinamachine brain is choosing to update the camera on LateUpdate on some PC's... maybe they are low end PC's with a low frame rate? ... not sure, a guy sent me the specifications of his PC and doesn't seem like low end.
It does have a rigidbody but it is moved by applying forces, so the position is controlled only by forces, the rotation on the Y axis is controlled by applying torque, but I'm controlling the angular velocity around axis X and Z though code, basically I'm forcing them to be zero.
In your situation there should never be any jitter, ever, if you set the Brain to FixedUpdate. What version of CM are you using? Some versions had an issue here.
Maybe it has something to do with the way you're controlling the angular velocities through code. Can you elaborate on that a little?
My project is a racing game, and the problem I had was that the virtual camera parameters apply for the local rotation of the target gameobject, this is what anyone wants under normal conditions, but in my case when your vehicle is hit by a bullet it starts to spin around for certain amount of time, that makes the virtual camera to try to follow the spin which causes the player to get disoriented and confused. To solve this I added a child object which's rotation is controlled by code, making sure it is always aligned with the track, then I made that object the virtual camera's target, so when you get hit by a bullet, you see your ship spinning, but the camera remains focused and aligned with the track and you don't get confused and disoriented. I guess that's the source of the jittering, but like I said, I haven't been able to reproduce it on my own PC, all this started because someone sent me a video where the jitteing is very notorious.
You would have to be very careful in your code not to introduce jitter. I agree, this is a likely source. Does the code execute in FixedUpdate? To solve your problem without resorting to the child object, have you tried the SimpleFollow binding mode for the transposer?
Yes, everything is done on FixedUpdate. It doesn't work for me because it forces "World Up" and the track can bend in all directions, at some points it can be completely upside down which puts the camera beneath "the floor".
That's likely the problem. Angular damping still suffers from gimbal lock if target is going too steeply up or down. CM 2.2.8 addresses this issue. In the meantime, you can try setting the pitch damping to 0, or grab the CM 2.2.8 preview and see if it helps. You'll want this setting:
Thanks for this thread - I had the same issue and after setting the brain to fixed update with rigidbody interpolation turned off, the jitter was removed. However if I add any kind of noise the jitter is back, quite strongly, and I need to set the Brain to smart or late update, which almost eliminates the jitter but not completely removes it. Is there a different setup recommended there?
What do you mean when you say "add any kind of noise"? And are you talking about gimbal lock, or about judder caused by inconsistencies between FixedUpdate/LateUpdate?
My bad didn't explain it fully. I'm following the rigidbody object with CinemachineFreeLook. The brain uses FixedUpdate, and when I use noise in CinemachineFreeLook (Basic Multichannel Perlin), that's when the jitter reappears. It is largely reduced (but not completely) if the Brain is switcher to Smart or LateUpdate. So I'm wondering why that is, or if I'm doing something wrong there, or if another setup is better for the camera if I'm using noise on the CinemachineFreeLook component
Can you export a simple repro case of this? It's not something we've seen before. But maybe first, show me a picture of the inspector of the Noise section of the vcam.