Звездная болезнь

Звездная болезнь
Почему все новички начинают освоение программ моделирования с создания космических сцен? Этот вопрос я слышу довольно часто. Ответ прост — легко моделировать то, что никто не видел; космические корабли, звездные системы, черные дыры. Описание создания обыкновенной комнаты в коммуналке займет целую книгу по фотореализму, а для того чтобы создать вселенную, достаточно прочитать небольшую статью. Эту статью Вы сейчас держите в руках, поэтому загружайте 3D Studio MAX — и за работу. Начнем со звезд...

Звезды бывают разные. Чаще всего звезды — обыкновенные точки, хаотически разбросанные по небу. При создании статичного изображения в этом случае применяют Environmental-текстуру (Rendering -> Environment... -> Environment Map) с типом наложения карты (Mapping) Screen. В анимации же эти звезды должны двигаться при перемещении камеры. Достигается это тем, что они накладываются на какой-либо объект, внутрь которого помещена камера. А сама текстура может быть как растровым изображением, так и генерироваться математически.

Давайте рассмотрим создание звездного неба при помощи текстуры Noise.

  1. В центре видового окна Top создайте геоид (Create -> Geometry -> Standard Primitives -> GeoSphere) с радиусом в 500 единиц. Пронормируйте изображение при помощи нажатия на кнопку Zoom Extents All. Геоид будет ширмой, на которую затем будет нанесена текстура.
  2. В этом примере при помощи вида из окна Perspective много сделать нельзя, поэтому необходимо установить камеру. Нажмите на кнопку Cameras во вкладке Create и установите камеру Target (направленную) так, чтобы она полностью находилась внутри геоида. Сделайте активным видовое окно Perspective. На клавиатуре нажмите кнопку <C> для того, чтобы включить вид из камеры. В разворачивающемся списке Parameters камеры (надеюсь, он еще активен, иначе придется забираться в Modify -> Parameters) установите 28mm объектив (Stock Lenses).
  3. Честно говоря, вид из камеры не впечатляет — это единственная горизонтальная полоса. Почему? Дело в том, что у материала геоида выключено свойство 2-Sided. Проще всего было бы включить эту опцию, но мы поступим хитрее, что затем сэкономит нам время при визуализации. Инвертирование нормалей. В видовом окне выберите объект GeoSphere01. Кликните по нему правой кнопкой мыши. В выпавшем меню выберите пункт Convert to Editable Mesh. Переключитесь во вкладку Modify. В свитке Selection утопите кнопку Face. В любом видовом окне выберите все полигоны объекта (они станут красного цвета). Прокрутите свиток до конца и найдите пункт Surface Properties. Нажмите кнопку Flip для инвертирования нормалей.
  4. Ну вот, теперь вид из камеры имеет радикально зеленый цвет (геоид зеленый попался при создании). Сохраните сцену на диске под именем stars01.max, к ней мы вернемся позже, когда будем рассматривать растровые текстуры. Нажатием кнопки <M> на клавиатуре откройте окно редактора материалов. Активизируйте первый слот (выбран по умолчанию). В свитке Blinn Basic Parameters нажмите на кнопку около надписи Diffuse. В окне Material/Map Browser выберите тип материала Noise.
  5. Теперь нам осталось только настроить параметры шумовой текстуры. В разворачивающейся панели 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. А теперь давайте попробуем наложить на наш объект растровое изображение. Небольшая проблема заключается только в том, что для этого нам надо генерировать текстурные координаты.

  1. Загрузите ранее созданную сцену stars01.max. Выберите геоид и перейдите во вкладку Modify. В свитке Modifiers нажмите на кнопку UVW Map. В настройках параметров модификатора переключите селектор Mapping на пункт Spherical.
  2. Откройте окно редактора материалов и в свитке 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 и использование их при создании анимации не будет оптимальным. Еще одна проблема с использованием этих текстур заключается в том, что они не являются бесшовными. Таким образом, использование, к примеру, изображения туманности в нашем случае просто невозможно. Давайте создадим туманность самостоятельно.

  1. Звезды у нас уже есть. Загрузите сцену, в которой Вы создали их при помощи шумовой текстуры. Выберите объект GeoSphere01. В главном меню выполните команду Edit -> Clone для создания копии объекта. В появившемся окне Clone Options установите селектор Object на пункт Copy и нажмите кнопку Ok.
  2. Уменьшите полученный объект до 90%, используя функцию Uniform Scale. Перейдите во вкладку Modify. В группе Modifiers нажмите на кнопку Noise для применения шумового модификатора. В группе Noise разворачивающейся панели Parameters выставьте флажок Fractal. Для параметра Roughness установите максимальное значение, равное 1. В группе Strength установите величину шума в 50 единиц по всем осям.
  3. Откройте окно редактора материалов. Выберите свободный второй слот. В группе Shader Basic Parameters измените тип шейдера с Blinn на Phong. В группе Self-Illumination свитка Phong Basic Parameters снимите флажок Color. Обнулите значение непрозрачности (Opacity). Нажатием на цветной прямоугольник около надписи Diffuse установите цвет RGB(0,0,0). Аналогично для значения Specular установите цвет RGB(255,255,255).
  4. В группе 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.
  5. Установите камеру так, чтобы одна находилась внутри двух сфер, и выполните тестовый рендеринг. Посмотрите, созданный материал при визуализации дает белое пятно неправильной формы. Дело в том, что без источников света туманность Вы не получите. Зато при помощи точечных источников можно создавать любые причудливые формы. Давайте добавим в сцену этот эффект.
  6. Вернитесь во вкладку Create и нажмите на кнопку Lights. В любом месте внутри GeoSphere02 создайте точечный источник света Omni. В разворачивающейся панели General Parameters установите цвет источника (параметры R, G и B) RGB(255,54,224). Уменьшите Multiplier до 0,3.
  7. Около первого источника создайте второй с аналогичным значением Multiplier. Его цвет будет иметь значение RGB(101,223,255). Готово. Визуализируем сцену. То, что надо!



