BufferGeometry.setAttribute()
BufferGeometry.setAttribute(name, attribute)
该方法可用于设置或更新一个特定属性的缓冲区数据,并添加或替换缓冲区属性。
name
:(String) 属性字段名称。attribute
:(BufferAttribute) 缓冲区属性。BufferGeometry.setAttribute()
方法用于设置或更新一个特定属性的缓冲区数据,并添加或替换缓冲区属性。如果该属性已经存在,则会直接覆盖其内容,否则会创建新的属性。
值得注意的是,你可以使用 BufferGeometry.addAttribute()
方法通过属性字段名称来添加一个新的属性,但是如果你希望更新或替换现有属性的数据,则应该使用 BufferGeometry.setAttribute()
方法。
const geometry = new THREE.BufferGeometry();
// 创建位置属性
const positions = new Float32Array( [
0, 0, 0,
1, 0, 0,
0, 1, 0
] );
const positionAttribute = new THREE.BufferAttribute( positions, 3 );
geometry.setAttribute( 'position', positionAttribute );
// 更新位置属性数据
positions[3] = 2;
positionAttribute.needsUpdate = true;
在上面的代码中,我们使用 BufferGeometry.setAttribute()
方法创建了一个名为 "position"
的新属性,并将positionAttribute
添加到几何体中。然后,我们更新 positions
数组的第四个值(即修改 $x$ 坐标的第一个位置),以查看是否可以更新缓冲区属性。最后,我们将 needsUpdate
设置为 true
,以告诉引擎这是一个动态属性,需要在下一帧进行更新。