2

나는 총알에 새롭다. 아마도 나는 기본적인 문제가있다. 나는 굴곡 핀이 떨어지는 것을 시뮬레이션하려고하지만, 추락 한 후에는 힘이 추가되지 않고 스스로 일어나고 있습니다.불릿 물리학 센터와 이상한 물체 반응

어디에서 실수했는지 궁금합니다. 누구든지 도와 주시면 감사하겠습니다. 여기

는 어떻게되는지 보여주는 비디오입니다 : https://www.sendspace.com/file/78tncr

을 여기에 내가 바닥에 추가하는 방법입니다

tTransform l; 
l.setIdentity(); 
l.setOrigin(btVector3(0,0,0)); 
btStaticPlaneShape* plane=new btStaticPlaneShape(btVector3(0,1,0),0); 
btMotionState* motion=new btDefaultMotionState(l); 
btRigidBody::btRigidBodyConstructionInfo info(0.0,motion,plane); 
btRigidBody* body=new btRigidBody(info); 
world->addRigidBody(body); 
bodies.push_back(body); 

를이 내가 bolwing 핀을 추가하는 방법입니다

btRigidbodyaddBolw (float x, float y , float z,float mass) 
{ 
btTransform t; 
t.setIdentity(); 
t.setOrigin(btVector3(x,y,z)); 
btTriangleMesh * tmptri= new btTriangleMesh(); 
//this is simply reading from std::vector, where I have vertex of a shape 
for(int i=0;i<=faces.size()-3;i=i+3) 
{ 
    if(faces[i].wektor==-100) 
    { 
     i=i-2; 
     continue; 
    } 
    btVector3 vertex1(vertexy[faces[i].wektor].GetX(), vertexy[faces[i].wektor].GetY(), vertexy[faces[i].wektor].GetZ()); 
    btVector3 vertex2(vertexy[faces[i+1].wektor].GetX(), vertexy[faces[i+1].wektor].GetY(), vertexy[faces[i+1].wektor].GetZ()); 
    btVector3 vertex3(vertexy[faces[i+2].wektor].GetX(), vertexy[faces[i+2].wektor].GetY(), vertexy[faces[i+2].wektor].GetZ()); 

    tmptri->addTriangle(vertex1, vertex2, vertex3); 
} 
btConvexShape *tmpshape = new btConvexTriangleMeshShape(tmptri); 
btShapeHull *hull = new btShapeHull(tmpshape); 
btScalar margin = tmpshape->getMargin(); 
hull->buildHull(margin); 
btConvexHullShape* simplifiedConvexShape = new btConvexHullShape(); 
for (int i=0;i<hull->numVertices();i++) 
{ 
    simplifiedConvexShape->addPoint(hull->getVertexPointer()[i]); 
} 
delete tmpshape; 
delete hull; 
btMotionState * motion = new btDefaultMotionState(t); 
btVector3 inertia(0,0,0); 
if(mass!=0.0) 
    simplifiedConvexShape->calculateLocalInertia(mass,inertia); 
btRigidBody::btRigidBodyConstructionInfo info(mass,motion,simplifiedConvexShape,inertia); 
btRigidBody* body=new btRigidBody(info); 
world->addRigidBody(body); //and let the world know about it 
bodies.push_back(body); //to be easier to clean, I store them a vector 
return body; 
} 

I을 핀, 질량, 마찰 및 배상의 변화 모양을 시도했지만 아무것도 헤 뿌리지 않았고, 질량 중심을 변경할 수있는 방법이 있습니까? 아마도 도움이 될까요?

+0

"sendspace"사이트에서 mp4를 다운로드하도록 초대하고, 시도 할 때 나에게 dmg을 보내려고합니다. dmg는 무해 할지도 모르지만 나는 만지지 않을 것입니다. – Beta

답변

1

이것은 볼링 핀의베이스에서 또는 근처에서 피벗 포인트/변환 원점을 갖는 모델에 의해 발생합니다. Bullet에서 강체 변형은 질량의 중심이므로 볼 수있는 것은 중력에 의한 질량 교정의 중점이며 핀을 똑바로 잡아 당기는 것입니다. 변환 원점 하체의 뚱보 부분의 중순이 될 것입니다 대량의 가능성이 센터 근처 어딘가에 있도록

    이 모델을 변경
  • :

    당신은 몇 가지 옵션이있다. 이것은 가장 쉬운 방법이지만 오프셋을 설명하기 위해 위치 코드를 변경해야 할 수도 있습니다.

  • btCompoundShape를 작성하여 btConvexHullShape을 랩핑하십시오. 이렇게하면 복합 모양 내의 모양을 변형 할 수 있습니다. 여기에 대한 토론이 있습니다 : http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=6244&f=9&t=1506