
Обычный результат нашего рендеринга. Куда же подевался запрашиваемый нами дополнительный слой? Он находится в поддиректории rmanpix вашего проекта. Посмотрим внутрь файла untitled.new_channel.0001.tif, появившегося в этой директории, при помощи утилиты sho из поставки Renderman Pro Server:
sho untitled.new_channel.0001.tif
Тот, кто до сих пор шарахается от командной строки, может использовать подростковую программу, типа ACDSee.

Как видно, перед нами почти готовая заливка для мультипликационного персонажа.
Для продвинутых. Чтобы получить еще и картунную обводку (cartoon outline), выведите в виде отдельного слоя карту нормалей и преобразуйте ее в любимом композере при помощи фильтра Sobel. Вы получите достаточно примитивный и не всегда удачный, но вполне качественный контур, особенно если отрендерите картинку в двойном разрешении, а потом уменьшите ее обратно - это скроет возможные артефакты. По методам нефотореалистического рендеринга с помошью prman можно написать пару толстых и тяжелых книг, но мы ограничимся тремя фразами в этой вставке для любознательных - в надежде подтолкнуть вас в нужном направлении.
Как-нибудь на досуге поиграйте с другими переменными из списка Mode. Особый интерес представляет переменная uniform float CPUtime, которая в виде картинки покажет вам, на рендеринг каких части вашей модели тратится больше всего времени. А мы тем временем собираемся узнать, как вывести в отдельный слой произвольную переменную из нашего шейдера. Для простоты выберем не самый продуктивный, но зато самый интересный способ.
Итак, находим наш рукописный шейдер textured_.noise.sl и переименовываем в aov.sl (AOV означает Arbitrary Output Variable - общепринятое название используемой нами в данном случае методики):
surface textured_noise ( float freq=100; )
{
Ci = texture(“texture.tx”, s, t)*noise(freq*s,freq*t);
}
В код этого шейдера нужно внести некоторые дополнения, с тем, чтобы рендерер мог увидеть внутренние переменные:
surface aov (float freq=100;
output varying color tex = 0; output varying float noi = 0;)
{
tex = texture(“texture.tx”, s, t); noi = noise(freq*s,freq*t);
Ci = tex*noi; Исправления, которые мы только что внесли, очевидны: мы создали две новые переменные, которые специальным образом объявили в заголовке шейдера и этим переменным присвоили значения внутри шейдера.
Дальше начинается самое интересное. Компилируем шейдер, копируем получившийся файл aov.slo и используемую текстуру texture.tx в папку с майским проектом, прямо в корень (файл с исходным кодом шейдера aov.sl можно не копировать). Возвращаемся в MAYA, и в окне Slim делаем File=>lmport Appearance=> Import Appearance… (или нажимаем Ctrl-1). Выбираем наш aov.slo и вуаля - мы только что загрузили написаный руками шейдер в Slim. Импортированый таким образом шейдер имеет массу ограничений - например, к его параметрам нельзя присоединять другие темплейты, как мы это делали раньше - но тем не менее, удобство налицо.
Для продвинутых. Аналогичную операцию выполняет утилита командной строки toslim. Дальнейшая процедура тривиальна - присоединяем шейдер к овечке и рендерим: