13
Экспорт мешей в OGRE

Blender 3D · Created Date: 7/4/2009 7:30:30 PM

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Экспорт мешей в OGRE

Page 2: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Экспортер Мешей OGREBlender - это open source пакет создания 3D-контента, предназначенный для моделирования, анимирования, рендеринга и пост-обработки. Экспортер мешей для OGRE - это набор python скриптов, запускаемых напрямую из Blender. На данный момент он поддерживает следующие варианты экспорта:

•меш-объекты с вёртексными цветами, множественными материалами, UV-текстурами и смешивающимися цветами,•арматурная анимация по ключевым кадрам,•анимация формы меша.

Оглавление•Инасталляция•Основы использования

•Опции•Меши•Материалы

•Материалы для рендеринга•Материалы для игрового движка (Game Engine)•Особые материалы

•Анимация•Арматурная анимация

•Анимация формы (shape-анимация)

Инсталляция

Скрипту необходим доступ к стандартным модулям языка Python, поставляемым отдельно от Blender. Ознакомьтесь с документацией на www.blender.org чтобы узнать, как встроить Python в Blender.

Скопируйте скрипт и все поддиректории либо в директорию ".blender/scripts", или в определённую пользователем как директорию скриптов.В окне Blender "Scripts Window" выберите "Script->Update Menus"

Основы использования

Существуют следующие соответствия:

Blender Object (OB) ↔ OGRE::SceneNodeBlender Mesh (ME) ↔ OGRE::Entity

Page 3: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Экспортер преобразует меши из Blender сущностям (Entity) OGRE. Пожалуйста, обратитесь к экспортеру сцен OGRE для преобразования объектов Blender (OB) в ноды (узлы) сцен (SceneNode) OGRE.

Для экспорта мешей сделайте следующее:

•В окне "3D-view" выберите меш, который вы хотите преобразовать.•В окне "Scripts Window" запустите "Scripts -> Export -> OGRE Meshes".•Выберите опции экспорта.•Нажмите кнопку "Export".

Вы получите подробный лог процесса экспорта. Все файлы экспортируются в формат OGRE XML. Используйте OgreXMLConverter из установленной у вас версии OGRE для конвертирования сгенерированных XML-файлов в бинарные файлы .mesh и .skeleton.

Скриншот интерфейса скрипта экспорта

Page 4: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Опции

Selected:

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

Udate

Обновляет список всех объектов, выбранных в окне трёхмерного вида. Также обновляет список доступных действий, удаляет анимацию для удалённых действий и устанавливает анимацию по-умолчанию для вновь добавленных действий.

Animation settings of

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

Skeleton

Отображает скелетную анимацию, которая будет экспортирована. Доступно только если меш деформирован арматурой посредством родительской связи или через модификатор.

Pose

Отображает анимацию позы для экспорта. Доступно только если меш имеет shape keys.

Morph

Отображает морф-анимацию для экспорта. Доступно только если меш имеет shape keys.

Каждая линия в области полосы прокрутки соответствует анимации, которая будет экспортирована.

Action name

Имя анимации в Blender. Доступно только для скелетной анимации.

Start:

Начальный кадр анимации.

Page 5: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

End:

Конечный кадр анимации.

Animation export name

Имя анимации в экспортированном файле OGRE.

Delete

Удалить анимацию из экспорта.

Add

Добавить ещё одну анимацию в экспорт.

Material Settings (Настройки материалов)

Material File

Имя файла скрипта материала, который будет сгенерирован.

Coloured Ambient

Использовать рассеяный цвет как окружающий вместо белого. Это работает только для материалов, у которых TexFace не установлен.

Copy Texture

Копировать текстуры в путь экспорта, если возможно.

Rendering Materials

Экспортировать материалы, соответсвтующие результатам рендеринга (по умолчанию)

Game Engine Materials

Экспортировать материалы, показанные в игровом движке.

Custom Materials

Экспортировать материалы используя специализированные шаблоны материалов.

Fix Up Axis Y

Blender использует Z как вертикальную ось. Данная опция указывает мешу использовать ось Y как вертикальную

Page 6: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Skeleton name follow mesh Принудительно образовывать имя скелета от имени меша. Отключите для использования имени арматуры вместо меша.

OgreXMLConverter Коневертировать XML файлы в бинарные используя OgreXMLConverter. Экспортер должен иметь доступ к этой утилите. Вы можете указать его местонахождение в настройках.

Path Все файлы экспортёра сохраняются в эту директорию. Меш-файлам даётся имя меша в Blender, после которого следует суффикс ".mesh.xml". Файлам скелетов - имя меша и арматуры, после которого следует суффикс ".skeleton.xml".

