Complete Newbie

Post Reply
infermachine
Posts: 4
Joined: Sat May 17, 2014 7:16 pm

Complete Newbie

Post 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!
User avatar
Erwin Coumans
Site Admin
Posts: 4221
Joined: Sun Jun 26, 2005 6:43 pm
Location: California, USA
Contact:

Re: Complete Newbie

Post 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
infermachine
Posts: 4
Joined: Sat May 17, 2014 7:16 pm

Re: Complete Newbie

Post by infermachine »

Thanks so much!

Cheers
infermachine
Posts: 4
Joined: Sat May 17, 2014 7:16 pm

Re: Complete Newbie

Post 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!
Basroil
Posts: 463
Joined: Fri Nov 30, 2012 4:50 am

Re: Complete Newbie

Post 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.
infermachine
Posts: 4
Joined: Sat May 17, 2014 7:16 pm

Re: Complete Newbie

Post by infermachine »

Ok I've set up the linking in Xcode according to the info here:
http://www.bulletphysics.org/mediawiki- ... sing_XCode

Thanks!
bwelch
Posts: 48
Joined: Thu Dec 12, 2013 4:04 pm

Re: Complete Newbie

Post 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
zbuffer
Posts: 8
Joined: Sat Jan 05, 2013 11:13 am

Re: Complete Newbie

Post 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.
Post Reply