ifreeform_surface.h File Reference
Description
Scene element Freeform_surface.
Code Example
ifreeform_surface.h
/***************************************************************************************************
* Copyright 2024 NVIDIA Corporation. All rights reserved.
**************************************************************************************************/
#ifndef MI_NEURAYLIB_IFREEFORM_SURFACE_H
#define MI_NEURAYLIB_IFREEFORM_SURFACE_H
#include <mi/neuraylib/iattribute_vector.h>
#include <mi/neuraylib/identifier.h>
#include <mi/neuraylib/iscene_element.h>
#include <mi/neuraylib/typedefs.h>
namespace mi {
namespace neuraylib {
class ISurface;
class ICurve;
class ICurve_segment;
class ITexture_surface;
enum Basis_type
{
BASIS_BEZIER = 0,
BASIS_BSPLINE = 1,
// Undocumented, for alignment only.
BASIS_TYPE_FORCE_32_BIT = 0xffffffffU
};
mi_static_assert( sizeof( Basis_type) == sizeof( Uint32));
enum Parameter_space_dimension
{
DIMENSION_U = 0,
DIMENSION_V = 1,
// Undocumented, for alignment only.
DIMENSION_FORCE_32_BIT = 0xffffffffU
};
mi_static_assert( sizeof( Parameter_space_dimension) == sizeof( Uint32));
enum Curve_type
{
TRIM_CURVE = 0,
HOLE_CURVE = 1,
// Undocumented, for alignment only.
CURVE_TYPE_FORCE_32_BIT = 0xffffffffU
};
mi_static_assert( sizeof( Curve_type) == sizeof( Uint32));
class IFreeform_surface :
public base::Interface_declare<0x5b54fda0,0x1034,0x48a2,0x9d,0xd1,0x4d,0x14,0xaa,0xba,0xa2,0xa7,
neuraylib::IScene_element>
{
public:
virtual Uint32
get_surfaces_size() const = 0;
virtual ISurface* add_surface() = 0;
virtual const ISurface* access_surface( Surface_handle_struct s) const = 0;
virtual ISurface* edit_surface( Surface_handle_struct s) = 0;
virtual Sint32
remove_surface( Surface_handle_struct s) = 0;
virtual bool has_attribute( Mesh_attribute_name name) const = 0;
virtual IAttribute_vector* create_attribute_vector(
Mesh_attribute_name name, Uint32 dim = 1) = 0;
virtual const IAttribute_vector* access_attribute_vector(
Mesh_attribute_name name) const = 0;
virtual IAttribute_vector* edit_attribute_vector( Mesh_attribute_name name) = 0;
virtual Sint32
attach_attribute_vector( IAttribute_vector* attribute_vector) = 0;
virtual Sint32
remove_attribute_vector( Mesh_attribute_name name) = 0;
virtual Bbox3_struct
get_bbox() const = 0;
virtual Bbox3_struct
get_tight_bbox(
const Float64_4_4_struct& transformation_matrix) const = 0;
virtual void set_maximum_displacement( Float32 displacement) = 0;
virtual Float32
get_maximum_displacement() const = 0;
};
class ISurface :
public base::Interface_declare<0x8bc55fb4,0x91cb,0x4b0c,0xa2,0x3a,0x1a,0x67,0x71,0x61,0x73,0xf0>
{
public:
virtual Sint32
set_basis_type( Basis_type type) = 0;
virtual Basis_type
get_basis_type() const = 0;
virtual Sint32
set_degree( Parameter_space_dimension dim, Uint32 degree) = 0;
virtual Uint32
get_degree( Parameter_space_dimension dim) const = 0;
virtual Sint32
set_patches_size( Parameter_space_dimension dim, Uint32 count) = 0;
virtual Uint32
get_patches_size( Parameter_space_dimension dim) const = 0;
virtual Uint32
get_parameters_size( Parameter_space_dimension dim) const = 0;
virtual Sint32
set_parameter( Parameter_space_dimension dim, Uint32 index, Float64 value) = 0;
virtual Float64
get_parameter( Parameter_space_dimension dim, Uint32 index) const = 0;
virtual Uint32
get_control_points_size( Parameter_space_dimension dim) const = 0;
virtual Sint32
set_control_point( Uint32 index_u, Uint32 index_v, Float32_3_struct p) = 0;
virtual Sint32
get_control_point(
Uint32 index_u, Uint32 index_v, Float32_3_struct& p) const = 0;
virtual Sint32
set_control_point( Uint32 index_u, Uint32 index_v, Float64_3_struct p) = 0;
virtual Sint32
get_control_point(
Uint32 index_u, Uint32 index_v, Float64_3_struct& p) const = 0;
virtual Sint32
set_weight( Uint32 index_u, Uint32 index_v, Float32 weight) = 0;
virtual Sint32
get_weight( Uint32 index_u, Uint32 index_v, Float32& weight) const = 0;
virtual Sint32
set_weight( Uint32 index_u, Uint32 index_v, Float64 weight) = 0;
virtual Sint32
get_weight( Uint32 index_u, Uint32 index_v, Float64& weight) const = 0;
virtual void set_rational( bool rational) = 0;
virtual bool get_rational() const = 0;
virtual Sint32
set_range(
Parameter_space_dimension dim, Float64 range_min, Float64 range_max) = 0;
virtual Sint32
get_range(
Parameter_space_dimension dim, Float64& range_min, Float64& range_max) const = 0;
virtual Uint32
curves_size() const = 0;
virtual ICurve* add_curve() = 0;
virtual const ICurve* access_curve( Curve_handle_struct c) const = 0;
virtual ICurve* edit_curve( Curve_handle_struct c) = 0;
virtual Sint32
remove_curve( Curve_handle_struct c) = 0;
virtual Uint32
texture_surfaces_size() const = 0;
virtual ITexture_surface* add_texture_surface() = 0;
virtual const ITexture_surface* access_texture_surface(
Texture_surface_handle_struct t) const = 0;
virtual ITexture_surface* edit_texture_surface( Texture_surface_handle_struct t) const = 0;
virtual Sint32
remove_texture_surface( Texture_surface_handle_struct t) = 0;
};
class ICurve :
public base::Interface_declare<0xa4e79414,0x6b74,0x422c,0x93,0x83,0x8a,0x08,0x41,0xf9,0x0a,0x27>
{
public:
virtual Sint32
set_type( Curve_type curve_type) = 0;
virtual Curve_type
get_type() const = 0;
virtual Uint32
get_curve_segments_size() const = 0;
virtual ICurve_segment* add_curve_segment() = 0;
virtual const ICurve_segment* access_curve_segment( Curve_segment_handle_struct s) const = 0;
virtual ICurve_segment* edit_curve_segment( Curve_segment_handle_struct s) = 0;
virtual Sint32
remove_curve_segment( Curve_segment_handle_struct s) = 0;
};
class ICurve_segment :
public base::Interface_declare<0x1aae0632,0xcac0,0x4cab,0xb7,0xb4,0x26,0x6c,0x8a,0xf5,0x44,0x4e>
{
public:
virtual Sint32
set_basis_type( Basis_type type) = 0;
virtual Basis_type
get_basis_type() const = 0;
virtual Sint32
set_degree( Uint32 degree) = 0;
virtual Uint32
get_degree() const = 0;
virtual Sint32
set_patches_size( Uint32 count) = 0;
virtual Uint32
get_patches_size() const = 0;
virtual Uint32
get_parameters_size() const = 0;
virtual Sint32
set_parameter( Uint32 index, Float64 value) = 0;
virtual Float64
get_parameter( Uint32 index) const = 0;
virtual Uint32
get_control_points_size() const = 0;
virtual Sint32
set_control_point( Uint32 index, Float32_2_struct p) = 0;
virtual Sint32
get_control_point( Uint32 index, Float32_2_struct& p) const = 0;
virtual Sint32
set_control_point( Uint32 index, Float64_2_struct p) = 0;
virtual Sint32
get_control_point( Uint32 index, Float64_2_struct& p) const = 0;
virtual Sint32
set_weight( Uint32 index, Float32 weight) = 0;
virtual Sint32
get_weight( Uint32 index, Float32& weight) const = 0;
virtual Sint32
set_weight( Uint32 index, Float64 weight) = 0;
virtual Sint32
get_weight( Uint32 index, Float64& weight) const = 0;
virtual void set_rational( bool rational) = 0;
virtual bool get_rational() const = 0;
virtual Sint32
set_range( Float64 range_min, Float64 range_max) = 0;
virtual void get_range( Float64& range_min, Float64& range_max) const = 0;
};
class ITexture_surface :
public base::Interface_declare<0x5d39fdcb,0x9a3d,0x42ed,0xb3,0x90,0xc3,0x20,0x3d,0x31,0xa9,0x9d>
{
public:
virtual Sint32
set_texture_coordinates_size( Parameter_space_dimension dim, Uint32 count) = 0;
virtual Uint32
get_texture_coordinates_size( Parameter_space_dimension dim) const = 0;
virtual Sint32
set_texture_coordinate_length( Uint32
length) = 0;
virtual Uint32
get_texture_coordinate_length() const = 0;
virtual Sint32
set_texture_coordinate(
Uint32 index_u, Uint32 index_v, const Float32* f, Uint32 n) = 0;
virtual Sint32
get_texture_coordinate(
Uint32 index_u, Uint32 index_v, Float32* f, Uint32 n) const = 0;
virtual Sint32
set_texture_coordinate(
Uint32 index_u, Uint32 index_v, const Float64* d, Uint32 n) = 0;
virtual Sint32
get_texture_coordinate(
Uint32 index_u, Uint32 index_v, Float64* d, Uint32 n) const = 0;
};
// end group mi_neuray_leaf_nodes
} // namespace neuraylib
} // namespace mi
#endif // MI_NEURAYLIB_IFREEFORM_SURFACE_H
Namespaces
- namespace
- Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH. More...
- namespace
- Namespace for the neuray API. More...
Classes
- class
- A curve used by freeform surfaces. More...
- class
- A curve segment used by freeform surfaces. More...
- class
- Interface representing a freeform surface. More...
- class
- A surface of a freeform surface. More...
- class
- A texture surface associated with freeform surfaces. More...
Enumerations
- enum {BASIS_BEZIER = 0, BASIS_BSPLINE = 1, BASIS_TYPE_FORCE_32_BIT = 0xffffffffU }
- Different basis types that are supported by freeform surfaces. More...
- enum {TRIM_CURVE = 0, HOLE_CURVE = 1, CURVE_TYPE_FORCE_32_BIT = 0xffffffffU }
- Different curve types that are supported by freeform surfaces. More...
- enum {DIMENSION_U = 0, DIMENSION_V = 1, DIMENSION_FORCE_32_BIT = 0xffffffffU }
- Distinguishes the two dimensions of the parameter space of freeform surfaces. More...