Nate написалSorry, I missed your response.
Xelnath написалWhy would there be any Dip if 'Track 1' is 100% A -> 100% B -> 100% C - no additional tracks used? Even if B's % is going down, C's % should be going up by an equal amount to prevent Bind Pose from being mixed in.
The poses are not additive. Consider, at 25% of the mix duration when mixing from A to B:
1) Pose skeleton 75% between A's pose and the setup pose.
2) Pose skeleton 25% between its current pose and B's pose.
Let's say A and B key the same value which is 100. Step 1 results in 75. Step 2 results in 75 + (100 - 75) * 0.25 = 81.25. This is the "dip". It is worst at 50%, resulting in a value of 75. The further from the setup pose the keyed value, the bigger the dip.
No worries. Okay, so here's my perspective on where the logic falls down:
The poses are not additive. Consider, at 25% of the mix duration when mixing from A to B:
1) Pose skeleton 75% between A's pose and the setup pose.
2) Pose skeleton 25% between its current pose and B's pose.
This bold context only makes sense if A didn't finish mixing... or was first instructed to 'mix' with the Setup pose.
Using your example, let's take some arbitrary Timelines:
Setup Pose:
A: 0
B: 0
C: 50
Animation Alpha:
A: 100->100
B: 0 -> 100
C: Unkeyed
Animation Beta:
A: 100->100
B: Unkeyed
C: 0->100
In the sequence:
Bind Pose -> Alpha -> Beta
I would expect that the value of 'A' would never drop below 100.
1) The logic being that all timelines are attempting to blend between their current value and the next value according to the curve defined for each segment
2) If a timeline has a 'next value', it should use that value to blend out.
3) If a timeline has no 'next value', it should be mixing back towards the Bind Pose
Are these three hypothesis correct?
If not, the rest of this falls apart.
If yes, the following should happen:
During the Mix from 'Alpha to Beta':
At 50% mix, the value of 'A' should be 100. There is always a 'forward value' for the value of 'A'.
A should not be changing or blending back to the 'Bind Pose'.
By contrast, value 'B' should be at value 50 - there is no 'Forward Value' for the value of 'B' in any animation on that track. Therefore mixing with the 'Bind Pose' makes sense.
Value C, which has only the 'Bind Pose' value, would begin at 50 and remain at 50 until the Mix with B begins.
At that point, it would 'awaken' and begin a mix from Bind Pose with Beta, which would cause it to 'dip' from 50 to 0, then would resume from whatever value it had at the end of the Alpha->Beta mix, towards 100.
This all seems fine, standard and correct. The only issues that would come into place would occur if:
During the Mix from 'Alpha' to 'Beta',
Timeline A attempted to mix with 'Bind Pose'.
This doesn't make sense at a 'common case' fundamental level, because a 'forward value' for Timeline 'A' exists in 'Beta'. There's no need for the 'Ghost' Mix, aka Bind Pose, to be involved in Timeline A.
It DOES make sense for the 'Ghost' Mix to be involved in Timeline B. Animation Beta has no key for Timeline B. Therefore, it makes sense that Timeline 'B', provided no 'Forward Value' by Animation Beta, thus while Alpha is being mixed out, B goes from 100 to 0 again.
Now, you've repeatedly mentioned 'additional mixing' being a challenge. So I'm going to assume that the 'snap' case occurs when a new mix is introduced during a blend between a real timeline and a Bind Pose value. Please clarify if not. 🙂
Let's assume, for instance that new animation 'Theta' is turned on at 50% of the 'Alpha->Beta' mix.
Let's say Theta does nothing but set the value of Timeline 'B' to 200.
Theta
A: Unkeyed
B: 200-200
C: Unkeyed
Following Continuous Curve Theory - that we never want to trigger a snap in value unless requested by the user - the ideal result is that:
Timeline B is at value 100 at the start of the Alpha-Beta Mix.
Timeline B is at value 200 at the end of the Theta Mix.
At no point is there a jump in value.
The way to achieve these three goals is the following:
When the 'Theta' mix starts, we need to observe the current value of Timeline B.
Timeline B was going from 100 to 0, due to the influence of the 'Ghost' mix which was causing 'Alpha' to blend out towards 'Bind Pose'.
At 50% mix, the value of Timeline 'B' would be 50.
Correct so far?
In or to achieve a smooth blend on Timeline 'B' from 50 to 200, it would be inappropriate to derive the new value of 'B' from a mix of 'A' and 'Theta' alone - that would cause your aforementioned 'snap'.
Similarly, if we continue the mix from 'Alpha' to 'Bind Pose' on Timeline B - that would cause your described 'Dip'.
Likewise, if we follow curve theory and say that the rate of change on Timeline B must respected during the mix, you also get your 'Dip' in the curve.
Argh, I wish there was an easy way to plot curves in this forum. It would make this illustration so easy.
However, if we make use of the 'Ghost' mix and suddenly change her from being an inferred data point (the result of a 50% mix from 'Alpha' to 'Bind Pose') to a Timeline value holder....
'Ghost'
B: 50-50
Now exists. Ghost is nothing more than a container for the 'current value' of a Timeline that had no 'Forward Value' and was mid-blend, when a new timeline is introduced.
Now, rather than mixing between (Alpha to Bind Pose) + (Bind Pose to Theta), The Alpha to Bind Pose mix is marked as 'completed' and instead the blending only occurs between 'Ghost' and 'Theta'.
Unless I'm mistaken, this results in values like:
... okay, I'm opening my spreadsheet. Be back in an hour. :nerd:
21 Nov 2016, 08:58

The above is what happens when you mix as currently.

This is what happens with 'Ghost' mixing by holding onto the prior for unfinished blend values until the blend completes.
I tried to attach my Excel sheet... but it wouldn't let me. Will try to find a way around this... google doc, etc.
21 Nov 2016, 09:02
https://drive.google.com/file/d/0B7Q_oKLGtaJjX2xpZjUxcmp2U3c/view?usp=sharing
There we go.
The key here is that 'Ghost' only hold onto interrupted mix values between Current Pose and Bind Pose. She doesn't do anything else.