Export Экспортировать все объекты, указанные в списке.

Preferences

OgreXMLConverter

Auto OgreXMLConverter вызывается без указания его местонахождения. Работает, только если он находится в PATH.

Manual Вызывается файл, указанный как Converter.

Export Options Пожалуйста, читайте документацию XMLConverter для большей дополнительной информации.

Additional Arguments Дополнительные аргументы, добавляемые к вызову конвертера.

Ok Применить изменения.

Cancel Отменить изменения.

Help Отобразить руководство в браузере по-умолчанию.

Quit Выйти из скрипта экспорта.

Page 7: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Скрипт сохраняет и загружает свои настройки из текстового буфера "OgrePackage.cfg" из текущего .blend-файла. Вы можете сохранить текущие настройки, если сохраните .blend-файл после выхода из экспортера.

Материалы

Меши

Скрипт поддерживает sticky и вершинные UV-координаты, сглаженные и несглаженные нормали (smooth и solid), цветные вёртексы. Каждый прямоугольный полигон автоматически конвертируется в два треугольных при экспорте. Экспортер использует 16-битные индексы по-умолчанию, но если количество вершин превышает предел в 16 бит, то используются 32-битные индексы.

Скрипт не поддерживает подразделение поверхности (SubSurf). Для экспорта таких объектов вам нужно конвертировать их в меши (Ctrl+C, keep original), или же Apply для модификатора SubSurf, или "Object -> Convert Object Type... -> Mesh (keep original)".

Скрипт не поддерживает опцию мешей "Double Sided", вместо этого используйте "Two Sided".

Для принудительного экспорта цветов вёртексов, выберите "VCol Light" в настройках материала меша и экспортируйте с выключенной опцией "Game Engine Materials".

В отличие от OGRE, Blender обрабатывает материалы, UV-текстуры и blend mode раздельно. Ещё в Blender есть различия между представлением материалов в игровом движке и при рендеринге.

Материалы для рендеринга

Имя экспортированного материала - такое же, как в Blender. Если выбрана опция "Two Sided", суффикс "/TWOSIDE" будет добавлен. При выбранной опции "TexFace", будет добавлен суффикс "/TEXFACE" и имя текстуры, назначенной в "UV/Image Editor". Опция "Two Sided" не оказывает влияние на результаты рендеринга имеют присутствует при экспорте только для удобства.

Page 8: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Настройки материалов Blender, учитываемые в экспортированном материале OGRE выделены зелёным цветом

Скрипт экспортирует текстуры с "Map Input", установленным в "UV" и "Map To" установленным в "Col" и поциональным "Alpha". Поддерживаемые опции выделены зелёным.

InterPol MipMap filtrationyes yes trilinearyes no linear linear noneno yes bilinearno no none

Page 9: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Материалы для игрового движка

Имя материала должно быть уникальным. Поэтому имя экспортированного материала состоит из имени материала в Blender (если оно имеется), режима смешивания и имени текстуры (если есть). Если определены цвета вертексов, то добавляется постфикс "/VertCol". Также, если установлена опция two-sided, добавляется "/TWOSIDE".

Есил материал назначен грани, то будут экспортированы только те свойства, которые имеют силу в игровом движке. Это цвета "Col" и "Spe", факторы "Amb", "Spec" и "Hard", и опции "VColPaint" и "TexFace".

Текстуры, назначенные через "UV/Image Editor" также экспортируются. Обратите внимание, что текстуры, которые могут быть экспортированы как материалы для рендеринга, дают вам больший контроль над фильтрацией режимами адресации текстуры (texture address modes)

Настройки граней Blender влияют только на представление в игровом движке. Экспортируемые свойства отмечены зелёным.

Особые материалы

Экспорт материалов по-умлочанию работает хорошо для простых базовых материалов. Однако, вследствие его ограничений, он не подходит для реальных проектов. В большинстве случаев мы разрабатываем специализированные материалы со специальными шейдерами для конкретного проекта. В таком случае мы бы хотели экспортировать файлы материалов в наши специализированные материалы и шейдеры.

Здесь приходят на помощь Custom Materials. Продвинутые материалы позволяют вам указать шаблон, на основе которого будет сгенерирован ваш идеальный скрипт материала.

Для его использования, сначала пропишите в Template Path путь к директории, в которой хранится список ваших шаблонов.

Page 10: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Каждый файл шаблона должен иметь расширение .tpl

Например, phong.tpl#import phong from "phong.material"

material %_materialName : phong{ set $diffuse %diffuse_tex set $normal %normal_tex set $spec %spec_tex}

