RenderManAPI  24.0
Group Class Referenceabstract

Base class for scene graph DAG nodes. More...

#include <RixSceneGraph.h>

Inherited by AnalyticLight [virtual], Camera [virtual], ClippingPlane [virtual], and Geometry [virtual].

Public Member Functions

virtual DagType GetDagType () const =0
 Get the DAG type. More...
 
virtual RtUString GetIdentifier () const =0
 Return the DAG node identifier. More...
 
virtual Error SetIdentifier (RtUString identifier)=0
 Set the DAG node identifier. More...
 
virtual Error SetTransform (unsigned numsamples, RtMatrix4x4 const *xforms, float const *times)=0
 Set the transform. More...
 
virtual Error SetTransformNumSamples (unsigned numsamples)=0
 Set the number of transform motion samples. More...
 
virtual Error SetTransformSample (unsigned sample, RtMatrix4x4 const &xform, float time)=0
 Set a single transform motion sample. More...
 
Error SetTransform (RtMatrix4x4 const &xform)
 Set a static transform. More...
 
Error SetIdentity ()
 Set the identity transform. More...
 
virtual unsigned GetTransformNumSamples () const =0
 Return the number of transform motion samples. More...
 
virtual Error GetTransformSample (unsigned sample, RtMatrix4x4 &xform, float &time) const =0
 Get a single transform motion sample. More...
 
virtual Error SetHidden (int state)=0
 Set hidden state. More...
 
virtual int GetHidden () const =0
 Get hidden state. More...
 
virtual Error AddCoordinateSystem (Group *coordsys)=0
 Add scoped coordinate system. More...
 
virtual Error RemoveCoordinateSystem (Group *coordsys)=0
 Remove scoped coordinate system. More...
 
virtual Error RemoveAllCoordinateSystems ()=0
 Remove all scoped coordinate systems. More...
 
virtual unsigned GetNumCoordinateSystems () const =0
 Get the number of scoped coordinate systems. More...
 
virtual GroupGetCoordinateSystem (unsigned idx) const =0
 Get scoped coordinate system by index. More...
 
virtual Error AddChild (Group *child)=0
 Add a child DAG node. More...
 
virtual Error RemoveChild (Group *child)=0
 Remove a child DAG node. More...
 
virtual Error RemoveAllChildren ()=0
 Remove all child DAG nodes. More...
 
virtual unsigned GetNumChildren () const =0
 Return the number of child nodes. More...
 
virtual GroupGetChild (unsigned idx) const =0
 Return a pointer to any child DAG nodes. More...
 
virtual unsigned GetNumParents () const =0
 Return the number of parent nodes. More...
 
virtual GroupGetParent (unsigned idx) const =0
 Return a pointer to any parent DAG nodes. More...
 
virtual GroupFindDagNode (char const *path) const =0
 Find a DAG node from a identifier path. More...
 
virtual MaterialGetMaterial () const =0
 Get material binding. More...
 
virtual Error SetMaterial (Material *material)=0
 Set material binding. More...
 
virtual Error OverrideMaterial (Material *material, unsigned depth, Group **path)=0
 Override material binding. More...
 
virtual RtParamList const & GetAttributes () const =0
 Get attribute list. More...
 
virtual Error SetAttributes (RtParamList const &attributes)=0
 Set attribute list. More...
 
virtual Error SetNested (bool state)=0
 Set nesting state. More...
 
virtual bool GetNested () const =0
 Get nesting state. More...
 
virtual Error SetInheritTransform (bool value)=0
 Set inherit transform. More...
 
virtual bool GetInheritTransform () const =0
 Return inherit transform. More...
 
 Group ()=default
 
virtual ~Group ()=default
 

Detailed Description

Base class for scene graph DAG nodes.

DAG (directed acyclic graph) nodes exhibit parent-child relationships with other DAG nodes to describe scene hierarchy. They are used to represent basic scene primitives such as transforms, cameras, lights, and geometry.

Constructor & Destructor Documentation

◆ Group()

Group::Group ( )
inlinedefault

◆ ~Group()

virtual Group::~Group ( )
virtualdefault

Member Function Documentation

◆ AddChild()

virtual Error Group::AddChild ( Group child)
pure virtual

