This document explains the way we name the exported Arnold nodes after the corresponding Softimage objects.
We try, as much as we can, to have a unique syntax for all the nodes (in older SItoA versions, we had several different ways to compose the names, and different characters to separate the name fields.
This also to give a scripter/developer the ability to retrieve a given node out of the native Softimage object, and viceversa. For instance, after an .ass file has been exported, a user may want to edit one of its nodes having as a reference the Softimage scene.
As a general rule, the names have the following format:
Softimage Object Full Name + ".SItoA." + something
where "something is a string depending on the node type and described in more details below.
So, if you need to retrieve the Softimage object out of the Arnold node name, you can simply trim the name string up to the last occurrence of the ".SItoA." substring.
Viceversa, if you need to retrieve an exported node name out of a Softimage object, here are the details, depending on the node type:
|Softimage Object||Arnold Node(s)||Arnold Node(s) Name|
|Mesh||polymesh||Mesh FullName + ".SItoA." + time|
|Light||point_light, distant_light, etc.||Light FullName + ".SItoA." + time|
|Camera||camera||Camera FullName + ".SItoA." + time (2.6, was Camera plain Name in 2.5|
|Shader||standard, utility, etc.||Shader FullName + ".SItoA." + time + "." + UniqueId|
|Standin||procedural||Standin FullName + ".SItoA." + time|
|Instance||ginstance||Instance Model FullName + " " + master node name|
|Instance of light||light (cloned)||Instance Model FullName + " " + master node name|
|Hair||one curves per chunk||Hair FullName + ".SItoA." + time + "." + chunkId|
|Shape on hair||one polymesh per strand||Hair FullName + ".SItoA." + time + "." + strandId + " " + master node name|
|PointCloud Shape||Arnold Node(s)||Arnold Node(s) Name|
|Points||points (mode=disk)||PointCloud FullName + ".SItoA.Disk." + time|
|Sphere||points (mode=sphere)||PointCloud FullName + ".SItoA.Sphere." + time|
|Disc||one disk per point||PointCloud FullName + ".SItoA.Disc." + time + "." + discId|
|Box | Rectangle||one box per point||PointCloud FullName + ".SItoA.Box." + time + "." + boxId|
|Cylinder||one cylinder per point||PointCloud FullName + ".SItoA.Cylinder." + time + "." + cylinderId|
|Cone||one cone per point||PointCloud FullName + ".SItoA.Cone." + time + "." + coneId|
|Instance||one ginstance per point||PointCloud FullName + ".SItoA.Instance." + time + "." + instanceId + " " + master node name|
|Lights||one light (cloned) per point||PointCloud FullName + ".SItoA.Instance." + time + "." + instanceId + " " + master node name|
|Strands||curves||PointCloud FullName + ".SItoA.Strands." + time|
|Shape on strands||one polymesh per strand||PointCloud FullName + ".SItoA.InstancedStrands." + time + "." + strandId|
where time is the Softimage frame multiplied by 1000 and cast to integer. In cpp that's:
We use spaces in just one case, that is instances, for IPR reasons. For example, if you have a cube under a Model at frame 35, the cube is exported as:
If this model is instanced by Model_Instance, then the instanced cube is exported as
So, also for ginstance nodes, it is easy to retrieve the master node and its Softimage object.
The various ID's (chunkId, discId, etc.) are unique integers, needed when several Arnold nodes derive from a unique Softimage object. For instance, say you have a pointcloud setting the particle shape to cone. A unique Softimage object (the point cloud) is exported as a collection of Arnold cone nodes, and each must have a unique name, as required by Arnold. This is what the .ass file looks like at frame 35: