[英]perspective to world space inverse projection
我将阴影功能扩展到我作为班级作业创建的现有3d渲染器。 我正在尝试实现2遍z缓冲区算法。 我已经完成了第一遍并创建了深度图。 但是,问题是我将屏幕空间中的线栅格化,因此必须将坐标重新带回图像空间,因为深度图的z值与片段坐标的z值之间的比较是在图像空间中进行的。
我使用堆栈实现以以下形式存储空间转换矩阵:
[Xsp] * [Xpi] * [Xiw] *(x,y,z)世界空间中的坐标=屏幕空间中的x,y,z,其中Xsp-屏幕透视Xpi-图像透视Xiw-世界图像
在这里,堆栈的底部包含Xsp,第二至底部包含Xsp与Xpi相乘,第三至底部包含Xsp * Xpi与Xiw相乘的结果.....
现在,我只想要图像空间中的x,y,z,即(世界空间中的Xiw * x,y,z),所以在世界空间中获取x,y,z将对我有用...是否有可能如果我将每个矩阵的逆值相乘,然后将结果与屏幕空间中的x,y,z相乘,则实现???
我的意思是,我想做
[Xsp] inverse * [Xpi] inverse * [Xiw] inverse,并将其与屏幕空间的x,y,z相乘将使我回到世界空间?
让我猜猜。 USC CS580?
无论如何我会帮忙。
最初如何获得顶点:
Xsp * Xpi * Xiw * Xwm * v = vf //Concat * model-space vertex = raster-space vertex
vf' = (vf.x / vf.w, vf.y / vf.w, vf.z / vf.w); //Perspective
如何用vf找回它:
Xwm * vf = Xiw^-1 * Xpi^-1 * Xsp^-1 * vf' //Inverted partial concat * raster-space vertex = world-space vertex
v = (vf.x / vf.w, vf.y / vf.w, vf.z / vf.w); //Perspective again
法线是相同的想法,除了法线只进入图像空间外,您只需要一个反转的Xiw即可返回世界空间。 也没有涉及任何观点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.