Урок 2.
Часть 
3. Выращиваем траву и деревья, добавляем воду и эффекты, повышающие реализм сцены (продолжение).

   Здравствуйте, уважаемый посетитель сайта!
   Сегодня мы продолжим работу над сценой ландшафта, создание которой было описано в предыдущих частях урока 2. Откройте сцену на стадии завершения части 2 урока 2 или возьмите созданную мной, скачав по ссылке в разделе «
Загрузки» сайта. Как и было обещано, в этой части урока мы продолжим работу по заполнению нашего маленького рукотворного мирка растительностью и введем некоторые ограничения на перемещение нашего виртуального персонажа. Ввиду меньшей сложности задачи, давайте займемся вначале ограничениями.
   Вы можете спросить, зачем нам вводить ограничения на перемещение по нашему маленькому миру, если он и так невелик и тесноват. Но создать огромный мир не под силу одному человеку, да и ресурсы производительности компьютеров большинства людей не позволят охватить столь большие объемы и большое число вмещаемых объектов. Поэтому приходится создавать маленькие кусочки мира, называемые в компьютерных играх уровнями, не забывая при этом следить за тем, чтобы игрок заигравшись где-то на «задворках» уровня, не вывалился бы из него в «
3Д бесконечность». То же самое мы сделаем сейчас и с нашим ландшафтом, сделав так, чтобы игрок не смог близко подойти к краям полигональной сетки, представляющей собой наш ландшафт. Давайте сделаем это!
   Поместите в
Channel Graph примитив «куб» и прилинкуйте его к каналу рендера DX8 3D Render. Как это делается, Вы уже должны знать достаточно неплохо, если внимательно проделали все шаги по созданию нашего ландшафта, описанные в предыдущих частях урока. Поэтому специально здесь и далее на таких тонкостях останавливаться не буду, а тех, кто испытывает затруднение, прошу еще раз внимательно пройтись по предыдущим частям урока в целях освежить в памяти то, что было изучено. Масштабируйте куб и разместите его так, чтобы большая его часть находилась над ланшафтом и в его центре, а края куба должны немного не доставать до его края (см. рис. L2.55.). У меня значения Scale были такими: X=550;  Y=150;  Z=550.
Рис. L2.55.
Рис. L2.57.              
Рис. L2.62.                                                                                                              Рис. L2.63.
Рис. L2.58.                                            
     У Вас эти значения могут быть другими, но это не столь важно. Главное при размещении куба руководствуйтесь рис.L2.55. Переименуйте куб в WorldLimit и поместите все его каналы в папку.
   Теперь нам нужно сделать так, чтобы персонаж останавливался при столкновении со стенками нашего
WorldLimit. Для этого необходимо, чтобы нормали граней куба были развернуты вовнутрь. Как это делается, Вы уже должны знать из предыдущих частей урока. Напоминаю, что для этого, как и в случае с нашей небесной сферой необходимо применить матрицу разворота нормалей. Для этого перетаскиваем в Channel Graph канал Templates-Variables-Matrix, затем заменяем значения матрицы в первых троих колонках с «1» на «-1» и прилинковываем полученную матрицу к крайнему справа линку канала DX8 Motion нашего куба WorldLimit(см. рис. L2.56., L2.57.).   
<<  Перейти к оглавлению                                            
Рис. L2.56.
    Необходимо немного приподнять куб по оси Y вверх, так как после применения матрицы преобразования нормалей изменению подверглись и координаты самого куба. Исправим этот маленький недостаток. Вид куба WorldLimit после такого преобразования показан на рис. L2.58. Теперь сделаем наш куб прозрачным, его видимость нам абсолютно не нужна. Для этого в режиме Object во вкладке Surface, нажав кнопку Easy, в разделе Transparency из выпадающего списка выбираем  Alpha Value. После этого наш WorldLimit станет абсолютно незаметен для обозрения, что нам и нужно. Теперь сделаем так, чтобы персонаж не смог пройти за пределы нашего куба WorldLimit и оказался в положении рыбки в банке в его пределах. Для этого сделаем нашего персонажа (камеру MyPersona) чувствительным к столкновениям с WorldLimit. Создадим Shortcut канала WorldLimit и переместим его в папку с каналами камеры MyPersona. Входим в папку MyPersona и перетаскиваем сюда канал Templates-3D Items-Collision-DX8 Collision Object и линкуем его к каналу DX8 Fast Collision Response камеры MyPersona. К нему теперь прилинковываем наш  Shortcut канала WorldLimit (см. рис. L2.59.).    
Рис. L2.60.                                                                                                           Рис. L2.61.       
    Теперь столкновения камеры и куба WorldLimit будут обрабатываться и наш «герой» не сможет теперь сильно близко подойти к окраинам нашего мира. Запустите на выполнение проект и убедитесь в этом самостоятельно!
    Самое время теперь продолжить заполнять пустое пространство нашего мира растениями, строениями и другими «полезными» объектами. Но сначала  их, перед экспортом в Quest3D, необходимо создать в программе специально предназначенной для таких целей. Надеюсь, что все знают о том, что Quest3D - это программа не для 3д-моделлинга, а для создания интерактивных графических приложений. Поэтому, объекты для импорта в Quest3D будем делать в своих любимых пакетах для создания 3д-контента. Все они могут в равной степени быть использованы с этой целью, главное условие - чтобы с этого приложения затем созданную 3д-модель можно было без проблем экспортировать в формат моделей Microsoft DirectX, который понимает Quest3D. Я в данной части урока использовал 3D Studio Max 7.0 и плагин для экспорта полученной модели в формат .x - Pandasoft DirectX Exporter. Этот плагин можно скачать по ссылке на офсайте Quest3D или на соответствующем WIKI форуме. Я покажу Вам на примере создания  темплейта травы как создавать и импортировать в Quest3D Ваши собственные модели, созданные в пакетах 3д моделлинга. Я использовал 3D Studio Max 7.0, как было сказано выше, поэтому кратко расскажу об основных моментах, связанных с созданием модели для экспорта в Quest3D, применительно к этому приложению:
Рис. L2.64.       
    Теперь расскажу о ключевых моментах, что касается импорта, подготовленной таким образом и сохраненной в Х формате модели, созданной в пакете 3д моделирования и создания на ее основе темплейта для многократного использования в дальнейших проектах:   
Рис. L2.66.                                                                                                                                 Рис. L2.67.
    Внимание! Не забывайте давать осмысленные названия группам каналов импортированных объектов, это существенно облегчит Вашу работу и поможет избежать путаницы в дальнейшем. В нашем примере я назвал группу каналов модели травы grass.
   Создание темплейта на основе импортированной модели.   
Рис. L2.68.                                                                                                     Рис. L2.69.
    Аналогичным путем мной были созданы в 3D Studio Max 7.0 модели папоротника, хижины и дерева. Вы можете (и желательно!)  создать самостоятельно похожие (или лучше!) модели в любимой Вами программе 3д моделирования, затем по приведенной выше методике создать на их основе свои собственные темплейты для  Quest3D. Если что-то не получается, можете взять созданные мной модели, скачав файлы урока по соответствующей ссылке в разделе «Загрузки». То, что получилось у меня, можно видеть на приведенных рис. L2.68 - L2.71.
   
Рис. L2.70.
Рис. L2.71.
     Теперь на основе созданных Вами моделей сделайте темплейты и готовые файлы темплейтов скопируйте в папку, в которой Quest3D
хранит такие файлы. На моем компьютере это папка
C:\Program Files|Act-3D\Quest3D 2.0b\Template\MyTemplates\Land. Скопировав свои файлы для темплейтов теперь необходимо их «зарегистрировать», т.е. Quest3D должен их распознать и поместить в свой раздел Templates. Для этого найдите в Templates строку с названием папки, в которой Вы поместили свои темплейты (у меня это папка Land), выделите ее и кликните правой кнопкой мыши, чтобы появилось контекстное меню. В нем активируйте  строчку Rescan folder (см. рис. L2.72.). После такого действия Ваши новые темплейты должны появиться в списке Templates в папке темплейтов проекта (см. рис.L2.73.).
   
Рис. L2.72.
Рис. L2.76.
Рис. L2.73.
     Осталось малое - разместить объекты, созданные Вами на нашем ландшафте. Как это делается повторно описывать не буду, т.к. эта тема уже была освещена мною в предыдущей 2-ой части урока 2. Пусть это будет вашим домашним заданием. Проявите свои творческие наклонности и оживите свой рукотворный мир! То, что получилось у меня можно увидеть по приведенным ниже скриншотам (см. рис L2.74.- L2.76.). Здесь я еще дополнительно использовал встроенный в Quest3D темплейт лиственного дерева, Вы можете сделать то же самое на свое усмотрение.
   
Рис. L2.74.
Рис. L2.75.
    На этом пожалуй стоит завершить наш 2-ой урок. Практически наш мир готов, осталось оживить его при помощи добавления звуков и добавить персонаж, который смог бы не просто передвигаться, но и производить какие-либо действия с объктами своего мира. Но это уже тема следующих уроков. Спешу сообщить Вам, уважаемые посетители, что начиная со следующего 3-го урока мы переходим к работе в новой версии Quest3D, а именно Quest3D 3.6. VR Edition, поэтому, кто еще не успел обзавестись новой версией Quest'а, поспешите это сделать в ближайшее время!
   В следующем 3-ем уроке мы займемся:
   Удачи! До встречи на страницах сайта в следующем уроке!
  
Рис. L2.65.       
Рис. L2.59.                                            
Используются технологии uCoz