如何使用three.js计算对象的内部边界框

时间:2019-05-08 08:21:57

标签: javascript three.js

我需要计算导入到three.js场景中的模型的内部/内部边界框。举一个简化的例子,想象一个壁厚可变的矩形谷仓,我们如何计算该谷仓的内部尺寸?

我尝试创建一个Box3并使用Box3的setFromObject方法直接从谷仓对象设置其尺寸。这对于典型的边界框效果很好,但是我还没有找到任何方法来计算对象的内部边界框。

Example barn walls model with actual bounding box

Top down view with desired inner bounding box

1 个答案:

答案 0 :(得分:1)

使用模型切片将问题从3D减少到2D。

步骤1 -使用N个水平面对模型进行切片→在2D空间中获得N个形状,每个形状都有自己的Z高度。

步骤2 -每个切片:

  1. 找到内部极端线(下面以红色和绿色显示)
  2. 与极端线相交以在给定的Z高度处构建内部矩形。

finding best inner volume

第3步-具有矩形集合,将其合并到内部体积中:

内部体积将是最小的常用矩形的形状。 检查从什么矩形得到的结果来知道给定形状的min(Z)max(Z)

finding best inner volume

优化以获取最佳音量

可以通过排除某些切片或添加新切片来增加内部音量。例如,我们有内部菱形形状。取max(Z)和min(Z)会产生窄列,这显然不是这种情况下的最佳体积。

从顶部和底部移除切片将改善结果。希望你能明白,对不起我的绘画技巧!

OPTIMIZING for best volume