Skip to content

Scene Assembly Nodes#

The Scene Assembly nodes are a set of nodes used to generate, manage organize and edit scene content. There are 3 categories of Scene Assembly nodes:

  1. Scene Generator nodes to generate items or bring assets/scenes (USD, ABC, Clarisse projects…) into the build assembly.
  2. Editing nodes to perform editing and overriding type of operations on items
  3. Item Management nodes to filter, merge, prune items.

Scene Generator Nodes#

Scene Generators are nodes which provide a collection of scene items. They are typically containers that can be used to directly create scene items or to bring assets such as Alembic or USD caches and Clarisse projects into the build. With the exception of Context and Reference nodes, Scene Generators support lazy evaluation and provide on-demand partial asset loading.

For example, depending on the rule set on an Isolate node connected to a Read Abc, the Read Abc, may be requested on a small part of the asset it defines. In that case only the request and needed part of the Alembic cache scene ends up being loaded.

Context#

The Context is the simplest scene generator available in Clarisse. It’s a very flexible container on which you are free to create, edit and remove any number and any type of items.

However, unlike most other scene generators, contexts don’t specify any filename. Their content is directly saved in the build file. As a result, the content of contexts is always loaded upfront at the same time as the build. In other words, the content of contexts isn’t loaded on an as-needed basis.

Tip

We recommend to keep the content of your standard contexts relatively small or, even better, we recommend to externalize such contexts as a Clarisse project using File > Export > Context as Project.... Once externalized, it is possible to bring them back in your build using a Read Project node. If you follow this tip, there’s a good chance you builds are gonna keep loading fast!

Read Abc#

The Read Abc node brings an Alembic cache in the build. The node is only evaluated when setting the node or a downstream dependency as vizroot or if part of an evaluation during rendering. In other words, the content of the Alembic cache is only read when needed.

Note

When an Alembic cache is brought to the build using a Read Abc node, its content is read-only. You must use an Edit or Override node to edit its content.

Attribute Description
Filename Filename of the Alembic cache

This node status bar displays useful information in the Build View.

Status Bar Description
Hatched The node hasn’t been evaluated
Red The input file was not found

Read Usd#

The Read Usd node brings an USD cache in the build. The node is only evaluated is only evaluated when setting the node or a downstream dependency as vizroot or if part of an evaluation during rendering. In other words, the content of the USD scene is only read when needed.

Note

When an USD scene is brought to the build using a Read Usd node, its content is read-only. You must use an Edit or Override node to edit its content.

Attribute Description
Filename Filename of the USD scene

This node status bar displays useful information in the Build View.

Status Bar Description
Hatched The node hasn’t been evaluated
Red The input file was not found

Read Project#

The Read Project node brings a Clarisse project in the build. The node is only evaluated when setting the node or a downstream dependency as vizroot or if part of an evaluation during rendering.

In other words, the content of the Clarisse project is only read when needed.

Note

When an Clarisse project is brought to the build using a Read Project node, its content is read-only. You must use an Edit or Override node to edit its content.

Attribute Description
Filename Filename of the Clarisse project

External Dependencies#

Sometimes input projects can have external dependencies. This typically happens if the project was exported while it was using items defined in another file such as described here.

In that case, you need to use a Merge node to locate and resolve external dependencies.

This node status bar displays useful information in the Build View.

Status Bar Description
Hatched The node hasn’t been evaluated
? The input file has external dependencies
Red The input file was not found

Reference#

The Reference node brings a Clarisse project as a reference. As a result, the content of the node is always loaded upfront at the same time as the build so unlike Read Project it isn’t loaded on an as-needed basis. Unlike Read Project nodes, items are not read-only. It is possible to directly edit items in the reference without the need of Edit or Override nodes. We strongly recommend you not to use Reference nodes in your build but use Read Project ones instead.

Attribute Description
Filename Filename of the Clarisse project

This node status bar displays useful information in the Build View.

Status Bar Description
Hatched The node hasn’t been evaluated
Red The input file was not found

Editing Nodes#

In the build assembly, you can’t directly modify attributes of items coming from Scene Generators or Item Management nodes. Only items created at the top level of the build assembly can be freely modified. If you set a node as vizroot, and select an item in the Explorer, you’ll notice that you can’t edit its attribute via the Attribute Editor because they are read-only. This is perfectly normal because the workflow has been designed to be a flow of successive operations where you explicitly have to use nodes to perform specific operations at one point of your build. Editing is one of them, so you must use an editing node to set at which point of the build the modification on the item occurs. As a result, items can have multiple representations throughout their life in the build assembly.

Note

