在Renderman中渲染实体

时间:2015-03-10 18:55:21

标签: graphics rendering renderman

这是关于没有Maya(或任何此类GUI)界面的Renderman Pro Server 19。

Renderman文档清楚地解释了如何定义实体:https://renderman.pixar.com/forum/docs/RPS_19/ribBinding.php#rib-entity-file-example, 但它没有定义如何在我们的主代码中包含实体。

由于链接将来可能会失效,我将引用文档中的部分内容:

  

RIB实体文件包含单个用户实体。 RIB实体文件是   不完整,因为它们没有足够的信息来描述   框架到渲染器。 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 个答案:

答案 0 :(得分:0)

这可以通过使用Archive指令来完成。假设,我想将上面的代码包含在另一个文件中,比如 main.rib ,我只想说:

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

就好像{em> main.rib 文件中写有rib代码一样。