我想在.gltf中有一个基本的网格动画,我想在几秒钟内的特定时间播放。
这是装载机和搅拌机的设置:
GLTFLoader.load( 'myscene.gltf', function ( gltf ) {
model = gltf.scene;
scene.add( model );
mixer = new THREE.AnimationMixer( model );
mixer.clipAction(gltf.animations[0])
.setDuration( 60 ) //total of 1 min
.play();
render();
});
在 render()中,我有:
function render() {
var delta = clock.getDelta();
if (mixer != null) {
mixer.update(delta);
};
//console.log(delta); //Doesn't show anything valuable.
renderer.clear();
composer.render();
counter++;
}
到目前为止,我尝试使用.startAt(10)
,这只是播放之前的一个延迟。实际上,它应该重命名为.delay()
。 startAt()
应该是我想要的。我还尝试了.play(10)
的无效性。 mixer.time
确实会返回自播放以来经过的实际时间(以秒为单位),但无法将其设置为任何值。
由于数字似乎重复,我不了解整个clock.getDelta()
的事情,也不了解该怎么玩。如何使动画从动画中的10秒开始播放……或特定的关键帧编号?
答案 0 :(得分:1)
调用.clipAction()
时,会得到AnimationAction
类型的对象,可用于链接命令(如上例所示)。您可以将其存储在变量中,而不使用链接,然后使用.time
的{{1}}属性来告诉它从哪里开始。
AnimationAction
您可以详细了解var mixer = new THREE.AnimationMixer( model );
var action = mixer.clipAction( gltf.animations[ 0 ] );
action.setDuration( 60 )
action.play();
action.time = 5;
属性in this page of the docs。