问题标签 [aabb]

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 投票
2 回答
2914 浏览

c++ - 从 Box 计算 AABB(中心、halfSize、旋转)

我想从我的 Box 类中计算 AABB(轴对齐边界框)。

盒子类:

AABB 类(方框,但没有旋转):

Ofc,当rotation = (0,0,0), BoundingBox = Box. 但是如何计算包含 Box 中所有内容的最小 BoundingBox whenrotation = (rx,ry,rz)呢?

如果有人问:旋转是弧度,我在 DirectX 矩阵旋转中使用它:

0 投票
1 回答
1285 浏览

c++ - 在对象旋转/平移后重新计算正确的 AABB

我在这里看到了这个主题,但它并没有真正帮助我解决问题:( )因为我正在使用 libqglviewer 并且出于某种奇怪的原因,如果我确实使用 glLoadIdentity() 对象(常规立方体)会消失:(所以我的解决方法是每次我必须使用 glPopMatrix 和 glPushMatrix 来保持世界矩阵完好无损翻译/旋转一个对象。原始矩阵被存储起来,然后一旦翻译/旋转完成,我就会再次将其弹出。

到目前为止效果很好,但是一旦我尝试实现边界框的重新计算,我的框从与立方体相同的位置开始,但是一旦我开始旋转它,边界框有时会“内爆”,因此我需要检查最大值/min 角落,所以它们不会比立方体本身小,但是当我旋转相机时,边界框会移动到一侧或另一侧。

我正在使用 GLM 加载模型,不幸的是旧版 OpenGL,我对旧版 OGL 的工作原理有些熟悉,但我认为重新计算边界框时的计算有些不对劲。

这段代码在我的渲染函数中:

这是我设置边界框的代码:

最后一块是我重新计算盒子的地方:

我一直在尝试关注这篇文章如何在平移/旋转后重新计算轴对齐边界框?但还没有设法让它与我上面的代码一起工作。

关于我哪里出错的任何指示都会有所帮助。

0 投票
1 回答
2089 浏览

webgl - WEBGL Three.js 我如何创建相同大小的网格?

我想要 AABB colsion,所以我做了一个相同大小的 MESH 的立方体,我试试这个。但效果不好。

我如何创建相同大小的网格????

0 投票
1 回答
116 浏览

c++ - 3d aabb 作为地图中的键

我需要 3D AABB(轴对齐边界框)作为地图中的关键。主要问题是,地图中不能有一对 AABB 键以某种方式相互交叉。我不知道我应该使用哪个结构/容器。

有什么建议么?

0 投票
2 回答
634 浏览

algorithm - 快速轴对齐单元遍历算法

  • 给定一个轴对齐的正方形,分为四个大小相等的单元格 A、B、C 和 D。
  • 给定一条从点 s1 到点 s2 的线段。

找到按遍历顺序排序的段(如果有)遍历的单元格的最快方法是什么?

细胞草图

在上面的例子中,正确的结果是:

  • 第 1 段:[D]
  • 第 2 段:[A,B]
  • 第 3 段:[C、D、B]
  • 第 4 段:[]
  • 第 5 段:[C]
0 投票
2 回答
646 浏览

c - 优化轴对齐边界框检查

我目前正在大量使用点云,并且我已经实现了一种分割算法,该算法将具有特定最大距离的点聚集成段。

为了优化这一点,我给每个段一个轴对齐的边界框,以检查给定点是否可能与段匹配,然后再仔细观察并迭代这些点并计算距离(我实际上使用八叉树这个,修剪掉大部分的点。)

我已经通过 gnuprof 运行了我的程序,结果如下:

如您所见,大部分计算时间都花在otree_node_out_of_bounds其中实现如下:

其中SEGMENTATION DIST是编译时间常数,以允许 gcc 进行一些常数折叠。_llf并且_urb是类型float[3]并且代表八叉树的边界框。

所以,我的问题基本上是,是否可以对这个函数进行一些偷偷摸摸的优化,或者更一般地说,有没有更有效的方法来对 AABB 进行边界检查,或者用不同的方式来表达它,我可以加快速度吗?通过使用一些 C/gcc 魔法以某种方式进行比较?

如果您需要更多信息来回答这个问题,请告诉我:)

谢谢,安迪。

0 投票
3 回答
3723 浏览

c++ - C++ 中的光线网格相交或 AABB 树实现,开销很小?

你能推荐我吗...

  • AABB树的经过验证的轻量级C / C ++实现?
  • 或者,另一种有效的数据结构,加上轻量级的 C/C++ 实现,来解决大量光线与大量三角形相交的问题?

“大数字”意味着射线和三角形都有几个 100k。

我知道 AABB 树是 CGAL 库的一部分,并且可能是 Bullet 等游戏物理库的一部分。但是,我不希望在我的项目中增加大量额外库的开销。理想情况下,我想使用一个小型的浮点型模板化标头实现。只要它可以轻松集成到我的项目中,我也会使用一堆 CPP 文件。依赖boost没问题。

是的,我用谷歌搜索过,但没有成功。

我应该提到我的应用程序上下文是网格处理,而不是渲染。简而言之,我将参考网格的拓扑结构从 3D 扫描转换为网格的几何形状。我正在从顶点和沿着参考网格的法线向 3D 扫描拍摄光线,我需要恢复这些光线与扫描的交点。

编辑

几个答案/评论指向最近邻数据结构。我创建了一个关于使用最近邻方法处理光线网格交叉点时出现的问题的小插图。最近邻方法可以用作在许多情况下都有效的启发式方法,但我不相信它们实际上可以系统地解决问题,就像 AABB 树一样。

在此处输入图像描述

0 投票
1 回答
237 浏览

flash - 找到AABB的原始宽度和高度

我有一个旋转的矩形,我不知道它的原始宽度和高度。由于当前的宽度和高度只是封装矩形的边界框,我如何找到实际的宽度和高度?谢谢。

0 投票
2 回答
2467 浏览

raytracing - 如何在包围体层次结构中进行排序和比较

我目前正在为 3D-Triangles 实施边界体积层次结构。可悲的是,所有对 BVH 的解释都未能体现在您对对象进行分类以进行拆分的部分。对于初学者,我想以平衡树为目标并使用中位数切割。这将要求我在当前节点的拆分轴上的空间标准之后对三角形或其边界框(AABB)进行排序。我真的不确定BB或三角形的最大或最小延伸是否足以进行适当的分离,因为某些三角形可能更大。我也不确定比较边界框还是三角形更好。

问题的第二部分是对每一步进行排序似乎很昂贵。计算机图形学中的其他算法使用预先排序的列表,然后根据拆分标准拆分这些列表。我看不出如何有效地比较三角形并确保它们属于一个列表。这是否意味着我必须每一步都对列表进行排序?

0 投票
1 回答
381 浏览

c++ - 稀疏的 AABB 树是用指针制作的吗?

我正在使用轴对齐边界框的八叉树来分割场景中我进行物理模拟的空间。问题是,场景非常大(空间),我需要检测远距离大物体的碰撞以及近距离的小物体。问题是,场景中只有少数几个,但相距几公里,所以这意味着很多空白空间。所以基本上我浪费了 2 GB 的 RAM 来存储边界框对于空扇区。我只想为实际包含某些东西的扇区分配内存(让它们成为指向 AABB 的指针),但这意味着每帧有数千个分配来重新创建八叉树。如果我使用一个池为了应对分配的放缓,这仍然意味着我为我的应用程序分配了 2 gigs 的 RAM。还有其他方法可以实现这一点吗?