BtOgre - Simple, Thin Bullet-Ogre Connection (now on git!)

A place for users of OGRE to discuss ideas and experiences of utilitising OGRE in their games / demos / applications.
Post Reply
User avatar
toglia
Gnome
Posts: 336
Joined: Sat Dec 08, 2007 4:28 am
Location: Canada
x 7

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by toglia »

WhirledPeas wrote:Hi, I just found this little package and am interested in using it. I have a question. Do I have to build it before I use it or can I just use the headers and libraries straight out of the box?
You can use it "out of the box" but keep in mind your project will need to link to the Bullet library.
User avatar
toglia
Gnome
Posts: 336
Joined: Sat Dec 08, 2007 4:28 am
Location: Canada
x 7

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by toglia »

Hi! I have been using BtOgre for quite a while now and everything has gone quite smoothly, Thanks NIKKI!

But right now I'm trying to port my game to Mac OS X and everything was going perfect until I discovered a runtime crash on:

Code: Select all

void VertexIndexToShape::addStaticVertexData(const VertexData *vertex_data) 
More exactly on:

Code: Select all

if (!vertex_data)
    return;
const VertexData *data = vertex_data;
const unsigned int prev_size = mVertexCount;
mVertexCount += (unsigned int) data->vertexCount; <------- HERE; EXC_BAD_ACCESS
I really don't know what's happening, but it almost makes no sense to get a crash there. I compiled Bullet as a framework and everything was compiling and linking ok.

It's so weird that actually a couple of mesh CAN get loaded to the game, but after I load like the fourth one, I get a crash.

The game has recently executed perfectly in Linux, so I don't think the meshes itself can be the problem. This is part of the crash message:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000003e99d2ec

VM Regions Near 0x3e99d2ec:
IOKit 000000000ef4c000-00000000100d3000 [ 17.5M] rw-/rw- SM=ALI
-->
__TEXT 000000008f0c3000-000000008f7d8000 [ 7252K] r-x/rwx SM=COW /System/Library/Extensions/GeForceGLDriver.bundle/Contents/MacOS/GeForceGLDriver

Application Specific Information:
objc[6415]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 toglia3d.BingoCantadoVideoDebug 0x00050dbe BtOgre::VertexIndexToShape::addStaticVertexData(Ogre::VertexData const*) + 58 (BtOgre.cpp:37)
1 toglia3d.BingoCantadoVideoDebug 0x000515a1 BtOgre::StaticMeshToShapeConverter::addEntity(Ogre::Entity*, Ogre::Matrix4 const&) + 323 (BtOgre.cpp:412)
2 toglia3d.BingoCantadoVideoDebug 0x000516bd BtOgre::StaticMeshToShapeConverter::StaticMeshToShapeConverter(Ogre::Entity*, Ogre::Matrix4 const&) + 87 (BtOgre.cpp:381)
3 toglia3d.BingoCantadoVideoDebug 0x000b688b GameObjectManager::bindComponentTrimesh(std::string const&, std::string const&, Ogre::SceneManager*) + 193 (GameObjectManager.cpp:545)
4 toglia3d.BingoCantadoVideoDebug 0x00013c22 Parser3DS::loadPhysics(QDomElement, std::string const&, Ogre::SceneManager*, btDynamicsWorld*) + 3500 (Parser3DS.cpp:218)
5 toglia3d.BingoCantadoVideoDebug 0x00019a3d Parser3DS::parse(QString const&, Ogre::SceneManager*, btDynamicsWorld*) + 4893 (Parser3DS.cpp:112)
6 toglia3d.BingoCantadoVideoDebug 0x0002b6e6 Juego::initGame() + 23330 (Juego.cpp:359)
7 toglia3d.BingoCantadoVideoDebug 0x00038812 main + 4578 (Main.cpp:86)
8 toglia3d.BingoCantadoVideoDebug 0x00007ed9 _start + 224
9 toglia3d.BingoCantadoVideoDebug 0x00007df8 start + 40
This crash just gives me the creeps.

I'm using a Mac Mini with Mac OS Lion, Xcode 4.1, Nvidia Geforce 320M and 2Gb of RAM.

I would be very thankful for anyone givin hints. I just don't know where to start looking.
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13
Contact:

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by nikki »

Hey! Glad to see you're finding BtOgre useful, thanks for the nice words!

Can we see the code creates the mesh converter and uses it (probably the 'bindComponentTrimesh' function)?
User avatar
toglia
Gnome
Posts: 336
Joined: Sat Dec 08, 2007 4:28 am
Location: Canada
x 7

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by toglia »

nikki wrote:Hey! Glad to see you're finding BtOgre useful, thanks for the nice words!

Can we see the code creates the mesh converter and uses it (probably the 'bindComponentTrimesh' function)?

Code: Select all

	
//Check if gameObject was created
GameObject * gameObject = assertGameObject(name, true);
Ogre::Entity* entity = sceneManager->createEntity(mesh);
BtOgre::StaticMeshToShapeConverter converter(entity); //<--- For some extremely weird reason this method is making my gameObject to point to null. 
btBvhTriangleMeshShape * shape = converter.createTrimesh();
gameObject->attachCollisionTrimesh(shape);
I caught an early problem in StaticMeshToShapeConverter::addEntity cause mEntity->getParentNode() was returning NULL, so after that I'm not trusting any behaviour.

The GameObject class is a simple container of "Components". The constructor just creates a SceneNode, then you can attach Renderable Components, Collision Components, etc...

I really don't know how all of this adds up, cause StaticMeshToShapeConverter doesn't not even know about the existence of any GameObject... I'm starting to think that the root of the problem might be somewhere else and this is just a random behaviour of another memory interaction...


EDIT: Just checked again, sometimes it crashes on the first game object creation (getParentNode fails), sometimes it creates some but crashes in the addStaticVertexData method after a few. So its kind of random... I'll keep looking for more information.
User avatar
toglia
Gnome
Posts: 336
Joined: Sat Dec 08, 2007 4:28 am
Location: Canada
x 7

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by toglia »

Ok. I went back to the basics and tried compiling and running your btOgre demo (the one in github). Again I'm using a Mac OS Lion 10.7.1, GCC x86 32 bits, Ogre 1.7.3 and current Bullet physics 2.79 r2440. I have also successfully been able to build other ogre apps with my current configuration. Bullet demos are working correctly too!

It crashes on the same line BtOgre::VertexIndexToShape::addStaticVertexData when creating physics for Player:

Code: Select all

		if (!vertex_data) 
			return;

		const VertexData *data = vertex_data;

		const unsigned int prev_size = mVertexCount;
		mVertexCount += (unsigned int)data->vertexCount;<--- HERE
Some debug Info:
mVertexCount = 0;
vertex_data has an apparent logical memory address but the debugger won't show any values on any of the member variables so I think vertex_data might be the problem...

I tried updating the mesh to Ogre version 1.7.3. Same crash.

What do you think?
User avatar
toglia
Gnome
Posts: 336
Joined: Sat Dec 08, 2007 4:28 am
Location: Canada
x 7

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by toglia »

Ok I found it. For some weird reason on Mac OS this:

Code: Select all

mEntity->getMesh()->sharedVertexData
does not return NULL although in fact it IS NULL. So after I commented the line:

Code: Select all

addStaticVertexData (mEntity->getMesh()->sharedVertexData);
Everything ran perfect again.

It might be problem of ogre not initializing this variable as NULL??
shanewho
Gnoblar
Posts: 4
Joined: Sun Oct 23, 2011 7:05 pm
x 1

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by shanewho »

toglia wrote:Ok I found it. For some weird reason on Mac OS this:

Code: Select all

mEntity->getMesh()->sharedVertexData
does not return NULL although in fact it IS NULL. So after I commented the line:

Code: Select all

addStaticVertexData (mEntity->getMesh()->sharedVertexData);
Everything ran perfect again.

It might be problem of ogre not initializing this variable as NULL??
I'm having the same problem (on OSX) and I have some more details (although I still don't have a good solution). Commenting out the addStaticVertexData works if your mesh doesn't use sharedVertexData. If it does, then BtOgre will crash when you call BtOgre::StaticMeshToShapeConverter.createTrimesh() because mVertexCount == 0. This seems to be why some meshes work, and others don't. I'm using Blender 2.59 and the blender2ogre exporter to create my meshes. That particular exporter creates meshes with sharedVertexData where the older exporter creates meshes that DON'T use sharedVertexData. The 2.49 meshes work fine, but the 2.59 meshes crash. I'm not sure why the sharedVertexData pointer is messed up (if it's blender2ogre exporter, ogre, or just ogre on OSX). But one current workaround is to comment out the code as toglia mentioned, AND make sure your meshes don't use shared vertex data.

See this comment for more details: http://www.ogre3d.org/forums/viewtopic. ... 84#p442884
UVmatician
Gnoblar
Posts: 1
Joined: Sat Jul 30, 2011 1:31 am

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by UVmatician »

Hey Nikki

This is a really great wrapper, I love minimalistic code :D.
I think I found and fixed a glitch but I'm not sure.

I was making a dynamic character controller and the origin for the mesh was at its base, at the character's feet.
So I decided that I needed to give my motion state an offset so that it could handle that origin.

Unfortunately this caused erratic results until I noticed that the offset in the motion state was being used for something else besides just offsetting the mesh. It was being used here in BTOgrePG

Code: Select all

virtual void getWorldTransform(btTransform &ret) const 
        {
            ret = mCenterOfMassOffset.inverse() * mTransform;
        }
So I changed that code to this

Code: Select all

virtual void getWorldTransform(btTransform &ret) const 
        {
            ret = mTransform;
        }
And now it works fine. Is this a glitch?

Here is the code I used to set the offset when creating my character.

Code: Select all

//Create BtOgre MotionState (connects Ogre and Bullet).
		btTransform startOffset = btTransform::getIdentity();
		btTransform startTransform;
		startTransform.setOrigin(BtOgre::Convert::toBullet(position));		
		startOffset.setOrigin(btVector3(0.0,Shape_Index.back()->getMargin() * -1,0.0));

		BtOgre::RigidBodyState *ninjaState = new BtOgre::RigidBodyState(Node_Index.back(),startTransform,startOffset);
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13
Contact:

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by nikki »

Yep, it turns out that was a mistake. 'mTransform' is the value before transforming by COM (as shown by the code in 'setWorldTransform()', mTransform is set to the input value and not transformed by COM). So there's no need to inverse-COM it while getting the world transform.

Thanks!

EDIT: Updated on GitHub!
jokoon
Goblin
Posts: 203
Joined: Sun Aug 23, 2009 8:30 am
x 3

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by jokoon »

nikki wrote: BtOgre encourages raw Bullet usage. :D
Can you please explain ? I'm struggling to make raw bullet work, and I'm wondering if I should use btogre...
jokoon
Goblin
Posts: 203
Joined: Sun Aug 23, 2009 8:30 am
x 3

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by jokoon »

Is btOgre suited if I only want to use collisions ?
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13
Contact:

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by nikki »

BtOgre can help you make collision shapes out of Ogre meshes. The RigidBody and MotionState stuff is for dynamics.
coderaider249
Gnoblar
Posts: 1
Joined: Wed Feb 08, 2012 5:28 pm

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by coderaider249 »

Hi, Im trying to compile btOgre with Ogre 1.7.3 and bullet 2.79 but it's giving me those errors

Code: Select all

1>------ Build started: Project: btogre, Configuration: Debug Win32 ------
1>  BtOgre.cpp
1>c:\programming\libraries\bullet-2.79\src\linearmath\btMatrix3x3.h(61): error C2711: 'btMatrix3x3::btMatrix3x3' : this functon cannot be compiled as managed, consider using #pragma unmanaged
1>          Aligned data types not supported in managed code
1>          c:\programming\libraries\bullet-2.79\src\linearmath\btMatrix3x3.h(63) : see source of the previous compiler diagnostic
1>c:\programming\libraries\bullet-2.79\src\linearmath\btMatrix3x3.h(66): error C3821: 'btMatrix3x3::btMatrix3x3(const btMatrix3x3 &)': managed type or function cannot be used in an unmanaged function
1>          Aligned data types not supported in managed code
1>..\..\BtOgre.cpp(211): warning C4244: '=' : conversion from 'double' to 'Ogre::Real', possible loss of data
1>..\..\BtOgre.cpp(710): warning C4244: 'initializing' : conversion from 'double' to 'const Ogre::Real', possible loss of data
1>..\..\BtOgre.cpp(755): warning C4244: 'argument' : conversion from 'double' to 'const Ogre::Real', possible loss of data
1>..\..\BtOgre.cpp(756): warning C4244: 'argument' : conversion from 'double' to 'const Ogre::Real', possible loss of data
1>..\..\BtOgre.cpp(757): warning C4244: 'argument' : conversion from 'double' to 'const Ogre::Real', possible loss of data
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

do I need to use any specific version of bullet for this?
jokoon
Goblin
Posts: 203
Joined: Sun Aug 23, 2009 8:30 am
x 3

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by jokoon »

nikki wrote:BtOgre can help you make collision shapes out of Ogre meshes. The RigidBody and MotionState stuff is for dynamics.
Is there a specific kind of bullet object suited for static mesh, I mean like things that don't move at all, like a level, a building etc ?
User avatar
Waruck
Goblin
Posts: 210
Joined: Mon Dec 12, 2011 12:52 pm
Location: Germany
x 34

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by Waruck »

