Scene elements
[Neuray API]
Description
All the scene elements that make up the scene graph.
Modules
- Leaf nodes of the scene graph, for example, geometry, lights, or cameras. More...
- Materials comprise a set of interfaces related to the Material Definition Language (MDL). More...
- Miscellaneous scene graph elements, for example, textures, light profiles, BSDF measurements, or decals. More...
- Inner nodes of the scene graph defining its structure. More...
Classes
- class
- The attribute set comprises all attributes attached to a database element. More...
- class
- Common base interface for all scene elements. More...
Enumerations
- enum mi::neuraylib::Element_type{ ELEMENT_TYPE_INSTANCE = 0, ELEMENT_TYPE_GROUP = 1, ELEMENT_TYPE_OPTIONS = 2, ELEMENT_TYPE_CAMERA = 3, ELEMENT_TYPE_LIGHT = 4, ELEMENT_TYPE_LIGHTPROFILE = 5, ELEMENT_TYPE_MATERIAL = 6, ELEMENT_TYPE_TEXTURE = 7, ELEMENT_TYPE_IMAGE = 8, ELEMENT_TYPE_SHADER = 9, ELEMENT_TYPE_TRIANGLE_MESH = 10, ELEMENT_TYPE_ATTRIBUTE_CONTAINER = 16, ELEMENT_TYPE_POLYGON_MESH = 18, ELEMENT_TYPE_SHADER_CLASS = 19, ELEMENT_TYPE_SUBDIVISION_SURFACE = 23, ELEMENT_TYPE_FREEFORM_SURFACE = 24, ELEMENT_TYPE_SHADER_GRAPH_CLASS = 26, ELEMENT_TYPE_SHADER_GRAPH = 27, ELEMENT_TYPE_COMPOUND_SHADER_CLASS = 28, ELEMENT_TYPE_MDL_MODULE = 29, ELEMENT_TYPE_MDL_FUNCTION_DEFINITION = 30, ELEMENT_TYPE_MDL_FUNCTION_CALL = 31, ELEMENT_TYPE_MDL_MATERIAL_DEFINITION = 32, ELEMENT_TYPE_MDL_MATERIAL_INSTANCE = 33, ELEMENT_TYPE_MDL_COMPILED_MATERIAL = 34, ELEMENT_TYPE_BSDF_MEASUREMENT = 35, ELEMENT_TYPE_IRRADIANCE_PROBES = 36, ELEMENT_TYPE_DECAL = 37, ELEMENT_TYPE_ON_DEMAND_MESH = 38, ELEMENT_TYPE_FORCE_32_BIT = 0xffffffffU}
- Distinguishes scene elements. More...
- enum mi::neuraylib::Propagation_type{ PROPAGATION_STANDARD, PROPAGATION_OVERRIDE, PROPAGATION_FORCE_32_BIT = 0xffffffffU}
- Propagation types for attribute inheritance. More...
Functions
- template< class T>mi::Sint32 mi::get_value( const mi::neuraylib::IAttribute_set* attribute_set, const char* name, T& value)
- Simplifies reading the value of an attribute into the corresponding classes from the base and math API. More...
- template< class T>mi::Sint32 mi::get_value( const mi::neuraylib::IAttribute_set* attribute_set, const char* name, mi::Size index, T& value)
- Simplifies reading the value of an attribute into the corresponding classes from the base and math API (variant with an index for collections). More...
- template< class T>mi::Sint32 mi::get_value( const mi::neuraylib::IAttribute_set* attribute_set, const char* name, const char* key, T& value)
- Simplifies reading the value of an attribute into the corresponding classes from the base and math API (variant with a key for collections). More...
- template< class T>mi::Sint32 mi::set_value( mi::neuraylib::IAttribute_set* attribute_set, const char* name, const T& value)
- Simplifies setting the value of an attribute from the corresponding classes from the base and math API. More...
- template< class T>mi::Sint32 mi::set_value( mi::neuraylib::IAttribute_set* attribute_set, const char* name, mi::Size index, const T& value)
- Simplifies setting the value of an attribute from the corresponding classes from the base and math API (variant with an index for collections). More...
- template< class T>mi::Sint32 mi::set_value( mi::neuraylib::IAttribute_set* attribute_set, const char* name, const char* key, const T& value)
- Simplifies setting the value of an attribute from the corresponding classes from the base and math API (variant with a key for collections). More...
Enums
- enum mi::neuraylib::Element_type
-
Enumerator:
- ELEMENT_TYPE_INSTANCE = 0
- mi::neuraylib::IInstance
- ELEMENT_TYPE_GROUP = 1
- mi::neuraylib::IGroup
- ELEMENT_TYPE_OPTIONS = 2
- mi::neuraylib::IOptions
- ELEMENT_TYPE_CAMERA = 3
- mi::neuraylib::ICamera
- ELEMENT_TYPE_LIGHT = 4
- mi::neuraylib::ILight
- ELEMENT_TYPE_LIGHTPROFILE = 5
- mi::neuraylib::ILightprofile
- ELEMENT_TYPE_MATERIAL = 6
- ELEMENT_TYPE_TEXTURE = 7
- mi::neuraylib::ITexture
- ELEMENT_TYPE_IMAGE = 8
- mi::neuraylib::IImage
- ELEMENT_TYPE_SHADER = 9
- ELEMENT_TYPE_TRIANGLE_MESH = 10
- mi::neuraylib::ITriangle_mesh
- ELEMENT_TYPE_ATTRIBUTE_CONTAINER = 16
- mi::neuraylib::IAttribute_container
- ELEMENT_TYPE_POLYGON_MESH = 18
- mi::neuraylib::IPolygon_mesh
- ELEMENT_TYPE_SHADER_CLASS = 19
- ELEMENT_TYPE_SUBDIVISION_SURFACE = 23
- mi::neuraylib::ISubdivision_surface
- ELEMENT_TYPE_FREEFORM_SURFACE = 24
- mi::neuraylib::IFreeform_surface
- ELEMENT_TYPE_SHADER_GRAPH_CLASS = 26
- ELEMENT_TYPE_SHADER_GRAPH = 27
- ELEMENT_TYPE_COMPOUND_SHADER_CLASS = 28
- ELEMENT_TYPE_MDL_MODULE = 29
- mi::neuraylib::IMdl_module
- ELEMENT_TYPE_MDL_FUNCTION_DEFINITION = 30
- mi::neuraylib::IMdl_function_definition
- ELEMENT_TYPE_MDL_FUNCTION_CALL = 31
- mi::neuraylib::IMdl_function_call
- ELEMENT_TYPE_MDL_MATERIAL_DEFINITION = 32
- mi::neuraylib::IMdl_material_definition
- ELEMENT_TYPE_MDL_MATERIAL_INSTANCE = 33
- mi::neuraylib::IMdl_material_instance
- ELEMENT_TYPE_MDL_COMPILED_MATERIAL = 34
- mi::neuraylib::IMdl_compiled_material
- ELEMENT_TYPE_BSDF_MEASUREMENT = 35
- mi::neuraylib::IBsdf_measurement
- ELEMENT_TYPE_IRRADIANCE_PROBES = 36
- mi::neuraylib::IIrradiance_probes
- ELEMENT_TYPE_DECAL = 37
- mi::neuraylib::IDecal
- ELEMENT_TYPE_ON_DEMAND_MESH = 38
- mi::neuraylib::IOn_demand_mesh
- ELEMENT_TYPE_FORCE_32_BIT = 0xffffffffU
- enum mi::neuraylib::Propagation_type
-
Propagation types for attribute inheritance. Inheritance of attributes allows you to easily make changes to an entire subtree of the scene graph.
Assume the scene graph contains an inner node P (the parent) with a (possibly inherited) attribute A and a child node C. If the child node C does not have the attribute A, the child will inherit P's value of A (without actually storing an explicit copy). If the child node C has the attribute A, it will use its own value of the attribute without taking P's value into consideration. This is the standard propagation rule which is represented by the propagation type mi::neuraylib::PROPAGATION_STANDARD.
The outcome of the last case can be reverted by setting the override flag of the attribute A on the parent node (or at the node from where it was inherited to P): in this case P's value of A is inherited to the child node C, no matter whether the child has the attribute or not. This propagation mode is represented by mi::neuraylib::PROPAGATION_OVERRIDE.
Note:-
There is one exception to these rules: If the child node C is a geometry object, then P's value of A at is used, no matter whether the propagation mode was set to mi::neuraylib::PROPAGATION_OVERRIDE or mi::neuraylib::PROPAGATION_STANDARD. The rationale is that for geometry objects the attribute on the object itself should be a default that is only used if no value for that attribute is inherited.
-
Inherited attributes are made available to the render modes, but are not available via the neuray API.
See also:
mi::neuraylib::IAttribute_set::set_attribute_propagation()
mi::neuraylib::IAttribute_set::get_attribute_propagation()
-
Functions
-
template< class T>
mi::Sint32 mi::get_value( const mi::neuraylib::IAttribute_set* attribute_set, const char* name, T& value) [inline] -
Simplifies reading the value of an attribute into the corresponding classes from the base and math API.
Parameters
- attribute_set
- The affected attribute set.
- name
- The name of the attribute to read.
- value
- The new value will be stored here.
Returns
- 0: Success.
- -1: The dynamic type of the attribute does not match the static type of value.
- -4: The attribute name does not exist.
-
template< class T>
mi::Sint32 mi::get_value( const mi::neuraylib::IAttribute_set* attribute_set, const char* name, mi::Size index, T& value) [inline] -
Simplifies reading the value of an attribute into the corresponding classes from the base and math API (variant with an index for collections).
Parameters
- attribute_set
- The affected attribute set.
- name
- The name of the attribute to read.
- index
- The index of the affected collection element.
- value
- The new value will be stored here.
Returns
- 0: Success.
- -1: The dynamic type of the attribute does not match the static type of value.
- -3: The index is not valid.
- -4: The attribute name does not exist.
-
template< class T>
mi::Sint32 mi::get_value( const mi::neuraylib::IAttribute_set* attribute_set, const char* name, const char* key, T& value) [inline] -
Simplifies reading the value of an attribute into the corresponding classes from the base and math API (variant with a key for collections).
Parameters
- attribute_set
- The affected attribute set.
- name
- The name of the attribute to read.
- key
- The key of the affected collection element.
- value
- The new value will be stored here.
Returns
- 0: Success.
- -1: The dynamic type of the attribute does not match the static type of value.
- -3: The key is not valid.
- -4: The attribute name does not exist.
-
template< class T>
mi::Sint32 mi::set_value( mi::neuraylib::IAttribute_set* attribute_set, const char* name, const T& value) [inline] -
Simplifies setting the value of an attribute from the corresponding classes from the base and math API.
Parameters
- attribute_set
- The affected attribute set.
- name
- The name of the attribute to modify.
- value
- The new value to be set.
Returns
- 0: Success.
- -1: The dynamic type of the attribute does not match the static type of value.
- -2: The value of value is not valid.
- -4: The attribute name does not exist.
-
template< class T>
mi::Sint32 mi::set_value( mi::neuraylib::IAttribute_set* attribute_set, const char* name, mi::Size index, const T& value) [inline] -
Simplifies setting the value of an attribute from the corresponding classes from the base and math API (variant with an index for collections).
Parameters
- attribute_set
- The affected attribute set.
- name
- The name of the attribute to modify.
- index
- The index of the affected collection element.
- value
- The new value to be set.
Returns
- 0: Success.
- -1: The dynamic type of the attribute does not match the static type of value.
- -2: The value of value is not valid.
- -3: The index is not valid.
- -4: The attribute name does not exist.
-
template< class T>
mi::Sint32 mi::set_value( mi::neuraylib::IAttribute_set* attribute_set, const char* name, const char* key, const T& value) [inline] -
Simplifies setting the value of an attribute from the corresponding classes from the base and math API (variant with a key for collections).
Parameters
- attribute_set
- The affected attribute set.
- name
- The name of the attribute to modify.
- key
- The key of the affected collection element.
- value
- The new value to be set.
Returns
- 0: Success.
- -1: The dynamic type of the attribute does not match the static type of value.
- -2: The value of value is not valid.
- -3: The key is not valid.
- -4: The attribute name does not exist.