Description
Irrlicht-based Chrono run-time visualization system.
#include <ChVisualSystemIrrlicht.h>
Classes | |
class | ChIrrNodeVisual |
Irrlicht scene node for a visual model not associated with a physics item. More... | |
Public Member Functions | |
ChVisualSystemIrrlicht (ChSystem *sys, const ChVector3d &camera_pos=ChVector3d(2, 2, 2), const ChVector3d &camera_targ=ChVector3d(0, 0, 0)) | |
Auto-initialized run-time visualization system, with default settings. | |
virtual void | AttachSystem (ChSystem *sys) override |
Attach another Chrono system to the run-time visualization system. More... | |
void | SetAntialias (bool val) |
Enable/disable antialias (default true). More... | |
void | SetFullscreen (bool val) |
Enable/disable full-screen mode (default false). More... | |
void | SetShadows (bool val) |
Enable/disable shadows (default false). More... | |
void | SetDriverType (irr::video::E_DRIVER_TYPE driver_type) |
Set the device driver type (default irr::video::EDT_DIRECT3D9). More... | |
void | SetWindowSize (unsigned int width, unsigned int height) |
Set the window size (default 640x480). More... | |
void | SetWindowTitle (const std::string &win_title) |
Set the windoiw title (default ""). More... | |
void | SetWindowId (void *window_id) |
Set the window ID. More... | |
void | SetCameraVertical (CameraVerticalDir vert) |
Use Y-up camera rendering (default CameraVerticalDir::Y). More... | |
CameraVerticalDir | GetCameraVertical () |
Tells if the current camera vertical mode is Y or Z. | |
void | SetLogLevel (irr::ELOG_LEVEL log_level) |
Set the Irrlicht logging level (default irr::ELL_INFORMATION). More... | |
void | SetSymbolScale (double scale) |
Set the scale for symbol drawing (default: 1). | |
virtual void | Initialize () override |
Initialize the visualization system. More... | |
void | AddLogo (const std::string &logo_filename=GetChronoDataFile("logo_chronoengine_alpha.png")) |
Add a logo in a 3D scene. More... | |
virtual int | AddCamera (const ChVector3d &pos, ChVector3d targ=VNULL) override |
Add a camera in an Irrlicht 3D scene. More... | |
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... | |
void | UpdateGrid (int id, const ChCoordsys<> &csys) |
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. | |
void | AddSkyBox (const std::string &texture_dir=GetChronoDataFile("skybox/")) |
Add a sky box in a 3D scene. More... | |
irr::scene::ILightSceneNode * | AddLightDirectional (double elevation=60, double azimuth=60, ChColor ambient=ChColor(0.5f, 0.5f, 0.5f), ChColor specular=ChColor(0.2f, 0.2f, 0.2f), ChColor diffuse=ChColor(1.0f, 1.0f, 1.0f)) |
Add a directional light to the scene. More... | |
irr::scene::ILightSceneNode * | AddLight (const ChVector3d &pos, double radius, ChColor color=ChColor(0.7f, 0.7f, 0.7f)) |
Add a point light to the scene. More... | |
irr::scene::ILightSceneNode * | AddLightWithShadow (const ChVector3d &pos, const ChVector3d &aim, double radius, double near_value, double far_value, double angle, unsigned int resolution=512, ChColor color=ChColor(1, 1, 1), bool directional=false, bool clipborder=true) |
Add a point light that cast shadow (using soft shadows/shadow maps) Note that the quality of the shadow strictly depends on how close 'near_value' and 'far_value' are to the bounding box of the scene. More... | |
void | AddTypicalLights () |
Simple shortcut to set two point lights in the scene. More... | |
void | AddUserEventReceiver (irr::IEventReceiver *receiver) |
Attach a custom event receiver to the application. | |
void | EnableShadows (std::shared_ptr< ChPhysicsItem > item=nullptr) |
Enable shadow maps for all visual models in a scene or only for a single physics item. More... | |
void | EnableContactDrawing (ContactsDrawMode mode) |
Enable contact rendering (default: none). More... | |
void | EnableLinkDrawing (LinkDrawMode mode) |
Enable rendering of link (joint) frames (default: none). More... | |
void | EnableBodyFrameDrawing (bool val) |
Enable rendering of body frames (default: false). More... | |
void | EnableLinkFrameDrawing (bool val) |
Enable rendering of link frames (default: false). More... | |
void | EnableCollisionShapeDrawing (bool val) |
Enable rendering of collision shapes (default: false). More... | |
void | EnableAbsCoordsysDrawing (bool val) |
Enable rendering of the absolute coordinate system (default: none). More... | |
void | ShowProfiler (bool val) |
Show the realtime profiler in the 3D view. | |
void | ShowExplorer (bool val) |
Show the object explorer. | |
void | ShowInfoPanel (bool val) |
Show the info panel in the 3D view. | |
void | ShowConvergencePlot (bool val) |
Show the convergence plot (available only for iterative solvers). | |
void | SetInfoTab (int ntab) |
Set the active tab on the info panel. More... | |
irr::IrrlichtDevice * | GetDevice () |
irr::video::IVideoDriver * | GetVideoDriver () |
irr::scene::ISceneManager * | GetSceneManager () |
irr::scene::ICameraSceneNode * | GetActiveCamera () |
irr::gui::IGUIEnvironment * | GetGUIEnvironment () |
void * | GetWindowId () const |
Get the window ID. | |
ChIrrGUI * | GetGUI () |
Return the Irrlicht ChIrrGUI object. | |
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 spcified physics item. More... | |
virtual void | UnbindItem (std::shared_ptr< ChPhysicsItem > item) override |
Remove the visual assets for the specified physics item from this visualization system. | |
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 > shape, 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. | |
virtual bool | Run () override |
Run the Irrlicht device. 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 | BeginScene (bool backBuffer, bool zBuffer, ChColor color) |
Clean the canvas 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 | RenderFrame (const ChFrame<> &frame, double axis_length=1) override |
Render the specified reference frame. | |
virtual void | RenderCOGFrames (double axis_length=1) override |
Render COG frames for all bodies in the system. | |
virtual void | EndScene () override |
End the scene draw at the end of each animation frame. | |
irr::gui::IGUIFont * | GetMonospaceFont () const |
Return a fixed-size font for rendering GUI. | |
void | SetJPEGQuality (unsigned int quality) |
Set the JPEG quality level (between 0 and 100) for saved snapshots (default: 0). More... | |
virtual void | WriteImageToFile (const std::string &filename) override |
Create a snapshot of the last rendered frame and save it to the provided file. More... | |
bool | GetUtilityFlag () const |
Get internal utility flag value. | |
void | SetUtilityFlag (bool flag) |
Set internal utility flag value. | |
irr::SIrrlichtCreationParameters | GetCreationParameters () const |
Get device creation parameters. | |
void | SetCreationParameters (const irr::SIrrlichtCreationParameters &device_params) |
Set device creation parameters. | |
std::vector< std::shared_ptr< RTSCamera > > | GetCameras () const |
Get list of cameras defined for the scene. | |
Public Member Functions inherited from chrono::ChVisualSystem | |
void | SetVerbose (bool verbose) |
Enable/disable information terminal output during initialization (default: false). | |
virtual ChVector3d | GetCameraPosition () const |
Get the location of the current (active) camera. | |
virtual ChVector3d | GetCameraTarget () const |
Get the target (look-at) point of the current (active) camera. | |
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 double | GetSimulationRTF () const |
Return the simulation real-time factor (simulation time / simulated time). More... | |
virtual double | GetSimulationTime () const |
Return the current simulated time. More... | |
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. | |
std::vector< ChSystem * > | GetSystems () const |
Get the list of associated Chrono systems. | |
ChSystem & | GetSystem (int i) const |
Get the specified associated Chrono system. | |
Protected Member Functions | |
void | CreateIrrNodes (const ChAssembly *assembly, std::unordered_set< const ChAssembly * > &trace) |
Create the ChIrrNodes for all visual model instances in the specified assembly. | |
void | CreateIrrNode (std::shared_ptr< ChPhysicsItem > item) |
Create the ChIrrNodeModel for the visual model instance of the specified physics item. | |
void | PopulateIrrNode (irr::scene::ISceneNode *node, std::shared_ptr< ChVisualModel > model, const ChFrame<> &parent_frame) |
Populate the ChIrrNodeModel for the visual model instance of the specified physics item. | |
void | PurgeIrrNodes () |
Purge Irrlicht nodes associated with a deleted physics item or with a deleted visual model. | |
void | AddShadowToIrrNode (irr::scene::ISceneNode *node) |
Add shadow to an Irrlicht node. | |
virtual void | OnSetup (ChSystem *sys) override |
Perform necessary setup operations at the beginning of a time step. | |
virtual void | OnUpdate (ChSystem *sys) override |
Perform necessary update operations at the end of a time step. | |
virtual void | OnClear (ChSystem *sys) override |
Remove all visualization objects from this visualization system. | |
Protected Attributes | |
std::vector< std::shared_ptr< RTSCamera > > | m_cameras |
list of cameras defined for the scene | |
std::vector< GridData > | m_grids |
list of visualization grids | |
std::unordered_map< ChPhysicsItem *, std::shared_ptr< ChIrrNodeModel > > | m_nodes |
scene nodes for physics items | |
std::vector< std::shared_ptr< ChIrrNodeVisual > > | m_vis_nodes |
scene nodes for vis-only models | |
bool | m_yup |
use Y-up if true, Z-up if false | |
std::string | m_win_title |
window title | |
irr::SIrrlichtCreationParameters | m_device_params |
Irrlicht device parameters. | |
irr::IrrlichtDevice * | m_device |
Irrlicht visualization device. | |
irr::gui::IGUIFont * | m_monospace_font |
Fixed-size font. | |
irr::scene::ISceneNode * | m_container |
Irrlicht scene container. | |
std::unique_ptr< ChIrrGUI > | m_gui |
associated Irrlicht GUI and event receiver | |
std::unique_ptr< EffectHandler > | m_effect_handler |
effect handler for shadow maps | |
bool | m_use_effects |
flag to enable/disable effects | |
bool | m_utility_flag = false |
utility flag that may be accessed from outside | |
irr::u32 | m_quality |
JPEG quality level (for saved snapshots) | |
irr::scene::IAnimatedMesh * | sphereMesh |
irr::scene::IMesh * | cubeMesh |
irr::scene::IMesh * | cylinderMesh |
irr::scene::IMesh * | capsuleMesh |
irr::scene::IMesh * | coneMesh |
Protected Attributes inherited from chrono::ChVisualSystem | |
bool | m_verbose |
terminal output | |
bool | m_initialized |
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 | |
Additional Inherited Members | |
Public Types inherited from chrono::ChVisualSystem | |
enum | Type { Type::IRRLICHT, Type::VSG, Type::OpenGL, Type::OptiX, NONE } |
Supported run-time visualization systems. More... | |
Member Function Documentation
◆ AddCamera()
|
overridevirtual |
Add a camera in an Irrlicht 3D scene.
The camera rotation/pan is controlled by mouse left and right buttons, the zoom is controlled by mouse wheel or rmb+lmb+mouse, the position can be changed also with keyboard up/down/left/right arrows, the height can be changed with keyboard 'PgUp' and 'PgDn' keys. Optional parameters are position and target. Has no effect, unles called after Initialize().
Reimplemented from chrono::ChVisualSystem.
◆ AddGrid()
|
overridevirtual |
Add a grid with specified parameters in the x-y plane of the given frame.
- Parameters
-
x_step grid cell size in X direction y_step grid cell size in Y direction nx number of cells in X direction ny number of cells in Y direction pos grid reference frame col grid line color
Reimplemented from chrono::ChVisualSystem.
◆ AddLight()
ILightSceneNode * chrono::irrlicht::ChVisualSystemIrrlicht::AddLight | ( | const ChVector3d & | pos, |
double | radius, | ||
ChColor | color = ChColor(0.7f, 0.7f, 0.7f) |
||
) |
Add a point light to the scene.
Has no effect, unles called after Initialize().
◆ AddLightDirectional()
ILightSceneNode * chrono::irrlicht::ChVisualSystemIrrlicht::AddLightDirectional | ( | double | elevation = 60 , |
double | azimuth = 60 , |
||
ChColor | ambient = ChColor(0.5f, 0.5f, 0.5f) , |
||
ChColor | specular = ChColor(0.2f, 0.2f, 0.2f) , |
||
ChColor | diffuse = ChColor(1.0f, 1.0f, 1.0f) |
||
) |
Add a directional light to the scene.
Has no effect, unless called after Initialize(). Light direction is defined by:
- elevation (deg) between 0 (at the horizon) and 90 (above)
- azimuth (deg) between 0 and 360, with 0 = South (-X), 90 = East (-Y), 180 = North (+X), 270 = West (+Y)
- Parameters
-
elevation light elevation azimuth light azimuth ambient ambient color specular specular color diffuse diffuse color
◆ AddLightWithShadow()
ILightSceneNode * chrono::irrlicht::ChVisualSystemIrrlicht::AddLightWithShadow | ( | const ChVector3d & | pos, |
const ChVector3d & | aim, | ||
double | radius, | ||
double | near_value, | ||
double | far_value, | ||
double | angle, | ||
unsigned int | resolution = 512 , |
||
ChColor | color = ChColor(1, 1, 1) , |
||
bool | directional = false , |
||
bool | clipborder = true |
||
) |
Add a point light that cast shadow (using soft shadows/shadow maps) Note that the quality of the shadow strictly depends on how close 'near_value' and 'far_value' are to the bounding box of the scene.
Use AddShadow() to enable shadows for an object or for the entire scene. Has no effect, unless called after Initialize().
◆ AddLogo()
void chrono::irrlicht::ChVisualSystemIrrlicht::AddLogo | ( | const std::string & | logo_filename = GetChronoDataFile("logo_chronoengine_alpha.png") | ) |
Add a logo in a 3D scene.
Has no effect, unles called after Initialize().
◆ AddSkyBox()
void chrono::irrlicht::ChVisualSystemIrrlicht::AddSkyBox | ( | const std::string & | texture_dir = GetChronoDataFile("skybox/") | ) |
Add a sky box in a 3D scene.
Note: it is assumed that the specified "texture_dir" directory contains the following three texture images: sky_lf.jpg, sky_up.jpg, sky_dn.jpg. Has no effect, unless called after Initialize().
◆ AddTypicalLights()
void chrono::irrlicht::ChVisualSystemIrrlicht::AddTypicalLights | ( | ) |
Simple shortcut to set two point lights in the scene.
For more precise control on lights, use AddLight() or just use Irrlicht directly. Has no effect, unless called after Initialize().
◆ AddVisualModel() [1/2]
|
overridevirtual |
Add a visual model not associated with a physical item.
Return a model ID which can be used later to modify the position of this visual model.
Reimplemented from chrono::ChVisualSystem.
◆ AddVisualModel() [2/2]
|
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.
◆ AttachSystem()
|
overridevirtual |
Attach another Chrono system to the run-time visualization system.
Currently only the first associated Chrono system is rendered.
Reimplemented from chrono::ChVisualSystem.
◆ 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()
|
overridevirtual |
Process the visual assets for the spcified 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.
◆ EnableAbsCoordsysDrawing()
void chrono::irrlicht::ChVisualSystemIrrlicht::EnableAbsCoordsysDrawing | ( | bool | val | ) |
Enable rendering of the absolute coordinate system (default: none).
Has no effect, unless called after the visual system is initialized and attached.
◆ EnableBodyFrameDrawing()
void chrono::irrlicht::ChVisualSystemIrrlicht::EnableBodyFrameDrawing | ( | bool | val | ) |
Enable rendering of body frames (default: false).
Has no effect, unless called after the visual system is initialized and attached.
◆ EnableCollisionShapeDrawing()
void chrono::irrlicht::ChVisualSystemIrrlicht::EnableCollisionShapeDrawing | ( | bool | val | ) |
Enable rendering of collision shapes (default: false).
Has no effect, unless called after the visual system is initialized and attached.
◆ EnableContactDrawing()
void chrono::irrlicht::ChVisualSystemIrrlicht::EnableContactDrawing | ( | ContactsDrawMode | mode | ) |
Enable contact rendering (default: none).
Has no effect, unless called after the visual system is initialized and attached.
◆ EnableLinkDrawing()
void chrono::irrlicht::ChVisualSystemIrrlicht::EnableLinkDrawing | ( | LinkDrawMode | mode | ) |
Enable rendering of link (joint) frames (default: none).
Has no effect, unless called after the visual system is initialized and attached.
◆ EnableLinkFrameDrawing()
void chrono::irrlicht::ChVisualSystemIrrlicht::EnableLinkFrameDrawing | ( | bool | val | ) |
Enable rendering of link frames (default: false).
Has no effect, unless called after the visual system is initialized and attached.
◆ EnableShadows()
void chrono::irrlicht::ChVisualSystemIrrlicht::EnableShadows | ( | std::shared_ptr< ChPhysicsItem > | item = nullptr | ) |
Enable shadow maps for all visual models in a scene or only for a single physics item.
A shadow-enabled light must be added to the scene with Shadow maps in Irrlicht may slow visualization a bit. Also, one must remember to add shadow-enabled light, using AddLightWithShadow(). Has no effect, unless called after Initialize().
◆ Initialize()
|
overridevirtual |
Initialize the visualization system.
This creates the Irrlicht device using the current values for the optional device parameters.
Implements chrono::ChVisualSystem.
Reimplemented in chrono::modal::ChModalVisualSystemIrrlicht< ScalarType >, and chrono::vehicle::ChVehicleVisualSystemIrrlicht.
◆ 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()) {...}
Implements chrono::ChVisualSystem.
Reimplemented in chrono::modal::ChModalVisualSystemIrrlicht< ScalarType >, chrono::vehicle::ChVehicleVisualSystemIrrlicht, and chrono::robosimian::RoboSimianVisualSystemIrrlicht.
◆ Run()
|
overridevirtual |
Run the Irrlicht device.
Returns false
if the device wants to be deleted.
Implements chrono::ChVisualSystem.
◆ SetAntialias()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetAntialias | ( | bool | val | ) |
Enable/disable antialias (default true).
Must be called before Initialize().
◆ SetCameraVertical()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetCameraVertical | ( | CameraVerticalDir | vert | ) |
Use Y-up camera rendering (default CameraVerticalDir::Y).
Must be called before Initialize().
◆ SetDriverType()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetDriverType | ( | irr::video::E_DRIVER_TYPE | driver_type | ) |
Set the device driver type (default irr::video::EDT_DIRECT3D9).
Must be called before Initialize().
◆ SetFullscreen()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetFullscreen | ( | bool | val | ) |
Enable/disable full-screen mode (default false).
Must be called before Initialize().
◆ SetInfoTab()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetInfoTab | ( | int | ntab | ) |
Set the active tab on the info panel.
Has no effect, unless called after the visual system is initialized and attached.
◆ SetJPEGQuality()
|
inline |
Set the JPEG quality level (between 0 and 100) for saved snapshots (default: 0).
A value of 0 sets the quality to 75%.
◆ SetLogLevel()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetLogLevel | ( | irr::ELOG_LEVEL | log_level | ) |
Set the Irrlicht logging level (default irr::ELL_INFORMATION).
Must be called before Initialize().
◆ SetShadows()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetShadows | ( | bool | val | ) |
Enable/disable shadows (default false).
Must be called before Initialize().
◆ SetWindowId()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetWindowId | ( | void * | window_id | ) |
Set the window ID.
Must be called before Initialize().
◆ SetWindowSize()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetWindowSize | ( | unsigned int | width, |
unsigned int | height | ||
) |
Set the window size (default 640x480).
Must be called before Initialize().
◆ SetWindowTitle()
void chrono::irrlicht::ChVisualSystemIrrlicht::SetWindowTitle | ( | const std::string & | win_title | ) |
Set the windoiw title (default "").
Must be called before Initialize().
◆ WriteImageToFile()
|
overridevirtual |
Create a snapshot of the last rendered frame 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_irrlicht/ChVisualSystemIrrlicht.h
- /builds/uwsbel/chrono/src/chrono_irrlicht/ChVisualSystemIrrlicht.cpp