Звездная болезнь
Звездная болезнь
Почему все новички начинают освоение программ моделирования с создания космических сцен? Этот вопрос я слышу довольно часто. Ответ прост — легко моделировать то, что никто не видел; космические корабли, звездные системы, черные дыры. Описание создания обыкновенной комнаты в коммуналке займет целую книгу по фотореализму, а для того чтобы создать вселенную, достаточно прочитать небольшую статью. Эту статью Вы сейчас держите в руках, поэтому загружайте 3D Studio MAX — и за работу. Начнем со звезд...
Звезды бывают разные. Чаще всего звезды — обыкновенные точки, хаотически разбросанные по небу. При создании статичного изображения в этом случае применяют Environmental-текстуру (Rendering -> Environment... -> Environment Map) с типом наложения карты (Mapping) Screen. В анимации же эти звезды должны двигаться при перемещении камеры. Достигается это тем, что они накладываются на какой-либо объект, внутрь которого помещена камера. А сама текстура может быть как растровым изображением, так и генерироваться математически.
Давайте рассмотрим создание звездного неба при помощи текстуры Noise.
Итак, Вы познакомились с методом создания звезд при помощи фильтра Noise. А теперь давайте попробуем наложить на наш объект растровое изображение. Небольшая проблема заключается только в том, что для этого нам надо генерировать текстурные координаты.
Признайтесь, это было совсем просто. Вам даже не пришлось самостоятельно создавать необходимую текстуру — разработчики об этом позаботились. Стандартная поставка программы включает в себя 21 текстуру на космическую тему. Все они расположены в каталоге [3DSMAX3 Root]\MAPS\SPACE. Только учтите, что некоторые из них имеют разрешение 3000x3300 и использование их при создании анимации не будет оптимальным. Еще одна проблема с использованием этих текстур заключается в том, что они не являются бесшовными. Таким образом, использование, к примеру, изображения туманности в нашем случае просто невозможно. Давайте создадим туманность самостоятельно.
Хочу предупредить Вас, что источники света, использованные в этом примере, должны влиять только на туманность, но никак не на остальные объекты. Для этого надо при помощи кнопки Include включить в освещаемые объекты сферу с туманностью. Соответственно, другие объекты освещаться не будут.
Звезды, конечно, хорошо, но не мешало бы добавить еще что-нибудь. Когда-то я рассказывал, как создавать солнце. Для тех, кто не помнит/не читал, я повторю это еще раз.
Солнце готово. Теперь к этому солнцу добавим планеты. Планета — это обыкновенная сфера с текстурой. Из космоса на поверхности практически не видна рельефность, поэтому просто сфера — это скучно. Займемся созданием атмосферы.
Космический мусор — это не только человек с полосатой палочкой и на звездолете, это также и всевозможные астероиды, осколки планет и звездная пыль. Начнем с астероида.
Напоследок создадим довольно-таки глобальный объект — спиральную галактику.
Галактика готова, осталось только импортировать ее в общую сцену. А в качестве домашнего задания предлагаю Вам создать у этой галактики светящийся центр из объекта PCloud.
Юрий Заяц
reflector@reflectorstudio.com
(c) компьютерная газета
Почему все новички начинают освоение программ моделирования с создания космических сцен? Этот вопрос я слышу довольно часто. Ответ прост — легко моделировать то, что никто не видел; космические корабли, звездные системы, черные дыры. Описание создания обыкновенной комнаты в коммуналке займет целую книгу по фотореализму, а для того чтобы создать вселенную, достаточно прочитать небольшую статью. Эту статью Вы сейчас держите в руках, поэтому загружайте 3D Studio MAX — и за работу. Начнем со звезд...
Звезды бывают разные. Чаще всего звезды — обыкновенные точки, хаотически разбросанные по небу. При создании статичного изображения в этом случае применяют Environmental-текстуру (Rendering -> Environment... -> Environment Map) с типом наложения карты (Mapping) Screen. В анимации же эти звезды должны двигаться при перемещении камеры. Достигается это тем, что они накладываются на какой-либо объект, внутрь которого помещена камера. А сама текстура может быть как растровым изображением, так и генерироваться математически.
Давайте рассмотрим создание звездного неба при помощи текстуры Noise.
- В центре видового окна Top создайте геоид (Create -> Geometry -> Standard Primitives -> GeoSphere) с радиусом в 500 единиц. Пронормируйте изображение при помощи нажатия на кнопку Zoom Extents All. Геоид будет ширмой, на которую затем будет нанесена текстура.
- В этом примере при помощи вида из окна Perspective много сделать нельзя, поэтому необходимо установить камеру. Нажмите на кнопку Cameras во вкладке Create и установите камеру Target (направленную) так, чтобы она полностью находилась внутри геоида. Сделайте активным видовое окно Perspective. На клавиатуре нажмите кнопку <C> для того, чтобы включить вид из камеры. В разворачивающемся списке Parameters камеры (надеюсь, он еще активен, иначе придется забираться в Modify -> Parameters) установите 28mm объектив (Stock Lenses).
- Честно говоря, вид из камеры не впечатляет — это единственная горизонтальная полоса. Почему? Дело в том, что у материала геоида выключено свойство 2-Sided. Проще всего было бы включить эту опцию, но мы поступим хитрее, что затем сэкономит нам время при визуализации. Инвертирование нормалей. В видовом окне выберите объект GeoSphere01. Кликните по нему правой кнопкой мыши. В выпавшем меню выберите пункт Convert to Editable Mesh. Переключитесь во вкладку Modify. В свитке Selection утопите кнопку Face. В любом видовом окне выберите все полигоны объекта (они станут красного цвета). Прокрутите свиток до конца и найдите пункт Surface Properties. Нажмите кнопку Flip для инвертирования нормалей.
- Ну вот, теперь вид из камеры имеет радикально зеленый цвет (геоид зеленый попался при создании). Сохраните сцену на диске под именем stars01.max, к ней мы вернемся позже, когда будем рассматривать растровые текстуры. Нажатием кнопки <M> на клавиатуре откройте окно редактора материалов. Активизируйте первый слот (выбран по умолчанию). В свитке Blinn Basic Parameters нажмите на кнопку около надписи Diffuse. В окне Material/Map Browser выберите тип материала Noise.
- Теперь нам осталось только настроить параметры шумовой текстуры. В разворачивающейся панели Noise Parameters переключите селектор Noise Type в положение Fractal. Увеличьте Size до 4, а нижний порог шума (Noise Threshold -> Low) до 0,6. Нажмите кнопку Go to Parent для того, чтобы вернуться на верхний уровень. Разверните панель Maps. Перетащите текстуру с кнопки Diffuse Color на кнопку около надписи Self-Illumination. В окне Copy (Instance) Map переключите селектор Method в положение Instance и нажмите кнопку Ok. В видовом окне выберите геоид и нажмите кнопку Assign Material to Selection редактора материалов. Все, шумовая текстура готова. Не забудьте сохранить этот файл, нам еще придется с ним поработать.
Итак, Вы познакомились с методом создания звезд при помощи фильтра Noise. А теперь давайте попробуем наложить на наш объект растровое изображение. Небольшая проблема заключается только в том, что для этого нам надо генерировать текстурные координаты.
- Загрузите ранее созданную сцену stars01.max. Выберите геоид и перейдите во вкладку Modify. В свитке Modifiers нажмите на кнопку UVW Map. В настройках параметров модификатора переключите селектор Mapping на пункт Spherical.
- Откройте окно редактора материалов и в свитке Maps нажмите на кнопку около параметра Diffuse Color. В браузере карт переключите селектор Browse From в положение Mlt. Library. В списке материалов найдите стандартную карту со звездами, входящую в комплект поставки 3D Studio MAX — Space_Hi-Res_Stars (Stars10.jpg) Кликните на этот пункт и нажмите Ok. Убедившись, что значение Coordinates -> Mapping равно Explicit Map Channel, нажмите кнопку Assign Material to Selection.
Признайтесь, это было совсем просто. Вам даже не пришлось самостоятельно создавать необходимую текстуру — разработчики об этом позаботились. Стандартная поставка программы включает в себя 21 текстуру на космическую тему. Все они расположены в каталоге [3DSMAX3 Root]\MAPS\SPACE. Только учтите, что некоторые из них имеют разрешение 3000x3300 и использование их при создании анимации не будет оптимальным. Еще одна проблема с использованием этих текстур заключается в том, что они не являются бесшовными. Таким образом, использование, к примеру, изображения туманности в нашем случае просто невозможно. Давайте создадим туманность самостоятельно.
- Звезды у нас уже есть. Загрузите сцену, в которой Вы создали их при помощи шумовой текстуры. Выберите объект GeoSphere01. В главном меню выполните команду Edit -> Clone для создания копии объекта. В появившемся окне Clone Options установите селектор Object на пункт Copy и нажмите кнопку Ok.
- Уменьшите полученный объект до 90%, используя функцию Uniform Scale. Перейдите во вкладку Modify. В группе Modifiers нажмите на кнопку Noise для применения шумового модификатора. В группе Noise разворачивающейся панели Parameters выставьте флажок Fractal. Для параметра Roughness установите максимальное значение, равное 1. В группе Strength установите величину шума в 50 единиц по всем осям.
- Откройте окно редактора материалов. Выберите свободный второй слот. В группе Shader Basic Parameters измените тип шейдера с Blinn на Phong. В группе Self-Illumination свитка Phong Basic Parameters снимите флажок Color. Обнулите значение непрозрачности (Opacity). Нажатием на цветной прямоугольник около надписи Diffuse установите цвет RGB(0,0,0). Аналогично для значения Specular установите цвет RGB(255,255,255).
- В группе Specular Highlights установите следующие параметры: Specular Level — 75, Glossiness — 15, Soften — 0,6. Нажмите на кнопку около надписи Glossiness. В списке материалов появившегося окна Material/Map Browser найдите пункт Noise и кликните на него дважды. Займемся настройкой параметров шумовой текстуры. В свитке Noise Parameters переключите селектор Noise Type в положение Turbulence. Уменьшите Size до 10, а Noise Threshold -> Low увеличьте до 0,5. Убедитесь, что объект GeoSphere02 выбран и нажмите кнопку Assign Material to Selection.
- Установите камеру так, чтобы одна находилась внутри двух сфер, и выполните тестовый рендеринг. Посмотрите, созданный материал при визуализации дает белое пятно неправильной формы. Дело в том, что без источников света туманность Вы не получите. Зато при помощи точечных источников можно создавать любые причудливые формы. Давайте добавим в сцену этот эффект.
- Вернитесь во вкладку Create и нажмите на кнопку Lights. В любом месте внутри GeoSphere02 создайте точечный источник света Omni. В разворачивающейся панели General Parameters установите цвет источника (параметры R, G и B) RGB(255,54,224). Уменьшите Multiplier до 0,3.
- Около первого источника создайте второй с аналогичным значением Multiplier. Его цвет будет иметь значение RGB(101,223,255). Готово. Визуализируем сцену. То, что надо!
Хочу предупредить Вас, что источники света, использованные в этом примере, должны влиять только на туманность, но никак не на остальные объекты. Для этого надо при помощи кнопки Include включить в освещаемые объекты сферу с туманностью. Соответственно, другие объекты освещаться не будут.
Звезды, конечно, хорошо, но не мешало бы добавить еще что-нибудь. Когда-то я рассказывал, как создавать солнце. Для тех, кто не помнит/не читал, я повторю это еще раз.
- В центре нашей большой сферы создайте точечный источник света (Create -> Lights -> Standart -> Omni). В выпадающем списке General Parameters измените его цвет на RGB(255,128,0) — оранжевый. Разверните список Attenuation Parameters и в группе Far Attenuation установите флажки Use и Show.
- Перейдите во вкладку Create и разверните список Atmosphere & Effects. Нажмите на кнопку Add. В окне Add Atmosphere of Effect выберите пункт Volume Light и нажмите Ok. Выделите появившийся пункт Volume Light в списке. Нажмите кнопку Setup для вызова окна Environment.
- Выделите надпись Volume Light списка Atmosphere -> Effects. В окне появится дополнительная вкладка Volume Light Parameters. Измените Attenuation Color на RGB(0,0,0). Обнулите параметр Atten. Mult. Селектор Filter Shadows переключите в положение Low. В группе Attenuation установите стартовое значение 50%. Выставьте флаг Noise On группы Noise. Увеличьте Amount до 0,5. Обнулите значение High порога шума Noise Threshold. Uniformity увеличьте до 0,5.
- Если Вы будете анимировать изображение солнца, то перетащите счетчик кадров на начальный кадр и нажмите кнопку Animate. Установите счетчик в конечное положение и измените значение Phase на некоторую величину, например, на разность номеров конечного и начального кадров. Если хотите, то можете добавить ветер, установив некоторое, отличное от нуля, число в параметр Wing Strength. Отожмите кнопку Animate и закройте окно Environment.
Солнце готово. Теперь к этому солнцу добавим планеты. Планета — это обыкновенная сфера с текстурой. Из космоса на поверхности практически не видна рельефность, поэтому просто сфера — это скучно. Займемся созданием атмосферы.
- Выберите сферу, являющуюся поверхностью планеты. Удерживая Shift на клавиатуре, сделайте ей Scale так, чтобы новая сфера была на несколько единиц больше старой. Это и будет атмосфера планеты. В окне Clone Options установите селектор группы Object в положение Copy и нажмите кнопку Ok.
- Откройте окно редактора материалов и выберите свободный слот. Для цветов Ambient и Diffuse установите RGB(0,0,0). В группе Specular Highlights обнулите параметры Specular Level и Glossiness.
- Раскройте разворачивающуюся панель Maps и нажмите кнопку напротив надписи Diffuse Color. В окне Material/Map Browser дважды кликните на пункте Noise. В группе Coordinates свитка Coordinates установите выпадающий список Source в положение Explicit Map Channel. Измените значения тайлинга (Tiling) — 2 по оси U, 6 для V и 0 для W.
- В свитке Noise Parameters уменьшите Size до 0,1, а Noise Threshold -> Low увеличьте до 0,35. Нажатием Go to Parent вернитесь на верхний уровень текстуры. Перетащите кнопку Map #n (Noise) на кнопку напротив надписи Opacity. Убедитесь, что селектор в окне Copy (Instance) Map установлен в положение Instance и нажмите кнопку Ok. Нажмите кнопку Assign Material to Selection.
- Выполните тестовый рендеринг. Если атмосфера выражена слабо, то отрегулируйте параметр Size шумовых настроек или увеличьте самосвечение материала — Phong Basic Parameters -> Self-Illumination -> Color (выставлен) -> RGB(x,x,x). Аналогичным способом попробуйте создать под первым слоем облаков второй, с другими настройками тайлинга.
- Теперь у нас есть и планета. Объедините планету с атмосферой в группу, выполнив Group -> Group. В диалоговом окне выбора имени объекта нажмите Ok. Переключитесь во вкладку Hierarchy. В свитке Adjust Pivot утопите кнопку Affect Pivot Only группы Move/Rotate/Scale. В видовом окне переместите опорную точку (pivot) в центр солнца. Отожмите кнопку Affect Pivot Only и нажмите кнопку Array (объект Group01 выбран, видовое окно Top активно).
- В группе Array Transformation: World Coordinates (Use Selection Center) для Incremental-координат установите значение Z(Rotate) равным 36. Убедитесь, что параметр Count группы Array Dimensions равен 10, а селектор находится в положении 1D. Нажмите кнопку Ok. Теперь планет стало 10, и все они расположены по кругу. Вручную растащите их на разные орбиты, измените диаметр и текстуры.
Космический мусор — это не только человек с полосатой палочкой и на звездолете, это также и всевозможные астероиды, осколки планет и звездная пыль. Начнем с астероида.
- Создайте новую сцену. В видовом окне Top создайте сферу с радиусом в 100 единиц. Во вкладке Parameters уменьшите значение Segments до 8, а затем установите флажок Generate Mapping Coords. Эта обрубленная сфера скоро станет полноценным астероидом.
- Перейдите во вкладку Modify и примените к объекту Sphere01 модификатор Noise. В свитке Parameters включите флажок Fractal группы Noise. В группе Strength установите значения шума по оси X равным 25, Y — 50, Z — 75.
- Прокрутите свиток вверх и примените к сфере еще один модификатор — Edit Mesh. На панели Selection утопите кнопку Face. В любом видовом окне выделите всю модель астероида (объект станет красным). Среди бесчисленных настроек модификатора найдите кнопку Tessellate (Мозаика). Нажмите ее. Все грани объекта разделились на несколько частей, и теперь астероид представляет собой бесформенное тело. Над ним еще предстоит поработать.
- Еще раз применим к астероиду модификатор Noise. При включеном флажке Fractal установите величину шума по осям X=25, Y=35, Z=50. Небольшое дополнение — в группе Noise увеличьте значение Roughness (Грубость).
- Этот этап полностью повторяет шаг 3. Еще раз примените к астероиду модификатор Edit Mesh с параметром Tessellate. Острые углы, оставшиеся после применения шумового модификатора, сгладились, однако детализации все равно не хватает. Если позволяют вычислительные мощности, то примените модификатор еще пару раз.
- В группе Modifiers нажмите на кнопку More и в списке модификаторов найдите пункт Displace. Объясню для тех, кто не знает, что это такое. Displace действует на геометрию объекта при помощи текстуры, смещая вершины в те либо другие точки. Таким образом, используя карту, можно придать поверхности астероида рельефность. В группе Image свитка Parameters нажмите кнопку Bitmap и выберите текстуру, находящуюся в файле <3DSMAX3 Root>\Maps\creatures\Displace.tif. В группе Displacement увеличьте параметр Strength до 50. Для астероида нам понадобится сферический маппинг, но для данной текстуры я ограничился планарным (не изменял параметры группы Map). Для того чтобы текстура проявлялась на нужной стороне объекта, я переключил селектор Alignment в положение Y. Хм, так вот ты какой, северный олень. Такую рожу и в страшном сне не увидишь...
- Найдите подходящую скалистую текстуру и наложите на Displace-карту. Такая, думаю, подойдет: <3DSMAX3 Root>\Maps\ground\Grydirt2.jpg. Переключите селектор Map в положение Spherical, а также уменьшите Strength до 10 единиц.
- Откройте окно редактора материалов и выберите свободный слот. Разверните свиток Maps и нажмите кнопку напротив Diffuse Color. В браузере материалов дважды кликните на надпись Bitmap и выберите текстуру из файла Grydirt2.jpg. Нажмите кнопку Assign Material to Selection и закройте редактор материалов.
- Выполните тестовый рендеринг. Астероид немного плоский? Мощный источник света на заднем плане решит все проблемы.
Напоследок создадим довольно-таки глобальный объект — спиральную галактику.
- Во вкладке Create нажмите кнопку Geometry и установите выпадающий список в положение Particle Systems. В видовом окне Front создайте объект Spray c размерами эмиттера 50 на 20. В группе Particles свитка Parameters увеличьте Drop Size до 15, а Speed уменьшите до 2 единиц. Увеличьте Render Count до 1000 частиц. В группе Timing установите параметры Start и Live в -200 и 200 соответственно.
- Нам необходимо "закрутить" частицы Spray. Сложность заключается в том, что по умолчанию 3D Studio MAX отслеживает движение только в течение длительности анимации. Если Вы решите сделать анимацию, то получите результат, аналогичный этому рисунку.
- Один, как говорится, в поле не воин. К галактике надо добавить еще несколько спиралей. Если объект Spray01 не выбран, то выберите его и сделайте активным видовое окно Front. Нажмите кнопку Array. В столбце Incremental группы Array Transformation: Screen Coordinates (Use Pivot Point Center) установите значение по оси Z строки Rotate равное 72. В группе Array Dimension уменьшите параметр Count до 5 и нажмите кнопку Ok.
- Активизируйте объект Spray01 и, удерживая кнопку Shift, поверните его на несколько градусов по оси Z (можно даже просто сделать Edit -> Clone). В окне Clone Options нажмите кнопку Ok. Переключитесь во вкладку Modify и увеличьте Emitter Width c 50 до 110. Также не забудьте понизить Particles -> Render Count до 500 частиц. При помощи инструмента Array создайте 5 объектов с этими настройками.
- В видовом окне выберите все объекты типа Spray. Откройте окно редактора материалов и, активизировав пустой слот, нажмите кнопку Assign Material to Selection. Измените кнопку Material Effects Channel с нулевой на первую. В свитке Blinn Basic Parameters измените Diffuse-цвет на светло-синий — RGB(0,128,255). Обнулите параметры Specular Level и Glossiness. Снимите флажок Self-Illumination и увеличьте самосвечение до 100. Закройте редактор материалов.
- Выполните Rendering -> Video Post... Создайте очередь событий из Scene Event, Filter Event (Lens Effects Glow) и Output Event. В дереве дважды кликните на пункте Filter Event и в открывшемся окне нажмите кнопку Setup группы Filter Plug-In. Выставьте флажок Effects ID. Значение этого параметра должно быть равно 1. Флажок Filter установите в позицию Perimeter Alpha.
- Переключитесь во вкладку Preferences. В группе Effect уменьшите размер (Size) свечения до 3. В группе Color уменьшите Intensity до 50. Закройте окно настроек фильтра. Не закрывая окна Video Post, кликните в видовом окне на выделенных спиралях правой кнопкой мыши. В выпадающем меню выберите пункт Properties... Измените параметр General -> Object Information -> G-Buffer -> Object Channel — установите его равным 1. Нажмите Ok. В окне Video Post нажмите кнопку Execute Sequence и выполните визуализацию.
Нажмите кнопку Animate и переместите счетчик кадров на последний кадр анимации. Утопите кнопку Angle Snap Toggle и в видовом окне Front поверните Spray на 90 градусов по часовой стрелке. Отожмите кнопку Animation. Откройте окно Track View (Track View -> Open Track View). Полностью разверните дерево объектов и найдите свойство Rotation. Выделите этот трек. Нажмите кнопку Parameter Curve Out-of-Range Types. В одноименном окне кликните на окошке Relative Repeat. То, что доктор прописал! Теперь галактика изгибается полностью. Закройте окно Track View.
Галактика готова, осталось только импортировать ее в общую сцену. А в качестве домашнего задания предлагаю Вам создать у этой галактики светящийся центр из объекта PCloud.
Юрий Заяц
reflector@reflectorstudio.com
(c) компьютерная газета
Компьютерная газета. Статья была опубликована в номере 13 за 2001 год в рубрике soft :: графика