Hi,
I'm interested what the "absolute animation handling" option on the D3D9 advanced settings panel does. I noticed, that disabling this option makes some animations incorrect. Are there any reasons to disable this setting?
This is the description of this feature from D3D9Client.html:
Enable absolute animation handling
By default Orbiter uses incremental animations, meaning that for each frame the previous animation state is incremented by a small amount, which will induce some small error. Over time these errors accumulate and the animation is no longer in the orientation it's supposed to be (3-10 mins in worst cases).
Absolute animations updates the animation state from a default state for each frame. Which doesn't suffer from the accumulated error mentioned before. But absolute animations can fail if an add-on alters the order of operations (rotations). Therefore it's not 100% backwards compatible. So far however, no add-on is known to fail.
This really doesn't explain what "Enable absolute animation handling" actually does at all.
I understand the first bit... if you are incrementing an animation state x by a small number dx every time step like state = x + dx, the numerical roundoff will rapidly accumulate.
Absolute animations are essentially just taking a value and presenting it relative to 0. The airspeed indicator level comes from the airspeed. No numerical roundoff to accumulate.
I don't understand what they mean in the last three sentences, other than if you keep shuffling the order of a series of rotations that that will eventually screw up something.
On the R-4, the only incremental animations are the rotors, where accumulated numerical rounding doesn't matter. All of the instrument gauges are absolute animations, and the animation rotations don't change.
From the description, we should NOT be having the problem that this mode supposedly fixes, but the description is too poorly written to glean what it actually does.
EDIT: I'm thinking about the mesh visuals, and maybe it is referring to how the mesh vertices are moved in space. The center of mass position of the vessel is propagated using Newton's 2nd Law, but then the position of the mesh vertices need to be located relative to the center of mass. It could be that the pitch/bank/yaw rotations are applied incrementally after each time step to each vertex, and that would cause a position error to accumulate. That would cause all the vertices to drift around slowly relative to the vessel and each other.
The alternative would be to take the absolute pitch/bank/yaw angles and rotate the vertices through the the full angles. The above relative drift would not have a chance to occur.
The incremental method would be computationally lighter I think as you're just adding increments of displacement to each vertex, where you would need to do some linear algebra to rotate the mesh through the absolute angles at each time step. Using the absolute angles might be more accurate, but it increases the computational cost.