这里映射到场景空间,然后在转化为摄像机的本地坐标,就可以进行图一的计算
图一深度和宽度很容易求出来,FOV角度也有,投影时将场景内容缩放到-1到1的一个正方体内,最后再算出屏幕分辨率,将正方体内X和Y轴进行平铺到电脑屏幕上,然后进行Z-Buffer处理,这里可以计算场景深度进行Z轴上的处理,解决遮挡关系的问题
在蓝图中获取顶点信息的节点就是用程序化网格
常用材质函数内部实现也是类似
构建以Camera位置的笛卡尔坐标系,上面是计算材质信息位置距相机位置的相对位置
就转化成这张图一样了
做点乘就是算这个位置距离X、Y、Z分别的投影值时多少,再乘以轴的单位向量,清除掉其余轴不必要的数值,然后将X和Y轴相加,就拿到对应XY轴的数值
然后做深度,Z轴绘制,同样再把分辨率给到XY,将XY投影到屏幕分辨率的大小
这里再将Camera的坐标系转化成UV坐标系
这个是Camera的坐标系
这个是UV的坐标系
首先为什么乘以0.5?
因为透视投影,会将场景内的物体压缩到-1到1的范围,而UV的取值范围在0~1,所以先乘以0.5,再平移到UV的坐标系上
为什么乘以Y是负的0.5?
因为相机的坐标系的Y轴和UV坐标系的Y轴方向相反,所以要乘以负号