始终通过计算 A-Frame 中对象的边界框来获得 Infinity

Always get Infinity by caculating bouding box of object in A-Frame

我使用 three.js 获取 A-Frame 场景中对象的边界框。

let boundingBox = new THREE.Box3().setFromObject(element.object3D);

但是boundingBox中的6个值总是Infinity或-Infinity作为Three.Box3的默认值。

我在 A-Frame 的基本示例中使用 a-box 和我自己的 gltf 2.0 模型之一进行了尝试。

项目:https://glitch.com/edit/#!/get-bounding-box

有人知道原因吗?或者在A-Frame中获取边界框的一些方法?

感谢您的帮助。

您在实际模型加载之前计算边界框。像这样尝试:

leftDoor.addEventListener( 'model-loaded', () => {

     getWorldBound( leftDoor );  

} );

必须实际加载 glTF 网格,这需要时间。试试

el.addEventListener('loaded', function() { doStuffWithModelSize(el); } );

function doStuffWithModelSize(el){
  var bbox = new THREE.Box3().setFromObject( el.mesh );
  var width = bbox.max.x - bbox.min.x;
  var height = bbox.max.y - bbox.min.y;
  var depth = bbox.max.z - bbox.min.z;
  if (Number.isFinite( height ) ) { 
    // do stuff with those values
  } else { 
    window.setTimeout( () => { verticalAdjust(el) }, 2000)
    // sometimes it's actually still not enough to you can try until it is
  }
}