将gltf克隆对象从一个位置动画化(行走)

时间:2019-02-11 08:22:07

标签: animation three.js gltf

我正在一个项目中导入了带有动画的gltf人形生物。我正在创建导入模型的克隆以显示在场景中,而不是每次都创建一个新模型。

我有加载模型的行走和空闲动画。我该如何对克隆的对象进行动画处理,使其看起来就像它们从一个位置走到另一个位置一样。例如,如果克隆的模型在时间= 1s处处于位置(10,20,0),并且在时间= 2s处将处于位置(13,20,0),则我希望它看起来像模型正在行走职位之间。我阅读了新的动画系统文档,并进行了大量搜索,但没有帮助。

感谢您的帮助。

P.S:由于限制,我无法共享项目中的代码。

1 个答案:

答案 0 :(得分:0)

您可以通过减去两个向量然后对其进行归一化来获得方向。

let direction = new THREE.Vector3().subVectors(destination.position, object.position).normalize();

然后在渲染函数中更新该方向上每一帧的对象位置。速度变量值由您决定(默认值1)。

object.position.x += direction.x * speed;
object.position.y += direction.y * speed;
object.position.z += direction.z * speed;

您需要一个isMoving之类的布尔值或对象之间的距离才能知道何时开始和停止。

object.position.distanceTo( destination.position );

https://threejs.org/docs/#api/en/math/Vector3.distanceTo

对于动画,我认为您只想在到达目的地时在start和animation.stop()上调用animation.play()。

相关问题