Viewing 1 reply thread
  • Author
    Posts
    • #3311 Score: 0
      MingWang
      Participant

      我的结果是参考答案绕原点旋转了180度,不知道为什么。然后手册中说“为了方便同学们写代码,我们将 z 进行了反转,保证都是正数,并且越大表示离视点越远。”这个Z的反转没懂,是不是调整相机向+Z方向看,这样Z越大离视点越远?然后就是这个反转在框架代码中怎么体现的?

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

      图片错了,是这样的。。。

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

        这个关于原点对称的问题我向闫老师咨询过,是因为当时编写这个代码框架的时候使用的是左手系而导致的,所以颠倒的结果没关系,也算对的。
        另外,在进行过投影之后z的取值范围变为[-1,1],在rasterizer.cpp的83行的vert.z() = vert.z() * f1 + f2将z的值放大且均变为正数。

        • #3376 Score: 0
          sublimation
          Participant
          3 pts

          助教好,我想请教您一下,这里vert.z() = vert.z() * f1 + f2,应该是对z进行了缩放和平移,请问一下翻转的代码在哪里表示呢?就是使得z越大,深度越深的反转。谢谢啦!

          • #3378 Score: 0
            Angus
            Participant
            23 pts

            +1
            我也好奇哪一部分代码涉及了z轴的反转

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

            不好意思,检查代码的时候没有注意,应该改为vert.z() = -vert.z() * f1 + f2,或者初始化z-buffer时初始成-infinite。

            • #3417 Score: 0
              sublimation
              Participant
              3 pts

              好的好的,谢谢啦~辛苦了!

        • #3405 Score: 0
          BubbleInPit
          Participant

          助教你好,我有一个疑问,给的两个三角形的z值分别为-5和-2,-5离原点更远,也应当被z值为-2的三角形盖住。在我的代码里,-5经过正交投影后变为-0.983968,-2经过正交投影后变为-0.975379,当这两个值经过vert.z() = vert.z() * f1 + f2的变换,会导致-5对应的z值比-2对应的z值要小,也就是说,此时-5对应的这个三角形离原点更近了,而它本应该更远。请问这是我的正交投影计算出错吗?

          • #3410 Score: 2
            Shi YuChen(助教)
            Keymaster
            4 pts

            你计算的没错,是我们检查框架时没有注意。应该把rasterizer.cpp第83行的vert.z() = vert.z() * f1 + f2改为vert.z() = -vert.z() * f1 + f2

            This post has received 2 votes up.
            • #3413 Score: 0
              BubbleInPit
              Participant

              好的,感谢回复。已修改。
              (上面的“正交投影”应该改成“透视投影”😂)

            • #3628 Score: 0
              Keneyr
              Participant
              7 pts

              助教,-5经过透视投影后变为-0.983968,-2经过透视投影后变为-0.975379,他的计算是正确对吗?为什么我的透视投影后直接变成了正数。。。。

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

                不好意思,我之前也没有仔细算,我只是看了他的大小关系是正确的,即-5变换后的z值更小。

            • #3654 Score: 0
              Keneyr
              Participant
              7 pts

              为什么要把vert.z() = vert.z() * f1 + f2改为vert.z() = -vert.z() * f1 + f2??
              我透视投影、归一化、然后缩放以后,三角形的z值变换分别是
              -2—>6.8—>0.97—>49.3
              -5—>9.8—>0.98—>49.6

              我觉得不需要改变代码啊。

              而且我认为经过透视投影以后,z值是正值才是正确的。三角形在-z的空间内,摄像机在+z的位置,又因为裁剪空间是左手系,也就是三角形经过mvp变换以后,变换到了裁剪空间下,z值就应该是正值啊。
              (如下图,不知道我的理解是否正确)

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

                你说的是没错的,主要原因是代码框架中的坐标系是左手系,导致如果纯粹按着闫老师上课所讲的右手系推到过程来构造透视投影矩阵的话,得到的结果是负值。

                • #3945 Score: 0
                  Keneyr
                  Participant
                  7 pts

                  好滴,谢谢助教

              • #6731 Score: 0
                不要熬夜
                Participant

                为什么我的是改为-vert.z() * f1 + f2之后的z值变化跟你一致呢?

Viewing 1 reply thread
  • You must be logged in to reply to this topic.