33#ifndef DART_GUI_OSG_VIEWER_HPP_
34#define DART_GUI_OSG_VIEWER_HPP_
38#include <unordered_set>
41#include <osgShadow/ShadowTechnique>
42#include <osgViewer/Viewer>
64class DefaultEventHandler;
67class SimpleFrameShapeDnD;
68class InteractiveFrame;
69class InteractiveFrameDnD;
115 Viewer(const ::osg::Vec4& clearColor = ::osg::Vec4(0.9, 0.9, 0.9, 1.0));
141 const std::string& directory,
142 const std::string& prefix =
"image",
143 bool restart =
false,
144 std::size_t digits = 6);
175 void removeWorldNode(std::shared_ptr<dart::simulation::World> _oldWorld);
180 std::shared_ptr<dart::simulation::World> _world)
const;
190 const std::unordered_set<ViewerAttachment*>&
getAttachments()
const;
202 std::size_t
index = 0)
const;
220 std::shared_ptr<dart::simulation::World> _world,
bool _active =
true);
256 bool _useExternalIK =
true,
257 bool _useWholeBody =
false);
294 const ::osg::ref_ptr<::osg::Group>&
getRootGroup()
const;
383 std::multimap<dart::dynamics::Shape*, SimpleFrameShapeDnD*>
#define DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_END
Definition ClassWithVirtualBase.hpp:44
#define DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_BEGIN
Definition ClassWithVirtualBase.hpp:43
std::size_t index
Definition SkelParser.cpp:1672
The Subject class is a base class for any object that wants to report when it gets destroyed.
Definition Subject.hpp:58
BodyNode class represents a single node of the skeleton.
Definition BodyNode.hpp:79
Entity class is a base class for any objects that exist in the kinematic tree structure of DART.
Definition Entity.hpp:62
The SimpleFrame class offers a user-friendly way of creating arbitrary Frames within the kinematic tr...
Definition SimpleFrame.hpp:52
Definition DragAndDrop.hpp:266
Definition DefaultEventHandler.hpp:105
DragAndDrop is a class that facilitates enabling various kinds of dart Entities to be dragged and dro...
Definition DragAndDrop.hpp:61
Definition DragAndDrop.hpp:236
Definition InteractiveFrame.hpp:110
SimpleFrameDnD is a DragAndDrop implementation for SimpleFrame objects.
Definition DragAndDrop.hpp:178
SimpleFrameShapeDnD is a version of SimpleFrameDnD that allows a specific Shape within the SimpleFram...
Definition DragAndDrop.hpp:208
ViewerAttachment()
Default constructor.
Definition Viewer.cpp:140
Viewer * getViewer()
Definition Viewer.cpp:153
virtual void attach(Viewer *newViewer)
This function will get called when the visual is attached to a new Viewer.
Definition Viewer.cpp:171
Viewer * mViewer
Definition Viewer.hpp:107
virtual ~ViewerAttachment()
Virtual destructor.
Definition Viewer.cpp:146
virtual void customAttach(Viewer *newViewer)
This function will be called by attach(Viewer*) so you can do customized setup when the Viewer change...
Definition Viewer.cpp:165
virtual void refresh()=0
This function will get called each time the Viewer is refreshed.
Definition Viewer.hpp:111
void setUpwardsDirection(const ::osg::Vec3 &_up)
Set the direction that this Viewer should consider to be upwards (default is <0,0,...
Definition Viewer.cpp:503
bool isSimulating() const
Return true iff this Viewer is currently set to simulate.
Definition Viewer.cpp:564
void removeWorldNode(WorldNode *_oldWorldNode)
Remove a WorldNode from this Viewer.
Definition Viewer.cpp:380
void simulate(bool _on)
Set all currently active WorldNodes to simulate _on.
Definition Viewer.cpp:548
void addWorldNode(WorldNode *_newWorldNode, bool _active=true)
Add a WorldNode to this Viewer.
Definition Viewer.cpp:363
virtual void switchHeadlights(bool _on)
Pass in true to turn headlights on, false to turn headlights off.
Definition Viewer.cpp:304
bool mSimulating
True iff this Viewer is currently simulating.
Definition Viewer.hpp:357
WorldNode * getWorldNode(std::shared_ptr< dart::simulation::World > _world) const
Get the WorldNode associated with the given _world.
Definition Viewer.cpp:403
std::string mImageDirectory
Directory for saving images.
Definition Viewer.hpp:321
std::map< InteractiveFrame *, InteractiveFrameDnD * > mInteractiveFrameDnDMap
Map from InteractiveFrame ptrs to InteractiveFrameDnD ptrs.
Definition Viewer.hpp:387
DragAndDrop * enableDragAndDrop(dart::dynamics::Entity *_entity)
Returns a nullptr if _entity is not a type that can support the built-in drag and drop features,...
Definition Viewer.cpp:585
const std::string & getInstructions() const
Get a string containing the user interface constructions for this Viewer.
Definition Viewer.cpp:792
void addAttachment(ViewerAttachment *_attachment)
Add an attachment to this Viewer.
Definition Viewer.cpp:423
void record(const std::string &directory, const std::string &prefix="image", bool restart=false, std::size_t digits=6)
As the screen refreshes, save screen capture images to the specified directory.
Definition Viewer.cpp:243
bool isAllowingSimulation() const
Return true iff this Viewer is currently allowing simulation to happen.
Definition Viewer.cpp:579
std::string mInstructions
string of instructions for this Viewer
Definition Viewer.hpp:372
std::string mScreenCapName
Name for the next screen capture.
Definition Viewer.hpp:327
::osg::ref_ptr< DefaultEventHandler > mDefaultEventHandler
Default WorldNodeEventHandler for this dart::gui::osg::Viewer.
Definition Viewer.hpp:330
const ::osg::ref_ptr<::osg::LightSource > & getLightSource(std::size_t index=0) const
Get one of the LightSources of this Viewer index either 0 or 1 Useful for shadowing techniques.
Definition Viewer.cpp:466
::osg::ref_ptr<::osg::Light > mLight2
Non-headlights Light #2.
Definition Viewer.hpp:345
void setVerticalFieldOfView(double fov)
Sets the vertical field of view of the master camera of the view.
Definition Viewer.cpp:844
void allowSimulation(bool _allow)
Prevent simulation from starting, even if simulate(true) is called.
Definition Viewer.cpp:570
virtual void updateViewer()
Called automatically at the beginning of each render cycle.
Definition Viewer.cpp:804
std::size_t mImageSequenceNum
Current number of the image sequence for screen recording.
Definition Viewer.hpp:309
std::map< dart::dynamics::SimpleFrame *, SimpleFrameDnD * > mSimpleFrameDnDMap
Map from SimpleFrame ptrs to SimpleFrameDnD ptrs.
Definition Viewer.hpp:378
::osg::Vec3 mOver
Vector pointing to the side.
Definition Viewer.hpp:354
::osg::Vec3 mUpwards
Vector pointing upwards.
Definition Viewer.hpp:351
void updateDragAndDrops()
Called automatically by updateViewer()
Definition Viewer.cpp:810
::osg::ref_ptr<::osg::Light > mLight1
Non-headlights Light #1.
Definition Viewer.hpp:339
bool disableDragAndDrop(DragAndDrop *_dnd)
Delete a DragAndDrop object.
Definition Viewer.cpp:703
void setupDefaultLights()
Set up the default lighting scheme.
Definition Viewer.cpp:476
bool mHeadlights
True iff headlights were last set to be on.
Definition Viewer.hpp:363
std::map< dart::dynamics::BodyNode *, BodyNodeDnD * > mBodyNodeDnDMap
Map from BodyNode ptrs to BodyNodeDnD ptrs.
Definition Viewer.hpp:390
::osg::Group * getLightGroup()
Get the Group node that contains the LightSources for this Viewer.
Definition Viewer.cpp:454
::osg::ref_ptr<::osg::LightSource > mLightSource2
Non-headlights LightSource #2.
Definition Viewer.hpp:348
void captureScreen(const std::string &filename)
Capture the current screen in a png file.
Definition Viewer.cpp:226
void addInstructionText(const std::string &_instruction)
Add something to the instructions for this Viewer.
Definition Viewer.cpp:798
::osg::ref_ptr<::osg::Group > mLightGroup
The Group Node containing light sources.
Definition Viewer.hpp:336
virtual ~Viewer()
Destructor.
Definition Viewer.cpp:216
void pauseRecording()
If the Viewer is recording, then pause the recording.
Definition Viewer.cpp:273
void setWorldNodeActive(WorldNode *_node, bool _active=true)
Set the given WorldNode to active.
Definition Viewer.cpp:531
std::unordered_set< ViewerAttachment * > mAttachments
Definition Viewer.hpp:369
std::map<::osg::ref_ptr< WorldNode >, bool > mWorldNodes
Map of WorldNodes in this dart::gui::osg::Viewer.
Definition Viewer.hpp:367
double getVerticalFieldOfView() const
Returns the vertical field of view of the master camera of the view.
Definition Viewer.cpp:875
::osg::ref_ptr<::osg::Group > mRootGroup
The root node of this Viewer.
Definition Viewer.hpp:333
virtual void switchDefaultEventHandler(bool _on)
Creates the default event handler for this dart::gui::osg::Viewer.
Definition Viewer.cpp:290
std::string mImagePrefix
Prefix to apply to images.
Definition Viewer.hpp:324
const ::osg::ref_ptr<::osg::Group > & getRootGroup() const
Get the root ::osg::Group of this Viewer.
Definition Viewer.cpp:838
std::multimap< dart::dynamics::Shape *, SimpleFrameShapeDnD * > mSimpleFrameShapeDnDMap
Multimap from Shape ptrs to SimpleFrameShapeDnD ptrs.
Definition Viewer.hpp:384
bool isRecording() const
Returns true if the Viewer is currently recording.
Definition Viewer.cpp:284
::osg::ref_ptr<::osg::LightSource > mLightSource1
Non-headlights LightSource #1.
Definition Viewer.hpp:342
DefaultEventHandler * getDefaultEventHandler() const
Return a pointer to the default event handler.
Definition Viewer.cpp:298
void removeAttachment(ViewerAttachment *_attachment)
Remove the attachment from this Viewer.
Definition Viewer.cpp:435
std::size_t mImageDigits
Number of digits to use when saving an image sequence.
Definition Viewer.hpp:312
bool mAllowSimulation
True iff this Viewer is allowing simulation.
Definition Viewer.hpp:360
bool mScreenCapture
Whether or not the Viewer is staged for a screen capture.
Definition Viewer.hpp:318
bool mRecording
Whether or not the Viewer is currently recording.
Definition Viewer.hpp:315
const std::unordered_set< ViewerAttachment * > & getAttachments() const
Get the set of attachments in this Viewer.
Definition Viewer.cpp:448
bool checkHeadlights() const
True iff headlights are currently set to true.
Definition Viewer.cpp:357
WorldNode class encapsulates a World to be displayed in OpenSceneGraph.
Definition WorldNode.hpp:66
class World
Definition World.hpp:84
Definition BulletCollisionDetector.cpp:60