[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