You can use it "out of the box" but keep in mind your project will need to link to the Bullet library.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?
BtOgre - Simple, Thin Bullet-Ogre Connection (now on git!)
- 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
- 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
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:
More exactly on:
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:
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.
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) 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_ACCESSIt'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:
This crash just gives me the creeps.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
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.
- nikki
- Old One
- Posts: 2730
- Joined: Sat Sep 17, 2005 10:08 am
- Location: San Francisco
- x 13
- Contact:
- 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
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);
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.
- 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
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:
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?
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;<--- HEREmVertexCount = 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?
- 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
Ok I found it. For some weird reason on Mac OS this:
does not return NULL although in fact it IS NULL. So after I commented the line:
Everything ran perfect again.
It might be problem of ogre not initializing this variable as NULL??
Code: Select all
mEntity->getMesh()->sharedVertexDataCode: Select all
addStaticVertexData (mEntity->getMesh()->sharedVertexData);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
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.toglia wrote:Ok I found it. For some weird reason on Mac OS this:does not return NULL although in fact it IS NULL. So after I commented the line:Code: Select all
mEntity->getMesh()->sharedVertexDataEverything ran perfect again.Code: Select all
addStaticVertexData (mEntity->getMesh()->sharedVertexData);
It might be problem of ogre not initializing this variable as NULL??
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
Hey Nikki
This is a really great wrapper, I love minimalistic code
.
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
So I changed that code to this
And now it works fine. Is this a glitch?
Here is the code I used to set the offset when creating my character.
This is a really great wrapper, I love minimalistic code
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;
}Code: Select all
virtual void getWorldTransform(btTransform &ret) const
{
ret = mTransform;
}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);- 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
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!
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
Can you please explain ? I'm struggling to make raw bullet work, and I'm wondering if I should use btogre...nikki wrote: BtOgre encourages raw Bullet usage.
-
jokoon
- Goblin
- Posts: 203
- Joined: Sun Aug 23, 2009 8:30 am
- x 3
Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git
Is btOgre suited if I only want to use collisions ?
- nikki
- Old One
- Posts: 2730
- Joined: Sat Sep 17, 2005 10:08 am
- Location: San Francisco
- x 13
- Contact:
-
coderaider249
- Gnoblar
- Posts: 1
- Joined: Wed Feb 08, 2012 5:28 pm
Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git
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
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 ?nikki wrote:BtOgre can help you make collision shapes out of Ogre meshes. The RigidBody and MotionState stuff is for dynamics.
- 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
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.
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.
- 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
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:
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?
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)))-
jokoon
- Goblin
- Posts: 203
- Joined: Sun Aug 23, 2009 8:30 am
- x 3
Re: BtOgre - Simple, Thin Bullet-Ogre Connection (now on git
nikki, about collisions/dynamics; What about the DebugDrawer ? Doesn't I need to rewrite it if I want to use collisions only ?
- 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
@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: 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
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.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!
Now my shape is shifted, it's not at the same position as my static mesh...
- 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
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.
- 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
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
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
and my errors.
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.aCode: 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
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
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- nikki
- Old One
- Posts: 2730
- Joined: Sat Sep 17, 2005 10:08 am
- Location: San Francisco
- x 13
- Contact: