Анимация формы сцены

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 может изменить материал сетки кожи, чтобы изменить внешний вид модели.