从变换矩阵向右向上向量前进
Getting Forward Right Up Vector From Transformation Matrix
如何从转换矩阵中获取前向、右向和向上向量?
我想以这些向量为基础,对不同方向的刚体施加力。
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});
如何从转换矩阵中获取前向、右向和向上向量?
我想以这些向量为基础,对不同方向的刚体施加力。
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});