Документация/Уроки/Создание комплексного динамического объекта

From NeoAxis Engine Wiki

Jump to: navigation, search
Перейти на уровень выше
NewDynamicObject 028.jpg

Введение

Перед изучением данного урока нужно освоиться со следующими:

Описание

В этом уроке будет продемонстрировано создание мельницы. Мельница будет состоять из двух мешей (башня и крылья). Башня будет статичной. Крылья будут прикреплены сочленением к башне и будут крутиться.

Мы будем использовать модели, которые есть в стандартной поставке NeоAxis Engine. Для этого нам понадобятся следующие файлы: WindMill.dds, WindMill.highmaterial, WindMill.mesh, WindMillFan.dds, WindMillFan.highmaterial и WindMillFan.mesh. Мы можем их найти в папке Bin\Data\Types\Dynamic\WindMill\. В этом уроке будет продемонстрировано создание следующих файлов: WindMill.type и WindMill.physics. Вы можете удалить или переименовать существующие файлы, чтобы не было конфликтов в течении урока.

Меш мельницы
Меш крыльев

Приступим к созданию мельницы!

Для начала создадим новый тип и назовём его WindMill, выбрав класс MapObject.

Новый тип WindMill

Прикрепите к WindMill.type модель башни.

Присоединен WindMill.mesh

Теперь, нам необходимо, создать физическую модель. Физическая модель необходима для того, чтобы создавать динамические физические конструкции.

Создадим новый ресурс.

Создаем новый ресурс для физической модели.

Выберем Physics Model.

Выбираем создание физической модели.

И назовем его WindMill.

Задаем имя физической модели.

Таким образом мы создали файл WindMill.physics.

Сейчас мы можем видеть новый ресурс под названием WindMill.physics. Далее нужно перейти в режим редактирования (правой кнопкой мыши > Edit) и задать имя прикрепляемому телу в физической модели. Давайте в параметре Name зададим имя bodyMain.

Задаем имя приклепляемому телу в физической модели башни.

Как мы видим, тело создается как форма куба. Это тело будет главной структурой физической модели и будет связано с башней мельницы.

Теперь нам необходимо отредактировать примитив bodyMain. Для этого откроем Shape Collection Editor нажав "..." в параметре Shapes. Удалите автоматически созданный примитив Box.

Удаляем стандартный Вох.

Давайте добавим башне новый примитив MeshShape. MeshShape позволяет вам создавать примитив на основе геометрии модели.

Добавляем Добавляем MeshShape

В поле MeshName укажите модель башни WindMill.mesh. Нажав OK вы увидите силуэт башни, построенный на основе модели.

Добавляем WindMill.mesh.

Сейчас нам нужно сделать нашу башню статичным объектом. Для этого укажите в параметре "Static" свойство в True.

Делаем физическую модель статичной.

Создание физической модели для нашей башни закончено. Теперь нам нужно присоеденить физическую модель к WinMill.type. Войдите в режим редактирования WindMill.type и в пункте PhysicsModel укажите только что созданный и отредактированный файл WindMill.physics.

Поставьте галочку в переключателе Show physics в правой нижней части. Теперь мы видим модель башни и физическую модель вместе.

Смотрим физическую модель приложенную к модели (мешу).

Теперь нам нужно создать крылья к мельнице. Крылья представляют собой динамическое физическое тело. Тело соединено с телом башни с помощью соединения.

Приступим к дальнейшему редактированию физической модели. Проследите, чтобы одновременно отображалась и модель мельницы и физическая модель. Для этого войдите в режим редактирования в WndMill.type и нажмите кнопку Edit Physics Model. Теперь вы находитесь в режиме редактирования физической модели, а также видите прикрепленных объекты из WindMill.type.

Нажмите правую кнопку мыши и в контекстном меню выберите Create Body.

Создаем новое физическое тело.

Физическое тело создано. Выберите тело и вытащите его на свободное пространство при помощи Select and Movie.

Перемещаем его для удобства редактирования.

Щелкните по телу правой кнопкой мыши. В контекстном меню выберите Create Box Shape и создайте примитив Box. Как видите, существует два способа создания тел и примитивов (через свойства и через контекстное меню). Разницы между ними нет.

Для башни мы создавали примитив физического тела на основе MeshShape. Для крыльев мы создадим физический примитив точно так же, но на основе Box.

Создаем 1-й Box.

Создайте два примитива Box и растяните их так, чтобы они напоминали крылья. В свойствах мы можем увидеть два примитива Box.

Задаем форму крыльев.

Переименуйте тело в bodyFan. В будущем мы будем использовать это имя, для прикрепления крыльев к башне.

Переименовываем в bodyFan.

Теперь нам необходимо добавить в WindMill.type модель крыльев. Для этого перейдите к редактированию типа. Откройте диалог AttachedObjects для приложенных объектов. Добавьте модель. Для этого выбирите строку MeshName и укажите путь к модели крыльев. Далее выберите в параметре Body в выпадающем меню имя тела bodyFan. Это необходимо, чтобы модель крыльев была прикреплены и двигалась вместе с физическим телом крыльев. Нажмите OK.

Добавляем крылья к мельнице.

Сейчас вы можете посмотреть, что модель крыльев расположена в позиции физического тела bodyFan.

Проверка совместимости физического тела и модели крыльев.

Теперь перейдите к редактированию физической модели. Окончательно настроим тело крыльев. В итоге, у нас получилось шесть примитивов Box.

Создаем физическое тело для модели крыльев.

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

Давайте переместим тело крыльев на это место, где они должны быть. Выделите тело башни и тело крыльев, и нажмите правую клавишу мыши. В контекстном меню выберите Create Hinge Joint.

Объединяем физические модели.

Переместите созданное соединение на необходимую позицию. Желтая линия в соединении - ось вращения.

Размещаем соединение.

Чтобы проверить созданную физическую модель, а это необходимо, нажмите кнопку Simulate. Также для перехода в режим симуляции вы можете просто нажать клавишу Space.

Вы можете добавить телам дополнительный импульс. Для этой цели, нажмите клавишу мыши на одном из крыльев и потяните его, перемещая мышь.

Проверка физического соединения.

Для того, чтобы крылья мельницы поворачивались без нашего участия, мы будем использовать двигатели.

Выберите соединение и щелкните по нему правой кнопкой мыши. В контекстном меню выберите Create Geared Motor At RotationAxis 1. Двигатели предназначены именно для придания дополнительной силы к осям соединений.

Проверка физического соединения.

Теперь нам необходимо отрегулировать параметры двигателя.

Задайте параметры MaxTorgue 1000, MaxVelosity 20, Throttle -1.

Настраиваем мотор.

Сейчас мы можем запустить симуляцию. И посмотреть крылья во вращении!

Сохранитесь. Теперь вернитесь обратно к редактированию WindMill.type и установите свойство AllowEditorCreate в true.

Разрешаем установку объекта в редакторе карт.

Примите поздравления! Создание мельницы завершено.

Сейчас вы можете открыть редактор карт и разместить на карте вашу мельницу!

Проверка на карте. Все работает!