Хочу предупредить Вас, что источники света, использованные в этом примере, должны влиять только на туманность, но никак не на остальные объекты. Для этого надо при помощи кнопки Include включить в освещаемые объекты сферу с туманностью. Соответственно, другие объекты освещаться не будут.

Звезды, конечно, хорошо, но не мешало бы добавить еще что-нибудь. Когда-то я рассказывал, как создавать солнце. Для тех, кто не помнит/не читал, я повторю это еще раз.

  1. В центре нашей большой сферы создайте точечный источник света (Create -> Lights -> Standart -> Omni). В выпадающем списке General Parameters измените его цвет на RGB(255,128,0) — оранжевый. Разверните список Attenuation Parameters и в группе Far Attenuation установите флажки Use и Show.
  2. Перейдите во вкладку Create и разверните список Atmosphere & Effects. Нажмите на кнопку Add. В окне Add Atmosphere of Effect выберите пункт Volume Light и нажмите Ok. Выделите появившийся пункт Volume Light в списке. Нажмите кнопку Setup для вызова окна Environment.
  3. Выделите надпись 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.
  4. Если Вы будете анимировать изображение солнца, то перетащите счетчик кадров на начальный кадр и нажмите кнопку Animate. Установите счетчик в конечное положение и измените значение Phase на некоторую величину, например, на разность номеров конечного и начального кадров. Если хотите, то можете добавить ветер, установив некоторое, отличное от нуля, число в параметр Wing Strength. Отожмите кнопку Animate и закройте окно Environment.

