Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 作业三中phong_fragment_shader计算光源方向问题

Tagged: 

Viewing 3 reply threads
  • Author
    Posts
    • #9276 Score: 1
      偷吃猫粮的白熊
      Participant
      1 pt

      我现在的理解是Eigen::Vector3f point = payload.view_pos已经是视口坐标了.
      代码中给的eye_pos{ 0, 0, 10 },就是摄像机,在视口坐标中摄像机在原点{ 0, 0, 0}.
      所以观察方向就是 当前点->眼睛(摄像机)点的方向,向量计算就是眼睛(摄像机) – 当前点, VDirection = 原点{ 0, 0, 0} – point
      但是我看网上都是VDirection = eye_pos{ 0, 0, 10 } – point,这里我就不理解了,point已经经过model view 变换了.这里为什么还要减掉eye_pos.

      This post has received 1 vote up.
    • #9299 Score: 0
      qh
      Participant
      -1 pt

      phong_fragment_shader 里面的 Eigen::Vector3f point = payload.view_pos 是做 MVP 变换之前的坐标,VDirection 算的是做变换前的观察方向,VDirection = eye_pos – point。

      具体你可以跟踪代码看下这个值的来源,phong_fragment_shader 的 payload.view_pos 是根据 rasterize_triangle 的参数 view_pos 插值得到的,在 draw(std::vector<Triangle *> &TriangleList) 函数里传给 rasterize_triangle 的 view_pos 是未进行变换的坐标。

    • #9358 Score: 0
      歙鹿
      Participant

      个人觉得eye_pos是观察点的三维坐标,point是当前计算的像素映射回object的顶点,楼主可以根据数据类型溯源一下,我查到的应该是在view空间的顶点

    • #16234 Score: 0
      waqia
      Participant
      2 pts

      你説的是對的,框架錯了

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