Description

VSG-based Chrono run-time visualization system.

#include <ChVisualSystemVSG.h>

Inheritance diagram for chrono::vsg3d::ChVisualSystemVSG:
Collaboration diagram for chrono::vsg3d::ChVisualSystemVSG:

Classes

struct  DeformableMesh
 Data related to deformable meshes (FEA and SCM). More...
 
struct  ParticleCloud
 Data for particle clouds. More...
 

Public Member Functions

 ChVisualSystemVSG (int num_divs=24)
 Create the Chrono::VSG run-time visualization system. More...
 
void AttachPlugin (std::shared_ptr< ChVisualSystemVSGPlugin > plugin)
 Attach a custom plugin. More...
 
virtual void Initialize () override
 Initialize the visualization system.
 
virtual void BindAll () override
 Process all visual assets in the associated ChSystem. More...
 
virtual void BindItem (std::shared_ptr< ChPhysicsItem > item) override
 Process the visual assets for the specified physics item. More...
 
virtual bool Run () override
 Check if rendering is running. More...
 
virtual void Quit () override
 Terminate the visualization system.
 
virtual void BeginScene () override
 Perform any necessary operations at the beginning of each rendering frame.
 
virtual void Render () override
 Draw all 3D shapes and GUI elements at the current frame. More...
 
virtual void EndScene () override
 End the scene draw at the end of each animation frame.
 
void SetBodyObjVisibility (bool vis, int tag=-1)
 Set the visibility of bodies with specified tag. More...
 
void SetLinkObjVisibility (bool vis, int tag=-1)
 Set the visibility of links with specified tag. More...
 
void SetFeaMeshVisibility (bool vis, int tag=-1)
 Set the visibility of FEA meshes with specified tag. More...
 
void SetSpringVisibility (bool vis, int tag=-1)
 Set the visibility of springs with specified tag. More...
 
void SetSegmentVisibility (bool vis, int tag=-1)
 Set the visibility of segments with specified tag. More...
 
void SetParticleCloudVisibility (bool vis, int tag=-1)
 Set the visibility of particle clouds with specified tag to the provided value. More...
 
void SetCollisionVisibility (bool vis, int tag=-1)
 — Collision and contact More...
 
void SetCollisionColor (const ChColor &color)
 Set color for rendering wireframe collision shapes.
 
void SetContactNormalsVisibility (bool vis, int tag=-1)
 
void SetContactNormalsColor (const ChColor &color)
 
void SetContactNormalsScale (double length)
 
void SetContactForcesVisibility (bool vis, int tag=-1)
 
void SetContactForcesColor (const ChColor &color)
 
void SetContactForcesScale (double length)
 
void SetAbsFrameScale (double axis_length)
 Render the absolute (global) reference frame.
 
void ToggleAbsFrameVisibility ()
 
void RenderRefFrames (double axis_length=1)
 Render ref frames for all objects in the system.
 
void SetRefFrameScale (double axis_length)
 
void ToggleRefFrameVisibility ()
 
void SetCOMFrameScale (double axis_length)
 Render COM frames for all bodies in the system.
 
void ToggleCOMFrameVisibility ()
 
void ToggleCOMSymbolVisibility ()
 Render COM symbol for all bodies in the system.
 
void SetJointFrameScale (double axis_length)
 Render joint frames for all links in the system.
 
void ToggleJointFrameVisibility ()
 
virtual void WriteImageToFile (const std::string &filename) override
 Create a snapshot of the frame to be rendered and save it to the provided file. More...
 
void SetWindowSize (const ChVector2i &size)
 
void SetWindowSize (int width, int height)
 
void SetWindowPosition (const ChVector2i &pos)
 
void SetWindowPosition (int from_left, int from_top)
 
void SetWindowTitle (const std::string &title)
 
void SetClearColor (const ChColor &color)
 
void SetOutputScreen (int screenNum=0)
 
void EnableFullscreen (bool val=true)
 Enable full-screen mode (default: false). More...
 
void EnableSkyBox (bool val=true)
 Enable/disable use of a sky box background (default: false). More...
 
void SetCameraVertical (CameraVerticalDir upDir)
 Set the camera up vector (default: Z).
 
virtual int AddCamera (const ChVector3d &pos, ChVector3d targ=VNULL) override
 Add a camera to the VSG scene. More...
 
virtual void SetCameraPosition (int id, const ChVector3d &pos) override
 Set the location of the specified camera.
 
virtual void SetCameraTarget (int id, const ChVector3d &target) override
 Set the target (look-at) point of the specified camera.
 
virtual void SetCameraPosition (const ChVector3d &pos) override
 Set the location of the current (active) camera.
 
virtual void SetCameraTarget (const ChVector3d &target) override
 Set the target (look-at) point of the current (active) camera.
 
virtual ChVector3d GetCameraPosition () const override
 Get the location of the current (active) camera.
 
virtual ChVector3d GetCameraTarget () const override
 Get the target (look-at) point of the current (active) camera.
 
double GetRenderingFPS () const
 Get estimated FPS.
 
void EnableShadows (bool val=true)
 Enable/disable rendering of shadows (default: false). More...
 
bool AreShadowsEnabled () const
 Indicate whether or not shadows are enabled.
 
void SetLightIntensity (float intensity)
 
void SetLightDirection (double azimuth, double elevation)
 
void SetCameraAngleDeg (double angleDeg)
 
void SetGuiFontSize (float theSize)
 
virtual void AddGrid (double x_step, double y_step, int nx, int ny, ChCoordsys<> pos=CSYSNORM, ChColor col=ChColor(0.1f, 0.1f, 0.1f)) override
 Add a grid with specified parameters in the x-y plane of the given frame. More...
 
virtual int AddVisualModel (std::shared_ptr< ChVisualModel > model, const ChFrame<> &frame) override
 Add a visual model not associated with a physical item. More...
 
virtual int AddVisualModel (std::shared_ptr< ChVisualShape > model, const ChFrame<> &frame) override
 Add a visual model not associated with a physical item. More...
 
virtual void UpdateVisualModel (int id, const ChFrame<> &frame) override
 Update the position of the specified visualization-only model.
 
size_t AddGuiComponent (std::shared_ptr< ChGuiComponentVSG > gc)
 Add a user-defined GUI component. More...
 
size_t AddGuiColorbar (const std::string &title, double min_val, double max_val)
 Add a colorbar as a GUI component. More...
 
std::shared_ptr< ChGuiComponentVSGGetGuiComponent (size_t id)
 Access the specified GUI component. More...
 
void SetGuiVisibility (bool show_gui)
 Set visibility for all GUI components (default: true).
 
void ToggleGuiVisibility ()
 Toggle GUI visibility for all GUI components.
 
bool IsGuiVisible () const
 Indicate whether or not GUI is visible.
 
void SetBaseGuiVisibility (bool show_gui)
 Set visibility for the default (base) GUI component (default: true).
 
void ToggleBaseGuiVisibility ()
 Toggle GUI visibility for the default (base) GUI component.
 
bool IsBaseGuiVisible () const
 Indicate whether or not the default (base) GUI is visible.
 
void HideLogo ()
 Disable showing the Chrono logo (default: true).
 
void SetLogoHeight (float height)
 Set logo display height (in pixels, default: 64).
 
void SetLogoPosition (const ChVector2f &position)
 Set logo position (default: [10,10]). More...
 
bool IsLogoVisible () const
 Indicate whether or not logo is visible.
 
void AddEventHandler (std::shared_ptr< ChEventHandlerVSG > eh)
 Add a user-defined VSG event handler.
 
- Public Member Functions inherited from chrono::ChVisualSystem
void SetVerbose (bool verbose)
 Enable/disable information terminal output during initialization (default: false).
 
virtual void AttachSystem (ChSystem *sys)
 Attach a Chrono system to this visualization system.
 
virtual void UnbindItem (std::shared_ptr< ChPhysicsItem > item)
 Remove the visual assets for the specified physics item from this visualization system.
 
void UpdateCamera (int id, const ChVector3d &pos, ChVector3d target)
 Update the location and/or target points of the specified camera.
 
void UpdateCamera (const ChVector3d &pos, ChVector3d target)
 
virtual void RenderFrame (const ChFrame<> &frame, double axis_length=1)
 Render the specified reference frame.
 
virtual void RenderCOGFrames (double axis_length=1)
 Render COG frames for all bodies in the system.
 
std::vector< ChSystem * > GetSystems () const
 Get the list of associated Chrono systems.
 
ChSystemGetSystem (int i) const
 Get the specified associated Chrono system.
 
double GetSimulationTime () const
 Return the current simulated time. More...
 
double GetRTF () const
 Return the overall real time factor. More...
 
double GetSimulationRTF (unsigned int i) const
 Return the simulation real-time factor (simulation time / simulated time) for the specified associated system. More...
 
