HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HdEncapsulatingSceneIndexBase Class Referenceabstract

#include <filteringSceneIndex.h>

+ Inheritance diagram for HdEncapsulatingSceneIndexBase:

Public Member Functions

virtual std::vector
< HdSceneIndexBaseRefPtr > 
GetEncapsulatedScenes () const =0
 

Static Public Member Functions

static
HdEncapsulatingSceneIndexBase
Cast (const HdSceneIndexBaseRefPtr &)
 

Detailed Description

A mix-in class for scene indices that implement their behaviour by creating other scene indices (internally).

Note that this can be combined with the HdFilteringSceneIndexBase.

The intention here is that we can traverse the scene index topology at different levels of detail in, e.g., a piece of software to display the scene index graph.

More precisely, the topology of scene indices should be imagined as a nested directed acyclic graph, that is, each node of the graph itself contains a graph. The high-level directed acyclic graph structure is obtained by recursing GetInputScenes. A node itself contains a graph if the node corresponds to an encapsulating scene index. This nested graph consists of the scene indices internal to the encapsulating scene index as defined below. We also need some extra information in how some of the internal scene indices are connected to the external scene indices to completely describe the scene index topology.

Given a scene index that is both an HdFilteringSceneIndexBase and an HdEncapsulatingSceneIndexBase, we call the result of GetInputScenes() the "external" scene indices. Now consider the scene indices that can be reached by first calling GetEncapsulatingScenes and then recursing GetInputScenes until we hit an external scene index. We call these scene indices "internal". If the scene index is not subclassing from HdFilteringSceneIndexBase, we compute the internal scene indices in the same way under the premise that there are no external scene indices.

If this mix-in class is combined with HdFilteringSceneIndexBase, then GetInputScenes() should be a subset of the scene indices obtained by recursively calling GetInputScenes or GetEncapsulatedScenes (or a mix of those).

Example: B filtering scene index with inputs {A} C filtering scene index with inputs {B} D filtering scene index with inputs {B} E filtering scene index with inputs {C, D} F filtering and encapsulating scene index with inputs {B} and encapsulated scenes {E} G filtering scene index with inputs {F}

Nested scene index Graph:

           A
           |
           B
          / \                                  |
 -F------/---\--------
 |      /     \      |
 |     C       D     |
 |      \     /      |
 |       \   /       |
 |        \ /        |
 |         E         |
 |                   |
 ---------------------
           |

Definition at line 104 of file filteringSceneIndex.h.

Member Function Documentation

static HdEncapsulatingSceneIndexBase* HdEncapsulatingSceneIndexBase::Cast ( const HdSceneIndexBaseRefPtr &  )
static
virtual std::vector<HdSceneIndexBaseRefPtr> HdEncapsulatingSceneIndexBase::GetEncapsulatedScenes ( ) const
pure virtual

The documentation for this class was generated from the following file: