Geometry Layers
Introduction
Layers are a powerful feature of HOOPS Luminate. They can be applied to geometries, materials as well as lights. Here, we’ll concentrate on geometries and see how layers can be used to show/hide meshes in a scene.
Description
With HOOPS Luminate, you can assign combination of layer IDs to shapes, materials and viewpoints. Those layer combinations are used to setup which and how things are rendered by a given camera (see Shape Attributes in a Scene Graph under the Layersets). In this example, we create two basic primitives: a red box and a green sphere. Each receives a dedicated layer ID as well as the rest of the scene:
// Setups the layer sets.
RED::LayerSet ls_box, ls_sphere, ls_scene;
ls_box.AddLayer( LAYER_BOX );
ls_sphere.AddLayer( LAYER_SPHERE );
ls_scene.AddLayer( LAYER_SCENE );
Then, by selecting the layer IDs set to the viewpoint, we can dynamically decide which geometry is visible or hidden:
// Checked buttons make the corresponding object visible, otherwise it's hidden.
// Objects are made visible or not by tweaking the layer set applied to the camera.
RED::LayerSet ls;
// The basic scene is always visible
ls.AddLayer( LAYER_SCENE );
if( RFK::TutorialApplication::GetCommandState( cmd_layer_red ) & CMD_FLAG_CHECKED )
ls.AddLayer( LAYER_BOX );
if( RFK::TutorialApplication::GetCommandState( cmd_layer_green ) & CMD_FLAG_CHECKED )
ls.AddLayer( LAYER_SPHERE );
RC_TEST( iviewpoint->ApplyLayerSet( ls, iresmgr->GetState() ) );