Этот урок не относится непосредственно к программированию, но если вы и правда взялись использовать DDD в своём проекте, то, чтобы использовать свои собственные модели, разобраться с этим понадобится.
В этом месте может возникнуть
вопрос «А почему именно Блендер?
А как же 3ds Max,
Maya,
Cinema 4D
и т. д.?». Ответ здесь довольно прост:
чем умею, тем и пользуюсь.
Да и стóят они все, мягко говоря,
дороговато. Кроме того, не скажу, что я
никогда не скачивал пиратских версий
этих пакетов, но с ними обычно дальше
«потыкать непонятные кнопочки 10 минут
и навсегда
надолго закрыть» дело никогда не
доходило. Исключением является Maya,
которую я честно пытался изучать в
течении 2-3 месяцев. Оказалось, что
возможности сплайнового моделирования
там не так
уж велики (а изначально я возлагал на
него некоторые надежды), да и падала она
с этими сплайновыми моделями довольно
часто. А полигональное моделирование
в Maya по моему субъективному мнению
вчистую проигрывает тем возможностям,
что есть в Блендере. Так что никому не
запрещается создать экспортёр для
своего любимого 3D-пакета, но у меня такой
есть только для Блендера.
Этот урок по экспортированию не является уроком работы в Блендере, таковых в Интернете сейчас достаточно (в том числе и на моём сайте). Если вы раньше Блендером никогда не пользовались, то лучше сначала почитать/посмотреть что-нибудь для понимания хотя бы на самом базовом уровне.
Блендер является программным обеспечением с открытым исходным кодом, с лицензией GNU GPL. Вы можете бесплатно скачать его с официального сайта www.blender.org. Все примеры здесь показаны для версии 2.81, которая является последней на момент написания урока. Итак, скачайте и установите Блендер. Урок будет вестись для русскоязычного варианта интерфейса.
Сначала нужно установить в Блендер скрипт (или, как это теперь называется, аддон) экспорта в формат DDD. В составе архива с библиотекой DDD есть каталог blender_export, в котором представлены 2 варианта (на момент написания урока) аддонов экспорта: для Блендера 2.7x и для Блендера 2.8x (к сожалению, с переходом на версии 2.8x поломали совместимость). Выберите вариант для вашей версии Блендера и скопируйте оттуда весь каталог export_ddd в каталог расположения аддонов Блендера. Если Блендер у вас расположен в каталоге d:\blender\blender-2.81a-windows64\ (как у меня сейчас), то каталог export_ddd нужно скопировать внутрь каталога d:\blender\blender-2.81a-windows64\2.81\scripts\addons\. Теперь запускайте Блендер.
Нам надо включить наш аддон экспорта. Для этого выберите в общем меню Правка – Настройки, в появившемся окне выберите Аддоны (для Блендера 2.7x надо выбрать Файл – Параметры, затем вкладка Дополнения). Вверху есть поле для поиска, наберите в нём DDD, и нужный аддон будет выбран. Осталось поставить у него галочку Включить аддон. Если хотите, чтобы этот аддон работал при каждом запуске Блендера, то в версии 2.8x это, скорее всего, уже будет так, а для версии 2.7x надо нажать кнопку Сохранить настройки. Закрывайте окно настроек.
Создадим простой меш — кубик.
Вполне возможно, что после запуска Блендера у вас в сцене уже будет кубик по-умолчанию. Если это так, то пропустите этот пункт. Если же у вас пустая сцена, то нажмите Shift-A, в появившемся меню выберите Меш — Куб. В окне 3D-вида, отображающем текущую сцену должен появиться куб. Его центр будет совпадать с положением 3D-курсора.
У экспортируемого объекта обязательно должна быть создана UV-карта, даже если вы не собираетесь использовать текстуры. Для её создания войдите в Режим редактирования (нажмите Tab), затем убедитесь, что у вас выделены все вершины/грани (возможно, понадобится один или несколько раз нажать клавишу A). В той цветовой теме Блендера, которая настроена у меня, выделенные грани выглядят оранжевыми, невыделенные – серыми. Нажмите клавишу U, и в выпадающем меню выберите Умное UV-проецирование. На дополнительный вопрос ответьте Да.
Если сейчас перейти в раскладку UV Editing (одна из вкладок вверху, рядом с общим меню), то можно посмотреть на полученную UV-карту:
Именно для такой карты у меня заготовлена отдельная простенькая текстура кубик.png. Выходите из Режима редактирования (Tab).
Теперь наш объект готов к экспорту в DDD. Убедитесь, что у вас выбран кубик, затем нажмите в общем меню Файл – Экспортировать – DDD-mesh (.me). В появившемся окне нужно выбрать каталог, куда вы будете экспортировать свой кубик, и ввести имя файла. Если вы уже успели сохранить blend-файл с кубиком под каким-то именем, то именно оно и появится в поле имени файл по-умолчанию, в противном случае там будет что-то вроде Untitled.me. Введите имя кубик.me:
Настройки экспорта сейчас трогать не будем, там всё должно быть нормально (но убедитесь, что они совпадают с теми, что на иллюстрации). Тем не менее, требуется их разъяснить:
Поля Вперёд и Вверх определяют преобразование координатных осей при экспорте. В Блендере принята система, в которой ось Z направлена вверх, а ось Y – вперёд (на виде спереди). В графических движках, основанных на OpenGL (в том числе и в DDD) ось Y направлена вверх, а ось Z – вглубь экрана. Вот эти два поля и определяют требуемые преобразования между этими различными системами координат, и лучше их не трогать, если точно не знаешь, что делаешь.
Скелетная анимация добавляет экспорт скелета с анимациями совместно с мешем, опция пока отключена, но далее в этом уроке мы её задействуем.
Применить модификаторы говорит экспортёру, что экспортировать надо модель, у которой все её модификаторы уже применены (здесь есть оговорка, связанная со скелетной анимацией, см. ниже), в большинстве случаев это именно то, что нужно. Если убрать эту галочку, то будет проэкспортирован объект в таком виде, как будто у него нет никаких модификаторов. У нашего кубика сейчас ничего такого нет, но, обычно, на реальные сложные модели навешивается множество разных модификаторов, и хорошо, если их количество не превышает десяток.
Остальные опции, хоть и присутствуют в интерфейсе, но пока не задействованы и никак на экспорт не влияют.
Полученный файл кубик.me нужно поместить в каталог с ресурсами своей программы. Туда же добавьте простой файл описания объекта кубик.ob:
{ "имя": "кубик", "меш": { "имя": "кубик" }, "материал": { "диффузная_текстура": "кубик" } }
Саму программу я здесь приводить не буду (возьмите её в материалах к 20-му уроку), в ней просто выводится на экран один объект кубик, и предоставляется возможность «полетать» по сцене.
Вот что у вас должно получиться в результате:
Осталось
попробовать проэкспортировать объект
со скелетной анимацией. Мы
не будем сейчас создавать такой объект
с нуля (это бесполезно делать даже, как
мне кажется, в рамках десятка небольших
уроков). Возьмите готовый blend-файл
с моделью девушки Кленовый
лист.blend
из
каталога файлы/заготовки
в
материалах к
урокам по DDD.
Именно
эта модель использовалась в уроках
16-18. Наверное, опытный моделлер-аниматор,
сделает гораздо лучше анимированную
модель человека за пару дней, но мне
даже для такого откровенно халтурного
слабого результата понадобилось
несколько месяцев.
Файл сохранён в раскладке Animation, именно здесь в Блендере принято работать с анимацией. Слева вверху отображено окно Экспозиционный лист, но оно переведено в режим Редактор действий (он удобнее для редактирования отдельных анимаций, которые будут экспортироваться в DDD). В заголовке этого окна есть поле-выпадающий список Выбор связываемых действий, нажав на него, вы можете посмотреть список всех созданных анимаций в этом файле. Чтобы попробовать различные доступные анимации, сначала в окне 3D-вида выберите вместо меша девушки объект скелета Armature, затем в этом выпадающем списке нужную анимацию. Если у вас Блендер 2.8x с настройками по-умолчанию, то нажмите Пробел (с моими настройками нужно нажимать Shift-Пробел, в Блендере 2.7x нужно нажать Alt-A), и выбранная анимация должна воспроизвестись. Остановить анимацию – клавиша Esc.
Обычно при создании анимаций так и происходит, но всё-таки я обязан тут добавить указание, что все анимации, которые должны быть проэкспортированы, должны иметь свою ленту в Редакторе нелинейной анимации (Редактор NLA в терминах Блендера 2.7x).
Выполним теперь сам экспорт анимированной модели. Снова выберите объект меша девушки Кленовый лист (если будет выбран скелет, то экспорт завершится с ошибкой), и, также, как в п. 4., выберите Файл – Экспортировать – DDD-mesh (.me). В данном случае, кроме выбора каталога и ввода имени, отметьте галочку Скелетная анимация:
Если у экспортируемого меша среди стека модификаторов отсутствует модификатор типа Armature, то независимо от установки этой опции меш будет выгружен без скелета как простой статический меш. В нашем же случае должно получиться два файла: файл с анимированным мешем Кленовый лист.me и файл со скелетом Кленовый лист.sk. Это должны быть те же самые файлы, которые использовались в уроках 16-18. Чтобы убедиться в этом, перезапишите их в каталоге с ресурсами к урокам, и выполните программы, создаваемые в тех уроках.
Дополнительное замечание по поводу опции Применить модификаторы: в данном случае применяются все модификаторы, кроме самого модификатора типа Armature. Если (но лучше так не делать) в стеке модификаторов больше одного модификатора такого типа, то файл скелета строится по первому из них, а остальные считаются «просто модификаторами», и применяются наряду со всеми.