Sceneform позволяет импортировать модели с анимацией. Вы можете использовать API-интерфейсы Sceneform для воспроизведения и управления анимацией, а также для присоединения узлов к скелету модели.
Например, образец Sceneform Animation включает файлы, используемые для создания моделей андроида Энди и бейсбольной кепки. Модель Энди содержит данные анимации, а бейсбольная кепка является неанимационной моделью. Когда вы запускаете образец, Энди танцует брейк-данс и машет руками, в то время как шляпа остается прикрепленной к его голове с помощью узла.
Анимация модели формы сцены и анимация свойств Android
Важно различать анимацию модели в Sceneform и анимацию свойств в Android.
Анимации моделей создаются заранее художниками с использованием программного обеспечения для моделирования и анимации. Они содержат данные скелетной анимации . Эти анимации необходимо экспортировать в виде файлов
*.fbx
.fbx, а затем импортировать в файл*.sfb
для использования в Sceneform.Анимация свойств является фундаментальной концепцией Android и не является специфичной для Sceneform. Этот вид анимации может изменить любое изменяемое значение в объекте Java, имеющем геттер и сеттер. Анимированные значения можно задавать динамически, но их нельзя упаковать в файл
*.sfb
.И свойство, и анимация модели поддерживают Android Animator API . Оба они поддерживают слушателей , управление воспроизведением (начало/стоп/конец/пауза/отмена), продолжительность и задержку начала.
В анимации модели предоставляется только ограниченная поддержка воспроизведения
TimeInterpolators
. Обратное воспроизведение не поддерживается в анимациях моделей.Чтобы увидеть моделирование анимации Sceneform в действии, просмотрите пример анимации .
Чтобы увидеть анимацию свойств с использованием Sceneform в действии, просмотрите пример Солнечной системы .
Концепции анимации моделей
Прежде чем приступить к работе с анимированными моделями, рекомендуется ознакомиться с конкретными понятиями, относящимися к скелетной анимации , а также с соответствующими ограничениями и функциями, применимыми к Sceneform.
Кости. Анимированная модель содержит кости , которые соединены друг с другом, образуя отношения родитель-потомок в иерархии. Анимация изменяет положение и ориентацию костей во время воспроизведения.
Точно так же, как перемещение родительского
Node
в Sceneform приводит к перемещению всех дочернихNode
, перемещение родительской кости в Sceneform приводит к перемещению дочерних узлов. Кости можно перемещать с помощью анимации или получить к ним доступ как к узлу через классSkeletonNode
. Когда кости обращаются как кNode
, новые позиции перезаписываются каждый кадр анимацией, если она воспроизводится.Скелет. Скелет состоит из всех костей вместе, образуя иерархию отношений родитель-потомок.
Например, модель человеческой руки может содержать такие кости, как «левое плечо», «левое плечо», «левый локоть», «левое предплечье» и так далее. Начиная с «левого плеча» в качестве родителя этой иерархии, «левое плечо» будет назначено дочерним. Дети «левого плеча» могут быть «левым локтем» и нижними костями. Когда плечевая кость вращается, плечо, предплечье, локоть и любые кости ниже будут двигаться в тандеме.
У Sceneform нет API для изменения отношений родитель-потомок между костями в скелете. Это необходимо сделать заранее во внешнем пакете моделирования и анимации.
Даже модели, изображающие неорганические объекты, могут использовать скелеты для большей реалистичности. Например, модель кушетки может иметь кости и скелет.
Кожа. Скин — это вес, применяемый к нарисованной поверхностной сетке модели. Положение и форма сетки кожи рассчитывается на основе близлежащих костей. Это соединение кости с кожей отображает то, как модель деформируется, обеспечивая более реалистичное движение.
Скин должен быть подготовлен заранее с помощью пакета моделирования и анимации. Sceneform может изменить материал сетки кожи, чтобы изменить внешний вид модели.