Viewing 5 reply threads
  • Author
    Posts
    • #6950 Score: 0
      Axis
      Participant

      作业2的结果上下颠倒的情况,于是回看了作业1,发现在不做旋转时的结果也是上下颠倒的。
      自己不太清楚哪里出了问题,麻烦大家帮忙看看。

      因为作业1相对简单,这里贴出作业1运行中的一些变量:

      作业1里应用了 MVP 矩阵之后的顶点与最终映射到的数据分别是:

      应用了 model 矩阵后的顶点依次是:
      [ 2, 0, -2, 1],
      [ 0, 2, -2, 1],
      [-2, 0, -2, 1]

      应用了 view * model 矩阵后的顶点依次是:
      [ 2, 0, -7, 1],
      [ 0, 2, -7, 1],
      [-2, 0, -7, 1]

      应用了 projection * view * model 矩阵后的顶点依次是:
      [4.82843, 0, -335.7, -7],
      [0, 4.82843, -355.7. -7],
      [4.82843, 0, -355.7. -7]

      rasterizer.cpp 文件中 t.setVertex 调用的参数值:
      [108.579, 350, 2588.22],
      [350, 108.579, 2588.22],
      [591.421, 350, 2588.22]

      Attachments:
      You must be logged in to view attached files.
    • #6958 Score: 1
      咸蛋超人
      Participant
      1 pt

      颠倒没问题,后面课程有说
      想换过来的话把top和bottom互换一下就可以了

      This post has received 1 vote up.
    • #7925 Score: 0
      waqia
      Participant
      2 pts

      上下颠倒是因为用了opencv,opencv的远点位于左上角,框架的原点再左下角

    • #7933 Score: 0
      lazy
      Participant

      我被这个问题坑了一下午,最后翻虎书发现:公式里的n和f是近远平面在z轴上的坐标值,而不是我所以为的视点到近远平面的距离。

    • #8093 Score: -1
      FreeSouth
      Participant
      -1 pt

      函数入参的near far是0.1, 50,而计算透视矩阵的near far要是-0.1, -50,使用的是坐标轴。默认viewmatrix是朝向z轴负半轴的。

      This post has received 1 vote down.
    • #8327 Score: 0
      caspar
      Participant
      1 pt

      这个问题是因为使用opencv所以是左手系,在opengl的透视投影矩阵里near和far都会被计算为绝对值(虎书有记载),所以不需要修改zNear和zFar的符号,这里需要对投影矩阵的z位置进行反转以及对正交投影矩阵的z进行反转,相乘后能得到opengl里左手系的透视投影矩阵.

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