Add a child DAG node.

The scene graph DAG hierarchy is constructed of parent-child relationships where children nodes inherit instance properties from parent nodes such as transformation, attribute state, and coordinate systems. An object is considered instanced when it is reachable from the scene root via multiple DAG paths. These DAG paths are formed when a child node has multiple parents. In order to form unique DAG paths, node identifiers should be unique among children.

See also
Group::RemoveChild
Group::RemoveAllChildren
Group::GetNumChildren
Group::GetChild
Group::GetNumParents
Group::GetParent
Scene::Root
Parameters
[in]childThe child DAG node
Returns
Error code

◆ AddCoordinateSystem()

virtual Error Group::AddCoordinateSystem ( Group coordsys)
pure virtual

Add scoped coordinate system.

The object-to-world transformation of coordsys nodes are inherited as a named coordinate system that may be used for shading. Transformations are resolved as the closest unique relative path between this node and the coordsys node. Ambiguous instance transformations are ignored.

See also
Group::RemoveCoordinateSystem
Group::RemoveAllCoordinateSystems
Group::GetNumCoordinateSystems
Group::GetCoordinateSystem
Parameters
[in]coordsysThe coordinate system node
Returns
Error code

◆ FindDagNode()

virtual Group* Group::FindDagNode ( char const *  path) const
pure virtual

Find a DAG node from a identifier path.

Returns a DAG node based on the string identifier path relative to this node. DAG node paths should use the same separator given to Manager::CreateScene.

See also
Group::SetIdentifier
Manager::CreateScene
Parameters
[in]pathIdentifier path
Returns
The DAG node. Returns nullptr when the specified node cannot be found.

◆ GetAttributes()

virtual RtParamList const& Group::GetAttributes ( ) const
pure virtual

Get attribute list.

Parameters that are attached to scene graph DAG nodes and may vary per geometry instance are called attributes. In the scene graph, attribute state is inherited by updating parameters along DAG hierarchies to generate the instance attribute list used for rendering. Attributes define instance properties such as visibility as well as user parameters used for instance variation when shading.

See also
Group::SetAttributes
Returns
Attribute list

◆ GetChild()

virtual Group* Group::GetChild ( unsigned  idx) const
pure virtual

Return a pointer to any child DAG nodes.

The scene graph DAG hierarchy is constructed of parent-child relationships where children nodes inherit instance properties from parent nodes such as transformation, attribute state, and coordinate systems. An object is considered instanced when it is reachable from the scene root via multiple DAG paths. These DAG paths are formed when a child node has multiple parents. In order to form unique DAG paths, node identifiers should be unique among children.

See also
Group::AddChild
Group::RemoveChild
Group::RemoveAllChildren
Group::GetNumChildren
Group::GetNumParents
Group::GetParent
Scene::Root
Parameters
[in]idxThe child index
Returns
The child node or nullptr for invalid index

◆ GetCoordinateSystem()

virtual Group* Group::GetCoordinateSystem ( unsigned  idx) const
pure virtual

Get scoped coordinate system by index.

The object-to-world transformation of coordsys nodes are inherited as a named coordinate system that may be used for shading. Transformations are resolved as the closest unique relative path between this node and the coordsys node. Ambiguous instance transformations are ignored.

See also
Group::AddCoordinateSystem
Group::RemoveCoordinateSystem
Group::RemoveAllCoordinateSystems
Group::GetNumCoordinateSystems
Parameters
[in]idxThe coordinate system index
Returns
Coordinate system node or nullptr for invalid index

◆ GetDagType()

virtual DagType Group::GetDagType ( ) const
pure virtual

Get the DAG type.

The DAG type describes the role of the scene graph node. For example: Group, Camera, Mesh, etc..

Returns
DAG type

◆ GetHidden()

virtual int Group::GetHidden ( ) const
pure virtual

Get hidden state.

Hidden objects are not visible in render but may still contribute as coordinate systems. The hidden state is inherited when unspecified. The default is unspecified.

See also
Group::SetHidden
Returns
Hidden state Hidden state: -1 (unspecified), 0 (unhide), 1 (hide)

◆ GetIdentifier()

virtual RtUString Group::GetIdentifier ( ) const
pure virtual

Return the DAG node identifier.

Node identifiers are concatenated along DAG hierarchies to uniquely identify DAG paths. Node identifiers themselves do not need to be unique.

See also
Group::SetIdentifier
Returns
The DAG node identifier

◆ GetInheritTransform()

virtual bool Group::GetInheritTransform ( ) const
pure virtual

Return inherit transform.

Enable or disable inheriting parent transformations when generating the object-to-world transform. The default is true.

See also
Group::SetInheritTransform
Returns
Enable/disable inherit transform

◆ GetMaterial()

virtual Material* Group::GetMaterial ( ) const
pure virtual

Get material binding.

Material bindings determine the active bxdf, displacement, and light and light filter shading graph assignments. Materials bindings are inherited and may vary per instance.

See also
Group::SetMaterial
Group::OverrideMaterial
Returns
Currently bound material container or nullptr if unbound

◆ GetNested()

virtual bool Group::GetNested ( ) const
pure virtual

Get nesting state.

Nested DAGs avoid flattening during scene transveral. This can reduce memory consumption for heavily nested structures at the cost of slower ray traversal. The default is false.

See also
Group::SetNested
Returns
Nested state

◆ GetNumChildren()

virtual unsigned Group::GetNumChildren ( ) const
pure virtual

Return the number of child nodes.

The scene graph DAG hierarchy is constructed of parent-child relationships where children nodes inherit instance properties from parent nodes such as transformation, attribute state, and coordinate systems. An object is considered instanced when it is reachable from the scene root via multiple DAG paths. These DAG paths are formed when a child node has multiple parents. In order to form unique DAG paths, node identifiers should be unique among children.

See also
Group::AddChild
Group::RemoveChild
Group::RemoveAllChildren
Group::GetChild
Group::GetNumParents
Group::GetParent
Scene::Root
Returns
The number of children

◆ GetNumCoordinateSystems()

virtual unsigned Group::GetNumCoordinateSystems ( ) const
pure virtual

Get the number of scoped coordinate systems.

The object-to-world transformation of coordsys nodes are inherited as a named coordinate system that may be used for shading. Transformations are resolved as the closest unique relative path between this node and the coordsys node. Ambiguous instance transformations are ignored.

See also
Group::AddCoordinateSystem
Group::RemoveCoordinateSystem
Group::RemoveAllCoordinateSystems
Group::GetCoordinateSystem
Returns
The number of coordinate system nodes

◆ GetNumParents()

virtual unsigned Group::GetNumParents ( ) const
pure virtual

Return the number of parent nodes.

The scene graph DAG hierarchy is constructed of parent-child relationships where children nodes inherit instance properties from parent nodes such as transformation, attribute state, and coordinate systems. An object is considered instanced when it is reachable from the scene root via multiple DAG paths. These DAG paths are formed when a child node has multiple parents. In order to form unique DAG paths, node identifiers should be unique among children.

See also
Group::AddChild
Group::RemoveChild
Group::RemoveAllChildren
Group::GetNumChildren
Group::GetChild
Group::GetParent
Scene::Root
Returns
The number of parents

◆ GetParent()

virtual Group* Group::GetParent ( unsigned  idx) const
pure virtual

Return a pointer to any parent DAG nodes.

The scene graph DAG hierarchy is constructed of parent-child relationships where children nodes inherit instance properties from parent nodes such as transformation, attribute state, and coordinate systems. An object is considered instanced when it is reachable from the scene root via multiple DAG paths. These DAG paths are formed when a child node has multiple parents. In order to form unique DAG paths, node identifiers should be unique among children.

See also
Group::AddChild
Group::RemoveChild
Group::RemoveAllChildren
Group::GetNumChildren
Group::GetChild
Group::GetNumParents
Scene::Root
Parameters
[in]idxThe parent index
Returns
The parent node or nullptr for invalid index

◆ GetTransformNumSamples()

virtual unsigned Group::GetTransformNumSamples ( ) const
pure virtual

Return the number of transform motion samples.

Transforms are concatenated together along DAG hierarchies to generate the object-to-world transform. The motion sample count may be set independently of the actual motion sample values.

See also
Group::SetTransformNumSamples
Returns
The number of motion samples

◆ GetTransformSample()

