Iray SDK API nvidia_logo_transpbg.gif Up
iinstance.h
Go to the documentation of this file.
1/***************************************************************************************************
2 * Copyright 2024 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_IINSTANCE_H
8#define MI_NEURAYLIB_IINSTANCE_H
9
12
13namespace mi {
14
15namespace neuraylib {
16
29 TRANSFORMATION_TYPE_FORCE_32_BIT = 0xffffffffU
30};
31
32mi_static_assert( sizeof( Transformation_type) == sizeof( Uint32));
33
115 public base::Interface_declare<0x11b46e5a,0x577b,0x4767,0x8b,0x35,0x88,0xd5,0xa3,0x3e,0xd0,0xe9,
116 neuraylib::IScene_element>
117{
118public:
140 virtual Sint32 attach( const char* scene_element) = 0;
141
147 virtual void detach() = 0;
148
152 virtual const char* get_item() const = 0;
153
155
156
158 virtual bool srt_mode() const = 0;
159
161
163
166 virtual void set_matrix( const Float64_4_4_struct& matrix) = 0;
167
172 virtual const Float64_4_4_struct& get_matrix() const = 0;
173
175
177
185 virtual void resize_time_slots( Size count) = 0;
186
188 virtual Size time_slots_size() const = 0;
189
205 virtual Sint32 set_time_value( Size time_index, Float64 value) = 0;
206
215 virtual Sint32 get_time_value( Size time_index, Float64& value) const = 0;
216
223 virtual void resize_transformation_sequences( Size count) = 0;
224
227
244 virtual Sint32 set_transformation_type( Size sequence_index, Transformation_type type) = 0;
245
255 Size sequence_index, Transformation_type& type) const = 0;
256
272 Size time_index, Size sequence_index, const Float64* data) = 0;
273
289 Size time_index, Size sequence_index, Float64* data) const = 0;
290
292
294
309 virtual Float64_4_4_struct evaluate( Float64 time = 0.0) const = 0;
310
312};
313 // end group mi_neuray_scene_graph_structure
315
316} // namespace neuraylib
317
318} // namespace mi
319
320#endif // MI_NEURAYLIB_IINSTANCE_H
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
An instance is a scene element that adds a transformation and attributes to another scene element.
Definition: iinstance.h:117
virtual Sint32 set_transformation_type(Size sequence_index, Transformation_type type)=0
Sets the transformation type of an elementary transformation for a given sequence index.
virtual Sint32 get_transformation_data(Size time_index, Size sequence_index, Float64 *data) const =0
Returns the transformation data of an elementary transformation for a given time slot and sequence in...
virtual Sint32 get_time_value(Size time_index, Float64 &value) const =0
Returns the time value associated with a particular time slot.
virtual Sint32 attach(const char *scene_element)=0
Attaches a scene element to the instance.
virtual void resize_time_slots(Size count)=0
Sets the number of time slots to count (and switches the transformation mode to SRT mode).
virtual Size time_slots_size() const =0
Returns the number of time slots (or 0 if the transformation mode is in matrix mode).
virtual void set_matrix(const Float64_4_4_struct &matrix)=0
Stores the given transformation matrix (and switches the transformation mode to matrix mode).
virtual const Float64_4_4_struct & get_matrix() const =0
Returns the stored transformation matrix if the transformation mode is matrix mode,...
virtual const char * get_item() const =0
Returns the name of the referenced element.
virtual Size transformation_sequences_size() const =0
Returns the number of transformations per time slot (or 0 if the object is in matrix mode).
virtual bool srt_mode() const =0
Indicates whether the transformation mode is SRT mode or matrix mode.
virtual Sint32 set_transformation_data(Size time_index, Size sequence_index, const Float64 *data)=0
Sets the transformation data of an elementary transformation for a given time slot and sequence index...
virtual Sint32 get_transformation_type(Size sequence_index, Transformation_type &type) const =0
Returns the transformation type of an elementary transformation for a given sequence index.
virtual void detach()=0
Detaches the scene element from the instance.
virtual void resize_transformation_sequences(Size count)=0
Sets the number of transformations per time slot to count (and switches the object to SRT mode).
virtual Float64_4_4_struct evaluate(Float64 time=0.0) const =0
Computes the effective transformation for a given time value.
virtual Sint32 set_time_value(Size time_index, Float64 value)=0
Sets the time value associated with a particular time slot.
#define mi_static_assert(expr)
Compile time assertion that raises a compilation error if the constant expression expr evaluates to f...
Definition: assert.h:65
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
double Float64
64-bit float.
Definition: types.h:52
signed int Sint32
32-bit signed integer.
Definition: types.h:46
Transformation_type
The four different types of elementary transformations.
Definition: iinstance.h:24
@ TRANSLATION
translation
Definition: iinstance.h:27
@ MATRIX
general transformation
Definition: iinstance.h:28
@ ROTATION
rotation
Definition: iinstance.h:26
@ SCALING
scaling
Definition: iinstance.h:25
Base class for all scene elements.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: neuraylib.h:179
Storage class for a NxM-dimensional matrix class template of fixed dimensions.
Definition: matrix.h:90
Typedefs for types from the math API.