始终通过计算 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
}
}
我使用 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
}
}