Солнце готово. Теперь к этому солнцу добавим планеты. Планета — это обыкновенная сфера с текстурой. Из космоса на поверхности практически не видна рельефность, поэтому просто сфера — это скучно. Займемся созданием атмосферы.

  1. Выберите сферу, являющуюся поверхностью планеты. Удерживая Shift на клавиатуре, сделайте ей Scale так, чтобы новая сфера была на несколько единиц больше старой. Это и будет атмосфера планеты. В окне Clone Options установите селектор группы Object в положение Copy и нажмите кнопку Ok.
  2. Откройте окно редактора материалов и выберите свободный слот. Для цветов Ambient и Diffuse установите RGB(0,0,0). В группе Specular Highlights обнулите параметры Specular Level и Glossiness.
  3. Раскройте разворачивающуюся панель Maps и нажмите кнопку напротив надписи Diffuse Color. В окне Material/Map Browser дважды кликните на пункте Noise. В группе Coordinates свитка Coordinates установите выпадающий список Source в положение Explicit Map Channel. Измените значения тайлинга (Tiling) — 2 по оси U, 6 для V и 0 для W.
  4. В свитке 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.



  5. Выполните тестовый рендеринг. Если атмосфера выражена слабо, то отрегулируйте параметр Size шумовых настроек или увеличьте самосвечение материала — Phong Basic Parameters -> Self-Illumination -> Color (выставлен) -> RGB(x,x,x). Аналогичным способом попробуйте создать под первым слоем облаков второй, с другими настройками тайлинга.
  6. Теперь у нас есть и планета. Объедините планету с атмосферой в группу, выполнив Group -> Group. В диалоговом окне выбора имени объекта нажмите Ok. Переключитесь во вкладку Hierarchy. В свитке Adjust Pivot утопите кнопку Affect Pivot Only группы Move/Rotate/Scale. В видовом окне переместите опорную точку (pivot) в центр солнца. Отожмите кнопку Affect Pivot Only и нажмите кнопку Array (объект Group01 выбран, видовое окно Top активно).
  7. В группе Array Transformation: World Coordinates (Use Selection Center) для Incremental-координат установите значение Z(Rotate) равным 36. Убедитесь, что параметр Count группы Array Dimensions равен 10, а селектор находится в положении 1D. Нажмите кнопку Ok. Теперь планет стало 10, и все они расположены по кругу. Вручную растащите их на разные орбиты, измените диаметр и текстуры.



Космический мусор — это не только человек с полосатой палочкой и на звездолете, это также и всевозможные астероиды, осколки планет и звездная пыль. Начнем с астероида.

  1. Создайте новую сцену. В видовом окне Top создайте сферу с радиусом в 100 единиц. Во вкладке Parameters уменьшите значение Segments до 8, а затем установите флажок Generate Mapping Coords. Эта обрубленная сфера скоро станет полноценным астероидом.
  2. Перейдите во вкладку Modify и примените к объекту Sphere01 модификатор Noise. В свитке Parameters включите флажок Fractal группы Noise. В группе Strength установите значения шума по оси X равным 25, Y — 50, Z — 75.
  3. Прокрутите свиток вверх и примените к сфере еще один модификатор — Edit Mesh. На панели Selection утопите кнопку Face. В любом видовом окне выделите всю модель астероида (объект станет красным). Среди бесчисленных настроек модификатора найдите кнопку Tessellate (Мозаика). Нажмите ее. Все грани объекта разделились на несколько частей, и теперь астероид представляет собой бесформенное тело. Над ним еще предстоит поработать.
  4. Еще раз применим к астероиду модификатор Noise. При включеном флажке Fractal установите величину шума по осям X=25, Y=35, Z=50. Небольшое дополнение — в группе Noise увеличьте значение Roughness (Грубость).
  5. Этот этап полностью повторяет шаг 3. Еще раз примените к астероиду модификатор Edit Mesh с параметром Tessellate. Острые углы, оставшиеся после применения шумового модификатора, сгладились, однако детализации все равно не хватает. Если позволяют вычислительные мощности, то примените модификатор еще пару раз.
  6. В группе Modifiers нажмите на кнопку More и в списке модификаторов найдите пункт Displace. Объясню для тех, кто не знает, что это такое. Displace действует на геометрию объекта при помощи текстуры, смещая вершины в те либо другие точки. Таким образом, используя карту, можно придать поверхности астероида рельефность. В группе Image свитка Parameters нажмите кнопку Bitmap и выберите текстуру, находящуюся в файле <3DSMAX3 Root>\Maps\creatures\Displace.tif. В группе Displacement увеличьте параметр Strength до 50. Для астероида нам понадобится сферический маппинг, но для данной текстуры я ограничился планарным (не изменял параметры группы Map). Для того чтобы текстура проявлялась на нужной стороне объекта, я переключил селектор Alignment в положение Y. Хм, так вот ты какой, северный олень. Такую рожу и в страшном сне не увидишь...



  7. Найдите подходящую скалистую текстуру и наложите на Displace-карту. Такая, думаю, подойдет: <3DSMAX3 Root>\Maps\ground\Grydirt2.jpg. Переключите селектор Map в положение Spherical, а также уменьшите Strength до 10 единиц.
  8. Откройте окно редактора материалов и выберите свободный слот. Разверните свиток Maps и нажмите кнопку напротив Diffuse Color. В браузере материалов дважды кликните на надпись Bitmap и выберите текстуру из файла Grydirt2.jpg. Нажмите кнопку Assign Material to Selection и закройте редактор материалов.
  9. Выполните тестовый рендеринг. Астероид немного плоский? Мощный источник света на заднем плане решит все проблемы.



Напоследок создадим довольно-таки глобальный объект — спиральную галактику.

  1. Во вкладке Create нажмите кнопку Geometry и установите выпадающий список в положение Particle Systems. В видовом окне Front создайте объект Spray c размерами эмиттера 50 на 20. В группе Particles свитка Parameters увеличьте Drop Size до 15, а Speed уменьшите до 2 единиц. Увеличьте Render Count до 1000 частиц. В группе Timing установите параметры Start и Live в -200 и 200 соответственно.
  2. Нам необходимо "закрутить" частицы Spray. Сложность заключается в том, что по умолчанию 3D Studio MAX отслеживает движение только в течение длительности анимации. Если Вы решите сделать анимацию, то получите результат, аналогичный этому рисунку.



  3. Нажмите кнопку 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.

  4. Один, как говорится, в поле не воин. К галактике надо добавить еще несколько спиралей. Если объект Spray01 не выбран, то выберите его и сделайте активным видовое окно Front. Нажмите кнопку Array. В столбце Incremental группы Array Transformation: Screen Coordinates (Use Pivot Point Center) установите значение по оси Z строки Rotate равное 72. В группе Array Dimension уменьшите параметр Count до 5 и нажмите кнопку Ok.



  5. Активизируйте объект Spray01 и, удерживая кнопку Shift, поверните его на несколько градусов по оси Z (можно даже просто сделать Edit -> Clone). В окне Clone Options нажмите кнопку Ok. Переключитесь во вкладку Modify и увеличьте Emitter Width c 50 до 110. Также не забудьте понизить Particles -> Render Count до 500 частиц. При помощи инструмента Array создайте 5 объектов с этими настройками.
  6. В видовом окне выберите все объекты типа Spray. Откройте окно редактора материалов и, активизировав пустой слот, нажмите кнопку Assign Material to Selection. Измените кнопку Material Effects Channel с нулевой на первую. В свитке Blinn Basic Parameters измените Diffuse-цвет на светло-синий — RGB(0,128,255). Обнулите параметры Specular Level и Glossiness. Снимите флажок Self-Illumination и увеличьте самосвечение до 100. Закройте редактор материалов.
  7. Выполните Rendering -> Video Post... Создайте очередь событий из Scene Event, Filter Event (Lens Effects Glow) и Output Event. В дереве дважды кликните на пункте Filter Event и в открывшемся окне нажмите кнопку Setup группы Filter Plug-In. Выставьте флажок Effects ID. Значение этого параметра должно быть равно 1. Флажок Filter установите в позицию Perimeter Alpha.
  8. Переключитесь во вкладку Preferences. В группе Effect уменьшите размер (Size) свечения до 3. В группе Color уменьшите Intensity до 50. Закройте окно настроек фильтра. Не закрывая окна Video Post, кликните в видовом окне на выделенных спиралях правой кнопкой мыши. В выпадающем меню выберите пункт Properties... Измените параметр General -> Object Information -> G-Buffer -> Object Channel — установите его равным 1. Нажмите Ok. В окне Video Post нажмите кнопку Execute Sequence и выполните визуализацию.



Галактика готова, осталось только импортировать ее в общую сцену. А в качестве домашнего задания предлагаю Вам создать у этой галактики светящийся центр из объекта PCloud.


Юрий Заяц
reflector@reflectorstudio.com

(c) компьютерная газета




Компьютерная газета. Статья была опубликована в номере 13 за 2001 год в рубрике soft :: графика

©1997-2024 Компьютерная газета