Iray SDK API nvidia_logo_transpbg.gif Up
itriangle_mesh.h
Go to the documentation of this file.
1/***************************************************************************************************
2 * Copyright 2024 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_ITRIANGLE_MESH_H
8#define MI_NEURAYLIB_ITRIANGLE_MESH_H
9
15
16namespace mi {
17
18namespace neuraylib {
19
120 public base::Interface_declare<0x71006633,0x1e05,0x4c21,0xa0,0x09,0x07,0x6f,0x33,0x6d,0x9c,0x89,
121 neuraylib::IScene_element>
122{
123public:
124
126
127
129 virtual Uint32 points_size() const = 0;
130
137 virtual Uint32 points_capacity() const = 0;
138
145 virtual void reserve_points( Uint32 n) = 0;
146
156 virtual Sint32 point( Uint32 index, Float32_3_struct& p) const = 0;
157
167 virtual Sint32 point( Uint32 index, Float64_3_struct& p) const = 0;
168
174 virtual Uint32 append_point( const Float32_3_struct& p) = 0;
175
181 virtual Uint32 append_point( const Float64_3_struct& p) = 0;
182
189 virtual Uint32 append_points( const Float32_3_struct* p, Size n) = 0;
190
197 virtual Uint32 append_points( const Float64_3_struct* p, Size n) = 0;
198
208 virtual Sint32 set_point( Uint32 index, const Float32_3_struct& p) = 0;
209
219 virtual Sint32 set_point( Uint32 index, const Float64_3_struct& p) = 0;
220
231 virtual Sint32 set_points( Uint32 index, const Float32_3_struct* p, Size n) = 0;
232
243 virtual Sint32 set_points( Uint32 index, const Float64_3_struct* p, Size n) = 0;
244
246
248
250 virtual Uint32 triangles_size() const = 0;
251
258 virtual Uint32 triangles_capacity() const = 0;
259
266 virtual void reserve_triangles( Uint32 n) = 0;
267
272 Triangle_handle_struct hnd) const = 0;
273
288 const Triangle_point_indices_struct& triangle)= 0;
289
308 const Triangle_point_indices_struct* triangles, Size n) = 0;
309
328 virtual Triangle_handle_struct append_triangles( const Uint32* indices, Size n) = 0;
329
347
366 Triangle_handle_struct hnd, const Triangle_point_indices_struct* triangle, Size n) = 0;
367
369
371
376
385
402
404
406
415
423
435
451
464
466
468
473 virtual bool has_attribute( Mesh_attribute_name name) const = 0;
474
488 Mesh_attribute_name name, Uint32 dim = 1) = 0;
489
496 Mesh_attribute_name name) const = 0;
497
509
525 virtual Sint32 attach_attribute_vector( IAttribute_vector* attribute_vector) = 0;
526
535
537
539
541 virtual Bbox3_struct get_bbox() const = 0;
542
548 const Float64_4_4_struct& transformation_matrix) const = 0;
549
551
553
558 virtual void set_maximum_displacement( Float32 displacement) = 0;
559
564
566
567};
568 // end group mi_neuray_leaf_nodes
570
571} // namespace neuraylib
572
573} // namespace mi
574
575#endif // MI_NEURAYLIB_ITRIANGLE_MESH_H
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.