Не нужно иметь зрение горного орла, чтобы увидеть, что не только рендеринг прошел гораздо быстрее, но и в результате мы получили гораздо более качественную картинку (не меняя при этом установок по умолчанию в обоих рендерерах). При этом Gelato подхватил все установки MAYA и воспроизвел их своими средствами.
Что же произошло за кадром, пока мы слушали песню вентилятора нашей Nvidia GeForce Quad го FX 3000 (кстати, пока я это писал - вентилятор уже выключился)? Заглянем в директорию c:\temp - в ней появились 3 новых файла:
gelato. pyg gelato.bat
gelato„perspShape. pyg
Внутри этих файлов находится самое интересное - геометрия, которую Mango экспортировал из АШАв собственный формат Gelato. Правильнее говоря - Mango эскпортировал в формат PYG - один из форматов, поддерживаемых Gelato. Казалось бы, разница между двумя фразами минимальна, но она показывает глубокое философское различие между Gelato и другими рендерерами. Это
- одно из тех различий, на которых мы остановимся и которое, возможно, вас удивит.
Различие это состоит в том, что в Gelato нет формата сцены по умолчанию. Формат шейдера есть (GSL), а формата сцены - нет. Вместо этого пользователю представляется хорошо документированный программный интерфейс API и возможность написать в соответствии с этим интерфейсом плагин к рендереру, который и будет заниматься вопросами загрузки геометрии. Понятное дело, что взять и просто так выпустить на рынок рендерер, в который по умолчанию нельзя загрузить геометрию вообще - это глупость, поэтому для Gelato придумали свой собственный формат PYG, представляющий из себя программу на языке Python. В общем, смотрите сами, перед вами кусочек файла с овечкой:
World ()
PushTransform ()
SetTransform (((0.736097, 0, -0.676876, 0),
(-0.130758, 0.981164, -0.142198, 0),
(-0.664126, -0.193179, -0.722232, 0),
(17.6053, 12.845, 21.3661, 1)))
Light (“mayaDefaultLight”, “distantlight”,
“point to”, (0.5, -0.5, 1))
PopTransform ()
PushAttributes ()
Attribute (“string name”, “sheep:sheep”)
AppendTransform ( ((1, 0, 0, 0),
(0, 1,0, 0), (0, 0, 1,0),
(0, 0, 0, 1)) )
Очень похоже на RIB (что неудивительно), но это не обычный текстовый файл, а минипрограмма. Значит, мы можем взять и сделать из нее настоящую программу: например, написать цикл, или загрузить данные из другого файла, или прочитать ввод пользователя из консоли, или даже загрузить данные из Интернета - в нашем распоряжении вся мощь языка программирования Python!
Энтузиасты Renderman немного скривились - что ж, в их руках такой мощной игрушки нет. А мы тем временем нанесем им еще один удар - загрузив с сайта Nvidia плагин к Gelato, который позволяет использовать в качестве файлов геометрии RIB-файлы. Действительно, а почему бы и нет, если есть открытый API? Попробуем эту возможность в бою: временно откладываем в сторону MAYA и вызываем командную строку:
gelato test2.rib и немедленно получаем на экране окно с результатами рендеринга:
Как видно, Gelato без особых проблем справился с RIB’om, благо шейдер “Plastic”, который мы использовали с нашей тестовой сцене, входит в поставку - равно как и все остальные шейдеры из стандарта Renderman (сказывается Entropy-шное прошлое).