【发布时间】:2018-03-31 04:10:29
【问题描述】:
我正在尝试实现一个目标函数,以最大限度地减少 2 个不规则形状 3d 对象的重叠。虽然重叠的最准确测量是相交体积,但它的计算量太高,因为我正在处理具有 1000 多个面且不是凸面的复杂对象。
我想知道是否还有其他计算速度更快的 3d 对象之间的交集测量? 2 对测量的要求是: 1、测量为0时,不能有重叠; 2. 测量值应该是一个标量(不是布尔值),表示重叠的程度,但这个值不需要很准确。
我正在考虑的可能测量包括某种 2D 相交表面积或 1D 穿透深度。或者,我可以使用基于样本的方法估计体积,该方法对一个对象内的点进行采样并测试另一个对象中存在的点的百分比。但我不知道在复杂的 3d 形状内采样点以及测试一个点是否被这种形状包围的计算成本有多大。
我将非常感谢有关此问题的任何建议、代码或方程式。此外,如果您可以建议任何接受 .obj、.ply...等文件并执行 3D 几何计算的库(最好是 python 库),那就太好了!如果我找到好的方法,我也会在这里发布。
更新: 我找到了一个很好的 Python 库,叫做 Trimesh,它可以执行我和其他人在这篇文章中提到的所有计算。它计算与 Blender 后端的精确相交量;它可以体素化网格并计算共同占用的体素的体积;它还可以在一个网格内执行表面和体积点采样,并在另一个网格内执行测试点控制。我发现表面点采样和包含测试(表面交叉的排序)和网格方法是最快的。
【问题讨论】:
-
本题不涉及代码,纯数学题。最后一部分要求图书馆。两者都是 SO 题外话。
-
@KlausD。编程不仅仅是变量和分号。
标签: python 3d computational-geometry bin-packing