Урок по созданию ржавчины

Перед тем, как приступить к этому уроку, желательно освоить основные моменты по написанию шейдеров в Realsoft 3D. Эти моменты Вы быстро поймете прочитав раздел VSL в Руководстве по Realsoft 3D (Manual). Вы можете скачать Руководство по Realsoft 3D и Демо версию Realsoft 3D .
К сожалению, всегда существует проблемы с натуралистичностью при создании шероховатой, ржавой поверхности. Взять, к примеру, относительно ровную сталь с толстой коркой ржавчины.
Готовый пример для Realsoft 3D здесь. В этом примере использовался бесплатный плагин Scratches, написанный Michael Schmeling. Если у вас его нет, то некоторые моменты урока могут не получиться. Скачать плагин можно здесь.

План

Язык VSL обеспечивает нас всеми этими инструментами и многим другими. Есть множество путей для достижения этих эффектов, я выбрал тот, который мне показался наиболее простым. Вот основная идея.

  • Используйте два материала. Стандартный материал сталь 'Steel' будет "чистым" материалом. Для материала ржавчины мы будем использовать канал Scope, чтобы определить, как много будет ржавчины в том или ином месте. Если scope=0, это 100% сталь ,если scope=1 это 100% ржавчина. Очень просто сделать все в одном материале, но мне больше всего нравиться идея 2 материалов.
  • Существует несколько путей определения того, как будет отображаться область ржавчины снаружи и внутри. Предварительно я использовал If объект, но позже стало понятно, что наиболее гибким способом определения значений области ржавчины, будет использование Curve.
  • Noise объект подходит для создания фрактального образца. На выходе Noise использовался объектом Curve для определения внешних и внутренних сторон объекта. Еще более интересные образцы создаются с помощью Cell объекта, автора Michael Schmeling написавшего Cellular плагин. Комбинация даст потрясающе красивый образец, но может слегка замедлить рендеринг.
  • Созданное значение Noise должно быть где-то сохранено. Лучший выход из положения я вижу в специальном канале.
  • Для задания толщены слоя ржавчины необходим Bump mapping. Для этого идеально подходит канал Bump Height шейдера Surface Geometry .
  • Для контроля за шероховатостью, особенно по ее границе, лучше всего подходит объект Curve.
  • Построение материалов

    Вначале создайте новый канал для хранения значений Noise. Для этого щелкните правой кнопкой мыши в третьем с права табе, внутри Selection window, выберите New/Float и назовите corrosion или так, как вам больше нравится.

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

    Пора открывать VSL editor, и редактировать стандартный материал Steel - Вы можете найти его в стандартном интерфейсе (startup environment). Двойной щелчок мыши на материале steel откроет Вам VSL editor, включите Advanced. Методом drag&drop положите новый шейдер и назовите Common properties. Этот путь дает Вам доступ ко всем значениям других шейдеров и других материалов.

    Значение noise применено к нашему новому каналу 'corrosion', который стал доступным, как input/output. Для простоты, используйте значения по умолчанию ; 50% это <0.5, 50% >0.5, таким образом у нас на стали будет 50% ржавчины. OK, давайте закрепим результат.

    Создайте новый VSL материал и назовите его 'crust'.

    Создайте новый шейдер и назовите его Common properties. Это необходимо, поскольку канал Scope должен влиять на все шейдеры в этом материале. Как было сказано в руководстве по Realsoft 3D, Scope определяет количество материала. Это так же зависит от иерархии материалов.

    Вместо объекта If давайте использовать Curve. В нашем случае , у кривой (type: Boolean, или polygonal) такие же свойства, как у If объекта: если X<0.5, то Y=0, если X>0.5, то Y=1, в котором X= corrosion channel, а Y=scope.

    Но никто не запрещает использование других кривых! Материал будет смешан более равномерно, если Вы будете использовать nurbs кривые. Попробуй-те другие типы кривых.

    Один из побочных эффектов использования различных сложных комплексных материалов это отказ системы от предварительного просмотра, поскольку режим предварительного просмотра материалов не имеет однозначного доступа ко всем каналам и ко всем материалам. Комплексные материалы Вы можете просмотреть при рендере.

    Ржавые металлы не дают блеска. Металлическая поверхность дает хорошее отражение.
    Некоторые каналы для стали подобны specular illumination и если ничего не сделать с ними, то после рендера Вы обнаружите, что в тех местах, где выступает ржавчина материал у вас дает металлический блеск, а это не правильно. Происходит это потому, что в вашей иерархии материал steel считается раньше crust. Поэтому нужно сделать так чтобы при рендере crust материал считался до steel. Таким образом, материалу crust нужна низкая яркости по сравнению с яркостью материала steel. Выберете 'specular color', нажмите Add, и установите Brightness близкой или равной нулю.

    Установите значение переменной Reflection=0 в Surface Properties.

    Теперь приступим к бампу.

    Наша задача создать толщину ржавчины. Другими словами, нам нужно создать разницу в высоте ржавчины и чистой стали: Surface geometry shader/Bump height!

    Сделайте новый шейдер 'Surface geometry' и поместите внутри него объект Curve. Установите как Input канал 'corrosion' и как Output - 'Bump height'. Поскольку обычно эти значения очень маленькие, установите максимальное значение по оси Y =0.1: правым щелчком мыши на кривой, установите минимальное и максимальное значения: Max Y=0.1.

    Настройка кривой Bump Height задает значение толщины слоя ржавчины. Это значение 0.5 для кривой scope, смотрите картинку. Для более точного контроля установите тип кривой Type to Poly-line (правым щелчком мыши). Щелкните на кривой для получения новой точки, переместите ее на X=0.5, Y=0; для точности используйте окна ввода числовых значений. Область левее этой точки - область, где значение scope=0, будет областью чистого металла. Соответственно, правая часть - область ржавчины. Поскольку между этими поверхностями должен быть переход , то нам нужно создать его . Для этого создайте новую точку и помести те ее так, как показано на рисунке. Конечно же это не идеал, но нужно учится на простых примерах. Позже Вы сможете с помощью этой кривой установить нужное значение.

    В завершении, Bump Height канал должен быть назначен к значению crust. Создайте Linear объект, установите для Input и Output Bump Height. Это сделает дальнейшие модификации с бампом легче, например, установка Multiply к отрицательному значению для изменения бампа (ржавчина становится дырами в металле). Вы можете установить в General operation "+" для того чтобы к высоте бампа добавлялось предыдущее значение.

    У ржавчины пока еще нет цвета. Если Вы оставите один канал, то цвет ржавчины будет тем же, что и у металла. Ничего не может быть проще, чем назначить Constant для канала цвета в Surface properties. Слишком просто! Это отличная демонстрация преимущества обычных каналов.

    Возьмите Curve внутри шейдера Surface properties. Установите Output к Color, а Input к corrosion channel. Выберите тип кривой "Polygonal" и поставьте точки так, как показано на рисунке слева.

    Что же произошло? Граница X=0.5 показывает границу между металлом и ржавчиной. Справа цвет ржавчины. Кривая показывает Вам градиент "глубинной" области ржавчины, он гораздо интересней, чем постоянный цвет. И почему нет, значение коррозии всегда доступно в канале. И его просчет нужен только один раз!

    Итак, материал полностью создан!
    Можно начать его модифицировать!
    Например:

    * Добавьте Cell после Noise, установите General/Operation на Substract и поиграйте с
    настройками! Это может слегка замедлить рендер, но результат Вам понравиться.
    ** Сделайте кривую более "ухабистой". Если scope в области без коррозии равен нулю, то не имеет смысла изменять левую часть кривой, но если там не ноль, то некоторая шероховатость на металле будет выглядеть очень мило. Так же легко создать 'кромку' если Вы вдруг создаете какой-то сложный бамп, только меняйте справа от точки X=0.5.
    Примеры Вы найдете в проекте.

    Конечно же нам нужна простая сцена с объектом и каким-либо источником света.В этом примере был использован торус, который лучше всего демонстрирует материал. Я поместил сцену в куб, для того чтобы создать видимость окружения.Вы можете скачать пример этой сцены здесь.

    Помните, что Вы должны поместить материал ржавчины после материала метал!

    Различные материалы
    Здесь показаны примерные варианты различных металлов. Названия этих материалов Вы найдете в примере.

    Steel02 добавьте чуть большее значение noise для того, чтобы у вас получилось больше ржавчины. Кривая должна быть добавлена к Surface properties/color, чтобы получить некоторый цвет перехода от ржавчины к металлу. Переменная Metal color нам здесь не нужна. Fade был уменьшен для достижения более сильного отражения.
    Crust02 используйте polygonal тип scope кривой с добавлением некоторых точек, для того чтобы сделать границу
    метал/ржавчину менее четкой. Смешивание будет более интересным.
    Steel03: добавьте шейдер Surface geometry и bump кривую для доступа к управлению шероховатостью внутри метала.
    Crust03: кривая scope должна быть Nurbs для получения сглаженного перехода. Сделайте желтым границу "кромки", настроив color и bump кривую.

    Patina: измените цвет. Scope кривая должна быть установлена Boolean, чтобы получить острую границу.
    Bronze: другой градиент цвета. Это выглядит ржавым материалом, поскольку кривая bump height увеличивается слева на право. Объект Cell был добавлен к вычислению 'corrosion' для создания более интересных образцов. Похоже на распыленную кислоту на бронзовом кольце. Настоящая бронза темнее, но давайте же, наконец ... уйдем от действительности.
    Scratchedgold: тут использовался шейдер Scratches для получения столь необычного образца. Цвет скорее всего золото. Огромное спасибо Michael Schmeling за его шейдеры!
    Lapisblue: цвет подобен камню Lapis Lazuli, насыщенный темно-синий цвет. Комбинация просто потрясающая.
    Возможности безграничны. Скачать Scratches, Cellular и Brick шейдеры от Michael Schmeling's Вы можете здесь!

    Урок любезно предоставлен Mark Heuymans. Любые вопросы и пожелания по этому уроку пишите на адрес alkahest@xs4all.nl
    Перевод компании "Graphic Group", май 2002

    11 0 850 1
    1
    2011-10-17
    классная ржавчина! как настоящая!!!)
    RENDER.RU