Data structures 曲面网格三角形:内的查询空间

Data structures 曲面网格三角形:内的查询空间,data-structures,mesh,voxel,spatial-query,r-tree,Data Structures,Mesh,Voxel,Spatial Query,R Tree,我有一个三角形的曲面网格。假设曲面网格是闭合的 我打算进行空间查询,以确定空间是否在曲面网格中。空间单位可以由边界框、体素或任何其他空间工具表示 有哪些数据结构可用于执行上述查询 有哪些算法可以从头开始实现查询 有现成的可用库吗 谢谢=)我认为R树不能直接帮助找到封闭网格中的内容 如果数据有单独的“气泡”,即由网格包围的大块空间,则这些气泡可以用边界框表示,并放入R树索引中。这将有助于找到哪些气泡可能与查询对象相交,以便进行进一步的检查(实际上,这将消除无法相交的气泡,因此它们不需要进行检

我有一个三角形的曲面网格。假设曲面网格是闭合的

我打算进行空间查询,以确定空间是否在曲面网格中。空间单位可以由边界框、体素或任何其他空间工具表示

  • 有哪些数据结构可用于执行上述查询
  • 有哪些算法可以从头开始实现查询
  • 有现成的可用库吗

谢谢=)

我认为R树不能直接帮助找到封闭网格中的内容

如果数据有单独的“气泡”,即由网格包围的大块空间,则这些气泡可以用边界框表示,并放入R树索引中。这将有助于找到哪些气泡可能与查询对象相交,以便进行进一步的检查(实际上,这将消除无法相交的气泡,因此它们不需要进行检查)


如果你能以某种方式将网格内部的空间分割成更小的块,这些块就可以被索引。如果它们重叠或延伸到网格外,则可以。

如果网格完全闭合,并且对于单个点,可以使用从点向任何方向发射光线,并查看光线击中网格的次数。如果它击中奇数次,它在里面,如果它击中偶数,它在外面。但是,对于其他形状,您可能需要

现有的库将取决于您为哪种平台/编程语言执行此操作,但如果您有选择的自由,可以从哪种平台/编程语言开始

正如Antonin在他们的回答中提到的,R树索引将帮助您实现这一点,但不会直接检查网格中是否有点或其他形状。如果您可以将网格内的空间分解为长方体,R形树将帮助您“快速检查”网格内的点或形状是否正确。

VDB:空心vs填充 在以下视频中,我们将演示Houdini如何创建两种类型的VDB:

  • 距离:空心体积:在外部几何体上创建体素壳
  • 雾:实体体积:用体素填充几何体

含意
这意味着可以通过VDB标记空心体素和填充体素。但是我不知道如何用体素代码编程。

谢谢!让我试试光线投射法:)