Guest3d.wohlnet.ru
некоммерческий проект, цель которого объединить профессионалов для обмена опытом и знаниями в области real-time рендеринга
guest3d
Игры закончились

урок Quest3d для начинающих

Цель урока: Создание независимого приложения для демонстрации 3D модели (скажем игрового уровня). Для этих целей существует множество программ и методов, мы рассмотрим метод реализации этой задачи с помощью программы Quest3D.

Специально для этого урока я смастерил небольшой уровень аля МаксПейн, назовем это "пародия на игровой уровень игры Max Payne", вы можете использовать свою геометрию. Для начала давайте подготовим весь материал который нам понадобится на протяжении всего урока:

  • Сама модель. Желательно, что бы она была оптимизирована, объекты названы осознано, и т.д. Вдобавок я скомбинировал все объекты по материалам, для удобства.
  • Набор используемых текстур
  • Модель с UV раскладкой под лайтмап.
  • Текстуры лайтмапа
  • Упрощенная модель уровня, для просчета столкновений.

Файлы
результат урока
.ехе файл, запускается как любое приложение,
без вьюверов и всяких библиотек.

архив с текстурами и .х файлами
max_payne_parody_base.x
max_payane_parody_lights.x
max_payane_parody_collision.x
textures/

Walkthrough camera
Заготовка Walkthrough камеры.
Walkthrough_camera_from_danila_dem.cgr
Walkthrough_camera_from_danila_dem.igr

max_payane_parody_tutor_Max9.max
max_payane_parody_tutor_Maya2008.mb
max_payne_parody_Xsi601.scn
Исходники, на всякий случай.
Во всех файлах путь к текстурам: c:\Program Files\Act-3D\Quest3D 3.6\Tutorials\max_payne\textures\

Экспорт
Одна из первоочередных задач при работе с Q3D, это подружить его с программой 3D моделирования которую вы используете, для того чтобы быстро и без проблем вставлять нужную геометрию в ваши проекты. Quest3D принимает в качестве моделей свои файлы(.cgr), файлы DirectX(.х), и еще пару форматов(не для всех).
На официальном сайте программы можно найти экспортеры почти для всех программ моделирования. Но в этом небольшом уроке мне не хотелось бы поднимать тему установки плагинов, оценки и сравнивания их работоспособности, их много они разные, и для человека который хотел бы просто попробовать, эта информация будет излишней. Если вы собираетесь всерьез работать с этой программой, то проведя пару десятков экспериментов остановитесь на том, что более всего подходит именно вам.
А в этом уроке что бы получить файл .х, мы воспользуемся универсальным средством, внешней программой "Deep Exploration". Если вы занимаетесь 3d графикой, то скорее всего она уже установлена на вашем компьютере, если неустановленна, то советую ее поставить, пригодится. Я использую версию 3.5, не самая последняя, но думаю, что более поздние версии справятся с нашими задачами. В итоге получается такая цепочка действий: 3D программа -> Deep Exploration -> Quest3D.

Экспорт из MAYA
Из maya я думаю, проще всего экспортировать в формат .obj, это ее родной формат, он достаточно предсказуем и с ним работают почти все конверторы. Все как всегда, я бы только посоветовал поставить галочку опции Materials в положение off, настройки материалов и текстуры maya в Q3D нам не понадобятся.

Экспорт из 3DsMax
Из 3DsMax, я предлагаю начать с формата .ASE, если возникнут трудности можно попробовать .obj или .3ds(у обоих замечены проблемы со смус-группами).

Хочется отметить, что данные рекомендации работают только в связке 3D программа -> Deep Exploration 3.5 -> Quest3D. Как поведет себя формат .ASE или .obj с другим конвертером неизвестно. Единственное от чего хотелось бы предостеречь, так это от зацикливании на этой теме. Очень часто результат который доходит до Q3D отличается от того что вы планировали, не стоит опускать руки. Пускай вас успокоит тот факт, что проблема корректной трансляции файлов существует во всех программах и движках, в той или иной степени. Если у вас вообще ничего не получилось (что врядли) можно взять файлы урока.

Deep Exploration
Допустим что вы прошли первый уровень, или у вас просто под рукой оказался набор нужных элементов, не важно, просто у вас есть файлы .obj. Давайте создадим файлы .х.

  • Открываем Deep Exploration,
  • Находим папочку с нашими файлами,
  • Выделив нужные файлы, в окне проекции проверяем объекты, и нажимаем Save As -> Тип файла DirectX model(.x),
  • При сохранении появится окно Export Properties, из всего богатого набора нам понадобятся галочки
    (1. Texture Coordinates, 2. Save normals 3. Max points in polygon "4"),
    ВСЕ остальные галочки отключаем, сохраняем.Набор из трех моделей .x готов, идем дальше.

урок Quest3d для начинающих

Quest3D
Итак. Все просто, в верхнем левом углу ноды-заготовки, в нижнем левом файловая иерархия проекта и маленькое окошко предосмотра сцены, по центру (Big channel) большое голубое поле, это рабочий стол для работы с нодами, там же во вкладках большое окно предосмотра сцены, редактор анимации, редактор объектов и т.д.

