C++ 给定方向和位置,如何用GLM计算旋转矩阵
我正在计算一个模型矩阵,它可以传递给着色器。但是我不知道如何计算矩阵的旋转部分。我有两个向量:一个是位置,一个是朝向,下面是代码:C++ 给定方向和位置,如何用GLM计算旋转矩阵,c++,glm-math,C++,Glm Math,我正在计算一个模型矩阵,它可以传递给着色器。但是我不知道如何计算矩阵的旋转部分。我有两个向量:一个是位置,一个是朝向,下面是代码: glm::mat4x4 CalcModelMatrix( const glm::vec3& position, const glm::vec3& orientation ) { glm::mat4x4 model( 1.f ); // displacement model = glm::translate( model, positio
glm::mat4x4 CalcModelMatrix( const glm::vec3& position, const glm::vec3& orientation )
{
glm::mat4x4 model( 1.f );
// displacement
model = glm::translate( model, position );
// rotation
// ...
// scaling
model = glm::scale( model, glm::vec3( 1.f ) );
return model;
}
我尝试使用std::atan2来计算组件角度,然后一个接一个地应用这些角度,并使用计算出的上方向向量来应用glm::lookAt,但我无法理解 有了euler,你会吃亏的。你需要使用四元数 您需要根据旋转需要构建四元数,然后可以使用mat4旋转矩阵=四元数::toMat4(四元数)将其切换回mat4;实现完整的模型矩阵