Итак, цель проста: я хочу анимировать 3D-модель, импортированную в виде файла .gltf (в ней всего 1 анимация).
Я следовал инструкциям по документации:
https://threejs.org/docs/#manual/en/introduction/Animation-system
И некоторые другие примеры от интернированных, все они выглядят почти одинаково, только несколько измененных вещей, но идея всегда одна и та же.
Мой код (закомментированы неудачные попытки):
let loader = new THREE.GLTFLoader();
loader.load('scene.gltf', function ( gltf ) {
GLTF = gltf;
let xMesh = gltf.scene.children[0];
scene.add(xMesh);//arWorldRoot.add(xMesh);
animation = new THREE.AnimationMixer(xMesh);
animation.clipAction(gltf.animations[0]).setDuration(8).play();
//scene.add( gltf.scene );
//animation = new THREE.AnimationMixer(gltf.scene);
//animation.clipAction(gltf.animations[0]).play();
//gltf.animations.forEach(( clip ) => {
//animation.clipAction(clip).play();
//});
//render();
}, undefined, function ( error ) {
console.error( error );
} );
....
....
....
function render() {
requestAnimationFrame(render);
var delta = new THREE.Clock().getDelta();
if (animation != null) {
animation.update(delta);
};
renderer.render(scene, camera);
}
Вывод, который я получаю от всех этих попыток, заключается в том, что 3D-модель отображается, но не анимируется. В devTools нет ошибок / предупреждений.
Это довольно странно следовать официальной документации и не работать, но я уверен, что что-то упустил ...