2014-02-23 2 views
1

총알에 대한 기본적인 질문을하는 것은 유감입니다. 그러나 문제가 있습니다. 여기에 설치가 있습니다 :Bullet에서 "질량"사용

나는 중력이없는 세계를 가지고 있습니다. 키를 누르면 세계 중심에 1x1x1 상자가 만들어집니다. 마우스 오른쪽 버튼을 클릭하면 0.05 * 0.05 * 0.05 크기의 상자가 카메라 위치에 만들어지고 찾고있는 방향으로 '촬영'됩니다. 여기서 문제가 시작됩니다.

작은 큐브가 큰 큐브에 도달하면 상호 작용이 잘못되었습니다. 작은 크기의 1/8000th 크기로 상자를 작게 만듭니다. 그러나 마치 같은 크기의 큐브를 가지고있는 것처럼 큰 큐브가 날아갑니다. 같은 질량의 두 물체를 모두 만들었 기 때문에 가정했습니다.

이것을 확인하려면 1 뉴턴 (또는 어떤 단위 총알이 사용하든간에)의 상향 력을 적용합니다. 두 개체는 같은 속도로 가속됩니다.

btMotionState *state = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, 0, 0))); 
btConvexHullShape* shape = new btConvexHullShape(); 
for(unsigned int i = 0; i < vertices.size(); ++i) { 
    shape->addPoint(toBt(vertices[i])); 
} 
shape->setMargin(0.01f); 

btScalar mass = 1.f; 
btVector3 inertia; 
shape->calculateLocalInertia(mass, inertia); 
shape->setMargin(0.01f); 
btRigidBody::btRigidBodyConstructionInfo ci(mass, state, shape, inertia); 
body = new btRigidBody(ci); 

은 내가 btScalar mass = 1.f; 라인이 범인이라고 예상 다음과 같이 객체를 생성하기위한

내 코드입니다.

내 물체의 질량을 계산할 것으로 예상됩니까? 이것은 큐브에 대해 충분히 간단하지만 이상한 볼록한 모양은 무엇입니까? 이 일을 위해 총알을 얻을 수있는 방법이 있습니까?

답변

2

예, 대량입니다. 큰 상자가 빈 나무 상자이고 작은 상자가 단단한 철 상자라고 생각하십시오. 크기면에서 큰 차이가 있지만 질량은 동일합니다. 이제 물리학이 정확 해 보였지, 그렇지?

예. 질량을 제공해야합니다. 당신이 그것을 계산하든, 단지 "이 상자의 무게는 20kg"이든 당신에게 달려 있습니다. 실제로 다른 사람이 질량을 계산할 것을 기대하면 문제가 악화됩니다. 왜냐하면 재질, 재료 밀도 및 재질 분포를 형상과 함께 지정해야하기 때문입니다. 그런 식으로 가고 싶다면 계산에 도움이되는 도구가 많이 있습니다. 그러나 시행 착오를 통해 일부 대중을 언급하는 것이 훨씬 쉽다는 데 동의 할 것입니다.

+0

그럼이 방법으로 질량 중심을 직접 계산해야 할 것입니다. 그렇지 않습니까? 그래서 (평범하지 않은 모양의 경우) 모양과 밀도를 알아야 할 필요가 있으며 시행 착오만으로는 충분하지 않습니다. – Rup

+0

답변 해 주셔서 감사합니다. 나는 convex hull volume을 계산하는데 약간의 시간을 투자하거나,'triangleMesh' 타입 객체로 전환해야 할 것입니다. 그런 식으로 내 데이터가 설정되므로 실제로 그렇게하는 것이 좋을 것이라고 생각합니다. – BWG

+0

@BWG 물체의 무게와 밀도보다는 물체의 무게를 아는 것이 훨씬 더 일반적입니다. 당신은 무엇을 모델링하고 있습니까? – weston