Thank you, now I see the issue. This was an interesting challenge! I can see 3 potential solutions.
- Bake one range at a time
- Counter-offset
- Software solution
Since I didn’t have the scene, let me start by showing the problem reproduced.
The Problem
Here, I have explicitly made the initial position of the skirt fan out, to highlight that it desperately needs a few frames to come to rest and that simply transitioning to “Animated” isn’t enough.
Let’s start at (1).
1. One Range At A Time
If the character starts at 0 and is offset at frame 77, we’ll bake until 76 such that we can maintain the pose of the skirt as we transition from “Dynamic” to “Kinematic” (called “Simulated” and “Animated” since version 2023.04.01).
This solves the issue of having to come to rest as much, but still kills any velocity from the previous pose.
2. Counter-offset
This would be the cleanest and most scalable solution I think, and the one I would probably attempt if I understand your circumstances correctly.
In this case, the offset is removed. The simulation is performed. And then the offset is returned. See that counterOffset
animation layer?
With no offset, the simulation would run under pristine conditions, and with the offset on a layer we can toggle it off once simulation has been recorded.
3. Software Solution
Now, the nerd in me can also think of many ways of solving this in software. As a feature. It would be trivial to add a “Freeze Velocity” attribute that when turned On would simply ignore changes to velocity to the previous frame. But as a developer who is also mindful of maintaining the software for a long time, there is also such a thing as “feature creep” which is written on the tombstones of many software projects. It means too many features got added to tackle things too small and isolated. And I cannot see any other use for such a feature than this particular case.
Perhaps this case is common enough to warrant such a feature? Perhaps this is more common in games development? If so, do let me know. Then it is no longer feature creep, but a valid feature that should exist to solve a common issue.