std::vector< double > GetSimulationRTFs () const
 Return the simulation real-time factor (simulation time / simulated time) for all associated system. More...
 
unsigned int GetNumBodies () const
 Get the number of bodies (across all visualized systems). More...
 
unsigned int GetNumLinks () const
 Get the number of links (across all visualized systems). More...
 
unsigned int GetNumMeshes () const
 Get the number of meshes (across all visualized systems).
 
unsigned int GetNumShafts () const
 Get the number of shafts (across all visualized systems).
 
unsigned int GetNumStates () const
 Get the number of coordinates at the velocity level (across all visualized systems).
 
unsigned int GetNumConstraints () const
 Get the number of scalar constraints (across all visualized systems).
 
unsigned int GetNumContacts () const
 Gets the number of contacts.
 
void SetImageOutputDirectory (const std::string &dir)
 Set output directory for saving frame snapshots (default: ".").
 
void SetImageOutput (bool val)
 Enable/disable writing of frame snapshots to file.
 

Protected Member Functions

virtual void OnSetup (ChSystem *sys) override
 Perform necessary setup operations at the beginning of a time step.
 
void Update ()
 Update all VSG scenes with the current state of the associated Chrono systems.
 
- Protected Member Functions inherited from chrono::ChVisualSystem
virtual void OnUpdate (ChSystem *sys)
 Perform any necessary update operations at the end of a time step. More...
 
virtual void OnClear (ChSystem *sys)
 Remove all visualization objects from this visualization system. More...
 

Protected Attributes

int m_screen_num = -1
 
bool m_use_fullscreen
 
bool m_use_shadows
 
vsg::ref_ptr< vsg::Window > m_window
 
vsg::ref_ptr< vsg::Viewer > m_viewer
 high-level VSG rendering manager
 
vsg::ref_ptr< vsg::RenderGraph > m_renderGraph
 
bool m_show_logo
 
float m_logo_height
 
ChVector2f m_logo_pos
 
std::string m_logo_filename
 
bool m_show_gui
 flag to toggle global GUI visibility
 
bool m_show_base_gui
 flag to toggle base GUI visibility
 
size_t m_camera_gui
 identifier for the camera info GUI component
 
std::shared_ptr< ChGuiComponentVSGm_base_gui
 default (base) GUI component
 
std::vector< std::shared_ptr< ChGuiComponentVSG > > m_gui
 list of all additional GUI components
 
std::vector< std::shared_ptr< ChEventHandlerVSG > > m_evhandler
 list of all additional event handlers
 
vsg::dvec3 m_vsg_cameraEye = vsg::dvec3(-10.0, 0.0, 0.0)
 
vsg::dvec3 m_vsg_cameraTarget = vsg::dvec3(0.0, 0.0, 0.0)
 
vsg::ref_ptr< vsg::LookAt > m_lookAt
 
vsg::ref_ptr< vsg::Camera > m_vsg_camera
 
bool m_camera_trackball
 create a camera trackball control?
 
vsg::ref_ptr< vsg::Group > m_scene
 
vsg::ref_ptr< vsg::Switch > m_objScene
 
vsg::ref_ptr< vsg::Switch > m_pointpointScene
 
vsg::ref_ptr< vsg::Switch > m_deformableScene
 
vsg::ref_ptr< vsg::Switch > m_particleScene
 
vsg::ref_ptr< vsg::Switch > m_collisionScene
 
vsg::ref_ptr< vsg::Switch > m_contactNormalsScene
 
vsg::ref_ptr< vsg::Switch > m_contactForcesScene
 
vsg::ref_ptr< vsg::Switch > m_absFrameScene
 
vsg::ref_ptr< vsg::Switch > m_refFrameScene
 
vsg::ref_ptr< vsg::Switch > m_comFrameScene
 
vsg::ref_ptr< vsg::Switch > m_comSymbolScene
 
vsg::ref_ptr< vsg::Switch > m_jointFrameScene
 
vsg::ref_ptr< vsg::Group > m_decoScene
 
vsg::ref_ptr< vsg::Options > m_options
 I/O related options for vsg::read/write calls.
 
vsg::ref_ptr< vsg::Builder > m_vsgBuilder
 
vsg::ref_ptr< ShapeBuilder > m_shapeBuilder
 
bool m_capture_image
 export current frame to image file
 
std::string m_imageFilename
 name of file to export current frame
 
std::vector< DeformableMeshm_def_meshes
 
std::vector< ParticleCloudm_clouds
 
bool m_show_visibility_controls
 enable/disable global visibility controls
 
std::vector< std::shared_ptr< ChVisualSystemVSGPlugin > > m_plugins
 
- Protected Attributes inherited from chrono::ChVisualSystem
bool m_verbose
 terminal output
 
bool m_initialized
 visual system initialized
 
ChTimer m_timer
 timer for evaluating RTF
 
double m_rtf
 overall real time factor
 
std::vector< ChSystem * > m_systems
 associated Chrono system(s)
 
bool m_write_images
 if true, save snapshots
 
std::string m_image_dir
 directory for image files
 

Friends

class ChMainGuiVSG
 
class ChBaseGuiComponentVSG
 
class ChBaseEventHandlerVSG
 

Additional Inherited Members

- Public Types inherited from chrono::ChVisualSystem
enum  Type { Type::IRRLICHT, Type::VSG, Type::OptiX, NONE }
 Supported run-time visualization systems. More...
 

Constructor & Destructor Documentation

◆ ChVisualSystemVSG()

chrono::vsg3d::ChVisualSystemVSG::ChVisualSystemVSG ( int  num_divs = 24)

Create the Chrono::VSG run-time visualization system.

Optionally, specify the resolution used for tesselation of primitive shapes, by providing the number of divisions used to discretize a full circle. The default value of 24 corresponds to 15-degree divisions.

Member Function Documentation

◆ AddCamera()

int chrono::vsg3d::ChVisualSystemVSG::AddCamera ( const ChVector3d pos,
ChVector3d  targ = VNULL 
)
overridevirtual

Add a camera to the VSG scene.

Note that currently only one camera is supported.

Reimplemented from chrono::ChVisualSystem.

◆ AddGrid()

void chrono::vsg3d::ChVisualSystemVSG::AddGrid ( double  x_step,
double  y_step,
int  nx,
int  ny,
ChCoordsys<>  pos = CSYSNORM,
ChColor  col = ChColor(0.1f, 0.1f, 0.1f) 
)
overridevirtual

Add a grid with specified parameters in the x-y plane of the given frame.

Parameters
x_stepgrid cell size in X direction
y_stepgrid cell size in Y direction
nxnumber of cells in X direction
nynumber of cells in Y direction
posgrid reference frame
colgrid line color

Reimplemented from chrono::ChVisualSystem.

◆ AddGuiColorbar()

size_t chrono::vsg3d::ChVisualSystemVSG::AddGuiColorbar ( const std::string &  title,
double  min_val,
double  max_val 
)

Add a colorbar as a GUI component.

Returns the index of the new component. This function must be called before Initialize().

◆ AddGuiComponent()

size_t chrono::vsg3d::ChVisualSystemVSG::AddGuiComponent ( std::shared_ptr< ChGuiComponentVSG gc)

Add a user-defined GUI component.

Returns the index of the new component. This function must be called before Initialize().

◆ AddVisualModel() [1/2]

int chrono::vsg3d::ChVisualSystemVSG::AddVisualModel ( std::shared_ptr< ChVisualModel model,
const ChFrame<> &  frame 
)
overridevirtual

Add a visual model not associated with a physical item.

Return an ID which can be used later to modify the position of this visual model.

Reimplemented from chrono::ChVisualSystem.

◆ AddVisualModel() [2/2]

int chrono::vsg3d::ChVisualSystemVSG::AddVisualModel ( std::shared_ptr< ChVisualShape shape,
const ChFrame<> &  frame 
)
overridevirtual

Add a visual model not associated with a physical item.

This version constructs a visual model consisting of the single specified shape Return an ID which can be used later to modify the position of this visual model.

Reimplemented from chrono::ChVisualSystem.

◆ AttachPlugin()

void chrono::vsg3d::ChVisualSystemVSG::AttachPlugin ( std::shared_ptr< ChVisualSystemVSGPlugin plugin)

Attach a custom plugin.

Plugins offer a mechanism for extending a base VSG visual system with custom functionality; e.g., for rendering, controlling, and displaying information for specific types of Chrono systems. An arbitrary number of plugins can be attached to a VSG visual system. Attaching plugins muct be done before initialization of the VSG system.

◆ BindAll()

void chrono::vsg3d::ChVisualSystemVSG::BindAll ( )
overridevirtual

Process all visual assets in the associated ChSystem.

This function is called by default by Initialize(), but can also be called later if further modifications to visualization assets occur.

Reimplemented from chrono::ChVisualSystem.

◆ BindItem()

