내 응용 프로그램의 큰 메쉬에서 btBvhTriangleMeshShape를 만들고 리지드 바디로 사용하려고합니다. 이 딱딱한 몸체는 고정되어 움직이지 않는 '접지면'을 구성합니다. 문제는 심지어 거기에없는 것처럼 모든 것이 곧바로 빠져 나간다는 것입니다. 여기에 전류 소스입니다 : 빨리 강체를 만들 단지 도우미 함수글 머리 기호 btBvhTriangleMeshShape가 충돌하지 않습니다.
btTriangleMesh* tMesh = new btTriangleMesh();
irr::scene::IMeshBuffer* MB = WorldNode1->getMesh()->getMeshBuffer(1);
irr::video::S3DVertex* Vertices = (irr::video::S3DVertex*)MB->getVertices();
irr::u16* Indices = MB->getIndices();
for (irr::u32 i = 0; i < MB->getIndexCount(); i+=3)
{
irr::core::vector3df Tri1Pos = Vertices[Indices[i]].Pos;
irr::core::vector3df Tri2Pos = Vertices[Indices[i+1]].Pos;
irr::core::vector3df Tri3Pos = Vertices[Indices[i+2]].Pos;
tMesh->addTriangle(btVector3(Tri1Pos.X, Tri1Pos.Y, Tri1Pos.Z), btVector3(Tri2Pos.X, Tri2Pos.Y, Tri2Pos.Z), btVector3(Tri3Pos.X, Tri3Pos.Y, Tri3Pos.Z));
}
btCollisionShape* groundShape = new btBvhTriangleMeshShape(tMesh, false);
btDefaultMotionState* groundMotionState = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, -1, 0)));
PH->CreateRigidBody(0, groundMotionState, groundShape);
PH -> CreateRigidBody(), 나는 다른 객체를 사용하고 잘 충돌하기 때문에이 기능이 제대로 작동 알고있다.
여기에 대한 모든 통찰력은 크게 감사하겠습니다. 시간 내 주셔서 대단히 감사합니다.
편집 : 그리고 여기 해명 는 위의 샷 : 여기 디버그 서랍 (이 메쉬 아래에서 샷) 무엇가 표시됩니다 접선 후
내가 돈이 ' 메쉬 자체 나 물리 메쉬를 만들기 위해 꼭지점을 반복하는 코드가 있는지 확인하십시오.
무엇이 바닥을 떨어 뜨리는 걸까요? 디버그 뷰를 켜서 발생하지 않았는지 확인 했습니까? – weston
그래, 내가 가서 디버그 뷰를 연결하고 바닥은 있어야합니다. – KKlouzal
녹색이 삼각형이고 빨간색이 바인딩 볼륨이라고 생각합니다. 바닥이 어떻게 보이는지 설명 할 수 있습니다. 마치 틈새가 많은 것처럼 보이기 때문에 실제로는 대부분 틈이 있습니다. 그래서 나는 많은 것이 떨어지는 것에 놀라지 않을 것입니다. – weston