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

В данной части статьи описан импорт моделей в Unity из Blender с акцентом на Origin (Pivot Point, Центр 3D модели), точке отсчета 3D модели.

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

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

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

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

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

 

Еще одним немаловажным для 3D модели параметром, когда вы осуществляете импорт моделей в Unity из Blender, является Origin, поскольку точкой отсчета для модели в Unity 3D считается именно он. Origin в Unity является центральной или нулевой точкой модели, относительно которой производится поворот 3D модели. Как это выглядит на деле (и как переместить Origin) можно посмотреть в статье про создание оптимизированных 3D моделей.

Давайте посмотрим, за что же отвечает Origin и что будет если перемещать 3D модель на сцене относительного него (в режиме редактирования меша 3D модели) или переместив сам Origin. Для демонстрации того, за что отвечает Origin, я использовал 3D модель “Armored Cavalry 2” с сайта blendswap.com. Хотя, модель явно и не игровая, поскольку насчитывает почти 240 треугольников, да и при импорте в Unity3D игровой движок разобьет ее на несколько частей, но для наших целей подойдет.

импорт моделей в unity из blender, unity3d импорт моделей, blender экспорт в Unity3d, unity fbx, origin Unity3d, unity center, unity pivot point, unity pivot point change script, unity pivot position, unity change pivot point of gameobject, unity move pivot, unity move pivot to center, экспорт 3D модели в формате fbx
На рисунке показана 3D модель легкого разведывательного танка в Blender

Кстати, одним из способов значительно снизить количество полигонов для этой модели, да и для любой гусеничной военной, сельскохозяйственной, уборочной и т.д. техники является замена высокополигональных гуслей на лоуполи болванку. Да и анимировать их проще при помощи смещения текстур, о чем подробно рассказывается в статье От тайлинга и смещения до атласа текстур на примерах смены обложки для книги и текстуры одежды и кожи персонажа и в серии статей, посвященных эффектам в Unity3D, в частности, в статье Эффекты в Unity3D. Часть III. Билборды (биллборды), бегущая строка, неоновая реклама, информационные щиты, реклама, рекламные щиты, баннеры.

На рисунке показаны гусеницы для танка M4 Sherman
На рисунке показаны гусеницы для танка M4 Sherman.

А вот эта гусля — уже в Unity c анимированной картой нормалей, без текстуры – лишь задан цвет материала:

На рисунке показаны анимированные гусеницы танка за счет смещения карты нормалей

На рисунке показаны анимированные гусеницы танка за счет смещения карты нормалей.

Лицензия Creative Commons Public Domain Dedication (CC0), под которой распространяется 3D модель Armored Cavalry 2, позволяет использовать ее в коммерческих проектах, не требует указания автора модели и не требует выкладывать в общий доступ производные работы, созданные на основе данной 3D модели.

 

Немного о лицензиях

 На самом деле, подобные лицензии применяются не только к 3D модели/моделям, а для всего файла, а точнее ко всему его содержимому, если не сказано иного (иногда дается дисклеймер/отказ от прав на текстуры или составные элементы сцены/файла/связанные файлы, заимствованные автором распространяемого контента при создании своего произведения). Производными работами называются любые действия, повлекшие изменения 3D модели или связанных с ней элементов: масштабирование модели, изменение ее геометрии, перемещение источника света, изменение настроек рендера, цвета или элементов текстур или замена их на другие, запекание карты отражений материалов и их настроек и т.д., и т.п. Даже перемещение объектов на сцене является производной работой. Так что, если вы захотите использовать в своем проекте или выложить рендер 3D модели, распространяющейся под лицензией, требующей от вас предоставить бесплатно/безвозмездно в свободный доступ производные от используемой 3D модели, то, даже если вы сделали лишь рендер сцены, при этом изменив в файле хоть что-то, и сделали свой рендер публичным, например, выложили его в своем блоге, то вы обязаны выложить в публичный доступ файл, содержащий все произведенные вами в файле изменения. Одними из таких лицензий, требующих предоставление производных работ в свободный доступ, являются лицензии Creative Commons AttributionShareAlike (CC-BY-SA) и Creative Commons AttributionNonCommercialShareAlike (CC-BY-NC-SA), причем последняя еще и запрещает использовать в коммерческих целях, распространяемый под данной лицензией материал. Обе эти лицензии также требуют указания автора материала под данной лицензией. Также, вы обязаны на самом рендере или в том месте, где опубликовали его, указать произведение, на котором базируется ваш рендер, предоставить ссылку на оригинальный файл и на ваш измененный файл, чтобы любой желающий мог их скачать. То же самое относится и к использованию 3D моделей или любых других частей из файлов под подобными лицензиями в играх, при создании видео, изображений (плакатов, иконок, заставок, спрайтов и т.д.) и просто распространению файлов с измененным содержимым. Например, если вы выкладываете на форуме скрин окна 3D редактора с подписью: «Народ, посмотрите, что не так с топологией?», то вы обязаны выложить и сам файл, содержащий контент, который распространяется под упомянутой лицензией и указать источник оригинального контента. То же самое вы обязаны проделать, если выкладываете файл со своей работой, в которой используется контент под такой лицензией, например, чтобы вам помогли исправить недочеты или вы просто решили поделиться своими наработками со всем миром, ДАЖЕ БЕСПЛАТНО. НЕ ВАЖНО, используете ли вы контент в КОММЕРЧЕСКИХ ИЛИ НЕКОММЕРЧЕСКИХ ЦЕЛЯХ, вы ОБЯЗАНЫ выполнять требования текста лицензии. Если вам что-то нужно сделать с контентом, а лицензия запрещает это, вы всегда можете связаться с автором данного контента и попросить его для вас сделать исключение. Очень часто авторы идут навстречу тем, кто их вежливо просит, а не нагло тырит их произведения. 🙂 Получив письменное разрешение от автора произведения на запрошенные вами действия с контентом, вы обезопасите себя от возможных судебных исков с его стороны, сохранив свою репутацию незапятнанной.
