On this page | |
Since | 19.0 |
Overview ¶
This lets you bring work done in Houdini into the a LOP network for layout, lighting, and rendering.
Tips and notes ¶
-
By default this node does not import anything because the Objects list is blank. You must specify a list of node paths/patterns in this field to import objects.
-
Containment relationships (object subnets containing other objects) at the object level are translated into prim hierarchy in USD.
-
Wiring relationships (objects wired into other object to specify parenting) at the object level are also translated into prim hierarchy unless you turn on Ignore inputs.
Customizing scene import ¶
Expert users can write Python plugins to customize how specific Houdini object node types are translated into USD. This is especially useful to translate custom node types, such as light and camera types associated with proprietary renderers. It may also be useful to modify or add to the translation of common object node types to handle custom data or workflows, or generate custom data on the USD side.
Note
You must be familiar with Pixar’s USD Python APIs to implement a translator plugin.
See writing a Scene Import LOP object translator plugin for more information.
Parameters ¶
Import All Time Samples
Imports animated data for each frame within the range specified below. For any animated parameter or SOP geometry, this creates time samples on the resulting USD attributes.
Since this immediately stores all time samples within USD attribute data, the node doesn’t become time-dependent and doesn’t need to be recooked when scrubbing to a different frame.
Depending on the amount of animated data, the import can take a lot longer than the import of just the current frame, which occurs when this toggle is disabled.
Frame Range
When Import all time samples is on, the range of frames to import. By default the parameters have expressions that set this to the full frame range of the timeline.
Substeps
When Import all time samples is on, the number of substeps between frames.
Import Objects
Whether to import Object nodes (models, cameras, and lights) into USD, mapping as many parameter values as possible to standard USD attributes.
Destination Path
Prefix the node path of each imported object with this path to create its scene graph path. The default is /
, which imports objects at the root level.
Root Object
Only look at Object nodes inside this node network path. The default is /obj
, which means the node will try to import all Object nodes.
Objects
A list of node paths to import. If this is blank (the default), the node imports nothing. Set this to *
to try to import all Object nodes.
Include Invisible Geometry
Control whether to import geometry that has its Object-level display flag turned off. If disabled, the geometry will not be imported at all. If enabled, the geometry will still be imported, but the USD prim will be marked as invisible.
Force Objects
A list of object name patterns to match for Object-level nodes that should always be imported and marked as visible, regardless what their Object-level status is.
Exclude Objects
A list of object name patterns to match for Object-level nodes that should never be imported, even if they also appear in Objects or Force Objects.
Filter
Choose whether to import all Object node types, or only Cameras, only Lights, or only Geometry objects.
Make Conflicting Paths Unique
When this is on, the node will add numbers to names to ensure prims at the same level have unique names. When this is off, conflicting names will make the node stop cooking and show an error.
Name conflicts most often occur when Flatten Hierarchy is enabled, but can also happen because by default the scene graph path is built from both containment and wiring relationships at the object level.
Flatten Hierarchy
Imports every object directly under the Destination Path, ignoring containment and wiring.
Ignore Inputs
Don’t use the parent-child wiring relationships between object nodes to create prim hierarchy.
Import Bundles As Collections
Convert Object-level bundles to USD collections.
Collection Prim
When Import Bundles As Collections is on, the USD prim to use for the collections.
Import SOP Geometry
Import the geometry generated by SOP nodes inside Geometry objects as USD geometry. Turning this off might be useful if you only want to import the transform hierarchy from the objects, and want to treat actual geometry separately.
As Reference
When importing SOP geometry, this controls whether to create references on the current layer, or new sublayers (one per geometry). In both cases, Destination Path is used to create a consistent hierarchy.
SOP Import Mode
When importing SOP geometry, this controls whether the node with the Display flag or Render flag is used. Choosing Default will make the choice on a per-node-type basis, and will generally use the node with the Render flag (and exception is for the hairgen node where it will use the node with the Display flag).
Set Subdivision Scheme to Match Object Parameters
When Import SOP geometry is on, check for rendering properties that control subdivision on the object, and set the USD Subdivision Scheme to match.
Primitive Definition ¶
Parameters in this group guide the translation process in terms of how USD primitives are generated from the source SOP geometry.
Packed USD Primitives
What to do with packed USD primitives in the imported SOP geometry.
Ignore
Ignore packed USD primitives in the source SOP geometry.
Overlay Transforms
Import the transformation of the packed USD primitive as an override (Over
) prim. This makes it easy to transform the packed USD prims without unpacking them.
Overlay Transforms and Attributes
In addition to Overlay Transforms, point or primitive SOP attributes on the packed USD primitive are imported as primvars with constant
interpolation.
Other Primitives
What to do with regular non-packed primitives (points, curves, polygons, spheres, and so on).
Define
Create the USD prims for the imported geometry if they don’t already exist. This is the standard way to import geometry.
Overlay
Create the USD prims as overrides. They will only be visible as changes to any prims that exist at a lower level with the same paths. This may be useful where you only want to import and modify certain attributes from SOPs onto existing USD geometry.
Overlay Transforms
Like “Overlay”, but only imports transform data.
Define Only Leaf Primitives
Author intermediate primitives (for example, any Xform
prims created for the Import path prefix) as overrides instead of definitions. This means if they don’t match up with underlying prims in lower layers, the leaf prims won’t be added to the scene. This is useful if you only want to import the geometry if its ancestors already exist in the scene tree.
(Note that all of the data is still imported, it just may not be visible in the scene graph tree or the viewport.)
Packed Primitives
What to do with SOP-native packed primitives.
Create Xforms
Creates an Xform
prim from the packed primitive’s transform and attributes, and the packed primitive’s geometry is imported underneath.
Create Native Instances
Import the geometry in packed primitives as instanceable references. This imports each piece as a prototype under a Prototypes
prim under the Import Path Prefix prim.
Create Point Instancer
Import the geometry in packed primitives as point instanced geometry. This imports each unique piece as a prototype under the point instancer prim.
You can assign a SOP primitive attribute to the packed primitive named usdinstancerpath
to specify the USD scene graph path of the instancer.
Unpack
Only imports the packed primitive’s geometry. Unlike the Create Xforms mode, this does not create any additional hierarchy, and is equivalent to unpacking the packed primitive prior to being imported. This can be useful for importing multiple pieces of geometry without merging their attributes.
Agents
What to do with agent primitives. In all modes, a prim is created from the agent primitive’s transform and attributes, and the agent’s geometry and animation are imported underneath.
Create Instanced SkelRoots
Imports the agent’s skeleton and geometry as instanceable references to a SkelRoot
prim enclosing the skeleton and skinned primitives.
This imports each unique agent definition as a prototype under an agentdefinitions
prim under the Import Path Prefix prim.
Create SkelRoots
Creates a SkelRoot
prim enclosing the agent’s skeleton and skinned geometry, which is imported underneath.
This will be less efficient than Create Instanced SkelRoots for a large crowd, but can be useful for e.g. importing a single character where instancing is unnecessary.
Create Instanced Skeletons
Imports the agent’s skeleton as an instanceable reference to a Skeleton
prim.
This imports each unique agent definition as a prototype under an agentdefinitions
prim under the Import Path Prefix prim.
Create Skeletons
Imports the agent’s skeleton as a Skeleton
prim under the agent’s Xform
prim.
This will be less efficient than Create Instanced Skeletons for a large crowd, but can be useful for e.g. importing a single character where instancing is unnecessary.
Create SkelAnimations
Only imports the agent’s joint animation, creating a SkelAnimation
prim.
This can be used to efficiently import a sequence of frames, since the agent’s skeleton and rest geometry are typically unchanged between frames.
NURBS Curves
What to do with NURBS curve primitives.
Convert to Basis Curves
Import the curves as a BasisCurves
primitive.
This only supports cubic curves, but is useful for rendering through Hydra.
Create NURBS Curves
Import the curves as a NurbsCurves
primitive.
This provides complete round-tripping of NURBS curves, but has limited support for rendering through Hydra.
NURBS Surfaces
What to do with NURBS surface primitives.
Convert to Meshes
Import the surface as a Mesh
primitive, which can be useful for rendering through Hydra.
Create NURBS Patches
Import the surface as a NurbsPatch
primitive.
This can be useful for round-tripping of NURBS surfaces, but has limited support for rendering through Hydra.
Kind Authoring
How to assign kinds to imported prims.
All Geometry is One Component
Set root primitives in the imported tree to Component. Do not set kinds on descendants.
Nested Groups and Components
Set leaf primitives in the imported tree to Component. Set branch primitives to Group.
Nested Assembly, Groups, and Components
Set root prims in the imported tree to Assembly. Set intermediate branch prims to Group. Set leaf prims to Component.
None
Do not set kinds on the imported prims.
Path Attributes
A (comma or space-separated) list of names of SOP primitive string attributes to use to use as prim paths to put the SOP geometry into. The default is path,name
. See geometry hierarchy above.
If the list has more than one attribute, the importer checks each attribute for the first non-empty value.
If the string value a full path, that path is used as the USD scene graph path for that primitive. If the string is a relative path (or just a name), the string is appended to the Import Path Prefix string to generate a full scene graph path.
If none of the listed attributes exist on a given SOP primitive, or all values are an empty string, the importer generates a name automatically (for example, sphere_0
).
Prefix Absolute Paths
Whether absolute path values from Path Attributes should be prefixed/parented or not. By default this is off and only relative path values are prefixed.
Import HeightFields as Mesh
If the source SOP geometry contains a height field volume, it will be imported as polygonal mesh. Other layers will be imported as vertex primvar if the values are varying, or constant primvar if the values are constant.
Geometry Handling ¶
These parameters provide options to alter the interpretation of the SOP geometry data.
Treat Polygons as Subdivision Surfaces
For polygon meshes that are not already tagged with a subdivision scheme, author a subdivisionScheme
attribute set to catmullClark
. This will convert them to subdivision surfaces.
Subdivision Group
If Treat Polygons as Subdivision Surfaces is on, only convert polygons in this primitive group into subdivision surfaces.
Reverse Polygon Vertex Ordering
USD supports an orientation
attribute on mesh primitives that indicates whether polygons have a left-handed or right-handed ordering, while SOP geometry is always left-handed ordering. When this option is on, the importer always reorders vertices (and associated primvars) to be right-handed.
This is useful when round tripping right-handed oriented polygons from USD into SOPs and back into USD. The data is always converted to a left handed ordering when importing it into SOPs. If you imported the polygons back into USD without this option, they would be left-handed, unlike the original.
Set Missing Widths
USD has a fallback value of 1.0 for the width of Curves and Points, which is often far wider/thicker than desired. If the SOP geometry does not explicitly author width/pscale data, this control can be used instead to explicitly author a USD value.
Import Data ¶
These parameters affect the conversion of SOP geometry attributes into USD attributes and primvars, and the choice between default and time sampled value authoring.
Topology Attributes
Controls whether USD topology attributes should be authored as time sampled or default values.
The following attributes are treated as topology attributes:
Primitive Type |
Attributes |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Animated
If you know that topology is changing in the source geometry over time, choose this option to record topology attributes as time samples in the USD scene graph. Having animated topology can be very expensive during playback, so only use this option when necessary.
Static
Write topology attributes as default values. This can make playback much faster, but limits how the topology can change over time.
None
Do not author topology attributes.
This is useful when USD data is sent to SOPs for processing, then brought back into LOPs. Using this option tells the importer that the geometry topology has not changed in this process, so only the changing point positions or other primvars will be imported.
Attributes
A space-separated list of attribute names/patterns specifying the SOP attributes to import into USD as primvars.
In addition to matching attribute names directly, there are some values with special meanings:
bounds
Authors the USD extent
attribute using the calculated bounding box of the associated SOP geometry.
visibility
Authors the USD visibility attribute based on the value of the usdvisibility
geometry attribute.
See importing attributes for information on how the importer converts certain well-known Houdini attributes to their USD equivalents.
Indexed Attributes
A space-separated list of attribute names/patterns specifying the SOP attributes to import into USD as indexed primvars.
If a SOP attribute matches this pattern, the importer authors the primvar as an indexed array of values (that is, an array of values called primvars:‹name›
, and an array of indices into those values called primvars:‹name›:indices
).
Preparing an indexed primvar can be expensive for attributes that are not integers or strings. You should only use indexed primvars where it is likely to result in significant savings in storage size due to a small number of unique values being used across a large number of components.
Import as Single Element Array
A space-separated list of attribute names/patterns specifying the SOP attributes to import into USD as primvars with Constant
interpolation (an array with a single value for the whole primitive), regardless of whether the SOP geometry attribute is a point, primitive, or vertex attribute. If multiple values could be chosen for a particular USD primitive, the importer chooses the first value it encounters.
Importing as a single element array (versus Import as Single Value) can be useful since it allows the primvar’s interpolation to be overridden without changing the primvar’s type.
Import as Single Value
A space-separated list of attribute names/patterns specifying the SOP attributes to import into USD as primvars with Constant
interpolation and a single value for the whole primitive, regardless of whether the SOP geometry attribute is a point, primitive, or vertex attribute. If multiple values could be chosen for a particular USD primitive, the importer chooses the first value it encounters.
This is the default behavior for how detail attributes are imported.
This is similar to Import as Single Element Array, but the primvar’s type is a scalar value instead of an array with a single element (for example, vector3f
instead of vector3f[]
).
Boolean Attributes
A space-separated list of attribute names/patterns specifying which integer SOP attributes should be converted to primvars of type bool
.
Set Default Values
A space-separated list of attribute names/patterns specifying the SOP attributes to always author as default values for USD primvars (never time samples). This is the list of exclusions when Author Time Samples is set to If Not Specifically Excluded.
Partition Attributes
A space-separated list of attribute names/patterns specifying which SOP primitive string attributes represent subsets of the geometry. For mesh and curve primitives, the importer puts elements with the same value for this attribute into their own geometry subsets.
The importer will try to set the subset name to the attribute value, but may need to change the name to make it a legal USD primitive name. The importer stores the raw attribute value on the geometry subset prim as Custom Data with the key partitionValue
.
Prefix Subsets with Attribute Name
When creating subsets from Partition Attributes, the subsets are named by combining the attribute name with the partition attribute’s value (a string or integer). This avoids name collisions when multiple partition attributes contain the same values, but can be undesirable if precise control of the subset names is required. For string attributes, if this option is turned off, the attribute values are directly used as the subset names.
Subset Groups
A space-separated list of group names/patterns specifying SOP primitive groups. SOP polygon and curve primitives in each group are imported as a geometry subset, named for the group.
USD Custom Attributes
A space-separated list of attribute names/patterns specifying the SOP attributes to import into USD as attributes (rather than primvars).
Translate UV Attribute to ST
When turned on, converts the SOP vertex attribute uv
into a USD primvar called primvars:st
. Whether you need to turn this on depends on the renderer you are using and how your shaders are authored. If you are rendering with Karma, leave this off.
(As of this writing there is no strict standard for texture coordinate naming in USD, but the use of st
is a common convention, whereas in SOP geometry, using uv
is the common convention.)
Import Materials
Whether to import materials (either from the list below, or materials assigned to imported objects).
Destination Path
Prefix the node path of each imported material with this path to create its scene graph path.
Flatten Hierarchy
Imports every material directly under the scene graph path in Materials ▸ Destination Path, ignoring any intermediate subnets or input object.
Materials Assigned to Objects
Import any materials assigned to imported objects.
Materials Assigned to SOP Geometry
Import any materials assigned at the geometry level inside imported objects.
Collection Based SOP Material Assignment
Applies material bindings via collections (as opposed to direct material bindings).
Additional Materials
Import any material VOP node paths listed in this parameter.
Verbose Messages
Whether to expand certain warnings/errors or not. When off, the node typically reports the first instance of an issue (such as being unable to import an object) and a count of other such instances. When on, the node will report a complete list of every problematic instance.
See also |