Начнем с Big channel
После импорта ваших моделей в Q3D они будут представлены в виде большого количества различных нод, для того что бы вы не растерялись при их виде давайте внимательно посмотрим что такое 3D модель в Quest3d.
урок Quest3d для начинающих

  1. 3D ObjectData - геометрия элемента, нода в которую при импорте объекта записана информация о точках, полигонах, нормалях и т.д.
  2. Surface - нода назначающая элементу, материал и текстуру. Обратите внимание,
  3. что нода текстуры воткнута не в материал как во всех программах 3D моделирования, а в ноду surface,
    причем воткнуть их туда можно неограниченное количество, но об этом позже.

  4. Завершает цепочку 3D Object. Это объединительная нода, через которую всей группе присваиваются локальные и глобальные трансформы
    (положение, поворот, масштаб).

Теперь давайте откроем Q3D. Перед нами появился режим Big channel с одной нодой, увенчанной увесистой стрелкой и надписью старт. Несложно догадаться, что все что мы сделаем, нам предлагается выводить через нее. На данном этапе ее можно оставить как есть. Первоочередная задача загрузить геометрию основного уровня.

1. Импорт
File->Import->file.x, при импорте Q3D создает новый Channel Group(.CGR) файл, при этом просит дать ему уникальное (в области проекта) имя. После чего появляется меню, ставьте как на скрине.
урок Quest3d для начинающих

Перед нами появится примерно следующая картина. Наша объект состоит из сюрфейсов разбитых по материалам. Каждый сюрфейс завернут в папочку(Папочку открыть\закрыть можно с помощью пробела). Основная нода объекта красного цвета, это значит, что весь объект имеет паблик статус, тоесть его можно использовать во всем проекте.
урок Quest3d для начинающих

Делая небольшие проекты я стараюсь не использовать модели в виде отдельных ресурсов, и в данном случае для наглядности предлагаю избавляться от внешних групп и делать все в основной. Для этого нужно выделить все объекты и скопировать их в буфер (ctrl+c), затем перейти в основную группу, нажав на нее в окне Groups. Щелкнуть на голубом поле, и вставить (ctrl+v). Потом выделить группу с импортированной моделью и удалить ее. Теперь все ноды в одной группе. Можно переименовать объект, например в "base_modell", и снять с него паблик статус.
урок Quest3d для начинающих

2. Настройка материалов
Теперь нужно настроить материалы. Для этого переходим в окно Object. Бардак с материалами нужно привести в порядок, для этого в окне Surface нужно выделить все наши сюрфейсы с шифтом, и настроить материалы один раз для всех. Настройки будут такими Diffuse и Emissive выставим в 1, а все остальное Specular, Specular Power, Alpha, Texture factor в 0. Должен получиться чисто белый материал без затенений и цвета.
урок Quest3d для начинающих

3. Текстуры
Для того что бы назначить текстуры их нужно загрузить в проект. Выбираем в меню Texture Channelgroup нашу группу, после чего с шифтом выделим все текстуры проекта и загрузим их всех.
урок Quest3d для начинающих

Обратите внимание, что после того как вы загрузили текстуры в проект и сохранили его, размер .cgr файла сильно увеличился, это значит что текстуры Q3D хранит в своих файлах, и если вы редактируете их, то нужно делать Reload. Динамическая загрузка текстур и моделей, тема для отдельного урока. После того как вы загрузили текстуры, выделяем объект - щелкаем по текстуре. Если вы используете мои файлы, текстуры названы как объекты, если текстура используется больше чем на один объект, она имеет двойное название.

4. Лайтмапы
Для тех кто не в курсе. Light mapping - весьма распространенная технология, грубо говоря, тень нарисованная на стенах, натянутая с помощью дополнительной UV-раскладки. Не будем вдаваться в подробности, урок не об этом. Тем более что, в сети немало статей на эту тему. Скажу только, что свои я сделал, используя Maya, MentalRay, FinalGathering, BatchBake и это тема отдельного урока.
Я работаю в программе Maya, а для этой программы разработчики не написали экспортера в .cgr файлы, которые поддерживают больше одной UV-раскладки, от себя скажу, что этот досадный факт меня нисколько не печалит, потому что лично мне удобнее рассчитывать карты освещенности на отдельных объектах и в отдельных файлах.
Итак. Если вы правильно выполнили пункт 3, то текстуры лайтмапов уже загружены, осталось загрузить модель с текстурными координатами для них.
Выполните пункт 1 полностью, загрузив вспомогательную модель. Не обращайте внимания на ее внешний вид, после того как мы перекинем ее UV- раскладку на основную модель, она нам больше не понадобится. Выглядеть это будет примерно так.
урок Quest3d для начинающих

  1. Для хранения информации о свете мы будем использовать Stage2. Давайте настроим этот слот, оптом для всех сюрфейсов.
  2. В поле surface выделите с шифтом все сурфейсы,
    потом удерживая клавишу ctrl снимите выделение с этих объектов (tubes, metall_helps, metall_lamps, glass_lamps, metall_rounds),
    это мелочевка которую мы затеним настройками материала.
  3. Далее нужно создать пустую UV-раскладку,
    не снимая выделения, выберите в меню Mapping (UV set 1, only 1 texture set available).
    На каждый сюрфейс появится подтверждение, соглашаемся.
  4. Не снимая выделения с сюрфейсов во вкладке "Color Blending (Advanced)"
    выбираем в меню "Op" метод смешивания MODULATE.
    Теперь все готово для трансплантации UV- раскладок.

