|
AGX Dynamics 2.42.3.0
|
Raytrace result handler is resposible for when and how the raytracing starts and ends and collecting/fetching data. More...
#include <RaytraceOutputHandler.h>
Inheritance diagram for agxSensor::RtOutputHandler:Public Types | |
| enum | RuntimeFlag : agx::UInt32 { RAYTRACING = 1 << 0 , FETCHING_DATA = 1 << 1 , RESTORED = 1 << 2 } |
| using | RuntimeState = agx::AtomicState< RuntimeFlag > |
Public Member Functions | |
| RtOutputHandler () | |
| Default constructor. | |
| template<typename T , RtOutput::Field... field> | |
| RtOutput * | add () |
| Build matching result to a given data type T. | |
| bool | add (RtOutputNoise *noise) |
| Add output noise instance to the system tree. | |
| bool | add (size_t uniqueId, RtOutput *output) |
| Add raytrace result given unique id, e.g., RtOutput::getTypeHash<MyData>(). | |
| bool | contains (const RtOutputNoise *noise) const |
| template<typename T > | |
| RtOutput * | get () |
| Access added result instance for the given data type T. | |
| RtOutput * | get (size_t uniqueId) |
| Access result instance given the unique id used when it was added. | |
| agx::UInt32 | getAmbientHitSeed () const |
| ISensorOutput * | getBase (size_t uniqueId) override |
| Access result instance given the unique id used when it was added. | |
| bool | getEnableRemoveRayMisses () const |
| RtOutputNoiseRefVector | getOutputNoises () const |
| size_t | getRaytraceDepth () const |
| bool | remove (RtOutputNoise *noise) |
| Remove output noise instance from the system tree. | |
| void | setAmbientHitSeed (agx::UInt32 seed=783u) |
| Set the seed used to configure the pseudo-random generation the ambient/atmospheric hits. | |
| void | setEnableRemoveRayMisses (bool enable) |
| Enable/disable pruning of data for rays that doesn't hit any target. | |
| void | setRaytraceDepth (size_t steps=1) |
| Configure the number of maximum raytrace steps. | |
| template<typename T > | |
| BinaryOutputView< T > | view () |
| Directly access an output view of the raytrace output instance using a hash of the type with which it was registered. | |
Public Member Functions inherited from agxSensor::RtSystemNode | |
| virtual | ~RtSystemNode ()=default |
| virtual bool | addNotification () override |
| Called when this system node has been added to a sensor environment. | |
| virtual void | cleanup () override |
| The sensor environment is being put down, clean everything. | |
| template<typename T > | |
| RtSystemNode * | findChildProxyFor () const |
| RtNode * | getNode () const |
| RtNode * | getOrCreateNode () |
| Called when the node is required. | |
| virtual void | onChildAdded (SystemNode &child) override |
Called when child has been added to this parent. | |
| virtual void | onChildRemoved (SystemNode &child) override |
Called when child has been removed from this parent. | |
| virtual void | onParentConnect (RtSystemNode &parent) |
Called when getOrCreateNode() returns nullptr when this node is being added as child to parent. | |
| virtual void | onParentDisconnect (RtSystemNode &parent) |
| Called when getNode() returns nullptr when this node is being removed from its parent. | |
Public Member Functions inherited from agxSensor::SystemNode | |
| SystemNode (const SystemNode &)=delete | |
| Disallow direct copying of nodes. | |
| virtual | ~SystemNode ()=default |
| bool | addChild (SystemNode *child) |
| Add unique child to this node. | |
| virtual bool | addNotification () |
| Called when this system node has been added to a sensor environment. | |
| bool | appendChild (SystemNode *child) |
| Append child to vector of children, silently. | |
| virtual void | cleanup ()=0 |
| The sensor environment is being put down, clean everything. | |
| virtual void | complete () |
| Complete the execution of this system, finishing the integration forward in time. | |
| bool | detachChild (SystemNode *child) |
| Detach/erase child from vector of children, silently. | |
| virtual bool | eraseAndConnect () |
| Erase this node from the tree and connect its children to the current parent of this node. | |
| virtual void | execute (const CallbackData &data) |
Execute this system, integrating it data.dt forward in time. | |
| template<typename T > | |
| T * | findChild (bool recurse=true) const |
| Find child of given type. | |
| template<typename PredicateT > | |
| SystemNode * | findChild (PredicateT pred, bool recurse=true) const |
Find child given predicate pred. | |
| template<typename T > | |
| T * | findParent () const |
| template<typename PredicateT > | |
| SystemNode * | findParent (PredicateT pred) const |
| Find parent given predicate. | |
| template<typename T > | |
| T * | getChild () const |
| Searches children for a node of given type. | |
| SystemNode * | getChild (size_t index) const |
| bool | getEnable () const |
| Environment * | getEnvironment () const |
| const agx::Name & | getName () const |
| size_t | getNumChildren () const |
| SystemNode * | getParent () const |
| SystemNode * | getRoot () const |
| bool | hasChild (const SystemNode *child, bool recurse=true) const |
| virtual bool | insertParent (SystemNode &parent) |
| Inserts new parent to this node. | |
| virtual bool | onAdd (agx::Referenced &instance) |
| Called when an object has been added to the sensor environment. | |
| virtual void | onChildAdded (SystemNode &child) |
Called when child has been added to this parent. | |
| virtual void | onChildRemoved (SystemNode &child) |
Called when child has been removed from this parent. | |
| virtual bool | onRemove (agx::Referenced &instance) |
| Called when an object has been removed from the sensor environment. | |
| bool | removeChild (SystemNode *child) |
| Remove child from this node. | |
| virtual void | removeNotification () |
| Called when this system node is being removed from a sensor environment. | |
| virtual void | result (const CallbackData &data) |
If necessary assemble, and fetch results related to this system node after a step by data.dt has been completed. | |
| void | setEnable (bool enable) |
| Enable/disable this node. | |
| void | setName (const agx::Name &name) |
| Assign name to this node. | |
| virtual void | synchronize (const CallbackData &data) |
| Synchronization from the main thread. | |
| virtual void | synchronizeGraphics (const agxRender::RenderManager &renderManager) |
| At the very end of a step, synchronize any graphics related aspects of the system node. | |
| template<typename VisitorT > | |
| SystemNode * | visitBf (VisitorT visitor) const |
Visit the tree from, including, this node until callback returns true - using breadth first traversal. | |
| template<typename VisitorT > | |
| void | visitChildren (VisitorT visitor, bool recurse=true) const |
Visit all children with func as void( const SystemNode& child ). | |
| template<typename VisitorT > | |
| SystemNode * | visitChildrenBf (VisitorT visitor) const |
Visit the tree from the children of this node until callback returns true - using breadth first traversal. | |
| template<typename VisitorT > | |
| SystemNode * | visitChildrenDf (VisitorT visitor) const |
Visit the tree from the children of this node until callback returns true - using depth first traversal. | |
| template<typename T , typename VisitorT > | |
| void | visitChildrenOfType (VisitorT visitor, bool recurse=true) const |
Visit all children with func as void( const T& child ). | |
| template<typename VisitorT > | |
| SystemNode * | visitDf (VisitorT visitor) const |
Visit the tree from, including, this node until callback returns true - using depth first traversal. | |
Public Member Functions inherited from agx::Referenced | |
| Referenced () | |
| Default constructor. | |
| Referenced (const Referenced &) | |
| template<typename T > | |
| T * | as () |
| Subclass casting. | |
| template<typename T > | |
| const T * | as () const |
| template<typename T > | |
| T * | asSafe () |
| Safe subclass casting, return nullptr if template type does not match. | |
| template<typename T > | |
| const T * | asSafe () const |
| int | getReferenceCount () const |
| template<typename T > | |
| bool | is () const |
| Subclass test. | |
| Referenced & | operator= (const Referenced &) |
| Assignment operator. Will increment the number of references to the referenced object. | |
| void | reference (void *ptr=nullptr) const |
| Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it. | |
| void | unreference (void *ptr=nullptr) const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it. | |
| void | unreference_nodelete () const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it. | |
Public Member Functions inherited from agxStream::Serializable | |
| virtual | ~Serializable () |
| Destructor for normal C++ use but hidden from SWIG bindings. | |
| virtual const char * | getClassName () const |
| bool | getEnableSerialization () const |
| bool | getEnableUuidGeneration () |
| agx::UInt32 | getIndex () const |
| This index is given at creation of this object. | |
| virtual StorageAgent * | getStorageAgent () const =0 |
| agx::Uuid | getUuid () const |
| bool | isFinished () const |
| void | setEnableSerialization (bool flag) |
| Set to false to disable serialization of this object. | |
| void | setFinished () |
| Tells this class that it is restored correctly and should not be deleted during destruction of an Archive. | |
| void | setUuid (const agx::Uuid &uuid) |
| Explicitly set a Uuid on a serializable object. | |
Public Member Functions inherited from agxSensor::ISensorOutputHandler | |
| ISensorOutputHandler ()=default | |
| Default constructor. | |
| ISensorOutput * | get (size_t uniqueId) |
| Access sensor output instance given the unique id from when it was added. | |
| virtual ISensorOutput * | getBase (size_t uniqueId)=0 |
| Access sensor output instance given the unique id from when it was added. | |
| template<typename T > | |
| BinaryOutputView< T > | view (size_t uniqueId) |
| Directly access an output view of the sensor output instance given the unique id from when it was added. | |
Additional Inherited Members | |
Static Public Member Functions inherited from agx::Referenced | |
| template<typename T > | |
| static bool | ValidateCast (const Referenced *object) |
Static Public Member Functions inherited from agxStream::Serializable | |
| static void | setEnableUuidGeneration (bool flag) |
| Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled. | |
Protected Member Functions inherited from agx::Referenced | |
| virtual | ~Referenced () |
| Destructor. | |
| void | allocateObserverVector () const |
| void | deleteUsingDeleteHandler () const |
Protected Member Functions inherited from agxStream::Serializable | |
| Serializable () | |
| Default constructor. | |
| Serializable (const Serializable &other) | |
| Copy constructor. | |
| void | generateUuid () |
Static Protected Member Functions inherited from agx::Referenced | |
| static DeleteHandler * | getDeleteHandler () |
| static void | setDeleteHandler (DeleteHandler *handler) |
| Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to. | |
Protected Attributes inherited from agxSensor::RtSystemNode | |
| RtNode * | m_node { nullptr } |
Protected Attributes inherited from agx::Referenced | |
| Mutex | m_mutex |
| ObserverContainer | m_observers |
| AtomicValue | m_refCount |
Raytrace result handler is resposible for when and how the raytracing starts and ends and collecting/fetching data.
Definition at line 34 of file RaytraceOutputHandler.h.
| using agxSensor::RtOutputHandler::RuntimeState = agx::AtomicState<RuntimeFlag> |
Definition at line 44 of file RaytraceOutputHandler.h.
| Enumerator | |
|---|---|
| RAYTRACING | |
| FETCHING_DATA | |
| RESTORED | |
Definition at line 37 of file RaytraceOutputHandler.h.
| agxSensor::RtOutputHandler::RtOutputHandler | ( | ) |
Default constructor.
| RtOutput * agxSensor::RtOutputHandler::add |
Build matching result to a given data type T.
This method verifies the size of the sum of data fields matches the size of T. The created RtOutput returned from this method can later be accessed using get<T>().
Definition at line 246 of file RaytraceOutputHandler.h.
References add().
Referenced by add().
| bool agxSensor::RtOutputHandler::add | ( | RtOutputNoise * | noise | ) |
Add output noise instance to the system tree.
| noise | - output noise to add to the system tree |
| bool agxSensor::RtOutputHandler::add | ( | size_t | uniqueId, |
| RtOutput * | output | ||
| ) |
Add raytrace result given unique id, e.g., RtOutput::getTypeHash<MyData>().
The resulting data of a raytrace is accessed through the given result instance.
| uniqueId | - unique id > 0, id 0 is reserved and invalid to use |
| output | - output instance to add |
uniqueId > 0, result != nullptr and uniqueId is unique | bool agxSensor::RtOutputHandler::contains | ( | const RtOutputNoise * | noise | ) | const |
| noise | - noise instance to check if present and active |
noise is part of this output handler | RtOutput * agxSensor::RtOutputHandler::get |
Access added result instance for the given data type T.
E.g., handler->add<MyData, ...>() == handler->get<MyData>().
Definition at line 261 of file RaytraceOutputHandler.h.
References get().
Referenced by get().
| RtOutput * agxSensor::RtOutputHandler::get | ( | size_t | uniqueId | ) |
Access result instance given the unique id used when it was added.
| uniqueId | - unique id for the result instance |
| agx::UInt32 agxSensor::RtOutputHandler::getAmbientHitSeed | ( | ) | const |
|
overridevirtual |
Access result instance given the unique id used when it was added.
| uniqueId | - unique id for the result instance |
Implements agxSensor::ISensorOutputHandler.
| bool agxSensor::RtOutputHandler::getEnableRemoveRayMisses | ( | ) | const |
| RtOutputNoiseRefVector agxSensor::RtOutputHandler::getOutputNoises | ( | ) | const |
| size_t agxSensor::RtOutputHandler::getRaytraceDepth | ( | ) | const |
| bool agxSensor::RtOutputHandler::remove | ( | RtOutputNoise * | noise | ) |
Remove output noise instance from the system tree.
The noise will no longer be applied to the output data if removed successfully.
| noise | - noise to remove |
| void agxSensor::RtOutputHandler::setAmbientHitSeed | ( | agx::UInt32 | seed = 783u | ) |
Set the seed used to configure the pseudo-random generation the ambient/atmospheric hits.
| seed | - value to seed the pseudo-random generator with |
| void agxSensor::RtOutputHandler::setEnableRemoveRayMisses | ( | bool | enable | ) |
Enable/disable pruning of data for rays that doesn't hit any target.
This is enabled by default to minimize the output data.
| enable | - true to enable pruning of data from ray that doesn't hit, false to have data one to one with the number of rays but RtOutput::IS_HIT_I32 or similar has to be checked instead. |
| void agxSensor::RtOutputHandler::setRaytraceDepth | ( | size_t | steps = 1 | ) |
Configure the number of maximum raytrace steps.
The number of steps is one more than the number of bounces a ray will make, however, this number will generally not affect the size of the output data. It should be noted that the time and memory complexity of the raytrace will grow exponentially with the maximum number of raytrace steps.
| steps | - maximum number of steps a ray will trace. |
| BinaryOutputView< T > agxSensor::RtOutputHandler::view |
Directly access an output view of the raytrace output instance using a hash of the type with which it was registered.
Definition at line 267 of file RaytraceOutputHandler.h.