Tagged: 

Viewing 3 reply threads
  • Author
    Posts
    • #13526 Score: 0
      zcpbobhansky
      Participant

      main里 r.set_projection(get_projection_matrix(45, 1, 0.01, 50.f));
      这里znear和zfar都是正数

      eye_pos = {0,0,5};
      两个三角形分别定义在 z = -2 和 z = -5
      model veiw 变化后, 近平面0.01 远平面50 这个视锥是怎么包含 z=-2 和z=-5的三角形的?
      结果是预期的 见附录+z.png

      因为课上camera是看-z轴, 所以我试试改视锥的近远平面看看结果
      r.set_projection(get_projection_matrix(45, 1, -0.01, -50.f));
      结果也出现了三角形,只是覆盖关系不一样 见附录-z.png

      我的问题是 为什么在两个方向相反的视锥里都可以看到 z=-2 和z=-5, 抛开定义的正负符号不管,两个视锥没有交集,为什么都能有光栅化的结果,预期不应该是其中一个结果是没有任何三角形的吗?

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

      透视投影矩阵直接复制hw1的

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

      自己解决了
      最本质的原因是 perspective_to_orthogonal matrix是根据视锥(near plane farplane ….)定义的, 如果对视锥外的点运用这个matrix是没有意义的(只挤压视锥内的点,以此根据写的matrix并不适用于视锥外),结果也是unpredictable的.

      为什么会在屏幕上成像呢? 以下为测试后的推测: 我在手动测试了对x视锥外的点运用根据x视锥定义的matrix, 发现很多点在乘以矩阵后,结果会出现在挤压后的长发体内(在视锥另外一个半轴的点会被变换到视锥所在半轴,根据定义的不同位置不同矩阵,有几率会出现在orthogonal那个长方体里)。 长方体内的Objects, points 之后被运用orthogonal matrix, viewport matrix, 最终成像

      为什么三角形覆盖关系变了? 根据视锥定义的perspective_to_orthogonal matrix 运用在视锥外的三角形,产生 unexpected result, z值也是非预期结果

      实际中应该只对视锥内的points做perspective_to_orthogonal变化

    • #13532 Score: 0
      zcpbobhansky
      Participant

      如有错误很希望得到指出,因为三个homework都是视锥都是看向+z轴 负轴的物体如果是巧合地被变换到了+z轴并且得到正确的投影,也很说不通 (框架把z_interpolated 判断改成了越大越远,符合视锥在+z轴,但是points都还是在负轴的

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