Arnold 场景源 (ass)

.ass 文件结构

Arnold 的原生场景描述文件格式(称为“.ass”文件)是一种易于读取的 ASCII 文本文件。.ass 文件通常包含作为一系列节点的摄影机、灯光、模型几何体和着色器及其连接和参数。

适用于 Maya、Houdini 等的 Arnold DCC 插件可以导出 ass 文件。Arnold 的命令行渲染器 kick 可以用于将这些 ass 文件渲染为图像文件。

.ass 文件示例

下面是一个简单的 .ass 文件,其中包含选项块、过滤器节点、驱动程序、摄影机、灯光、多边形网格和着色器。

 options
{
 AA_samples 3
 outputs "RGBA RGBA myfilter mydriver" 
 xres 720
 yres 486
}
gaussian_filter
{
 name myfilter
 width 2.0
}
driver_tiff
{
 name mydriver
 filename "image.tif"
 color_space auto
}

persp_camera
{
 name mycamera
 fov 53.638 
 matrix
 1 0 -0 0
 -0 0.995 -0.0995 0
 0 0.0995 0.995 0
 0 2 20 1 
}

distant_light
{
 name mylight
 matrix
 0.78867512 -0.21132487 -0.57735025 0
 -0.21132487 0.78867512 -0.57735025 0
 0.57735025 0.57735025 0.57735025 0
 1 1 1 1 
 color 1 1 1
 intensity 1
 cast_shadows on
}

polymesh
{

 name mysphere
 nsides 6 1 BYTE 3 3 3 3 3 3 
 vidxs 18 1 UINT 
 3 2 0 2 3 1 4 3 0 3 4 1 2 4 0 4 2 1 
 nidxs 18 1 UINT 
 0 0 1 0 0 2 3 3 4 3 3 5 6 6 7 6 6 8 
 vlist 5 1 VECTOR 0 -4 0 0 4 0 -4 0 0 2 0 3.4641015 
 2 0 -3.4641015
 nlist 9 1 VECTOR 
 -0.5 0 0.8660254 -0.44721359 -0.44721359 0.77459669 
 -0.44721359 0.44721359 0.77459669 1 0 0 
 0.89442718 -0.44721359 0 0.89442718 0.44721359 0
 -0.5 0 -0.8660254 -0.44721359 -0.44721359 -0.77459669
 -0.44721359 0.44721359 -0.77459669 
 smoothing on
 matrix
 1 0 0 0
 0 1 0 0
 0 0 1 0
 0 0 0 1 
 shader myshader
}

standard_surface
{
 name myshader
 base 0.7
 base_color 0 1 0
 specular 0.05
 specular_color 1 1 1
 specular_roughness 0.3
} 

与 Python 一样,单行注释以“#”字符开头。

节点和参数

Arnold 是基于不同类型的节点构建的。例如,目前有着色器节点、摄影机节点、灯光节点、过滤器节点、几何体(也称为“形状”)节点和输出驱动程序节点。每个节点都有多个参数。

每个类型的节点均通过唯一的名称(options、persp_camera、polymesh、lambert 等)进行标识。对于每个节点类型,可以包含任意数量的节点。每个节点由称为“name”的字符串参数来唯一标识。要创建节点,您可以写入节点类型,并将参数值定义括在花括号中。例如:

 lambert
{
 name my_white_shader
 Kd 0.9
 Kd_color 1 1 1
} 

节点

下面是 ass 文件中一些比较重要的节点。

参数

所有参数都有默认值,因此您不需要明确设置所有可用参数。默认参数值可以通过 Arnold 的命令行渲染器 kick 进行查询。例如,要在 Lambert 着色器中查找参数 Kd 的默认值,请键入以下内容:

% kick -info lambert.Kd
node: lambert
param: Kd
type: FLOAT
default: 0.7 

最常见的类型包括 BOOL、INT、UINT、ENUM、FLOAT、MATRIX、VECTOR、NODE 和 STRING。

数组

基本类型的数组(例如 VECTOR[ ] 或 FLOAT[ ])采用以下语法指定:

parameter_name <num_elements> <num_motionblur_keys> <data_type> <elem1> <elem2> <elem3> <elem4> ... 

例如,polymesh 节点有一个称为 vlist 的参数,它是存储多边形顶点的点数组:

% kick -info polymesh.vlist
node: polymesh
param: vlist
type: VECTOR[]
default: (empty) 

因此,通过一个包含三个向量的数组,可以指定一个具有单个三角形的多边形网格:

 polymesh
{
 ...
 vlist 3 1 VECTOR 0 0 0 1 0 0 0 0 1
 ...
} 

运动模糊

对于支持运动模糊的参数,您可以为每个运动模糊时间采样(或“关键帧”)定义多个值。以下示例显示了具有两个运动关键帧的三角形的顶点列表,其中三角形已经沿 Y 方向移动了 5 个单位:

vlist 3 2 VECTOR 0 0 0 1 0 0 0 0 1 0 5 0 1 5 0 0 5 1 

通过改为存储静态三角形顶点并提供多个变换矩阵,可以实现相同的垂直运动:

 vlist 3 1 VECTOR 0 0 0 1 0 0 0 0 1
 matrix 1 2 MATRIX
 1 0 0 0
 0 1 0 0
 0 0 1 0
 0 0 0 1
 1 0 0 0
 0 1 0 0
 0 0 1 0
 0 5 0 1 

有关 .ass 文件示例,请单击此处