制作目标:
在一个点观看,一定范围的半径求内可以看到的可视范围,被建筑物遮挡的为橙色,可视天空为蓝色
制作原理
有两种方式可以制作,一是射线检测,二是利用深度图渲染
两者利弊:
射线检测:
优点:精准,可控制范围精确,并且显示无误差。
缺点:射线要足够密集,而且后期要做抗锯齿处理。
深度图渲染:
优点:UE4有自带的Scene Component cube 相机,利用Rander Target 3d 得到深度图S渲染图简便易用,处理材质效果好。
缺点:因为是Cube采样再将深度图投影在球上,所以在边缘时候无法特别精准。采样的Cube在内接圆的半径时候效果最好,所有在球里的建筑都能看到。
在深度超过一定范围时候,就不能运用渐变深度,而是用if节点将颜色分开。因为深度图在越远越不精准。
(此图为UE4使用的深度曲线,笔者找了很久才找到,这是链接共查阅https://developer.nvidia.com/content/depth-precision-visualized
附带一个Unity 的深度曲线应用:
以上是大概的思路和粗略制作,具体细节不易展开。
在此基础上还可以升级:
1.双面显示,要翻转randerTarget cube 的vector。
2.透明度遮罩,使半透明物体不重叠,遮罩相机看不见的一面。
大概材质节点如下:
如上图,randerTarget传进来以后用IF 节点将球的外接正方体去掉,并且改变值为1