Rabindranath Andujar Moreno
Email / IRC / WWW
Integration of ODE Physics Engine into Blender
Benefits to Blender
Current Blender 2.5 version uses the Bullet Physics engine. Addition of an extra, open-source and also broadly used dynamics engine would extend Blender possibilities and versatility.ODE's development runs at a slower pace than Bullet's, but so has it been since inception. This could be seen as a drawback in these rushed times. Nonetheless, this could also mean more robust implementation and better documentation, which are also important features in an open source project. For many physics engine users, ODE remains as a reference and in some cases it gives them the confidence of the experience. Also, different numerical approaches can give more options when a model is unstable or badly behaving and permits a "second opinion" to the artists. Previous projects in this matter already exist (actually GSoC2005 approved one under the exact name as this), which means there is already work advanced which could happily be recycled, in case it is found useful. There is also interest shown in this matter in the Blender webpage.
From the user point of view, the physics engine could be either selected through the User Preferences Editor or in the very Physics Tag, in a collapsible list. Given the current Bullet features, already available, the ODE interface would provide a different solver approach. This would be applicable to the collision detection, the constraints and the general dynamics solver altogether. From the developer point of view, a Python API with access to the main classes is considered. Collision detection objects, constraints and their parameters would be made available to the developers to fiddle with. Also, a fully comprehensive documentation should be delivered. The idea is to make an approach to mechanics as easy and intuitive as possible, so that by using the library one can perfectly understand what is doing, without having to learn variational calculus or things of the like (and actually giving the way to understand it later, if desired). Exhaustive commenting would allow a proper doxygen set, and an scalable conceptual approach to the underlying principles.
The project would divide into four parts:
- Integration of the collision detection module.
This part requires the adaptation of Blender geometry data to each of the different ODE primitives.
- Integration of the constraints.
Here the eight types of joints provided by ODE would be integrated into Blender. Also the rest of non-joint constraints would have to be adapted in order to be calculated by the solver.
- Integration of the ODE and Lagrangian solver.
This is the proper engine solver, where all the above is used to generate the new positions of the geometric models.
- Generation of the documentation
Apart from the exhaustive commenting of functions, from which a doxygen set would be generated, a set of tutorials in different scales of difficulty, properly explained and well referenced, is also mandatory.
- Preliminaries 1: 12th April-26th April (2 weeks)
Get to know Blender guts, API programming, source code revision
- Preliminaries 2: 26th April-24th May (4 weeks)
Community bounding period
- Part 1: 24th May-14th June (3 weeks)
Collision detection module implementation
- Part 2: 14th June-5th July(3 weeks)
- Part 3: 5th July-26th July (3 weeks)
Solver and graphical output integration
- Part 4: 26th July-16th August (3 weeks)
Testing and tutorial creation. Documenting and referencing.
I graduated as architect in Spain in 2002. Ever since, I have worked with CAD packages ad nauseam, specially with Autocad and 3DStudio in different professional practices of every size. After a period in London where I attended the MSC course in Computing and Design at the University of East London, became an enthusiast on graphic design programming of any kind. A couple of years ago, I founded my own company (mnbvlabs: http:www.mnbvlabs.com), from where I provided professional consultancy to architectural practices desiring to increase their productivity. Currently I am on a study recess doing my PhD Thesis "Structural Design Optimization using Stochastic Simulation and Lagrangian Dynamics". This is to be presented in the Universidad Politecnica de Catalunya in the near future (two years). For this I have been researching during the last year and now I am in the phase of implementing a graphic environment where all this is applicable. So far I have done experiments integrating the Bullet Library with OGRE and proposed myself for improving Bullet documentation through their doxygen set. I have coded for years on demand customizations of AutoCad in VB and C++. Unfortunately, this has kept me away from open-source projects given professional requirements, so I cannot provide any references on this topic. Nonetheless, I am conscious of the need of a proper graphic environment for the purposes of my PhD thesis, given the nature of the engineering exercise, and I am not interested at all in keeping it away from the open source community. This is what leads me to consider Open Source environments as one of the main targets of my thesis, altogether with a reliable dynamics solver.