На самом деле, вставить в игру, работающую на Serious Engine 3/2 модель или даже целый уровень из приложения, использующего DirectX, довольно просто, тяжелее всего, начать, подбирать нужное Программное Обеспечение. И обойти подводные камни, которые могу напрочь отбить желание довести работу до конца.
Вам понадобятся следующие программы:
- 3D Ripper DX
- Lightwave (Layout) и SeriousPlugin4LW плагин для него.
- 3D Max с поддержкой плагина для импорта *3dr моделей.
Подготовительные работы.
Итак, нужное ПО мы собрали, теперь нужно определится с игрой, из которой
мы будем экспортировать 3D модели. Повторяюсь, это может быть абсолютно
любая игра, у которой в настройках API можно выбрать DirectX 9 и выше.Для написания этой статьи я взял игру Serious Sam 2, и переносить в Serious Sam 3 я буду уровень под названием 5_7_BossArena. Serious Sam 2 я выбрал не случайно, т.к. к нему идёт редактор, в котором можно редактировать дальность прорисовки объектов, в большинстве игр, работают системы оптимизации, которые не дадут вам захватить уровень целиком т.к ZBuffer не даст обрисовать объекты за спиной камеры и скрытые за другими препятствиями, поэтому придётся импровизировать, но сейчас речь не об этом.
Для начала увеличим дальность прорисовки объектов, в Serious Editor 2 выделяем все объекты, клавиша "+” и в Cull distance выставляем 10000.
Дальше можно удалить с уровня не нужную геометрию: аптечки, деревья, патроны и т.д. Хотя это можно легко сделать и в 3D Max и даже в Serious Editor 3.
Когда всё готово, нужно выбрать правильное положение, чтобы сделать 3D скриншот, причём такое, чтобы весь уровень целиком попадал в кадр.
Итак, я удалил с уровня деревья и предметы, а также сделал новый спаун, такой, что в угол обзора теперь попадает весь уровень.
Теперь я сохраняю свой уровень, подготовительные работы закончены.
Как пользоваться 3D Ripper DX
3D Ripper DX — уникальная программа. Она позволяет извлечь из трехмерных игр модели персонажей, техники, оружия и даже целые локации.
По понятным причинам использовать все эти ресурсы в коммерческих
проектах нельзя, а вот для создания бесплатных дополнений — вполне!
Сегодня мы детально разберем принципы работы 3D Ripper и научимся извлекать из игр трехмерные объекты.- Запускаем 3d Ripper DX, назначаем папки, куда будут сохраняться текстуры, модели, шейдеры, жмём кнопку "Start Global System Monitoring”. Теперь программа будет отслеживать все приложения использующие DirectX. Если у вас Windows 7, то возможно потребуется отключить UAC.
- Теперь запускаем Serious Sam 2 или любую другую игру, из которой будем извлекать трехмерные объекты. Сначала нам необходимо удостоверится, что в настройках API, стоит DirectX, в настройках Serious Sam 2, невозможно поменять API, хотя игра использует DirectX по умолчанию.
- Теперь запускаем игру, если всё "ok”, то в левом верхнем углу появится окошко "Ready to Capture”. Жмём клавишу "F12”, по умолчанию, ждём пару секунд, и воуля, готово!!! На этом "выдирание” геометрии из игры закачивается, все ресурсы вы сможете найти в папках которые вы указывали(п.1).
Экспорт 3D моделей в Serious Editor 3
1) Теперь нам понадобится программа Lightwave (Скачать можно ТУТ) и специальный плагин для этой программы "SeriousPlugin4LW”, который позволит нам конвертировать модели из LightWave в формат ".amf” понятный Serious Editor 3.2) Установка "SeriousPlugin4LW”.
1.Запустите Layout (красная иконка), в процессе конвертирования нам понадобится только эта программа.
2. Выберите вкладку Utilities и слева нажмите кнопку Add Plugins, в появившемся окне выберите скачанный файл "SeriousPlugin4LW.p”
3. Если вылезет окошко, что мол 14 плагинов добавлено успешно, то всё "ок”, установка плагина завершена.
3) Откройте "выдранную сцену” в формате ".3dr”, в 3d Max 9, удалите со сцены все лишние объекты, аптечки, врагов, оружие.
Очень часто случается так, что модель выдирается под неправильным углом, в результате чего она получается, сплющенной или наоборот вытянутой. Это можно легко исправить в 3D Max:
1. Выделяем все объекты.
2. Переходим в вид сверху
3. Далее выбираем модификатор FFD 2x2x2
4. В настройках модификатора выбираем Control Points.
5. Затем берём инструмент "Select and Movie” выделяем вершины и начинаем растягивать, придавая уровню правильные пропорции.
6. После этого сохраните обработанную модель в формате ".obj.” При экспорте в *obj, ставим настройки как на скриншоте:
4) Вновь запустите Layout (красная иконка), и переместите вашу модель, в формате ".obj.” на сцену, путём простого перетаскивания. Если всё "ок”, модель должна появится на сцене.
5) Теперь зайдите на вкладку Utilities и слева нажмите Additional, в появившемся списке выберите SP4LWLayoutExportAllMeshes, после этого модель сохранится в той же директории, что и исходная, только в ".amf” формате.
6) Всё, процесс конвертации окончен!
Обработка, экспортированной модели в Serious Editor 3
1) Импорт модели в Serious Editor.1. Запустите Serious Editor 3, File->New->Document World. Наведите мышь в произвольную область сцены и нажмите клавишу insert, появится зелёный куб – это статическая модель.
2. Не снимая выделения со статической модели, перейдите в Mesh Editor.
3. В Mesh Editor, заходим на вкладку Common->Import Mesh, в открывшемся окне, выбираем нашу модель в формате *amf.
2) Текстурирование. Текстурирование моделей в Serious Editor 3, превращается в сплошное удовольствие, так как UV-карты(координаты текстур) и Surface-карты(карты поверхностей) импортируются вместе с моделью.
1. Перейдите на вкладку Layer->Polygon maps.
2. Выбираем первую Polygon map и жмём: New->Shader Preset:
Tangent UVMap: название вашей модели с суффиксом _uv.
Material Attributes: материал поверхности, в моем случае Stone (камень).
3. Configuration->”+”. Shader->Browes->Standart.
4. Теперь нужно конвертировать наши текстуры из формата *dds в *tga, есть много способов, я использую DDS плагин для GIMP.
5. Далее на верхней панели Serious Editor 3 жмём: Texture->Create Texture, в открывшемся окне выбираем нашу текстуру в формате *tga и жмём Create.
6. Shader Standart:
Base texture(обязательно к заполнению): собственно сама наша текстура.
Gloss Mask (не обязательно для заполнения): текстура отвечает за "силу” воздействия освещения на участках модели.
Normal Map(желательно заполнять): придаёт "выпуклости” модели. Для генерации карт нормалей я также использую специальный плагин для GIMP.
Detail NormalMap(строго рекомендую заполнять): это фирменный приём Croteam, который перешёл ещё со времён Serious Engine 1, добавляет текстуру которая начинает прорисовываться при приближении к объекту и придаёт детальности.
Blend Mask: служит для добавления Stains-ов, чтобы текстура не кхм.. "тайлилась”.
7. Далее следует проделать эту достаточно нудную процедуру со всеми Polygon map. В итоги должно получится что-то похожее на это:
3) Оптимизация геометрии. Дело в том, что Serious Editor 3 не способен переварить одиночную модель с большим количеством полигонов, игрок будет попросту проваливаться под землю в некоторых местах. поэтому нам придётся разделить её на несколько более маленьких. Также это поможет избежать артефактов при генерации световой карты, связанных с "чёрными полигонами”.
1. Переходим на вкладку PM->S. Слева выбираем одну из поверхностей. Затем переходим в Select->Select from cur map.
2. Затем жмём Ctrl+C и удаляем выделенные полигоны.
3. Переходим в World Editor, жмём клавишу insert, в tools выставляем координаты такие же, как и у первой модели. Затем переходим в Mesh Editor и жмём Ctrl+V. Результат: мы разделили модель на 2 разных модели:
4. Пункт 3, стоит проделать до получения желаемого результата, когда игрок перестанет проваливаться сквозь модель и исчезнут артефакты со световой карты.
4) Далее я проделал стандартные операции: добавил освещение, спаун, деревья и т.д. Но сейчас я не буду углубляться, и расписывать, как я это делал. На эту тему есть много статей. В итоге я получил:
Заключение
Вот собственно и всё. Мне даже сложно представить сколько всего можно сделать этим методом, дерзайте!Если что-то не понятно, то можете скачать демо-уровень, который я сделал, в процессе написания этой статьи: 5_7_BossArena.gro (46.9 Mb).
Комментарии
(WIN7-X64)
Придется назначать отслеживаемый исполнительный...
ZIM,в 3DR ведь есть строка "Also capture to Wavefront .OBJ". Зачем мучится с .3DS,если уже дадут готовый .obj?
И уж тем-более не все окна объяснил...
К примеру это:
Вот что мне тут делать?
Модели получаются с лишними объектами(Например:на карте стена стоит,как-будто разделяет на маленькую(где ГГ производил захват)и на большую(всё остальное)часть,оригами ещё бывают).
Вот как это решить?
1) C дефолтным *OBJ будет оооочень много проблем, проверено и перепроверено. Вот некоторые: модель будет многослойной (до 3-х полигонов в одном месте!!!), с дырами в геометрии, потому что нету фильтров как при импорте *3DR.
2)В 3DR import options, если идёт загрузка, а в итоге пустое окно, то можно убрать галочки с:
-Ignore ZENABLE
-Ignore ZWRITEENABLE
-Ignore invalid meshes
З.Ы. люди кто умеет анимировать модели напишите в ЛС и научите ^^"
Правда, иногда не выходит, к примеру, я из вторых "Механоидов" пытался выдрать модель горизонта. В итоге - нихрена у меня не вышло, как бы я не парился и не шаманил.
P.S.: копипастеры! Помните, что уровни с пейнкиллера тоже сделаны огромной моделью и их можно точно так же выдрать!
Знаю, но статью я делал обобщённо для SS 3 и SE HD Editor-ов.
Насколько мне известно, для правильной работы Detail NormalMap нужно, чтобы в шейдере присутствовала просто NormalMap.
Присутствует. Все равно, не вижу никакой разницы между наличием и отсутствуем detail normal map.
Тогда, может, нужно и развёртку делать какой-то особенной, не как "лишь бы текстура ровно легла"? :3