три. js анимация ключевого кадра, пауза между началом и концом цикла - PullRequest
0 голосов
/ 10 марта 2020

Я хочу анимировать трехмерный объект (вентилятор вращается на 360 градусов вокруг одной оси в бесконечном режиме) с ключевыми кадрами. Я создал 3d модель и анимацию с помощью blender 2.78 и экспортировал ее с помощью gltf expoter.

Здесь вы можете проверить или загрузить файл .glb или .blend все ресурсы в репозитории github

Что не так:

между каждым концом анимационной модели некоторое время приостанавливается. Я действительно не знаю, в чем дело. Я делаю что-то не так в блендере или, может быть, в коде мне не хватает какого-либо свойства для установки.

1- Я также пытался загрузить модель .glb в glTF Viewer и этот «прыжок» также виден в конце анимации (если вы уменьшите анимацию воспроизведения, вы лучше увидите, что происходит).

2- Я также был пытаюсь установить различные комбинации кайфреймов вращения:

1 кадр: вращение вентиляторов 0 - | - 10 кадр: вращение вентиляторов 324 (я получаю странные прыжки)

1 кадр: вентилятор установить вращение 0 - | - 10 кадров: вращение вентилятора установить на 360 (здесь вентилятор некоторое время останавливается)

3- Я также пытался установить режим экстраполяции на линейный, но он делает ' Эффект t Экстраполяция изображения Blender

4- Экспорт настроек glft (Всегда проверяются примеры анимации) Настройки glft изображения

this часть кода, которую я использую для анимации

loader.load("animation.glb", gltf => {
    this.mixer = new THREE.AnimationMixer(gltf.scene);
    //this.mixer.timeScale = 0.6;

    let action = this.mixer.clipAction(gltf.animations[0]);
    action.play();

    scene.add(gltf.scene);
)};

startAnimationLoop = () => {
    this.delta = this.clock.getDelta();
    if (this.mixer) this.mixer.update(this.delta);

    //[...] rest o code
};

Я начинаю думать, что t отсутствует какое-то свойство интерполяции ...

Примечание

Я хочу сделать это с анимацией модели, не поворачивая меня sh, добавляя меня sh .rotation.x + = 1; в анимации l oop

РЕДАКТИРОВАТЬ РЕШЕНИЕ

OK Извините, я нашел это сам ... Это была ошибка на стороне анимации блендера. На самом деле я устанавливал вращение 0 на «первом» ключевом кадре, а не на «ноль», который генерировал паузу (не знал, что анимации в ключевых кадрах в blender начинают отсчитывать с 0 ...)

...