Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 请问View Transformation为什么要旋转g x t?

Viewing 3 reply threads
  • Author
    Posts
    • #3002 Score: 1
      Anonymous
      Inactive
      1 pt

      如第一张图所示,view transformation讲相机变换到标准位置。
      可是为什么有一步旋转gxt的操作呢?我认为经过g和t的旋转,gxt自然和X轴重合了。
      第二张图也表明,矩阵中的确显式的写了gxt的旋转。

      This post has received 1 vote up.
    • #3008 Score: 4
      Lingqi Yan
      Keymaster
      24 pts

      这是个好问题!这里你觉得当 g 和 t 都分别旋转到位了的时候,g x t 就自然也和 x 轴重合,其实隐藏了一个前提,就是旋转之后的 g 与旋转之后的 t 求叉积。但其实我们说 g x t 是旋转之前的 g 和 t 的叉积,如果我们定义这个旋转前的叉积为向量 p = g x t,那么我们可以把我们要做的旋转操作描述为:
      如何把 g, t, p 三个向量分别旋转到 -Z, Y 和 X,并且使得它们仍然还是两两垂直。
      那么当然应该是三个向量都各自旋转到对应的目标方向上去。
      总结一下就是这里你会提出这个问题其实是因为我懒了,应该给旋转前的 g x t 起个名字,这样就不会出问题了。

      This post has received 4 votes up.
    • #3010 Score: 1
      Angus
      Participant
      22 pts

      我觉得这里也可以简单的从「结果论」去思考。View Transformation 的结果是z轴与-g轴重合,y轴与t轴重合,x轴与g×t轴重合。所以你会看到Rview的转置矩阵的写法是:(先不看齐次坐标)第一列是g×t轴的坐标,第二列是t轴坐标,第三列是-g轴坐标,代表着把x,y,z三轴“转”到g×t,t,-g三轴的位置。Rview则是倒过来。

      你可以试一下,如果只考虑z轴与-g轴重合,y轴与t轴重合,Rview的转置矩阵你第一列(代表x轴的基向量怎么变)要写什么呢?

      可以看一下3B1B的《线性代数的本质》系列视频,会对线性变化有个比较直观的理解,再思考这个问题就简单了。

      This post has received 1 vote up.
      • #3077 Score: 0
        sublimation
        Participant
        3 pts

        咦,这里我觉得应该是有一个默认的条件,就是 p = g x t。
        如果没有这个条件,从线性变换的角度看,确实是这样的,这可以假设原本并不是标准正交基。
        但是有了这个条件,那么自然就要将第一列/行填充为g x t。

    • #3012 Score: 0
      Anonymous
      Inactive
      1 pt

      弄懂了。谢谢老师和同学的解答!

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