Guest3d.ru
некоммерческий проект, цель которого объединить профессионалов для обмена опытом и знаниями в области real-time рендеринга
guest3d
4.02: Экспертный уровень: Имитация физики (Physics simulation)

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

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

ODE
Quest3D поддерживает Открытый Динамический Движок ‘Open Dynamics Engine’ (ODE). Имитация физики в Quest3D настраивается довольно просто, и часто создает великолепный, убедительный результат.

Каналы
Канал ODE Body - это сердце любого проекта, использующего динамику. Он заменяет обычную структуру канала Motion объекта.

Первый потомственный вход канала ODE Body - начало движения, находящегося в покое, перед тем, как запущена имитация физики. Значение ‘0’ или ‘1’, привязанное ко второму потомственному входу, соответственно, активирует или деактивирует имитацию. Динамика реального времени должна быть включено или выключена пообъектно. Шаблон Toggle/FlipFlop может быть использован для простого переключения.

Формы ODE (ODE Shapes)
Объекты ODE могут иметь одну из четырех имитационных форм: Куб (Box), Сфера (Sphere), Плоскость (Plane) и Полигональный Объект (Polygon Object). Из них только Куб и Сфера действительно являются динамическими. Плоскость и Полигональный Объект могут быть использованы только как статичные коллизионные объекты, такие, как части окружения.

Сложные динамические формы могут быть сымитированы с помощью сочетания нескольких Кубов и/или Сфер друг с другом.

Полигональные формы (Polygon shapes)
Форма ODE типа Polygon Object должна иметь объект коллизии, привязанный к ее третьему потомственному входу.

Настройки ODE (ODE Properties)
Окно настроек канала ODE Body включает в себя ряд атрибутов.

Настройки для всех каналов ODE Body могут быть также доступны в Разделе Анимации, в закладке динамики ‘Dynamics’. Атрибуты ODE могут быть отредактированы только когда имитация выключена.

Полное описание различных настроек может быть найдено в Справочном Материале (нажмите F1 в Quest3D, чтобы получить доступ к нему). Три шаблона ODE объектов, которыми укомплектован Quest3D, представляют два обычно используемых набора настроек: Stable ODE Body, Slippery ODE Body и ODE Landscape.

Соединения ODE (ODE Joints)
Мощной возможностью ODE является функциональность его соединений. Каналы ODE Joint могут быть использованы для соединения нескольких ODE форм. Только формы Box и Sphere могут быть частью соединения, Plane и Polygon Object не могут.

В Quest3D поддерживаются четыре типа соединений.

* Шар и гнездо (Ball and socket)
Это соединение может быть использовано для имитации лампы, висящей на потолке.

* Петля (Hinge)
Это соединение может быть использовано для имитации дверных петель.

* Слайдер (Slider)
Это соединение может быть использовано для имитации поршня или скользящей двери.

* Петля2 (Hinge2)
Это соединение может быть использовано для имитации соединения колес машины, включая рессоры. Ось 1 (Axis 1) используется для управления, Ось 2 (Axis 2) - для движения.

Правила для соединений ODE Joints
При работе с соединениями, учитывайте следующие пункты:

  • Два тела, связанные соединением, не могут коллизировать друг с другом.
  • Два тела не могут быть связаны друг с другом более чем одним соединением. Множество соединений между одними и теми же формами будут противоречить друг другу, приведя к нестабильной имитации.
  • Свобода движения может быть ограничена для определенных типов соединения. Например, слайдовое соединение не может вращаться вокруг своей оси.

Команды ODE (ODE Commands)
Канал ODE Command может быть использован для смены ряда настроек имитации, включая точность, скорость, гравитацию и трение. Канал ODE Command может также быть использован для динамического применения сил к телам. Эти силы могут быть абсолютными в мировом пространстве (например, ветер), или зависимыми от тела (ракетные двигатели, к примеру).

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

Урок
Целью этого упражнения является получение опыта по использованию физической имитации в Quest3D. В первой сцене, создается система ходящей камеры ODE. Второй урок создает управляемую машину.

Необходимая сцена Quest3D:
..\Tutorials\4.2 – Physics simulation\Physics simulation 1.cgr
Необходимые шаблоны:
Physics \ ODE Body
Objects \ Collision \ Collision Object
Logic \ Triggers \ Toggle Value
Objects \ Null Object
Physics \ ODE Command

Шаг за шагом:

  • Откройте файл ‘Physics simulation 1.cgr’. Он содержит окружение, несколько кубов, сферу и камеру.
  • Отключите канал ‘Sphere Motion’ от канала ‘Sphere’.
  • Перетяните канал ODE Body в Граф Каналов и подключите его к первому потомственному входу канала ‘Sphere’. Переименуйте ODE Body в ‘ODE Sphere’.
  • Дважды щелкните по каналу ‘ODE Sphere’ для открытия окна его настроек. Из выпадающего списка форм ‘Shape’, выберите опцию ‘Sphere’ (сфера). Нажмите ‘OK’ для подтверждения.
  • В окне настроек ODESphere, установите ‘Roughness’ (грубость) на 50, ‘Angular Velocity Damping’ (дампинг угловой скорости) на 0.1 и ‘Sphere Radius’ (радиус сферы) на 0.5.

Нажмите ‘OK’ для подтверждения.

  • Дважды щелкните по каналу ‘ODE Environment’ для открытия окна его настроек. Из выпадающего списка формы ‘Shape’, выберите опцию ‘Polygon Object’ (полигональный объект). Нажмите ‘OK’ для подтверждения.
  • Перетяните канал Collision Object в Граф Каналов и подключите его к потомственному входу ‘Collision Object’ канала ‘ODE Environment’.
  • Создайте ярлык канала ‘Environment’ и подключите его к Collision Object.
  • Дважды щелкните по каналу ‘Collision Object’ для открытия окна его настроек. Нажмите кнопку ‘Create Tree’ (создать древо) для запуска канала, нажмите ‘OK’ для подтверждения.
  • Подключите 'Toggle/FlipFlop' к потомственному входу ‘Enable Body’ канала ‘ODE Sphere’.
  • Создайте ярлык канала ‘Toggle/FlipFlop’ и подключите его к потомственному входу ‘Enable Body’ канала ‘ODE Environment’.
  • Подключите ‘Sphere Motion’ к потомственному входу ‘Start Motion’ канала ‘ODE Sphere’.
  • Перетяните Null Object в Граф Каналов и переименуйте его в ‘ODE Sphere Placer’.
  • Выберите и удалите папку ‘Motion’, подключенную к каналу ‘ODE Sphere Placer’.
  • Подключите канал ‘Sphere Motion’ к каналу ‘ODE Sphere Placer’.

  • Перейдите в Раздел Анимации.
  • Переключитесь в режим Run / Edit Mode.
  • Нажмите на объект ‘ODE Sphere Placer’ в списке, в левой части экрана, чтобы выбрать его. Переместите объект на расстояние нескольких метров над землей. Обратите внимание, что объект ‘Sphere’ перемещается вместе с ним.
  • Протестируйте сцену на данный момент, нажав пробел. Обратите внимание, что сфера упала на землю.
  • Еще раз нажмите пробел, чтобы остановить имитацию физики. Обратите внимание, что сфера была выставлена на свою стартовую позицию.
  • Переместите объект ‘ODE Sphere Placer’ в точку прямо над землей, на плоской части пола.
  • Переключитесь в Edit Mode.
  • Перейдите в Раздел Каналов.
  • Создайте ярлык канала ‘ODE Sphere’ и подключите его к каналу ‘Get Movement from Matrix’. Эта операция привязывает камеру к вектору позиции объекта Sphere.
  • Добавьте канал ODE Command и подключите его к каналу ‘Forces’. Дважды щелкните по каналу для открытия окна его настроек. Из выпадающего списка выберите опцию ‘Add Force (ODE Body, vector)’. Выберите ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Создайте ярлык канала ‘ODE Sphere’ и подключите его к первому потомственному входу канала ‘Add Force (ODE Body, vector)’.
  • Подключите канал ‘Force Vector’ ко второму потомственному входу канала ‘Add Force (ODE Body, vector)’. Обратите внимание, что ‘Force Vector’ состоит из ключевых входящих каналов и корректируется поворотом камеры (heading).
  • Перейдите в Раздел Анимации.
  • Убедитесь, что сцена отображается в окне Animation 3D View с помощью проектной камеры Project Camera.
  • Переключитесь в Run Mode.
  • Нажмите пробел для запуска имитации.
  • Погуляйте вокруг, с помощью клавиш со стрелками вверх и вниз и мыши. Поднимитесь под уклоном и обратите внимание на скольжение назад. Проедьте через коробки и обратите внимание, что они раздвинулись по сторонам.
  • Нажмите пробел дважды для остановки и сброса имитации.
  • Когда будете готовы, переключитесь в Edit Mode.