Будьте внимательны и уважайте труд и права других людей.

 

Но вернемся к Origin. Давайте сдвинем модель влево в режиме редактирования модели так, чтобы Origin остался на месте, а сам меш переместился. Для этого необходимо выбрать 3D модель Правой Кнопкой Мыши и нажать клавишу ‘Tab‘. Теперь, чтобы выделить все составные элементы модели, нажмите клавишу ‘A’ или воспользуйтесь инструментом прямоугольного выделения, который активируется нажатием клавиши ‘B‘. Зажмите Левую Клавишу Мыши и обведите рамкой всю модель (все вершины меша модели), например в виде слева, справа или сверху. Обратите внимание, что для того чтобы выбрать все вершины/ребра/полигоны меша, а не только видимые, необходимо выставить режим сетки Wireframe в том окне 3D вида, в котором производится выделение. Чтобы это сделать, достаточно нажать клавишу ‘Z‘, поместив курсор мыши поверх целевого окна 3D вида.

На рисунке показана 3D модель смещенная относительноOrigin в Blender
На рисунке показана 3D модель смещенная относительноOrigin в Blender.

Теперь при помощи все тех же клавиш ‘G‘ и ‘Ctrl‘ (это не сочетание клавиш) переместите все выбранные элементы 3D модели несколько левее.

импорт моделей в unity из blender, unity3d импорт моделей, blender экспорт в Unity3d, unity fbx, origin Unity3d, unity center, unity pivot point, unity pivot point change script, unity pivot position, unity change pivot point of gameobject, unity move pivot, unity move pivot to center, экспорт 3D модели в формате fbx
На рисунке показана импортированная в Unity 3D модель, смещенная относительно ее Origin, слева. Справа на рисунке показана 3D модель, которая не была смещена относительно своего Origin.

На рисунке можно заметить, что, хотя координаты объекта и были сброшены в Unity3d на нули, видно смещение одной из 3D моделей легких танков, по типу британского Скорпиона. Такое может быть полезно при экспорте/импорте сцены, состоящей из нескольких объектов, когда Origin/Pivot point для всех 3D моделей в Blender’е выставляется в одну точку, например, центр сцены, тогда при импорте объектов такой сцены в Unity3D достаточно обнулить их координаты, чтобы воссоздать их взаимное расположение в Unity3D.

При вращении игрового объекта (3D модели), смещенного относительно его Origin’а, посредством кода скрипта он будет вращаться именно вокруг своего Origin, хотя на сцене вы вращаете его посредством гизмо вокруг его центра.

selfpropelled gun selfpropelledgun На рисунке показаны вращающиеся САУ, причем у левой Origin смещен относительно центра меша. импорт моделей в unity из blender, unity3d импорт моделей, blender экспорт в Unity3d, unity fbx, origin Unity3d, unity center, unity pivot point, unity pivot point change script, unity pivot position, unity change pivot point of gameobject, unity move pivot, unity move pivot to center, экспорт 3D модели в формате fbx

На рисунке показаны вращающиеся легкие танки, причем у левого Origin смещен относительно центра меша.

Код для танка справа: в Update: transform.Rotate(-Vector3.up * Time.deltaTime*100f);

Код для танка слева: в Update: transform.Rotate(Vector3.up * Time.deltaTime*100f);

Как было сказано выше, справиться с этой проблемой можно, если сделать такой игровой объект дочерним к, например, пустышке, и скрипт вращения/перемещения объекта “повесить” именно на эту самую пустышку.

Более верным способом является изменение Origin’а такого объекта. Это можно сделать в Unity3d Или Blender.

Чтобы изменить Origin объекта (центр объекта, центр масс, pivot point) в Unity3D, можно воспользоваться следующим скриптом:

Создайте C# скрипт в папке Editor и скопируйте в него приведенный выше код.

Чтобы переместить Origin/Pivot point, выберите вкладку “Game Object” в главном меню и в самом низу увидите подпункт “Set Pivot”, чтобы открыть меню изменения Origin’а объекта.

импорт моделей в unity из blender, unity3d импорт моделей, blender экспорт в Unity3d, unity fbx, origin Unity3d, unity center, unity pivot point, unity pivot point change script, unity pivot position, unity change pivot point of gameobject, unity move pivot, unity move pivot to center, экспорт 3D модели в формате fbx
На рисунке показано меню изменения центра 3D модели

С первых секунд использования скрипта в редакторе Unity3D понимаешь, что на самом деле перемещается не Origin, а меш. Но, все в этом мире относительно, и Origin с мешем 3D моделей – тоже.

Три строчки из скрипта, представленные ниже, определяют диапазон, в которых вы можете перемещать меш относительно Origin’а:

p.x = EditorGUILayout.Slider(«X», p.x, -10.0f, 10.0f);

p.y = EditorGUILayout.Slider(«Y», p.y, -10.0f, 10.0f);

p.z = EditorGUILayout.Slider(«Z», p.z, -10.0f, 10.0f);

Для более точного позиционирования игрового объекта относительно его Origin замените 10-ки на единички. Если же Origin вашего объекта уехал совсем далеко, то подойдут сотни или даже тысячи вместо третьих и четвертых параметров метода EditorGUILayout.Slider.

Чтобы удачно исполнить импорт моделей в Unity из Blender, Origin можно изменить и в 3D редакторе. Один из способов того, как это сделать в Blender’е (переместить меш в режиме редактирования меша), показано выше.

Существует еще один способ установки 3D модели и ее Origin в центр сцены. Для начала, установите 3D курсор в центр сцены (например, через сочетание клавиш Shift +C или Shift+S и в открывшемся меню шага Snap выберите пункт «Cursor to Center«). Теперь выберите свою 3D модель Правой Кнопкой Мыши и поместите Origin выбранной 3D модели в позицию 3D курсора, нажав сочетание клавиш Ctrl+Shift+Alt+C и выбрав вкладку “Origin to 3D Cursor” в открывшемся меню “Set Origin”.

импорт моделей в unity из blender, unity3d импорт моделей, blender экспорт в Unity3d, unity fbx, origin Unity3d, unity center, unity pivot point, unity pivot point change script, unity pivot position, unity change pivot point of gameobject, unity move pivot, unity move pivot to center, экспорт 3D модели в формате fbx
На рисунке показано меню “Set Origin” с выбранной вкладкой “Origin to 3D Cursor” для установки Origin выбранной/активной 3D модели в позицию 3D курсора.

Теперь нажмите еще раз сочетание клавиш Ctrl+Shift+Alt+C, чтобы открыть меню “Set Origin”, но на этот раз выберите пункт “Geometry to Origin”, чтобы переместить 3D модель в позицию Origin.

импорт моделей в unity из blender, unity3d импорт моделей, blender экспорт в Unity3d, unity fbx, origin Unity3d, unity center, unity pivot point, unity pivot point change script, unity pivot position, unity change pivot point of gameobject, unity move pivot, unity move pivot to center, экспорт 3D модели в формате fbx
На рисунке показано меню установки 3D модели в позицию Origin.

Это же действие вы можете выполнить, если откроете меню “Object” (расположенное под любым из окон 3D вида) и выберете вкладку «Transform«, и в открывшемся меню в котором, в свою очередь, выберите все тот же пункт “Geometry to Origin”.

импорт моделей в unity из blender, unity3d импорт моделей, blender экспорт в Unity3d, unity fbx, origin Unity3d, unity center, unity pivot point, unity pivot point change script, unity pivot position, unity change pivot point of gameobject, unity move pivot, unity move pivot to center, экспорт 3D модели в формате fbx
На рисунке показан способ открытия меню трансформации Transform с подменю “Set Origin”, позволяющим управлять расположением 3D модели, ее Origin’ом и центром масс. Да, зачастую у 3D моделей центр масс отличается от ее геометрического центра.

Как видно на рисунке, 3D модель провалилась под землю, точнее сместилась вниз относительно Origin, поскольку нижняя точка нашего танка явно не является ее геометрическим центром. Чтобы вытащить модель из-под земли, перейдите в режим редактирования меша, выберите все вершины 3D модели (клавиша ‘A’) и переместите выбранные элементы меша вверх, чтобы установить низ легкого разведывательного танка на одну линию с Origin’ом. После этого вы можете экспортировать свою модель в Unity 3D.

Итак, в данном уроке было рассказано, как выполнить импорт моделей в Unity из Blender, учитывая расположение Origin 3D модели, в следующей части статьи я продолжу рассказывать про то, как импортировать из Blender в Unity 3d модели.

Автор: Максим Голдобин aka «MANMANA»
goldmaxval@gmail.com

Добавить комментарий