Как экспортировать 3D-анимацию для веба и игровых движков

Для экспорта 3D-анимации для веба или игрового движка используйте glTF — GLB является его бинарной формой в одном файле — или FBX. Оба хранят иерархию нодов, скелеты, веса скининга и ключевые клипы. glTF — это открытый стандарт, который браузеры и большинство движков читают нативно; FBX — это давно установленный формат обмена для пайплайнов Maya, 3ds Max, Unity и Unreal. Что сохранится при экспорте, зависит от экспортера, поэтому ограничения, IK и процедурное движение сначала запекаются в ключевые кадры.

Краткий ответ

Запеките всё, что формат не может хранить — IK, констрейнты, драйверы и симуляции — в ключевые кадры, проверьте имена и длительность клипов, затем экспортируйте GLB для веба и большинства современных движков, или FBX, если пайплайн этого требует. Трансформации, скелетная анимация и веса shape-key переносятся; контролы рига, кастомные кривые и анимированные значения материалов обычно нет. Откройте файл в целевой программе, прежде чем на него полагаться.

Шаг за шагом

  1. 1

    Запеките то, что формат не может хранить

    Форматы файлов хранят ключевые кадры, а не системы, которые их создали. IK-солверы, ограничения, драйверы, выражения и симуляции должны быть сэмплированы в обычные ключи перед экспортом, иначе файл прибудет без движения там, где они были. В Studio это делается с помощью «Bake IK» на панели Rigging и «Animate ▸ Bake motion to keyframes…» для драйверов.

  2. 2

    Назовите и обрежьте клипы

    Движки импортируют каждую анимацию в файле как отдельный клип по имени. Давайте клипам имена, которые поймет программист — Walk, Idle, Open — и проверяйте их длительность, потому что клип с лишним ключом на двадцать кадров дальше конца будет проигрывать двадцать кадров пустоты.

  3. 3

    Выберите формат

    GLB для веба и для Godot, Blender, three.js и Babylon.js, которые нативно читают glTF; Unity читает его через пакет, такой как glTFast, а Unreal тоже его импортирует. FBX там, где пайплайн построен вокруг него — Maya, 3ds Max и многие проекты Unity и Unreal.

  4. 4

    Экспорт

    В Studio, Файл ▸ Экспорт 3D-модели… и выберите GLB или glTF — два формата, поддерживающие анимацию. Каждый клип в сцене записывается, начиная с того, над которым вы работали. Экспорт для веба… создает страницу, встраиваемый элемент, React-компонент или three.js-модуль, который воспроизводит анимацию.

  5. 5

    Проверьте в целевой программе

    Импортируйте файл в движок или вьювер, для которого он предназначен, и проиграйте каждый клип. Проверьте масштаб, направление, зацикливание и плавность движения — проблемы, описанные ниже, проявляются здесь или не проявляются вовсе.

glTF и GLB для анимации

glTF 2.0 хранит анимацию как каналы, каждый из которых нацелен на перемещение, вращение или масштабирование одного нода, или на веса морф-таргета (shape-key) меша. Каждый канал сэмплирует ключевые кадры с LINEAR, STEP или CUBICSPLINE интерполяцией, время хранится в секундах, а не в кадрах, и вращения представлены кватернионами. Skinned meshes содержат свои джойнты, inverse bind matrices и до четырех весов на вершину на набор.

Это намеренно узкий подход, поэтому glTF загружается почти везде без конвертации. Все, что выходит за его рамки — анимированный цвет материала, интенсивность света, фокусное расстояние камеры — требует расширения, такого как KHR_animation_pointer, и поддержка расширений варьируется между движками. glTF также по определению использует метры и ось Y вверх, поэтому он редко приходит с неправильным размером.

FBX для анимации

FBX — это проприетарный формат Autodesk, который на протяжении двух десятилетий является стандартом для перемещения риггированных, анимированных персонажей между DCC и игровыми движками. Он хранит скелеты, скининг, blend shapes, несколько дублей и частоту кадров, и Mixamo, Unity, а также Unreal свободно работают с ним.

Его слабости — те же, что делают его гибким: соглашения о единицах и осях различаются в зависимости от экспортера, поэтому FBX из одного инструмента может оказаться в сто раз больше или лежать на спине, а детали отличаются между версиями SDK. Многие файлы из Maya и Mixamo используют сантиметры, тогда как glTF — метры.

Что переносится, а что нет

Надежно переносятся: трансформации объектов, скелетная анимация костей, веса shape-key и структура клипов. Обычно теряются: IK и ограничения, драйверы и выражения, пользовательские элементы управления ригом, а также анимированные значения материалов, света и параметров камеры. Первую группу потерь запеките в ключи; для второй проверьте, поддерживает ли целевой движок расширение или требуется ли перестроить эффект.

Кривые — это тонкий момент. Экспортеры различаются в том, сохраняют ли они касательные Безье, записывают ли данные кубического сплайна или сэмплируют кривую в ключи. Экспортер, который записывает только установленные вами ключи с линейной интерполяцией между ними, сглаживает сильное ускорение/замедление между широко расставленными ключами. Если точное сглаживание важно в движке, добавьте ключи внутри сглаживания или запеките движение с частотой кадров.

Экспорт анимации из Mixos Studio

Экспорт GLB и glTF из Studio включает ключевые трансформации объектов и веса shape-key, сохраняет иерархию сцены, чтобы каждый объект анимировался в своем локальном пространстве, и записывает каждый клип в сцене. Целевые форматы FBX, OBJ, STL и USDZ не поддерживают анимацию, и диалоговое окно экспорта сообщает об этом перед загрузкой.

Стоит знать о двух ограничениях. Ключи записываются в установленное вами время и линейно интерполируются между ними в файле, поэтому добавьте ключ внутри длительного сглаживания, если движок должен воспроизвести его точно. А анимированные значения материалов, света и камеры остаются в сцене, потому что базовый glTF не имеет для них каналов. Файл сцены .mxs сохраняет все, что формат модели не может — генераторы, модификаторы, анимацию и настройки рендера — для случаев, когда целевым местом является сама Studio. Экспорт доступен по платному тарифу; анимация и предварительный просмотр бесплатны.

Часто задаваемые вопросы

Что лучше для анимации: GLB или FBX?

GLB для веба и движков, которые нативно читают glTF, таких как Godot и three.js — это открытый стандарт, метрический и согласованный между инструментами. FBX там, где вокруг него построен пайплайн, особенно Maya, 3ds Max и многие проекты Unity и Unreal. Оба поддерживают скелетную анимацию и shape keys.

Поддерживает ли glTF анимацию?

Да. glTF 2.0 анимирует перемещение, вращение и масштабирование нодов, а также веса морф-таргетов, с линейной, ступенчатой или кубической сплайн-интерполяцией, и поддерживает skinned meshes. Анимация других свойств, таких как значения материалов, требует расширения.

Почему моя экспортированная анимация не движется?

Обычно это происходит потому, что движение было создано чем-то, что формат не хранит — IK-солвером, ограничением, драйвером или симуляцией — и не было запечено в ключевые кадры перед экспортом. Другая распространенная причина — движок не воспроизводит клип: большинству требуется назначить клип или установить автовоспроизведение.

Почему моя анимация имеет неправильный размер или повернута в движке?

Соглашения о единицах и осях. glTF всегда использует метры и ось Y вверх; FBX зависит от экспортера и часто использует сантиметры. Установите параметры единиц и осей при экспорте или примените единое масштабирование при импорте, вместо того чтобы исправлять это для каждого клипа.

Могу ли я экспортировать анимацию из браузера?

Да. Mixos Studio экспортирует анимированные сцены как GLB или glTF со всеми клипами, или как веб-страницу или модуль three.js, который их воспроизводит. Анимация бесплатна; экспорт доступен по платному тарифу.

Анимируйте сцену и экспортируйте ее как GLB — каждый клип, в формате, который веб и большинство движков читают нативно.

Открыть Studio — бесплатно