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
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] | model | Used to obtain the name of the file from which the model was loaded. |
[in] | geoFile | Name of file to look for; can be absolute or relative path name or just a file name and the extension must be supplied. |
[out] | isAbsolute | This 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] | attempts | On 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.