Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › 作业三中phong_fragment_shader计算光源方向问题 Tagged: 作业三 This topic has 3 replies, 4 voices, and was last updated 1 year, 9 months ago by waqia. Viewing 3 reply threads Author Posts 2021年9月7日 at 上午10:26 #9276 Score: 1 偷吃猫粮的白熊Participant Karma: 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. 2021年9月12日 at 下午8:46 #9299 Score: 0 qhParticipant Karma: -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 是未进行变换的坐标。 2021年9月19日 at 下午4:49 #9358 Score: 0 歙鹿Participant 个人觉得eye_pos是观察点的三维坐标,point是当前计算的像素映射回object的顶点,楼主可以根据数据类型溯源一下,我查到的应该是在view空间的顶点 2023年3月7日 at 上午10:48 #16234 Score: 0 waqiaParticipant Karma: 2 pts 你説的是對的,框架錯了 Author Posts Viewing 3 reply threads You must be logged in to reply to this topic. Log In Username: Password: Keep me signed in Log In