OPAL Overview
Introduction
This
is a short, simple overview of OPAL’s components. It is meant to give you a general
understanding of how the different objects work together. It will first cover the most important OPAL
objects, then describe a few others that aren’t as critical to understanding
how the system works. More specific
instructions for creating and managing these objects can be found in the
tutorials. Additionally, the API
reference contains more details about every OPAL class, struct, function,
variable, etc.
Main Objects
- Simulators: Simulators are factories that
create, maintain, and destroy most other objects. They encapsulate all collision
detection and physics simulation.
- Solids: A Solid is analogous to a physical
object in the real world. It can
be static (just a shape, not physically simulated) or dynamic (has a
shape, mass, and is physically simulated). It contains no moving parts. Complex objects with moving parts can
be built from multiple Solids with Joints.
- Joints: Joints connect two Solids,
constraining their relative motion.
There are several types of Joints, each constraining motion in
different ways.
- Motors: A Motor applies forces/torques to
Solids or Joints to achieve some desired effect. There are several types of
Motors.
- Sensors: Sensors acquire data from a
simulation. There are several
types of Sensors. They can be attached
to Solids or just positioned staticly within an environment.
Other Objects
- Shapes: Shapes are used for collision
detection. They are added to
Solids; if a Solid doesn’t contain any Shapes, it cannot collide with
anything. There are several types
of Shapes. Each Shape can use a
different Material
- Materials: Materials define what happens when two
Solids (or, more specifically, two Shapes) collide. Materials consist of several
properties, including friction, bounciness, density, etc.
- Spaces: Spaces are useful for optimizing collision
detection in application-specific ways.
Shapes that are naturally grouped together can be put into a
Space to save time during collision detection.
- Data Objects and
Blueprints: Each of
the main OPAL objects stores an internal data structure describing the
object in detail. These data
structures can be built from scratch and used to generate several
identical objects. They can be
retrieved from an existing object and used to make clones. They can also be used to construct
OPAL Blueprints. Blueprints are
collections of complex systems involving Solids, Joints, Motors, and/or
Sensors. They can be constructed
from a set of manually-designed data structures or from data structures
pulled out of a set of existing objects.
They can be saved to and loaded from OPAL’s XML-based file
format.
- Event Handlers: These get notified when certain event
occur, allowing users to handle those events in application-specific
ways.
|