Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
Экспорт мешей в OGRE
Экспортер Мешей 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
Экспортер преобразует меши из Blender сущностям (Entity) OGRE. Пожалуйста, обратитесь к экспортеру сцен OGRE для преобразования объектов Blender (OB) в ноды (узлы) сцен (SceneNode) OGRE.
Для экспорта мешей сделайте следующее:
•В окне "3D-view" выберите меш, который вы хотите преобразовать.•В окне "Scripts Window" запустите "Scripts -> Export -> OGRE Meshes".•Выберите опции экспорта.•Нажмите кнопку "Export".
Вы получите подробный лог процесса экспорта. Все файлы экспортируются в формат OGRE XML. Используйте OgreXMLConverter из установленной у вас версии OGRE для конвертирования сгенерированных XML-файлов в бинарные файлы .mesh и .skeleton.
Скриншот интерфейса скрипта экспорта
Опции
Selected:
Всплывающее меню, содержащее все выбранные объекты для загрузки. Выберите меш-объект, чтобы отобразить его настройки анимации в диалоге ниже.
Udate
Обновляет список всех объектов, выбранных в окне трёхмерного вида. Также обновляет список доступных действий, удаляет анимацию для удалённых действий и устанавливает анимацию по-умолчанию для вновь добавленных действий.
Animation settings of
Показывает анимацию, которая будет экспортирована из данного меша. Вы можете выбирать между скелетной анимацией, анимацией позы и морф-анимацией, если доступно.
Skeleton
Отображает скелетную анимацию, которая будет экспортирована. Доступно только если меш деформирован арматурой посредством родительской связи или через модификатор.
Pose
Отображает анимацию позы для экспорта. Доступно только если меш имеет shape keys.
Morph
Отображает морф-анимацию для экспорта. Доступно только если меш имеет shape keys.
Каждая линия в области полосы прокрутки соответствует анимации, которая будет экспортирована.
Action name
Имя анимации в Blender. Доступно только для скелетной анимации.
Start:
Начальный кадр анимации.
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 как вертикальную
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 Выйти из скрипта экспорта.
Скрипт сохраняет и загружает свои настройки из текстового буфера "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" не оказывает влияние на результаты рендеринга имеют присутствует при экспорте только для удобства.
Настройки материалов Blender, учитываемые в экспортированном материале OGRE выделены зелёным цветом
Скрипт экспортирует текстуры с "Map Input", установленным в "UV" и "Map To" установленным в "Col" и поциональным "Alpha". Поддерживаемые опции выделены зелёным.
InterPol MipMap filtrationyes yes trilinearyes no linear linear noneno yes bilinearno no none
Материалы для игрового движка
Имя материала должно быть уникальным. Поэтому имя экспортированного материала состоит из имени материала в Blender (если оно имеется), режима смешивания и имени текстуры (если есть). Если определены цвета вертексов, то добавляется постфикс "/VertCol". Также, если установлена опция two-sided, добавляется "/TWOSIDE".
Есил материал назначен грани, то будут экспортированы только те свойства, которые имеют силу в игровом движке. Это цвета "Col" и "Spe", факторы "Amb", "Spec" и "Hard", и опции "VColPaint" и "TexFace".
Текстуры, назначенные через "UV/Image Editor" также экспортируются. Обратите внимание, что текстуры, которые могут быть экспортированы как материалы для рендеринга, дают вам больший контроль над фильтрацией режимами адресации текстуры (texture address modes)
Настройки граней Blender влияют только на представление в игровом движке. Экспортируемые свойства отмечены зелёным.
Особые материалы
Экспорт материалов по-умлочанию работает хорошо для простых базовых материалов. Однако, вследствие его ограничений, он не подходит для реальных проектов. В большинстве случаев мы разрабатываем специализированные материалы со специальными шейдерами для конкретного проекта. В таком случае мы бы хотели экспортировать файлы материалов в наши специализированные материалы и шейдеры.
Здесь приходят на помощь Custom Materials. Продвинутые материалы позволяют вам указать шаблон, на основе которого будет сгенерирован ваш идеальный скрипт материала.
Для его использования, сначала пропишите в Template Path путь к директории, в которой хранится список ваших шаблонов.
Каждый файл шаблона должен иметь расширение .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".
Что делать внутри подгруппы "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.
Очевидно, поскольку стадартные свойства входят в ту же библиотеку, что и особые свойства, вы можете использовать особые свойства для переопределения стандартных свойств. Если вам нужно больше стандартных свойств, которые не предоставлены, но могут быть настроены в Blender, обратитесь с этим вопросом к Lf3t-Hn4d через официальный форум Ogre.
Анимация
Скорость анимации (в кадрах в секунду) берётся из соответсвующей вкладки рендеринга сцены.
Настройка формата Blender, влияющая на экспорт в OGRE, выделена зелёным.
Арматурная анимация
Экспорт арматурной анимации доступен только если мешу назначена арматура через родительскую связь или через модификатор, и эта арамтура имеет хотя бы одно действие. Анимация арматуры экспортируется на основе диапазонов ключевых кадров и именах действий. Вы можете выбрать любой кадр как начальный или конечный кадр анимации. Для экспорта арматурной анимации меша вам нет нужды отдельно выбирать арматуру. При экспорте, скрипт создаст раскадровку поз костей для выбранного действия покадрово.
Все вершины должны быть назначены как минимум одной кости.В OGRE вы не можете назначить одной вершине более, чем 4 значимых кости.Учтите, что OGRE не наследует скалирование родительской кости по-умолчанию.
Скрипт поддерживает как родительскую арматуру, так и модификатор.
Арматурная анимация
Шейп-анимация может быть экспортирована как анимация позы или морф-анимация. При экспорте, скрипт создаст позиции вершин кадр-за-кадром.
Скрипт экспортирует относительные ключи формы