Вы, вероятно, уже ознакомились с процессом создания сцен в WME. Если нет, прочтите пошаговое создание сцен. Для 3D-персонажей этот процесс строится на тех же принципах, но также включает в себя некоторые особенности.
В отличие от 2D, трёхмерные персонажи не состоят из набора спрайтов. Они представлены
3D-моделью. Для трёхмерных моделей WME поддерживает формат Microsoft X.
Для большинства пакетов 3D-моделирования существуют конвертеры в X. Обратитесь к
этой
Вики-странице (англ.) за подробной информацией по работе с форматом.
Для анимирования моделей в WME применяется так называемая скелетная анимация. Вы задаёте набор костей (скелет), а затем создаёте связь между частями модели (кожей (skin)) и костьми. Вращение и движение костей будет создавать соответствующие изгибы в модели. Если этот подход нов для Вас, см. документацию к таким программам, как fragMOTION или Milkshape 3D для получения более детальной информации по анимированию персонажей.
Также Вам понадобится создать файл описания персонажа,
задающий его свойства в WME. Формат такого файла
описан в другой главе документации.
Итак, когда у Вас имеется в наличии 3D-модель в X-формате (.x) и файл описания персонажа
(.act3d), Ваш персонаж готов для работы в WME. Чтобы загрузить его из сценария, нужно вызвать метод
Game.LoadActor3D()
или
Scene.LoadActor3D(). Они оба подобны старому методу
LoadActor, используемого для загрузки 2D-персонажей.
Следует сделать предупреждение: старайтесь делать количество полигонов Вашей модели как можно меньшим (как правило, несколько тысяч треугольников). Создание хорошей низкополигональной модели
требует большого количества навыков, но это необходимо для рендеринга в реальном времени.
Также убедитесь, что размерность текстур является степенью двойки (2, 4, 8, 16, 32, 64, 128, 256, 512, 1024...). Это ограничение 3D-акселераторов. При использовании 2D-графики WME обходит его путём автоматического изменения размеров изображения, но в случае с 3D-моделью этот фокус не проходит.
Не рекомендуется применение текстур, размер которых превышает 1024 пикселя, т. к. некоторые старые видеокарты не могут их корректно обработать. С другой стороны, маловероятно, что такие текстуры Вам могут понадобиться.
В отличие от 2D-сцен, Вам понадобится дополнительный слой в сцене для перемещения по ней 3D-персонажей, который называется «скрытой геометрией сцены». Это простая 3D-модель, которая задаёт 3D-план Вашей сцены: области, по которым персонаж может ходить, и непроходимые объекты. Эта модель невидима пользователю, она нужна лишь для навигации 3D-персонажа по сцене.
Геометрия сцены может быть создана в любой программе 3D-моделирования, а затем сохранена в формате 3DS. 3DS - единственные формат, используемый в WME для геометрии сцены. Он весьма популярен и, как правило, все 3D-программы умеют с ним работать.
Файл геометрии содержит следующие компоненты:
Таким образом, Вам не понадобятся непроходимые области, точки нахождения пути и уровни масштабирования,
описанные в шагах 4 и 5 Пошагового создания сцены. Они заменяются
геометрией сцены. В остальном процесс создания сцены не отличается, от описанного в указанном руководстве.
Итак, как создаётся геометрия сцены? Идея состоит в том, чтобы совмещать пререндеренные фоновые картинки с 3D-персонажами в реальном времени. Это означает, что у Вас имеется детальная 3D-модель сцены, включающая в себя камеры и источники света. Всё, что Вам нужно теперь, это добавить план навигации и непроходимые объекты. Они не будут использоваться при рендеринге, но будут экспортированы в WME.
Для корректного распознания в WME при экпорте, объекты должны быть правильно проименованы.
Названия навигационных областей должны начинаться с walk_, например,
walk_floor (пол), блок-объекты - с blk_, например,
blk_desk (стол), точки нахождения пути - с wpt_, например, wpt_01.
Все источники света и камеры распознаются автоматически.
Создайте области, по которым персонаж сможет перемещаться, затем объекты, обозначающие недоступные места. Такие объекты, как правило, являются простыми кубами, охватывающими объекты сцены, через которые не может пройти персонаж. Для примера взгляните на сцены в проекте WME 3D demo. Складское помещение и ящики в сцене foreground охвачены кубами, которые делают их недоступными для прохождения сквозь них персонажа.
Точки нахождения пути задаются маленькими кубиками. WME использует только одну точку куба в качестве действующей точки нахождения пути, которая всегда находится внизу. Правила размещения точек нахождения пути такие же, как и для 2D-сцен, как это описано в шаге 5 учебника по созданию сцен. Следует размещать точки на рёбрах блок-объекта так, чтобы между двумя соседними точками была незаблокированная прямая, по которой персонаж будет перемещаться между этими точками.
Внимание: начиная с версии WME 1.6 Вы можете использовать старый добрый «2D-метод» для навигации по сцене даже для 3D-персонажей. См. главу дополнительные 3D-опции для подробной информации.
Новое в WME
1.7: С появлением шаблонных теней (stencil shadows) скрытой геометрии понадобилась
более гибкая настройка. Поэтому стало возможным объединять 3DS-файл с файлом определения геометрии, задающим дополнительные опции.
Этот файл располагается в той же директории, что и 3DS file, и имеет такое же название, но с расширением
.geometry (например, если файл геометрии называется
some_scene.3ds, то файл определения будет называться some_scene.geometry).
Этот файл может содержать одну и более секций, описывающих группы сеток (meshes), содержащихся в 3DS-файле. Каждая группа задаётся шаблоном имени и дополнительными свойствами. Шаблон имени может содержать звёздочку (*) для обозначения любой последовательности символов, знак вопроса (?) для обозначения любого символа. Это позволит Вам обозначать набор сеток как один объект. Затем для каждой группы сеток Вы можете задать являются ли они 1) проходимыми областями, 2) либо непроходимыми объектами, 3) либо точками нахождения пути, 4) либо они будут затенены. К примеру, чтобы имена соответствовали соглашению, описанному выше, файл определения геометрии должен выглядеть следующим образом:
GEOMETRY { NODE { NAME = "walk_*" WALKPLANE = TRUE RECEIVE_SHADOWS = TRUE } NODE { NAME = "blk_*" BLOCKED = TRUE } NODE { NAME = "wpt_*" WAYPOINT = TRUE } }
Обратите внимание на строку RECEIVE_SHADOWS. Она означает, что на проходимые области будут накладываться шаблонные тени. Вы можете, к примеру, добавить несколько дополнительных сеток в 3DS-файл, чтобы использовать для отбрасывания на них теней (для этого Вам понадобится более детализированная модель сцены). Давайте примем, что Вы именуете эти сетки названиями, начинающимися со слова SHADOW_. Тогда в файл определения геометрии нужно добавить ещё одну секцию:
NODE { NAME = "shadow_*" RECEIVE_SHADOWS = TRUE }
Так как эта секция не содержит определений WALKPLANE, BLOCKED или WAYPOINT, то эта группа сеток будет использоваться только для задания теней в сцене. Такое определение использует проект WME Demo 3D.
Внимание: Вам не нужно задавать стандартные группы сеток (walk_, blk_, wpt_), так как они распознаются автоматически.
Если для Вас на первый взгляд это показалось сложным, откройте 3DS-файл из проекта WME 3D demo, это даст Вам представление о том, как должна выглядеть геометрия сцены. Если у Вас установлен 3D Studio Max, Вы также можете открыть оригинальный .MAX-файл (лежит в папке original files). Это детальная модель сцены вместе с геометрией. Объекты геометрии сцены помечены как невидимые, при рендеринге они не обрабатываются. Также все объекты геометрии сохранены как один выделенный слой (под одним именем), это делает простым процесс их выделения и экпорта в 3DS-файл (команда «Файл->Экпортировать выделенную команду» (File->Export selected command)).
Используйте для геометрии сцены простые объекты (кубы, плоскости). Чем проще объект, тем быстрее он загружается в WME и тем быстрее WME просчитает путь для персонажа. Экспортируйте только эту упрощённую модель сцены, а не всю детализированную модель, она не используется в WME.
Камеры и источники света экспортируются непосредственно так, как они есть. Та же камера, что используется при рендеринге сцены в 3D-программе, будет использоваться и для отображения 3D-персонажа в WME. Таким образом, 2D- и 3D-составляющие замечательно сочетаются.
После того как Вы экспортировали геометрию в 3DS-файл, Вам нужно привязать её к сцене в WME. Для этого откройте сцену в программе SceneEdit, выберите вкладку «3D», затем выберите 3DS-файл. Если файл содержит несколько камер, Вы можете выбрать нужную. Также, Вам нужно задать здесь экранное разрешение Вашей игры. Этот параметр используется только SceneEdit для корректного отображения геометрии сцены.
В большинстве случаев Вам понадобится только установить камеру и задать разрешение игры. Тем не менее доступны несколько дополнительных опций, они описаны в этой главе.