Экспорт анимаций из Blender в формат glTF требует тщательной подготовки сцены и модели. Первым шагом является проверка структуры модели. Все объекты, участвующие в анимации, должны иметь правильные именования и иерархию, так как glTF строго сохраняет структуру сцены. Рекомендуется использовать Armature для скелетной анимации и убедиться, что все веса вершин корректно распределены по костям.
Все ключевые кадры должны быть выставлены на Action внутри Dope Sheet > Action Editor. Для комплексных проектов удобно создавать отдельные Actions для каждой анимации (например, «Idle», «Walk», «Run»), что упрощает управление анимациями после импорта в Three.js. Необходимо удалить все лишние модификаторы, которые не поддерживаются glTF, например, Boolean или Remesh, так как они могут некорректно экспортироваться.
Перед экспортом важно убедиться, что сцена находится в корректных единицах измерения: Blender использует метры по умолчанию, что совпадает с единицами Three.js.
Blender предоставляет встроенный экспорт glTF 2.0
через меню File → Export → glTF 2.0. Ключевые
параметры:
glTF Binary (.glb) или
glTF Embedded (.gltf); .glb объединяет все
ресурсы в один файл, .gltf сохраняет текстуры
отдельно.Selected Objects, если требуется экспортировать только
выделенные объекты.+Y Up, чтобы
соответствовать координатной системе Three.js.Animations и
Skinning должны быть включены для корректного экспорта
скелетной анимации.Draco Mesh Compression может существенно уменьшить размер
модели, но требует последующей настройки в Three.js при загрузке.Особое внимание стоит уделить Bake Animation. Если анимация содержит constraints, драйверы или модификаторы, их нужно “запечь” в ключевые кадры, чтобы glTF мог корректно воспроизвести движения.
После экспорта файл загружается через GLTFLoader:
import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
const loader = new GLTFLoader();
loader.load('model.glb', (gltf) => {
const model = gltf.scene;
scene.add(model);
const mixer = new THREE.AnimationMixer(model);
gltf.animations.forEach((clip) => {
mixer.clipAction(clip).play();
});
animate();
function animate() {
requestAnimationFrame(animate);
const delta = clock.getDelta();
mixer.update(delta);
renderer.render(scene, camera);
}
});
AnimationMixer управляет всеми действиями модели.
Каждый AnimationClip, экспортированный из Blender,
можно запускать, останавливать и смешивать. Для переключения между
анимациями используется метод fadeIn и
fadeOut, позволяющий создавать плавные переходы.
Sampling позволяет
сократить количество кадров без потери качества анимации.glTF поддерживает PBR материалы. При экспорте необходимо убедиться, что текстуры:
Three.js автоматически интерпретирует PBR-материалы glTF, поэтому большинство настроек Blender корректно переносится.
После экспорта рекомендуется использовать https://gltf-viewer.donmccurdy.com/ для предварительной проверки модели и анимаций. Это позволяет убедиться, что:
Любые проблемы на этом этапе проще исправить в Blender, чем позже в Three.js.
morphTargetInfluences, экспортируются
из Blender как shape keys.Правильная подготовка и оптимизация экспорта glTF обеспечивает максимальную совместимость с Three.js, минимизирует ошибки и позволяет создавать плавные, реалистичные анимации в веб-среде.