在Unity中裁剪整个场景的建议

时间:2019-04-04 04:39:40

标签: unity3d

我正在寻找将整个统一场景剪辑为4个平面的方法。这是针对AR游戏的,我希望能够放大到地形,但仍然只在桌子上占用给定的空间(即:不在桌子的边缘延伸)。

到目前为止,我已经可以根据地形和水效果进行裁剪了:

Look! My trees can float in mid air!

上面显示了一个更大的地形,它被裁剪为表格的大小。其他场景对象不会被裁剪,因为它们使用了未修改的标准着色器。

这是一张图片,显示编辑器中的地形裁剪。 您可以看到地形的可见部分周围的剪切平面,并且其他对象(树等)没有被剪切,而是出现在表格边缘之外。 Inside the Editor

我完成的方法包括向每个着色器添加参数以定义剪切平面。这意味着自定义要剪切的每个着色器,这在考虑地形时很好。

虽然这可行,但我不确定对于数百个场景对象而言,这是否是一个好方法。我将需要修改正在使用的任何着色器,然后必须为每个对象的每次更新设置其他着色器参数。

不是Unity方面的专家,我想知道是否还有其他我可能无法研究的基于“每个着色器”的方法?

最终目标是在某个平面的边界内渲染场景。

1 个答案:

答案 0 :(得分:0)

一种简单的方法是将Box Colliders用作飞机每一侧的触发器。然后,您可以使用OnTriggerEnter / OnTriggerStay关闭停留在触发器中的对象的渲染器,然后使用OnTriggerExit将其打开。

您也可以使用Bounds.Contains