Законченная сцена:
..\Tutorials\ 4.2 – Physics simulation\Physics simulation 1 – Complete.cgr
Если вы хотите, вы можете сохранить текущуюю группу каналов в вашу папку проектов. Следующие шаги будут связаны с новой сценой.

Урок2
Необходимая сцена Quest3D:
..\Tutorials\4.2 – Physics simulation\Physics simulation 2.cgr
Необходимые шаблоны:
Physics \ ODE Joint

Шаг за шагом:

  • Откройте файл ‘Physics simulation 2.cgr’. Он содержит окружение, машину и четыре отдельных колеса. Каждый из этих объектов уже настроен как ODE тело.
  • Перетяните канал ODE Joint в Граф Каналов и подключите его к каналу ‘ODE Joints’. Переименуйте ODE Joint в ‘ODE Joint Front Left’. Дважды щелкните по нему для открытия его окна настроек. Выберите ‘Hinge2’ в качестве типа соединения (Joint type). Выберите опцию ‘Enable motor’ (разрешить мотор), и нажмите ‘OK’ для подтверждения.
  • Создайте ярлык для канала ‘ODE Car’ и соедините его с потомственным входом ‘ODE Body 1’ канала ‘ODE Joint Front Left’ (переднее левое ODE соединение).
  • Создайте ярлык канала ‘ODE Wheel Front Left’ (переднее левое ODE колесо) и подключите его к потомственному входу ‘ODE Body 2’ канала ‘ODE Joint Front Left’.
  • Подключите канал ‘ODE Car Movement’ к потомственному входу ‘Velocity’ канала ‘ODE Joint Front Left’.
  • Подключите канал ‘ODE Car Steering’ к потомственному входу ‘Velocity2/Rotation (Hinge2)’ канала ‘ODE Joint Front Left’.
  • Создайте ярлык канала ‘Car Motion’ и подключите его к потомственному входу ‘Parent Matrix’ (родительская матрица) канала ‘ODE Joint Front Left’. Текущая структура каналов на данный момент должна выглядеть подобно приведенной на изображении ниже.

  • Перейдите в Раздел Анимации.
  • Нажмите на закладку ‘ODE’.
  • Выберите ‘ODE Joint Front Left’. Переместите центр соединения в центр переднего левого колеса. Настройка должна выглядеть подобно приведенной на изображении ниже. Обратите внимание, что три других колеса уже расположены правильно.

  • Переключитесь в Run / Edit Mode.
  • Нажмите пробел для запуска имитации физики. Обратите внимание, что машина упала на землю.
  • Покатайтесь на машине, используя клавиши со стрелками. Обратите внимание, что поведение колес действует убедительно.
  • Когда будете готовы, переключитесь в Edit Mode.

Законченная сцена:
..\Tutorials\ 4.2 – Physics simulation\Physics simulation 2 – Complete.cgr

Если у вас есть материалы, или вы хотите дополнить существующие, если вы хотите писать новости относящиеся к технологиям реалтайм рендеринга, или имеете полезные файлы, вы можете стать резидентом Guest3D.ru. Для этого нужно написать письмо в свободной форме на admin@guest3d.ru, с указанием вашей мотивации. Кроме того, каждый резидент получает возможность создать свою страницу, ссылка на которую будет прикреплена к каждому опубликованному вами материалу.
вход