Use the kF_UseGjkConvexCastRaytest for more accurate picking

fix upAxis in some demos
This commit is contained in:
erwincoumans
2018-10-27 11:38:38 -07:00
parent a44df2b0a6
commit bdda7af8d7
4 changed files with 6 additions and 3 deletions

View File

@@ -13,10 +13,10 @@ struct DrawGridData
int upAxis; int upAxis;
float gridColor[4]; float gridColor[4];
DrawGridData(int upAxis = 1) DrawGridData(int upAx = 1)
: gridSize(10), : gridSize(10),
upOffset(0.001f), upOffset(0.001f),
upAxis(upAxis) upAxis(upAx)
{ {
gridColor[0] = 0.6f; gridColor[0] = 0.6f;
gridColor[1] = 0.6f; gridColor[1] = 0.6f;

View File

@@ -10,6 +10,7 @@
#include "CommonGraphicsAppInterface.h" #include "CommonGraphicsAppInterface.h"
#include "CommonWindowInterface.h" #include "CommonWindowInterface.h"
#include "BulletCollision/NarrowPhaseCollision/btRaycastCallback.h"
struct CommonRigidBodyBase : public CommonExampleInterface struct CommonRigidBodyBase : public CommonExampleInterface
{ {
@@ -317,6 +318,7 @@ struct CommonRigidBodyBase : public CommonExampleInterface
btCollisionWorld::ClosestRayResultCallback rayCallback(rayFromWorld, rayToWorld); btCollisionWorld::ClosestRayResultCallback rayCallback(rayFromWorld, rayToWorld);
rayCallback.m_flags |= btTriangleRaycastCallback::kF_UseGjkConvexCastRaytest;
m_dynamicsWorld->rayTest(rayFromWorld, rayToWorld, rayCallback); m_dynamicsWorld->rayTest(rayFromWorld, rayToWorld, rayCallback);
if (rayCallback.hasHit()) if (rayCallback.hasHit())
{ {

View File

@@ -78,7 +78,7 @@ struct SimpleInternalData
m_ffmpegFile(0), m_ffmpegFile(0),
m_renderTexture(0), m_renderTexture(0),
m_userPointer(0), m_userPointer(0),
m_upAxis(0), m_upAxis(1),
m_customViewPortWidth(-1), m_customViewPortWidth(-1),
m_customViewPortHeight(-1) m_customViewPortHeight(-1)
{ {

View File

@@ -10753,6 +10753,7 @@ bool PhysicsServerCommandProcessor::pickBody(const btVector3& rayFromWorld, cons
//btCollisionWorld::ClosestRayResultCallback rayCallback(rayFromWorld, rayToWorld); //btCollisionWorld::ClosestRayResultCallback rayCallback(rayFromWorld, rayToWorld);
MyResultCallback rayCallback(rayFromWorld, rayToWorld); MyResultCallback rayCallback(rayFromWorld, rayToWorld);
rayCallback.m_flags |= btTriangleRaycastCallback::kF_UseGjkConvexCastRaytest;
m_data->m_dynamicsWorld->rayTest(rayFromWorld, rayToWorld, rayCallback); m_data->m_dynamicsWorld->rayTest(rayFromWorld, rayToWorld, rayCallback);
if (rayCallback.hasHit()) if (rayCallback.hasHit())
{ {