Unity如何使摄像机视锥体外的物体不被剔除

在默认情况下,Unity在渲染场景时会剔除掉摄像机视椎体以外的所有物体,这就会导致某些特殊情况下,我们希望显示在场景中的物体反而被剔除了,比如用Shader制作顶点动画时,如果物体本身的位置在摄像机以外,而顶点变换后的位置在摄像机内,那我们是希望该物体不被剔除的。然而,Unity并没有为某个物体或者摄像机提供禁止视椎体剔除的功能,所以我们就要自己想办法了!!!

研究Unity的官方文档发现,视椎体剔除是通过检测视椎体或与物体渲染器的Bounds是否包含或相交来决定是否剔除的,所以我们只要把渲染器的Bounds设置为一定与视椎体包含或相交即可。我这里的就设置为:

csharp 复制代码
Vector3 pos = Camera.main.transform.position + Camera.main.transform.forward * Camera.main.nearClipPlane;
renderer.bounds = new Bounds(pos, Vector3.one);

至于是否要在Update中更新就取决你是否会移动、旋转、缩放该物体以及摄像机是否移动,因为这些操作会使渲染器更新他的Bounds或摄像机重新计算剔除

相关推荐
℡枫叶℡4 小时前
Unity - Import Activity Window 资源导入诊断信息窗口
unity·资源导入诊断
TO_ZRG6 小时前
Unity 证书校验
unity·游戏引擎
mxwin7 小时前
Unity Shader 切线空间数据是如何计算出来的
unity·游戏引擎·shader
mxwin11 小时前
Unity Shader 法线贴图跟切线空间有什么关系
unity·游戏引擎·贴图·shader
mxwin11 小时前
Unity Shader 贴图和采样的关系 如何保证贴图清晰
unity·游戏引擎·贴图·shader
心前阳光13 小时前
Unity之使用火山引擎实现文字提问流式回复
unity·游戏引擎·火山引擎
mxwin15 小时前
Unity Shader 什么是球谐光照 原理是什么
unity·游戏引擎·shader
心前阳光16 小时前
Unity之使用火山引擎实现语音识别
unity·语音识别·火山引擎
心前阳光16 小时前
Unity之使用火山引擎实现流式语音合成
unity·游戏引擎·火山引擎