Урок 2.
Часть 1. Небо над головой, земля под ногами.

     Давайте с Вами попробуем создать в Quest3D свой собственный виртуальный мир, где можно было бы не только ходить, но и производить некоторые действия с объектами, населяющими этот мир. Задача довольно сложная, но вполне решаемая при помощи Quest3D, даже если Вы не являетесь специалистом в области трехмерной графики и программирования. В изложении данного урока буду стараться излагать все доходчиво по мере возможности. Если у Вас возникнут вопросы по содержимому урока, пишите на v3dm@yandex.ru, чем смогу, помогу.

    Урок, ввиду сложности поставленной задачи, разбит на несколько частей. В этой части мы будем создавать ландшафт нашего мира и сделаем так, что по нему можно будет передвигаться. В Quest3D есть встроенный в программу готовый образец виртуального мира, но создавать одно и то же много раз хоть и удобно, но быстро надоест. Я предлагаю Вам создать свой собственный мир, непохожий на другие, но для этого придется немного потрудиться. Зато наградой Вам будет прочное знание Quest3D, приобретенное личными усилиями, а это, согласитесь, немало.

     Итак, Вы готовы?... тогда начнем.
Прежде всего нам необходимо создать трехмерную модель ландшафта и текстуру для него, и для облаков.
Так как Quest3D - это хороший трехмерный движок с удобным управлением, а не программа для трехмерного моделирования, следовательно модель ландшафта будем создавать в другой программе. Если Вы хорошо знаете один из 3D редакторов,например, 3D Studio Max, Maya или LihgtVawe3D, то можете попытаться создать его в одной из таких программ. Замечу только,что модель ландшафта нужно создать в виде полигональной сетки размером
128х128 точек, больше не стоит, хотя если у Вас мощный компьютер, то можете попробовать и больше. Изменяя положение вертексов полигональной сетки можно создавать горы, долины, кратеры и т.д., для этого в вышеуказанных редакторах есть необходимые инструменты. То, как будет выглядеть созданный Вами ландшафт, полностью будет зависеть от Вашего умения и наблюдательности. Что касается меня, я предпочел использовать специализированные программы для дизайна ландшафтов Terragen и L3DT, это намного быстрее да и сам ландшафт, благодаря его генерации при помощи специально разработанных алгоритмов, выглядит более реалистично. Я здесь не буду описывать приемы работы в указанных программах, сами программы и руководства по их использованию можно скачать по приведенным ссылкам в соответствующем разделе нашего сайта. Если у Вас что-то не получается, то для продолжения работы над темой данного урока Вы можете скачать готовые файлы, созданные мной, там же.

      Текстура для облаков была создана следующим образом... Запускаете Вашу версию программы Terragen, затем вызываете диалоговое окно Cloudscape, кликнув на соответствующей кнопке в левом верхнем углу окна приложения (см. рис. L2.1). В этом окне Вы уже видите практически готовую текстуру для облачного слоя. Я использовал все установки для генерации облаков по умолчанию, Вы, если хотите, можете поиграть регуляторами, чтобы сделать облака более реалистичными на Ваш взгляд (см. рис. L2.2).
Рис. L2.1
     Далее, нам необходимо эту текстуру вытянуть из Terragen и сохранить в виде файла.
    Для этого поступим следующим образом. Выставьте разрешение Вашего монитора на максимально возможное для него разрешение и разверните окно Terragen на весь экран. Нажмите кнопку на клавиатуре Print Screen, чтобы скопировать в буфер обмена копию содержимого экрана. Запустите Adobe Photoshop и нажмите комбинацию клавиш Ctrl+N, чтобы создать новое изображение ( в появившемся окне ничего менять не нужно, просто согласитесь с установками ОК !).
Рис. L2.3                                              Рис. L2.4
    Нажмите комбинацию клавиш Ctrl+V, у Вас в окне Photoshop появится изображение, которое было на мониторе. Слейте слои в один слой, выбрав в меню Layer команду Flatten Image. Выберите инструмент Rectangular Marquee Tool и в его свойствах выставите Fixed Size 256 px x 256 px. Выделите с его помощью участок с облачным слоем на изображении (см. рис. L2.1) и в меню Image выберите пункт Crop. У Вас получится изображение облачного слоя размером 256х256 пикселей, что нам и нужно. Добавьте немного контраста, чтобы изображение выглядело живее, только сильно не увлекайтесь контрастом, так как облака на изображении потеряют объемность, что нежелательно. Сохраните полученную текстуру как файл clouds.jpg. В установках опций сохранения выставите максимальное качество изображения. Не закрывайте файл, нам еще необходимо создать на его основе карту прозрачности облачного слоя. Выберите в меню Image пункт Mode, затем Grayscale, переведя таким образом наше изображение в режим градаций серого. Затем инвертируйте изображение с помощью клавиатурной комбинации Ctrl+I. Добавьте контраста полученному изображению. Стремитесь к тому, чтобы облака стали черного цвета, а пространство между ними белым, но это в идеале. Главное, чтобы сохранился плавный переход от черного к белому по краям облаков, избегайте появления резких переходов. Дополнительно для сглаживания размойте изображение при помощи фильтра Gaussian Blur (Filter-Blur-Gaussian Blur, Radius=1.4...2.0). Сохраните полученное изображение как clouds_alpha.jpg.

   Теперь о создании ландшафта. Если Вы будете использовать программу L3DT для его создания, то создайте равнину или островок, что Вам больше всего понравится. Можете использовать файлы ландшафта, который создал я, хотя лучше было бы, чтобы Вы все-таки попытались создать все самостоятельно. Скачать то, что получилось у меня можно по соответствующей ссылке в разделе "Загрузки" сайта (см. рис. L2.3, L2.4)
Рис. L2.9                                                                                                              Рис. L2.10
Рис. L2.5                                            
    Экспортируем наш ландшафт из L3DT в формат ландшафта программы Terragen (расширение файла .ter). Запустите Вашу версию Terragen, в окне Landscape нажмите кнопку Open, находящейся вверху окна, откройте созданный нами файл для Terragen. Когда появится изображение структуры ландшафта в маленьком окошке, нажмите кнопку Size. В появившемся окне нажмите кнопку " 129", затем ОК (см. рис. L2.5). В окне Landscape жмите кнопку Export, задайте имя файлу Land.lwo (сохранить для LightWave3D), юниты лучше поставить не в метрах, а в принятых в данной программе единицах. Итак, необходимые для дальнейшей работы файлы созданы, теперь перейдем непосредственно к нашим "бегемотам", т.е. к созданию нашего интерактивного мира в программе Quest3D.

    Создайте пустой проект, выбрав в меню File пункт New project. Сохраните проект, выбрав в меню File пункт Save All (в дальнейшем по тексту с целью достижения компактности изложения темы будут применяться сокращения, в данном случае описанное выше будет выглядеть как File - Save All).В появившемся окне выберите путь для сохранения проекта, затем создайте папку для файлов проекта Land. Имя файлу группы каналов присвойте start.cgr.
    Сейчас нам необходимо будет преобразовать полученный в L3DT ландшафт в формат, понимаемый Quest3D. L3DT может экспортировать файл и в формат DirectX, но....ландшафты удобно создавать при большом числе вертексов и при этом экспортированный файл получается слишком большого размера (около 50-100 Мб). Такой файл у меня Quest3D импортировать так и не смог, закончилось все окончательным и бесповоротным зависанием программы. Если у Вас "крутой" комп, то может быть и получится с импортом, хотя, если Вы создаете что-либо для использования другими людьми, то стоит заметить, что не все являются счастливыми обладателями самой новейшей техники. Поэтому поступим следующим образом.
<<  Перейти к оглавлению                                            
Рис. L2.2.
Рис. L2.6.                                            
    В левой верхней части окна программы активизируйте вкладку Templates (она обычно активна по умолчанию). Здесь находятся каналы, собранные по группам согласно их функционального назначения. Каждая из групп оформлена в виде папки с соответствующим названием, папки представлены в окне с расположением в виде дерева, как в проводнике Windows. Все логично и удобно, так что трудностей при работе с окном Templates, я думаю у Вас не возникнет. Раскройте содержимое папки 3D Items и найдите канал Start3DScene и перетащите его в граф каналов Channel Graph. В этой же папке найдите и раскройте вложенную папку Render. В ней найдите канал DX8 Render и тоже перетащите его в Channel Graph. Прилинкуйте канал DX8 Render к каналу Start3DScene. В свойствах Start3DScene ( вначале выделите его, затем кликните на нем правой кнопкой мыши) выберите пункт Set as start channel. То, что получилось у Вас должно выглядеть аналогично показанному на рис. L2.6. Сохраните проект (File-Save All). При помощи проводника Windows скопируйте файл модели ландшафта и файл с его текстурой, а также файлы с текстурами для облачного слоя, созданные нами, в папку проекта Land ( в нашем случае это файлы clouds.jpg, clouds_alpha.jpg, land_1024x1024.jpg и Land.lwo). Импортируем теперь в Quest3D модель созданного нами ландшафта. Для этого выполним File - Import, в появившемся окне импорта выбираем наш файл ландшафта Land.lwo, жмем кнопку Import. В появившемся после этого окне Load Channel Group вводим имя Land и нажимаем кнопку ОК (см. рис. L2.7)
Рис. L2.7.                                                                                                       Рис. L2.8.       
     Мы увидим, что теперь в окне файлов проекта (в нижней центральной части окна Quest3D) появилась новая группа Land.cgr. Для завершения операции импорта и для появления возможности рендеринга нашего ландшафта, группу Land.cgr необходимо прилинковать к каналу DX8 Render. Так как канал DX8 Render находится в составе группы каналов start, то для линковки в данном случае и в других подобных, когда каналы для линковки находятся в разных файлах групп, применяется следующая методика.
В правом нижнем углу окна Quest3D находится окно 3D обзора, над ним располагаются вкладки
Animation и Graph для выбора режима показа в этом окне. Выберите вкладку Graph и сделайте клик на указанном окне, чтобы сделать его активным. Теперь в окне файлов проекта кликните на строке Land.cgr. Каналы, составляющие группу каналов Land.cgr, теперь будут видны и с ними можно теперь производить те же самые действия, что и в Channel Graph. Увеличьте в окне изображение самого верхнего в группе канала, чтобы его хорошо было видно. Затем кликните мышью на Channel Graph, чтобы активизировать его. На этот раз в окне файлов проекта кликните на имени группы start.cgr. Увеличьте изображение в Channel Graph так, чтобы канал DX8 Render был хорошо виден. Теперь в нижнем окне Graph ухватитесь за прямоугольник, находящийся вверху канала и предназначенный для линковки (он станет красного цвета) и проведите линк в другое окно (Channel Graph) к каналу DX8 Render. Затем отпустите кнопку мыши. Признаком удачной линковки можно считать появление синего прямоугольника, представляющего группу Land.cgr, прилинкованного к DX8 Render (см. рис. L2.8). Сохраните проект (File-Save All). Для новой группы (в нашем случае это группа Land) задайте имя Land.cgr.
     Теперь нам необходимо изменить размер и положение импортированного ландшафта. Для этого переходим в режим работы Animation, здесь в левом верхнем углу программы Quest3D находим вкладку Objects и делаем клик на ней. В окне под вкладками находим и выделяем строчку Land. Еще ниже находятся кнопки и поля для ввода параметров объекта Move, Rotate и Scale. Выберем Scale, затем во все строки ниже (масштаб по осям X,Y,Z) вводим число "0.06", после выбора Move вводим такие значения: X=Z=-297, Y=-5.

Теперь переходим в режим работы программы с объектами(выбрав в выпадающем меню в верхнем правом углу окна Quest3D строку Object). Сейчас мы изменим свойства материала нашего ландшафта и наложим на него текстуру. В режиме работы Object в левой верхней части окна Quest3D находим и активизируем вкладку Material. Здесь все значения для параметра Diffuse выставляем в "1.0", Emissive в "0.51", Specular в "0".

