Ли Венедикт. Гроза над Миром
 

Венедикт Ли. Генератор пейзажей Terragen 2

     ГЕНЕРАТОР ПЕЙЗАЖЕЙ TERRAGEN 2
 

    Мы привыкли, что программа 3D-моделирования должна быть монстром. Например, Vue - пакет для построения трехмерных пейзажей. Превосходная вещь, вытеснившая аналогичный (и первый в своем роде пакет Bryce). Дистрибутив Bryce занимал один CD, Vue - уже два. Поэтому программа практически нулевого размера (дистрибутив в 5.5 мб уместился бы на четырех дискетках!) сама по себе вызывает неподдельный интерес. Да еще существующая в бесплатном варианте - такова политика компании-разработчика Planetside Software.

    Скачиваем и устанавливаем. В этой халяве ограничен максимальный размер создаваемой картинки: 600x800, и некоторые другие параметры. Хотите больше - заплатИте и будет Вам счастье.

    Заставка и рабочее окно:

    Кстати, картинка на заставке раз от разу меняется: этот самый лес, пшеничное поле, планета - вид из космоса. Последнее - не случайно. В отличие от остальных пейзажных генераторов, мир Terragen 2 расположен не на бесконечной плоскости, а на поверхности сферы. Ее радиус, по умолчанию, равен 6378000 метров - это Вам ничего не напоминает?

    Номер последней на сегодняшний день версии: 2.1 (bild 2.1.18.1).

2. РЕЛЬЕФ (TERRAIN)

    Начнем, не мудрствуя лукаво, создавать нашу первую сцену. Интерфейс TG2 не похож ни на что. С непривычки это может поставить в тупик. Впрочем, понятно, что изначально пейзаж абсолютно гладкий (окно просмотра вверху справа), хотя в нем присутствует макет Terrain - рельеф. Видите слева узел: Heightfield shader 01. Кликаем по плюсику, появляется дочерний узел: Heightfield generate 01. Кликнем по нему и увидим внизу кнопку Generate now. Жмем...

    Вверху главного окна есть ряд кнопок, 4-я слева с надписью "R" запускает рендеринг. Сперва окно рендеринга покрывается россыпью точек - это сбор данных для расчета Global Illumination (рассеянного освещения), потом, фрагмент за фрагментом "проявляется картинка".

    Вот тут возникает желание подвигать камеру и выбрать другой ракурс. Ctrl+стрелки и колесико мыши. Для точного управления надо кликнуть по кружку с четырьмя рожками, расположенному верху справа от окна просмотра. Откроется круглая и красивая навигационная панель. Не забываем про одну тонкость! Добившись, наконец, удачного вида в окне просмотра, надо нажать самую первую кнопочку внизу него - на ней нарисована кинокамера и стрелка. Т.е. переместить рендер-камеру в выбранную позицию.

    На этой картинке одна особенность пейзажа бросается в глаза. Горы вдали резко обрываются, за ними тянется все та же плоская равнина. Это потому, что выбран способ построения рельефа Heightfield. Т.е. на ограниченном участке задается карта высот.

    Есть и другой метод: Procedural - высота в любой точке рассчитывается по неким (известным только программе) формулам. С его помощью создадим глобальный рельеф. Кликнем по родительскому узлу Heightfield shader 01 и снимем галочку Enable в левом верхнем углу панели параметров. Тем самым шейдер Heightfield будет недоступен. Окно просмотра обновится и рельеф, изображенный в нем, снова станет плоским. Теперь жмем на кнопку Add Terrain и выбираем Power Fractal. Смотрите-ка, в списке узлов добавился еще один: Fractal Terrain. Давайте потратим чуток времени и переименуем его попонятнее, например, Mountains, изменив содержимое поля Name на панели параметров.

    Иногда приходится подвинуть камеру повыше, потому что она может оказаться под поверхностью сгенерированного фрактального рельефа. Учтите, что в TG2 ось Y - направлена вверх. Если удерживая Alt прижать левую кнопку мыши, то под окном просмотра величины X, Y, Z, Slope - координаты и наклонение указанной точки, превратятся в Vx, Vy, Vz, VHeight - положение камеры относительно начала координат и высота камеры над рельефом. Если VHeight отрицательна, то камера "зарылась в землю". Добившись приемлемого вида, и не забывши нажать кнопку перемещения рендер-камеры, включаем рендер. Вот. Горы уходят вдаль, насколько хватает взгляда. Можете не верить, но они покрывают всю планету!

