问题标签 [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 回答
4966 浏览

2d - 2D 遮挡剔除的最佳解决方案

在我的 2D 游戏中,我有静态和动态对象。可以有多个摄像头。我的问题:确定与当前相机的视图矩形相交的对象。

目前,我只是遍历所有现有对象(不关心动态或静态)并使用相机视图对它们进行 AABB 检查。这对于非常动态的对象似乎是可以接受的,但对于静态对象则不然,因为静态对象可能有成千上万个(静态关卡几何体散布在整个场景中)。

我研究了多种可以解决我的问题的数据结构:

  • 四叉树

这是我考虑的第一件事,但问题是它会迫使我的场景具有固定大小。(静态对象可以接受,动态对象不行)

  • 动态 AABB 树

看起来不错,但是对于许多动态对象来说,重新平衡它的开销似乎太大了。

  • 空间哈希

对我来说,这里的主要问题是,如果你用相机缩小很多,必须查询大量几乎不存在的空间哈希桶,导致性能低下。

一般来说,我对这个问题的良好解决方案的标准是:

  • 动态大小:该解决方案不得导致场景大小受到限制,或需要大量重新计算以调整大小

  • 良好的查询性能(针对相机)

  • 对动态对象的良好支持:处理位置不断变化的对象所需的计算应该很好:

在我的游戏中,动态对象的最大合理数量可能是 5000。考虑到它们每帧都会改变它们的位置。考虑到频繁的插入和删除,是否有比每帧将对象的 AABB 与相机进行比较更快的数据结构?

0 投票
1 回答
528 浏览

actionscript-3 - 如何在 flash/flex 中处理遮挡(重叠)显示对象上的鼠标事件?

我的问题与之前关于像这样的重叠精灵/电影剪辑的一些问题有点相似。但我的要求与他们略有不同。

我想处理舞台上所有精灵的鼠标事件,包括那些隐藏在后面(或重叠或遮挡)的精灵,主要条件是我想处理被遮挡的精灵(隐藏在其他精灵后面)。例如,假设我在舞台上有 sprite1 和 sprite2,我想在单击 sprite 时开始拖动并在再次单击后停止拖动。

这可以很容易地完成,但问题和我的主要要求是,如果我将 sprite1 拖放到 sprite2 的顶部,那么 sprite2 将隐藏在 sprite1 后面我将无法在不移动 sprite1 的情况下拖动 sprite2 . 如果您在 facebook 上玩过 zynga 的 Empires and allais 游戏,它会单独处理,这就是它在该游戏中的工作方式,鼠标事件在重叠精灵后面的精灵上触发,如果您有两个精灵重叠一个精灵而不是鼠标事件在最后一个而不是前面的精灵上触发,无论是否只有一个精灵重叠或两个或三个重叠,这发生在不规则形状的精灵(不仅仅是矩形)

如果有人可以告诉我 zynga 是如何实现这一点的,或者帮助我了解如何实现它,那将是很大的帮助

谢谢

0 投票
0 回答
1098 浏览

opengl-es - iPhone iOS5查询OpenGL ES 2.0管道对象是否隐藏在视图中......“遮挡”

EXT_occlusion_query_boolean 是 OS5.0 新增的,

在我看来,整个互联网上没有一个人发布过这些新扩展,也没有使用过这个代码......

所以在这里它们设置正确......据我所知,这在任何地方都没有记录......你可以想象他们将如何从这个小sudo代码进入你的代码:

希望这里的一些人可以使用此代码,我已经对其进行了测试并且它可以工作,但是,GLKit 中似乎存在一个错误,如果您使用 self.effect2 = [[GLKBaseEffect alloc] init]; 用于渲染对象的 GLKit 代码类型,而不是普通的 GLES2.0 管道,查询将无法为您提供正确的答案......(从不隐藏)虽然我测试了隐藏 GLKBaseEffect 对象的管道对象,(失败)所以可能只是混合这两种类型存在一个错误,如果你采用另一种方式,让一个 GLKBaseEffect 对象隐藏一个管道对象,它给出了正确的答案,我还没有进一步测试。

所以问题是,我敢打赌我可以更进一步,并以某种方式在顶点/片段着色器中创建碰撞检测......我发现的这段代码看起来像是一个开始......鉴于这两段 sudo 代码,有人能得到我吗更接近碰撞检测,当“部分”完全进入另一个部分时触发?更快更容易/第一步可能是在触发积极因素之前将整个对象隐藏在另一个对象中,这将是一个很好的开始,有什么想法吗?

http://ucv.academia.edu/RhadamésCarmona/Papers/743483/Volume-Surface_Collision_Detection

http://ucv.academia.edu/RhadamésCarmona/Papers/743483/Volume-Surface_Collision_Detection

0 投票
2 回答
3001 浏览

actionscript-3 - 动作脚本 3 - 只有在图像部分单击鼠标时才可以触发单击事件?

我有一个问题,我有潜在的解决方案。但我想确认是否有一种简单易行的方法来解决我的问题。

应用类型:

等距游戏

问题陈述:

我在我的 Flash 应用程序中加载图像并附加了鼠标事件。

我加载的图像是道具图像,如车辆、树木、建筑物等,它们都是透明的。

示例:红球资产(请忽略我用于描述问题的黄色背景)

红球资产

如果我点击实际的图像区域(红色),那么一切都很完美

当我单击空白图像部分(或透明区域,我以黄色显示)时,我不想触发 mouseevent

我知道一种方法是在 Flash 中创建蒙版。我不想这样做,除非那是最后的选择,因为我加载图像资产而不是 Flash 资产,并且我不想为所有资产创建新的蒙版资产

我将采用另一种方法,即使用 Bitmap 的 getPixel 方法。这里讨论。

但是这种方法还有另一个问题。

当我单击资产的空白部分时,我可能能够忽略单击事件,但如果在同一位置的图像后面有其他资产,那么我需要处理被遮挡图像的单击事件。

好吧,考虑到这个问题的解决方案将我带到了getObjectsUnderPoint,在那里我可以扫描被遮挡的资产

0 投票
1 回答
7915 浏览

r - ggplot2:如何在绘图上透明地遮蔽隔日

请问我在这里做错了什么?我正在尝试用透明灰色遮蔽每天 24 小时的交替矩形。但是只有来自 for 循环的最后一个矩形被绘制(?!?)如果我手动而不是通过 for 循环来做事情,它工作正常。

有没有办法对其进行矢量化以避免for循环?(可以用 qplot 完成吗?)我是 ggplot2 的新手,是的,我阅读了 Hadley 的网站、书籍和示例。

第二个问题:美学上的 alpha 设置不会阻止矩形遮挡背景。如何获得透明度?

0 投票
2 回答
671 浏览

algorithm - 通过重叠或缺乏对一维线进行分组

编辑:层次结构不适合我的目标。留下原始请求,但我回答了满足以下核心请求(重叠/非重叠规则)的内容。

假设有一组 1D 线,每条线由 2 个无符号整数描述:start 和 end,start < end。我想根据它们是否重叠来创建组,但我不希望组包含任何不重叠的行。在一条线在多个组中的情况下,我想我需要某种层次结构来跟踪组中的组......

这是规则:

  • 重叠的线必须在层次结构中尽可能低地组合在一起。
  • 不重叠的线不能在同一组中。

无论如何,这是一个示例图片:

线条

快速浏览一下,我可以说Line Aand Line Cform Group 0Line Hand Line Iform Group 1, and Line Bis Group 2。其他所有内容都是重叠的组,Line DGroup 1and中Group 2Line EGroup 0and中Group 1,并且Line FandLine G都在这三个组中。所以这里有两层分组,但我很确定可能有 N 取决于问题的复杂性。而且我也很确定我的示例没有代表一些问题。

处理这个问题的典型算法是什么?

0 投票
1 回答
558 浏览

c++ - DirectX 着色器无法正常工作?

好的,所以我有这个用于环境光遮蔽的着色器。它正确加载到世界,但它只是将所有模型显示为白色。我不知道为什么。我只是在模型渲染时运行着色器,对吗?还是我需要制作渲染目标或其他东西?如果是这样,那怎么办?我正在使用 C++。这是我的着色器。

0 投票
1 回答
750 浏览

audio - XAudio2 遮挡处理

我正在研究自制游戏引擎,目前正在研究音频引擎的实现。这主要是出于自我教育的原因。我想为通用音频处理创建一个接口包装器,因此我可以根据需要在 OpenAL、XAudio2 或其他平台之间切换。我也希望这段代码是可重用的,所以我试图让它尽可能完整,并让各种系统实现尽可能多的功能。目前,我专注于 XAudio2 实现,并且可能会在以后转向 OpenAL 实现。

在过去的几个月里,我读了很多关于 3D 处理(监听器/发射器)、环境效果(混响)、排斥、遮挡、阻塞和直达声的文章。我希望能够在音频播放中使用任何这些效果。虽然我已经尽我所能研究了这些主题,但我找不到任何关于如何实际实现遮挡(直接和反射信号消音)、阻塞(直接信号消音)或排斥(反射信号消音)的示例。阅读 MSDN 文档似乎是对遮挡的被动引用,但没有直接涉及实现。我发现的最好的是通用的“使用低通滤波器”,这对我没有多大帮助

所以我的问题是:使用 XAudio2,如何实现音频反射信号消音(排除)和音频直接信号消音(阻塞)或同时实现(阻塞)?音频图会是什么样子,这些与混响环境效果有何关系?

编辑 2013-03-26
在进一步思考图表时,我意识到我可能没有从正确的角度看图表。
图表是否应该是:源 → 效果(子混音)→ 母带
-或 -
图表是否应该一般如下所示:

第二个图将分割图,以便可以分别计算排除和阻塞;我的部分困惑是如何独立处理它们。
那么,我认为来自 3D 音频 DSP 结构的混响设置将应用于反射路径;多普勒将应用于直接路径或直接路径和反射路径;并且混响环境效果只会影响反射路径。这是否接近正确的音频图模型?

0 投票
1 回答
208 浏览

android - 如何在android上实时克隆一段屏幕?

我试图通过触摸事件将屏幕的覆盖部分克隆到图像视图来解决手指遮挡问题。我从 /dev/graphics/fb0 中提取图像并根据触摸事件裁剪图像。

从 fb0 获取并写入图像,
然后我遇到了转换它的麻烦,以便我可以将它放在 ImageView 中。
使用位图是最好的方法吗?这是一个好方法还是我完全错过了标记?

编辑:这是截取屏幕截图的正确方法吗?我听说对图像进行编码取决于系统,如果您知道更好的方法,我会全神贯注。

0 投票
2 回答
4474 浏览

opencv - How to Handle Occlusion and Fragmentation

I am trying to implement a people counting system using computer vision for uni project. Currently, my method is:

  1. Background subtraction using MOG2
  2. Morphological filter to remove noise
  3. Track blob
  4. Count blob passing a specified region (a line)

The problem is if people come as group, my method only counts one people. From my readings, I believe this is what called as occlusion. Another problem is when people looks similar to background (use dark clothing and passing a black pillar/wall), the blob is separated while it is actually one person. enter image description here

From what I read, I should implement a detector + tracker (e.g. detect human using HOG). But my detection result is poor (e.g. 50% false positives with 50% hit rate; using OpenCV human detector and my own trained detector) so I am not convinced to use the detector as basis for tracking. Thanks for your answers and time for reading this post!