我想将我的Three.js骨骼动画绑定到音轨。通常,要为模型制作动画,我会这样做:
var clock = new THREE.Clock();
function animate(){
var delta = clock.getDelta();
THREE.AnimationHandler.update(delta);
requestAnimationFrame(animate);
}
但是现在我有一个我想要使用的HTML5音频对象,我可以从中获得audio.currentTime
,但是将其转换为动画可以理解的增量的最佳方法是什么?
只是将audio.currentTime
保存到动画函数之外的变量,然后从新audio.currentTime
中减去它,还是需要更多的逻辑呢?就像用户稍微倒回轨道会发生什么?是否/应该delta是否为负且可以THREE.AnimationHandler处理那个或者我需要做Math.max(delta, 0)
什么的?
答案 0 :(得分:0)
未验证:从文档中,THREE.AnimationHandler.update
需要毫秒。使用音频值的增量应该不起作用,因为它应该返回一个比率,而不是以毫秒为单位的时间。
最适合您更改audio.currentTime
的情况的解决方案是使用currentTime
类的THREE.Animation
属性。
所以你可以简单地写一下渲染循环:
myAnimation.currentTime = audio.currentTime ;
答案 1 :(得分:0)
我最终做的是:
{{1}}
我不知道的是,这是否会产生任何我不知道的副作用。如果是这样的话,请告诉我。感谢。