Problem with first program with bullet (solved)

Post Reply
Oskar
Posts: 2
Joined: Thu Jul 29, 2010 12:29 pm

Problem with first program with bullet (solved)

Post by Oskar »

Hi,

I try to make a simple test of a ray wth a mesh:

Code: Select all

#include <iostream>
#include <BulletCollision\CollisionDispatch\btCollisionWorld.h>
#include <btBulletCollisionCommon.h>
#include <BulletCollision\NarrowPhaseCollision\btConvexCast.h>
#include "Raytest.h"
using namespace std;



int main()
{

	btVector3 v1; v1.setX(0.0f); v1.setY(0.0f); v1.setZ(-1.0f);


	btVector3 v2; v2.setX(0.0f); v2.setY(0.0f); v2.setZ(1.0f);


	btVector3 v3; v1.setX(-1.0f); v1.setY(-1.0f); v1.setZ(0.0f);


	btVector3 v4; v1.setX(1.0f); v1.setY(-1.0f); v1.setZ(0.0f);


	btVector3 v5; v1.setX(0.0f); v1.setY(1.0f); v1.setZ(0.0f);

	btDefaultCollisionConfiguration*        m_collisionConfiguration;
	btCollisionDispatcher*					m_dispatcher;
	btAxisSweep3*							m_overlappingPairCache;
	btCollisionWorld*						m_collisionWorld;


	m_collisionConfiguration = new btDefaultCollisionConfiguration();
	m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
	btVector3 worldMin(-1000,-1000,-1000);
	btVector3 worldMax(1000,1000,1000);
	m_overlappingPairCache = new btAxisSweep3(worldMin,worldMax);
	m_collisionWorld = new btCollisionWorld(m_dispatcher,m_overlappingPairCache,m_collisionConfiguration);


	btCollisionObject * mybtCollisionObject = new btCollisionObject();

	btTriangleMesh myMesh(true,true);
	myMesh.addTriangle(v3,v4,v5,false);

	m_collisionWorld->addCollisionObject(mybtCollisionObject);
	btCollisionWorld::ClosestRayResultCallback resultCallback(v1,v2);

	btBvhTriangleMeshShape *mybtBvhTriangleMeshShape  = new btBvhTriangleMeshShape(&myMesh,true,true);

	mybtCollisionObject->setCollisionShape(mybtBvhTriangleMeshShape); 

	m_collisionWorld->rayTest(v1, v1, resultCallback);

	cout << resultCallback.hasHit();


	int z;
	cin >> z;


	return 1;
}

I allways get 0 as output. What did I make wrong?
(Sorry if my english is bad. It is not my native language)
Last edited by Oskar on Fri Jul 30, 2010 10:24 am, edited 1 time in total.
Dirk Gregorius
Posts: 861
Joined: Sun Jul 03, 2005 4:06 pm
Location: Kirkland, WA

Re: Problem with first program with bullet

Post by Dirk Gregorius »

Propably because v3-v5 are not initialized correctly and therefore v1 is also not correct (Copy - Paste error)
Oskar
Posts: 2
Joined: Thu Jul 29, 2010 12:29 pm

Re: Problem with first program with bullet

Post by Oskar »

Dirk Gregorius wrote:Propably because v3-v5 are not initialized correctly and therefore v1 is also not correct (Copy - Paste error)
Thank you!

Now it works. Here is the code... perhaps someone else need it too.

Code: Select all

#include <iostream>
#include <BulletCollision\CollisionDispatch\btCollisionWorld.h>
#include <btBulletCollisionCommon.h>
#include <BulletCollision\NarrowPhaseCollision\btConvexCast.h>
using namespace std;



int main()
{

   //Ray
   btVector3 v1; v1.setX(0.0f); v1.setY(0.0f); v1.setZ(-10.0f);
   btVector3 v2; v2.setX(0.0f); v2.setY(0.0f); v2.setZ(2.0f);


   //Triangle
   btVector3 v3; v3.setX(-1.0f); v3.setY(-1.0f); v3.setZ(0.0f);
   btVector3 v4; v4.setX(1.0f); v4.setY(-1.0f); v4.setZ(0.0f);
   btVector3 v5; v5.setX(0.0f); v5.setY(1.0f); v5.setZ(0.0f);

   btDefaultCollisionConfiguration*        m_collisionConfiguration;
   btCollisionDispatcher*               m_dispatcher;
   btAxisSweep3*                     m_overlappingPairCache;
   btCollisionWorld*                  m_collisionWorld;


   m_collisionConfiguration = new btDefaultCollisionConfiguration();
   m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
   btVector3 worldMin(-1000,-1000,-1000);
   btVector3 worldMax(1000,1000,1000);
   m_overlappingPairCache = new btAxisSweep3(worldMin,worldMax);
   m_collisionWorld = new btCollisionWorld(m_dispatcher,m_overlappingPairCache,m_collisionConfiguration);


   btCollisionObject * mybtCollisionObject = new btCollisionObject();

   btTriangleMesh* myMesh = new btTriangleMesh(true,false);
   myMesh->addTriangle(v3,v4,v5,false);

   btBvhTriangleMeshShape *mybtBvhTriangleMeshShape  = new btBvhTriangleMeshShape(myMesh,true,true);

   mybtCollisionObject->setCollisionShape(mybtBvhTriangleMeshShape); 

   btCollisionWorld::ClosestRayResultCallback resultCallback(v1,v2);

   m_collisionWorld->addCollisionObject(mybtCollisionObject);
  
   m_collisionWorld->rayTest(v1, v2, resultCallback);

   cout << resultCallback.hasHit();


   int z;
   cin >> z;


   return 1;
}
Post Reply