Scene Graph Iterators¶
-
group
SI
API that allows to iterate through the locations and attributes on a Scenegraph.
This API allows to iterate through the locations on a scenegraph and query their attributes. This is an auxiliary API that can be used when implementing, for example, a connection of Katana to a Renderer. In this specific case the renderer will have at some point to discover which locations and attributes exist on the Katana scene being rendered.
Given the lazy initialization nature of Katana the scenegraph locations and attributes will be procedurally generated under the hood as the iterators go through the scene. Whenever a FnScenegraphIterator is instantiated Katana will generate its corresponding location if needed on that moment.
-
class
FnScenegraphIterator
¶ - #include <FnScenegraphIterator.h>
The Scenegraph Iterator that ‘points’ at a location in a scenegraph.
Each instance of this class will be conceptually pointing at a specific location of the scenegraph. It presents methods that return other iterators that point at child, sibling, parent and other arbitraty locations on the scenegraph. The location pointed by the instance is referred here as “current location”.
Public Functions
-
FnScenegraphIterator
(FnSgIteratorHandle handle)¶
-
FnScenegraphIterator
()¶
-
~FnScenegraphIterator
()¶
-
FnScenegraphIterator
(const FnScenegraphIterator &rhs)¶
-
FnScenegraphIterator &
operator=
(const FnScenegraphIterator &rhs)¶
-
bool
isValid
() const¶ Returns true if this Scenegraph Iterator is valid.
-
std::string
getName
() const¶ Returns the name of the current Location. (ex: “pony” in “/root/world/geo/pony”)
-
std::string
getFullName
() const¶ Returns the full path name of the current Location. (ex: “/root/world/geo/pony”)
-
std::string
getType
() const¶ Returns the type of the current Location. (ex: “subdmesh” or “group”)
-
FnScenegraphIterator
getFirstChild
(bool evict = false) const¶ Returns an iterator that poins at the first child of the current location.
-
FnScenegraphIterator
getNextSibling
(bool evict = false) const¶ Returns an iterator that poins at the next sibling of the current location.
-
FnScenegraphIterator
getParent
() const¶ Returns an iterator that poins at the parent of the current location.
-
FnScenegraphIterator
getRoot
() const¶ Returns an iterator that poins at the root location of the scenegraph where the current locations lives.
-
FnAttribute::StringAttribute
getPotentialChildren
() const¶ - Return
- a list of immediate potential child names
-
FnScenegraphIterator
getChildByName
(const std::string &name, bool evict = false) const¶ Returns an iterator to a child of the current location.
Returns an iterator that points at a child location with the given name underneath the current location.
- Parameters
name
-The name of the child location for which to return a scene graph iterator.
evict
-Flag that controls whether the Geolib3 Runtime will flush cached scene data, while protecting data that is deemed potentially relevant to the child scene graph location with the given name, for example that of ancestor locations.
-
FnScenegraphIterator
getByPath
(const std::string &path, bool evict = false) const¶ Returns an iterator pointing at a location with a given path.
Returns an iterator that points to a location in the scene graph that is identified by the given forward slash-separated scene graph location path.
- Parameters
path
-The forward slash-separated path of the scene graph location for which to return a scene graph iterator.
evict
-Flag that controls whether the Geolib3 Runtime will flush cached scene data, while protecting data that is deemed potentially relevant to the scene graph location with the given path, for example that of ancestor locations.
-
FnAttribute::Attribute
getAttribute
(const std::string &name, bool global = false) const¶ Get a specific attribute from the location pointed by the iterator.
Returns an existing Attribute from the current Location if no location is specified. If there isn’t any Attribute with the given name on the given Location then an invalid FnAttribute is returned (which can be checked with the function FnAttribute::isValid()).
- Parameters
name
-The name of the attribute - can be a child of a GroupAttribute (ex: “geometry.point.P”)
global
-If false then the global attributes (inherited from parent Locations) will be ignored. In this case if the requested Attribute is global, then an invalid attribute is returned.
-
FnAttribute::StringAttribute
getAttributeNames
() const¶ Return the names of all the attributes on the location pointed by the iterator.
- Return
- A valid StringAttribute
-
FnAttribute::GroupAttribute
getGlobalXFormGroup
() const¶ - Return
- a GroupAttribute that represents the global transform for this location.
-
void
finalizeRuntime
() const¶ Notifies the Geolib Runtime that the renderer plug-in will not interact with it again, and therefore resources can be deallocated (e.g. cached scene data, internal threads, etc.).
To be used (just) after the scene has been entirely traversed, and typically before the renderer starts rendering.
This function can take time. It may be desirable to invoke this function from a worker thread to avoid blocking the actual rendering.
- Note
- All iterators associated with the same runtime instance will be invalidated, as no more interaction is expected from them.
-
-
class