Page 1 of 1

Complete Newbie

Posted: Sat May 17, 2014 7:29 pm
by infermachine
Hi, so I'm coming from a modest background with using bulletphysics in blender, but I want to go deeper.

I know this is vague, but what should I know in order to use bulletphysics to its full potential? I barely know how to build libraries, and after downloading the gzipped tar archive I can't even figure out how to run the demos (I have very little knowledge of C, the only "programming" I've done is a bit of python scripting in blender). So I'm thinking I should do some serious research before jumping in and asking a bunch of dumb questions on these forums! :oops:

I'm assuming I need to know:
-C programming (C++?)
-Basic terminal/bash commands (I'm on a mac, osx)
-Xcode (which I'm guessing will serve just as an environment to do C++)
-Compilers

What else would you add to the list? And where would be the best place to learn it? Recommend any books? Tutorials?

Thanks in advance, hope I'm not out of place!

Re: Complete Newbie

Posted: Mon May 19, 2014 9:19 pm
by Erwin Coumans
If you want to learn about game physics in general, have a look at those links:
http://brm.io/game-physics-for-beginners and http://allenchou.net/game-physics-series

If you want to learn about Bullet in particular, try to compile the demos and learn from them,
read the PDF manual or purchase this basic introduction book:
Learning Game Physics using Bullet and OpenGL:
http://www.amazon.com/Learning-Game-Phy ... ap_title_0

Good luck!
Erwin

Re: Complete Newbie

Posted: Mon May 19, 2014 11:34 pm
by infermachine
Thanks so much!

Cheers

Re: Complete Newbie

Posted: Thu May 22, 2014 9:47 pm
by infermachine
So I've written a few simple C++ programs, gotten GCC to compile them, and then tried to compile the bulletphysics demos... but I'm having trouble.

I'm using the command in terminal:

Code: Select all

g++ demofile.cpp 
with some includes (because it's not finding a LOT of the header files)

Code: Select all

-I/path 
... but I'm still getting errors

(eg I try to compile BasicDemo.cpp and get the following):

Code: Select all

Undefined symbols for architecture x86_64:
  "btAlignedFreeInternal(void*)", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
      BasicDemo::~BasicDemo() in basicdemo-ef2452.o
      btTypedConstraint::~btTypedConstraint() in basicdemo-ef2452.o
      btAlignedAllocator<btCollisionShape*, 16u>::deallocate(btCollisionShape**) in basicdemo-ef2452.o
      btAlignedAllocator<int, 16u>::deallocate(int*) in basicdemo-ef2452.o
      btAlignedAllocator<btTriangleInfo, 16u>::deallocate(btTriangleInfo*) in basicdemo-ef2452.o
      btAlignedAllocator<btHashInt, 16u>::deallocate(btHashInt*) in basicdemo-ef2452.o
      ...
  "btAlignedAllocInternal(unsigned long, int)", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
      btAlignedAllocator<btCollisionShape*, 16u>::allocate(int, btCollisionShape* const**) in basicdemo-ef2452.o
  "btBoxShape::btBoxShape(btVector3 const&)", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
  "btRigidBody::btRigidBody(btRigidBody::btRigidBodyConstructionInfo const&)", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
  "GLDebugDrawer::GLDebugDrawer()", referenced from:
      ___cxx_global_var_init in basicdemo-ef2452.o
  "GLDebugDrawer::~GLDebugDrawer()", referenced from:
      ___cxx_global_var_init in basicdemo-ef2452.o
  "DemoApplication::pickObject(btVector3 const&, btCollisionObject const*)", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::updateCamera()", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::mouseMotionFunc(int, int)", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::keyboardCallback(unsigned char, int, int)", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::setShootBoxShape()", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::setCameraDistance(float)", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
  "DemoApplication::removePickingConstraint()", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::myinit()", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::reshape(int, int)", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::renderme()", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::shootBox(btVector3 const&)", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::mouseFunc(int, int, int, int)", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "DemoApplication::~DemoApplication()", referenced from:
      GlutDemoApplication::~GlutDemoApplication() in basicdemo-ef2452.o
  "btDbvtBroadphase::btDbvtBroadphase(btOverlappingPairCache*)", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
  "GlutDemoApplication::swapBuffers()", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "GlutDemoApplication::specialKeyboard(int, int, int)", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "GlutDemoApplication::updateModifierKeys()", referenced from:
      vtable for BasicDemo in basicdemo-ef2452.o
  "btCollisionDispatcher::btCollisionDispatcher(btCollisionConfiguration*)", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
  "btDiscreteDynamicsWorld::btDiscreteDynamicsWorld(btDispatcher*, btBroadphaseInterface*, btConstraintSolver*, btCollisionConfiguration*)", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
  "btDefaultCollisionConfiguration::btDefaultCollisionConfiguration(btDefaultCollisionConstructionInfo const&)", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
  "btSequentialImpulseConstraintSolver::btSequentialImpulseConstraintSolver()", referenced from:
      BasicDemo::initPhysics() in basicdemo-ef2452.o
  "btClock::getTimeMicroseconds()", referenced from:
      DemoApplication::getDeltaTimeMicroseconds() in basicdemo-ef2452.o
  "btClock::reset()", referenced from:
      DemoApplication::getDeltaTimeMicroseconds() in basicdemo-ef2452.o
  "btTypedConstraint::serialize(void*, btSerializer*) const", referenced from:
      vtable for btTypedConstraint in basicdemo-ef2452.o
  "typeinfo for GlutDemoApplication", referenced from:
      typeinfo for BasicDemo in basicdemo-ef2452.o
  "_glClear", referenced from:
      BasicDemo::clientMoveAndDisplay() in basicdemo-ef2452.o
      BasicDemo::displayCallback() in basicdemo-ef2452.o
  "_glFlush", referenced from:
      BasicDemo::clientMoveAndDisplay() in basicdemo-ef2452.o
      BasicDemo::displayCallback() in basicdemo-ef2452.o
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
What am I doing wrong/ what is going on?
Thanks!

Re: Complete Newbie

Posted: Fri May 23, 2014 4:10 am
by Basroil
infermachine wrote: What am I doing wrong/ what is going on?
Thanks!
Sounds like you haven't set up the linking. I suggest going to your IDE's help page for that.

Re: Complete Newbie

Posted: Sat May 24, 2014 6:14 pm
by infermachine
Ok I've set up the linking in Xcode according to the info here:
http://www.bulletphysics.org/mediawiki- ... sing_XCode

Thanks!

Re: Complete Newbie

Posted: Tue May 27, 2014 6:40 pm
by bwelch
Definitely check out the demos and manual as stated above. You might also want to check out these videos. They can be a bit difficult to understand at times, but I found them useful for learning some basics of Bullet.

https://www.youtube.com/watch?v=wbu5MdsFYko

Re: Complete Newbie

Posted: Thu Jun 05, 2014 2:29 pm
by zbuffer
I am programming in Xcode.
To build Bullet you should use CMake. This is an application which will generate Xcode projects for the Bullet library and you will be able to build them with native compilers without any setup, all inside Xcode, not in terminal.