Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 结果出现上下颠倒,怎么办?只加一个负号即可

Viewing 3 reply threads
  • Author
    Posts
    • #3381 Score: 2
      Luckin呀
      Participant
      2 pts

      前提:代码中用到的推导(比如透视投影矩阵),全部和课上老师说的保持一致。代码里不用自己改成左手坐标系去求矩阵,因为太麻烦。

      只需要改动一处:就是在求透视投影矩阵函数里面,求top坐标的时候,前面加一个“-”负号即可。(保证先求top,再求right)

      This post has received 2 votes up.
    • #3382 Score: 0
      Luckin呀
      Participant
      2 pts

      main函数里面的near和far也不需要改成负的,保持正的不变

    • #9461 Score: 0
      赞平
      Participant
      1 pt

      厉害,在完成作业3的时候遇到这个问题。牛是倒过来的,为什么加负号就可以了,不懂?

      • #9519 Score: 0
        仲谨
        Participant

        可以看一下rst::rasterizer::draw函数里面的f1和f2的计算,你就明白了

    • #9518 Score: 0
      仲谨
      Participant

      首先我们在求投影矩阵的时候是以看向﹣Z方向去进行计算的。
      意思就是说在调用get_projection_matrix函数的时候,虽然传入的zNear和zFar为正数,我们需要转换为负数计算(这一点前两次作业的三角形的世界坐标z值为负可以证明)。
      其次,为什么楼主说top加个符号就可以?
      因为在rst::rasterizer::draw函数里面的前两行,计算f1和f2时使用的50和0.1写死了,与我们计算投影矩阵相违背。
      所以,你可以试试把f1和f2改为负值,发现top不改变也会正确了。

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