The Source for Java Technology Collaboration


Project 101, Physics Engine for LG3D? (my proposal for 102 is further down)

List of Deliverables

  • A working and extendable Physics Engine for LG3D? that can be used both for physical interaction between widgets and for visual effects.
  • At least two easy to use examples of physically interacting widgets (i.e. being able to push windows around by dragging another window into them or the ability to attach widgets to each other by different kind of joints). Note that the implemented examples are intended to be of a general nature, not just a small demo of a specific test case that does not occur during normal use of the software.
  • At least one implementation of a visual special effect, such as the ability to turn a window into a piece of cloth or the ability to pour simulated fluids onto a window.
  • A good documentation of how to use and extend the application.

Benefits
The to primary task I see for a physics engine in Looking Glass 3D is enhancing the users interaction with the system in two distinct ways:

  1. Changing the behaviour of the widgets by applying physical behaviour to them. This can for example be done by giving users the option to have a gravity like force that makes all windows fall in one direction unless they are placed on some kind of shelf, by letting the user apply a force to a window “throwing” it out of the way or by making windows actually collide like physical objects.
  2. By creating visual effects that affect the user interface on a purely aesthetical level.

Personally I find the first way the most interesting. Visual effects are very nice and truly enhance the user experience in some cases, but it has been done a lot already. A user interface with physically interacting objects is not a well explored concept and opens up a lot of new possibilities in interface design. Since a lot of the visual effect stuff are pretty straight forward to do and add a lot of “ooh-factor” to the application I tend to include some of that too.

For all physics the engine need a solver for differential equations to do time integrations. I intend to use a Verlet-solver for my time stepping, but the integrator used by a certain physical object is intended to be replaceable, so future extensions to the software could include their own solver. The core engine also ties all the physical objects together so different components can affect each other.

The interaction part requires at least collision detection between rigid boxes, some kind of joints (like hinges), gravity and friction. For the visual effects I intend to include support for at least ordinary particle systems and spring/damper-cloth, this will include particle/box- collision detection. Hopefully I can get some SPH-fluids running as well.

There is a lot of things a physics engine can be used for. So many in fact that I will not be able to think of all of them; this is the reason why extendibility is very important. If some future application needs, for example, a different equation solver, then implementing that solver and making the new application use it should not be a hassle or affect the rest of the engine. For the engine to beneficial to the LG3D? community it must be very easy to extend as well as use.

Schedule

  • Early June - System design complete
  • Late June/Early July – Rigid Body Dynamics and Particle System physics complete
  • Mid July – First examples of physical interaction and visual effects implemented into LG3D?
  • Late July – Second example of physically interacting widgets implemented
  • August 21st Documentation and bug fixing complete

About Me
I am in my final year of the Master’s program in Computing Science at Umeå University in Umeå, Sweden. At the moment I am participating in an advanced course in visual interactive simulations (i.e. real time physical simulations) for the rest of the semester. At the end of that course I will have developed a fully working physics engine in C++, I have no doubt in my ability to implement a similar one in Java as I have worked a lot in Java during my time at the university. I have also worked with graphics programming in 2D and 3D using OpenGL?, SQL based databases, TCP/IP network programming and taken courses in system design, software development and emergent systems.

My main reason for picking this project for my Summer of Code application is my burning interest in real time physics programming. My secondary reason is how fascinating I find this new kind of user interface and the fact that three dimensional graphics are not only used for eye candy but for new interaction methods. I would love to explore what a physics engine could add to this new interface.

Project 102, A Game for LG3D?

Basic Idea
This idea came to me while I was finnishing my proposal for the 101 project. The idea is to create a three dimensional variant of the classic game Pong. This may not sound particulary interesting but the special part is that instead of playing it inside a game window you play it in you three dimensionall desk space. To prevent the ball from flying off completely you will have to incorporate some kinde of transparent bounding box into the game. The game can either be played against a computer opponent or another human. This game could also be

List of Deliverables

  • A 3D Pong game played directly in the desk space
  • A GUI for customizing game opitions like opponent, size of playing space, collisions with windows etc.

Benefits
Apart from being a fun game this would be a very exciting way to demonstrate the three dimensionality of the LG3D? desk space.

Schedule

  • Earlt June - System design complete
  • Late June - Beta of Game engine complete with some AI.
  • Mid July - All customizing options in place in GUI, Basic Game done
  • Late July - All options, collisions with windows etc working.
  • Mid August - Most bugs fixed, documentation as good as done.

For "About me" see previous project suggestion

My email is tobias.evert (at) gmail.com and my ICQ UIN is 5141213
Cell phone: +46735328832

-- Main.tobiasevert - 08 May 2006

Topic TobiasEvert . { Edit | Ref-By | Printable | Diffs r1 | More }
 XML java.net RSS

Revision r1 - 08 May 2006 - 23:21:44 - Main.tobiasevert
Parents: WebHome