Items living inside their parent Contexts or References can be freely modified without the use of an Editing node. However, once they are injected to the build assembly though Item Management nodes, you must use an Editing node in order to edit their attributes.

The build assembly provides a set of specialized editing nodes to either edit items individually or apply edits on multiple items at the same time.

Edit#

The Edit node applies a set of modifications on items coming from an input Scene Assembly node. The Edit node also can be used to create new items and remove existing ones without the need of using additional set of nodes.

Attribute Description
Input Context Define the Input Context on which edits will be applied.
Edit List Display the list of all edits stored in the node.
Added Items Display the list of items that have been created through the edit node.
Removed Items Display the list of items that have been deleted through the edit node.
Pass Through Bypass the evaluation of the node when enabled.
Action Description
Remove All Edits Clear all edits

Unlike in Clarisse iFX References, you can’t directly modify an item located in a Edit node. Indeed, if you display an item of an Edit node in the Attribute Editor, its attributes will be displayed as read-only. To edit an item you must explicitly mark it as editable.

Note

The edit resolution is performed by item and attribute names. An edit is only applied when an incoming item is matching. As a result you can freely change the input of an edit node or simple reuse it.

Editing items#

To edit items, you must first explicitly set your Edit node as vizroot. Then using the Explorer, for example, Right Button on the item you wish to edit and choose Edit on the popup menu. Once the item is marked as editable you can freely modify its attribute values.

Creating new items#

Just set the Edit node as vizroot and create the item the way you normally would in Clarisse. If you select the Edit node in the Attribute Editor, it is possible to see the list of newly created items via Added Items attribute.

Deleting items#

Just set the Edit node as vizroot and delete the item the way you normally would in Clarisse. If you select the Edit node in the Attribute Editor, it is possible to see the list of deleted items via Removed Items attribute. To bring back a removed item, just remove the entry from the Remove Items list.

Clearing all edits#

To clear all edits of your Edit node in place while preserving your build assembly, select your Edit node and press on Remove All Edits in the Attribute Editor.

This node status bar displays useful information in the Build View.

Status Bar Description
Construction Stripes The node has edits

Tip

Edits applied on items are displayed in the Explorer.

Override#

The Override node applies modifications to a set of item attributes using by a rule. The Override node is useful when you want to apply a specific edit to a group of items at once. For example, you would create an Override node to toggle the Display Visible attribute of all incoming items.

Attribute Description
Input Context Define the Input Context on which overrides will be created.
Pass Through Bypass the evaluation of the node when enabled.

Adding Overrides#

There are two ways to add an attribute overrides. The first one is by Right Button on the attribute name you wish to override in the Attribute Editor and select Override in the pop-up menu.

Override Menu

This will create a new attribute override in the Override node. To view the newly created attribute override, just select the Override node so that the Attribute Editor lists all available attribute overrides.

The second way of creating attribute overrides is by using the Override Creation Window. To add a new override, select the Override node to display it in the Attribute Editor. Then on the Override tab, Right Button and select Override > Create.... A window should popup letting you create your override.

Override Editor

Field Description
Name Set the name of the override that is used when displayed by the Attribute Editor.
Rule Set the rule identifying the item(s) attribute. The rules support wildcards * and dot . is used as attribute name separator. For example: *box.display_visible will target the attribute display_visible of every item for which the name ends with box.
Exclusion Rule Set an exclusion rule useful to exclude a group of item attributes.
Group Specifying a group allows you to organize the override so that it is display under a custom horizontal tab in the Attribute Editor.
Type Set the data type of the override. While strictly not necessary it is recommended to match the targeted attributes when possible.
Container Set the container type of the override
Size Set the number of attribute values (1 for scalar, 3 for RGB color…)
Texturable Set if the override is texturable
Animatable Set if the override is animatable
Shading Variable Set if the override supports shading variables
Numeric Range Set the valid numeric range of the override
Ui Range Set the user interface limit range of the override

Once you’ve set your override, press Ok and your override will appear in the Attribute Editor.

Editing Overrides#

To edit an existing override, select the Override node to display it in the Attribute Editor. Then Right Button on the override you wish to edit and select Override > Edit.... A window will popup letting you edit your override.

Removing an Override#

To remove an override, select the Override node to display it in the Attribute Editor. Then Right Button on the override you wish to remove and select Override > Remove.

Removing all overrides#

To clear all overrides of your Override node in place while preserving your build assembly, select your Override node and press on Remove All Overrides in the Attribute Editor.

This node status bar displays useful information in the Build View.

Status Bar Description
Construction Stripes The node has overrides

Tip

Overrides applied on items are displayed in the Explorer.

Item Management Nodes#

Item Management nodes are a set of nodes that allows you to procedurally manipulate scenes using rules in order to define, in a non destructive way, the content of render scenes. Item Management nodes can operate on two distinct hierarchies at the scene time during scene assembly:

  • The traditional kinematic (or parenting) hierarchy where items are parented to each other and generally meaningful to animators.
  • The context hierarchy which is an asset based hierarchy designed to help you organize your render scenes specially for rendering and layering visibility while being free of the constraints of an existing kinematic hierarchy.

New to Clarisse?

The working hierarchy Clarisse is the context hierarchy. However it is still possible to display and work with the kinematic hierarchy using the Hierarchy View widget. Please refer to the Hierarchy View for more information.

Merge#

The Merge node merges multiple inputs together in order to assemble scenes. For each input, the Merge node allows you to specify locations where the merge should be performed for both context and kinematic hierarchies. In the event the specified context or kinematic locations do not exist, the Merge node automatically inserts missing contexts or locators respectively.

Attribute Description
Dependencies Set input contexts that are defining external dependencies of Inputs. This is typically useful when you are merging projects that have pending or external items.
Transmit Externals When enabled transmit external items to the next node so that they can be resolved later on in the graph.
Base Set an optional Scene Assembly node that acts as the root for the merge operation. This allows to perform a merge into for example.
Inputs Define the inputs to be merged. For each input it is possible to set the destination location for the merge for both kinematic and context hierarchy. By default, the input is merged into a context named after the name of the input.
Pass Through Bypass the evaluation of the node when enabled.

Base input#

The Base input defines the root of the merge node so that all merging operations are performed into the Base input. For example, if you connect a context1 with a box inside as Base of a merge node, the resulting location of the box will be in the root of the merge node.

Please note that you can omit to set a Base input as it is possible to set the location of each input node so that they their content is merged into the root of the merge node for example.

<Input> tag#

By default input contexts item locations are preserved in merge nodes. So, when you connect a context1 with a box inside, as input of a merge node, the resulting hierarchy of the merge node contains context1/box located at the root of the merge node.

merge node1

However, it is possible to change this behavior by removing the <Input> tag of the input’s Context location. When no location is provided, the merge node merges the content of the input in its root.

merge node2

Item collision handling and importance of the order of merge inputs#

It is possible to have inputs for which contents may collide with each other when merged. This can happen in the event your Merge node has two inputs that are defining items with same names merged in the same destination.

For example, let’s say you have a two contexts context1 and context2 both defining an item named box. Let’s imagine that the box in context1 is translated in to (-5, 0, 0) and the one in context2 translated to (5, 0, 0). Finally let’s say context1 is the first input of our Merge node and context2 the second one and both locations are empty so that the content of each input is merged to the root of our node.

We get a collision between the two box here and to solve this collision the Merge node always favors the last input over others. In other words, the resulting box in the Merge node is the one located in context2 (context2/box). As a matter of fact this behavior is very useful because it allows you to work in layers of modifications.

Merging External Dependencies#

When you assemble projects through ReadProject nodes you may see a question mark icon located in the bottom left of a vizroot node:

Merge External

This indicates that at least one of the inputs of the merge node is defining external items. Note that you can also visualize the external items using the Explorer by simply setting the vizroot to the merge node.

Externals will always be displayed within the ext:/ root:

ext: in Explorer

When that happens, you can use the Dependencies input of the merge node to resolve them by simply plugging contexts or projects defining dependencies into Dependencies.

Please note that it is also possible to specify a mount point path for each dependency in order to relocate them before being merged when necessary.

Mount Point#

Specifying a Mount Point is useful to resolve external paths in some cases. Let's say for example that in one of the merge input we have a scatterer needing an external assets/rock.

The idea is to bring the project defining the missing assets/rock external dependency using a ReadProject.

Then to relocate the external, we need to plug it to the Dependencies attribute of the merge node and set its Mount Point to assets using the Attribute Editor.

Mount Point

Destination#

Specifying a Destination is useful to bring the resolved external dependencies into a destination context. Indeed, this is useful since resolved external items are always hidden as if they were isolated (see Isolate).

Tip

While you can bring resolved externals in your scene assembly context by specifying a Destination context, only direct dependencies are brought in. For example, you'll get materials without their entire texture node graph. To bring the full material graph in the context, you also need to add the context containing the dependencies as Input. Please note that the connections will be automatically rewired for you.

Transmit Externals#

When Transmit Externals is enabled, external items are transmitted down the scene assembly graph so that they can be resolved later on, in the graph, using another edit node. This is the default mode.

