BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

BufferGeometry.setIndex()

BufferGeometry.setIndex() 方法用于设置一个顶点索引缓冲对象。顶点索引缓冲对象指定了在几何体中哪些顶点应该连接在一起以形成面。

语法

bufferGeometry.setIndex(index);

参数

  • index:一个 BufferAttributeUint16ArrayUint32Array。如果该参数为 null 或未定义,则缓冲区中的索引缓冲将被移除。

描述

如果您已经创建了一个显式顶点索引数组,并且希望使用该数组作为缓冲区,则可以将该数组传递给 setIndex()。否则,Three.js 可以自动根据浮点型的顶点数组中的顺序生成一个索引缓冲区。

在设置索引缓冲区之前,应该先设置 BufferGeometryattributes 属性。如果您提供了一个正确的 index,Three.js 将自动根据您提供的索引缓冲区来生成三角形的细分方式,对于每个三角形将推断三个顶点。如果传递给 setIndex() 的缓冲区已经被分配给其他对象,则会抛出异常。

如果没有用到 setIndex(),则会认为几何体中索引缓冲对象不存在,这将禁止使用所有的.draw*() 方法。

请注意,可以将 index 传递给 drawArrays() 来明确指定顶点执行的顺序。

示例

// 创建 BufferGeometry
var bufferGeometry = new THREE.BufferGeometry();

// 设置属性
var positions = new Float32Array( [
	0.0, 0.0, 0.0,
	1.0, 0.0, 0.0,
	0.0, 1.0, 0.0
] );

var normals = new Float32Array( [
	0.0, 0.0, 1.0,
	0.0, 0.0, 1.0,
	0.0, 0.0, 1.0
] );

bufferGeometry.setAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
bufferGeometry.setAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );

// 设置索引缓冲区
var indices = new Uint16Array( [ 0, 1, 2 ] );
bufferGeometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );