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
等。