Iray SDK API nvidia_logo_transpbg.gif Up

Leaf nodes of the scene graph, for example, geometry, lights, or cameras. More...

Classes

class  mi::neuraylib::IAttribute_vector
 Interface representing an attribute vector for triangle meshes, polygon meshes, and subdivision surfaces. More...
 
class  mi::neuraylib::ICamera
 The camera defines the viewpoint from which the scene is rendered. More...
 
class  mi::neuraylib::IFibers
 Interface representing a collection of fibers. More...
 
class  mi::neuraylib::IFreeform_surface
 Interface representing a freeform surface. More...
 
class  mi::neuraylib::ISurface
 A surface of a freeform surface. More...
 
class  mi::neuraylib::ICurve
 A curve used by freeform surfaces. More...
 
class  mi::neuraylib::ICurve_segment
 A curve segment used by freeform surfaces. More...
 
class  mi::neuraylib::ITexture_surface
 A texture surface associated with freeform surfaces. More...
 
class  mi::neuraylib::ILight
 Point, spot, directional and area lighting. More...
 
class  mi::neuraylib::IOn_demand_mesh
 Interface representing an on-demand mesh. More...
 
class  mi::neuraylib::IOn_demand_mesh_callback
 Abstract interface for callbacks used by on-demand meshes. More...
 
class  mi::neuraylib::IOptions
 A scene element that stores scene-specific settings. More...
 
class  mi::neuraylib::IParticles
 Interface representing a collection of particles. More...
 
class  mi::neuraylib::IPolygon_connectivity
 A connectivity class for polygon mesh geometry and their attributes. More...
 
class  mi::neuraylib::IPolygon_mesh
 Interface representing a polygon mesh. More...
 
class  mi::neuraylib::ISimple_mesh
 Interface representing the geometry of on-demand meshes. More...
 
class  mi::neuraylib::ISubdivision_surface
 Interface representing a subdivision surface. More...
 
struct  mi::neuraylib::Triangle_point_indices_struct
 A triangle defined by three point indices, starting at index 0. More...
 
class  mi::neuraylib::Triangle_point_indices
 A triangle defined by three point indices, starting at index 0. More...
 
class  mi::neuraylib::ITriangle_connectivity
 A connectivity class for triangle mesh geometry and their attributes. More...
 
class  mi::neuraylib::ITriangle_mesh
 Interface representing a triangle mesh. More...
 
class  mi::neuraylib::IVolume
 Interface representing a top-level volume. More...
 

Typedefs

typedef Identifier_struct< HND_TRIANGLEmi::neuraylib::Triangle_handle_struct
 Handle for triangles More...
 
typedef Identifier_struct< HND_POLYmi::neuraylib::Polygon_handle_struct
 Handle for polygons More...
 
typedef Identifier_struct< HND_SURFACEmi::neuraylib::Surface_handle_struct
 Handle for surfaces More...
 
typedef Identifier_struct< HND_CURVEmi::neuraylib::Curve_handle_struct
 Handle for curves More...
 
typedef Identifier_struct< HND_CURVE_SEGMENTmi::neuraylib::Curve_segment_handle_struct
 Handle for curve segments More...
 
typedef Identifier_struct< HND_TEXTURE_SURFACEmi::neuraylib::Texture_surface_handle_struct
 Handle for texture surfaces More...
 
typedef Identifier_struct< HND_FIBER, Uint64mi::neuraylib::Fiber_handle_struct
 Handle for fibers More...
 
typedef Identifier< HND_TRIANGLEmi::neuraylib::Triangle_handle
 Handle for triangles More...
 
typedef Identifier< HND_POLYmi::neuraylib::Polygon_handle
 Handle for polygons More...
 
typedef Identifier< HND_SURFACEmi::neuraylib::Surface_handle
 Handle for surfaces More...
 
typedef Identifier< HND_CURVEmi::neuraylib::Curve_handle
 Handle for curve More...
 
typedef Identifier< HND_CURVE_SEGMENTmi::neuraylib::Curve_segment_handle
 Handle for curve segments More...
 
typedef Identifier< HND_TEXTURE_SURFACEmi::neuraylib::Texture_surface_handle
 Handle for texture surfaces More...
 
typedef Identifier< HND_FIBERmi::neuraylib::Fiber_handle
 Handle for fibers More...
 

Enumerations

enum  mi::neuraylib::Mesh_attribute_name {
}
 Symbolic constants for mesh attributes. More...
 
enum  mi::neuraylib::Connectivity_map_type { mi::neuraylib::CONNECTIVITY_MAP_GENERIC , CONNECTIVITY_FORCE_32_BIT = 0xffffffffU }
 Symbolic constants for different connectivity types. More...
 
enum  mi::neuraylib::Fiber_type {
  mi::neuraylib::FIBER_TYPE_BSPLINE ,
  mi::neuraylib::FIBER_TYPE_CATMULL_ROM ,
  mi::neuraylib::FIBER_TYPE_LINEAR ,
  mi::neuraylib::FIBER_TYPE_BEZIER ,
  FIBER_TYPE_FORCE_32_BIT = 0xffffffffU
}
 Different fiber types of mi::neuraylib::IFibers. More...
 
enum  mi::neuraylib::Fiber_attribute_type {
  mi::neuraylib::FIBER_ATTRIBUTE_PER_PRIMITIVE ,
  mi::neuraylib::FIBER_ATTRIBUTE_PER_VERTEX ,
  FIBER_ATTRIBUTE_FORCE_32_BIT = 0xffffffffU
}
 Different attribute vector types for mi::neuraylib::IFibers. More...
 
enum  mi::neuraylib::Basis_type {
  mi::neuraylib::BASIS_BEZIER = 0 ,
  mi::neuraylib::BASIS_BSPLINE = 1 ,
  BASIS_TYPE_FORCE_32_BIT = 0xffffffffU
}
 Different basis types that are supported by freeform surfaces. More...
 
enum  mi::neuraylib::Parameter_space_dimension {
  mi::neuraylib::DIMENSION_U = 0 ,
  mi::neuraylib::DIMENSION_V = 1 ,
  DIMENSION_FORCE_32_BIT = 0xffffffffU
}
 Distinguishes the two dimensions of the parameter space of freeform surfaces. More...
 
enum  mi::neuraylib::Curve_type {
  mi::neuraylib::TRIM_CURVE = 0 ,
  mi::neuraylib::HOLE_CURVE = 1 ,
  CURVE_TYPE_FORCE_32_BIT = 0xffffffffU
}
 Different curve types that are supported by freeform surfaces. More...
 
enum  mi::neuraylib::Light_type {
  mi::neuraylib::LIGHT_POINT = 0 ,
  mi::neuraylib::LIGHT_INFINITE = 2 ,
  LIGHT_FORCE_32_BIT = 0xffffffffU
}
 Supported light types. More...
 
enum  mi::neuraylib::Light_area_shape {
  mi::neuraylib::AREA_NONE = 0 ,
  mi::neuraylib::AREA_RECTANGLE = 1 ,
  mi::neuraylib::AREA_DISC = 2 ,
  mi::neuraylib::AREA_SPHERE = 3 ,
  mi::neuraylib::AREA_CYLINDER = 4 ,
  N_AREA_TYPES ,
  AREA_FORCE_32_BIT = 0xffffffffU
}
 Supported area light shapes. More...
 
enum  mi::neuraylib::Particle_type { mi::neuraylib::PARTICLE_TYPE_SPHERE , PARTICLE_TYPE_FORCE_32_BIT = 0xffffffffU }
 Different particle types of mi::neuraylib::IParticles. More...
 
enum  mi::neuraylib::Vertex_feature {
  mi::neuraylib::SMOOTH_VERTEX = 0 ,
  mi::neuraylib::CORNER_VERTEX = 1 ,
  VERTEX_FEATURE_FORCE_32_BIT = 0xffffffffU
}
 Vertex features. More...
 

Functions

 mi::neuraylib::Identifier<name, Int_type>::Identifier ()
 Default constructor. Initializes handle with invalid value. More...
 
 mi::neuraylib::Identifier<name, Int_type>::Identifier (Int_type h)
 Constructor. Initializes handle with given integer value. More...
 
 mi::neuraylib::Identifier<name, Int_type>::Identifier (Identifier_struct<name, Int_type> h)
 Constructor from underlying storage type. More...
 
 mi::neuraylib::Identifier<name, Int_type>::operator Int_type () const
 Conversion operator to underlying integer type. More...
 
Int_type mi::neuraylib::Identifier<name, Int_type>::operator* () const
 Dereferences the handle. Returns its integer value. More...
 
bool mi::neuraylib::Identifier<name, Int_type>::is_valid () const
 Returns whether the handle is valid. More...
 
Identifiermi::neuraylib::Identifier<name, Int_type>::operator++ ()
 Pre-increment operator. More...
 
Identifier mi::neuraylib::Identifier<name, Int_type>::operator++ (int)
 Post-increment operator. More...
 
