7#ifndef MI_NEURAYLIB_ITRIANGLE_MESH_H
8#define MI_NEURAYLIB_ITRIANGLE_MESH_H
120 public base::Interface_declare<0x71006633,0x1e05,0x4c21,0xa0,0x09,0x07,0x6f,0x33,0x6d,0x9c,0x89,
121 neuraylib::IScene_element>
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
Interface representing an attribute vector for triangle meshes, polygon meshes, and subdivision surfa...
Definition: iattribute_vector.h:184
A connectivity class for triangle mesh geometry and their attributes.
Definition: itriangle_connectivity.h:135
Interface representing a triangle mesh.
Definition: itriangle_mesh.h:122
virtual Uint32 triangles_size() const =0
Returns the number of triangles.
virtual Sint32 attach_attribute_vector(IAttribute_vector *attribute_vector)=0
Attaches a given per-primitive mesh attribute to the mesh.
virtual Sint32 attach_mesh_connectivity(ITriangle_connectivity *connectivity)=0
Attaches the mesh connectivity to the mesh.
virtual Bbox3_struct get_tight_bbox(const Float64_4_4_struct &transformation_matrix) const =0
Returns the bounding box of the triangle mesh after transformation.
virtual Float32 get_maximum_displacement() const =0
Returns the maximum displacement of the triangle mesh.
virtual Uint32 points_size() const =0
Returns the number of points in the mesh.
virtual Triangle_handle_struct append_triangles(const Uint32 *indices, Size n)=0
Adds an array of triangles to the mesh.
virtual Uint32 append_point(const Float32_3_struct &p)=0
Adds a point p to the end of all points and returns the index of the new point.
virtual Triangle_handle_struct append_triangle(const Triangle_point_indices_struct &triangle)=0
Adds a triangle to the mesh.
virtual Sint32 remove_connectivity(Mesh_attribute_name name)=0
Removes the connectivity for a non-per-primitive mesh attribute.
virtual Sint32 set_point(Uint32 index, const Float64_3_struct &p)=0
Sets the point of index index to the new point p.
virtual Sint32 set_triangles(Triangle_handle_struct hnd, const Triangle_point_indices_struct *triangle, Size n)=0
Modifies an array of triangles of the mesh.
virtual Triangle_point_indices_struct triangle_point_indices(Triangle_handle_struct hnd) const =0
Returns the triple of indices describing the vertices of the triangle of index i.
virtual Uint32 append_points(const Float64_3_struct *p, Size n)=0
Adds an array of points to the end of all points and returns the index of the first new point.
virtual ITriangle_connectivity * edit_mesh_connectivity()=0
Detaches and returns the mesh connectivity.
virtual bool has_attribute(Mesh_attribute_name name) const =0
Indicates whether the mesh has a particular mesh attribute (per-primitive or other types).
virtual ITriangle_connectivity * edit_connectivity(Mesh_attribute_name name)=0
Detaches and returns the connectivity for a given mesh attribute.
virtual Sint32 set_triangle(Triangle_handle_struct hnd, const Triangle_point_indices_struct &triangle)=0
Modifies a triangle of the mesh.
virtual const ITriangle_connectivity * access_connectivity(Mesh_attribute_name name) const =0
Returns the connectivity for a given mesh attribute.
virtual const IAttribute_vector * access_attribute_vector(Mesh_attribute_name name) const =0
Returns a per-primitive mesh attribute.
virtual Uint32 triangles_capacity() const =0
Returns the number of triangles for which space is allocated in the mesh.
virtual void reserve_triangles(Uint32 n)=0
Reserves space for at least n triangles.
virtual void set_maximum_displacement(Float32 displacement)=0
Sets the maximum displacement of the triangle mesh.
virtual Sint32 attach_connectivity(ITriangle_connectivity *connectivity)=0
Attaches a given connectivity to the mesh.
virtual Uint32 append_point(const Float64_3_struct &p)=0
Adds a point p to the end of all points and returns the index of the new point.
virtual Uint32 append_points(const Float32_3_struct *p, Size n)=0
Adds an array of points to the end of all points and returns the index of the first new point.
virtual Sint32 remove_attribute_vector(Mesh_attribute_name name)=0
Removes a per-primitive mesh attribute.
virtual void reserve_points(Uint32 n)=0
Reserves space for at least n points.
virtual Sint32 point(Uint32 index, Float32_3_struct &p) const =0
Returns the coordinates of the point of index index in the output parameter p.
virtual Sint32 set_points(Uint32 index, const Float32_3_struct *p, Size n)=0
Sets an array of points starting at index index.
virtual const ITriangle_connectivity * access_mesh_connectivity() const =0
Returns the mesh connectivity.
virtual IAttribute_vector * create_attribute_vector(Mesh_attribute_name name, Uint32 dim=1)=0
Creates a per-primitive mesh attribute.
virtual ITriangle_connectivity * create_connectivity(Connectivity_map_type map_type=CONNECTIVITY_MAP_GENERIC)=0
Creates a new connectivity for non-per-primitive attributes.
virtual Bbox3_struct get_bbox() const =0
Returns the bounding box of the triangle mesh.
virtual Sint32 set_point(Uint32 index, const Float32_3_struct &p)=0
Sets the point of index index to the new point p.
virtual Sint32 set_points(Uint32 index, const Float64_3_struct *p, Size n)=0
Sets an array of points starting at index index.
virtual Uint32 points_capacity() const =0
Returns the number of points for which space is allocated in the mesh.
virtual Sint32 point(Uint32 index, Float64_3_struct &p) const =0
Returns the coordinates of the point of index index in the output parameter p.
virtual IAttribute_vector * edit_attribute_vector(Mesh_attribute_name name)=0
Detaches and returns a per-primitive mesh attribute.
virtual Triangle_handle_struct append_triangles(const Triangle_point_indices_struct *triangles, Size n)=0
Adds an array of triangles to the mesh.
unsigned int Uint32
32-bit unsigned integer.
Definition: types.h:49
Uint64 Size
Unsigned integral type that is large enough to hold the size of all types.
Definition: types.h:112
float Float32
32-bit float.
Definition: types.h:51
signed int Sint32
32-bit signed integer.
Definition: types.h:46
Mesh_attribute_name
Symbolic constants for mesh attributes.
Definition: iattribute_vector.h:60
Connectivity_map_type
Symbolic constants for different connectivity types.
Definition: iattribute_vector.h:131
@ CONNECTIVITY_MAP_GENERIC
A generic connectivity allows to map the vertices of every polygon to arbitrary indices.
Definition: iattribute_vector.h:136
Attribute vectors, used for triangle and polygon meshes.
Simple integer-based handles used by mesh interfaces.
Base class for all scene elements.
Triangle connectivities and associated helper classes.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: neuraylib.h:179
Storage class for an axis-aligned N-dimensional bounding box class template of fixed dimension.
Definition: bbox.h:47
Storage class for a NxM-dimensional matrix class template of fixed dimensions.
Definition: matrix.h:90
Generic storage class template for math vector representations storing DIM elements of type T.
Definition: vector.h:135
Handle class for type-safety.
Definition: identifier.h:56
A triangle defined by three point indices, starting at index 0.
Definition: itriangle_connectivity.h:25
Typedefs for types from the math API.