Description
Class to add some GUI to Irrlicht + Chrono applications.
This basic GUI can be used to monitor solver timings, to easily change physical system settings, etc.
#include <ChIrrAppInterface.h>
Public Member Functions | |
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 () |
EffectHandler * | GetEffects () |
irr::scene::ISceneNode * | GetContainer () |
ChSystem * | GetSystem () |
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... | |
Friends | |
class | ChIrrAppEventReceiver |
Member Function Documentation
◆ AddCamera()
void chrono::irrlicht::ChIrrAppInterface::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.
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. Note: if you want more precise control on camera specs, just use plain commands of Irrlicht.
◆ AddLightWithShadow()
irr::scene::ILightSceneNode * chrono::irrlicht::ChIrrAppInterface::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.
NOTE: use myapplication.AddShadow(myitem) to enable shadow for an object! Otherwise, use myapplication.AddShadowAll().
◆ AddSkyBox()
void chrono::irrlicht::ChIrrAppInterface::AddSkyBox | ( | const std::string & | texturedir = GetChronoDataFile("skybox/") | ) |
Add a sky box in a 3D scene.
Note: it is assumed that the specified "texturedir" directory contains the following three texture images: sky_lf.jpg, sky_up.jpg, sky_dn.jpg
◆ AddTypicalLights()
void chrono::irrlicht::ChIrrAppInterface::AddTypicalLights | ( | ) |
Simple shortcut to set two point lights in the scene.
Note: if you want more precise control on lights, use AddLight() or just use Irrlicht directly.
◆ DoStep()
|
virtual |
Call this function inside a loop such as.
while(application.GetDevice()->run()) {...}
in order to advance the dynamics by one timestep. The value of the timestep can be set via SetTimestep(). Optionally, you can use SetTryRealtime(true) if your simulation can run in realtime; this will enforce soft real-time. Alternatively, to use ChSystem::DoStepDynamics() directly in the loop, use SetStepManage(false).
◆ DrawAll()
|
virtual |
Call this function inside a loop such as.
while(application.GetDevice()->run()) {...}
to draw all 3D shapes and GUI elements at the current frame.
Reimplemented in chrono::vehicle::ChVehicleIrrApp, and chrono::robosimian::RoboSimianIrrApp.
◆ DumpSystemMatrices()
void chrono::irrlicht::ChIrrAppInterface::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.
It saves M mass matrix, Cq jacobians, E compliance as Matlab sparse matrix format, and known vectors fb, bi as column Matlab matrices.
◆ SetFonts()
void chrono::irrlicht::ChIrrAppInterface::SetFonts | ( | const std::string & | mfontdir = GetChronoDataFile("fonts/arial8.xml") | ) |
Set the fonts to be used from now on.
Note that the font must be in the XML format of Irrlicht - this can be generated using a tool provided with Irrlicht.
◆ SetStepManage()
|
inline |
If set to true, you can use DoStep() in the simulation loop to advance the simulation by one timestep.
Otherwise, you have to handle the time stepping by yourself, e.g. by calling ChSystem::DoStepDynamics(). Default: true.
◆ SetSymbolscale()
void chrono::irrlicht::ChIrrAppInterface::SetSymbolscale | ( | double | val | ) |
Set the scale for symbol drawing (link frames, COGs, etc.)
If set to true, each frame of the animation will be saved on the disk as a sequence of scripts to be rendered via POVray.
Only if solution build with ENABLE_MODULE_POSTPROCESS.
◆ SetTimestep()
void chrono::irrlicht::ChIrrAppInterface::SetTimestep | ( | double | val | ) |
Set/Get the time step for time integration.
This value is used when calling DoStep() in a loop, to advance the simulation by one timestep.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono_irrlicht/ChIrrAppInterface.h
- /builds/uwsbel/chrono/src/chrono_irrlicht/ChIrrAppInterface.cpp