virtual Error Group::GetTransformSample ( unsigned  sample,
RtMatrix4x4 xform,
float &  time 
) const
pure virtual

Get a single transform motion sample.

Transforms are concatenated together along DAG hierarchies to generate the object-to-world transform. Motion sample values may be set independently of the motion sample count.

See also
Group::SetTransformSample
Parameters
[in]sampleMotion sample index
[out]xformMatrix sample
[out]timeTime sample
Returns
Error code

◆ OverrideMaterial()

virtual Error Group::OverrideMaterial ( Material material,
unsigned  depth,
Group **  path 
)
pure virtual

Override material binding.

Material bindings determine the active bxdf, displacement, and light and light filter shading graph assignments. Materials bindings are inherited and may vary per instance. Material binding may be overriden based on a relative DAG path where the terminal node should be this node.

See also
Group::SetMaterial
Group::GetMaterial
Parameters
[in]materialThe material container
[in]depthThe DAG path depth or zero to remove all overrides.
[in]pathThe DAG path
Returns
Error code

◆ RemoveAllChildren()

virtual Error Group::RemoveAllChildren ( )
pure virtual

Remove all child DAG nodes.

The scene graph DAG hierarchy is constructed of parent-child relationships where children nodes inherit instance properties from parent nodes such as transformation, attribute state, and coordinate systems. An object is considered instanced when it is reachable from the scene root via multiple DAG paths. These DAG paths are formed when a child node has multiple parents. In order to form unique DAG paths, node identifiers should be unique among children.

See also
Group::AddChild
Group::RemoveChild
Group::GetNumChildren
Group::GetChild
Group::GetNumParents
Group::GetParent
Scene::Root
Returns
Error code

◆ RemoveAllCoordinateSystems()

virtual Error Group::RemoveAllCoordinateSystems ( )
pure virtual

Remove all scoped coordinate systems.

The object-to-world transformation of coordsys nodes are inherited as a named coordinate system that may be used for shading. Transformations are resolved as the closest unique relative path between this node and the coordsys node. Ambiguous instance transformations are ignored.

See also
Group::AddCoordinateSystem
Group::RemoveCoordinateSystem
Group::GetNumCoordinateSystems
Group::GetCoordinateSystem
Returns
Error code

◆ RemoveChild()

virtual Error Group::RemoveChild ( Group child)
pure virtual

Remove a child DAG node.

The scene graph DAG hierarchy is constructed of parent-child relationships where children nodes inherit instance properties from parent nodes such as transformation, attribute state, and coordinate systems. An object is considered instanced when it is reachable from the scene root via multiple DAG paths. These DAG paths are formed when a child node has multiple parents. In order to form unique DAG paths, node identifiers should be unique among children.

See also
Group::AddChild
Group::RemoveAllChildren
Group::GetNumChildren
Group::GetChild
Group::GetNumParents
Group::GetParent
Scene::Root
Parameters
[in]childThe child DAG node
Returns
Error code

◆ RemoveCoordinateSystem()

virtual Error Group::RemoveCoordinateSystem ( Group coordsys)
pure virtual

Remove scoped coordinate system.

The object-to-world transformation of coordsys nodes are inherited as a named coordinate system that may be used for shading. Transformations are resolved as the closest unique relative path between this node and the coordsys node. Ambiguous instance transformations are ignored.

See also
Group::AddCoordinateSystem
Group::RemoveAllCoordinateSystems
Group::GetNumCoordinateSystems
Group::GetCoordinateSystem
Parameters
[in]coordsysThe coordinate system node
Returns
Error code

◆ SetAttributes()

virtual Error Group::SetAttributes ( RtParamList const &  attributes)
pure virtual

Set attribute list.

Parameters that are attached to scene graph DAG nodes and may vary per geometry instance are called attributes. In the scene graph, attribute state is inherited by updating parameters along DAG hierarchies to generate the instance attribute list used for rendering. Attributes define instance properties such as visibility as well as user parameters used for instance variation when shading.

See also
Group::GetAttributes
Parameters
[in]attributesAttribute list
Returns
Error code

◆ SetHidden()

virtual Error Group::SetHidden ( int  state)
pure virtual

Set hidden state.

