chrono::irrlicht::ChIrrApp Class Reference

Description

Class to add some GUI to Irrlicht+ChronoEngine applications.


Such basic GUI can be used to monitor solver timings, to change physical system settings easily, and so on.

#include <ChIrrApp.h>

Inheritance diagram for chrono::irrlicht::ChIrrApp:
Collaboration diagram for chrono::irrlicht::ChIrrApp:

Public Member Functions

 ChIrrApp (ChSystem *psystem, const std::wstring &title=L"Chrono", const irr::core::dimension2d< irr::u32 > &dimens=irr::core::dimension2d< irr::u32 >(640, 480), VerticalDir vert=VerticalDir::Y, bool do_fullscreen=false, bool do_shadows=false, bool do_antialias=true, irr::video::E_DRIVER_TYPE mydriver=irr::video::EDT_DIRECT3D9, irr::ELOG_LEVEL log_level=irr::ELL_INFORMATION)
 Create the application with Irrlicht context (3D view, device, etc.).
 
virtual ~ChIrrApp ()
 Safely delete every Irrlicht item (including the Irrlicht scene nodes).
 
ChIrrAssetConverterGetAssetConverter ()
 Gets the asset converter.
 
void AssetBind (std::shared_ptr< ChPhysicsItem > mitem)
 Shortcut to add and bind a ChIrrNodeAsset to an item, if it has not been added previously.
 
void AssetBindAll ()
 Shortcut to add and bind a ChIrrNodeAsset to all items in a ChSystem. More...
 
void AssetUpdate (std::shared_ptr< ChPhysicsItem > mitem)
 This function sets up the Irrlicht nodes corresponding to the geometric assets that are found in the ChPhysicsItem 'mitem'. More...
 
void AssetUpdateAll ()
 For all items in a ChSystem, this function sets up the Irrlicht nodes corresponding to the geometric assets that have been added to the items. More...
 
void AddShadow (std::shared_ptr< ChPhysicsItem > mitem)
 Shortcut to enable shadow maps for an item. More...
 
void AddShadowAll ()
 Shortcut to enable shadow maps for all items in scene. More...
 
- Public Member Functions inherited from chrono::irrlicht::ChIrrAppInterface
 ChIrrAppInterface (ChSystem *sys, const std::wstring &title=L"Chrono", const irr::core::dimension2d< irr::u32 > &dimens=irr::core::dimension2d< irr::u32 >(640, 480), VerticalDir vert=VerticalDir::Y, bool do_fullscreen=false, bool do_shadows=false, bool do_antialias=true, irr::video::E_DRIVER_TYPE mydriver=irr::video::EDT_DIRECT3D9, irr::ELOG_LEVEL log_level=irr::ELL_INFORMATION)
 Create the Irrlicht context (device, etc.)
 
virtual ~ChIrrAppInterface ()
 Delete all Irrlicht items (including the Irrlicht scene nodes)
 
irr::IrrlichtDevice * GetDevice ()
 
irr::video::IVideoDriver * GetVideoDriver ()
 
irr::scene::ISceneManager * GetSceneManager ()
 
irr::scene::ICameraSceneNode * GetActiveCamera ()
 
irr::gui::IGUIEnvironment * GetIGUIEnvironment ()
 
EffectHandlerGetEffects ()
 
irr::scene::ISceneNode * GetContainer ()
 
ChSystemGetSystem ()
 
void SetShowInfos (bool val)
 Show the info panel in the 3D view.
 
bool GetShowInfos ()
 
void SetInfosTab (int ntab)
 
void SetShowProfiler (bool val)
 Show the realtime profiler in the 3D view.
 
bool GetShowProfiler ()
 
void SetShowExplorer (bool val)
 Show the object explorer.
 
bool GetShowExplorer ()
 
void SetTimestep (double val)
 Set/Get the time step for time integration. More...
 
double GetTimestep ()
 
void SetStepManage (bool val)
 If set to true, you can use DoStep() in the simulation loop to advance the simulation by one timestep. More...
 
void SetTryRealtime (bool val)
 If enabled, the function DoStep() will enforce soft real-time, by spinning in place until simulation time catches up with real time.
 
void SetPaused (bool val)
 Set/Get the simulation state (running or paused)
 
bool GetPaused ()
 
void SetVideoframeSave (bool val)
 If set to true, each frame of the animation will be saved on the disk as snapshot0001.bmp, snapshot0002.bmp, etc.
 
bool GetVideoframeSave ()
 
void SetVideoframeSaveInterval (int val)
 Set to 1 if you need to save on disk all simulation steps, set to 2 for saving each 2 steps, etc.
 
int GetVideoframeSaveInterval ()
 
void SetModalShow (bool val)
 If set true, instead of doing time integration in myapplication.DoStep() it just shows an oscillatory motion of the nth mode (only if some ChModalAssembly is found)
 
bool GetModalShow ()
 
void SetModalModeNumber (int val)
 When in SetModalShow(true), use this to pick the n-th mode to show (only if some ChModalAssembly is found)
 
int GetModalModeNumber ()
 
void SetModalAmplitude (double val)
 When in SetModalShow(true), this sets the amplitude of shown mode (only if some ChModalAssembly is found)
 
double GetModalAmplitude ()
 
void SetModalSpeed (double val)
 When in SetModalShow(true), this sets the speed of shown mode (only if some ChModalAssembly is found)
 
double GetModalSpeed ()
 
void SetContactsLabelMode (IrrContactsLabelMode mm)
 Set the label mode for contacts.
 
void SetContactsDrawMode (IrrContactsDrawMode mm)
 Set the draw mode for contacts.
 
void SetLinksLabelMode (IrrLinkLabelMode mm)
 Set the label mode for links.
 
void SetLinksDrawMode (IrrLinkDrawMode mm)
 Set the draw mode for links.
 
void SetPlotAABB (bool val)
 Set if the AABB collision shapes will be plotted.
 
void SetPlotCOGFrames (bool val)
 Set if the COG frames will be plotted.
 
void SetPlotCollisionShapes (bool val)
 Set if the collision shapes will be plotted.
 
void SetPlotLinkFrames (bool val)
 Set if the link frames will be plotted.
 
void SetPlotConvergence (bool val)
 Set if the COG frames will be plotted.
 
void SetSymbolscale (double val)
 Set the scale for symbol drawing (link frames, COGs, etc.) More...
 
double GetSymbolscale ()
 
void SetUserEventReceiver (irr::IEventReceiver *mreceiver)
 Use this function to hook a custom event receiver to the application.
 
void SetFonts (const std::string &mfontdir=GetChronoDataFile("fonts/arial8.xml"))
 Set the fonts to be used from now on. More...
 
virtual void BeginScene (bool backBuffer=true, bool zBuffer=true, irr::video::SColor color=irr::video::SColor(255, 0, 0, 0))
 Call this to clean the canvas at the beginning of each animation frame.
 
virtual void DoStep ()
 Call this function inside a loop such as. More...
 
virtual void DrawAll ()
 Call this function inside a loop such as. More...
 
virtual void EndScene ()
 Call this to end the scene draw at the end of each animation frame.
 
void DumpSystemMatrices ()
 Dump the last used system matrices and vectors in the current directory, as 'dump_xxxx.dat' files that can be loaded with Matlab for debugging, benchmarking etc. More...
 
void AddLogo (const std::string &mlogofilename=GetChronoDataFile("logo_chronoengine_alpha.png"))
 Add a logo in a 3D scene.
 
void AddCamera (irr::core::vector3df pos=irr::core::vector3df(0, 0, -8), irr::core::vector3df targ=irr::core::vector3df(0, 0, 0))
 Add a Maya-like camera in an Irrlicht 3D scene. More...
 
void AddSkyBox (const std::string &texturedir=GetChronoDataFile("skybox/"))
 Add a sky box in a 3D scene. More...
 
irr::scene::ILightSceneNode * AddLight (irr::core::vector3df pos, double radius, irr::video::SColorf color=irr::video::SColorf(0.7f, 0.7f, 0.7f, 1.0f))
 Add a point light to the scene.
 
irr::scene::ILightSceneNode * AddLightWithShadow (irr::core::vector3df pos, irr::core::vector3df aim, double radius, double mnear, double mfar, double angle, irr::u32 resolution=512, irr::video::SColorf color=irr::video::SColorf(1.f, 1.f, 1.f, 1.f), 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 you set 'mnear' and 'mfar' parameters as close as possible to the bounding box of the scene. More...
 
void AddTypicalLights ()
 Simple shortcut to set two point lights in the scene. More...
 

Member Function Documentation

◆ AddShadow()

void chrono::irrlicht::ChIrrApp::AddShadow ( std::shared_ptr< ChPhysicsItem mitem)

Shortcut to enable shadow maps for an item.

Shadow maps in Irrlicht may slow visualization a bit. Also, one must remember to add shadow-enabled lights, using myapp.AddLightWithShadow(..)

◆ AddShadowAll()

void chrono::irrlicht::ChIrrApp::AddShadowAll ( )

Shortcut to enable shadow maps for all items in scene.

Shadow maps in Irrlicht may slow visualization a bit. Also, one must remember to add shadow-enabled lights, using myapp.AddLightWithShadow(..)

◆ AssetBindAll()

void chrono::irrlicht::ChIrrApp::AssetBindAll ( )

Shortcut to add and bind a ChIrrNodeAsset to all items in a ChSystem.

If it has been already added, the existing ChIrrNodeAsset is used. NOTE. If you want a finer control on which item has an Irrlicht proxy, and which other does not need it, just use Bind(myitem) on a per-item basis. NOTE. This conversion should be done only if needed (ex. at the beginning of an animation), i.e. not too often, for performance reasons.

◆ AssetUpdate()

void chrono::irrlicht::ChIrrApp::AssetUpdate ( std::shared_ptr< ChPhysicsItem mitem)

This function sets up the Irrlicht nodes corresponding to the geometric assets that are found in the ChPhysicsItem 'mitem'.

For example, if one has added a ChSphereShape and a ChBoxShape to the assets of a ChBody, and a ChIrrNodeAsset too, this Update() function will prepare a ISceneNode in Irrlicht (precisely, a ChIrrNode node) and it will fill it with a spherical triangle mesh, and a box triangle mesh. NOTE. This must be done after the ChIrrNodeAsset has been created and bound, for example via Bind(). NOTE. This conversion should be done only if needed (ex. at the beginning of an animation or when a shape changes), i.e. not too often, for performance reasons.

◆ AssetUpdateAll()

void chrono::irrlicht::ChIrrApp::AssetUpdateAll ( )

For all items in a ChSystem, this function sets up the Irrlicht nodes corresponding to the geometric assets that have been added to the items.

NOTE. This must be done after the ChIrrNodeAsset has been created and bound, for example via Bind(). NOTE. This conversion should be done only if needed (ex. at the beginning of an animation), i.e. not too often, for performance reasons.


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