问题标签 [occlusion-culling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
90 浏览

unity3d - 遮挡剔除和遮挡处理有什么区别?

我研究了增强现实中的遮挡问题。我阅读了一些学术文章,他们将它们归类为“遮挡处理”。然后我用谷歌搜索了同样的问题,我意识到人们用一些已知的算法讨论“遮挡剔除”,这些算法是 Z-Buffer、S-Buffer 或 C-Buffer、BSP、Warnock 算法或 kd 树等。

我正在尝试开发一种算法来解决增强现实中的遮挡问题。我的问题是是否可以将“遮挡剔除”算法应用于真实场景(增强现实)来解决遮挡问题?或者“遮挡处理”和“遮挡剔除”是不同主题下的同一个东西??

0 投票
2 回答
1399 浏览

javascript - Three.js 检测对象何时被部分和完全遮挡

我试图检测 Three.js 中的对象何时被部分和完全遮挡(隐藏在)另一个对象。

我当前的简单解决方案将单条射线投射到对象的中心:

但是,它不考虑对象的尺寸(宽度、高度、深度)。

不被遮挡(因为物体的中心不在后面) 物体未被遮挡

被遮挡(因为物体的中心在后面) 对象被遮挡

查看工作演示:

https://jsfiddle.net/kmturley/nb9f5gho/57/

目前认为我可以计算对象框的大小,并为框的每个角投射光线。但这可能还是有点太简单了:

我想找到一种更强大的方法,它可以给出partially occluded布尔fully occluded值,甚至可能percentage occluded

0 投票
1 回答
57 浏览

opengl - OpenGL 使用遮挡渲染内部面

OpenGL中有没有办法只渲染内部面而外部面仍然覆盖/遮挡内部面?为了更好地理解我想要完成的任务,如果我要切片一个随机定位的圆柱体,我只会看到一个椭圆。

我努力了:

但在这种情况下,我看到了圆柱体的整个内部,而外表面只是消失了,没有覆盖任何东西。

谢谢

0 投票
0 回答
80 浏览

c++ - 是否有任何原因要遮挡隐藏在对象后面的对象

我仍在学习如何使用 OpenGL,我想问是否有任何方法可以使用遮挡剔除对象后面的遮挡对象(相机不可见)。我使用截锥体剔除来检测不在相机视图内的对象。另外,我只想纯粹使用过剩。不想弄乱 ARB。任何提示都非常感谢

此代码主要参考http://www.lighthouse3d.com/tutorials/view-frustum-culling/radar-approach-testing-points/。对于像我这样的初学者来说,这是一个很好的教程。

0 投票
1 回答
511 浏览

unity3d - Unity Occlusion Culling 在全封闭房间中中断

在我的游戏中,我有封闭的房间,里面有传送器,可以把你带到外面。但是,在 Unity 中烘焙 Occlusion 时,当相机位于封闭房间内时,它会开始剔除房间内的物体。

例如:

伊姆古尔

在房间外飞来飞去时,它工作得很好。(我进入房间并剔除内墙的视频

我发现的一个愚蠢的解决方法是在房间里创建一个小洞,以便在烘烤时,遮挡剔除系统将其作为外部的一部分。


主要问题有谁知道如何指示 Unity Culling System 计算房间内的遮挡剔除?


我有一个可重现的小测试场景 [可以在此处下载][ https://drive.google.com/open?id=1d-dsYILJfFvQ3OudoX9mqON0WozH95tO]

我使用以下设置烘焙了遮挡:

替代文字

0 投票
3 回答
1711 浏览

c# - 如何在 Unity 2020 中使用 Hybrid Renderer V2 从 Burstable ForEach 作业中动态显示或隐藏网格?

我有一种特定的方式来生成网格和构建我的场景,这使得遮挡剔除非常直接和最优。现在我只需要知道如何使用 ECS 混合渲染器有效地显示或隐藏网格。我考虑将图层更改为 RenderMesh 组件中的隐藏层,但 RenderMesh 组件是 ISharedComponentData,因此不支持作业化或突发。我看到了 Unity BatchRendererGroup API,它的 OnPerformCulling 回调看起来很有希望,但我不知道是否可以连接到 HybridRenderSystem 的内部 BatchRenderGroup。我还看到了我猜想禁用实体呈现的 DisableRendering IComponentData 标记。但是,同样,这只能从主线程中完成。我可以编写自己的解决方案来使用图形渲染网格。

这有可能吗?预期用途是什么?

0 投票
1 回答
547 浏览

three.js - 为什么我的遮挡剔除在 Three.js 中失败?

首先我知道 Three.js 没有官方对遮挡剔除的支持。但是,我认为可以在屏幕外画布中进行遮挡剔除并将结果复制回我的 Three.js WebGLCanvas。

基本上,我想将此演示 转换为 Three.JS 演示。我使用 Three.js 创建所有内容,并在同步的屏幕外画布中,针对每个边界框测试遮挡剔除。如果任何边界框被遮挡,我会关闭主画布中该球体的可见性。这些就是我在这个片段中所做的。但我不知道为什么它没有遮挡任何球体。

我认为一个可能的问题可能来自计算边界框的 ModelViewProjection 矩阵,但我没有发现任何问题。有人可以帮忙吗?

0 投票
1 回答
395 浏览

unity3d - 自上而下或等距视图中的 Unity Frostrum Culling

我在 Unity 中遇到了一个问题,由于阴影投射,它阻止它在自上而下或等距视图中剔除相机外对象。

定向光是对角线的,因此在光线来自的方向上相机视图之外的任何物体都可能在相机视图中投射阴影。现在,实际上,几乎所有这些对象只会将它们的阴影投射到远低于地面的摄像机视图内,因此它们并不需要被渲染。然而,Unity 并不知道这一点,它无论如何都会渲染它们的阴影,从而显着降低性能。

在此处输入图像描述

我尝试通过遮挡剔除来解决这个问题。我在地面创建了一个巨大的平面,将其标记为静态,并为该对象烘焙了遮挡剔除,这样地下的任何东西都不会被渲染。不幸的是,这无济于事,所有那些其阴影可能进入地面下方相机视图的对象仍在渲染中。

另一种可能的解决方案是限制为每个对象生成阴影的范围。这些物体中的许多都非常低并且总是在地面上,所以我知道它们的阴影不可能超过 1-2 米。但是我找不到定义这样一个值的方法,以便统一可以使用它进行剔除。

关于如何克服这个问题的任何其他想法?

注意:整个场景是程序生成的,所以我不能使用静态遮挡剔除,除了地面本身。

0 投票
0 回答
439 浏览

python - Python 遮挡剔除

快速总结:

我正在寻找一个不使用光线投射的遮挡剔除(给定相机位置和网格的已知多边形坐标)的pythonic实现(blender,numpy,OpenCV)。

背景:

我有一个表示为矢量的简化几何坐标数据集,我想以最佳方式计算遮挡剔除,以便将该坐标数据转换为 SVG 图像。我不太关心 SVG 的实现,而是计算遮挡剔除的最佳数学解决方案。渲染引擎计算这一点的典型方法是将光线从相机投射到每个网格顶点并测试它们是否发生碰撞。因为我想制作简单的 SVG 线条图像,所以我想避免光线投射。

搜索隐藏表面确定wiki,其中描述了一些方法。其中一些是Portal RenderingPotentially visible setZ-culling。鉴于这些算法的少数 pythonic 实现,我想知道哪种实现在计算上最有效并产生最好看的结果。如果您有更好的方法或组合,请随时提出建议。遮挡剔除有很多用例,但我关心的两个主要用例如下。

内部网格遮挡

图为:1. 在搅拌机中进行 3d 渲染,2. 所有可见的网格边缘,3. 使用光线投射插件剔除的网格边缘

对于坐标数据,我拥有的大多数几何图形都使用简单的形状。因此,此处描述的背面剔除是渲染基本形状的快速简便的解决方案。但是,当存在不是背面且位于可见几何图形内的几何图形时,就会出现问题。正如您在上面的光线投射示例中看到的那样,当相机面向平面时,网格的其他多边形面不可见。使用下图所示的背面剔除时

在此处输入图像描述

您可以看到背对相机的多边形面被剔除,但指向相机的面仍然存在。给定相机位置的网格多边形的遮挡剔除对于渲染具有一定复杂性的小对象很重要。

多对象遮挡

图为:1. 在搅拌机中进行 3d 渲染,2. 所有可见的网格边缘,3. 使用光线投射插件剔除的网格边缘

遮挡剔除的更明显示例是在多个对象的情况下。虽然我可以简单地从后到前绘制 SVG 图层,但这会添加不需要的图层。以理想地解决内部网格剔除的方式剔除多边形也将允许分层对象剔除。

概括

我正在寻找解决方案来计算给定顶点列表(结构化以形成多边形)的遮挡剔除,并计算哪些顶点对相机可见,而无需将光线投射到每个顶点。