воскресенье, 1 апреля 2012 г.

Экспорт 3d моделей из Blender в UDK




Здравствуйте! Предлагаю вашему вниманию урок по экспорту статичных моделей (static meshes) из 3д пакета Blender в популярную среду разработки игр и презентаций -  Unreal Development Kit (UDK).
 На момент написания урока, актуальная версия Blender, в которой работает скрипт экспорта 3д моделей в формат .ase — 2.59. Актуальная версия UDK - 1.0.9656.0,  вышедшая в марте 2012 года.
Для начала нам нужно скачать официальную сборку Blender 2.59,  которая находится в репозитории официального сайта программы . Там найдете нужную версию блендера, с учетом разрядности вашей операционной  системы. После чего скачиваем последнюю версию скрипта, для экспорта моделей в .ase формат, который находится на сайте http://campagnini.net. Актуальная версия скрипта на момент написания статьи — 1.41. После скачивания скрипта, поместите его в папку блендера “addons”. Путь к папке такой: blender-2.59/2.59/scripts/addons. Сразу предупрежу — не пытайтесь ставить скрипт на другие версии блендера, поскольку распознан он не будет! Поберегите свои нервы и время, и делайте все, как написано в данной статье. Есть еще один важный момент: в сборках последних версий блендера активно используется новый тип просчета геометрии, называемый BMesh, в связи с чем возникла проблема обратной совместимости. Поэтому, рекомендуется делать модели для UDK прямо в блендере версии 2.59! Тем более, что функциональных различий в версиях блендера, от 2.59 до 2.62 (последняя актуальная версия блендера на данный момент) не так уж и много, точнее, они не столь значительны для создания игровых моделей.
Поскольку урок описывает тему экспорта геометрии из блендера и её импорта в юдк, я не стану затрагивать моменты создания самой 3д модели и текстур для нее. Предположительно, у вас уже должна быть модель для экспорта, я лишь опишу те моменты, которые нужно учесть, перед экспортом. Во-первых, UV-развертка, её нужно сделать обязательно. Во-вторых,  нужно назначить материал для вашей модели. В-третьих, геометрия модели не должна состоять из различных объектов, перед экспортом все раздельные части нужно объединить в один объект (join meshes). На четвертом моменте я заострю внимание, поскольку он касается создания коллайдера для вашей 3д модели. Это не обязательный, но все же, важный момент, думаю, вы и сами это понимаете. Итак, у нас есть игровая модель, у которой все при себе: карты цвета, блеска и нормалей, оптимизированная сетка, но для полного счастья нам не хватает коллайдера (ограничителя движений персонажа, проще говоря — твердое тело). Сделать его очень просто, достаточно создать клон объекта и назвать его «UCX_нужное дописать» в поле имени объекта.


Именно приставка “UCX_” в начале названия     объекта и отвечает за то, что игровой движок распознает объект как коллайдер. Однако, клонировать сложный по структуре объект в качестве коллайдера нерационально — это удар по оптимизации и быстродействию. Поэтому, мы будем создавать коллайдер из примитивов. На примере своей модели, я заполнял простыми боксами те места, с которыми будет взаимодействовать мой персонаж. Если персонаж в силу геймплея не сможет достать до места в объекте, где возможно требуется столкновение, то коллайдер туда создавать не нужно.



 








Когда общая форма объекта-коллайдера будет выстроена, соедините все части в один объект. Теперь осталось экспортировать нашу прелесть в .ase формат. Открываем пользовательские настройки (Ctrl+Alt+U), переходим в раздел Add-Ons и ищем в списке аддон, который называется ASCII Scene Exporter. Активируем его, поставив галочку в пункте Enable an addon.  Перед экспортом убедитесь, что масштаб и поворот объектов применены (Ctrl+A > Rotate & Scale), а то в игровом движке моделька может отобразиться совсем не так, как вы того ожидали. Выделяем наши объекты (напомню, что основной объект не может состоять из разных частей-объектов, иначе экспорта не будет!), затем File > Export > Ascii Scene Sxport. В появившемся окошке мы можем указать путь, куда будет произведен экспорт, а также произвести несколько настроек экспортера, таких как масштаб, автотриангуляция (советую отключать, поскольку ваша модель в блендере будет триангулирована, а это не очень-то нам и нужно), и перепросчет нормалей. На этом наши мытарства в блендере закончены, можно переходить в UDK.

Создаем новый проект, пусть это будет шаблон Midday Lighting.


