gpt4 book ai didi

c++ - 如何使用具有网格三角形绝对坐标和光线开始/结束的 rayTestSingle?

转载 作者:行者123 更新时间:2023-11-30 04:27:18 25 4
gpt4 key购买 nike

我创建了一个简单的btCollisionShape(来自一个三角形的 triMesh):

btTriangleMesh *mTriMesh = new btTriangleMesh();

btVector3 v0(1, 1,0);
btVector3 v1(-1,-1,0);
btVector3 v2(1,-1,0);

mTriMesh->addTriangle(v0,v1,v2);

btCollisionShape *mTriMeshShape = new btBvhTriangleMeshShape(mTriMesh,true);

我已经创建了ClosestRayResultCallback

btVector3 Start(-1, -1,-1);
btVector3 End(1,1,1);

btCollisionWorld::ClosestRayResultCallback RayCallback(Start, End);

我如何执行 btCollisionWorld::rayTestSingle在我的 btCollisionShape 上有我的射线开始和结束但没有应用转换?

与此同时,我在整个世界上尝试了 rayccast(我实际上不需要),但似乎我做错了 =(因为我看不到 hasHit:

int i;

btDefaultCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration();

btCollisionDispatcher* dispatcher = new btCollisionDispatcher(collisionConfiguration);

btBroadphaseInterface* overlappingPairCache = new btDbvtBroadphase();

btSequentialImpulseConstraintSolver* solver = new btSequentialImpulseConstraintSolver;

btDiscreteDynamicsWorld* World = new btDiscreteDynamicsWorld(dispatcher,overlappingPairCache,solver,collisionConfiguration);

btTriangleMesh *mTriMesh = new btTriangleMesh();

btVector3 v0(1, 1,0);
btVector3 v1(-1,-1,0);
btVector3 v2(1,-1,0);

mTriMesh->addTriangle(v0,v1,v2);

btCollisionShape *mTriMeshShape = new btBvhTriangleMeshShape(mTriMesh,true);
btCollisionObject *mTriMeshCO = new btCollisionObject ();

mTriMeshCO->setCollisionShape(mTriMeshShape);
World->addCollisionObject(mTriMeshCO);
btVector3 End(-1, -1,-1);
btVector3 Start(1,1,1);

btCollisionWorld::ClosestRayResultCallback RayCallback(Start, End);

World->rayTest(Start, End, RayCallback);

if(RayCallback.hasHit()) {
btVector3 End = RayCallback.m_hitPointWorld;
btVector3 Normal = RayCallback.m_hitNormalWorld;

// Do some clever stuff here
}

最佳答案

enter image description here

请看上图。我试图画出你的三角形和光线转换 vector 。光线转换 vector 与 XY 平面相交于 (0,0,0)。现在,点 (0,0,0) 实际上位于三角形的边上。如果命中位于边缘,则光线转换算法返回 HitTest true 取决于实现。如果您正在对此进行测试,为什么不尝试使用修改后的光线转换 vector ,您确定它会击中其中的三角形?

关于c++ - 如何使用具有网格三角形绝对坐标和光线开始/结束的 rayTestSingle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11005594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com