Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 关于透视投影矩阵的问题

Viewing 3 reply threads
  • Author
    Posts
    • #3033 Score: 0
      戴皓天
      Participant
      8 pts

      看了录播,感觉还是有点不太明白

      首先我来说一下我看懂的地方,perspective到orthographic的转换矩阵的构建我已经听明白了,跟着老师的思路能推出来ppt里的结果

      接下来说一下我比较疑惑的两点:
      1.第四节课讲了pers到ortho的转换,第五节课前半部分接着第四节课的最后讲了在把视锥体转换到正规立方体之后要对屏幕做怎样的拉伸,然后得到了一个“拉伸矩阵”(因为我不知道应该怎么称呼它,那么就姑且先这么叫吧),那么这个“拉伸矩阵”要怎么用起来呢?是这样用的吗:“拉伸矩阵” * pers到Ortho的转换矩阵 * 观察空间中的坐标。我不知道应该怎么应用这两个矩阵,有点晕,希望老师和大佬们能解答一下(ps:这样做的话从结果上来说应该是错的,我根据我的上述思路在作业1中编写了代码,但是显示明显不正确,具体显示的是一个很小的图形,已经小到根本看不清是什么东西了,总之肯定是错误的结果。虽然说肯定是错的,但是我还是想知道一下错误原因以及之前提到的应该怎么应用那两个矩阵)

      2.我之前看过一部分ravi教授的公开课《计算机图形学导论》,里面对透视投影矩阵的推导说的也不是特别清楚,尤其是推导gluPerspetive矩阵构成的时候(具体见附件图1),第四行第三列那里的值是-1,ravi教授在这里一笔带过没仔细讲,我也不是很理解,但是最让我疑惑的是这里和闫老师的推导有了一部分出入,闫老师的推导中(这里指的是pers到ortho的转换矩阵),第四行第三列是正的1,所以我想知道这里为什么会有差别,或者说两者根本没有关系?(因为问题1我还没解决,所以这里我也是一头雾水,或许你们解答了问题1我这里就会豁然开朗了)

      最后,提前感谢一下辛苦的老师和热心的同学,
      感谢回答和解决我的问题

      ps:希望教师团队能创建一个群,希望能和大家还有老师能及时地交流

      Attachments:
      You must be logged in to view attached files.
    • #3035 Score: 0
      zycliao
      Participant

      你说的拉伸矩阵是指viewport吗(lecture5的ppt第11页)?它的作用就是把范围-1~1的点缩放到0~图像尺寸。最终的算法是viewport*Ortho*Pers->Ortho*ModelView*原始坐标。Pers->Ortho把棱锥变成长方体,Ortho把长方体变成标准立方体,viewport把-1~1的正方形变成图片尺寸大小的矩形。

      • #3039 Score: 0
        戴皓天
        Participant
        8 pts

        哦哦,谢谢,原来还有一步Ortho变换,我之前以为是viewport*Pers->Ortho*ModelView*原始坐标(缺了一步ortho),所以错误了,现在流程想明白了,确实是缺了一步把长方体变成标准立方体的过程。很感谢。我再回去试试

    • #3040 Score: 0
      nightwatch
      Participant
      3 pts

      那个1和-1和左右手坐标系有关系,OpenGL在NDC里面是左手坐标系,闫老师推导过程中都是用的右手坐标系。

      • #3045 Score: 0
        戴皓天
        Participant
        8 pts

        噢噢谢谢,忘记了考虑这个问题XD。怪不得按闫老师推的没问题但就是和OpenGL的不一样。现在知道啦,以后会注意的

    • #3058 Score: 0
      戴皓天
      Participant
      8 pts

      已经成功啦,用glu的构成的话三角形是向上的,用老师的方法是向下的

      • #3069 Score: 0
        Shi YuChen(助教)
        Keymaster
        4 pts

        对于这个框架来说,照着闫老师的方法的确是上下颠倒的(其实应该是关于原点对称),这是因为在main函数里调用get_projection_matrix()函数时传入的zNear和zFar都是正数,而相机的lookat方向是-z。

        • #3076 Score: 0
          戴皓天
          Participant
          8 pts

          谢谢老师,已经把zNear和zFar改回负数了

Viewing 3 reply threads
  • You must be logged in to reply to this topic.