RenderMan DSO

本主题介绍 XGen RenderMan DSO 的操作以及其所有参数。文中介绍了相关的程序,以使您能实现让 XGen 渲染其本身的自定义方法。

操作

有两种形式的 XGen RenderMan 程序:面片和面。Rib 生成器负责将面片级别的程序调用置入 rib。当面片程序裂开时,XGen 将那些面片程序扩展到面程序。仅当面程序裂开时才会生成基本体,并且才会开始真正的渲染。面片程序可使用后面列出的所有标志。您必须为面片程序指定边界框。边界框必须绑定要渲染的所有面和所有基本体。如果边界框太小,则会执行剪裁。如果边界框太大,程序裂缝会打开得太快并且会浪费内存。边界框应绑定该面片的所有运动采样。

当面片程序裂开时,它将会分析参数。如果判断为这是首次遇到指定的选项板,它会加载选项板文件,读取运动采样对应的几何体,并将其缓存。然后对已命名面片上的所有面发射面程序。如果选项板已被缓存,则不会读取该文件,而是跳过该操作并开始发射已命名面片的面程序。

选项板基于其名称(包括名称空间的名称)来缓存。这可实现多次使用相同的 .xgen 文件来填充森林或树丛。但是,您必须为每个实例指定唯一名称,以使它们不会意外最终共享几何体。

将几何体文件单独缓存于选项板文件之外可实现更好的共享。例如,即便是在相同的选项板内,也经常会多次使用相同的几何体。这样您的森林中的一些树会是相同的。通过允许共享可节约内存。XGen 选项板不可共享,但基本几何体可以共享。

参数

程序提供一些参数作为标志。以下列举的每一项都附带简要说明以及表示是否可选的指示。

-debug 设置调试消息的级别(可选)。
-stats 设置统计消息的级别(可选)。
-warning 设置警告消息的级别(可选)。
-quitOnError 告知 XGen 在遇到任何错误时即退出(可选)。
-nameSpace 如果存在选项板的名称空间,使用此标志进行传递。请勿将名称空间附加到选项板名称上。
-palette 要渲染的选项板名称。此名称必须与使用 -file 标志传递的 .xgen 文件中的名称一致。
-description 要渲染的已命名选项板中的描述的名称。
-patch 属于描述和要渲染的选项板的面片(几何体)名称。
-frame 设置选项板要用作基础选项板帧的帧。指定的话,将由 -motionSamplesLookup 的值调整。
-motionSamplesLookup 用于加载几何体的运动采样偏移值列表。这些值被添加到通过 -frame 传入的值,以指定每个运动采样的帧值。但这并非添加到运动块的值,后者是通过 -motionSamplesPlacement 标志指定的。将这两者分离可实现对运动模糊效果的控制。
-motionSamplesPlacement 运动块值的列表。这些值直接用作 RenderMan 运动块调用中的值。通常此值与通过 -motionSamplesLookup 指定的间距一致,但如果需要运动模糊效果(如 strobbing),则此值不是必需的。
-file 此特定选项板/描述/面片的选项板 .xgen 文件。此文件只读入一次并为特定元素(名称空间)缓存。
-delta 以空格分隔的要应用到指定选项板文件的增量文件列表。它们按其查找到的顺序应用到选项板。
-geom 调色板的几何体缓存文件。它所包含的几何体可以超过选项板所需,另外还可以包含其他数据。XGen 会忽略自身不使用的数据。所需的是 XGen 所绑定的所有几何体的采样帧、静态拓扑和首选项对应的数据。为了获得最佳性能,几何体应位于对象空间中。
-fps 设置调色板的帧速率。
-world 设置应用于调色板的世界变换矩阵。
-interpolation 设置几何体缓存数据的插值方法。如果请求的帧不在缓存文件中,则使用它。支持的插值方法如下:
  • none - 未指定插值方法。使用之前请求的帧。
  • linear - 使用上一帧和下一帧。
  • quadratic - 使用三个帧。
  • cubic - 使用四个帧。
注: 文件名和其他名称不应置于引号内。运动采样值为浮点数。-quitOnError 标志不带参数。

RenderMan 设置

rib 文件中必需的设置的集合。这些设置不适合 xgen 文件,它会使文件特定于帧、摄影机或渲染相位(颜色对阴影)。它通常用于烘焙出包含风循环等元素的 rib,然后创建贯穿整个场景的 rib 实例。这些 RenderMan 设置允许在每个元素仍在渲染时实现这一点,如同元素在该位置渲染一样(即,朝向摄影机、消隐、细节级别仍然有效)。

# directory for writing temp files
Option "user" "string irCacheDir" ["/disk1/tmp/renderPipeTemp12766"]

# the current render phase
Option "user" "uniform string phase" ["Shadow"]
Option "user" "uniform string generator" ["key_dir"]

# the 'current camera/generator' (once in rib)
Attribute "user" "string irCurrentCam" ["true, -0.633307, -0.591462, -0.499094"]
Attribute "user" "string irCurrentCamFOV" ["90, 90"]
Attribute "user" "string irCurrentCamXform" ["0.773158, 0.0338928, 0.633307, 0, -0.511791, 0.623091, 0.591462, 0, -0.374562, -0.781414, 0.499094, 0, 0, 0, 0, 1"]
Attribute "user" "string irCurrentCamRatio" ["1"]

# tell xgen the 'render camera' (once in rib)
Attribute "user" "string irRenderCam" ["false, 5.33365, 7.04902, 14.19"]
Attribute "user" "string irRenderCamFOV" ["54.4321, 54.4321"]
Attribute "user" "string irRenderCamXform" ["0.93606, -0.148352, 0.319037, 0, 0, 0.906762, 0.421643, 0, -0.351842, -0.394683, 0.848783, 0, 0, 0, -16.718, 1"]
Attribute "user" "string irRenderCamRatio" ["1.94445"]

当使用 DAR 渲染方法时,irCacheDir 用于写出 dra 文件。有一种假设:在渲染阴影过程时,目录比在渲染颜色过程时深一个级别。相位表示渲染的类型:颜色或阴影。此假设为所有阴影渲染发生在颜色渲染之前。如果相位是阴影,则阴影生成器的名称随生成器选项一起指定。

接下来的两组值表示正在使用的摄影机。第一个是 irCurrentCam,表示当前摄影机或阴影生成器。所示示例是一个阴影渲染,因此当前摄影机为阴影生成器(即灯光)。第一个值是 bool,表示摄影机是否为正交,后面三个值为位置(当摄影机为透视时)或方向(当摄影机为正交时)。irCurrenCamFOV 是摄影机的视野(如示例所示,正交的值为 90,90)。irCurrentCamXform 是反向摄影机变换。最后,irCurrentCamRatio 是摄影机在 2K 的比率,用于随机细节级别。最终的属性按如下方法计算 2.0*focalLength/25.4044/horizontalFilmAperture.

下一组值为 irRenderCam,表示颜色过程的摄影机。如果可能,请为所有渲染都提供这两组值。如果无法生成这两组值,可仅提供当前摄影机的值,然后将这些值传递到这两组属性。

配置变量

另外,还有若干可用于控制渲染器的配置变量。这些变量中的一部分是 DSO 特有的,一部分是通用的,但由于它们都会影响到处理,因此包含在此作为引用。如果设置了这些变量,它们会覆盖上文所列的任何标志值。

FlipParam

此变量会对样条线基本体的参数化进行翻转,即在底部时为 1,在顶部时为 0。