dart
|
Public Member Functions | |
RealTimeWorldNode (const std::shared_ptr< dart::simulation::World > &world=nullptr, const ::osg::ref_ptr< osgShadow::ShadowTechnique > &shadower=nullptr, double targetFrequency=60.0, double targetRealTimeFactor=1.0) | |
Construct a world node that will attempt to run a simulation with close to real-time playback. More... | |
void | setTargetFrequency (double targetFrequency) |
Set the target refresh rate frequency. | |
double | getTargetFrequency () const |
Get the target refresh rate frequency. | |
void | setTargetRealTimeFactor (double targetRTF) |
Set the target real time factor. | |
double | getTargetRealTimeFactor () const |
Get the target real time factor. | |
double | getLastRealTimeFactor () const |
Get the real time factor that was achieved in the last refresh cycle. More... | |
double | getLowestRealTimeFactor () const |
Get the lowest real time factor that has been hit during the simulation. | |
double | getHighestRealTimeFactor () const |
Get the highest real time factor that has been hit during the simulation. | |
void | refresh () override |
This function is called at the beginning of each rendering cycle. More... | |
![]() | |
WorldNode (std::shared_ptr< dart::simulation::World > world=nullptr, ::osg::ref_ptr< osgShadow::ShadowTechnique > shadowTechnique=nullptr) | |
Default constructor Shadows are disabled by default. | |
void | setWorld (std::shared_ptr< dart::simulation::World > newWorld) |
Set the World that this WorldNode is associated with. | |
std::shared_ptr< dart::simulation::World > | getWorld () const |
Get the World that this WorldNode is associated with. | |
virtual void | customPreRefresh () |
If update() is not overloaded, this function will be called at the beginning of each rendering cycle. More... | |
virtual void | customPostRefresh () |
If update() is not overloaded, this function will be called at the end of each rendering cycle. More... | |
virtual void | customPreStep () |
If update() is not overloaded, this function will be called at the beginning of each simulation step. More... | |
virtual void | customPostStep () |
If update() is not overloaded, this function will be called at the end of each simulation step. More... | |
bool | isSimulating () const |
Returns true iff the WorldNode is stepping between render cycles. | |
void | simulate (bool on) |
Pass in true to take steps between render cycles; pass in false to turn off steps between render cycles. More... | |
void | setNumStepsPerCycle (std::size_t steps) |
Set the number of steps to take between each render cycle (only if the simulation is not paused) | |
std::size_t | getNumStepsPerCycle () const |
Get the number of steps that will be taken between each render cycle (only if the simulation is not paused) | |
bool | isShadowed () const |
Get whether the WorldNode is casting shadows. | |
void | setShadowTechnique (::osg::ref_ptr< osgShadow::ShadowTechnique > shadowTechnique=nullptr) |
Set the ShadowTechnique If you wish to disable shadows, pass a nullptr. | |
::osg::ref_ptr< osgShadow::ShadowTechnique > | getShadowTechnique () const |
Get the current ShadowTechnique nullptr is there are no shadows. | |
static ::osg::ref_ptr< osgShadow::ShadowTechnique > | createDefaultShadowTechnique (const Viewer *viewer) |
Helper function to create a default ShadowTechnique given a Viewer the default ShadowTechnique is ShadowMap. | |
virtual | ~WorldNode () |
Destructor. | |
Protected Attributes | |
bool | mFirstRefresh |
Reset each time the simulation is paused. | |
::osg::Timer | mRefreshTimer |
Keeps track of the time between refreshes. | |
double | mTargetRealTimeLapse |
The target for how much time should elapse between refreshes. | |
double | mTargetSimTimeLapse |
The target for how much simulation time should elapse between refreshes. | |
double | mLastRealTimeFactor |
The RTF that was achieved in the last refresh cycle. | |
double | mLowestRealTimeFactor |
The lowest RTF that has been achieved. | |
double | mHighestRealTimeFactor |
The highest RTF that has been achieved. | |
![]() | |
NodeMap | mFrameToNode |
Map from Frame pointers to FrameNode pointers. | |
std::shared_ptr< dart::simulation::World > | mWorld |
The World that this WorldNode is associated with. | |
bool | mSimulating |
True iff simulation is active. | |
std::size_t | mNumStepsPerCycle |
Number of steps to take between rendering cycles. | |
Viewer * | mViewer |
Viewer that this WorldNode is inside of. | |
::osg::ref_ptr<::osg::Group > | mNormalGroup |
OSG group for non-shadowed objects. | |
::osg::ref_ptr<::osgShadow::ShadowedScene > | mShadowedGroup |
OSG group for shadowed objects. | |
bool | mShadowed |
Whether the shadows are enabled. | |
Additional Inherited Members | |
![]() | |
using | NodeMap = std::unordered_map< dart::dynamics::Frame *, ::osg::ref_ptr< ShapeFrameNode > > |
![]() | |
virtual void | setupViewer () |
Called when this world gets added to an dart::gui::osg::Viewer. More... | |
void | clearChildUtilizationFlags () |
Clear the utilization flags of each child node. | |
void | clearUnusedNodes () |
Clear any nodes whose utilization flags were not triggered on this render cycle. | |
void | refreshSkeletons () |
Refresh all the Skeleton rendering data. | |
void | refreshSimpleFrames () |
Refresh all the custom Frame rendering data. | |
void | refreshBaseFrameNode (dart::dynamics::Frame *frame) |
void | refreshShapeFrameNode (dart::dynamics::Frame *frame) |
dart::gui::osg::RealTimeWorldNode::RealTimeWorldNode | ( | const std::shared_ptr< dart::simulation::World > & | world = nullptr , |
const ::osg::ref_ptr< osgShadow::ShadowTechnique > & | shadower = nullptr , |
||
double | targetFrequency = 60.0 , |
||
double | targetRealTimeFactor = 1.0 |
||
) |
Construct a world node that will attempt to run a simulation with close to real-time playback.
If a simulation is too computationally expensive, the simulation might not be able to keep up with real time.
[in] | world | The world to simulate |
[in] | targetFrequency | The expected refresh rate. The actual refresh rate may depend on your monitor and your computer's display settings. |
[in] | targetRealTimeFactor | This factor at which the simulation should run. A value of 1.0 (default) means it will try to run at real time. A value 2.0 means the simulation will try to run at double real time speed (fast-forward). A value of 0.5 means the simulation will try to run at half of real-time speed (slowed down). |
[in] | shadower | The shading technique to use when rendering this world. |
double dart::gui::osg::RealTimeWorldNode::getLastRealTimeFactor | ( | ) | const |
Get the real time factor that was achieved in the last refresh cycle.
This may be smaller than target real time factor, because the simulation may not have had time to reach it.
|
overridevirtual |
This function is called at the beginning of each rendering cycle.
It updates the tree of Frames and Entities that need to be rendered. It may also take a simulation step if the simulation is not paused.
If you want to customize what happens at the beginning of each rendering cycle, you can either overload this function, or you can overload customUpdate(). This update() function will automatically call customUpdate() at the beginning of each rendering cycle. By default, customUpdate() does nothing.
Reimplemented from dart::gui::osg::WorldNode.
Reimplemented in dart::python::PyRealTimeWorldNodeNode.