NVIDIA Iray API Home  Up
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ifreeform_surface.h
Go to the documentation of this file.
1 //*****************************************************************************
2 // Copyright 1986, 2016 NVIDIA Corporation. All rights reserved.
3 //*****************************************************************************
6 //*****************************************************************************
7 
8 #ifndef MI_NEURAYLIB_IFREEFORM_SURFACE_H
9 #define MI_NEURAYLIB_IFREEFORM_SURFACE_H
10 
12 #include <mi/neuraylib/identifier.h>
14 #include <mi/neuraylib/typedefs.h>
15 #include <mi/neuraylib/version.h>
16 
17 namespace mi {
18 
19 namespace neuraylib {
20 
21 class ISurface;
22 class ICurve;
23 class ICurve_segment;
24 class ITexture_surface;
25 
30 enum Basis_type
32 {
35 
38 
39  // Undocumented, for alignment only.
40  BASIS_TYPE_FORCE_32_BIT = 0xffffffffU
41 };
42 
43 mi_static_assert( sizeof( Basis_type) == sizeof( Uint32));
44 
47 {
50 
53 
54  // Undocumented, for alignment only.
55  DIMENSION_FORCE_32_BIT = 0xffffffffU
56 };
57 
59 
62 {
65 
68 
69  // Undocumented, for alignment only.
70  CURVE_TYPE_FORCE_32_BIT = 0xffffffffU
71 };
72 
73 mi_static_assert( sizeof( Curve_type) == sizeof( Uint32));
74 
99  public base::Interface_declare<0x5b54fda0,0x1034,0x48a2,0x9d,0xd1,0x4d,0x14,0xaa,0xba,0xa2,0xa7,
100  neuraylib::IScene_element>
101 {
102 public:
103 
105 
106 
108  virtual Uint32 get_surfaces_size() const = 0;
109 
113  virtual ISurface* add_surface() = 0;
114 
116  virtual const ISurface* access_surface( Surface_handle_struct s) const = 0;
117 
120 
125 
127 
129 
134  virtual bool has_attribute( Mesh_attribute_name name) const = 0;
135 
156  Mesh_attribute_name name, Uint32 dim = 1) = 0;
157 
166  Mesh_attribute_name name) const = 0;
167 
180 
197  virtual Sint32 attach_attribute_vector( IAttribute_vector* attribute_vector) = 0;
198 
207 
209 
211 
213  virtual const Float32_3_struct& get_bbox_min() const = 0;
214 
216  virtual const Float32_3_struct& get_bbox_max() const = 0;
217 
222  const Float64_4_4_struct& transformation_matrix) const = 0;
223 
225 
227 
232  virtual void set_maximum_displacement( Float32 displacement) = 0;
233 
237  virtual Float32 get_maximum_displacement() const = 0;
238 
240 };
241 
296 class ISurface :
297  public base::Interface_declare<0x8bc55fb4,0x91cb,0x4b0c,0xa2,0x3a,0x1a,0x67,0x71,0x61,0x73,0xf0>
298 {
299 public:
300 
302 
303 
312  virtual Sint32 set_basis_type( Basis_type type) = 0;
313 
315  virtual Basis_type get_basis_type() const = 0;
316 
327  virtual Sint32 set_degree( Parameter_space_dimension dim, Uint32 degree) = 0;
328 
333  virtual Uint32 get_degree( Parameter_space_dimension dim) const = 0;
334 
336 
338 
349  virtual Sint32 set_patches_size( Parameter_space_dimension dim, Uint32 count) = 0;
350 
355  virtual Uint32 get_patches_size( Parameter_space_dimension dim) const = 0;
356 
358 
360 
368  virtual Uint32 get_parameters_size( Parameter_space_dimension dim) const = 0;
369 
379  virtual Sint32 set_parameter( Parameter_space_dimension dim, Uint32 index, Float64 value) = 0;
380 
386  virtual Float64 get_parameter( Parameter_space_dimension dim, Uint32 index) const = 0;
387 
389 
391 
400 
409  virtual Sint32 set_control_point( Uint32 index_u, Uint32 index_v, Float32_3_struct p) = 0;
410 
419  virtual Sint32 get_control_point(
420  Uint32 index_u, Uint32 index_v, Float32_3_struct& p) const = 0;
421 
430  virtual Sint32 set_control_point( Uint32 index_u, Uint32 index_v, Float64_3_struct p) = 0;
431 
440  virtual Sint32 get_control_point(
441  Uint32 index_u, Uint32 index_v, Float64_3_struct& p) const = 0;
442 
454  virtual Sint32 set_weight( Uint32 index_u, Uint32 index_v, Float32 weight) = 0;
455 
464  virtual Sint32 get_weight( Uint32 index_u, Uint32 index_v, Float32& weight) const = 0;
465 
477  virtual Sint32 set_weight( Uint32 index_u, Uint32 index_v, Float64 weight) = 0;
478 
487  virtual Sint32 get_weight( Uint32 index_u, Uint32 index_v, Float64& weight) const = 0;
488 
494  virtual void set_rational( bool rational) = 0;
495 
497  virtual bool get_rational() const = 0;
498 
500 
502 
515  virtual Sint32 set_range(
516  Parameter_space_dimension dim, Float64 range_min, Float64 range_max) = 0;
517 
529  virtual Sint32 get_range(
530  Parameter_space_dimension dim, Float64& range_min, Float64& range_max) const = 0;
531 
533 
535 
537  virtual Uint32 curves_size() const = 0;
538 
540  virtual ICurve* add_curve() = 0;
541 
543  virtual const ICurve* access_curve( Curve_handle_struct c) const = 0;
544 
546  virtual ICurve* edit_curve( Curve_handle_struct c) = 0;
547 
551  virtual Sint32 remove_curve( Curve_handle_struct c) = 0;
552 
554 
556 
558  virtual Uint32 texture_surfaces_size() const = 0;
559 
561  virtual ITexture_surface* add_texture_surface() = 0;
562 
565  Texture_surface_handle_struct t) const = 0;
566 
569 
574 
576 };
577 
604 class ICurve :
605  public base::Interface_declare<0xa4e79414,0x6b74,0x422c,0x93,0x83,0x8a,0x08,0x41,0xf9,0x0a,0x27>
606 {
607 public:
608 
610 
611 
618  virtual Sint32 set_type( Curve_type curve_type) = 0;
619 
621  virtual Curve_type get_type() const = 0;
622 
624 
626 
628  virtual Uint32 get_curve_segments_size() const = 0;
629 
631  virtual ICurve_segment* add_curve_segment() = 0;
632 
635 
638 
643 
645 };
646 
659  public base::Interface_declare<0x1aae0632,0xcac0,0x4cab,0xb7,0xb4,0x26,0x6c,0x8a,0xf5,0x44,0x4e>
660 {
661 public:
662 
664 
665 
674  virtual Sint32 set_basis_type( Basis_type type) = 0;
675 
677  virtual Basis_type get_basis_type() const = 0;
678 
687  virtual Sint32 set_degree( Uint32 degree) = 0;
688 
692  virtual Uint32 get_degree() const = 0;
693 
695 
697 
706  virtual Sint32 set_patches_size( Uint32 count) = 0;
707 
711  virtual Uint32 get_patches_size() const = 0;
712 
714 
716 
723  virtual Uint32 get_parameters_size() const = 0;
724 
732  virtual Sint32 set_parameter( Uint32 index, Float64 value) = 0;
733 
738  virtual Float64 get_parameter( Uint32 index) const = 0;
739 
741 
743 
750  virtual Uint32 get_control_points_size() const = 0;
751 
759  virtual Sint32 set_control_point( Uint32 index, Float32_2_struct p) = 0;
760 
768  virtual Sint32 get_control_point( Uint32 index, Float32_2_struct& p) const = 0;
769 
777  virtual Sint32 set_control_point( Uint32 index, Float64_2_struct p) = 0;
778 
786  virtual Sint32 get_control_point( Uint32 index, Float64_2_struct& p) const = 0;
787 
798  virtual Sint32 set_weight( Uint32 index, Float32 weight) = 0;
799 
807  virtual Sint32 get_weight( Uint32 index, Float32& weight) const = 0;
808 
819  virtual Sint32 set_weight( Uint32 index, Float64 weight) = 0;
820 
828  virtual Sint32 get_weight( Uint32 index, Float64& weight) const = 0;
829 
835  virtual void set_rational( bool rational) = 0;
836 
840  virtual bool get_rational() const = 0;
841 
843 
845 
853 
854  virtual Sint32 set_range( Float64 range_min, Float64 range_max) = 0;
855 
862  virtual void get_range( Float64& range_min, Float64& range_max) const = 0;
863 
865 };
866 
881  public base::Interface_declare<0x5d39fdcb,0x9a3d,0x42ed,0xb3,0x90,0xc3,0x20,0x3d,0x31,0xa9,0x9d>
882 {
883 public:
884 
894 
900 
908 
912  virtual Uint32 get_texture_coordinate_length() const = 0;
913 
926  Uint32 index_u, Uint32 index_v, const Float32* f, Uint32 n) = 0;
927 
940  Uint32 index_u, Uint32 index_v, Float32* f, Uint32 n) const = 0;
941 
954  Uint32 index_u, Uint32 index_v, const Float64* d, Uint32 n) = 0;
955 
968  Uint32 index_u, Uint32 index_v, Float64* d, Uint32 n) const = 0;
969 };
970  // end group mi_neuray_leaf_nodes
972 
973 } // namespace neuraylib
974 
975 #ifdef MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION
978 using neuraylib::BASIS_TYPE_FORCE_32_BIT;
980 using neuraylib::CURVE_TYPE_FORCE_32_BIT;
984 using neuraylib::DIMENSION_FORCE_32_BIT;
989 using neuraylib::ICurve;
993 using neuraylib::ISurface;
1000 #endif // MI_NEURAYLIB_DEPRECATED_NAMESPACE_MI_TRANSITION
1001 
1002 } // namespace mi
1003 
1004 #endif // MI_NEURAYLIB_IFREEFORM_SURFACE_H