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或摄像机重新计算剔除

相关推荐
C MIKE13 小时前
unity资源下载
unity
Avalon71213 小时前
Unity中自定义协程的实现
游戏·unity·c#·游戏引擎
IMPYLH13 小时前
Lua 的 select 函数
java·开发语言·笔记·后端·junit·游戏引擎·lua
jtymyxmz15 小时前
《Unity shader》10.1.5 菲涅尔反射
unity·游戏引擎
老朱佩琪!16 小时前
Unity文字排版错位问题
经验分享·unity·游戏引擎
jtymyxmz16 小时前
《Unity Shader》9.4.3 使用帧调试器查看阴影绘制过程
unity·游戏引擎
jtymyxmz16 小时前
《Unity Shader》10.3.1 在Unity中实现简单的程序纹理
unity·游戏引擎
jtymyxmz16 小时前
《Unity Shader》11.2.1 序列帧动画
unity·游戏引擎
qq_428639611 天前
虚幻基础:虚幻中的if与switch
游戏引擎·虚幻
UX20171 天前
Unity中的Color.HSVToRGB
unity·游戏引擎