Экспорт 3D моделей из Blender в игровые движки. Unreal Engine, UDK, CryEngine, Amazon Lumberyard, Unity3d импорт моделей. Часть 2.

В данной части статьи мы продолжаем идти по меню экспорта Blender с целью осуществить в unity3d импорт моделей, включающий правильный экспорт 3D модели из Blender. В данной части статьи рассказывается про такие пункты меню экспорта в blender как источники света/Lamp, пустышки/Empty, Камера/Camera и Other. Также будет рассказано как копировать значения Transform’а объекта, координат 3D объекта.

Экспорт 3D моделей из Blender в игровые движки. Часть 1. Экспорт из Blender в Unity 3D моделей. Как перенести 3d модель в Unity3D, Unreal Engine, UDK, CryEngine, Amazon Lumberyard.

Экспорт 3D моделей из Blender в игровые движки. Как экспортировать из blender в Unity 3d, Unreal Engine, UDK, CryEngine, Amazon Lumberyard. Часть 3. Ориентация 3D модели в пространстве. Локальные оси.

Экспорт 3D моделей из Blender для игровых движков. Импорт моделей в Unity из Blender. Часть 4. Origin, Pivot Point, центр 3D модели.

Экспорт 3D моделей из Blender в Unity3D, Unreal Engine, UDK, CryEngine, Amazon Lumberyard. Часть 5. Blender экспорт текстуры и материалов.

Экспорт 3D моделей из Blender в игровые движки. Часть 6. Как добавить 3d модель в unity, Unreal Engine, UDK, CryEngine, Amazon Lumberyard.

 

Lamp/Освещение. Каждый источник света импортируется в Unity3D как пустышка, координаты которых могут быть использованы для точного выставления источников света в Unity. Представьте, что вы в Blender’е создали жертвенный алтарь и подобрали позиции для источников света таким образом, что тем самым создали свою непередаваемую жуткую атмосферу.

unity3d импорт моделей
На рисунке показаны выставленные источники света

Что же вам теперь, заново выставлять все источники света в Unity3D? Нет, экспортируйте 3D модель алтаря вместе с источниками света, и выполните в unity3d импорт моделей а на их место определите источники света Unity3D.

unity3d импорт моделей
На рисунке – пустышки-свет и локальные координаты

Итак, пустышки для света есть, повернуты как нужно, но как же задать координаты для созданных в Unity нативных источников света, ведь в unity3d импорт моделей пустышек произошел с локальными координатами. Для отображения позиции объектов в мировых координатах, достаточно в папке Editor (если ее не существует, то создайте ее) создать javascript, например, с именем “WorldPosViewer” следующего содержания:

 

На рисунке – позиция в мировых координатах
На рисунке – позиция в мировых координатах

Если вы не хотите связываться со скриптами, то вы можете разорвать зависимость между пустышками-светом и родительской пустышкой “sculls” простым перетаскиванием пустышек-света в корень окна иерархии Hierarchy, на один уровень с, например, имеющимися у меня, “Quad”, “New Text”, “GameObject” и т.д. Но будьте готовы к “разрушению” экземляра префаба (который, впрочем, вы сможете собрать заново), о чем вас предупредит диалоговое окно Unity “This action will break the prefab instance. Are you sure you wish to continue?”.

На рисунке показан альтернативный способ, как узнать глобальные координаты (мировые координаты) позиции дочерних объектов в Unity3D.
На рисунке показан альтернативный способ, как узнать глобальные координаты (мировые координаты) позиции дочерних объектов в Unity3D.

Теперь вы знаете позицию пустышек-света в мировых координатах (глобальных координатах), так что можете создать нативные источники света в Unity3D (прожекторы, точечные источники света и т.д.) и выставить для них соответствующие значения.

Теперь вы можете сделать созданные нативные источники света дочерними для главной пустышки.

Если вы не хотите ничего знать про мировые координаты объекта, вытаскивать дочку из под “крыла” родителя (родительского объекта), а потом опять делать его дочерним к нему, то вы можете воспользоваться скриптом для редактора Unity, который позволяет копировать координаты объекта, расположенного на сцене (соответственно, присутствующему в коне иерархии “Hierarchy”), и назначать их другому объекту.

 

Создайте C# скрипт TransformCopier в папке “Editor” и замените в нем все внутренности на следующий код: