【问题标题】:How to calculate the inside bounding box of an object with three.js如何使用three.js计算对象的内部边界框
【发布时间】:2019-05-08 18:49:36
【问题描述】:

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

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

Example barn walls model with actual bounding box

Top down view with desired inner bounding box

【问题讨论】:

  • 我假设您正在寻找最佳的内部容积?即边界框必须占据尽可能多的空间

标签: javascript three.js


【解决方案1】:

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

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

第 2 步 - 对于每个切片:

  1. 查找内部极值线(如下图红色和绿色所示)
  2. 与极端线相交以在给定 Z 高度构建内部矩形。

第 3 步 - 收集矩形,将它们合并到内部体积中:

内部体积将是最小公共矩形的形状。 检查从哪些矩形中得知给定形状的min(Z)max(Z)

优化以获得最佳音量

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

从顶部和底部删除切片将改善结果。希望您能理解,对不起我的绘画技巧不佳!

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 2017-08-10
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多