btBvhTriangleMeshShape is what you're looking for. This is a hirachically built collisionshape out of an arbitary mesh that doesn't deform or move. (Ogre doesn't support collisions between two of those shapes).
The shape can be as large as you like and still be efficient thanks to its hirachically implementation. Calculating this hirachically tree can be slow, but once it is calculated it can be stored to data and later read.

http://www.ogre3d.org/tikiwiki/BulletMeshStrider this class can be used to built this shape out of a Ogre Mesh. I think btOgre already has this built in.

There exists a scaled version of this shape to have one instance with multiple local scalings, however I encounerd problems with collision-normals be calculated false. So i recommend you to just use multiple instances of this shape if you want to have multiple versions in different scaling.
User avatar
Commando125
Gnoblar
Posts: 2
Joined: Mon Mar 12, 2012 12:02 pm
Location: United States

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by Commando125 »

Hello nikki,

I compiled your btOgre wrapper along with Ogre 1.7.4 and Bullet 1.8.0 in Visual Studio 2010, which compiled successfully. I added the wrapper into my project and added some test code, but the problem I am having is that the debug drawer is not drawing the collision boxes in the same spot as my Ogre scene node is. When I first turn the debug drawer on, create the scene nodes, and start the Bullet world, it draws the collision box where the scene node initially is. But after I move the motion state with:

Code: Select all

ogreHeadRigidBody->getMotionState()->setWorldTransform(btTransform(btQuaternion(0,0,0,1),btVector3(5,10,15)))
the scene node moves to the position (5,10,15), but the collision box drawn by the debug drawer stays where it is initially. I am calling debugDrawer->step(); and mPhyWorld->debugDrawWorld(); on every simulation step of the physics world. Am I missing something that is required to sync the collision box with the scene node?
jokoon
Goblin
Posts: 203
Joined: Sun Aug 23, 2009 8:30 am
x 3

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by jokoon »

nikki, about collisions/dynamics; What about the DebugDrawer ? Doesn't I need to rewrite it if I want to use collisions only ?
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13
Contact:

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by nikki »

@Commando125: Hmm, that's weird. It works for me - I just tried a project I'm working on with the latest libraries. Try doing 'body->setWorldTransform(...)' instead of doing it through the motion state. Also, do you have many cases where you need to 'teleport' a body like this as opposed to simply adding forces and such? BTW, sorry for the late reply - I was busy with midterms, but have spring break now!

@jokoon: To be honest I have yet to try BtOgre simply for collisions and no dynamics, but I don't see why the debug drawer shouldn't work in this case. Let us know if you face any problems!
jokoon
Goblin
Posts: 203
Joined: Sun Aug 23, 2009 8:30 am
x 3

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by jokoon »

nikki wrote: @jokoon: To be honest I have yet to try BtOgre simply for collisions and no dynamics, but I don't see why the debug drawer shouldn't work in this case. Let us know if you face any problems!
I copied pasted the DebugDrawer class and adaptated it to use btCollisionWorld instead of btDynamicsWorld, and it works, just don't forget to call setDebugDrawer on your world.
Now my shape is shifted, it's not at the same position as my static mesh...
User avatar
Commando125
Gnoblar
Posts: 2
Joined: Mon Mar 12, 2012 12:02 pm
Location: United States

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by Commando125 »

When I tried setWorldTransform on the body instead of on the motion state, I get the same problem that jokoon has. The bullet mesh moves but the Ogre static mesh doesn't. When I do it through the motion state, the Ogre static mesh moves but the bullet mesh doesn't (according to the visuals in the debug drawer). I also wanted to use Bullet as a collision library instead of for dynamic physics simulation.
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13
Contact:

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by nikki »

When you say 'static mesh', do you mean it's a trimesh or otherwise a Bullet RigidBody with the static flag set? I think the way to move these around is to remove the RigidBody from the world, change its position, and re-add it. Static bodies shouldn't really be moved around much.
Pierrick584
Halfling
Posts: 42
Joined: Tue Jun 28, 2011 3:56 am

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by Pierrick584 »

Hello, i'm trying to integrate BtOgre in my app, and i get linking issue, wondering if i miss parts of bullet, or maybe wrong linking order.. or dunno what!
i never realy used even bullet so, its hard to figure out the missing parts of it.

here's the files i have linked

Code: Select all

libBulletCollision.a
libBulletDynamics.a
libBulletMultithreaded.a
libBulletSoftBody.a
libBulletSoftBodySolvers_OpenCL_Mini.a
and my errors.

Code: Select all

Linking console executable: gamesandbox
obj/Release/src/BtOgre.o: In function `
BtOgre::VertexIndexToShape::createSphere()':
BtOgre.cpp:(.text+0x4f8): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
BtOgre.cpp:(.text+0x57a): undefined reference to `btAlignedFreeInternal(void*)'
obj/Release/src/BtOgre.o: In function `BtOgre::VertexIndexToShape::createBox()':
BtOgre.cpp:(.text+0x628): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
BtOgre.cpp:(.text+0x695): undefined reference to `btAlignedFreeInternal(void*)'
obj/Release/src/BtOgre.o: In function `BtOgre::VertexIndexToShape::createCylinder()':
BtOgre.cpp:(.text+0x748): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
BtOgre.cpp:(.text+0x7b5): undefined reference to `btAlignedFreeInternal(void*)'
obj/Release/src/BtOgre.o: In function `BtOgre::VertexIndexToShape::createConvex()':
BtOgre.cpp:(.text+0x7f9): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
BtOgre.cpp:(.text+0x846): undefined reference to `btAlignedFreeInternal(void*)'
obj/Release/src/BtOgre.o: In function `BtOgre::VertexIndexToShape::createTrimesh()':
BtOgre.cpp:(.text+0x8a0): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
BtOgre.cpp:(.text+0x95b): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
BtOgre.cpp:(.text+0x9db): undefined reference to `btAlignedFreeInternal(void*)'
BtOgre.cpp:(.text+0x9ef): undefined reference to `btAlignedFreeInternal(void*)'
obj/Release/src/BtOgre.o: In function `BtOgre::AnimatedMeshToShapeConverter::createAlignedBox(unsigned char, Ogre::Vector3 const&, Ogre::Quaternion const&)':
BtOgre.cpp:(.text+0xd36): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
BtOgre.cpp:(.text+0xd78): undefined reference to `btAlignedFreeInternal(void*)'
obj/Release/src/BtOgre.o: In function `BtOgre::AnimatedMeshToShapeConverter::createOrientedBox(unsigned char, Ogre::Vector3 const&, Ogre::Quaternion const&)':
BtOgre.cpp:(.text+0x1210): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
BtOgre.cpp:(.text+0x1244): undefined reference to `btAlignedFreeInternal(void*)'
obj/Release/src/BtOgre.o: In function `btAlignedObjectArray<int>::clear()':
BtOgre.cpp:(.text._ZN20btAlignedObjectArrayIiE5clearEv[btAlignedObjectArray<int>::clear()]+0x41): undefined reference to `btAlignedFreeInternal(void*)'
obj/Release/src/BtOgre.o: In function `btTriangleInfoMap::~btTriangleInfoMap()':
BtOgre.cpp:(.text._ZN17btTriangleInfoMapD2Ev[_ZN17btTriangleInfoMapD5Ev]+0xf1): undefined reference to `btAlignedFreeInternal(void*)'
BtOgre.cpp:(.text._ZN17btTriangleInfoMapD2Ev[_ZN17btTriangleInfoMapD5Ev]+0x101): undefined reference to `btAlignedFreeInternal(void*)'
BtOgre.cpp:(.text._ZN17btTriangleInfoMapD2Ev[_ZN17btTriangleInfoMapD5Ev]+0x111): undefined reference to `btAlignedFreeInternal(void*)'
obj/Release/src/BtOgre.o:BtOgre.cpp:(.text._ZN17btTriangleInfoMapD2Ev[_ZN17btTriangleInfoMapD5Ev]+0x121): more undefined references to `btAlignedFreeInternal(void*)' follow
obj/Release/src/TutorialApplication.o: In function `PcApplication::createScene()':
TutorialApplication.cpp:(.text+0x112d): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
TutorialApplication.cpp:(.text+0x1476): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btBoxShape.o): In function `btBoxShape::~btBoxShape()':
btBoxShape.cpp:(.text._ZN10btBoxShapeD0Ev[_ZN10btBoxShapeD5Ev]+0x15): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btBvhTriangleMeshShape.o): In function `btBvhTriangleMeshShape::~btBvhTriangleMeshShape()':
btBvhTriangleMeshShape.cpp:(.text+0xfc3): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btBvhTriangleMeshShape.o): In function `btBvhTriangleMeshShape::~btBvhTriangleMeshShape()':
btBvhTriangleMeshShape.cpp:(.text+0x1013): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btBvhTriangleMeshShape.o): In function `btBvhTriangleMeshShape::setLocalScaling(btVector3 const&)':
btBvhTriangleMeshShape.cpp:(.text+0x10c7): undefined reference to `btAlignedFreeInternal(void*)'
btBvhTriangleMeshShape.cpp:(.text+0x10d6): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
devlibs/bullet/libBulletCollision.a(btBvhTriangleMeshShape.o): In function `btBvhTriangleMeshShape::btBvhTriangleMeshShape(btStridingMeshInterface*, bool, bool)':
btBvhTriangleMeshShape.cpp:(.text+0x117b): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
devlibs/bullet/libBulletCollision.a(btBvhTriangleMeshShape.o): In function `btBvhTriangleMeshShape::btBvhTriangleMeshShape(btStridingMeshInterface*, bool, btVector3 const&, btVector3 const&, bool)':
btBvhTriangleMeshShape.cpp:(.text+0x125b): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
devlibs/bullet/libBulletCollision.a(btBvhTriangleMeshShape.o): In function `btBvhTriangleMeshShape::buildOptimizedBvh()':
btBvhTriangleMeshShape.cpp:(.text+0x140d): undefined reference to `btAlignedFreeInternal(void*)'
btBvhTriangleMeshShape.cpp:(.text+0x141c): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
devlibs/bullet/libBulletCollision.a(btBvhTriangleMeshShape.o): In function `btBvhTriangleMeshShape::~btBvhTriangleMeshShape()':
btBvhTriangleMeshShape.cpp:(.text+0x1028): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btConvexHullShape.o): In function `btConvexHullShape::btConvexHullShape(float const*, int, int)':
btConvexHullShape.cpp:(.text+0x820): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
btConvexHullShape.cpp:(.text+0x941): undefined reference to `btAlignedFreeInternal(void*)'
btConvexHullShape.cpp:(.text+0x966): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btConvexHullShape.o): In function `btConvexHullShape::addPoint(btVector3 const&)':
btConvexHullShape.cpp:(.text+0xac1): undefined reference to `btAlignedFreeInternal(void*)'
btConvexHullShape.cpp:(.text+0xadd): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
devlibs/bullet/libBulletCollision.a(btConvexHullShape.o): In function `btConvexHullShape::~btConvexHullShape()':
btConvexHullShape.cpp:(.text._ZN17btConvexHullShapeD2Ev[_ZN17btConvexHullShapeD5Ev]+0x69): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btConvexHullShape.o): In function `btConvexHullShape::~btConvexHullShape()':
btConvexHullShape.cpp:(.text._ZN17btConvexHullShapeD0Ev[_ZN17btConvexHullShapeD5Ev]+0x71): undefined reference to `btAlignedFreeInternal(void*)'
btConvexHullShape.cpp:(.text._ZN17btConvexHullShapeD0Ev[_ZN17btConvexHullShapeD5Ev]+0x67): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btConvexInternalShape.o): In function `btConvexInternalShape::~btConvexInternalShape()':
btConvexInternalShape.cpp:(.text._ZN21btConvexInternalShapeD0Ev[_ZN21btConvexInternalShapeD5Ev]+0x15): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btConvexInternalShape.o): In function `btConvexInternalAabbCachingShape::~btConvexInternalAabbCachingShape()':
btConvexInternalShape.cpp:(.text._ZN32btConvexInternalAabbCachingShapeD0Ev[_ZN32btConvexInternalAabbCachingShapeD5Ev]+0x15): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btConvexShape.o):btConvexShape.cpp:(.text+0x108): more undefined references to `btAlignedFreeInternal(void*)' follow
devlibs/bullet/libBulletCollision.a(btOptimizedBvh.o): In function `btOptimizedBvh::build(btStridingMeshInterface*, bool, btVector3 const&, btVector3 const&)::QuantizedNodeTriangleCallback::internalProcessTriangleIndex(btVector3*, int, int)':
btOptimizedBvh.cpp:(.text+0x3aa): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
btOptimizedBvh.cpp:(.text+0x3db): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btOptimizedBvh.o): In function `btOptimizedBvh::build(btStridingMeshInterface*, bool, btVector3 const&, btVector3 const&)::NodeTriangleCallback::internalProcessTriangleIndex(btVector3*, int, int)':
btOptimizedBvh.cpp:(.text+0x71c): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
btOptimizedBvh.cpp:(.text+0x7a3): undefined reference to `btAlignedFreeInternal(void*)'
devlibs/bullet/libBulletCollision.a(btOptimizedBvh.o): In function `btOptimizedBvh::build(btStridingMeshInterface*, bool, btVector3 const&, btVector3 const&)':
btOptimizedBvh.cpp:(.text+0xbd1): undefined reference to `btAlignedFreeInternal(void*)'
btOptimizedBvh.cpp:(.text+0xbe1): undefined reference to `btAlignedFreeInternal(void*)'
btOptimizedBvh.cpp:(.text+0xd33): undefined reference to `btAlignedAllocInternal(unsigned long, int)'
Process terminated with status 1 (0 minutes, 9 seconds)
50 errors, 9 warnings
Arkiruthis
Gremlin
Posts: 178
Joined: Fri Dec 24, 2010 7:55 pm
x 10

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by Arkiruthis »

