Project 101, Physics Engine for LG3D?Synopsis:
In this project, I hope to create a general 3D physics engine for use by the Looking Glass team. Also, I hope to create several smaller, specific physics sub-engine demos.
Deliverables:
- A working general Newtonian physics engine
- One or more test programs for this general engine
- Several interesting demos inspired by specific physics phenomena; for example, a spring-based cloth simulator or a water-wave simulator, which you could drop rocks or TVs into.
Benefits:
A physics engine would greatly increase the capabilities of LG3D?. It would allow, for example, objects to be stacked on top of one another, rolled down a slope, dropped from heights, bounced off other objects or trampolines, etc. If these reactions happen correctly, it creates a strongly interactive environment for users. It especially enhances the immersion and realism of the 3D environment. In addition, the specific demos can be used as fun toys, or could be used in future projects to create more full-fledged games.
Schedule:
Design Phase - to be completed mid-June. The first step is downloading LG3D? and asking the Looking Glass team how my project specifically fits into their vision. I will then create more detailed specifications, and design the project around them.
Rigid Body Dynamics Phase - to be completed late July. This phase has the brunt of the general physics engine coding in it. Various numerical integration techniques and polygonal structures will have to be implemented. Drivers for visualization of the structures should also be implemented; perhaps a sandbox where users can create objects and experiment with forces like gravity at will.
Fun Stuff Phase - to be completed mid-August. This phase is for the independent, specific departments of physics within the engine, like springs, particles, waves, possibly joints, and others.
About Me:
I am enrolled in the University of Virginia and will start this year, in the fall of 2006. I plan to major in Computer Science. I am in high school at the moment and will be an incoming freshman when I go to UVA. My class graduates mid-June, and so for the first few weeks of the project, if accepted, I would have to work around school. This shouldn't be a big problem, since homework will be minimal, and I will be able to devote most of my afternoon and weekend time to getting a good start on the project. Once my summer starts, I will have the whole summer to work on the project without distractions.
I chose this project for three reasons. The first is that it is a learning experience. Throughout this project, I will learn about open source development and how to work as part of a group of developers. The second reason is that the product is useful. It is unlikely that a successfully completed engine would sit on the shelf: if used, it would give LG3D? developers a good deal of power for creating their 3D environment. The third is that this project is do-able. Although it will definitely be a challenge to complete it in such a short timeline, I am confident in my abilities and my drive to give something to the computing community. Having already forayed into Java 3D physics engines, I feel I have the experience needed to quickly and efficiently create an accurate, speedy, and useful physics engine.
Prior Work:
Throughout my senior year in high school, I made a rudimentary 3D physics engine in Java. You can access the project site at http://www.tjhsst.edu/~tloffred, though much of it is out of date and some of the web start programs do not work properly yet. The scope of the project included rigid body dynamics, collisions, and springs. If accepted for the Looking Glass project, I will of course make use of the knowledge gained through my experiences with my senior project. The code for the Looking Glass project, however, will be written from scratch and will probably end up looking very different. My high school project was filled with experimentation, but for this project, I have a good idea of what I am doing and how I will do it.
Skills:
C++, Java, and Python programming; knowledge of computer algorithms, and 3D physics, including numerical integration and some 3D geometry.
-- Main.timloff - 07 May 2006