当前位置: 首页 > 工具软件 > Katana > 使用案例 >

Katana instance for PRMAN

陆翔飞
2023-12-01

前言

前段时间在 katana 里测试 instance 遇到了一些坑,闲暇之余记录一下。

最灵活的方法

第一种方法:利用 katana 自带的 CopyLocationToChild1 把需要 instance 的物体 copy 到对应的层级,然后设置对应的 translate, rotate, scale 属性。
优点:这种方法异常简单,写在 OpScript 里运行也异常的快。灵活性相当高,比如说在 instance 的时候换个帽子,换件衣服什么的。比较适合 crowd instance。
缺点:渲染异常的慢。因为它的原理是把对应的模型不停复制,然后放置到对应的地方。假如有个模型只有50个面,你复制10次,那么场景里就有500个面。

PRMAN支持的方法

根据 PRMAN 的官方文档 Instancing in Katana2 ,里面提供了两种方法。
第二种方法:设置好 instance source 组。在 instance 组里指定 geometry.instaceSource 属性对应到 instance source 组的层级。
优点:对于手动 debug 来说比较方便定位到 instance 的东西。渲染速度非常快,因为同样的 mesh 不会重复。
缺点:编程就比较困难了,毕竟要处理一堆字符串。所有 instance 的物体是视图上看不到的,只能在渲染时看到。不够灵活,只适合 instance 没有变化的物体。每种 instance 需要对应一个层级。
:需要先把 instance group 设置好,再设置 instance。

第三种方法:设置好 instance source 组,并添加 instance.ID 属性。在 instance 组里指定 instance.ID 属性对应到 instance source 组的 instance.ID
优点:编程上会相对方便很多,因为我们不用处理层级字符串了。渲染速度非常快,因为同样的 mesh 不会重复。
缺点:通过手动去 debug 会比较困难。所有 instance 的物体是视图上看不到的,只能在渲染时看到。不够灵活,只适合 instance 没有变化的物体。每种 instance 需要对应一个层级。
:需要先把 instance group 设置好,再设置 instance。

最官方的方法

第四种方法:根据 katana 的官方文档 Instancing3,我们很容易创建第四种 instance。
优点:渲染速度非常快,编程非常方便,多种 instance 只需要一个层级。
缺点:所有 instance 的物体是视图上看不到的,只能在渲染时看到。不够灵活,只适合 instance 没有变化的物体。
:需要先把 instance group 设置好,再设置 instance。


  1. CopyLocationToChild ↩︎

  2. Instancing in Katana ↩︎

  3. Instancing ↩︎

 类似资料:

相关阅读

相关文章

相关问答