红框是摄像头范围,投射的贴图是随便找的。
这个效果主要是想把摄像头的真实画面,投射到Unity中的虚拟模型上。因此必须保证模型的1:1 ,还有相机的角度、位置、fov等的一致。
构思:
这种效果肯定是需要深度的,因为有遮挡关系。
摄像头的位置使用一个Camera,因为Camer可以实现对摄像头参数的模拟,下面部分称作次相机。
需要贴图的范围,肯定在次相机的渲染范围里面。
创建一个物体,物体的Mesh填充Camera的渲染范围,即边框和图中红框重合。
Mesh在场景透明物体渲染后被渲染,使用CommandBuffer。
使用次相机渲染一个深度图,这个深度图用来判断遮挡关系,把深度图传到Mesh渲染Shader中。
主相机的深度图还原世界空间坐标。
然后把这个坐标转换到次相机的屏幕空间下。
剔除深度不满足次相机深度图的点,剔除超出次相机屏幕空间的点。
然后根据这个屏幕的UV,采样摄像机的图像。