Для продвинутых. Если не считать конфуз с майскими SDS, официально МауаМап поддерживает и экспортирует в RIB любую геометрию, кроме PaintFX - впрочем, PaintFX в RIB не экспортирует ни один из известных плагинов. Этот вопрос - «А как отрендерить Paint Effects в Renderman?» - в свое время был самым задаваемым в русских форумах, посвященных Renderman: нам пришлось даже вынести его в FAQ. Впрочем, и у этой проблемы есть возможное решение ведь вывести данные из PaintFX в виде кривых не составляет особого труда, загвоздка лишь в применяемых кистях и их отрисовке.
Удаляем из сцены нашу овечку и импортируем ее заново. На этот раз мы не будем переводить ее в сабдивы штатными майскими средствами; вместо этого, выделяем ту геометрию, которую нужно отобразить в виде SDS и вызываем пункт меню МауаМап => Add Model Attributes. Затем в окне редактирования атрибутов в разделе SubDivision Surface выставляем нужную галочку и:
получаем наше животное в целости и сохранности. Но это не так интересно - на протяжении нашей главы мы уже с дюжину раз различными методами рендерили бедного барашка; попробуем теперь узнать, какие дополнительные преимущества перед MTOR имеет наш МауаМап. Для этого назначим на нашу модель любой материал из HyperShade и посмотрим, что произойдет (в данном случае мы назначили Blion с присоединенным к каналу.цвета, brownian);.............................................................
Оказывается, как и Mango, МауаМап поддерживает материалы HyperShade и конвертирует их в шейдеры RenderMan. Но, в отличие от Mango, МауаМап действительно создает новые шейдеры
- впрочем, делает это очень хитро, давайте посмотрим получившийся у нас шейдер (его можно найти в поддиректории нашего проекта \mayaman\sheep1\shaders\ - я убрал заголовок шейдера для краткости):
{
PROFILE(“begin”);
^pragma nolint
SURFACE_TEMPS;
APPLY_SUCE_PLANE else {
PROFILER SETUP 0 BLINN”);
BLINN_SETUP(v_0_);
if(only_do_opacity == 0) {
PROFILE(‘‘SETUP 1 BROWNIAN”);
BROWNIAN_SETUP(v_1J;
PR0F1LE(“SETUP 2 PLACE3DTEXTURE”);
PLACE3DTEXTURE_SETUP(v_2_);
PROFILE (“SIMULATE 2 PLACE3DTEXTURE”);
PLACE3DTEXTURE_SIM(v_2_);
v_1_placementMatrix = v_2_worldlnverseMatrix[0];
PROFILE (“SIMULATE 1 BROWNIAN”);
BROWNIAN_SIM(v_1_);
v_0_co(or = color(v_1_outCo[or);
]
PRO FILE (“SIMULATE 0 BLINN”);
BLINN_SIM(v_0_);
Ci = vJ3_outColor;
Oi = Os;
}
DEEP_SHADOW_OPACITY_HANDLER
PROFILE(“end”);
SURFACE_DEBUG_HOOK
}
He очень похоже на обычный шейдер, написанный на Renderman SL, правда? Тем не менее, это обычый шейдер. Вся хитрость в том, что в этом шейдере очень широко используются такие возможности языка SL, как макросы и подстановка значений. Если мы пропустим этот файл через препроцессор срр, то сможем увидеть истинное лицо нашего шейдера - впрочем, я не буду сюда его вставлять из-за достаточно большого размера - книжка-то у нас не резиновая.
Для продвинутых. Те же, кто не поленится заглянуть в получившиеся 40 килобайт (почти 1200 строк) кода на SL, узнают много нового о том, как на Renderman SL сымитировать ноды из MAYA HyperShade, да и вообще - про внутреннее устройство MAYA и про рендеринг вообще.