Code: Select all
btCollisionShape* groundShape = new btBvhTriangleMeshShape(tMesh, useQuantization);
btTransform groundTransform
groundTransform.setIdentity();
groundTransform.setOrigin(btVector3(0, 0, 0));
compound->addChildShape(groundTransform, groundShape);
btQuaternion quaternion = btQuaternion(m_yaw * RADIANS_PER_DEGREE, m_pich * RADIANS_PER_DEGREE, m_roll* RADIANS_PER_DEGREE);
groundTransform.setRotation(quaternion);
btScalar mass(0);
Code: Select all
for (int j = mp_btDynamicsWorld->getNumCollisionObjects() - 1; j >= 0; j--)
{
int m = 1;
btCollisionObject* obj = mp_btDynamicsWorld->getCollisionObjectArray()[j];
btRigidBody* body = btRigidBody::upcast(obj);
body->getCenterOfMassPosition();
btQuaternion qua = body->getOrientation();
btVector3 angul(1, 1, 1);
btTransform trans;
btMatrix3x3 matrix33 = trans.getBasis();
btVector3 angularVelocity(0, 0, 0);
trans.setIdentity();
btQuaternion quaternion = btQuaternion(m_yaw * RADIANS_PER_DEGREE, m_pich * RADIANS_PER_DEGREE, m_roll* RADIANS_PER_DEGREE);
if (body && body->getMotionState())
{
body->getMotionState()->getWorldTransform(trans);
}
else
{
trans = obj->getWorldTransform();
}
m_trajectory[m_tra++].setValue(float(trans.getOrigin().getX()), float(trans.getOrigin().getY()), float(trans.getOrigin().getZ()));
if (j == mp_btDynamicsWorld->getNumCollisionObjects() - 1)
{
trans.setRotation(quaternion);
body->setCenterOfMassTransform(trans);
glPushMatrix();
glRotatef(m_yaw, 0.0, 1.0, 0.0);
glRotatef(m_pich, 1.0, 0.0, 0.0);
glRotatef(m_roll, 0.0, 0.0, 1.0);
DrawMesh();
glPopMatrix();
}
Code: Select all
switch (event->key())
{
case Qt::Key_Escape:
close();
update();
break;
case Qt::Key_PageUp:
m_yaw -= 0.2f;
update();
break;
The rotation angle can be increased through keyboard events. I hope the rigid body can rotate faster. In addition to increasing the degree of yaw, what else can I do? Thank you very much.