Создание реалистичного неба в 3D Studio с использованием DreamScape
Автор о себе:
Живу я на западе Беларуси, в небольшом городе Лида. Мне 17 лет и я уже заканчиваю 4 курс местного технического колледжа, думаю поступать на физфак, однако основной интерес для меня – CG. С чего это началось – уже не помню, изначально просто баловался с примитивами, затем почитал пару уроков, и понеслось. Ещё очень люблю наблюдать за небом, облаками, искать интересные формы, которые принимают облака. Когда у меня появится цифровая камера, думаю создать галерею облаков… но пока приходится создавать лишь виртуальные облака. Этот урок рассчитан на пользователей, хорошо ориентирующихся в Максе, но ещё не сталкивавшихся с DreamScape.
Начнём, пожалуй…
Для работы нам понадобится непосредственно сам 3D Studio Max (я использую 8-ую версию), и установленный плагин к нему – DreamScape (далее – DS, моя версия – 2.1). Начнём мы с…
Создание небес
Не знаю, как насчёт сложности, но это моё любимое занятие.
Для активации плагина нажимаем клавишу «8» (или заходим в Rendering->Environment) и в свитке Atmosphere нажимаем клавишу Add и выбираем из списка DreamScape.
Затем необходимо создать солнце: Create->Lights->DreamScape->Sun. DS Sun чем-то похож на направленный источник света, однако это не совсем так. Абсолютное расположение его в сцене роли не играет – важно лишь расположение самого источника относительно его цели (Sun.Target) – чем выше само солнце относительно своей цели, тем выше будет солнце на небосклоне.
Давайте теперь разберёмся в тех настройках, которые предлагает нам DS Sun. Тут всего два списка с параметрами: настройки самого солнца и настройки тени.
В первом списке (Parameters) можно включить/выключить солнце (галочка на On), отключить освещение сцены этим источником (солнце будет светить на небе, но не освещать сцену, галочка на Illuminate Scene). Далее можно отрегулировать размер солнца (счётчик Sun Size), включить/выключить прорисовку солнца на небе (это не влияет на освещение сцены, просто убирает солнце с небосклона – галочка Render) и выбрать объекты, исключаемые из освещения (кнопка Exclude). Чуть ниже – настройки цветов. В группе Sun/Sky – находятся настройка цвета и интенсивности свечения неба. Если активировать группу Sun/Scene, установив галочку на User Color, то сцена будет освещаться не цветом неба/солнца, а цветом, указанным в этой группе. Последняя в этом свитке – группа настроек Affect Surface – настройки световых эффектов на поверхностях объектов. Значение параметра Contrast определяет контрастность между освещёнными и затенёнными участками объектов. Значение параметра Soften Diff. Edge определяет ширину терминатора – перехода между светом и тенью.
Размеры солнца:1, 3, 5
Значения Soften Diff, сверху вниз:10, 50, 90
Значения Contrast, сверху вниз: 20, 70
Второй список (Shadow Parameters) даёт возможность настроить тени, их наличие и детали. Можно установить генерацию теней от геометрии на геометрию, активировать сглаживание теней, генерацию теней от геометрии на облака (если есть в сцене объекты, расположенные выше слоя облаков). Также отдельная группа посвящена настройкам мягких теней. Тут всё просто – не будем задерживаться.
Теперь вся работа будет проходить с окном параметров самого DS. Все настройки собраны в пять свитков.
General Parameters – основные, глобальные параметры.
Daylight Control – настройки дневного света (нечто подобное GI)
Panorama Parameters – настройки рендера панорамы неба (ширина, высота и кнопка Render).
Atmosphere Parameters – настройки атмосферы, плотность, задымлённость и т.п.
Cloud Parameters – настройки облаков.
Основное время придётся потратить на регулирование настроек в последних двух свитках.
Настраиваем атмосферу
Если рендерить сцену только с солнцем и всеми настройками по умолчанию, небо получается голубым, солнце ярким – но всё выглядит неправильно. Открываем свиток Atmosphere и начинаем работать.
В группе Rendering настраиваются параметры визуализации. Steps – определяет величину шага (в единицах выбранных в сцене) для просчёта цвета пикселя неба. Чем больше – тем лучше качество, однако медленнее просчёт. Выше 20 ставить нецелесообразно, так как разница в изображении практически не видна. Ползунок Realism отвечает за представление атмосферы и самой Земли (именно планеты):
• Flat Earth – Земля представляется бесконечной плоскостью, а цвет неба высчитывается лишь с использованием цвета указанного ниже, в группе Sky.
• Flat Earth + Rendering – Земля плоская, однако цвет неба просчитывается по реалистичным алгоритмам – учитывается рассеивание света в атмосфере (если солнце низко – небо реалистично покраснеет)
• Real Earth – Земля – шар! Однако цвет неба аналогичен первому варианту
• Real Earth + Rendering – Земля – шар, и небо реалистичное. Лучший вариант.
Сверху вниз: Flat Earth; Flat Earth + Rendering; Real Earth; Real Earth + Rendering
Использовать вариант без Rendering не вижу смысла, так как даже если вы не создаёте закат/восход, небо всё равно приобретает реалистичные полутона. Пока работаем с Flat Earth + Rendering, а затем, для финального рендера можно поставить и Real Earth + Rendering.
Multiple Sc – является множителем свечения рассеянного солнечного света.
Переходим к группе Sky.
Параметр Density отвечает за плотность атмосферы. Малые значения приведут к эффекту разреженности воздуха – небо побледнеет, закат потеряет алую насыщенность. Большие значения приведут к образованию ненормально алых закатов. Параметр Glow отвечает за размер области сияния вокруг солнца, а Glow Sharp – за резкость контуров области сияния. Color – он и в Африке Color – цвет рассеиваемого света в атмосфере. Значение H Scale определяет высоту на которой атмосфера всё ещё имеет плотность свыше 1/3 от плотности на поверхности Земли. Фактически – этот параметр отвечает за толщину слоя атмосферы – чем больше – тем дольше солнечный свет проходит через неё, следовательно – сильнее рассеивается и приобретает красноватый оттенок.
Группа Haze. Она содержит настройки загрязнённости/запылённости атмосферы. Плотность дымки регулируется значением параметра Density, H Scale и Color – аналогичны вышеописанным, а параметр Brightness отвечает за яркость дымки.
Sky Density 10
Sky Density 2
H Scale 17994
H Scale 3994
В группе Rainbow находятся настройки радуги (если она необходима в сцене) – ширина её и яркость.
Для данного урока мне почему-то очень захотелось создать сцену с закатом. Солнце расположил низко, а настройки выбрал такие: размер солнца – 5; множитель яркости – 1.35; плотность атмосферы – 8; величина сияния – 1.1; резкость области сияния – 0.89; толщина атмосферы – 12994; плотность дымки – 0.15. Всё остальное оставил на прежних значениях. При изменении типа просчёта с Flat Earth + Rendering на Real Earth + Rendering итоговое изображение изменяется ощутимо, мне больше понравился вариант Flat Earth + Rendering.
Необходимо заметить, что для каждого места на Земле характерны свои закаты – где-то высота над морем больше, где-то влажно или смог, так что для вас закат может представляться другим (из-за учёбы я закат не видел уже давно).
Облака
Теперь перейдём к облакам, однако для более удобной работы с ними зайдём в свиток General Parameters и нажмём там эту кнопочку – это откроет окошко предпросмотра. Левое изображение представляет собой быстрый рендер из АКТИВНОГО вьюпорта, так что не удивляйтесь, если у вас там показывается не то, что вы думали, а просто активируйте нужный вьюпорт. В меню окошка можно отключить автоматическое обновление (обновление при изменении любого параметра – отключите, если у вас слабый компьютер или используются 3d-облака – о них ниже). В правом изображении – показывается текущий слой облаков (вид сверху) и поле обзора текущего вьюпорта/камеры.
Нажав на кнопку предпросмотра...
Откроется соответствующее окошко
А теперь переходим непосредственно к свитку Clouds.
Облака в DS создаются слоями, что довольно удобно, так как и в реальности облака расположены слоями на разных высотах. Добавим новый слой, нажав кнопку Add рядом, кнопка Remove удаляет ненужный. Для обоих слоёв ставим галочку на Use Layer – это включит заданные слои в просчёт сцены. Работа происходит с тем слоем, который выделен в данный момент в списке слоёв.
Сначала создадим слой облаков (точно не знаю их названия – по-моему, кучевые слоистые) расположенных на небольшой высоте.
Для этого установим высоту, на которой будут находиться облака в 1500 (параметр Altitude), их плотность в 0.6 (Density), а значение рассеивания света – 0.9 (Scattering). Облачность (количество неба, закрытое облаками) устанавливается в диапазоне от 0 (нет облаков) до 1 (сплошная облачность) параметром Coverage в группе Shape, я выбрал значение 0.6. Там же устанавливается детальность облаков (Detail, ставим максимум – 16), и резкость (Sharpness – я выбрал 0.48). Рендерим… в принципе, должно получиться неплохо – при желании можно отрегулировать расположение облаков значениями Offset x/y в группе Motion, или перетягивая левой кнопкой мыши слой облаков на правой картинке окна предпросмотра.
Добавим ещё один слой – облака, находящиеся в высоких слоях атмосферы. Выбираем второй слой, устанавливаем высоту в 14000, меняем тип облаков со стоящего по умолчанию Stratus на Cirrus (первый подходит для создания кучевых облаков, второй больше подходит именно для облаков в высоких слоях атмосферы. Scattering выставляем в 10, Density – 0,05. Для того, чтобы вытянуть облака (так как обычно в реальности они сильно вытянутые) меняем значение Scale X – масштаб по оси X. Я установил значение 0,1 в результате чего облака сжались вдоль оси X в десять раз.
Рендерим – возможно, то что получилось, и можно использовать в качестве какого-нибудь задника, но я не на это рассчитывал. 2D может пройти с высокими облаками, однако, напрочь портит низкие.
Сделаем нижний слой облаков трёхмерным! Для этого поставим галочку на группе 3D Clouds. Становятся доступными новые параметры – толщина слоя облаков (Thickness – оставляем равным 200), регулярность (скорее, монолитность – чем выше значение, тем более монолитны облака, Regularity) и размер шага (Step Size). Последний параметр устанавливает размер шага, используемого для просчёта облаков – чем он меньше, тем более детальным получится облако, но это сильно тормозит рендеринг. Установленный по умолчанию размер в 10, для нас слишком мал, он тормозит сцену слишком сильно, я выставил его равным 50. Из-за того, что облака у нас стали «толстыми», свет стал сильнее в них задерживаться, облака потемнели, потяжелели визуально. Увеличим Scattering до 3. Получаем неплохую картинку, для улучшения качества в свитке основных настроек включите сглаживание (галочка на Enable Antialiasing). Если вы создадите поверхность земли, то можно включить отображение теней облаков на земле с помощью установки галочки
Побалуйтесь с различными настройками – поищите тот вариант, который понравится вам.
На этом я и думал закончить статью, однако чёрная пустота в нижней части кадра не даёт мне покоя, недолго думая, я решил её заполнить морем!
Создаём морскую поверхность
Создадим DS Sea Surface (Create->Geometry->DreamScape). Размер выбираем любой. Надо сказать, что есть 2 типа морской поверхности, которые нам предлагает DS. Первый тип, стоящий по умолчанию – Simple Mesh. В этом случае поверхность моря создаётся как плоскость определённой длинны/ширины, с регулярной сеткой полигонов. Этот тип поверхности подходит для создания небольших водоёмов (пруд, бассейн). Для создания обширных поверхностей использование Simple Mesh нецелесообразно, так как вдали нам не сильно необходима частая сетка. Второй тип, Adaptive Mesh, создаёт поверхность моря с адаптацией под выбранную камеру – поверхность генерируется лишь в поле зрения выбранной камеры с указанным допуском (параметр FOV). Также Adaptive Mesh позволяет регулировать плотность сетки, удалённой от камеры (параметр Degradation).
Выберем Adaptive Mesh, укажем нашу камеру. Длину сетки (Length) выставим примерно 3000. Из-за того, что теперь поверхность стала похожей на сектор круга, сетка приобрела радиальный характер, что негативно скажется на формах волн, чтобы этого избежать, установите ширину (Width) примерно в 1000. Чтобы не нагружать вьюпорт огромным количеством полигонов, можно снизить частоту сетки отображаемой во вьюпорте, подняв параметр Vpt. Degradation. Параметры Resolution (Length & Width) указывают размер полигонов по ширине и высоте – чем меньше, тем более детальная выйдет сетка.
Волны на поверхности DS Sea Surface образуются тайлингом одной ячейки по всей поверхности. Размер ячейки регулируется параметром Grid Detail – чем больше значение, тем более детальна и крупна ячейка. Характер волны зависит также от силы ветра (Wind Speed), шкалы высоты образуемых волн (Height Scale) и характера гребня волны (Choppy Waves).
Зависимость формы волны вы можете увидеть на приведённых ниже иллюстрациях.
Я для нашей поверхности выбрал следующие настройки: длина/ширина=3000/1000, разрешение по X и Y по 0,5, параметр Degradation установил на 8, скорость ветра=5, высота волн=0,35, Choppy Waves=1, детали сетки=9.
Над материалом воды долго думать не надо – DS Sea Material представляет собой замечательный полноценный материал морской поверхности. Настроек немного, все они ясны.
В нашем случае ставим настройку Sky Color в положение Use DS Sky, а Underwater Color на Automatic – в этом случае цвет моря будет рассчитываться на основе существующего окружения. В слот Bump map добавьте процедурную текстуру DS: Sea Bump – для создания мелкой ряби на поверхности волн.
Вот и всё – можно рендерить. Поверхность моря изначально анимирована, анимация облаков происходит установкой различных параметров Phase и Offset в группе Motion.
Парметр Underwater Color - тёмно-голубой
Парметр Underwater Color - Auto
Заключение: Ну вот, пока всё. Конечно же, всех тонкостей DS мы разобрать не смогли, но, я думаю начало заложили неплохое. Если к этому уроку проявится интерес, я напишу продолжение, где разберём использование демонов DS, использование физики для создания плавающих/тонущих объектов, и довольно большую тему - создание земной поверхности, различных ландшафтов.
Разрешите откланяться, с уважением Табакеров Дмитрий aka AzaZeo AinAmart