Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 关于光栅化后显示的x-axis和y-axis的朝向问题

Viewing 4 reply threads
  • Author
    Posts
    • #3107 Score: 0
      Yinda Xu
      Participant
      -1 pt

      您好,我构建好矩阵之后,显示结果如01.png所示,本应朝上的三角形现在是朝下的。
      于是我把三角形改成:(3, 0, -2), (0, 1, -2), (-2, 0, -2),显示结果如02.png所示,和预期的结果关于原点中心对称的。
      我的疑问是,这是否和rasterizer中设定的x-axis和y-axis的朝向有关?

      Attachments:
      You must be logged in to view attached files.
    • #3122 Score: 0
      Shi YuChen(助教)
      Keymaster
      4 pts

      并不是,在闫老师的推导过程中,相机lookat方向是-z,而在main函数中调用get_projection_matrix函数时给的zNear和zFar都是正数,所以关于原点中心对称了。
      你可以试着把main函数中两次调用的zNear和zFar改为正数试试。

      • #3172 Score: 0
        Angus
        Participant
        23 pts

        您是不是打错了,最后一句应该是「改成负数试试」吧

    • #3176 Score: 0
      杰哥
      Participant
      2 pts

      为什么zNear和zFar是正数会导致三角形倒过来呢?相机看向-z的时候,我感觉三角形倒过来像是y写反的结果。
      这中间的道理能否再解释一下。

      • #3212 Score: 0
        slongle(助教)
        Keymaster
        13 pts

        投影那步,那个相似关系,x’=x*n/z,n和z是定义在一个系里面的。代码里n和f是对摄像机定义的,是正的也很正常,但是n,f对于z就不在一个系里面了。

    • #3210 Score: 0
      DirtyCandy
      Participant

      附议哇哈哈钙奶的提问

    • #3228 Score: 0
      sublimation
      Participant
      3 pts

      看到助教是从物理的角度来解释,我是从数值计算的角度来考虑的,分享一下我的思考,不一定正确,求讨论。

      (x,y,z,1)经过将视锥压到长方体的矩阵计算后,坐标变为(nx,ny,(n+f)z-nf,z),这个时候,如果n是正,z为负,那么就会改变x,y的正负号。

      另外,如果n,f是正,还有两个影响的地方:
      1.将视锥压到长方体的时候,三角形的顶点坐标是在视锥外的,而且是视锥相对在原点的对侧,做了同样的变换后,感觉像是关于原点的小孔成像一样的变换(比例不太一样)。所以,再经过正交投影后可以有图形,我觉得是一个巧合,恰好经过将视锥压到长方体的矩阵计算后,还落在了长方体内,这样才在最后的结果有了成像(z的改变,可能会造成变换后不在这个长方形内,可能就看不到了。而且如果这个z是接近于0,那么三角形会非常大,如果趋近于无穷,又会非常小)
      2.如果n,f是正的,那么n->1,f->-1],变成f->1,n-1。(这个我是自己推断,不知道是否真的是这样)

      • This reply was modified 4 years, 8 months ago by sublimation.
      • #3233 Score: 0
        sublimation
        Participant
        3 pts

        不好意思,好几个打错的地方,,见谅。

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