Партнеры и реклама: Fargo 84053 ООО Зонеко.
 • 29 January 2019 - 18:02 (Thornography) Ответов: 0
    Заходит кто-нибудь ещё?
 • 4 October 2018 - 23:19 (jenifer) Ответов: 0
    Toyota Mercedes BMW Lexys 2018 года
 • 30 September 2018 - 20:28 (jenifer) Ответов: 0
    Toyota Mercedes BMW Lexys 2018 года
 • 16 April 2018 - 15:19 (jenifer) Ответов: 0
    Toyota Mercedes 2018 года
 • 12 April 2018 - 17:46 (jenifer) Ответов: 0
    Toyota Mercedes 2018 года
 • 13 March 2018 - 17:03 (jenifer) Ответов: 0
    Замена колодок BMW
 • 13 January 2018 - 09:43 (jenifer) Ответов: 0
    Ремонт автомобилей BMW
 • 1 April 2016 - 18:06 (INSIDIOFER) Ответов: 13
    бесплатный хост от народ рю

14.08.09

Урок Quest3d - Игры закончились! Quest3D для начинающих

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

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

Для просмтра увеличенного изображения достаточно кликнуть по нему.

Для начала давайте подготовим весь материал который нам понадобится на протяжении всего урока:

Файлы


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

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


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. Давайте создадим файлы .х.



Quest3D


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

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

  1. 3D ObjectData - геометрия элемента, нода в которую при импорте объекта записана информация о точках, полигонах, нормалях и т.д.
  2. Surface - нода назначающая элементу, материал и текстуру. Обратите внимание,
  3. что нода текстуры воткнута не в материал как во всех программах 3D моделирования, а в ноду surface, причем воткнуть их туда можно неограниченное количество, но об этом позже.
  4. Завершает цепочку 3D Object. Это объединительная нода, через которую всей группе присваиваются локальные и глобальные трансформы (положение, поворот, масштаб).
Теперь давайте откроем Q3D. Перед нами появился режим Big channel с одной нодой, увенчанной увесистой стрелкой и надписью старт. Несложно догадаться, что все что мы сделаем, нам предлагается выводить через нее. На данном этапе ее можно оставить как есть. Первоочередная задача загрузить геометрию основного уровня.

1. Импорт


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


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


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


2. Настройка материалов


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


3. Текстуры

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


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

4. Лайтмапы


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



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


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


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


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", наблюдаем нашу модель.



Теперь подключим специальную камеру, в простонародии "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".



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



Если при выполнении урока у вас возникли проблемы или предложения пишите на форум автора урока.

Урок опубликован с официального разрешения автора


Источник
Архив новостей дизайна
  Copyright © 2004-2024 FireNET.ru Generation time: 0.0103  
html, css validators  

  
   Если желаете написать для сайта свою статью или урок (с вознаграждением!) — напишите нам на web[  ]firenet.ru
   Мы также готовы рассмотреть все предложения по сотрудничеству и рекламе тематических сайтов на нашем проекте.
   Пишите нам и мы обязательно ответим!