如何使用OpenGL知道所有顶点的当前坐标

a11xaf1n  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(175)

我正在使用Visual C++和OpenGL做一个程序。首先,这个程序加载一个.obj文件(例如一个立方体),然后,将这个对象旋转到任何Angular 。
旋转后,我想知道这个对象所有顶点的新坐标(x,y,z)。
如何使用OpenGL实现这一点?
我只想创建一个新的.obj文件,但所有顶点都有新的值。
新的.obj档最初必须显示相同的对象,但具有该旋转。
编辑:在这一刻,我能够加载.obj文件,然后旋转该对象没有任何问题。到目前为止,一切都运行得很完美。但是我不知道如何读取旋转后所有顶点到达的新坐标。

70gysomp

70gysomp1#

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

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
    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; 

}

相关问题