Примечание. Изменять значения для данных величин можно либо при помощи регуляторов, либо сделав клик мышью на кнопке, находящейся правее регулятора, в появившемся окне вводится нужное значение величины. Для того, чтобы значения всех трех величин параметра изменялись синхронно при помощи регуляторов, необходимо при их передвижении удерживать в нажатом состоянии клавишу Shift.

    Активизируем вкладку Texture. В выпадающем списке справа Texture Channelgroup находим нашу группу каналов ландшафта Land и выбираем ее в качестве целевой группы для текстуры. Ниже жмем кнопку Load.., в появившемся окне находим файл текстуры land_1024x1024.jpg, затем ОК. Изображение загруженной текстуры появится в одном из черных прямоугольников, находящихся ниже кнопки загрузки текстуры. Кликнем на изображении текстуры, чтобы применить ее к ландшафту. Но...кроме изменения цвета ландшафта в окне 3D обзора ничего не изменилось в его виде. Это потому, что мы не указали программе как мы хотим наложить на ландшафт данную текстуру. Для этого в левой части окна программы из выпадающего списка выбираем UV Set 1 (было UV Set 0), еще ниже в другом выпадающем списке выбираем Planar Y. Все остальные параметры не изменяем. Теперь можно видеть, что наш ландшафт теперь покрыт текстурой. Переходим в режим Animation, но кроме черного поля в окне 3D обзора не видно ничего. Причина этого состоит в том, что в нашей сцене отсутствуют какие-либо источники света, поэтому царит полный мрак! Давайте добавим в сцену источник света, имитирующий Солнце.

Переходим в режим работы
Channels. Во вкладке Templates, в папке 3D Items находим и помещаем в Channel Graph канал Directional Light. Прилинковываем его к DX8 Render. Теперь развернем источник света так, чтобы он освещал наш ландшафт. Переходим в режим Animation, активизируем вкладку Lights, выделяем при помощи клика мышью строку Directional Light. Ниже жмем кнопку Rotate и в строке ввода для Pitch Angle вводим число "-90" (см. рис. L2.9)   
     Теперь свет будет падать на ландшафт перпендикулярно его поверхности сверху. Теперь в окне 3D обзора ландшафт хорошо виден.
Осталось добавить небо и облака для большего реализма. Поместим в
Channel Graph заготовку для нашего будущего неба - простой объект-сферу, представленную в Quest3D группой каналов Sphere. Во вкладке Templates находим и перетаскиваем в Channel Graph: Templates - 3D Items - Objects - Primitives - Sphere. Сразу присвоим нашей сфере имя Sky (каким образом, Вы должны уже знать). Прилинковываем сферу к DX8 Render, затем переходим в режим Animation. Изменим масштаб сферы Sky, увеличив ее размер: Animation - Objects - Sky - Scale, затем вводим число "1000" в строки ввода параметров по всем осям X, Y и Z (см. рис. L2.10). Переходим в режим работы Object и изменим свойства материала сферы так, чтобы она была похожа по цвету и яркости реальному земному небу: Object - Material - Diffuse (R=0, G=0.035, B=0.082) и Emissive (R=0.855, G=0.914, B=0.98) ( см. рис. L2.11)Теперь нам нужно сделать так, чтобы небесная сфера была видна изнутри, а не снаружи. Для этого необходимо изменить направление нормалей к поверхности Sky на противоположное.

Примечание. На приведенных рисунках Вы можете видеть, что рабочее поле Channel Graph не "захламлено" большим числом присутствующих там каналов благодаря удобной возможности в Quest3D помещать группы каналов одинакового функционального назначения в папки. Для того, чтобы поместить группу каналов в папку нужно выделить всю группу. Для этого сделайте клик на самом верхнем "родительском" канале с нажатой клавишей Shift, чтобы выделить канал со всеми прилинкованными к нему каналами -"наследниками", затем нажать клавишу Space. Все выделенные каналы при этом будут помещены в папку.

    В Channel Graph щелкнем два раза мышью на значке папки Sky, в которой находятся каналы нашего неба (предполагается что у Вас каналы небесной сферы должны уже быть помещены в папку, как было описано выше в Примечании), чтобы войти в нее и раскрыть содержимое данной папки. Таким же способом раскроем папку Motion сферы. Поместим сюда канал Matrix, который можно найти в Templates - Variables - Matrix. Прилинкуем Matrix к каналу DX8 Motion небесной сферы к самому крайнему справа линку, как показано на рис. L2.12.    
Рис. L2.11                                                                                  Рис. L2.12
    Два раза щелкнем мышью на канале Matrix, чтобы открыть окно для ввода компонентов матрицы. Изменим в первых трех колонках величины «1» на «-1», затем соглашаемся с изменениями ОК. Выходим из папки Motion, затем из папки Sky, щелкнув два раза мышью на значке FolderUp в самом верху группы каналов. В окне 3D обзора теперь можно видеть, что поверхность сферы, выполняющей у нас роль неба, видна только изнутри нее, что нам и было нужно сделать (см. рис. L2.13).
    Кратко объясню смысл предпринятых нами действий. Сейчас мы совершили преобразование системы координат при помощи матрицы преобразования. При этом каждая из координатных осей пространства X, Y, Z (локальная система координат, привязанная к сфере!!!) изменила направление на противоположное. Это равносильно тому, что мы как бы вывернули нашу сферу наизнанку.
Сохраним проект (
File Save All).

   
Пришло время заняться созданием нашего виртуального «Я», т.е. персонажа, которым мы сможем управлять и перемещать его по нашему виртуальному миру. Сам персонаж мы пока что создавать не будем, это тема будущих уроков, а ограничимся видом от первого лица. Поместим в сцену камеру. В Quest3D в Templates уже имеется готовая к использованию, полностью удовлетворяющая нашим требованиям, камера с поддержкой обработки столкновений и гравитацией. Называется эта чудесная камера FastCollisionCamNoJitter. Ее можно найти здесь 3D Items Camera FastCollisionCamNoJitter. Поместим ее в Channel Graph, но пока что не будем ее прилинковывать к DX8 Render, сейчас объясню почему.
    Причина состоит в том, что если сразу прилинковать камеру, то без указания объекта для столкновений, в нашем случае ландшафта, под действием гравитации она провалится вниз….Давайте назначим наш ландшафт в качестве объекта столкновения для камеры. Создайте Shortcut группы каналов Land (выделите синий прямоугольник Land в Channel Graph и нажмите клавишу «тильда» на клавиатуре). Прилинкуйте созданный Shortcut для Land к каналу DX8 Collision Object камеры (см. рис. L2.14 ). Давайте теперь изменим некоторые параметры камеры, чтобы ее движение было более реалистичным.    
Рис. L2.13                                                                                             Рис. L2.14
      Войдите в папку Collision Spheroid Radius, находящейся в группе каналов камеры и измените значения величин трех каналов Value, слева направо: на 0.3 крайний слева; 1.5 по центру; 0.3 крайний справа (см. рис. L2.15 ). Выйдите из папки Collision Spheroid Radius (FolderUp).
Теперь усилим силу притяжения, чтобы наша камера при быстром перемещении не взлетала в воздух как птица. Среди каналов группы камеры найдите папку
Vector Operator, войдите в нее и найдите там канал Gravity Value. Измените его значение на «-0.5» (см. рис. L2.16 ).
    
Теперь можно прилинковать нашу камеру FastCollisionCamNoJitter к каналу DX8 Render и переименуйте ее в MyPersona. Поместите все каналы камеры в папку. Теперь можно уже сделать прогулку по нашему виртуальному миру. Перейдите в режим работы Animation и переключите обзор через камеру MyPersona (над окном 3D обзора находятся кнопки одна из них переключает обзор на встроенную камеру, другая на добавленные в сцену). Нажмите кнопку Run, находящуюся левее выпадающего списка выбора режима работы программы. Прогуляйтесь по новосотворенному миру, выбирая направление перемещения мышью, а передвижение курсорными клавишами.  
    
Ну как, здорово? Вы довольны своей работой? Да, это пока не «супер», зато этот маленький клочок виртуального мира полностью в Вашей власти. Можете делать с ним то, что посчитаете нужным, устанавливать здесь свои правила и законы вплоть до изменения физических законов. Ничего не стоит сделать так, чтобы виртуальное яблоко падало в небеса, а не на голову любопытного НьютонаВсе в этом мирке будет подчиняться Вам ведь Вы его творец!
Рис. L2.15.                                                                      Рис. L2.16.
    Доработаем нашу сцену, сделав ее еще более реалистичной.
