问题标签 [occlusion]

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 投票
1 回答
211 浏览

unity3d - Unity - 防止对远处物体的遮挡剔除

在 Unity 中,我有一个场景,其中对象彼此相距很远,但它们在统一编辑器中彼此可见。但是当我在游戏模式下玩时,它们是不可见的,并且当玩家靠近它们时会生成。

我已经在场景相机和主相机检查器中启动了遮挡剔除。

任何方法如何防止这种情况?我的示例游戏在这里。玩家必须按住向上箭头⬆️按钮才能玩游戏。

所有物体在到达它们附近后都会生成。

0 投票
0 回答
151 浏览

unity3d - 获取显示的对象或渲染器(在顶部渲染)

是否有可能知道我的网格渲染器不可见,因为它被另一个游戏对象遮挡了?根据我的研究,Rederer.isVisible响应“isRendered”并且需要烘焙场景参数。所以我想知道是否有一种简单的方法可以知道场景元素是否以简单的方式呈现在其他元素之上。下面有更大的解释。

考虑一个简化的用例,有一个摄像头(启用了遮挡剔除)、一个遮挡器和一个遮挡物,如下所示:

在此处输入图像描述

禁用阴影选项(对于遮挡物和被遮挡物。我认为仅对被遮挡物禁用此选项,但对两者都禁用以防万一):

在此处输入图像描述

还有一个简单的脚本来检查可见性选项:

我期望的结果是被遮挡物.isVisible将返回假,并且在被遮挡物被移出遮挡物的事件OnWillRenderObject()执行后将不断执行,因此进入相机的视线。OnBecameVisible()但是我得到.isVisible = trueOnWillRenderObject().

我知道场景视图相机也会导致该值为真。解释的结果不考虑场景相机,只有 gamePlay 相机(激活了遮挡剔除)。我得到了这种方法来按照文档步骤烘焙场景遮挡选项。但是我在这里的问题更多是关于遮挡设置是否渲染,是要知道游戏对象或网格是否在其他“顶部”渲染(在不应用剔除的情况下)。Unity 需要处理它,因为它是渲染在场景中发生的方式。

对于我所追求的东西,这里似乎有很多有用的选项,但是,为了.isVisible工作,我需要设置和烘焙职业场景选项(afaik)。因此.isVisible更多地响应“isRendered”事实。根据文档,不应该Renderer.isVisible以直接/简单的方式给出我期望的结果,并且不受渲染或不被动态遮挡的影响?

编辑:据我检查,似乎只有光线投射可以解决几何阻塞问题。所有这些其他东西都意味着“可见”,因为相机的渲染管道必须以某种方式考虑对象。通过光线投射,我可以获得由碰撞确定的“物理”块。没有办法确定“图形”块吗?正如我所说,这是在某个地方计算出来的,以便在显示屏上相应地重新呈现,那么这些信息是否可以通过某种方式获得?

0 投票
0 回答
44 浏览

python - 用于图像合成的动态关键点标注

我目前正在做一个项目,我需要估计医院病床上的人的姿势,这意味着很多遮挡物和受试者只能部分看到。

至于现在我已经注释了数据并分割了图片中的人。我的注释是 COCO 风格的:它们是具有 [X,Y] 坐标的关键点,给出了图片中每个人的关节坐标。

预训练模型显示的结果非常有限,我需要创建自己的数据库。但我想避免整个花费三周的注释部分并综合生成带注释的数据。

我的问题是我的数据上的注释有他们自己图片的坐标(有意义),我想把分割区域(里面有注释)放在另一张图片上。分割不会在新图片上完全相同的位置,这意味着注释不会精确定位关节的正确 [X,Y] 坐标。所以我需要找到一种方法来翻译分割参考中的注释(可能是分割的最左边的最高点)。

现在我想到的是:

  • 手动分割〜50-80个预注释图像以提取前景(=床上的人)

  • 应用齐次变换将注释的参考框架从 original_img 更改为 mask

  • 通过将分割部分(带注释的人)添加到背景(医院病床)来生成合成图像

  • 应用同质变换将注释的参考框架从 mask 更改为 new_img

  • 对注释坐标重新应用同质变换,以在新的合成图像中将它们重新转换为 coco 样式

整个过程可能很乏味(主要是为了解析 json 注释文件),所以你能告诉我是否没有更简单的方法可以做到这一点,或者是否有人还没有这样做?

