Jump to content

  • Log In with Google      Sign In   
  • Create Account


How can I use Bullet to affect the graphics


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 Indignant   Members   -  Reputation: 117

Like
0Likes
Like

Posted 07 December 2012 - 10:31 PM

Hello everyone!
I am sort of confused how to visualize this falling ball.
[source lang="cpp"]#ifdef __APPLE__#include <GLUT/glut.h>#else#include <GL/glut.h>#endif#include <stdlib.h>#include <iostream>#include <btBulletDynamicsCommon.h>static int slices = 16;static int stacks = 16;time_t last_update;static float timestep = 1/60;double fallY;/* GLUT callback Handlers */static void resize(int width, int height){ const float ar = (float) width / (float) height; glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity() ;}static void display(void){ const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; const double a = t*90.0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3d(0.8,0.77,0.7); glPushMatrix(); glTranslated(-2.4,1.2,-30); glRotated(60,1,0,0); time_t current_time = glutGet(GLUT_ELAPSED_TIME); time_t since_update = current_time - last_update; //if enough time has passed since the last redraw calculate physics if(since_update>timestep) { dynamicsWorld->stepSimulation(timestep,10); last_update = current_time; } btTransform trans; fallRigidBody->getMotionState()->getWorldTransform(trans); fallY = trans.getOrigin().getY(); glTranslated(0,0,fallY); glutSolidSphere(1,slices,stacks); glPopMatrix(); glutSwapBuffers();}static void key(unsigned char key, int x, int y){ switch (key) { case 27 : exit(0); break; } glutPostRedisplay();}static void idle(void){ glutPostRedisplay();}const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };const GLfloat high_shininess[] = { 100.0f };/* Program entry point */int main(int argc, char *argv[]){ glutInit(&argc, argv); glutInitWindowSize(640,480); glutInitWindowPosition(10,10); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("GLUT Shapes"); glutReshapeFunc(resize); glutDisplayFunc(display); glutKeyboardFunc(key); glutIdleFunc(idle); glClearColor(1,1,1,1); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); btBroadphaseInterface* broadphase = new btDbvtBroadphase(); btDefaultCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration(); btCollisionDispatcher* dispatcher = new btCollisionDispatcher(collisionConfiguration); btSequentialImpulseConstraintSolver* solver = new btSequentialImpulseConstraintSolver; btDiscreteDynamicsWorld* dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,broadphase,solver,collisionConfiguration); dynamicsWorld->setGravity(btVector3(0,-10,0)); btCollisionShape* groundShape = new btStaticPlaneShape(btVector3(0,1,0),1); btCollisionShape* fallShape = new btSphereShape(1); btDefaultMotionState* groundMotionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,-1,0))); btRigidBody::btRigidBodyConstructionInfo groundRigidBodyCI(0,groundMotionState,groundShape,btVector3(0,0,0)); btRigidBody* groundRigidBody = new btRigidBody(groundRigidBodyCI); dynamicsWorld->addRigidBody(groundRigidBody); btDefaultMotionState* fallMotionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,50,0))); btScalar mass = 1; btVector3 fallInertia(0,0,0); fallShape->calculateLocalInertia(mass,fallInertia); btRigidBody::btRigidBodyConstructionInfo fallRigidBodyCI(mass,fallMotionState,fallShape,fallInertia); btRigidBody* fallRigidBody = new btRigidBody(fallRigidBodyCI); dynamicsWorld->addRigidBody(fallRigidBody); glutMainLoop(); return EXIT_SUCCESS;}[/source]
When I compile the code I got the following errors:
COMPUTER\C++\CppMyProjects\HW\main.cpp||In function 'void display()':|
COMPUTER\C++\CppMyProjects\HW\main.cpp|49|error: 'dynamicsWorld' was not declared in this scope|
COMPUTER\C++\CppMyProjects\HW\main.cpp|54|error: 'fallRigidBody' was not declared in this scope|
||=== Build finished: 2 errors, 0 warnings ===|

What should I do?
Please help!
Thank you so much!

Sponsor:

#2 e‍dd   Members   -  Reputation: 2105

Like
0Likes
Like

Posted 07 December 2012 - 10:41 PM

If you have to use GLUT, you'll almost inevitably have to use a few global variables :(

Unless I've missed something every time I've used it... (?)

#3 RulerOfNothing   Members   -  Reputation: 1159

Like
0Likes
Like

Posted 07 December 2012 - 11:34 PM

You need to have the variables used in display to actually be global variables and declared before the display function.

#4 Indignant   Members   -  Reputation: 117

Like
0Likes
Like

Posted 08 December 2012 - 12:58 AM

Can any give some modified code?
Many thanks!!!

#5 Olof Hedman   Crossbones+   -  Reputation: 2711

Like
2Likes
Like

Posted 08 December 2012 - 02:36 AM

Can any give some modified code?
Many thanks!!!


Really?
If you don't know the difference between a local and a global variable, it's probably a good time to learn now.
http://lmgtfy.com/?q=global+vs+local+variable+c%2B%2B

#6 kunos   Crossbones+   -  Reputation: 2203

Like
0Likes
Like

Posted 08 December 2012 - 05:50 AM

What should I do?


forget about opengl, bullet, glut and all that and learn C++.
That is what you should do.
Stefano Casillo
Lead Programmer
TWITTER: @KunosStefano
AssettoCorsa - netKar PRO - Kunos Simulazioni

#7 ChrisRedd   Members   -  Reputation: 127

Like
0Likes
Like

Posted 08 December 2012 - 06:40 AM

Based on the errors, I'm guessing you either have a typo or haven't defined those functions.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS