Modern OpenGL从零开始 – Fbxsdk::FbxAMatrix转换为glm::mat4
1 Fbxsdk与OpenGL中矩阵存储顺序的不同
Fbxsdk的文档说明了FbxAMatrix是行主序矩阵,而OpenGL或者说glm中的glm::mat4是列主序矩阵,所以二者进行转换时要进行转置。
2 Fbxsdk::FbxAMatrix转换为glm::mat4
glm::mat4 FbxModel::FbxMatToGlm(const FbxAMatrix& mat)
{
// row:列 column : 行
// Fbxsdk使用行主序存储矩阵,glm使用列主序存储矩阵,所以要进行转置
glm::vec4 c0 = glm::make_vec4((double*)mat.GetColumn(0).Buffer()); // 得到矩阵第一行数据
glm::vec4 c1 = glm::make_vec4((double*)mat.GetColumn(1).Buffer());
glm::vec4 c2 = glm::make_vec4((double*)mat.GetColumn(2).Buffer());
glm::vec4 c3 = glm::make_vec4((double*)mat.GetColumn(3).Buffer());
glm::mat4 convertMatr = glm::mat4(c0, c1, c2, c3);
return glm::transpose(convertMatr);
}
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Modern OpenGL从零开始 – Fbxsdk::FbxAMatrix转换为glm::mat4
原文链接:https://www.stubbornhuang.com/907/
发布于:2020年09月02日 14:26:23
修改于:2023年06月26日 22:16:57
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50