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

 

2. Зайдите в Hypershader. Создайте материал Blinn и установите параметры, как отображено ниже на скриншоте.

 

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

Также важно добавить карту микрорельефа. Для этого в данном случае была использована текстура Turbulence, которая есть в библиотеке highend3d.com. Поменяйте название blinn1 на snowBlinn.

3. Далее нужно создать процедурную текстуру 2D Fractal с параметрами, которые указаны ниже на рисунке.

 

Назначение этой текстуры - отображение переливающихся ледовых кристаллов. Выбор пал на 2D Fractal потому, что он имеет такой параметр как Time. С его помощью можно задавать фазу. Обязательно поставьте галочку около Animated. Саму же фазу несколько позже мы привяжем к положению камеры, применив небольшое выражение. Также поставьте галочку у параметра Invert.

4. Далее необходимо наложить цветовую карту на текстуру fractal1. Для этого нужно поменять параметры градиента Ramp. Нажмите клавишу Insert около надписи Color Remap.

 

Эти действия усиливают эффект блесток. Использования только помех недостаточно так как мы имеем высокое значение Threshold.

5. Соедините outAlpha узла RemapRamp1 с SpecularRollOut узла snowBlinn. Также нужно связать outColor со SpecularColor для получения нужной картинки в Hypershade.

 

Занимаемся рендерингом сцены

 

6. Это достаточно похоже на тот результат, который мы хотели получить. Но при перемещении камеры все блестки будут стоять на месте, что не бывает с настоящим снегом. Для достижения нужного эффекта пропишем выражение, которое привяжет ход камеры к параметру Time текстуры fractal1. Если вы не изменяли названия узлов, то можете использовать выражение, которое прописано ниже. Иначе вам сначала нужно внести корректировки в название, прописывая новые имена.

fractal1.time = (camera1.tx + camera1.ty + camera1.tz) / 3;

Значение 3 можно менять в зависимости от желаемой скорости мерцания нашего снега во время перемещении камеры.

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