However, when Transmit Externals is disabled, external items no longer exists after the merge node. In fact, items with externals are then no longer connected to their external dependencies as if they didn't exist.

For example, let's say we have a combiner combiner with its Objects list linking to a external box item. In an edit node set up with Transmit Externals off, the Objects list would be empty (once output from the edit node) as if that connection to box never existed.

Isolate#

The Isolate node isolates the content of an input based on rules. The Isolate node is meant to filter out part of an incoming scene or asset. Note that Isolate is a non-destructive operation. Connection to items from the incoming scene are still kept even if they are not part of the isolate selection. These item are simply hidden at the output of the Isolate node. In other words, Isolate can be used to filter out a complex setup to expose in the build only the items you want.

For example, let’s say you bring a Clarisse project describing a complex environment made with scatterers using a lot of geometries that are already lookdeved. If you use an Isolate node to filter out everything except the scatterer, the scatterer will still render fine even if its dependencies are not exposed to downstream nodes in the build.

Attribute Description
Input Context Set the input Scene Assembly node to perform isolation operation on.
Isolate Rules Set the rules that target items you want to isolate from the rest of the input. This field supports multiple rules.
Filter Specify the class (or type) of items for which the rule is evaluated. For example, if you set the filter to Camera, the rule will only target items inheriting from the Camera class. When no filter is specified, rule is applied to all items whatever their classes.
Isolate Mode Control the isolate node resulting hierarchy path.
Rule Mode The isolate node has two ways of targeting items. When set to Exclude Target, the isolate node will filter out any items matching the Isolate Rules. For example, if you set the rule *, the node will filter out everything from Input Context. However, when set to Include Target, the isolate node will isolate only but the items matching the Isolate Rules. In that case the rule * will keep everything from Input Context and thus have no effect.
Rule Set Set a rule set to use for rule resolution.
Rule Set Mode When set to Override (default value), the node only evaluates rules defined in the input Rule Set. When set to Merge, the rule set is merged to the rules defined by the node.
Pass Through Bypass the evaluation of the node when enabled.
Action Description
Extract Rules Create a new Rule Set node that includes all the rules defined in the node.

Isolate Mode#

The Isolate Mode allows you to control the resulting or destination path of the isolated sub-scene. It is very useful to relocate part of your scene in a specific context using a merge node. For example, let's say we have isolated the following asset: /path/to/my/asset/final_version/my_asset

By default, Isolate Mode is set to Keep Full Parent Context Hierarchy, so original paths of items are kept. This means that if you are then merging /path/to/my/asset/final_version/my_asset to a /asset context, you will get the following hierarchy: /asset/path/to/my/asset/final_version/my_asset

Fortunately Clarisse provides you with several modes to control the path after an isolation:

Isolate Mode Description
Keep Full Parent Context Hierarchy Keep the original input hierarchy of the items.
Keep Parent Context Keep only the parent context of the items so that /path/to/my/asset/final_version/my_asset becomes /final_version/my_asset
Skip Parent Context Omit the parent context as if the item was located in the root so that /path/to/my/asset/final_version/my_asset becomes /my_asset

Prune#

The Prune node removes the content of an input scene assembly node based on rules. Unlike the Isolate node, the rule of the Prune node targets the elements you want to remove. Moreover, the difference doesn’t only stop there as pruning is a destructive operation. When you prune elements that are connected to each other the connection are severed as if the dependency didn’t exist.

For example, let’s say you bring a scene that has a box and a material. When you prune, the material, the resulting box has no more material assigned. The pruning operation acts as if you had removed the items using an Edit node.

Attribute Description
Input Context Set the input Scene Assembly node to perform a prune operation on.
Pruning Rules Define the rules used to target items you want to remove from input according to the Pruning Mode attribute. This field supports multiple rules.
Filter Specify the class (or type) of items for which the rule is evaluated. For example, if you set the filter to Camera, the rule will only target items inheriting from the Camera class. When no filter is specified, rule is applied to all items whatever their classes.
Rule Mode The prune node has two ways of targeting items to prune. When set to Exclude Target, the prune node will prune any items matching the Pruning Rules. For example, if you set the rule *, the node will remove everything from Input Context. However, when set to Include Target, the prune node will prune everything but the items matching the Pruning Rules. In that case the rule * will keep everything from Input Context and thus have no effect.
Rule Set Set a rule set to use for rule resolution.
Rule Set Mode When set to Override (default value), the node only evaluates rules defined in the input Rule Set. When set to Merge, the rule set is merged to the rules defined by the node.
Pass Through Bypass the evaluation of the node when enabled.
Action Description
Extract Rules Create a new Rule Set node that includes all the rules defined in the node.