文章目录
效果展示
整体结构
各区域内容
区域1
用场景深度减去顶点的View空间的视野深度(Z值),这里Z值需要乘-1是因为从相机看到的物体顶点的视野深度为-1,而场景深度是正值,所以需要乘-1让两者都为正。
这一步的意义是,用场景中的深度减去sphere的视野深度,当sphere与场景的物体接近时,这个差将会非常接近0,如下图
View空间类似于屏幕坐标,在屏幕正中心永远是(0,0,0),向左为X正,向上为Y正,向摄像机镜头内部为Z正。
区域2
可以用来扩展或缩小范围
区域3
将值钳制在0-1,并四舍五入,这样可以得到非常锐利的扫描边缘,如果不四舍五入则会得到渐变的效果
区域4
用1减去之前的值,目的是反转黑白色,如下
区域5
给白线上一个颜色
区域6
输出颜色,用黑色区域当透明通道
GraphSetttings
改成透明的
注意事项
需要确保相机开启了深度纹理
使用方法
我们可以通过缩放shpere来调节扫描
csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScannerController : MonoBehaviour
{
public float speed = 10;
public float delay_destory_time=5;
private void Start()
{
Destory_Object();
}
void Update()
{
Vector3 vectorMesh = transform.localScale;
float growing = this.speed * Time.deltaTime;
transform.localScale = new Vector3(vectorMesh.x+growing,vectorMesh.y+growing,vectorMesh.z+growing);
}
private void Destory_Object()
{
Destroy(gameObject,delay_destory_time);
}
}