Вышеуказанный скрипт использует особенности последней версии OGRE(Shoggoth)

Формат шаблона очень прост. Первая строка зарезервирована для импорта скриптов. Это делается для того, чтобы импорт скриптов находился в начале генерируемых файлов материала. Дублирующиеся импорты будут удалены.

Шаблоны используют замену для подстановки определённых ключей. Ключи определяются как %key или %{key}. Второй вариант предназначен на случай, если вы захотите соединить значение шаблона с фиксированным постоянным значением, например: %{diffuse_tex}.png

Чтобы сообщить экспортеру, какой шаблон использовать с тем или иным материалом, каждому материалу должен быть назначен шаблон. Это делается через свойство материала ID. Чтобы получить к нему доступ, выполните "Run -> ID Property Browser". Для большей информации об ID Property в Blender, смотрите http://wiki.blender.org/index.php/BlenderDev/ID_Property

Выше представлено использование ID Property. Самое важное - выбрать правильный контекст перед редактированием ID Property. Убедитесь, что выбрана категория "Materials". Потом выберите ваш материал (подсвечен голубым). Кликните на кнопке "New" для создания нового свойства.

Для привязки шаблона, создайте строковое свойство с именем template. Значение свойства используется как имя файла шаблона для этого материала. Например, phong будет соответствовать phong.tpl

Есть один особый случай, когда материал Blender не поддерживает специфическое свойство, необходимое нашему материалу. Здесь вступают в игру особые свойства. Как показано на скриншоте, можно добавить особые свойства материалу. Для этого убедитесь, что вы создали подгруппу (Subgroup) "properties".

Page 11: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Что делать внутри подгруппы "properties" - дело ваше. Иерархия сохраняется. Например:

properties : Subgroup - someNumber = 123 : Int - someFloat = 0.234 : Float - someString = "Hello world" : String - someGroup : Subgroup - someIntArray = {1 2 3 4} : Int - someFloatArray = {0.1 0.2 0.3} : Float

Исходя из вышеизложенного, для доступа к этим особым свойствам:

%someNumber => 123%someFloat => 0.234%someString => Hello world%someGroup.someIntArray => 1 2 3 4%someGroup.someFloatArray => 0.1 0.2 0.3

Ниже приведён список стандартных свойств, основанных на материалах Blender.

_materialName_ambient_diffuse_specular_emisive_scene_blend_depth_write_depth_func_receive_shadows_culling_lighting_fog_override[textureName]._texture[textureName]._tex_address_mode[textureName]._filtering[textureName]._colour_op[textureName]._sizeX[textureName]._sizeY[textureName]._sizeZ[textureName]._offsetX[textureName]._offsetY[textureName]._offsetZ

Стоит отметить textureName. Имя текстуры (textureName) - это имя, определённое на панели Texture на вкладке Material Buttons. Оно такое же, как и на кнопке, например, tex.123 в результате будет tex, когда tex.1a2 - tex1a2.

Page 12: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Очевидно, поскольку стадартные свойства входят в ту же библиотеку, что и особые свойства, вы можете использовать особые свойства для переопределения стандартных свойств. Если вам нужно больше стандартных свойств, которые не предоставлены, но могут быть настроены в Blender, обратитесь с этим вопросом к Lf3t-Hn4d через официальный форум Ogre.

Анимация

Скорость анимации (в кадрах в секунду) берётся из соответсвующей вкладки рендеринга сцены.

Настройка формата Blender, влияющая на экспорт в OGRE, выделена зелёным.

Арматурная анимация

Экспорт арматурной анимации доступен только если мешу назначена арматура через родительскую связь или через модификатор, и эта арамтура имеет хотя бы одно действие. Анимация арматуры экспортируется на основе диапазонов ключевых кадров и именах действий. Вы можете выбрать любой кадр как начальный или конечный кадр анимации. Для экспорта арматурной анимации меша вам нет нужды отдельно выбирать арматуру. При экспорте, скрипт создаст раскадровку поз костей для выбранного действия покадрово.

Все вершины должны быть назначены как минимум одной кости.В OGRE вы не можете назначить одной вершине более, чем 4 значимых кости.Учтите, что OGRE не наследует скалирование родительской кости по-умолчанию.

Page 13: Blender 3D · Created Date: 7/4/2009 7:30:30 PM

Скрипт поддерживает как родительскую арматуру, так и модификатор.

Арматурная анимация

Шейп-анимация может быть экспортирована как анимация позы или морф-анимация. При экспорте, скрипт создаст позиции вершин кадр-за-кадром.

Скрипт экспортирует относительные ключи формы