Hidden objects are visible in render but may still contribute as coordinate systems. The hidden state is inherited when unspecified. The default is unspecified.

See also
Group::GetHidden
Parameters
[in]stateHidden state: -1 (unspecified), 0 (unhide), 1 (hide)
Returns
Error code

◆ SetIdentifier()

virtual Error Group::SetIdentifier ( RtUString  identifier)
pure virtual

Set the DAG node identifier.

Node identifiers are concatenated along DAG hierarchies to uniquely identify DAG paths. Node identifiers themselves do not need to be unique.

See also
Group::GetIdentifier
Parameters
[in]identifierThe DAG node identifier
Returns
Error code

◆ SetIdentity()

Error Group::SetIdentity ( )
inline

Set the identity transform.

Identity transforms are concatenated together along DAG hierarchies to generate the object-to-world transform.

See also
Group::SetTransform
Returns
Error code

References SetTransformNumSamples().

◆ SetInheritTransform()

virtual Error Group::SetInheritTransform ( bool  value)
pure virtual

Set inherit transform.

Enable or disable inheriting parent transformations when generating the object-to-world transform. The default is true.

See also
Group::SetTransform
Group::GetInheritTransform
Parameters
[in]valueEnable/disable inherit transform
Returns
Error code

◆ SetMaterial()

virtual Error Group::SetMaterial ( Material material)
pure virtual

Set material binding.

Material bindings determine the active bxdf, displacement, and light and light filter shading graph assignments. Materials bindings are inherited and may vary per instance.

See also
Group::GetMaterial
Group::OverrideMaterial
Parameters
[in]materialThe material container or nullptr to unbind
Returns
Error code

◆ SetNested()

virtual Error Group::SetNested ( bool  state)
pure virtual

Set nesting state.

Nested DAGs avoid flattening during scene transveral. This can reduce memory consumption for heavily nested structures at the cost of slower ray traversal. The default is false.

See also
Group::GetNested
Parameters
[in]stateNested state
Returns
Error code

◆ SetTransform() [1/2]

virtual Error Group::SetTransform ( unsigned  numsamples,
RtMatrix4x4 const *  xforms,
float const *  times 
)
pure virtual

Set the transform.

Transforms are concatenated together along DAG hierarchies to generate the object-to-world transform. Static transforms are described by a single matrix while motion transforms contain a matrix and time value per time sample.

See also
Group::SetIdentity
Group::SetInheritTransform
Parameters
[in]numsamplesThe number of motion samples. A zero value sets the transform to identity.
[in]xformsMatrix samples pointer. This value must be valid for numsamples greater or equal to one.
[in]timesTime samples pointer. This value must be valid for numsamples greater or equal to two. A zero time is assumed for numsamples of one.
Returns
Error code

Referenced by SetTransform().

◆ SetTransform() [2/2]

Error Group::SetTransform ( RtMatrix4x4 const &  xform)
inline

Set a static transform.

Transforms are concatenated together along DAG hierarchies to generate the object-to-world transform. Static transforms are described by a single matrix while motion transforms contain a matrix and time value per motion sample.

See also
Group::SetTransform
Parameters
[in]xformStatic matrix
Returns
Error code

References SetTransform().

◆ SetTransformNumSamples()

virtual Error Group::SetTransformNumSamples ( unsigned  numsamples)
pure virtual

Set the number of transform motion samples.

Transforms are concatenated together along DAG hierarchies to generate the object-to-world transform. The motion sample count may be set independently of the actual motion sample values.

See also
Group::SetTransform
Group::GetTransformNumSamples
Parameters
[in]numsamplesThe number of motion samples. A zero value sets the transform to identitiy.
Returns
Error code

Referenced by SetIdentity().

◆ SetTransformSample()

virtual Error Group::SetTransformSample ( unsigned  sample,
RtMatrix4x4 const &  xform,
float  time 
)
pure virtual

Set a single transform motion sample.

Transforms are concatenated together along DAG hierarchies to generate the object-to-world transform. Motion sample values may be set independently of the motion sample count.

See also
Group::SetTransform
Group::GetTransformSample
Parameters
[in]sampleMotion sample index
[in]xformMatrix sample
[in]timeTime sample
Returns
Error code

The documentation for this class was generated from the following file: