3
스프링 컨센트 테이션 을 테스트하고 싶습니다. Bullet Physics. 그래서 땅 위에 떠있는 정적 상자와 그곳에 매달려있는 두 번째 동적 상자를 만들었습니다. 그러나 봄의 행동을 활성화시키는 것은 아무 것도하지 않습니다! 상자는 실제로 매달려 있습니다. 나는 그것이 자유롭게 회전하기 때문에 그것을 안다. 그러나 그것은 진동하지 않습니다.Bullet Physics로 스프링 제약을 만드는 방법은 무엇입니까?
btCollisionShape *boxShape = createBoxShape(0.2f, 0.2f, 0.2f);
btRigidBody *box1 = createStatic(boxShape);
btRigidBody *box2 = createDynamic(1.0f /*mass*/, boxShape);
box1->setWorldTransform(btTransform(btQuaternion::getIdentity(), { 0.0f, 2.0f, 1.0f }));
box2->setWorldTransform(btTransform(btQuaternion::getIdentity(), { 0.0f, 1.0f, 1.0f }));
btGeneric6DofSpring2Constraint *spring = new btGeneric6DofSpring2Constraint(
*box1, *box2,
btTransform(btQuaternion::getIdentity(), { 0.0f, -1.0f, 0.0f }),
btTransform(btQuaternion::getIdentity(), { 0.0f, 0.0f, 0.0f })
);
// I thought maybe the linear movement is locked, but even using these lines do not help.
// spring->setLinearUpperLimit(btVector3(0.0f, 0.1, 0.0f));
// spring->setLinearLowerLimit(btVector3(0.0f, -0.1, 0.0f));
// Enabling the spring behavior for they y-coordinate (index = 1)
spring->enableSpring(1, true);
spring->setStiffness(1, 0.01f);
spring->setDamping (1, 0.00f);
spring->setEquilibriumPoint();
무엇이 잘못 되었나요? Stiffness
및 Damping
매개 변수를 많이 사용했습니다. 그러나 그것은 아무것도 바뀌지 않았습니다. 선형 하한 및 상한을 설정하면 상자가 y 방향으로 움직일 수 있지만 여전히 진동하지는 않습니다. 그리고 예, 중력이 활성화됩니다.