Что же такое Renderman? Это - стандарт описания трехмерных данных для их последующей визуализации. В сборнике часто встречающихся вопросов и ответов ньюсгруппы comp.graphics, rendering.renderman написано так: “Renderman - стандартный интерфейс между программами моделирования и рендеринга для создания высококачественного фотореалистического изображения”. Создавая стандарт Renderman {а работа эта началась в доисторические времена

- еще в 1987 году), компания Pixar поставила перед собой достаточно амбициозную цель: пытаясь воспользоваться идеями формата файлов Postscript как некоей среды для обмена векторными двухмерными данными {а к тому моменту Postscript был уже широко развит и использовался повсеместно), сделать аналогичный шаг и создать новый универсальный формат для обмена информацией между системами для моделирования и анимации и системами для рендеринга, который был бы достаточно универсален для того, чтобы занять место Postscript в мире трехмерных приложений.

Основная особенность стандарта Renderman в том, что данный стандарт разделяет понятия геометрии в сцене и материала, который накладывается на данную геометрию. Параметры и строение сцены описываются посредством Renderman Interface. В первоначальном варианте спецификации стандарта этот интерфейс был для языка программирования С, используя который вы могли написать программу, которая бы вызывала рендерер и передавала ему необходимые параметры. Чтобы отрендерить прямоугольник, было необходимо написать приблизительно такую программу (текст программы адаптирован из книги RenderWan Companion):

^include <ri.h>

RtPoint Square[4] = { {.5,.5,.5}, {.5,-.5,.5J,

{-.5,-.5,.5}, {-.5,.5,.5} };

int main(void)

I

Ri Begin (RLNULL);

Ri Display ("RenderMan”, RLFRAMEBUFFER, “rgb”, RLNULL);

RiFormat{(Rtlnt) 256, (Rtlnt) 192, 1.0);

RiShadingRate(I.O);

RiWorldBegin();

RiSurface(“plastic”, RLNULL);

RiPolygon( (Rtlnt) 4, RI_P, (RtPointer) Square, RI_NULL);

Ri World End ();

RiEnd();

return 0;

}

Ничего особо страшного, ной приятного тоже маловато - для человека с непрограммистским складом ума. В качестве дополнительной возможности первой спецификации значился экспорт данных в промежуточный формат данных под названием RIB, что расшифровывается как Renderman Interface Bytestream. Вот как выглядит та же сцена в этом формате (я получил ее, скомпилировав приведенный выше код на С в исполняемый файл и запустив полученную программу):

Display “RenderMan” "framebuffer” “rgb”

Format 256 192 1 ShadingRate 1 WorldBegin Surface “plastic”

Polygon “P” [0.5 0.5 0.5 0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5]

World End

Интуиция вас не подвела: впоследствии окажется, что в большинстве случаев гораздо удобнее работать именное форматом RIB, который и стал основной частью Renderman Interface, хотя возможность использования С-интерфейса по-прежнему существует (для тех случаев, например, когда вам проще генерировать геометрию процедурно, чем моделировать ее традиционным путем).

У файлов в формате RIB, описывающих геометрию сцены, обычно (внимание!) такое расширение: *.rib, В нашем примере вы видели обычное текстовое представление этого формата, однако стандартом также предусматривается двоичное представление таких файлов. Такие двоичные файлы занимают гораздо меньше места и хорошо подходят для случаев, когда сцена не требует дальнейшей обработки и все, что нужно сделать - передать файл рендереру. Как указано в спецификации формата, RIB изначально предполагался не как средство обмена геометрической и структурной информацией между различными системами моделирования и анимации, но как средство передачи данных от таких систем к рендерерам, то есть файлы такого формата не обязательно должны быть максимально удобными для импорта в программу-моделлер, но должны представлять максимум информации для последующего рендеринга.


⇐ вернуться назад | | далее ⇒