Теперь нам нужно создать комплект (Package), в котором будет наша моделька из блендера с её текстурами и прочими плюшками. Открываем контент браузер, сочетанием клавиш Ctrl+Shift+F, нажимаем правой кноакой мышки по папке UDKGame, в появившемся списке выбираем Import и импортируем нашу модельку. В появившемся окне даем нашему новоиспеченному комплекту вменяемое название, после чего жмем Ok, после чего появится еще одно окно, в котором также жмем Оk. Комплект создан, давайте сохраним его, от греха подальше. Сейчас наш комплект находится в папке NewPackages. Кликаем по нему правой кнопкой мышки, в появившемся списке выбираем Save, сохраняем комплект (по умолчанию комплект предлагают сохранить в папке Content, советую путь не изменять, во избежание ошибок загрузки комплекта движком).

Теперь наш комплект переместился в папку Content, в контент браузере, это хороший знак. Выбираем наш комплект, в правом окошке обозревателя контента мы можем видеть наш объект, пока он без текстур и материалов. Можете кликнуть по нему два раза левой кнопкой мышки и повертеть во вьювере, если хочется. Далее, создаем материал. В окне обозревателя контента кликните правой кнопкой мышки, после чего появится большой список предлагаемого инструментария, нам пока нужен New Material.







































Дайте новому материалу понятное и желательно не длинное имя (нам ведь вручную его прописывать придется для объекта). Откроется редактор материалов, однако пользы от него в данный момент мало, нужно еще загрузить текстуры, однако сам редактор материалов не закрывайте, просто отодвиньте его влево, чтобы он не загораживал нам окно обозревателя контента. Снова жмем правую кнопку мышки в окне обозревателя контента, на этот раз выбираем из списка строчку Import, она находится в самом верху. Выбираем нужную нам текстуру и ничего нигде не меняя жмем Ok, после чего текстура добавится в окно обозревателя контента, то есть в наш комплект. Проделываем операцию по импорту текстур столько раз, сколько требуется. Когда все необходимые текстуры будут импортированы в наш комплект, можете смело начинать перетаскивать текстуры в редактор материалов (можно конечно не перетаскивать, а создать в редакторе материалов ноды для изображений, потом к ним   прописать названия наших текстур, но это долго и нудно). Теперь, когда текстуры находятся в редакторе материалов, нам нужно их правильно подсоединить к основному принимающему ноду, для этого справа-налево нужно перетаскивать соединяющие линии (коннекторы) от нодов текстур, к ячейкам основного нода.















                                                       
  В левом окошке окна редактора материалов, мы можем покрутить шарик с нашим материалом, чтобы воочию видеть его свойства и настраивать по своему хотению.
Дам парочку советов по работе с нодами материалов: Чтобы переместить нод,
зажмите Ctrl и перетаскивайте его с помощью зажатой левой кнопки мышки. Чтобы
отсоединить нод, зажмите Alt и оттяните левой кнопкой мышки коннектор в том месте, куда он соединяется (а не оттуда, откуда выходит). Наигравшись вдоволь, нажимаем галочку Apply changes to original material. Материал сохранится, но окно редактора материалов не закроется, можете его закрыть или свернуть. Материал успешно создан! Теперь нам нужно его применить к нашей модельке, тут есть два пути: 1. Перетаскиваем нашу модельку в сцену, а затем перетаскиваем материал на нее — быстро и просто, но, не совсем правильно! Дело в том, что мультиматериалы, если таковые имеются в нашей модельке, мы таким образом не применим, он будет заменяться на новый, поэтому используем второй вариант. 2. Открываем просмотрщик моделей, клацнув по нашей модельке левой кнопкой мышки 2 раза, затем открываем вкладку LODInfo > [0] > Elements > [0] и в поле названия материала (там где none) вписываем название нашего материала. Если название материала набрано корректно, то наша моделька сразу преобразится, на ней будет видна текстура.

Закрываем вьюпорт. Дело осталось за малым - поместить нашу выстраданную модель в сцену. Собственно, тут все просто как никогда! Перетащите модельку из окна обозревателя контента в сцену, отмасштабируйте модель, настройте позицию, запеките освещение – Ctrl+Shift+; (если будут сообщения об ошибках, пропускайте, они не столь критичны) и можете смело запустить тест игровой сцены (Ctrl+G).


На этом все, дорогие друзья! До новых встреч!
С уважением, Yani-X.

















3 комментария:

  1. Ооо блог работает... А статья класс, сразу на UDK потянуло что-то

    ОтветитьУдалить
  2. Спасибо! Да, решил задействовать этот блог и использовать как бэкап основного блога: yani-x.info :)

    ОтветитьУдалить