Давайте немножко улучшим наш персонаж добавив ему еще одну степень свободы
- возможность бежать. Если Вы все еще прогуливаетесь по нашему мирку, то пора остановиться и немного поработать, нажав находящуюся рядом с Run кнопку Edit. Сделайте это, затем продолжим. Перейдите в режим Channel, войдите в папку камеры MyPersona здесь среди каналов найдите папку Vector Operator и войдите в нее. Добавьте в Channel Graph канал из Templates - Input - Keyboard - Shift, а также Operators - Expression Value. Прилинкуйте канал Shift к самой первой точке линковки (крайняя слева) канала Expression Value. Сделайте двойной щелчок мышью на Expression Value, чтобы вызвать окно для ввода формулы. Введите выражение "0.1+А*0.4" в поле для ввода формул. Поставьте галочку возле Rename Channel to formula, чтобы присвоить имя каналу согласно его формуле. Нажмите ОК. Удалите канал Speed со значением 0.1, а вместо него прилинкуйте группу, которую мы только что с Вами создали (см. рис. L2.17 ). Выходим из папки Vector Operator и из папки MyPerson. Сохраняем проект (File - Save All). 
   
Краткое объяснение вышеописанного. Канал Shift предназначен для определения состояния одноименной клавиши на клавиатуре. Если клавиша нажата, то значение величины канала Shift будет «1», если отпущена - «0». Теперь если подставить эти значения вместо параметра А в формулу, то можно заметить, что если клавиша Shift нажата, то скорость перемещения камеры будет «0.5», если отпустить, то «0.1». Вот Вам два состояния перемещения бег - ходьба, управляемые клавишей Shift. Запустите выполнение проекта (Run) и попробуйте в деле то, что получилось после затраченных нами усилий.
       
Рис. L2.17.
Рис. L2.18.
    Известно всем, что в реальной жизни воздух никогда не бывает идеально прозрачным. Всегда здесь витают триллионы мельчайших капелек воды, пыли, дыма и т.п., что является причиной такого явления как дымка. Давайте создадим эффект дымки и для нашей сцены. Перейдите в режим работы Animation, затем активируйте вкладку Cameras и здесь выделите строку с названием нашей камеры MyPersona. В появившихся свойствах камеры вверху найдите и нажмите кнопку On радом со словом Fog. Ниже можно выбрать тип дымки (линейный режим затухания, экспоненциальный режим 1 и 2). Еще ниже находится прямоугольник с образцом цвета для дымки, сделав клик мышкой на нем можно ввести числовые значения другого цветового оттенка. Я сделал дымку слегка голубоватой, Вы можете попробовать другие цвета (Fog Color R=200, G=240, B=255).  
    Попробуйте поэкспериментировать с цветом и режимом наложения дымки сами, чтобы найти оптимальный вариант (см. рис. L2.18 ). Замечу только, что линейное затухание лучше применять для сильно затуманенных сцен, например, типа сцены туманного утра или сцена большого города с высоты птичьего полета. Дымка с линейным затуханием настраивается при помощи изменения двух параметров: первого дальности, при которой начинается действие дымки и второго дальности, при которой видимость удаленных элементов сцены полностью пропадает. Что касается реализма имитации дымки, то на мой взгляд экспоненциальное затухание выглядит более правдоподобно, хотя это и тяжелее для компьютера при его расчете. Я в своей сцене использовал экспоненциальный туман как более подходящий. Какой используете Вы на Ваше усмотрение!
   Ну вот, наигравшись вдоволь с туманом, пора перейти к созданию облаков.