Identifiermi::neuraylib::Identifier<name, Int_type>::operator-- ()
 Pre-decrement operator. More...
 
Identifier mi::neuraylib::Identifier<name, Int_type>::operator-- (int)
 Post-decrement operator. More...
 
bool mi::neuraylib::Identifier<name, Int_type>::operator< (const Identifier &other) const
 Less-than operator. More...
 
bool mi::neuraylib::Identifier<name, Int_type>::operator<= (const Identifier &other) const
 Less-than-or-equal-to operator. More...
 
bool mi::neuraylib::Identifier<name, Int_type>::operator> (const Identifier &other) const
 Greater-than operator. More...
 
bool mi::neuraylib::Identifier<name, Int_type>::operator>= (const Identifier &other) const
 Greater-than-or-equal-to operator. More...
 

Variables

Int_type mi::neuraylib::Identifier_struct<name, Int_type>::m_id
 The handle ID. More...
 

Detailed Description

Leaf nodes of the scene graph, for example, geometry, lights, or cameras.

Typedef Documentation

 Curve_handle

Handle for curve

See also
the underlying POD type mi::neuraylib::Curve_handle_struct

 Curve_handle_struct

Handle for curves

This POD type is the underlying storage class for mi::neuraylib::Curve_handle.

 Curve_segment_handle

Handle for curve segments

See also
the underlying POD type mi::neuraylib::Curve_segment_handle_struct

 Curve_segment_handle_struct

Handle for curve segments

This POD type is the underlying storage class for mi::neuraylib::Curve_segment_handle.

 Fiber_handle

Handle for fibers

See also
the underlying POD type mi::neuraylib::Fiber_handle_struct

 Fiber_handle_struct

Handle for fibers

This POD type is the underlying storage class for mi::neuraylib::Fiber_handle.

 Polygon_handle

Handle for polygons

See also
the underlying POD type mi::neuraylib::Polygon_handle_struct

 Polygon_handle_struct

Handle for polygons

This POD type is the underlying storage class for mi::neuraylib::Polygon_handle.

 Surface_handle

Handle for surfaces

See also
the underlying POD type mi::neuraylib::Surface_handle_struct

 Surface_handle_struct

Handle for surfaces

This POD type is the underlying storage class for mi::neuraylib::Surface_handle.

 Texture_surface_handle

Handle for texture surfaces

See also
the underlying POD type mi::neuraylib::Texture_surface_handle_struct

 Texture_surface_handle_struct

Handle for texture surfaces

This POD type is the underlying storage class for mi::neuraylib::Texture_surface_handle.

 Triangle_handle

Handle for triangles

See also
the underlying POD type mi::neuraylib::Triangle_handle_struct

 Triangle_handle_struct

Handle for triangles

This POD type is the underlying storage class for mi::neuraylib::Triangle_handle.

Enumeration Type Documentation

 Basis_type

Different basis types that are supported by freeform surfaces.

Enumerator
BASIS_BEZIER 

Represents a Bezier basis.

BASIS_BSPLINE 

Represents a B-spline basis.

 Connectivity_map_type

Symbolic constants for different connectivity types.

Connectivities may come in different types. Currently, there is only one type.

See also
mi::neuraylib::ITriangle_mesh::create_connectivity()
mi::neuraylib::IPolygon_mesh::create_connectivity()
Enumerator
CONNECTIVITY_MAP_GENERIC 

A generic connectivity allows to map the vertices of every polygon to arbitrary indices.

These indices either represents points (for the mesh connectivity) or elements of the attribute vector (for custom connectivities).

 Curve_type

Different curve types that are supported by freeform surfaces.

Enumerator
TRIM_CURVE 

A trim curve cuts away all parts of the surface outside the curve.

HOLE_CURVE 

A hole curve cuts away all parts of the surface inside the curve.

 Fiber_attribute_type

Different attribute vector types for mi::neuraylib::IFibers.

Enumerator
FIBER_ATTRIBUTE_PER_PRIMITIVE 

Per-fiber attribute.

FIBER_ATTRIBUTE_PER_VERTEX 

Per-control point attribute.

 Fiber_type

Different fiber types of mi::neuraylib::IFibers.

Enumerator
FIBER_TYPE_BSPLINE 

Uses cubic uniform B-Splines.

FIBER_TYPE_CATMULL_ROM 

Uses Catmull-Rom splines.

FIBER_TYPE_LINEAR 

Uses linear curves.

FIBER_TYPE_BEZIER 

Uses cubic Bezier curves.

 Light_area_shape

Supported area light shapes.

See also
mi::neuraylib::ILight::get_area_shape(), mi::neuraylib::ILight::set_area_shape()
Enumerator
AREA_NONE 

Not an area light.

AREA_RECTANGLE 

Rectangular shape.

AREA_DISC 

Disc shape.

AREA_SPHERE 

Sphere shape.

AREA_CYLINDER 

Cylinder shape.

 Light_type

Supported light types.

See also
mi::neuraylib::ILight::get_type(), mi::neuraylib::ILight::set_type()
Enumerator
LIGHT_POINT 

Point light: emits rays in all directions from the origin.

LIGHT_INFINITE 

Directional light: no origin, all light rays parallel.

 Mesh_attribute_name

Symbolic constants for mesh attributes.

Mesh attributes are an extension of the regular attributes (see mi::neuraylib::IAttribute_set). They are only supported for scene elements that represent geometry, namely triangle meshes, polygon meshes, subdivision surfaces, and freeform surfaces. In contrast to regular attributes which exist only once per object, mesh attributes are always a vector of values with one vector element per primitive, per point, or per vertex. Note that a vector element in itself can be an array.

Mesh attributes are identified by the symbolic names of this enum. Note that there are mi::neuraylib::ATTR_TEXTURE_NUM mesh attributes for texture spaces, but not all values exist as explicit enum values. In order to use these textures spaces, you need to cast the corresponding integer in the range mi::neuraylib::ATTR_TEXTURE to mi::neuraylib::ATTR_TEXTURE + mi::neuraylib::ATTR_TEXTURE_NUM - 1 to mi::neuraylib::Mesh_attribute_name.

One mesh attribute, mi::neuraylib::ATTR_MATERIAL_INDEX, stores one vector element per primitive. That is, there is one material index for each triangle, quad, or polygon of the mesh. This attribute can be created, accessed, and edited directly from the corresponding mesh interfaces.

The remaining attributes store one vector element either per point or per vertex of the mesh. These attributes cannot be created, accessed, and edited directly from the corresponding mesh interfaces, only from a connectivity (either from the mesh connectivity, or from a custom connectivity). The connectivity maps each vertex of the mesh to an index which is used to look up the corresponding vector element. If the mesh connectivity is used, the attribute vector stores one element per point (since the mesh connectivity already defines the mapping of vertices to points). For a custom connectivity, the attribute vector allows to store one element per vertex (possibly sharing values between vertices as defined by the connectivity).

See also
mi::neuraylib::ITriangle_mesh::create_attribute_vector()
mi::neuraylib::IPolygon_mesh::create_attribute_vector()
mi::neuraylib::ITriangle_connectivity::create_attribute_vector()
mi::neuraylib::IPolygon_connectivity::create_attribute_vector()
mi::neuraylib::IFreeform_surface::create_attribute_vector()
mi::neuraylib::IFibers::create_attribute_vector()
mi::neuraylib::IAttribute_vector
Enumerator
ATTR_NORMAL 

Surface normals of type mi::Float32_3 per point or per vertex.

ATTR_MOTION 

Motion vectors of type mi::Float32_3[] per point or per vertex.

The array size is chosen when the attribute vector is created.

An array size of N splits the time interval \[0, 1\] into N segments of equal length where
the motion vector at the beginning of the first segment is not explicitly given here, but
zero everywhere by convention. The N motion vectors (per point or vertex) define the
position of the vertices at the end of the N segments. Intermediate positions are obtained
by linear interpolation. Positions outside the interval \[0, 1\] are obtained by linear
extrapolation.

