OPAL Overview




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.


OPAL is Copyright © 2004-2005 Alan Fischer, Andres Reinot, and Tyler Streeter