3. ТЕКСТУРЫ

    Сотворенный мир получился довольно серым. Добавим в него кой-какие цвета и текстуры. Давим на кнопку Shaders вверху. (Да, между прочим, загадочное слово "шейдер" - это от английского "штриховать", "затушевывать"). В TG2 шейдер - это главный термин для узлов, генерирующих или манипулирующих данными, которые определяют цвета, отражения и т.п.

    Главный узел здесь логично назван Base colours. Кликаем по нему, появляется панель настроек. Первая закладка на ней: Scale. Разбираться с ней пока не будем, переходим к Colour. Hight colour и Low colour - эти названия могут ввести в заблуждение. Эти цвета не связаны с высотой рельефа. Они являются параметрами для внутренней функции, управляющей т.н. "фрактальным шумом", т.е. разнообразящей рельеф, добавляющей в него все новые и новые подробности, по мере приближения к нему. Кликнув по маленькому квадратику, получим стандартное меню выбора цвета. Подвигав ползунок, изменим яркость цвета. Например, придадим Hight colour оттенок светло-коричневого.

    Жмем кнопку AddLayer над списком узлов и выбираем в выпадающем меню Surface Layer. По умолчанию этот слой накроет весь рельеф целиком, а цвет его будет свето-серый. Кликнем по его названию, чтобы получить панель настроек. Заодно переименуем слой в Grass - потому что он у нас будет изображать траву. Установим цвет - что-нибудь зелененькое.

    Открываем вкладку Altitude constraints. Ставим галочку на Limit maximum altitude и задаем Maximum altitude где-то от 500 до 1000, в общем, пока сквозь зелень не проглянут коричневые верхушки гор. По ходу дела, следующий параметр, fuzzy zone - означает: "зона размытия, нечеткости". Его тоже можно подрегулировать.

    Далее, вкладка Slope constraints. Галку на Limit maximum slope и задаем Maximum slope angle примерно 25 и Max slope fuzzy zone примерно 10.

    Высота (altitude) и размытие (fuzzy) задаются в метрах; настройки наклона (slope) - в градусах. Т.е. слишком высоко и на чрезмерно крутых склонах травка не растет.

    Чтобы придать зеленому слою больше естественности, вернемся на вкладку Caverage and breakup. Coverage пусть будет 0.7; Fractal breakup от 0.5 до 1 дает очень хорошие результаты (если сильно больше 1, то эффект будет резче).

    Точно так же, как траву, сотворим слой Snow - снег. Значение Minimum altitude, естественно, будет достаточно большим. Полетаем над местностью в поисках интересного пейзажа... Вид с километровой высоты:

4. ВОДА

    Необязательно добавлять воду в пейзаж, но это может сделать его более выразительным. В TG2 воду можно добавить несколькими способами. Познакомимся с наиболее популярным: добавлением узла Lake в макете Water. Переключаемся на Water, нажав соответствующую кнопку. Здесь можно добавить только один тип водного объекта, а именно "озеро" - Lake. Это плоская поверхность заданного радиуса. (Не более 1000 км). Размещать озеро надо так, чтобы образовались прилично выглядящие берега, т.е. позаботится о том, чтобы озеро культурно вписалось в какую-либо впадину рельефа.

    Получилось что-то вроде фьорда. Взгляд с другого берега с высоты в 96 м.

5. АТМОСФЕРА И ОСВЕЩЕНИЕ

    Аналогично! Кнопки Atmosphere и Lighting. По умолчанию в сцене присутствуют два источника света: Sunlight (солнце) и Enviro light - рассеянное освещение, реализующее модель Global Illumination (GI).

    В атмосферу можно добавлять тучи, как же без этого? Кнопка Add Cloud layer, и выбирайте подходящие к случаю облака. Вот это уже можно считать законченной картиной:

 

    А вот тот же вид при заходе солнца и с высоты человеческого роста:

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

6. SCALE (ШКАЛА)

    А сейчас вернемся, как обещано, к закладке Scale, имеющей место быть на панелях параметров тех или иных узлов. Следующая табличка многое делает понятным. (Все расстояния в TG2 измеряются в метрах).

Примерные масштабы для разных типов сцен.

Параметр Большая сцена (горный пейзаж) Малая сцена (цветы на клумбе крупным планом)
Lead-in scale - основной (ведущий) масштаб 25000   0.1
Featured scale - детальный масштаб  5000  0.01
Smallest scale - наименьший масштаб    0.1 0.001

    Чем меньше значение Smallest scale, тем большей становится величина Noise octaves (октавы шума). Такова плата за детализацию - на вычисление фрактального шума будет затрачено больше компьютерных ресурсов.

7. ПЛАНЕТАРНЫЙ КОНТЕКСТ

    Уже упоминалось, что сцена в TG2 строится на поверхности сферы. По умолчанию в сцену всегда загружен объект под названием Planet 01. Его координаты (точнее, координаты его центра) равны 0, -6.378e+006, 0. Радиус, по умолчанию, равен 6.378e_006, т.е. 6378000 метров. Размеры земного шара, однако. Вспоминая, что ось Y направлена вверх, сразу понимаем, что точка 0, 0, 0 - находится на поверхности, так сказать, на самой макушке сферы.

    Что дает такой подход к построению сцен? В любой сцене изначально существует горизонт. В любой сцене генерацией фрактального рельефа можно без труда задать задний план. Закаты и восходы выглядят реалистично, потому что даже горизонтально направленный луч света проходит (из-за кривизны атмосферы) конечное расстояние. Размеры сцены не ограничены. Можно создать второй (третий и т.д.) планетный объект и разместить его на расстоянии десятков или сотен тысяч километров от первого. Это будет луна (луны), с реальным, а не нарисованным рельефом. И фазы этих небесных тел будут также реальными, а не нарисованными.

8. ИМПОРТ СТОРОННИХ ОБЪЕКТОВ. ЭКОСИСТЕМА

    Кнопка с изображением голубого кубика "Objects" позволяет добавить в сцену различные объекты. После нажатия на кнопку появляется еще одна: "Add Objects", для выбора меню объектов. Смело жмем, и видим субменю из 2-х строчек: "Object" и "Population". К нашему удивлению, оба пункта раскрывают одинаковые списки объектов. В чем дело? А в том, что в первом случае добавляется одиночный объект, а во втором: экосистема созданная на основе этого объекта.

    Сперва добавим одиночный объект. В списке доступных объектов видим: Disc, Grass clump, Lwo reader, Null, Obj reader, Plane, Planet, Rock, Sphere, Tgo reader. Lwo reader - импорт объектов в формате Ligt Vawe obj. Tgo reader - импорт объектов в формате Терраген. Но мы выберем: Obj reader. Открывается диалоговое окно для выбора объекта в одном из самых популярных и простых 3D-форматов - OBJ!

    3D-модель в этом формате, вообще-то говоря, задается не одним только файлом *.obj, но еще и файлом-описателем текстур (материалов) *.mtl и набором файлов текстур, перечисленных в *.mtl. В данном примере использована модель сторожевой башни guardtower.obj. После импорта модели она видна в окне просмотра в виде параллелепипеда, контуры которого очерчены тонкими белыми линиями. Изменив должным образом ее координаты, поместим башню в нужное место сцены. Одной башни мало, повторяем импорт того же самого объекта и размещаем чуть поодаль от первого.

    Чтобы разнообразить картину небес, кроме облаков добавим еще объект Planet такого же точно размера, как исходная планета, на которой мы творим свою сцену. Поместим новую планету на расстоянии километров эдак 40000. 

     А теперь создадим экосистему. Переходим в меню Population и тоже выбираем Obj reader. В данном случае выберем модель растения, например, под именем flower29.obj. После добавления у нас получится аж 2 объекта: Pop flower29.obj и Pop flower29.obj/flower29.obj - экосистема и собственно цветок.

    Что такое экосистема? Это один или несколько различных объектов, растиражированных во множестве экземпляров, отличающихся от исходного лишь масштабом и поворотом. В результате из одного деревца можно "вырастить" лес,  колоссальным образом сэкономив вычислительные ресурсы компьютера.

    В свойствах экосистемы параметры "Area length a" и "Area length b" - означают размеры прямоугольника, в котором будет размещаться экосистема. Возьмем для примера 200х200 метров. Area center - понятно, координаты центра этого прямоугольника. "Object spacing in a,b" - среднее расстояние между экземплярами объекта по сторонам "a" и "b". Положим его равным 0.2 метра. "Spacing variation in a,b" - это показатель изменчивости среднего расстояния. 1 - достаточно сильная вариабельность, чтобы размещение экземпляров не напоминало посадку квадратно-гнездовым способом .

    Если поставить галочку на "Use density shader", то можно задать еще и карту плотности размещения.

    Перейдя к свойствам самого объекта, во вкладке Transform можно указать для него вариации смещений, поворотов и масштаба по каждой из осей координат.

    Кнопка "Populate now" "выращивает" на заданном поле требуемый "урожай"  .

    Рендерим. Вот... На этом поле, в лучах восходящего солнца буйно цветет примерно 1 миллион репейников. Между прочим, если в сцене изменить положение солнца, то поменяется и фаза висящей в небе планеты-близнеца. А перенеся на нее рендер-камеру, мы могли бы и там создать какую-нибудь сцену!

9. НАСТРОЙКИ РЕНДЕРА

    Как получить «максимальную отдачу» от настроек рендера?

   Первое и наиболее важное: НЕ думайте, что наилучшим вариантом будет выставить все ползунки на максимум, или что такой вариант подходит для всех рендеров. Это особенно касается Global Illumination (GI), для которого максимальные значения неуместны. Не то ждать результатов рендера придется до морковкина заговенья.

    В остальном придерживайтесь следующих правил:

    В первую очередь делайте тестовый рендер с настройками качества по умолчанию.

    Помните, что есть несколько мест, где настройки детализации могут быть изменены.

    Также имейте ввиду, что есть множество настроек детализации и они влияют на разные аспекты сцены. Не думайте, что для достижения наилучших результатов вам необходимо перевернуть все вверх дном. Некоторые настройки нужны только для определенных типов сцены и для других просто замедлят рендер.

    Если вы видите «шум» в облаках, увеличьте для них во вкладке Quality значение Number of samples. Если вы видите шум выше или ниже облаков или в лучах света, увеличьте качество атмосферы. Для атмосферы Number of samples ограничивайте значением 64, в некоторых случаях 128. Если выставить больше, то время рендера сильно возрастет. Для облаков можно повысить это значение до 256, но и 128 даст хороший результат.

    Number of samples определяет качество облаков и атмосферы, которое выражается в уровне «шума». Если шума нет, но хочется повысить качество изображения, увеличьте GI relative detail в настройках рендера. Попробуйте значения 1, затем 2 и 3. Если изменения не дают никакого эффекта, значит проблема кроется где-то в другом месте!

    Как только получим хороший уровень шума для облаков и атмосферы с Detail = 0.5, так можно приступать к настройке других параметров.

    Галочку на GI surface details ставить нужно, если рендерим объекты вблизи земли или на земле, с подробными тенями. Или когда ближние объекты недостаточно высоки. Это существенно замедляет рендер, и, как правило, не требуется.

    Если в областях с высокой контрастностью (например, местность на фоне неба) видны неровные края, то увеличим сглаживание – Anti-aliasing. 3..6 – достаточно; в крайнем случае 8, но не больше.

    Наконец, когда уже получена очень красивая сцена, и все другие уровни детализации скорректированы должным образом, и если вы все еще считаете, что общей сцене не хватает немного детализации, то можно подумать об увеличении значения Detail. Но, опять же, это рекомендуется в качестве последней меры. Когда имеются «бесшумные» облака, хорошая детализация поверхности, хорошее качество освещения и т.д.

    Увеличивайте Detail постепенно - не переходя сразу к максимальной величине. Каждое увеличение на 0.1 будет сильно влиять на время рендера и на качество изображения. Но при этом время рендера возрастает сильнее, чем улучшается качество изображения. Значение 0.5 на самом деле дает очень хорошую детализацию в большинстве случаев. 0.7..0.8 может быть достаточно для финального рендера; при этом экономя время по сравнению с 1.0. Можно даже использовать 0.9 почти с таким же успехом, как 1.0, при меньшем времени рендера.

    И далеко не всегда разница в качестве изображения между 0.9 и 1.0 будет заметна!

10. ПРОСТЕЙШИЕ СОВЕТЫ ОТ ЛУАНЫ САЙЛЕНС

    Не забывайте сохранять файлы настроек и террейны, которые создаете. Даже если вам не понадобится повторно рендерить какой-либо пейзаж, настройки всегда могут пригодиться. Например, в новом проекте можно использовать атмосферу из проекта, созданного ранее.

    Старайтесь сохранять все настройки для каждого проекта в отдельной папке. Папку с проектом желательно назвать так, чтобы было сразу понятно, какой в ней проект. К имени папки можно добавить дату создания проекта.

    Чтобы картинка была более сглаженной, рендерьте ее  чуть большего размера, затем уменьшайте.

     Чем больше ваш террейн, тем больше деталей на нем будет после рендеринга, и тем качественнее будет пейзаж. Поэтому не бойтесь увеличивать маленькие террейны, они при этом не пострадают. Но помните, что время рендера может сильно увеличиться.