Physics libraries such as ODE provide excellent real-time simulation, embedding them in a 3D application to create a virtual reality is far from trivial. It is often prohibitively difficult to create a simulated reality that incorporates complex dynamic objects that interact with each other and the environment under physics' constraints.
EZPhysics integrates Ogre 3D graphics library with ODE physics library. It aims to breath life into 3D game characters by animating them using robotics control methods rather than playing pre-cooked motion sequences. Most games use simulated physics to animate scenes such as explosions and ragdolls, car steering and plane flying. However, human characters and monsters don't "really" walk and jump in games.
Using EZPhysics, it is possible to create animated characters that really interact with the environment using closed loop control techniques as do real robots. It can also be used to develop complex motions for legged robots.
It is composed of several parts:
Editor & Simulator
- Facilitate the mapping between 3D meshes and physics engine objects for the purpose of mass/inertia and collision.
- Lets you interactively embed objects supported by the physics engine into 3D meshes, attach joints and constraints to the physics objects
- Save the “physically rigged” scenes into files, and run interactive simulations.
Remote control protocol
- Lets a remote "brain" control the robot/character through closed loop network protocol. EZPhysics sends the details of all the joint positions, collisions and disposition relative to the environment (IMU). The remote brain sends back commands to the robot/character's motors. The system allows finetuning and balancing the a fixed number frames per second vs. real-time performance.
- This makes it easier to develop complex controllers using Matlab or any programming language without needing to know anything about EZPhysics.
- This allows seamless transition to a real robot with same features as the simulated one (with an embedded computer and wireless interface) that can mimic the same protocol.
C++ API
- Lets you embed the “physically rigged” meshes into your 3D game or application. This involves using classes and methods for reading the rigged-models files and manipulating the physical aspects of the objects, such as applying torques and forces to joints. The API uses similar popular design patterns as Ogre.