场景图数据的生成过程
如前所述,真正的核心Katana我们要渲染的内容由一棵过滤器树描述,并且这些过滤器旨在按需进行评估。现在,我们将详细介绍如何Katana生成场景图数据。
用户拥有的主要界面是Node Graph标签。他们创建了一个节点网络来指定诸如Alembic文件之类的内容。创建材料和照相机;设置编辑和覆盖;他们可以在一个项目中创建多个渲染输出。节点的参数可以设置为动画,使用表达式进行设置以及在Curve Editor和Dope Sheet意见。的Node Graph可以有多个输出,甚至有分开的断开部分,并且在时间轴上的任何时候都有可能具有不同的参数设置。
当我们要评估场景数据时,例如在UI中进行渲染或检查值时,将使用节点创建对所有所需过滤器的描述。该过滤器树具有单个根,表示在我们用于输出的特定节点上为当前帧创建场景图数据所需的过滤器配方。
正是此过滤器树描述传递给输出过程,例如3Delight或Renderman。对于讨厌的人:这实际上是通过将滤镜树的序列化描述作为输出过程的参数(例如,渲染过程的字符串参数)处理的。
场景图数据的实际生成是通过使用对过滤器的此描述来创建场景图迭代器来完成的。然后将它们用于遍历场景图,并访问场景中任何所需位置的属性值Scene Graph标签。这种使用迭代器的方法是Katana的可伸缩性以及如何按需生成所有场景图数据。
使用过滤树,第一个基本迭代器位于/root被建造。可以查询得到:
• 该位置的命名属性列表。
• 任何特定的命名属性或属性组的值。对于动画值,可能有多个时间样本,并且返回与快门间隔有关的任何样本。
• 用于子级和同级位置的新迭代器,用于遍历层次结构。
在用户界面内部使用此过程检查场景图数据时, Scene Graph, Attributes和Viewer标签。在用户界面中,当用户扩展场景图并检查结果时,将调用与渲染时使用的相同的过滤器和库。这允许用户检查在当前帧的任何节点上生成的场景图数据。TD可以将UI用作IDE,以可视化编程方法设置过滤器,然后运行这些过滤器以查看它们如何影响所生成的场景图数据。
稍后将详细介绍这些API,但是用于创建和修改节点图的主要API是Python NodegraphAPI,而用于创建新过滤器的主要API是C ++ Scene Graph Generator API和Attribute Modifier Plug-in API。