API  4.0
For C++ developers
OpenSim::ModelVisualizer Class Reference

This class manages runtime visualization of a Model that is being manipulated through the OpenSim API. More...

Public Member Functions

 ~ModelVisualizer ()
 
Drawing methods

Currently there is just a single method for generating a frame.

void show (const SimTK::State &state) const
 Evaluate the geometry needed to visualize the given state and use it to generate a new image in the Visualizer window. More...
 
Access to SimTK::Visualizer features

These methods provide access to lower-level SimTK::Visualizer objects that are used in the implementation of this ModelVisualizer.

const SimTK::Visualizer::InputSilogetInputSilo () const
 If you want to poll for user input, you'll need access to the SimTK::Visualizer::InputSilo maintained here. More...
 
SimTK::Visualizer::InputSiloupdInputSilo ()
 Get writable access to the InputSilo so you can remove user input from the queues. More...
 
const SimTK::VisualizergetSimbodyVisualizer () const
 If you want access to the underlying Simbody SimTK::Visualizer, you can get a const reference here. More...
 
SimTK::VisualizerupdSimbodyVisualizer ()
 If you want writable access to the underlying Simbody SimTK::Visualizer, you can get a non-const reference here, provided that you have non-const access to the ModelVisualizer. More...
 

Friends

class Model
 

Miscellaneous utilities

Most users will not need to use these methods.

SimTK::DefaultGeometrygetGeometryDecorationGenerator ()
 Return a pointer to the DefaultGeometry decoration generator used by this ModelVisualizer. More...
 
const ModelgetModel () const
 Return a const reference to the Model for which this ModelVisualizer was constructed. More...
 
ModelupdModel ()
 Return a writable reference to the Model for which this ModelVisualizer was constructed. More...
 
static bool findGeometryFile (const Model &model, const std::string &geoFile, bool &isAbsolute, SimTK::Array_< std::string > &attempts)
 Given the name of a geometry file, this method will attempt to find it in a series of locations using the same algorithm as is done internally by the ModelVisualizer. More...
 
static void addDirToGeometrySearchPaths (const std::string &dir)
 Add a directory to the search path to be used by the function findGeometryFile. More...
 

Detailed Description

This class manages runtime visualization of a Model that is being manipulated through the OpenSim API.

You should not allocate one of these yourself; instead, call the Model's setUseVisualizer() method and let the Model allocate one for itself. You may find the defaults to be adequate, but you can also get access to the ModelVisualizer if you need it by calling the Model's getVisualizer() method.

The ModelVisualizer consults the Model's ModelDisplayHints object for instructions on what to display.

The Simbody visualizer binary needs to be found at runtime to create a visualizer. The search proceeds in the following order: Directory of the currently running executable/binary. Directory referred to by the environment variable OPENSIM_HOME/bin if it exists. Directories referred to by the environment variable PATH. Possible locations for simbody installations: – SIMBODY_HOME/bin if the environment variable SIMBODY_HOME exists. – SimTK_INSTALL_DIR/bin if the environment variable SIMBODY_HOME exists. – Platform specific default locations of binaries. For Linux/MacOS, this may be /usr/bin, /usr/local/bin etc. For Windows, this set is empty.

Author
Michael Sherman
See also
ModelDisplayHints, Model

Constructor & Destructor Documentation

◆ ~ModelVisualizer()

OpenSim::ModelVisualizer::~ModelVisualizer ( )
inline

Member Function Documentation

◆ addDirToGeometrySearchPaths()

static void OpenSim::ModelVisualizer::addDirToGeometrySearchPaths ( const std::string &  dir)
static

Add a directory to the search path to be used by the function findGeometryFile.

The added paths are searched in the reverse-chronological order – the latest path added is searched first.

◆ findGeometryFile()

static bool OpenSim::ModelVisualizer::findGeometryFile ( const Model model,
const std::string &  geoFile,
bool &  isAbsolute,
SimTK::Array_< std::string > &  attempts 
)
static

Given the name of a geometry file, this method will attempt to find it in a series of locations using the same algorithm as is done internally by the ModelVisualizer.

Parameters
[in]modelUsed to obtain the name of the file from which the model was loaded.
[in]geoFileName of file to look for; can be absolute or relative path name or just a file name and the extension must be supplied.
[out]isAbsoluteThis output parameter is set to true on return if the supplied geoFile was an absolute path name; in that case no searching was done.
[out]attemptsOn return, this is a list of the absolute path names that were tried. If geoFile was found, attempts.back() (the last entry) is the absolute path name of geoFile. The last entry of this array will be the path that succeeded in finding the geometry file.
Returns
true if geoFile was located and is readable.

The search rule is as follows:

  • If geoFile is an absolute pathname no search is done.
  • Otherwise, define modelDir as the directory from which the current Model file was read in, if any, otherwise the current directory.
  • Try modelDir/geoFile, then modelDir/Geometry/geoFile.
  • Otherwise, try the search paths added through addDirToGeometrySearchPaths(). The paths are searched in reverse-chronological order – the latest path added is searched first.
  • Finally, try installDir/geoFile where installDir is taken from the OPENSIM_HOME environment variable if it exists, otherwise a default installation directory.

No attempt is made to validate the contents of the file or whether it has a supported extension; we're just looking for a file of the given name that exists and is readable.

◆ getGeometryDecorationGenerator()

SimTK::DefaultGeometry* OpenSim::ModelVisualizer::getGeometryDecorationGenerator ( )
inline

Return a pointer to the DefaultGeometry decoration generator used by this ModelVisualizer.

◆ getInputSilo()

const SimTK::Visualizer::InputSilo& OpenSim::ModelVisualizer::getInputSilo ( ) const
inline

If you want to poll for user input, you'll need access to the SimTK::Visualizer::InputSilo maintained here.

Writable access is required to remove user input from the queues.

◆ getModel()

const Model& OpenSim::ModelVisualizer::getModel ( ) const
inline

Return a const reference to the Model for which this ModelVisualizer was constructed.

◆ getSimbodyVisualizer()

const SimTK::Visualizer& OpenSim::ModelVisualizer::getSimbodyVisualizer ( ) const
inline

If you want access to the underlying Simbody SimTK::Visualizer, you can get a const reference here.

◆ show()

void OpenSim::ModelVisualizer::show ( const SimTK::State state) const

Evaluate the geometry needed to visualize the given state and use it to generate a new image in the Visualizer window.

◆ updInputSilo()

SimTK::Visualizer::InputSilo& OpenSim::ModelVisualizer::updInputSilo ( )
inline

Get writable access to the InputSilo so you can remove user input from the queues.

◆ updModel()

Model& OpenSim::ModelVisualizer::updModel ( )
inline

Return a writable reference to the Model for which this ModelVisualizer was constructed.

◆ updSimbodyVisualizer()

SimTK::Visualizer& OpenSim::ModelVisualizer::updSimbodyVisualizer ( )
inline

If you want writable access to the underlying Simbody SimTK::Visualizer, you can get a non-const reference here, provided that you have non-const access to the ModelVisualizer.

Friends And Related Function Documentation

◆ Model

friend class Model
friend

The documentation for this class was generated from the following file: