【问题标题】:How to prevent the rendering of unseen triangle in Unity3D?如何防止在 Unity3D 中渲染看不见的三角形?
【发布时间】:2017-02-12 01:30:24
【问题描述】:

在 Unity3D 中,逻辑规定除非在视野中,否则不会渲染对象。这显然是优化目的的方法。但是,它仍然会渲染由于被遮挡而无法被玩家看到的网格。我想解决这个问题,想知道是否已经有方法可以解决这个问题,或者我是否必须自己解决。

这里有一张图片来帮助说明我的观点。

到目前为止,我唯一真正的想法是使用剔除,但这仍然是在不一定可见的范围内。

https://docs.unity3d.com/ScriptReference/Camera-layerCullDistances.html

我想基本上我需要知道的是如何在场景开始后进行遮挡剔除,因为场景是生成的,它不是预制的。

【问题讨论】:

    标签: c# unity3d rendering


    【解决方案1】:

    对于任何有兴趣的人,我询问了团结社区

    Bunny83 的回答·4 小时前

    不,这是不可能的。至少没有遮挡剔除 Unity 使用的系统。计算哪些部分是可见的 哪些点相当复杂,必须在 编辑。所以它不适用于程序生成的关卡。

    如果您需要类似的解决方案,您必须推出自己的解决方案。 就在几周(或几个月?)前,我实施了一个 VisPortals 解决方案 类似于 Doom3 使用的那些(基本上大多数 ID Tech 引擎如何 工作)。它更多的是概念验证,而不是即用型解决方案。

    通常我会将网络播放器演示上传到我的 Dropbox,但我只是 意识到 Dropbox 终于阻止了直接查看 HTML 页面 关闭我的公共文件夹。他们现在强制下载该页面 打破一切。所以如果你想尝试它,你必须下载 项目。

    当然,vis 门户并非在所有情况下都有效。他们是完美的 适用于可以很好地分成单独区域的封闭环境。 当然,这种划分为区域和创建visportals 目前是手工完成的。所以你需要自动化这个 自己。

    小心静态批处理,它可能会破坏系统,因为每个 区域必须是单独的,因此可以单独启用/禁用。

    【讨论】:

      猜你喜欢
      • 2014-03-22
      • 2015-10-09
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 2017-02-04
      • 1970-01-01
      相关资源
      最近更新 更多