阿诺德程序对象模拟估计很少有人听说过,它可以解决克隆大量模型导致的卡顿情况。

前言

开始前大家可以先思考下,如果要做下面的效果会考虑使用什么效果器?

一般来说‍肯定是用克隆效果器,但问题是如此大量的克隆,在实际使用中会操作非常卡顿。Arnold Procedural(阿诺德程序对象)就可以帮助大家在场景搭建中保持轻量化,在调试场景的额时候保持高效和流畅。接下来就直接进入正题吧~

主要(Main)

  • 类型(Type):除了存档ASS(.ass,.obj,.ply), Alembic(.abc)或USD文件外,还可以在此处选择预编译的自定义程序插件(例如Mandelbulb程序),尽管目前C4DtoA均未提供这些插件。
  • 命名空间(Namespace):Procedural可以使用该参数自定义一个Namespace,命名后将自动替代Procedurals name,绝对路径或相对路径将通过Namespace引用内容;多个Procedural可以使用同一个Namespace,如此将会被共同引用;如果未指定任何Namespace,将会使用全局Namespace;
  • 范围(Scale):定义已加载档案的长度单位。不同的DCC以不同的单位工作,例如Maya中的默认单位为1cm,而Houdini中的默认单位为1m。
  • 显示边界框(Display bounding box):是否显示几何对象边界框;
  • 对象显示模式(Object display mode):对象显示模式;
  • 视窗代理:启用此选项可减少在视口中显示的点和多边形的数量。
  • 代理容限:视窗代理对象是通过“ Optimize Mesh”命令生成的,该命令需要公差输入。 如果点比该值彼此更接近,则它们将合并为一个点。如果这些点比该值相距更远,则不会合并它们。如果多边形变得多余(例如,如果多边形的所有三个角点都位于同一点),则将其删除。
  • 创建对象(Create object):如果启用,Procedural将作为对象生成器运行,场景中Procedural对象将作为普通几何体对象(直接在场景中计算参数,会加大运行负担)如果启用了此选项,则可以使用“生成对象”命令(按c)将过程转换为实际的多边形对象。
  • 显示节点:打开一个对话框,该对话框将过程的内容显示为节点树。您可以复制对象的名称并将其粘贴到参数替代的选择表达式中。

重写(Overrides)

  • 重写:选择“静默”或“禁用”所选Arnold程序的各种渲染选项。 这将覆盖过程文件中设置的值。 “静默”(默认设置)使用程序文件中设置的值。
  • 覆盖参数(Parameter Overrides):这些选项使您可以覆盖由过程对象创建的Arnold节点的任何参数(形状,着色器,光源等)。模式包括:none:无覆盖。操作符编辑器:使用对象树中的Arnold操作员网络。参数重写:在程序UI上指定替代。

资源(Assets)

将ASS文件所需要的一些资源,例如贴图,加载到此面板中;Arnold Procedural可以引用ASS文件中对C4DtoA“不可见”的内容。例如,如果在引用的ASS文件中带有一个带有纹理的对象,C4DtoA并不能检测到该贴图,此时就需要在Assets中手动添加;在此处定义与ASS文件中相同的路径(Path)非常重要。如果ASS文件中的路径是绝对路径,则必须在此处设置绝对路径。如果仅给出文件名,则还必须在此处设置文件名。如果ASS文件中有序列,需要使用#字符定义它。这是因为C4DtoA必须用客户端计算机上下载的资源替换ASS文件中的路径。请注意,绝对路径不适用于ass.gz文件;

ASS

Arnold可以将任何对象导出为ASS文件,也可以使用Arnold Procedural引用任何ASS文件,或Arnold支持的其他格式文件,比如.obj /ply;

  • 路径文件夹(Path):Arnold Procedural引用的文件的路径;存档的时候,会生成引用序列,有以下几种书写格式:
    ——name.#.ext e.g. name.1.ext, name.2.ext, name.3.ext, … , name.10.ext, … , name.100.ext, …
    ——name.##.ext e.g. name.01.ext, name.02.ext, name.03.ext, … , name.10.ext, … , name.100.ext, …
    ——name.###.ext e.g. name.001.ext, name.002.ext, name.003.ext, … , name.010.ext, … , name.100.ext, …
    ——name####.###.ext 指示帧数字的四位填充和子帧数字的三位填充
    例如:如果指定名为test001.ass的文件,它将被识别为test ###.ass形式的序列模式。如果要覆盖自动序列识别,可以手动更改路径字符串并替换相应文件名。
  • 开始帧(Strat frame):定义帧序列时定义动画的第一帧(在路径中使用#);
  • 结束帧(End frame):定义帧序列时定义动画的最后一帧(在路径中使用#);
  • 帧步幅(Step frame):定义帧序列时动画的增量(在路径中使用#)。例如,开始帧0,结束帧10,Step frame为3,则从动画中选择第0、3、6、9帧
  • 偏移(Offset):定义场景中动画开始帧。例如,Offset:2表示动画的第一帧位于第2帧。Offset:-2,将动画的第三帧定位在场景的第0帧;
  • 循环(Loop):定义动画的重复方式,none不重复,动画结束时不显示任何内容;freeze时间轴比实际帧数长时,多出的时间轴一直渲染最后一帧;repeat从头开始重复动画;ping pong先向前重复,再向后,再向前等等;

总结

关于阿诺德程序对象的面板介绍完后,需要知道的是如何去使用它。阿诺德程序对象的使用流程简单的可以分为:
1、将文件导出为ass文件。
2、将ass文件导入阿诺德ass路径中。
所以接下来需要知道如何导出ass文件,以及ass文件相关参数。也就是下面这个


可以导出单个对象以及由多个对象构成的整个层次结构;还可以导出单个或一系列帧。在这种情况下,C4D渲染器选项的帧填充值将用于ASS文件的名称;如果文件很大,可以启用Gzip compression(.ass.gz),将其压缩为gzip文件;Binary encoding启用后使用二进制压缩大型数组,建议保持默认;可以在Include和Frames定义要导出对象类型以及时间范围(帧范围);在导出期间,将使用Arnold的当前渲染设置。因此,要在导出Arnold Procedural之前调整好渲染设置。例如,是否要在启用运动模糊的情况下导出。

至此,阿诺德程序对象的使用就结束了。
除本篇介绍的程序对象可以解决克隆大量模型导致的卡顿外,还可以通过阿诺德散列来实现同样高效的结果,关于阿诺德散列会在下次进行分享,想要了解的朋友可以关注一下哟~