If the entire mesh is transformed uniformly, then time-dependent transformations on
instances are more efficient than motion vectors (see #mi::neuraylib::IInstance).

\see #mi::neuraylib::IOptions::get_shutter_open(),
     #mi::neuraylib::IOptions::get_shutter_close(),
     #mi::neuraylib::IInstance 
ATTR_DERIVATIVES 

Surface derivatives of type mi::Float32_3[2] per point or per vertex.

ATTR_MATERIAL_INDEX 

Material index of type mi::Uint32 per primitive.

\note For best performance it is recommended to sort the primitives by their material index
      such that when looping over all primitives the material index changes as infrequently
      as possible. 
ATTR_TEXTURE 

Texture coordinates of type mi::Float32[] per point or per vertex (also called texture space).

The array size is chosen when the attribute vector is created.

Note
Texture spaces need to use consecutive mesh attribute IDs starting with mi::neuraylib::ATTR_TEXTURE.
ATTR_TEXTURE_NUM 

Total number of supported texture spaces.

ATTR_USER 

User data values of type mi::Float32[] per point or per vertex.

The array size is chosen when the attribute vector is created.

Note
User data arrays need to use consecutive mesh attribute IDs starting with mi::neuraylib::ATTR_USER.
ATTR_USER_NUM 

Total number of supported user data arrays.

ATTR_MAX 

Maximum legal attribute number + 1.

 Parameter_space_dimension

Distinguishes the two dimensions of the parameter space of freeform surfaces.

Enumerator
DIMENSION_U 

Represents the U-dimension of the parameter space.

DIMENSION_V 

Represents the V-dimension of the parameter space.

 Particle_type

Different particle types of mi::neuraylib::IParticles.

Enumerator
PARTICLE_TYPE_SPHERE 

Sphere.

 Vertex_feature

Vertex features.

Currently, two vertex features are supported, smooth vertices (the default) and corners.

See also
mi::neuraylib::ISubdivision_surface::set_vertex_feature()
mi::neuraylib::ISubdivision_surface::get_vertex_feature()
Enumerator
SMOOTH_VERTEX 

the vertex is smooth (the default)

CORNER_VERTEX 

the vertex is a corner

Function Documentation

 Identifier() [1/3]

template<Identifier_name name, typename Int_type = Uint32>
mi::neuraylib::Identifier<name, Int_type>::Identifier ( )
inline

Default constructor. Initializes handle with invalid value.

 Identifier() [2/3]

template<Identifier_name name, typename Int_type = Uint32>
mi::neuraylib::Identifier<name, Int_type>::Identifier ( Identifier_struct<name, Int_type>  h)
inline

Constructor from underlying storage type.

 Identifier() [3/3]

template<Identifier_name name, typename Int_type = Uint32>
mi::neuraylib::Identifier<name, Int_type>::Identifier ( Int_type  h)
inlineexplicit

Constructor. Initializes handle with given integer value.

 is_valid()

template<Identifier_name name, typename Int_type = Uint32>
bool mi::neuraylib::Identifier<name, Int_type>::is_valid ( ) const
inline

Returns whether the handle is valid.

 operator Int_type()

template<Identifier_name name, typename Int_type = Uint32>
mi::neuraylib::Identifier<name, Int_type>::operator Int_type ( ) const
inline

Conversion operator to underlying integer type.

 operator*()

template<Identifier_name name, typename Int_type = Uint32>
Int_type mi::neuraylib::Identifier<name, Int_type>::operator* ( ) const
inline

Dereferences the handle. Returns its integer value.

 operator++() [1/2]

template<Identifier_name name, typename Int_type = Uint32>
Identifier & mi::neuraylib::Identifier<name, Int_type>::operator++ ( )
inline

Pre-increment operator.

 operator++() [2/2]

template<Identifier_name name, typename Int_type = Uint32>
Identifier mi::neuraylib::Identifier<name, Int_type>::operator++ ( int  )
inline

Post-increment operator.

 operator--() [1/2]

template<Identifier_name name, typename Int_type = Uint32>
Identifier & mi::neuraylib::Identifier<name, Int_type>::operator-- ( )
inline

Pre-decrement operator.

 operator--() [2/2]

template<Identifier_name name, typename Int_type = Uint32>
Identifier mi::neuraylib::Identifier<name, Int_type>::operator-- ( int  )
inline

Post-decrement operator.

 operator<()

template<Identifier_name name, typename Int_type = Uint32>
bool mi::neuraylib::Identifier<name, Int_type>::operator< ( const Identifier<name, Int_type> &  other) const
inline

Less-than operator.

 operator<=()

template<Identifier_name name, typename Int_type = Uint32>
bool mi::neuraylib::Identifier<name, Int_type>::operator<= ( const Identifier<name, Int_type> &  other) const
inline

Less-than-or-equal-to operator.

 operator>()

template<Identifier_name name, typename Int_type = Uint32>
bool mi::neuraylib::Identifier<name, Int_type>::operator> ( const Identifier<name, Int_type> &  other) const
inline

Greater-than operator.

 operator>=()

template<Identifier_name name, typename Int_type = Uint32>
bool mi::neuraylib::Identifier<name, Int_type>::operator>= ( const Identifier<name, Int_type> &  other) const
inline

Greater-than-or-equal-to operator.

Variable Documentation

 m_id

template<Identifier_name name, typename Int_type = Uint32>
Int_type mi::neuraylib::Identifier_struct<name, Int_type>::m_id

The handle ID.