void chrono::vsg3d::ChVisualSystemVSG::BindItem ( std::shared_ptr< ChPhysicsItem item)
overridevirtual

Process the visual assets for the specified physics item.

This function must be called if a new physics item is added to the system or if changes to its visual model occur after the call to Initialize().

Reimplemented from chrono::ChVisualSystem.

◆ EnableFullscreen()

void chrono::vsg3d::ChVisualSystemVSG::EnableFullscreen ( bool  val = true)

Enable full-screen mode (default: false).

This function must be called before Initialize().

◆ EnableShadows()

void chrono::vsg3d::ChVisualSystemVSG::EnableShadows ( bool  val = true)
inline

Enable/disable rendering of shadows (default: false).

This function must be called before Initialize().

◆ EnableSkyBox()

void chrono::vsg3d::ChVisualSystemVSG::EnableSkyBox ( bool  val = true)

Enable/disable use of a sky box background (default: false).

This function must be called before Initialize().

◆ GetGuiComponent()

std::shared_ptr< ChGuiComponentVSG > chrono::vsg3d::ChVisualSystemVSG::GetGuiComponent ( size_t  id)

Access the specified GUI component.

Identify the GUI component with the index returned by AddGuiComponent.

◆ Render()

void chrono::vsg3d::ChVisualSystemVSG::Render ( )
overridevirtual

Draw all 3D shapes and GUI elements at the current frame.

This function is typically called inside a loop such as

   while(vis->Run()) {...}

Reimplemented from chrono::ChVisualSystem.

◆ Run()

bool chrono::vsg3d::ChVisualSystemVSG::Run ( )
overridevirtual

Check if rendering is running.

Returns false if the viewer was closed.

Reimplemented from chrono::ChVisualSystem.

◆ SetBodyObjVisibility()

void chrono::vsg3d::ChVisualSystemVSG::SetBodyObjVisibility ( bool  vis,
int  tag = -1 
)

Set the visibility of bodies with specified tag.

A tag value of -1 indicates that the visibility flag should be applied to all bodies.

◆ SetCollisionVisibility()

void chrono::vsg3d::ChVisualSystemVSG::SetCollisionVisibility ( bool  vis,
int  tag = -1 
)

— Collision and contact

Set visibility of collision shapes for objects with specified tag. A tag of -1 indicates that the visibility flag should be applied to all collision shapes.

◆ SetFeaMeshVisibility()

void chrono::vsg3d::ChVisualSystemVSG::SetFeaMeshVisibility ( bool  vis,
int  tag = -1 
)

Set the visibility of FEA meshes with specified tag.

A tag value of -1 indicates that the visibility flag should be applied to all meshes.

◆ SetLinkObjVisibility()

void chrono::vsg3d::ChVisualSystemVSG::SetLinkObjVisibility ( bool  vis,
int  tag = -1 
)

Set the visibility of links with specified tag.

A tag value of -1 indicates that the visibility flag should be applied to all links.

◆ SetLogoPosition()

void chrono::vsg3d::ChVisualSystemVSG::SetLogoPosition ( const ChVector2f position)
inline

Set logo position (default: [10,10]).

This is the position of the right-top corner of the logo image (in pixels) relative to the right-top corner of the rendering window.

◆ SetParticleCloudVisibility()

void chrono::vsg3d::ChVisualSystemVSG::SetParticleCloudVisibility ( bool  vis,
int  tag = -1 
)

Set the visibility of particle clouds with specified tag to the provided value.

A tag value of -1 indicates that the visibility flag should be applied to all particle clouds.

◆ SetSegmentVisibility()

void chrono::vsg3d::ChVisualSystemVSG::SetSegmentVisibility ( bool  vis,
int  tag = -1 
)

Set the visibility of segments with specified tag.

A tag value of -1 indicates that the visibility flag should be applied to all segments.

◆ SetSpringVisibility()

void chrono::vsg3d::ChVisualSystemVSG::SetSpringVisibility ( bool  vis,
int  tag = -1 
)

Set the visibility of springs with specified tag.

A tag value of -1 indicates that the visibility flag should be applied to all springs.

◆ WriteImageToFile()

void chrono::vsg3d::ChVisualSystemVSG::WriteImageToFile ( const std::string &  filename)
overridevirtual

Create a snapshot of the frame to be rendered and save it to the provided file.

The file extension determines the image format.

Reimplemented from chrono::ChVisualSystem.


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono_vsg/ChVisualSystemVSG.h
  • /builds/uwsbel/chrono/src/chrono_vsg/ChVisualSystemVSG.cpp