如何使用OpenGL知道所有顶点的当前坐标 我用Visual C++和OpenGL做了一个程序。首先,该程序加载一个.obj文件(例如立方体),然后将该对象旋转到任意角度

如何使用OpenGL知道所有顶点的当前坐标 我用Visual C++和OpenGL做了一个程序。首先,该程序加载一个.obj文件(例如立方体),然后将该对象旋转到任意角度,c++,opengl,C++,Opengl,旋转之后,我想知道这个对象所有顶点的新坐标(x,y,z) 如何使用OpenGL实现这一点 我只想创建一个新的.obj文件,但所有顶点都有新的值 新的.obj文件最初必须显示相同的对象,但具有该旋转 编辑: 在这一刻,我能够加载.obj文件,然后毫无问题地旋转该对象。到目前为止,一切都很顺利。但是,我不知道如何读取旋转后所有顶点到达的新坐标。因此您有一个与立方体关联的模型矩阵。旋转模型矩阵时,立方体方向将发生变化,但注意到这对立方体顶点位置没有影响。获取这些新旋转顶点的一种简单方法是迭代所有顶点,

旋转之后,我想知道这个对象所有顶点的新坐标(x,y,z)

如何使用OpenGL实现这一点

我只想创建一个新的.obj文件,但所有顶点都有新的值

新的.obj文件最初必须显示相同的对象,但具有该旋转

编辑:
在这一刻,我能够加载.obj文件,然后毫无问题地旋转该对象。到目前为止,一切都很顺利。但是,我不知道如何读取旋转后所有顶点到达的新坐标。

因此您有一个与立方体关联的模型矩阵。旋转模型矩阵时,立方体方向将发生变化,但注意到这对立方体顶点位置没有影响。获取这些新旋转顶点的一种简单方法是迭代所有顶点,将模型矩阵乘以每个位置:

for (int i = 0; i < vertices.size(); i++)
{
    // first convert each vertex position to a vec4 to allow for matrix multiplication
    vec4 pos(vertices.at(i).Position, 1.0f);
    // multiply vec4 vertex by the model matrix (mul. order is important)
    vec4 modelPos = model * pos;
    // convert back to a vec3
    vec3 newPos(modelPos[0], modelPos[1], modelPos[2]);
    // store it in a new vector
    updatedVertices.at(i).Position = newPos; 

}
for(int i=0;i
Hi Oscar。如果您展示您正在使用的数据、迄今为止尝试过的解决方案,然后确定该解决方案不起作用的原因,您将获得更多帮助。例如,“这是我的数据,当我尝试此转换时,只有x和y顶点旋转”嗨,汤姆,非常感谢你的评论。在这一刻,我能够加载.obj文件,然后毫无问题地旋转该对象。到目前为止,一切都很顺利。但是,我不知道如何读取旋转后所有顶点到达的新坐标。作为渲染旋转立方体的一部分,您的程序必须设置变换矩阵。找出如何从当前代码中提取此矩阵并将其应用于每个顶点。