谢谢您的回答

如果您想要更精确的可可注释:https ://www.immersivelimit.com/tutorials/create-coco-annotations-from-scratch/#create-custom-coco-dataset

0 投票
1 回答
81 浏览

javascript - 2D 重叠矩形遮挡

我正在寻找一种可以找到相互重叠的相交矩形的算法。

问题是我的数据结构类似于带有边界框而不是点的四叉树。我正在做一个基本的矩形相交检查,但问题是当我放大树时,检测到子节点和父节点,如果父节点完全被给定相机矩形的子节点遮挡,我想排除父节点。

缩放动画

正如您从上图中看到的,当相机矩形(黑框)位于绿色节点内时,紫色节点仍然突出显示(填充),因此随着我越来越放大,父母总是突出显示,即使相机矩形可以仅用子节点完全填充。

这是有道理的,因为相机矩形仍在父级内部,但我已经搜索并考虑了一段时间,似乎无法找到一个优雅的解决方案。对于 3D 空间,似乎有几种方法可以做到这一点,但对于 2D AABB 矩形,我找不到任何简单的方法。

我想到的几个解决方案:

  • 从父节点中减去子节点,得到凹多边形,然后执行多边形相交。
  • 使用填充颜色检查哪些矩形是可见的,因此会遮挡后面的矩形。
  • 执行光线投射或细分并检查给定部分的最小节点。

有一个更好的方法吗?谢谢

更新 1

我已经通过将相机细分为更小的部分来解决这个问题,并且对于每个部分都找到了最小的相交节点。这可行,但必须有一种更有效和更清洁的方式来做到这一点。

更新 2

感谢 Trentium 的回答。我可以清楚地看到,像这样的算法会比我目前正在做的更高效。

最终我会将它实现为将一个矩形分割成更小的矩形,而不是多边形,这听起来像是一个有趣的挑战。

此外,我对当前方法做了一些非常不科学的基准测试,过滤和绘制所有内容需要 0.5ms-1ms,所以现在性能仍然不是问题。

0 投票
0 回答
29 浏览

optimization - Three.js 对象被遮挡时显示的视觉指示或效果

我正在构建一个程序,您可以在其中控制一个小头像(这是一个基本的圆形几何图形或平面),它穿过一个充满 3D 模型和形状的场景。我想要实现类似于许多视频游戏中的效果,您可以在其中看到某种迹象,表明化身位于各种模型和形状的背后。例如,这是一张图片来解释我的意思:

显示所需效果的示例图像

它不一定需要是示例图像中的形状轮廓。我愿意接受任何真正显示化身背后的某种迹象的效果,但也不能太重,因为我想让这个程序在移动设备上运行。能够在一定程度上自定义效果(例如颜色、厚度等)也是非常可取的。任何意见或建议将不胜感激。我似乎真的找不到太多信息来达到这样的效果。

另外我认为值得一提的是,到目前为止,我自己尝试了两件事。一种只是将化身渲染到一切之上。结果看起来真的很愚蠢和令人困惑。我尝试的另一件事是使用 Outline 后处理效果(来自这个库https://github.com/vanruesc/postprocessing)。这实际上看起来非常棒,但事实证明性能太重而无法始终以最佳状态运行(更不用说颜色混合和透明/透视形状和模型的其他问题)。

我知道这有点像在黑暗中拍摄,但我认为问它并没有什么坏处。

0 投票
0 回答
25 浏览

3d - 网格对齐单元格的遮挡剔除

鉴于:

  1. 边长为 L 的 3d 轴对齐单元格网格。
  2. 具有起始位置、边 L 和轴的平面法线对齐;
  3. 具有可变垂直视场的任意定位/旋转相机

我需要检查哪些单元格完全位于飞机后面

期望的结果:

我不知道它是否相关,但就我而言,平面开始/结束组件将始终与网格对齐,但其法线指向的组件除外;示例图像显示了具有法线 (0, 0, -1) 的平面,因此 x 和 y 分量对齐,但 z 不对齐;

0 投票
1 回答
107 浏览

swift - ARKit – Environment Occlusion

In Unity we can implement occlusion with Environment Depth. Which uses ARKit behind the scene. How can I achieve same behaviour in iOS ARkit.

I know we can configure frame semantics with depth, but I doubt it is really same as unity environment depth occlusion?