如何从转换矩阵中获得前向,右向和向上向量?

我想以这些向量为基础,向不同方向的刚体施加力。

btTransform Trans = _RigidBody->getWorldTransform();

btVector3 Forward;  // ???
btVector3 Right;    // ???
btVector3 Up;       // ???

_RigidBody->activate(true);
//
//  Move forward/backward
_RigidBody->applyCentralForce(Forward * 5);
_RigidBody->applyCentralForce(-Forward * 5);
//
//  Jump
_RigidBody->applyCentralForce(Up * 5);
//
//  Move left/right
_RigidBody->applyCentralForce(Right * 5);
_RigidBody->applyCentralForce(-Right * 5);


我也有一个GLM模型矩阵,它本质上是glm::mat4内的子弹变换矩阵的副本,我可以在这里代替使用并将结果矢量转换为子弹,但宁愿留在子弹头中进行整个部分的操作。

最佳答案

您应该始终明确地说出正在使用的库。我假设您使用this

operator()为您提供变换后的矢量图像,因此我认为,以下内容可以满足您的要求:

btVector3 Forward = Trans(btVector3{1,0,0});

10-08 09:17