урок Quest3d для начинающих

  1. Выделив оба объекта, запускаем утилиту переноса "Merge Objects UVs", light_modell у нас будет справа,
    base_modell слева, если не так то есть кнопка "Swap<==>".
  2. Устанавливаем UV stages в которую будем пересаживать, в нашем случае это 2.
  3. Выделяем объект "донор".
  4. Выделяем объект "цель".
  5. Нажимаем "Copy UV Selection =>"

Не выходя из утилиты перенесите остальные UV-раскладки на одноименные объекты, названия которых совпадают за исключением префикса light_,
урок Quest3d для начинающих
Теперь надо назначить текстуру на "Stage 2".

  1. Переходим в закладку "Textures".
  2. Выбираем "Texture satge 2".
  3. Выделяем объект.
  4. Щелкаем по текстуре.

Если вы сделали все правильно, на объектах должны появится тени.
урок Quest3d для начинающих
Теперь осталось настроить материалы тех объектов, которые не участвуют в лайтмапе, а именно (tubes, metall_helps, metall_lamps, glass_lamps, metall_rounds). Выделим их, и установим параметр Diffuse в 0, Emissive в 0.2.
урок Quest3d для начинающих

5. Камера
Самая занудная глава закончена, модель уровня готова. Хочется уже по скорее пройтись по ней. Для начала нам нужно вывести всю нашу работу в экран "Animation 3D View".

  1. Удаляем ноду "Project Start".
  2. Вместо нее из панели "Templates" вытаскиваем на рабочее поле две, (01_Scene\Start 3D Scene) и (01_Scene\Rendering\Render).
  3. Правой кнопкой мыши делаем "Start 3D Scene" стартовой нодой (Set as start channel).
  4. Подключаем ноду "Render" к "Start 3D Scene".
  5. Затем подключаем нашу модель "base_modell" к ноде "Render".
  6. Переходим в окно предосмотра "Animation 3D View", наблюдаем нашу модель.

урок Quest3d для начинающих
Теперь подключим специальную камеру, в простонародии "Walkthrough", заодно посмотрим, как можно сделать темплейт для повседневной работы. В стандартных заготовках Q3D есть целых две Walkthrough камеры, одна простая, вторая на основе физического движка "Open Dynamics Engine"(ODE). Я взял простую, немного ее переделал и сохранил в отдельный файл "Walkthrough_camera_from_danila_dem.cgr". В корне программы есть папка "Templates", создадим в ней еще одну, типа "My templates" и перепишем туда файлы "Walkthrough_camera_from_danila_dem.cgr" и "Walkthrough_camera_from_danila_dem.igr", (.igr) это файлы форматирования нод, их положения, папки, текстовые описания и пр., если его удалить то при загрузке ноды будут сброшены в кучу без всего, работать конечно будет, но хрен разберешься.

  1. Пересканируем директорию.
  2. Перетащим "Walkthrough_camera_from_danila_dem" на рабочее поле.
  3. Соеденим "Camera Logic" c "Start 3D Scene", а "Walkthrough Camera" с "Render". Если прямо сейчас перейти в окно проедосмотра, то камера улетит вниз, с концами.
  4. Вернем ее на место, установив значение переменной Y = 0.01
  5. Загрузим заготовку для просчета столкновений. Выполните пункт 1 полностью, загрузив max_payne_parody_from_maya2008_collision.x, удалите папочку "Motion", и раскрыв папочку "Collision_model" удалите материал. Теперь этот очищенный объект можно подключить к ноде "CollisionObject".

урок Quest3d для начинающих

В окне "Animation 3D View" теперь можно пройтись. Мы подошли к завершающей части урока, осталось скомпилировать наш проект получив .ехе файл.

  1. file->publish
  2. Выбираем тип приложения.
  3. Имя .ехе файла.
  4. Так как все ресурсы мы договорились держать в одном файле, то нужно отключить все, кроме одного файла проекта.
  5. После нажатия на кнопку "Finish" в папке с .cgr файлом появится .ехе файл.

урок Quest3d для начинающих
Если при выполнении урока у вас возникли проблемы или предложения пишите в почту или на форум.
-----------------------
danila_dem 1.11.2007
Перепечатка материалов сайта возможна только с указанием источника.

Если у вас есть материалы, или вы хотите дополнить существующие, если вы хотите писать новости относящиеся к технологиям реалтайм рендеринга, или имеете полезные файлы, вы можете стать резидентом guest3d.wohlnet.ru. Для этого нужно написать письмо в свободной форме на den@wohlnet.ru, с указанием вашей мотивации. Кроме того, каждый резидент получает возможность создать свою страницу, ссылка на которую будет прикреплена к каждому опубликованному вами материалу.
вход