заснеженные деревья в 3Д

Feb 25, 2011 18:54




Снег для 3Д графики часто является непростой задачей.  Не существует универсального способа его создания.
Работая над одним проектом мне пришлось "чесать репу" над созданием заснеженных деревьев. Хочу поделиться своим решением этой задачи.
Этот снег подойдет для широкого спектра погодных условий и объектов.
Вот пример того для чего способ подойдет отлично



Вот пример для чего этот способ не подойдет


Он так же не подойдет для хвойных деревьев.

Выделим особенности снега лежащего на деревьях, которые мы будем имитировать:
1. Снег на ветках и стволах лежит с той стороны с которой собственно снег и падает. В безветренную погоду снег налипает на ветки сверху, а на ствол - местами - там где выступает кора.
 Наличие ветра меняет направление падения снега и соответственно картину налипания. Появляется много снега на стволах с подветренной стороны.
2. Граница между заснеженным и незаснеженным участком обычно нерезкая - по градиенту, и при этом неровная. Но эта граница может быть и довольно резкая - например когда немного пригреет Солнце.

Первым делом создаем дерево. Хорошее дерево - залог успеха.  Для большинства задач подойдут деревья сгенерированные в Onyx.
Деревья можно делать и в других программах, в том числе и в самом 3ds Max. К модели дерева есть следующие требования:
 1. Модель обязательно должна содержать лофтовый мэппинг.
 2. Количество сегментов окружности ствола и крупных веток желательно не меньше 8. В ониксе этот параметр называется Transversal
 3. Неверные нормали объекта могут сильно исказить внешний вид снега. Модель из Оникса имеет много открытых ребер вдоль веток и стволов - соответственно нормали там неверные. Их быть не должно - сшейте точки обязательно.

Допустим дерево у нас готово. В моей модели 230К треугольников.




Теперь самое важное - создание маски для снега. Хотя эта маска довольно простая, получить ее мне удалось далеко не сразу..
Бросьте на дерево стандартный материал и поставьте Self-illumination на 100 - так мы сможем лучше видеть создаваемую маску. Создадим саму маску, состоящая их двух процедурных карт:
Вначале Gradient Ramp с типом Градиента "Mapped", и в слот "Map" поместим Falloff с отмеченными параметрами.




Карта Falloff при этих настройках - возвращает цвет в зависимости от направленности нормали относительно направления вверх. Обратите внимание что я немного порулил кривую этой зависимости. Кривая в нашем случае влияет на ширину границы снега а так же на общее количество снега. Карта Gradient Map - используется для получения шума на этой границе (параметром Noise). Настройки этого шума позволят имитировать снег в диапазоне от свеже выпавшего в холодную погоду, до начинающего таять.  Мэппинг сказывается на том как выглядит этот шум и на этом этапе его (мэппинг) можно отредактировать (Вам может понадобиться другой текстурный слой), но мы опустим это.
 Не тратьте много времени на получение идеальной маски. Позже я поясню почему.

Создадим новый материал для дерева и будем использовать полученную маску снега (в примере она называется Map #48) для смешивания в различных каналах.
В диффузном канале я использовал карту Mix, в канале Бамп - композитную текстуру. Я так же использовал маску снега в канале Self-Illumination - фейковое подповерхстное рассеивание.
В качестве текстуры снега я использовал фрактальный шум.



(в сцене только дефолтный источник света)
Небольшое пояснение: Изначально я использовал одну и ту же карту (композитную) для диффуза и бампа, но композитная карта в диффузе вызвала овербрайты при рендере Виреем в большой сцене с множеством деревьев. В итоге я заменил ее на карту Mix. Вы можете создавать материал по своему вкусу, используя такую маску для снега.

Включение/выключение бампа радикально меняет вид снега. Карта Бамп - при рендере искусственно меняет нормали, а на это в свою очередь реагирует карта Falloff! Вот почему я просил Вас не тратить много времени на отдельную маску снега. Настраивать детально эту маску нужно когда материал уже собран.




Если в карте Falloff запихнуть в верхний слот процедурный Нойз (вместо белого цвета), в качестве текстурных координат выбрать World XYZ - то все деревья будут иметь уникальный рисунок покрытия снегом:




А если в Fallof в качестве направления использовать объект - то можно сымитировать деревья облепленные снегом в ветренную погоду:




Именно так я и поступил при создании этой работы. Здесь на всём, включая собаку, лежит снег, полученный описанным способом:




Надеюсь урок понравился Вам.

Времена года, 3d, Компьютерная графика, уроки, Проекты

Previous post Next post
Up