SIMULATE

## Name

simulate — a Bullet-based physics simulator for MGED

## Synopsis

`simulate` [`options`...] `path` `duration`

## DESCRIPTION

simulate performs rigid-body physics evaluation. The Bullet physics engine is used with a collision algorithm that utilizes the librt ray tracer.

The `path` parameter specifies the path to the objects within the simulation. All primitives under this path are regarded as separate physical objects by default. If a combination has the attribute `simulate::type=region`, all primitives below it in the hierarchy are regarded as one physical object.

The `duration` parameter specifies the duration of the physics simulation (each use of the simulate command operates within a new physics environment).

All values are specified in units of meters, kilograms, and seconds. Note that Bullet is primarily designed for objects of sizes between approximately 0.05 and 10.0 meters, with a collision tolerance of 0.004 meters; hence, using simulate on a model that is significantly different from this scale may give worse results.

## OPTIONS

--debug=`MODE`

  Set the debugging mode. Multiple mode flags can be separated using commas.

  aabb

    Draw Bullet's axis-aligned bounding boxes after the simulation step. These can usually be regarded as indicating the "true" position of geometry. Any discrepancies may indicate that the simulate command is incorrectly applying the Bullet transformations.

  contact

    Draw all of Bullet's collision contact points during the simulation.

  ray

    Draw all of the rays fired by the internal collision detection algorithm.

## OBJECT ATTRIBUTES

The simulation can be configured by setting certain attributes on objects within the specified path.

simulate::type=`TYPE`

  Specify the type of the associated object.

  region

    Regard all solids under this combination as belonging to one rigid body.

simulate::mass=`SCALAR`

  Specify the mass of the associated object. Objects with a mass of `0.0` are immobile.

simulate::linear_velocity=<`x`, `y`, `z`>

  Specify the linear velocity of the associated object as a vector.

simulate::angular_velocity=<`x`, `y`, `z`>

  Specify the angular velocity of the associated object as a vector.

simulate::gravity=<`x`, `y`, `z`>

  Specify the acceleration due to gravity as a vector. This attribute can only be applied to the topmost object under `path`. The default gravity vector is `<0.0, 0.0, -9.80665>`, specifying an accleration of -9.8 mm/s/s along the z-axis.

simulate::grid_radius=x

  Specify the number of rays along the radii of the circular grids of rays fired during collision detection. This attribute can only be applied to the topmost object under `path`. The default value is `10`.

## AUTHOR

BRL-CAD Team

## COPYRIGHT

This software is Copyright (c) 2017-2023 United States Government as represented by the U.S. Army Research Laboratory.

## BUG REPORTS

Reports of bugs or problems should be submitted via electronic mail to `<devs@brlcad.org>`