Наконец сделал анимацию в движке.
Пока что в коде её делаю, примерно так:
// Creating test animation
// Keys
var key1 = new animState(0,[0,0,0]);
var key2 = new animState(50,[0,20,0]);
var key3 = new animState(100,[0,0,0]);
var key4 = new animState(0,[10,0,-50]);
var key5 = new animState(50,[0,30,10]);
var key6 = new animState(100,[10,0,-50]);
// Controller
ctrlr1 = new animController('xyz', 100);
ctrlr1.addKey(key1);
ctrlr1.addKey(key2);
ctrlr1.addKey(key3);
ctrlr2 = new animController('xyz', 100);
ctrlr2.addKey(key4);
ctrlr2.addKey(key5);
ctrlr2.addKey(key6);
// Animation
anim1 = new animation(100);
anim1._entityName = 'Teapot001';
anim1.addController(ctrlr1);
anim2 = new animation(100);
anim2._entityName = 'GeoSphere001';
anim2.addController(ctrlr2);
// AnimationSet
animSet = new animationSet(100);
animSet.addAnimation(anim1);
animSet.addAnimation(anim2);
animSet._speed = 0.1;
// Далее анимсет вешаю на родитель сценки, и анимация сама приделывается к нужным объектам.
Как ни странно, но сам файл у меня уже давно есть и даже экспортёр из Макса (успел до больнички сделать).
Думаю, завтра сделаю загрузку из файла. Пока что лень делать что-то замысловатое, поэтому вот вам прыгучие чайник и сфера. Гифку тоже делать лень, так что скрин чисто символический. Можно посмотреть вживую там же, где и всегда, т.е.
здесь.
Пока что анимация не может в повороты и скейлы (работают только контроллеры типа 'xyz'). Добавлю после того как налажу путь анимации из макса в двиг, а для тестов пока хватает и перемещений. Интерполяция векторов линейна.
Вообще и выглядит не как что-то интересное. Но всё же решил поделиться радостью, а то я как в больницу попал сначала не смог прогать, а потом просто разленился вконец (ещё и простудиться успел после выписки на след день).