Увы, но на моделировании крокодила работа не заканчивается. Основная проблема, возникающая на следующем этапе — это рисование воды. По замыслу, крокодил должен двигаться в воде, порождая при этом брызги.
Известно множество примеров рисования океанской глади в 3D. На эту тему написаны различные уроки. Но с мелководьем дело обстоит значительно сложнее. А с брызгами чистой воды — тем более. Поэтому на эту тему пришлось серьезно поразмышлять и поэкспериментировать. Не могу сказать, что достигнутый результат идеален и воспроизводим в 100% случаев. Но, может быть, изложение соображений, которыми я руководствовался, позволит кому-то сделать лучше!
Итак, пойдем от простого к сложному и начнем с общих параметров водоема. Геометрия стандартная — Box с мелкой сеткой и примененным модификатором Noise (Fractal). Что касается параметров материала: цвет Diffuse — темно-синий, почти черный; цвет бликов — светло-голубой; достаточно сглаженный bump типа noise. Как обычно — Raytrace Reflection. (Улучшенный рейтрейсинг — это, конечно, важное преимущество новых версий 3DS MAX перед старыми. Поэтому для рендеринга лучше использовать версию MAX не ниже R2). Если для океанских волн большая отражающая способность не характерна, то для мелких водоемов это не так; поэтому параметр Reflection можно смело ставить на уровне 50-60.
Но вот какая трудность: если озерцо неглубокое и чистое, сквозь водную гладь должно проглядывать дно. Как это смоделировать? Можно, конечно, сделать подложку с текстурой дна. А можно поступить иначе. Я очень часто использую для воды такой параметр, как Refraction; в данном случае это то, что нужно. Не стоит завышать значение этого параметра. В данной сцене Raytracing Refraction для воды на уровне 5 оказался наиболее приемлемым решением.
Теперь самое сложное — брызги воды. Первая предпосылка: они не должны быт очень большими, чтобы не закрывать с таким трудом сделанную модель крокодила. Исходя из этого, крокодил был сделан не выпрыгивающим из глубины озера, а как бы бросающимся на жертву из прибрежных кустов. Как же при этом должны выглядеть брызги?
Было сделано следующее наблюдение. Брызги воды сначала представляют собой непрерывный и почти прозрачный поток воды, видимый только за счет Reflection и Refraction. Затем этот поток разделяется на множество мелких капелек, похожих на пенный «гребень» волны. Причем эти капельки выглядят белыми и почти непрозрачными (см. фото).
Какое средство моделирования выбрать для такого случая? В принципе динамику воды можно отобразить разными способами: с помощью и Metaparticles, и Splash! Но эти средства преимущественно ориентированы на анимацию. Здесь же задача была качественно иной — показать «динамику в статике». В общем основную волну было решено рисовать также с помощью MetaReyes.
Для этого была создана новая сцена, в которую импортирован предельно упрощенный Mesh крокодила (окончательная модель выглядит, конечно, совершенно иначе). Далее рисовалась собственно вода. Она состоит из 3 частей:
— круговая волна; — плотный восходящий поток воды; — мелкие разделяющиеся брызги.
Степень сглаживания была выбрана очень высокой.
Параметры материала брызг отличаются от материала водной глади. Во-первых, блики были сделаны более насыщенными, и их цвет изменен на белый. Во-вторых, добавлен более мелкий bump. В-третьих, материал был сделан существенно более прозрачным. Далее начались сложные эксперименты с отражающей поверхностью и рефракцией.
В принципе идеальное сочетание для брызг — это и Reflection, и Refraction (Raytrace). Но поскольку полученная модель была достаточно сложной, обсчет этих параметров в паре занимал слишком много времени. Для того, чтобы работа была более интерактивной, пришлось выбирать, чему отдать предпочтение — отражению или рефракции. В окончательном варианте сделана только отражающая поверхность — Raytrace Reflection = 70, причем Background принудительно указан черным.
Самые мелкие капли моделировались с помощью SuperSpray. Исходя из вышеизложенных соображений, материал для них был сделан почти белого цвета и практически непрозрачным.