我目前正在与Three JS Editor for VR合作,只是为了好玩。我发现它相当完整,而且结构也很好,但是我在编辑器的侧边栏中缺少动画功能。
使用编辑器的脚本选项卡,我可以使用以下脚本制作GLB对象(GLB_Zorro.glb)的动画:
const mixers = [];
const clock = new THREE.Clock();
let mixer;
const loader = new THREE.GLTFLoader();
loader.load('3D/GBL_Zorro.glb', function (gltf)
{
const model = gltf.scene.children[ 0 ];
const position = new THREE.Vector3( 0, 0, 0 );
model.position.copy( position );
const animation = gltf.animations[ 0 ];
const mixer = new THREE.AnimationMixer( model );
mixers.push( mixer );
const action = mixer.clipAction( animation );
action.play();
scene.add( model );
});
function update()
{
const delta = clock.getDelta();
mixers.forEach( ( mixer ) => { mixer.update( delta ); } );
}
将脚本添加到模型中时,动画可以正常播放,但是最有效的方法是应该有一个选项卡,您可以在其中选择应该在对象中播放的动画,而不是手动创建新脚本并附加它到GLB对象。我认为应该以一种简单的方式在编辑器的边栏中实现此功能。
对Threesjs编辑器代码的进一步研究表明,Sidebar.js
文件上有一行(第30-36行)代码,看来他们添加了此功能,如以下代码所示。
var scene = new UI.Span().add(
new Sidebar.Scene( editor ),
new Sidebar.Properties( editor ),
new Sidebar.Animation( editor ),
new Sidebar.Script( editor )
);
container.add( scene );
上面Sidebar.js
上的代码显示,它们将动画添加到侧边栏,但仅添加了场景,属性和脚本。除动画外,所有内容均显示。
任何人都可以帮助我找到为什么动画选项卡未添加到侧边栏吗?
Threejs编辑器的master分支如下:
https://github.com/mrdoob/three.js/
如果有的话,我会分享解决方案的。
致以问候