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)