[osg-users] Announcing osgWorks and osgBullet

Jan Ciger jan.ciger at gmail.com
Mon Nov 9 15:55:58 PST 2009


Hello Paul,

Paul Martz <pmartz at skew-matrix.com> wrote:
> My client and I considered and dismissed PAL as unusable and decided to
> focus directly on Bullet instead.

That was the same conclusion I have arrived to. The code is clearly way too 
Windows-centric to be usable, even though it actually does compile on Linux.

> As far as COLLADA goes, our original intent was to create large sets of
> collision shapes as an offline process, and selectively load them at
> runtime. However, midway through development, we discovered that the
> Bullet COLLADA loader was extremely inefficient, as much as 10 times
> slower than simply recreating the collision shapes at runtime. So
> osgBullet contains some support for COLLADA but it has really fallen
> into disuse at this point.

Oops. I was hoping for a working loader that could instantiate both the 
physics and geometry from the COLLADA file - this is something that is missing. 
Building simple geometries "by hand" is OK, but setting up a complex 
articulated structure with joints and such is a pain without a 3D modeling 
software. Blender does a reasonable job here and exports decent COLLADA file, 
now just to load it ... My thinking was to try to load the COLLADA using OSG 
loader, then load it using the Bullet's loader and finally connect the rigid 
bodies from Bullet with matching geometries in the scene graph by callbacks.

Re Bullet's COLLADA loader - it is quite bad, actually. Only yesterday I have   
submitted a bug fix patching a problem where the whole thing just crashes if 
you try to load a constraint from a COLLADA file and there are some bodies 
present in the world that weren't created by the COLLADA loader. It just 
assumes that everything has a valid pointer to the DOM node it came from and 
bombs if your manually created rigid body doesn't have one (since it was 
created manually). There is even an assert testing for this in the code ... 
The best part is that it searches through the whole list of already created 
bodies to create each of the constraints, no wonder it is slow.

I am attaching a compilation patch for osgBullet - it fixes an error about 
missing memcpy for me. I have tried to submit it as an issue on the tracker, 
but it always switches to some weird template where I have to provide a branch 
ID that I do not have and then promptly loses the content of the form.

I have also some issue compiling the solver example:
/opt/bullet/./src/BulletMultiThreaded/libBulletMultiThreaded.a(SpuGatheringCollisionTask.o): 
In function `ProcessSpuConvexConvexCollision(SpuCollisionPairInput*, 
CollisionTask_LocalStoreMemory*, SpuContactResult&)':
SpuGatheringCollisionTask.cpp:(.text+0x220): undefined reference to `vtable for 
btConvexPointCloudShape'
SpuGatheringCollisionTask.cpp:(.text+0x28a): undefined reference to `vtable for 
btConvexPointCloudShape'

I am not sure what is this about - the Bullet libraries are linked in 
correctly ...

Regards,

Jan

-------------- next part --------------
A non-text attachment was scrubbed...
Name: TripleBuffer.cpp.patch.zip
Type: application/zip
Size: 407 bytes
Desc: not available
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20091110/44e13f73/attachment.zip>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20091110/44e13f73/attachment.pgp>


More information about the osg-users mailing list