RenderManAPI  24.0
Blobby Class Referenceabstract

Blobby Implicit Surfaces. More...

#include <RixSceneGraph.h>

Inherits Geometry.

Public Member Functions

virtual Error Define (int32_t nleaf)=0
 Define blobby implicit surfaces. More...
 
virtual RtUString GetGeometry () const =0
 Return geometry type. More...
 
virtual Error SetGeometry (RtUString type)=0
 Define special geometry. More...
 
virtual RtPrimVarList const & GetPrimVars () const =0
 Get primitive variable list. More...
 
virtual Error SetPrimVars (RtPrimVarList const &primvars)=0
 Set primitive variable list. More...
 
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...
 
Error SetTransform (RtMatrix4x4 const &xform)
 Set a static 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 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...
 

Protected Member Functions

 Blobby ()=default
 
 ~Blobby () override=default
 

Detailed Description

Blobby Implicit Surfaces.

Constructor & Destructor Documentation

◆ Blobby()

Blobby::Blobby ( )
inlineprotecteddefault

◆ ~Blobby()

Blobby::~Blobby ( )
overrideprotecteddefault

Member Function Documentation

◆ AddChild()

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

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 virtualinherited

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

◆ Define()

virtual Error Blobby::Define ( int32_t  nleaf)
pure virtual

Define blobby implicit surfaces.

Free-form self-blending implicit-function surfaces in the style of Jim Blinn's blobby molecules, Nishimura et al.'s metaballs and Wyvill, McPheeters and Wyvill's soft objects. Blobby surface may be composed of spherical and sausage-like line-segment primitives with extermely flexible control over blending. The surface type also provides for repulsion to avoid intersection with irregular ground planes, represented by depth maps.

Detail type Size
constant 1
uniform 1
vertex nleaf
varying nleaf
facevarying nleaf
Parameters
[in]nleafNumber of primitive blobs in object
Returns
Error code

◆ FindDagNode()

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

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

Get the DAG type.

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

Returns
DAG type

◆ GetGeometry()

virtual RtUString Geometry::GetGeometry ( ) const
pure virtualinherited

Return geometry type.

◆ GetHidden()

virtual int Group::GetHidden ( ) const
pure virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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

◆ GetPrimVars()

virtual RtPrimVarList const& Geometry::GetPrimVars ( ) const
pure virtualinherited

Get primitive variable list.

Parameters that are attached to and may vary over surface geometry are called primitive variables. Primitive variables are used to define the intrinsic properties of a surface such as position, normal, and surface topology. Primitive variables also define values that are used for shading such as texture coordinates and user data. Primitive variables are part of the geometry prototype description and may not vary per instance. Primitive variables which are declared to be of type point, vector, normal, or matrix are specified in object space and will be transformed into current space for shading.

See also
Geometry::SetPrimVars
Returns
Primitive variable list

◆ GetTransformNumSamples()

virtual unsigned Group::GetTransformNumSamples ( ) const
pure virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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 virtualinherited

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

◆ SetGeometry()

virtual Error Geometry::SetGeometry ( RtUString  type)
pure virtualinherited

Define special geometry.

Special geometry primitives that are renderer specific.

Detail type Size
constant 1
uniform 1
vertex 1
varying 1
facevarying 1
Parameters
[in]typeSupported special primitive types are: "Ri:BrickMap"
Returns
Error code

Implemented in Quadric.

◆ SetHidden()

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

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 virtualinherited

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 ( )
inlineinherited

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 Group::SetTransformNumSamples().

◆ SetInheritTransform()

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

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 virtualinherited

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 virtualinherited

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

◆ SetPrimVars()

virtual Error Geometry::SetPrimVars ( RtPrimVarList const &  primvars)
pure virtualinherited

Set primitive variable list.

Parameters that are attached to and may vary over surface geometry are called primitive variables. Primitive variables are used to define the intrinsic properties of a surface such as position, normal, and surface topology. Primitive variables also define values that are used for shading such as texture coordinates and user data. Primitive variables are part of the geometry prototype description and may not vary per instance. Primitive variables which are declared to be of type point, vector, normal, or matrix are specified in object space and will be transformed into current space for shading.

See also
Geometry::GetPrimVars
Parameters
[in]primvarsPrimitive variable list
Returns
Error code

◆ SetTransform() [1/2]

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

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 Group::SetTransform().

◆ SetTransform() [2/2]

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

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 Group::SetTransform().

◆ SetTransformNumSamples()

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

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 Group::SetIdentity().

◆ SetTransformSample()

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

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: