我可以在单击按钮时移动到动画的特定位置,而不是对网格进行动画处理吗?

时间:2019-04-01 08:55:13

标签: javascript three.js

我有一个变形的3D网格,可以使用threejs进行加载。加载模型后,我可以启动动画剪辑。

但是我不想只运行动画,我想在单击按钮时移动到动画中的特定位置。例如,我有一个1分钟长的动画剪辑。如果用户按下按钮,则我希望以某种方式对几何图形进行变形,以使其在动画剪辑处于30秒时类似于几何图形。

threejs中有什么方法可以使用,或者您可以建议其他方法吗?

2 个答案:

答案 0 :(得分:1)

  

在threejs中有什么方法可以做到吗?或者您可以建议其他方法吗?

是的,我认为这应该可行。使用AnimationAction实例回放动画剪辑时,可以立即将其暂停,然后将time属性设置为所需的值。代码如下:

  const clipAction = mixer.clipAction( clip );
  clipAction.play();
  clipAction.paused = true;
  clipAction.time = 0.5;

此处演示了该方法:https://jsfiddle.net/w6catxfh/1/

答案 1 :(得分:-1)

如果可以对动画进行时间参数化,则可以执行此操作。考虑使立方体向上移动的两种方法。一方面,您可以简单地告诉立方体每个动画循环从其当前位置上移一定量:

var animate = function () {
                requestAnimationFrame( animate );

                cube.position.y += 0.01;

                renderer.render( scene, camera );
            };

执行相同动画的另一种方法是将多维数据集的位置描述为时间的函数:

var currentTime = 0;

var animate = function () {
                requestAnimationFrame( animate );

                cube.position.y = 0.01 * currentTime;
                currentTime += 1;

                renderer.render( scene, camera );
            };

视觉效果是相同的,但是您可以更改currentTime变量以在动画“时间轴”上跳转。