|
|
| virtual Sint32 | set_basis_type (Basis_type type)=0 |
| | Sets the basis type. More...
|
| |
| virtual Basis_type | get_basis_type () const =0 |
| | Returns the basis type. More...
|
| |
| virtual Sint32 | set_degree (Parameter_space_dimension dim, Uint32 degree)=0 |
| | Sets the basis degree. More...
|
| |
| virtual Uint32 | get_degree (Parameter_space_dimension dim) const =0 |
| | Returns the basis degree. More...
|
| |
|
| virtual Sint32 | set_patches_size (Parameter_space_dimension dim, Uint32 count)=0 |
| | Sets the number of patches. More...
|
| |
| virtual Uint32 | get_patches_size (Parameter_space_dimension dim) const =0 |
| | Returns the number of patches. More...
|
| |
|
| virtual Uint32 | get_parameters_size (Parameter_space_dimension dim) const =0 |
| | Returns the size of the parameter vector. More...
|
| |
| virtual Sint32 | set_parameter (Parameter_space_dimension dim, Uint32 index, Float64 value)=0 |
| | Sets a parameter. More...
|
| |
| virtual Float64 | get_parameter (Parameter_space_dimension dim, Uint32 index) const =0 |
| | Returns a parameter. More...
|
| |
|
| virtual Uint32 | get_control_points_size (Parameter_space_dimension dim) const =0 |
| | Returns the number of control points. More...
|
| |
| virtual Sint32 | set_control_point (Uint32 index_u, Uint32 index_v, Float32_3_struct p)=0 |
| | Sets a control point. More...
|
| |
| virtual Sint32 | get_control_point (Uint32 index_u, Uint32 index_v, Float32_3_struct &p) const =0 |
| | Returns a control point. More...
|
| |
| virtual Sint32 | set_control_point (Uint32 index_u, Uint32 index_v, Float64_3_struct p)=0 |
| | Sets a control point. More...
|
| |
| virtual Sint32 | get_control_point (Uint32 index_u, Uint32 index_v, Float64_3_struct &p) const =0 |
| | Returns a control point. More...
|
| |
| virtual Sint32 | set_weight (Uint32 index_u, Uint32 index_v, Float32 weight)=0 |
| | Sets a weight. More...
|
| |
| virtual Sint32 | get_weight (Uint32 index_u, Uint32 index_v, Float32 &weight) const =0 |
| | Returns a weight. More...
|
| |
| virtual Sint32 | set_weight (Uint32 index_u, Uint32 index_v, Float64 weight)=0 |
| | Sets a weight. More...
|
| |
| virtual Sint32 | get_weight (Uint32 index_u, Uint32 index_v, Float64 &weight) const =0 |
| | Returns a weight. More...
|
| |
| virtual void | set_rational (bool rational)=0 |
| | Sets the rational flag. More...
|
| |
| virtual bool | get_rational () const =0 |
| | Returns the rational flag. More...
|
| |
|
| virtual Sint32 | set_range (Parameter_space_dimension dim, Float64 range_min, Float64 range_max)=0 |
| | Sets the parameter range. More...
|
| |
| virtual Sint32 | get_range (Parameter_space_dimension dim, Float64 &range_min, Float64 &range_max) const =0 |
| | Returns the parameter range. More...
|
| |
|
| virtual Uint32 | curves_size () const =0 |
| | Returns the number of curves. More...
|
| |
| virtual ICurve * | add_curve ()=0 |
| | Adds and returns a new curve. More...
|
| |
| virtual const ICurve * | access_curve (Curve_handle_struct c) const =0 |
| | Returns a curve (const). More...
|
| |
| virtual ICurve * | edit_curve (Curve_handle_struct c)=0 |
| | Returns a curve (mutable). More...
|
| |
| virtual Sint32 | remove_curve (Curve_handle_struct c)=0 |
| | Removes a curve. More...
|
| |
|
| virtual Uint32 | texture_surfaces_size () const =0 |
| | Returns the number of texture surfaces. More...
|
| |
| virtual ITexture_surface * | add_texture_surface ()=0 |
| | Adds and returns a new texture surface. More...
|
| |
| virtual const ITexture_surface * | access_texture_surface (Texture_surface_handle_struct t) const =0 |
| | Returns a texture surface (const). More...
|
| |
| virtual ITexture_surface * | edit_texture_surface (Texture_surface_handle_struct t) const =0 |
| | Returns a texture surface (mutable). More...
|
| |
| virtual Sint32 | remove_texture_surface (Texture_surface_handle_struct t)=0 |
| | Removes a texture surface. More...
|
| |
| virtual Uint32 | retain () const =0 |
| | Increments the reference count. More...
|
| |
| virtual Uint32 | release () const =0 |
| | Decrements the reference count. More...
|
| |
| virtual const IInterface * | get_interface (const Uuid &interface_id) const =0 |
| | Acquires a const interface from another. More...
|
| |
| template<class T> |
| const T * | get_interface () const |
| | Acquires a const interface from another. More...
|
| |
| virtual IInterface * | get_interface (const Uuid &interface_id)=0 |
| | Acquires a mutable interface from another. More...
|
| |
| template<class T> |
| T * | get_interface () |
| | Acquires a mutable interface from another. More...
|
| |
| virtual Uuid | get_iid () const =0 |
| | Returns the interface ID of the most derived interface. More...
|
| |
A surface of a freeform surface.
Surfaces are defined by their basis type, degree (in U and V direction), number of patches (in U and V direction), the parameter vector (in U and V direction), and the 2-dimensional grid of control points. In case of rational surfaces, an additional weight is associated with each control point.
Two basis types are currently supported: Bezier and B-Spline.
Note the distinction between surfaces and patches. A patch is the smallest unit that can be described with a given basis. For example, a patch for a cubic Bezier bases has 4 x 4 control points. A surface consists of one or more patches. Neighboring patches share control points. For example, a patch in a B-Spline surface of degrees d in a given parameter space dimension shares its last d control points with the next patch in that dimension.
The degree, the number of patches, the length of the parameter vector, and the number of control points in a given parameter space dimension are related as follows:
| Bezier basis | B-Spline basis |
| #parameters | #patches + 1 | #patches + 2*degree + 1 |
| #control points | #patches * degree + 1 | #patches + degree |
The degree and the number of patches can be explicitly controlled (see set_degree() and set_patches_size()). The numbers of parameters and controls points are automatically computed based on the degree and the number of patches.
Furthermore, surfaces can be trimmed by parametric curves (see mi::neuraylib::ICurve). Texture surfaces can be attached to specify how surface vertices are mapped to texture coordinates (see mi::neuraylib::ITexture_surface).
Curves and texture surfaces are stored with consecutive indices, starting with the index 0. For type safety, indices of curves and textures surfaces are represented using mi::neuraylib::Curve_handle and mi::neuraylib::Texture_surface_handle instead of plain integers.
- See also
- mi::neuraylib::IFreeform_surface
-
mi::neuraylib::ICurve
-
mi::neuraylib::ITexture_surface
-
mi::neuraylib::Parameter_space_dimension
-
mi::neuraylib::Basis_type