Box3.setFromBufferAttribute() 是three.js(一个用于在浏览器上生成交互式 3D 图形的 JavaScript 库)中的一个方法,用于根据给定的缓冲区属性更新一个三维边框框盒(Box3)。
setFromBufferAttribute(attribute: THREE.BufferAttribute): void
attribute:缓冲区属性,类型为 THREE.BufferAttribute。此方法将更新 Box3 的最小值和最大值属性,以便与给定的缓冲区属性的数据范围匹配。
// 创建一个 BufferAttribute,其中包含三维坐标数据
const positions = new THREE.BufferAttribute(new Float32Array([
  -10, -20, -30,
   10,  20,  30,
]), 3);
// 创建一个 Box3 对象
const box = new THREE.Box3();
// 更新 Box3 的最小值和最大值属性,以便与 positions 缓冲区属性的数据范围匹配
box.setFromBufferAttribute(positions);
此方法没有返回值。
attribute 不是一个 THREE.BufferAttribute 对象,将抛出一个类型错误(TypeError)。当给定的缓冲区属性为空时,此方法将不会执行任何操作,因为无法确定 Box3 的范围。
对于一些带有偏移量的缓冲区属性,可以使用 setFromBufferAttribute 的变体 setFromBufferAttributeAndIndex,通过传递额外的索引参数来指定数据的偏移量。
这个方法通常用于构建包围盒或 AABB(Axis-Aligned Bounding Box)。如果要在 Box3 中加入或排除单个点或其他对象,则可以使用 Box3.expandByPoint()、Box3.expandByObject()、Box3.isEmpty() 等方法。