|
@@ -82562,21 +82562,17 @@
|
|
|
var endTime1 = key.time + key.dur + fadeTimeEnd;
|
|
|
var startTime2 = key.time + fadeTimeStart;
|
|
|
var endTime2 = key.time + key.dur - fadeTimeEnd;
|
|
|
- key.tempTime_ = time - startTime1; //当前动作时间
|
|
|
+ key.tempTime_ = MathUtils.clamp(time - key.time, 0, key.dur); //time - startTime1 //当前动作时间
|
|
|
|
|
|
- if (i == 0 && time < key.time) {
|
|
|
- //开始前维持第一个动作
|
|
|
- key.tempTime_ = 0;
|
|
|
+ if (i == 0 && time < startTime2) {
|
|
|
+ //开始前维持第一个动作
|
|
|
return 1;
|
|
|
} else if (i == keys.length - 1 && time > endTime2) {
|
|
|
//所有动作播完后维持最后一个动作
|
|
|
- key.tempTime_ = Math.min(key.tempTime_, key.dur);
|
|
|
return 1;
|
|
|
} else {
|
|
|
if (time < startTime1 || time > endTime1) return 0; //out bound
|
|
|
|
|
|
- key.tempTime_ = time - startTime1; //当前动作时间
|
|
|
-
|
|
|
if (time >= startTime2 && time <= endTime2) return 1;
|
|
|
if (time < startTime2) {
|
|
|
return Potree.math.linearClamp(time, [startTime1, startTime2], [0, 1]);
|
|
@@ -82614,7 +82610,8 @@
|
|
|
animateActions.forEach(action => {
|
|
|
action.setEffectiveTimeScale(action.tempSW_.scale); //speed 只有没paused时有效
|
|
|
action.setEffectiveWeight(action.tempSW_.weight);
|
|
|
- action.time = action.tempSW_.time % (action._clip.duration / action.tempSW_.scale) * action.tempSW_.scale; //只有paused时有效
|
|
|
+ action.time = action.tempSW_.time % ((action.clipDur_ || action._clip.duration) / action.tempSW_.scale) * action.tempSW_.scale; //只有paused时有效
|
|
|
+ action.tempSW_.weight < 1 && console.log('action', action._clip.name, action.time, action.weight);
|
|
|
});
|
|
|
|
|
|
//model.mixer.timeScale = 1 ;
|