BufferGeometry.getAttribute(name) 方法返回一个 Float32BufferAttribute、Int8BufferAttribute 或其他 BufferAttribute,其中包含着包含着几何形状中具有给定名称的属性的所有数据。
name (String) — 属性名称,例如 "position"、"normal" 或 "uv"。BufferAttribute 例: Float32BufferAttribute,其中包含着所有三角形顶点的位置信息。
// 创建一个三角形网格
var geometry = new THREE.BufferGeometry();
var positions = new Float32Array([
-1.0, -1.0, 0.0,
1.0, -1.0, 0.0,
0.0, 1.0, 0.0
]);
geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));
// 获取 "position" 属性,以施加某些变换
var positionAttribute = geometry.getAttribute('position');
for ( var i = 0; i < positionAttribute.count; i ++ ) {
var x = positionAttribute.getX(i);
var y = positionAttribute.getY(i);
var z = positionAttribute.getZ(i);
positionAttribute.setZ( i, z + 1 ); // 在 z 轴上平移 1
}
BufferAttribute 可以进行 modify/update 操作,如上述示例所示。getAttribute() 方法生成一个指向 BufferAttribute 的引用,但不会在内存中创建新的对象。Float32BufferAttribute、Int32BufferAttribute 和 Uint16BufferAttribute 等。