BulletPhysicsRBDSolverDOP
From Odwiki
Contents |
Open-Source Bullet Physics RBD Solver DOP
This is the wiki home of the Bullet Physics RBD DOP. It is a rigid body dynamics plugin using the Bullet open-source game physics engine.
Forum is here for reporting bugs, suggestions, requests, etc: http://forums.odforce.net/index.php?showforum=58
Current Release
The project is now hosted on gitorious: Bullet-Physics-Solver
The current releases were on the forum here: Releases!
Usage / Documentation
no documentation yet
Development
Building
- Build the Bullet libraries for your architecture.
- Download the latest bullet here - http://code.google.com/p/bullet/downloads/list
- There are instructions on how to build the Bullet libraries in there in various ways. I installed CMake and then ran
- Download the latest bullet here - http://code.google.com/p/bullet/downloads/list
%> cmake -G 'Unix Makefiles' %> make
- Download the latest odforce Bullet Physics RBD DOP sourcecode from sourceforge or from the forum thread (link above)
- in the src/ directory there is a simple compile.sh script. Modify the bullet library path to your own bullet library location (.eg. ~/code/bullet-2.743-alpha-trunk-r1444/)
- Move the .dso to your HOUDINI_PATH, probably ~/houdini9.5/dso/
- You should have the "Bullet Physics RBD Solver" DOP now available within Houdini.
'abs(fpreal)' is ambiguous errors
This type of compile error is solved by changing 'abs' to 'fabs', as shown below:
fallShape = new btCapsuleShape( fabs(bulletstate->getPrimRadius())
Roadmap
- World
- implemented, including multiple instance support, I think.
- Objects
- issue warning if objects are under 0.2 in size. Bullet don't like that.
- not implemented
- Ground Plane
- not implemented - need to figure out how to detect a specialized groundplane object - or not.. just use geometry.
- Primitive Sphere
- implemented, but don't know how to extract radius of a GEO_PrimSphere. Should probably get the BBox? The spheres in Bullet are true spheres, and so we have have to just get the UT_BoundingBox instead. The 10 coefficients in the UT_Quadric are pretty intense and can't be modeled in the Bullet sphere primitive - so I think we might just need to bbox it.
- implemented (with UT_BoundingBox)
- implemented, but don't know how to extract radius of a GEO_PrimSphere. Should probably get the BBox? The spheres in Bullet are true spheres, and so we have have to just get the UT_BoundingBox instead. The 10 coefficients in the UT_Quadric are pretty intense and can't be modeled in the Bullet sphere primitive - so I think we might just need to bbox it.
- MultiSphere
- implemented, buggy:)
- Meshes
- need to triangulate a copy and ensure we are safe with a mix'n'match of prim types
- Convex
- implemented
- Concave
- implemented (works well with bullet-2.73+ using the GImpact collider)
- Primitive Bounding Substitution
- need to add methods to be able to specify automated bounding of geometry with primitive spheres and boxes. added Bullet Data as a start for this.
- implemented
- use Autofit parameter to automatically try to align bounding prims with geometry
- implemented (for Boxes and Spheres, not Capsules)
- need to add methods to be able to specify automated bounding of geometry with primitive spheres and boxes. added Bullet Data as a start for this.
- Centre Of Mass: Need to covert everything to a CompoundShape, I think - in order to be able to define a COM. See this post.
- need to add computation of COM from geometry. perhaps we can use RBD_State::computeCOMfromGeometry() somehow? question is in to SESI.
- Point Objects
- need to read an "instance" attribute and use instanced shapes
- issue warning if objects are under 0.2 in size. Bullet don't like that.
- Forces
- Uniform Force
- implemented (with applyCentralForce())
- Gravity
- implemented (with setGravity())
- Point Force
- implemented (with applyForce())
- Field Force
- not implemented
- Uniform Force
- Physical Parameters
- Mass
- implemented, need to add computation of mass from volume*density.
- Friction, Restitution (bounce)
- implemented (non-animating - can these be animated in bullet?)
- Linear and Angular Damping
- need to define our own data for this.
- Mass
- Active State
- implemented by checking isStaticObject().. but there is bug which can make this be out of sync with the Bullet definition of isStatic(), making it assert due to trying to set velocities on a static object. Set the Mass to zero for now.
- Constraints
- not implemented
- Affector Matrix & Collide Relationship (left affects right,etc)
- not implemented
- Glue
- should be a btCompoundShape,I guess. I found this post: Ram Sampaths post
- not implemented
- should be a btCompoundShape,I guess. I found this post: Ram Sampaths post
- Impact record
- not implemented
Team
- JasonIversen
- TeamGraham!
We welcome anyone willing to help with this project! Please write in the forum if you're interested.
Acknowledgements
- DanielKramer - for his work on the ODE Solver; which was the starting point and great reference for this DOP.
- NafeesBinZafar and RyoSakaguchi - for their implementation experience and advice.



