Анимационная система Вердж3Д — Софт Эйт Софт
Description: Как анимировать сцену Вердж3Д с помощью Ява Скрипта.

# Анимационная система «Вердж3Д»

## Обзор

Анимационная система «Вердж3Д» позволяет анимировать различные сущности: кости ригов, ключи морфинга, свойства материалов (цвет, прозрачность, бинарные операции), видимость и трансформацию объектов. Анимированные свойства могут быть затухающими, перекрестными или искажёнными. Вес и временные шкалы различных анимаций могут быть изменены независимо друг от друга. Различные анимации на одном и том же или на разных объектах могут быть синхронизированы между собой.

На этой странице вы можете ознакомиться с основными компонентами анимационной системы, а также узнать как они взаимодейстуют между собой.

### Анимационные клипы

Если вы успешно загрузили анимированный 3Д-объект, в частности, экспортированный из «Блендера», «3дс Макса» или «Майи» с помощью GLTFLoader, одним из полей загруженного объекта будет "animations", содержащий массив AnimationClip-ов для данного ассета.

Каждый AnimationClip обычно содержит данные для определенного действия объекта. Например, если меш является персонажем, AnimationClip может содержать анимацию ходьбы. Если же меш является конфигурируемым объектом, в нём может содержатся анимация цвета материала.

«Вердж3Д» не поддерживает несколько анимаций одного типа для одних и тех же объектов. Например, если у персонажа имеются анимации для ходьбы, ожидания и бега, все они должны располагаться на одной временной шкале.

### Треки ключевых кадров

Внутри AnimationClip-ов данные для каждого анимированного свойства хранятся в отдельном KeyframeTrack-е. Предположим, что объект персонажа имеет связанный с ним скелет. В таком случае, одна дорожка ключевых кадров может хранить данные об изменении положения кости нижней части руки со временем, другая дорожка - данные об изменении вращения той же кости, третья — данные о положении, вращении или масштабировании другой кости, и так далее. Следует понимать, что AnimationClip может состоять из множества таких дорожек.

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

### Микшер анимации

Сохраненные данные составляют лишь основу для анимации — фактическое воспроизведение контролируется AnimationMixer-ом. Вы можете представить его не только как плеер для анимаций, но и как имитацию настоящего микшерного пульта, который может управлять несколькими анимациями одновременно, смешивая и объединяя их.

### Анимационные действия

Сам AnimationMixer имеет очень мало (общих) свойств и методов, поскольку им можно управлять с помощью AnimationAction-а. Настроив AnimationAction, вы можете определить, когда определенный AnimationClip должен быть воспроизведен или остановлен на одном из микшеров, будет ли и как часто клип должен повторяться, должен ли он выполняться с затуханием или масштабированием времени, и некоторые дополнительные вещи, такие как кроссфейдинг или синхронизация.

## Пример

`const action = v3d.SceneUtils.getAnimationActionByName(app, "AnimatedObjectName"); if (action) { action.reset(); action.play(); }`

## Пазлы

«Вердж3Д» содержит несколько анимационных пазлов, которые скрывают сложность системы анимации. В этих пазлах используется простая концепция «анимационных объектов», которые можно выбрать из списка или назвать по имени. Добавляя визуальные блоки, можно воспроизводить/приостанавливать/остановить/клонировать/разделять/подключать эти объекты без написания кода.