Include Bullet's LinearMath library when linking as well. Pretty sure all the other libs depend on it to some extent.
Pierrick584
Halfling
Posts: 42
Joined: Tue Jun 28, 2011 3:56 am

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by Pierrick584 »

Thanks, it did fix some issue, now i have new linking errors though, aint sure if that'd be about the linking order or something else missing : \

Code: Select all

Linking console executable: gamesandbox
devlibs/bullet/libBulletCollision.a(btPolyhedralConvexShape.o): In function `btPolyhedralConvexShape::initializePolyhedralFeatures()':
btPolyhedralConvexShape.cpp:(.text+0xbcb): undefined reference to `btConvexHullComputer::compute(void const*, bool, int, int, float, float)'
devlibs/bullet/libBulletDynamics.a(btTypedConstraint.o): In function `btRigidBody::~btRigidBody()':
btTypedConstraint.cpp:(.text._ZN11btRigidBodyD2Ev[_ZN11btRigidBodyD5Ev]+0x78): undefined reference to `btCollisionObject::~btCollisionObject()'
btTypedConstraint.cpp:(.text._ZN11btRigidBodyD2Ev[_ZN11btRigidBodyD5Ev]+0x5e): undefined reference to `btCollisionObject::~btCollisionObject()'
devlibs/bullet/libBulletDynamics.a(btTypedConstraint.o): In function `btRigidBody::~btRigidBody()':
btTypedConstraint.cpp:(.text._ZN11btRigidBodyD0Ev[_ZN11btRigidBodyD5Ev]+0x59): undefined reference to `btCollisionObject::~btCollisionObject()'
btTypedConstraint.cpp:(.text._ZN11btRigidBodyD0Ev[_ZN11btRigidBodyD5Ev]+0x80): undefined reference to `btCollisionObject::~btCollisionObject()'
devlibs/bullet/libBulletDynamics.a(btRigidBody.o): In function `btRigidBody::serialize(void*, btSerializer*) const':
btRigidBody.cpp:(.text+0x10d): undefined reference to `btCollisionObject::serialize(void*, btSerializer*) const'
devlibs/bullet/libBulletDynamics.a(btRigidBody.o): In function `btRigidBody::btRigidBody(float, btMotionState*, btCollisionShape*, btVector3 const&)':
btRigidBody.cpp:(.text+0x30fd): undefined reference to `btCollisionObject::btCollisionObject()'
btRigidBody.cpp:(.text+0x328d): undefined reference to `btCollisionObject::~btCollisionObject()'
devlibs/bullet/libBulletDynamics.a(btRigidBody.o): In function `btRigidBody::btRigidBody(btRigidBody::btRigidBodyConstructionInfo const&)':
btRigidBody.cpp:(.text+0x32b5): undefined reference to `btCollisionObject::btCollisionObject()'
btRigidBody.cpp:(.text+0x3313): undefined reference to `btCollisionObject::~btCollisionObject()'
devlibs/bullet/libBulletDynamics.a(btRigidBody.o):(.rodata._ZTI11btRigidBody[typeinfo for btRigidBody]+0x10): undefined reference to `typeinfo for btCollisionObject'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 15 seconds)
11 errors, 9 warnings
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13
Contact:

Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git

Post by nikki »

Link in the order: dynamics, collision, linearmath.
Post Reply