What is the SPARTA project?
Source code & Executables
SPARTA stands for Simulation of Physics on A Real Time Architecture. The goal of the project is to develop specialized hardware in order to greatly accelerate physical modeling. Currently, we have developed algorithms intended for real-time physical modeling. As a side project, we have developed a public domain software package for real-time physical modeling of simple scenes. We are also currently working on an FPGA-based partial implementation of SPARTA. For more information, please take a look at the SPARTA techreport and whitepaper.
The algorithms used in the SPARTA project consist of two main parts, spring force computation and collision detection. In spring force computation, the velocities of two points are adjusted according to the difference of their distance and a preset ideal spring length. Springs can be set to 'break' when they exceed a certain length. Damping is also computed.
In collision detection, certain predefined line segments of one object are compared against the outside faces of other objects. The velocities of line segments points and face points are adjusted on collisions. Several levels of early exits are necessary in order to get real-time performance.
The main idea in our hardware implementation is to build the high level spring force computation and collision detection functions into efficient specialized pipelines fed by a small high bandwidth specialized memory.
We are currently developing a prototype system using an Altera FPGA. Below is an image of a "dead-bugged" FPGA that we are currently working with.
Ph.D. Student at Penn State University
Mary Jane Irwin
Distinguished Professor at Penn State University
Thomas P. Kelliher
Assistant Professor at Goucher College
This is the public domain SPARTA software distribution. Each
distribution includes both source code and executable.
This distribution requires opengl and glut, which are available
UNIX distribution (linux-i386 executable)
UNIX distribution (solaris executable) courtesy of Jeff Lapierre
MS-Windows distribution (MSVCC source)
Chain animation mpegs (640x480)
This demo shows the use of breakable springs in order to construct a chain.Plate animation mpegs (640x480) (320x240)
This demo shows a breaking plate that is constructed from fragments connected by stiff breakable springs.Jello animation mpegs (640x480) (320x240)
This demo features a cube made up of loose springs, which behaves like Jell-OSpeed example mpegs (640x480) (320x240)
This demo is meant to show the performance of the physical modeling simulation. It contains 10 cubes and runs in almost real-time (about 10 fps on our pentium II)Friction example mpegs (640x480) (320x240)
This movie demonstrated the use of friction in our simulations. Notice that the stone block comes to a halt earlier due to frictionDamping example mpegs (640x480) (320x240)
This demo shows the use of spring damping in order to achieve a marshmallow effect.Mass example mpegs (640x480) (320x240)
This movie demonstrates the use of mass. Notice how the larger block is almost not effected by collision with the smaller one.