Перейдите в режим работы
Channel, в Templates найдите и поместите в Channel Graph канал Square (Templates 3D Items Objects Square). При помощи окна Channel Properties переименуйте его в Clouds. Перейдите в режим Animation, активизируйте вкладку Objects и выделите строку с названием Clouds. Измените размер объекта Clouds, введя в поля ввода Scale по осям X,Y число «1300», а величину Z оставьте без изменений («1»). Активируем Rotate и введем для угла Pitch Angle значение «90». Активировав Move переместим наш облачный слой выше над ландшафтом, введя в поле Y число «60». Перейдем в режим Object и активируем вкладку Material. Все три величины параметров материала Clouds Diffuse и Emissive выставим в «1». Перейдем на вкладку Texture. Загрузим теперь в Quest3D те текстуры облачного слоя, которые мы с Вами приготовили ранее (clouds.jpg и clouds_alpha.jpg). В качестве целевой группы Texture Channel Group выбираем группу start. Жмем Load и загружаем текстуру clouds.jpg. Два раза кликнем мышью на изображении загруженной текстуры, в появившемся окне свойств текстуры жмем кнопку Load Alpha и загружаем clouds_alpha.jpg и соглашаемся ОК (см. рис. L2.19., L2.20. ).           
Рис. L2.19.
Рис. L2.20.
Рис. L2.21.
    Выставляем следующие параметры наложения текcтуры: UV Set 1, U=V=0, Scale UV U=V=0.5, Tilling, Mapping Planar Z. Активировав вкладку Surface выставим такие параметры смешивания (сверху вниз): Source=ONE, Destination=INVSRCCOLOR, Enabled=on, Z-buffer settings: Check Z-buff=on, Write Z-buff=on, Z-bias=0. То, что у Вас должно получиться, показано на рис. L2.21. Протестировав сцену в режиме выполнения можно заметить, что теперь у нас в сцене появились облака (см. рис. L2.22 ). Жаль, что они неподвижные и сцена выглядит застывшей как на фотографии, но…. Нет ничего невозможного, а тем более в виртуальном мире.
    Давайте оживим наш маленький мир, заставив облака двигаться по небосклону.
Добавим в
Channel Graph канал OneTime, который находится в Templates Logic OneTime, и прилинкуем его к каналу Start3DScene. Сюда же добавим канал Timer Command (Templates Timing Timer Command ) и два канала Value (Templates Variables Value ). Переименуем один из каналов Value в Start, а другой в End. Сделаем двойной клик мышкой на канале End и введем новое значение «30000». Прилинкуем каналы Start и End к каналу Timer Command в порядке слева направо, затем проведем линк от Timer Command к каналу OneTime ( см. рис. L2.23 ).   
Рис. L2.22.                                                                                                                Рис. L2.23.
    Войдем в папку DX8 Motion объекта Clouds и добавим из Templates канал TimerValue (Templates Timing TimerValue ). Сделаем двойной щелчок мышкой на TimerValue и в появившемся диалоговом окне введем: New.. "Clouds Timer" OK (см. рис. L2.24 ). Прилинкуем этот канал к третьему справа каналу, который в свою очередь прилинкован к каналу Rotation Vector объекта Clouds. Выходим из папки DX8 Motion, сделаем двойной клик на канале Timer Command и в появившемся окне выбираем в качестве таймера наш CloudsTimer, а в выпадающем списке ниже ищем и выбираем строку Play&Loop, затем жмем кнопку Send Now. Опять войдем в папку DX8 Motion объекта Clouds и сделаем двойной щелчок мышью на крайнем справа канале, прилинкованному к Rotation Vector, чтобы вызвать окно Envelope Editor данного канала.
В этом окне, выделив первую (слева) точку вводим
Horiz.value=0, Vert.value=6.28. Выделив вторую (справа) вводим Horiz.value=30000, Vert.value=-10 (см. рис. L2.25 ). Выходим из папки DX8 Motion. Сохраняем проект (File Save All ).   
Рис. L2.24.
Рис. L2.25.
    Теперь запустив проект на выполнение (Run ) и понаблюдав за облаками заметим, что они начали медленно перемещаться, как и в реальной жизни. На этой «волне» я, пожалуй, закончу излагать часть 1 урока 2, чтобы у Вас было время уложить это все в голове. В следующей 2-ой части урока 2 мы с Вами продолжим работу над нашим проектом. Мы добавим в сцену растительность, воду и некоторые спецэффекты, что сделает нашу сцену с ландшафтом еще более реалистичной.

   До следующей встречи!   
Используются технологии uCoz