Timmy Loffredo p. 5 Latimer 9/30 I. Title Three Dimensional Dynamic Physics Modelling II. Problem Statement Designing a system that realistically models everyday-life scale physics. III. Purpose The purpose of this project is to create a physics simulator. My first goal is to create a simulator that looks real and is 3D. The main application of this project would be as a physics engine for games, which are just beginning to take physics seriously. The simulator should at least be able to run something like a bowling game, where the only pertinent physics are collisions, gravity, and rigid body dynamics. It's a good topic for the Computer Systems Lab because the physics part is relatively easy - it's getting a computer to do it and graphically display it that is difficult. IV. Scope The scope of the project, by the project's nature, is variable. I will start with a simple part, like kinematics for cubes, and then I will grow the project into collisions for any polygonal solid. If time is left, will expand the project into joints (like your elbow) or curved surfaces. V. Background So far, I have read a series (4) of articles by Chris Hecker that present a simple method for creating a 3D physics simulator capable of collisions for rigid, polygonal solids. During the summer, I made a very simple particle physics simulator, and a quick 2D kinematics model to give me an idea of how it works. My brother provided me, also, with articles on more difficult physics, involving something called a "Jacobian matrix," which I've never heard of before. My work would explicitly follow the principles in the articles until I get a good understanding of what I am doing and how I can make it better. Game physics is a blossoming field which is likely to become a big focus of computer games very soon, when technology makes it appropriate to do intense calculations. Most games currently have a semblance of physics but do not actually use a complex physics engine, they just make common things react the way you would expect them to and leave it alone from there. Introductory Chris Hecker articles: http://www.d6.com/users/checker/dynamics.htm#articles More difficult material: http://www.cs.cmu.edu/afs/cs/user/baraff/www/pbm/pbm.html VI. Procedure and Methodology My first task, to be completed in the first few weeks, is the research + design phase. I will read the difficult material mentioned above and reread the Chris Hecker articles and physically draw out class diagrams, with a good idea of what functions will be in them. The project will be in Java and will make use of Java 3D, and some of the designing phase will be spent getting to know the Java 3D API. I will probably use the eclipse environment to write the project. Once the designing phase is done, the programming phase will proceed through these stages: framework - basic classes kinematics - integrating acceleration into velocity into position angular kinematics - kinematics for spin dynamics - the handling of arbitrary forces on objects collision detection* - when objects are colliding and at what point/edge/face specifically collision handling - how to respond to a known collision *a special module for the floor would have to be put in, so everything doesn't constantly collide with it; or possibly for all resting objects After each stage, a test program will ensure that everything is working perfectly and looks fine graphically. The two criteria for success are (a) that it looks realistic and (b) that the physics are correct to high precision. At first, objects will be rigid-body polygonal solids only, but I will leave open the possibility of other object types, if time permits and it is not too difficult. VII. Expected Results & Value to Others I expect my program will be able to handle collisions between rigid-body polygonal solids. It would be cool to write a simple bowling or billiards game that uses my program (note that spheres are easy, even though other curved solids are much more difficult.) The program itself will be the visual for presenting my results, and I will probably make a demo program that looks fairly impressive, if all goes well. I'm unsure of how long it will take to accomplish my tasks, which is why I made it so flexible. I'm fairly confident I can make at least something of value over senior year. As for work breakdowns, and the forms pertaining thereto, I don't know what I'll use. A chart/list of the functions and classes being fleshed out, with a description of their relation to the project, should be efficient.