Эластичная система — MRTK2

Эластичная система

MRTK поставляется с эластичной системой моделирования, которая включает широкий спектр расширяемых и гибких подклассов, предлагая привязки для 4-мерных кватернионных пружин, 3-мерных объемных пружин и простых линейных пружин.

В настоящее время следующие компоненты MRTK, поддерживающие диспетчер эластичных баз данных , могут использовать функции эластичных баз данных:

Диспетчер эластичных баз данных

Elastic System2

Переданные процессы диспетчера эластичных баз данных преобразовываются и передаются в систему эластичных баз данных.

Включение эластичных баз данных для пользовательских компонентов можно выполнить двумя шагами:

  1. Вызов метода Initialize при запуске манипуляции, обновление системы с помощью текущего преобразования узла.
  2. Запрос ApplyHostTransform при каждом выполнении вычисления эластичных баз данных в обновленном целевом преобразовании.

Обратите внимание, что эластичные компоненты будут продолжать моделиироваться после завершения манипуляции (с помощью цикла обновления диспетчера эластичных баз данных). Чтобы заблокировать поведение, автоматическое обновление эластичных баз данных EnableElasticsUpdate может иметь значение false.

По умолчанию компонент диспетчера эластичных баз данных при добавлении в игровой объект не будет включать эластики для любого типа преобразований. Поле Manipulation types using elastic feedback должно быть включено для определенных типов преобразования, чтобы создать конфигурацию эластичных баз данных и экстенты для выбранного типа.

Конфигурации эластичных баз данных

Аналогично конфигурациям элементов управления границами, elastic manager поставляется с набором объектов конфигурации, которые могут храниться в виде объектов, доступных для сценариев, и совместно использоваться различными экземплярами или префабами. Конфигурации можно совместно использовать и связывать как отдельные файлы ресурсов, доступные для сценариев, или как вложенные скриптовые ресурсы внутри заготовок. Дополнительные конфигурации также можно определить непосредственно в экземпляре без связывания с внешним или вложенным ресурсом скрипта.

Инспектор диспетчера эластичных баз данных укажет, является ли конфигурация общей или встроенной как часть текущего экземпляра, отображая сообщение в инспекторе свойств. Кроме того, общие экземпляры нельзя редактировать непосредственно в окне свойств диспетчера эластичных баз данных, но вместо этого ресурс, с которым он связывается, должен быть непосредственно изменен, чтобы избежать случайных изменений в общих конфигурациях.

Диспетчер эластичных баз данных предлагает параметры объектов конфигурации для следующих типов преобразования, каждый из которых представлен объектом эластичной конфигурации:

  • Перевод эластичных баз данных
  • Эластичная вращение
  • Масштабируемая эластичная база

Объект эластичной конфигурации

Конфигурация эластичных баз данных определяет свойства разностной системы осциллятора с заглубленной гармоникой. Следующие свойства можно настроить, но уже поставляются с набором значений по умолчанию в MRTK:

  • Масса: масса имитированного элемента осциллятора.
  • HandK: константная пружина руки.
  • EndK: константная пружина конца крышки.
  • SnapK: пружинная константа точки прикрепления.
  • Перетаскивание: коэффициент перетаскивания/демпфера, пропорциональный скорости.

Экстенты эластичных баз данных

Параметры экстентов эластичных баз данных зависят от типа манипуляции. Преобразование и масштабирование представлены эластичными экстентами тома , а поворот — эластичным экстентом кватерниона.

Эластичный экстент тома

Объемные экстенты определяют трехмерное пространство, в котором смоченной гармоничный осциллятор может свободно перемещаться.

Границы растяжения эластичного тома

  • StretchBounds: представляет нижние границы эластичного пространства.
  • UseBounds: должна ли система соблюдать границы растяжения. Если значение равно true, когда текущая итерация целевой позиции выходит за пределы растяжения, будет применена конечная сила.
  • SnapPoints: точки внутри пространства, к которому будет прикреплена система.
  • RepeatSnapPoints: повторяет точки прикрепления к бесконечности. Существующие точки прикрепления будут служить модулем, в котором фактические точки привязки сопоставляются с ближайшим целым числом, кратным каждой точке привязки.
  • SnapRadius: расстояние, с которого точки прикрепления начинают форсировать весну.

Сетка привязки эластичных томов

Эластичный экстент кватерниона

Экстенты кватерниона определяют четырехмерное пространство поворота, в котором смоченной гармоничный осциллятор может свободно вращаться.

Пример эластичного поворота

  • SnapPoints: углы эулера, к которым будет прикреплена система.
  • RepeatSnapPoints: повторяет точки привязки. Существующие точки прикрепления будут служить модулем, в котором фактические точки привязки сопоставляются с ближайшим целым числом, кратным каждой точке привязки.
  • SnapRadius: угол дуги, при котором точки прикрепления начинают форсировать весну в градусах эулера.

Пример сцены elastics

Примеры конфигураций эластичных баз данных можно найти в сцене ElasticSystemExample .

Пример сцены elastics