如何使用等轴测透视进行渲染



可能重复:
利用opengl 实现真实等距投影

我想使用Blender3d使用的相同等轴测渲染进行渲染,如何做到这一点?只需要调用glMultMatrix()就可以了吗?我试着在谷歌上搜索,但找不到任何能产生这种渲染模式的工作矩阵。我试过这个http://en.wikipedia.org/wiki/Isometric_projection但这真的很奇怪。

这是我现在使用的矩阵,以正常视角渲染:

    GLdouble f = cotan(fovy/2.0);
    GLdouble aspect = (GLdouble)width/(GLdouble)height;
    IsoMatrix.x[0] = f/aspect;
    IsoMatrix.y[0] = 0;
    IsoMatrix.z[0] = 0;
    IsoMatrix.w[0] = 0;
    IsoMatrix.x[1] = 0;
    IsoMatrix.y[1] = f;
    IsoMatrix.z[1] = 0;
    IsoMatrix.w[1] = 0;
    IsoMatrix.x[2] = 0;
    IsoMatrix.y[2] = 0;
    IsoMatrix.z[2] = (zfar+znear)/(znear-zfar);
    IsoMatrix.w[2] = (2.0*zfar*znear)/(znear-zfar);
    IsoMatrix.x[3] = 0;
    IsoMatrix.y[3] = 0;
    IsoMatrix.z[3] = -1;
    IsoMatrix.w[3] = 0;
    glMultMatrixd((GLdouble *)&IsoMatrix);

我如何更改它,使其结果为:http://rvzenteno.files.wordpress.com/2008/10/rvz_018.jpg?

使用glOrtho然后旋转轴更容易:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, -10.0f, 10.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(35.264f, 1.0f, 0.0f, 0.0f);
glRotatef(-45.0f, 0.0f, 1.0f, 0.0f);

相关内容

  • 没有找到相关文章

最新更新