Рендеринг сущностей в Рендермане

Это касается Renderman Pro Server 19 без интерфейса Maya (или любого другого GUI).

Документация Renderman четко объясняет, как определять сущности: https://renderman.pixar.com/forum/docs/RPS_19/ribBinding.php, но нигде не определяет, как включить сущности в наш основной код.

Поскольку в будущем ссылка может прекратиться, я процитирую часть документации здесь:

Файл объекта RIB содержит один пользовательский объект. RIB Entity Files являются неполными, поскольку они не содержат достаточно информации, чтобы описать кадр для средства визуализации. Сущностные файлы RIB зависят от служб управления визуализацией для интеграции в "легальные" или полные RIB-файлы. Эти файлы предоставляют механизм для трехмерной "картинки", позволяя менеджерам рендеринга вставлять объекты в существующие сцены.

Файлы объектов RIB должны соответствовать соглашениям об объектах пользователя, описанным в разделе "Объекты пользователя". Подводя итог, пользовательский объект должен быть разделен блоком атрибутов, должен иметь атрибут name и должен полностью содержаться в одном блоке атрибутов. Три дополнительных требования также должны быть выполнены:

  • Подсказка к заголовку: ##RenderMan RIB-Structure 1.1 Объект должен быть включен в качестве первой строки файла.

  • Сущность должна быть построена в системе координат объекта, которая центрирована относительно начала координат.

  • Сущность должна иметь связанный запрос RIB для предоставления единой ограничительной рамки всех геометрических примитивов в Сущности пользователя.

и следующий код для примера сущности прилагается:

##RenderMan RIB-Structure 1.1 Entity
AttributeBegin  #begin unit cube
Attribute "identifier" "name" "unitcube"
Bound -.5 .5 -.5 .5 -.5 .5
TransformBegin
# far face
Polygon "P" [.5 .5 .5  -.5 .5 .5  -.5 -.5 .5  .5 -.5 .5]
Rotate 90  0 1 0
# right face
Polygon "P" [.5 .5 .5  -.5 .5 .5  -.5 -.5 .5  .5 -.5 .5]
# near face
Rotate 90  0 1 0
Polygon "P" [.5 .5 .5  -.5 .5 .5  -.5 -.5 .5  .5 -.5 .5]
# left face
Rotate 90  0 1 0
Polygon "P" [.5 .5 .5  -.5 .5 .5  -.5 -.5 .5  .5 -.5 .5]
TransformEnd
TransformBegin
# bottom face
Rotate 90  1 0 0
Polygon "P" [.5 .5 .5  -.5 .5 .5  -.5 -.5 .5  .5 -.5 .5]
TransformEnd
TransformBegin
# top face
Rotate -90  1 0 0
Polygon "P" [.5 .5 .5  -.5 .5 .5  -.5 -.5 .5  .5 -.5 .5]
TransformEnd
AttributeEnd  #end unit cube

Теперь было бы очень неудобно включать один и тот же кусок кода снова и снова в основной файл RIB (требуются абстракции), поэтому сущности кажутся хорошим вариантом.

Итак, как мне включить эти объекты в мой основной файл?

1 ответ

Решение

Это можно сделать с помощью Archive директивы. Предположим, я хочу включить приведенный выше код в другой файл, скажем main.rib, я просто скажу:

# main.rib
# other_stuff
    ReadArchive "unitcube.rib"

И это будет, как будто это rib код был написан в файле main.rib.

Другие вопросы по тегам