2015-01-22 2 views
0

Ogre3D 및 Bullet Physics를 사용하여 친구들과 게임을하고 있습니다. 나는 우리 게임 캐릭터를 움직일 수 있었다 (단지 간단한 달리기와 돌리기).Ogre3D 및 BulletPhysics로 강체 본문을 최적화하는 방법

은 내가이 클래스에서 '점프'구현할 수 있습니다 같아요

btCollisionWorld::ClosestRayResultCallback res(btFrom, btTo);. 

것은 그러나, 내 큰 문제는 충돌 최적화입니다.

내가 시도 :

  • 하나 staticplanecollision 개체 (접지)
  • 한 문자 오브젝트 강체 (우리는 우리의 게임에 mapobject 이러한 변경 후)

    1. 100 ~ 500 강체 개체를 추가

    평면 이동 전용 FPS는 60 ~ 80 = ok입니다. 그러나 내 캐릭터가 다른 강체 개체와 충돌 할 때 FPS는 7로 떨어집니다.

    이 문제를 해결할 생각은 없습니다. DynamicCharacterController 또는 KineticCharacterController을 사용하고 있지 않습니다. 문자가 setLinearVelocity()rigidbody->getWorldTransform().setRotation(quat) 기능

    좀 더 정보에 의해 제어됩니다 즉 귀하의 경우라면, 나도 몰라 내가 전에이 문제를 했어

    PhysicsManager::GetInstance()->getDynamicsWorld()->stepSimulation(evt.timeSinceLastFrame,8); 
    
  • 답변

    0

    ,하지만 우리는 저주를 구현했다 (게임) 우리가 주방을 모델링했을 때 우리는 스토브의 메쉬를 충돌 객체 (btDbvtTriangleMeshShape)로 사용할 때마다 캐릭터가 스토브에 가까워 질 때마다 FPS가 내려갔습니다 ...

    해결책은 간단한 충돌 셰이프를 사용하는 것이 었습니다 각 스토브 (btCompound와 같은 상자 몇 개)에 대해 FPS 문제가 해결되었습니다.

    문제가 유사하므로 사용중인 충돌 셰이프의 복잡성을 줄임으로써 해결할 수 있기를 바랍니다.

    그렇지 않은 경우 문자를 처리 할 때 실행하는 코드를 표시하십시오. 또한 KinematicCharacterController를 사용하는 것이 좋으며 Bullet에서 PhysX로 이동하는 것이 더 좋습니다 (D).

    최고.

    +0

    네 도움에 감사드립니다. 나는 그것을 시도 할 것이다 :) –