2016-11-05 4 views
1

in threeJS: У меня есть объект3D и вы хотите сделать с ним простые анимации с ключевыми кадрами: Move, Rotate, Scale.threejs AnimationClip Необходимый пример

Существует простой пример здесь: https://threejs.org/examples/#misc_animation_keys но это больше не работает, так как анимации изменилась полностью вращение анимации переключается на кватернионы в threeJS некоторое время назад.

Я ищу очень простой пример, но, работая с новой системой анимации, я уже искал ее и ничего не нашел. На третьей странице отсутствует документация.

Использование Blender или Collada для создания анимации не является вариантом, так как я импортировал модель из файла шагов, который не поддерживается ни одним.

EDITЯ решил проблему с примером, но я все еще есть проблемы, так как я хочу, чтобы анимировать вложенную Object3D, но только корень Object3D, поэтому я указан ключи только для корневого объекта не всех иерархия. Но это порождает ошибку, потому что иерархия ключей анимации не имеет той же структуры, что и корневая иерархия Object3d. Но это еще одна проблема и нуждается в другом вопросе.

ответ

2

Проблема с примером заключалась в том, что вращение в анимационных клавишах теперь указано как кватернион, а не как поворот Эйлера, как в примере. Таким образом, добавление четвертого значения (1) в параметр вращения заставило его работать.

0

Я нахожу только это:

https://github.com/mrdoob/three.js/blob/master/examples/webgl_animation_scene.html

Кроме того, был в состоянии написать один себя:

//Let's create a mesh 
this.mesh = new THREE.Mesh(geometry, material); 

this.clock = new THREE.Clock(); 

//Save this mixer somewhere 
this.mixer = new THREE.AnimationMixer(this.mesh); 
       let animation = THREE.AnimationClipCreator.CreateRotationAnimation(100, "y"); 
       this.mixer.clipAction(animation).play(); 

//In the animation block of your scene: 

var delta = 0.75 * clock.getDelta(); 
this.mixer.update(delta); 

Это будет вращать данную сетку вокруг оси у.

Смежные вопросы