neuray API Programmer's Manual

mi::neuraylib::IScene Class Reference

[Rendering and Picking]

Description

The scene is the top-level element describing a subset of DB elements to be rendered. A scene is described by three elements:

Preprocessing of scene data is deferred until it is needed. In particular, get_bbox_min(), get_bbox_max(), and create_render_context() trigger preprocessing of the scene data.

Note that editing an instance of this class stored in the DB will localize it to the scope of the current transaction. That is, calling mi::neuraylib::ITransaction::edit() on instances of mi::neuraylib::IScene will automatically invoke mi::neuraylib::ITransaction::copy() with identical names for source and target and mi::neuraylib::ITransaction::LOCAL_SCOPE as third argument.

Public Member Functions

virtual IRender_contextcreate_render_context( ITransaction* transaction, const char* render_mode, Sint32* errors = 0) =0
Creates a render context suitable for rendering the scene with a given render mode. More...
virtual Sint32 get_bbox_max( Float32_3_struct& corner) =0
Returns the maximal corner of the bounding box of this scene. More...
virtual Sint32 get_bbox_min( Float32_3_struct& corner) =0
Returns the minimal corner of the bounding box of this scene. More...
virtual const IStringget_camera_instance() const =0
Returns the name of the camera instance of this scene. More...
virtual const IStringget_options() const =0
Returns the name of the options of this scene. More...
virtual const IStringget_rootgroup() const =0
Returns the name of the root group of this scene. More...
virtual Sint32 set_camera_instance( const char* camera) =0
Sets the camera instance of this scene. More...
virtual Sint32 set_options( const char* options) =0
Sets the options of this scene. More...
virtual Sint32 set_rootgroup( const char* root) =0
Sets the root group of this scene. More...

Member Functions

virtual IRender_context* mi::​neuraylib::​IScene::create_render_context( ITransaction* transaction, const char* render_mode, Sint32* errors = 0) [pure virtual]

Creates a render context suitable for rendering the scene with a given render mode.

See also:

Certain render modes are only available if their corresponding plugin is loaded, see mi::neuraylib::IPlugin_configuration::load_plugin_library().

Not all render modes are available in all configurations. You can use mi::neuraylib::IRendering_configuration::get_renderers_length() and mi::neuraylib::IRendering_configuration::get_renderer() to query the render modes that are actually available.

Parameters

transaction
The transaction to be used.
render_mode
:bindertarget render-mode The render mode to be used, for example, "iray". Possible values are documented in Section [:ipmlink render_mode_selection Render mode selection] of the Iray Programmer's Manual.
errors
An optional pointer to an mi::Sint32 to which an error code will be written. The error codes have the following meaning:
  • 0: Success.
  • -1: Invalid parameters (NULL pointer).
  • -2: The scene object was not stored and retrieved from the database (this is required for this method to succeed).
  • -3: The parameter render_mode is not a valid render mode (see notes below).
  • -4: The root group, the options, or the camera instance are invalid.
  • -5: The render mode failed to create the render context for render mode-specific reasons.

Returns

The render context for the given render mode, or NULL in case of failure.

virtual Sint32 mi::​neuraylib::​IScene::get_bbox_max( Float32_3_struct& corner) [pure virtual]

Returns the maximal corner of the bounding box of this scene. This method is not a const method because it might trigger loading the actual scene data.

Parameters

corner
The maximum corner of the bounding box.

Returns

  • 0: Success.
  • -1: The root group, the options, or the camera instance are invalid.
  • -2: The scene object was not stored and retrieved from the database (this is required for this method to succeed).
virtual Sint32 mi::​neuraylib::​IScene::get_bbox_min( Float32_3_struct& corner) [pure virtual]

Returns the minimal corner of the bounding box of this scene. This method is not a const method because it might trigger loading the actual scene data.

Parameters

corner
The minimum corner of the bounding box.

Returns

  • 0: Success.
  • -1: The root group, the options, or the camera instance are invalid.
  • -2: The scene object was not stored and retrieved from the database (this is required for this method to succeed).
virtual const IString* mi::​neuraylib::​IScene::get_camera_instance() const [pure virtual]

Returns the name of the camera instance of this scene.

Returns

The name, or NULL if there is no camera instance.

virtual const IString* mi::​neuraylib::​IScene::get_options() const [pure virtual]

Returns the name of the options of this scene.

Returns

The name, or NULL if there is no options object.

virtual const IString* mi::​neuraylib::​IScene::get_rootgroup() const [pure virtual]

Returns the name of the root group of this scene.

Returns

The name, or NULL if there is no root group.

virtual Sint32 mi::​neuraylib::​IScene::set_camera_instance( const char* camera) [pure virtual]

Sets the camera instance of this scene.

Note:

Setting a different camera instance (as opposed to changing the current camera instance) will not affect already created render contexts.

Parameters

camera
The name of the camera instance.

Returns

  • 0: Success.
  • -1: Invalid parameters (NULL pointer).
  • -2: There is no element with that name.
  • -3: The element can not be set as camera instance because it is in a more private scope than the scene.
  • -4: The element is not an instance.
virtual Sint32 mi::​neuraylib::​IScene::set_options( const char* options) [pure virtual]

Sets the options of this scene.

Note:

Setting different options (as opposed to changing the current options) will not affect already created render contexts.

Parameters

options
The name of the options.

Returns

  • 0: Success.
  • -1: Invalid parameters (NULL pointer).
  • -2: There is no element with that name.
  • -3: The element can not be set as options because it is in a more private scope than the scene.
  • -4: The element is not an options object.
virtual Sint32 mi::​neuraylib::​IScene::set_rootgroup( const char* root) [pure virtual]

Sets the root group of this scene.

Note:

Setting a different root group (as opposed to changing the current root group) will not affect already created render contexts.

Parameters

root
The root group.

Returns

  • 0: Success.
  • -1: Invalid parameters (NULL pointer).
  • -2: There is no element with that name.
  • -3: The element can not be set as root group because it is in a more private scope than the scene.
  • -4: The element is not a group.