|On this page|
Sometimes with instanced geometry you want to replace an instance with a more controllable object. For example, you might have a destruction simulation with fractured chunks flying around. For chunks that come close to the camera, you often want to replace them with higher-resolution geometry, and also art-direct them (for example, so they don’t appear to come too close to the camera lens).
This node creates a copy of an instance in a new prim (with the correct transforms so it appears to be in the same position), and hides the instance, making the new prim appear to replace the instance.
How to select the instance(s) to extract.
Specify a list of individual instances using
Specify a list of paths to instanceable prims.
A space-separated list of instances, using
/path[instance_index] syntax (for example,
/geometry/instancer /geometry/instancer). The index within the square brackets can be an inclusive range, for example
/geometry/instancer[4-7]. You can refer to instances of nested instancers using multiple indexes, for example
When Type is "Native Instances", a list of paths to instanceable prims.
The scene graph path under which to put newly extracted prims. Under this prim, for each extracted instance, the node will create an
Xform with the same
name as the instancer), and under that the extracted prim (named
For example, if you set Primitive path to
/geometry/heroes, and extract instances
/geometry/instancer1, the node creates the extracted prims at
Where to copy the "extracted" prim from.
Use the prototype the instance was instancing.
From Existing Primitives
Get the prim from an arbitrary path in the scene graph tree. For example, you might replace an instance with a higher-resolution "hero" geometry, or switch between render and proxy purposes. The node takes care of hiding the instance and copying its transform.
When Prototype is "From existing primitives", the scene graph path to the prim to copy to make the "extracted" prim.
Modify Source Primitive
When Prototype is "From existing primitives", what to do with the primitive you based the "extracted" prim on (from Prototype primitive).
Do Not Modify Source Primitives
Don’t do anything to the original prim.
Hide Source Primitive
Set the visibility of the original prim to "hidden".
Recreate the instance’s material bindings on the extracted prim. (If the bound material is a descendant of the prototype, the materials will work automatically when extracted. Otherwise you can turn this on to rewrite the bindings.)
Extracting instances can be costly, and while the instances you want to extract may not be time dependent, the stage itself may be. This would force the node to cook every frame, unnecessarily.
These parameters let you "freeze" the extraction at a specific frame, making the stage non time-dependent.
If you do this, the entire stage will be frozen. You may want to branch off the extraction and prune all other prims before sublayering the extracted prim(s) back onto the stage.
How to specify the time at which to extract the instance(s), either by frame or by time.
The frame number at which to extract the instance(s). The default is an expression
$F, which uses animation if present. To always extract from a frozen stage, delete the expression and set this to an explicit frame number.
The time (in seconds) at which to extract the instance(s). The default is an expression
$T, which uses animation if present. To always extract from a frozen stage, delete the expression and set this to an explicit time.
Rounds the Frame to the nearest integer frame, avoiding fractional frame cooking. Note that when shifting by time, fractional frames are always allowed.