Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › 关于作业2和作业3中Z-Buffer的问题 This topic has 10 replies, 5 voices, and was last updated 3 years, 7 months ago by 小木子. Viewing 8 reply threads Author Posts 2020年10月28日 at 下午4:16 #7253 Score: 0 KarlmeisterParticipant 通过下面这个函数可以得到三角形内一点在view space中的深度 float Z = 1.0 / (alpha / v[0].w() + beta / v[1].w() + gamma / v[2].w()); 为什么比较和更新Z-Buffer数组的时候要用zp这个变量呢? float zp = alpha * v[0].z() / v[0].w() + beta * v[1].z() / v[1].w() + gamma * v[2].z() / v[2].w(); zp *= Z; 在经过投影变换以后,v.w表示顶点在view space的深度,v.z不是已经没有意义了吗,为什么这里要把v.z当做一种属性值进行插值得到一个zp呢? 2020年10月28日 at 下午9:37 #7254 Score: 0 KarlmeisterParticipant 我发现代码中如果v改成t.v,就会出问题,而所有v.w都是1…是不是这个t.v的坐标空间本身就有问题,xyz三个分量已经除过一次w,而w还是w没有变?所以我看大家求bounding box的时候也没有把齐次坐标里的w除去的样子。。 2020年10月28日 at 下午9:42 #7255 Score: 0 KarlmeisterParticipant 找到问题所在了,rasterize_triangle得到的三角形的顶点vector不是在齐次坐标系的坐标点,只有xyz三个值是除过w的,w保持不变。。。所以bounding box和后面公式里都用的是v的xyzw,且强制auto v = t.toVector4,即v.w恒为1。。。实在不明白为什么要这么写 Attachments:You must be logged in to view attached files. 2020年11月6日 at 下午3:36 #7304 Score: 0 叮叮咣咣Participant 相同的疑惑,感觉有问题 2020年11月6日 at 下午6:03 #7305 Score: 0 叮叮咣咣Participant 尝试理解了一下,老哥来讨论下看看对不对 Attachments:You must be logged in to view attached files. 2021年2月23日 at 上午11:25 #7690 Score: 0 waqiaParticipant Karma: 2 pts 楼主搞明白了吗?为啥zbuffer的插值和齐次坐标最后一项有关系呢 2021年2月27日 at 下午3:19 #7714 Score: 0 starParticipant 保留w是因为,mvp矩阵与点相乘后,w的值刚好是没变换前的z的负值,也就是说w是世界坐标系下的z值 然后看一下这位同学写的文章里的公式 先使用w的值求出Zt,再利用Zt来插值正确的深度,就如作业框架代码那样了 2021年2月27日 at 下午3:21 #7715 Score: 0 starParticipant https://zhuanlan.zhihu.com/p/144331875 2021年3月26日 at 下午2:19 #7943 Score: 0 小木子Participant Karma: -1 pt 那为什么w的初始化是1呢??三个顶点的深度值就一样?一定是1? 2021年3月26日 at 下午2:21 #7944 Score: 1 小木子Participant Karma: -1 pt 而且框架代码里算出来的w_reciprocal一直都是1,这没有异常吗? This post has received 1 vote up. 2021年3月26日 at 下午2:38 #7945 Score: 1 小木子Participant Karma: -1 pt 大家在这里集合,这位答主的长文和我的观点一致,作业框架里的吧w恒定为1的做法是一种近似(简化到把重心插值误差修正的算法效果给简化没),导致作业2中的w_reciprocal,作业3中的Z,论文中的Zt都是1,导致的结果就是误差修正的效果全部消失,还是使用了屏幕上的点所在位置去做了插值计算,并没有修正到view space中真正正确的点上 This post has received 1 vote up. Author Posts Viewing 8 reply threads You must be logged in to reply to this topic. Log In Username: Password: Keep me signed in Log In