Three.js API手册

动画
AnimationAction AnimationClip AnimationMixer AnimationObjectGroup AnimationUtils KeyframeTrack PropertyBinding PropertyMixer
动画 / 轨道
BooleanKeyframeTrack ColorKeyframeTrack NumberKeyframeTrack QuaternionKeyframeTrack StringKeyframeTrack VectorKeyframeTrack
音频
Audio AudioAnalyser AudioContext AudioListener PositionalAudio
摄像机
ArrayCamera Camera CubeCamera OrthographicCamera PerspectiveCamera StereoCamera
常量
Animation Core CustomBlendingEquation DrawModes Materials Renderer Textures
核心
BufferAttribute BufferGeometry Clock DirectGeometry EventDispatcher Face3 Geometry InstancedBufferAttribute InstancedBufferGeometry InstancedInterleavedBuffer InterleavedBuffer InterleavedBufferAttribute Layers Object3D Raycaster Uniform
核心 / BufferAttributes
BufferAttribute_Types
弃用列表
DeprecatedList
附件
Earcut ShapeUtils
附件 / 核心
Curve CurvePath Font Interpolations Path Shape ShapePath
附件 / 曲线
ArcCurve CatmullRomCurve3 CubicBezierCurve CubicBezierCurve3 EllipseCurve LineCurve LineCurve3 QuadraticBezierCurve QuadraticBezierCurve3 SplineCurve
附件 / 物体
ImmediateRenderObject
几何体
BoxBufferGeometry BoxGeometry CircleBufferGeometry CircleGeometry ConeBufferGeometry ConeGeometry CylinderBufferGeometry CylinderGeometry DodecahedronBufferGeometry DodecahedronGeometry EdgesGeometry ExtrudeBufferGeometry ExtrudeGeometry IcosahedronBufferGeometry IcosahedronGeometry LatheBufferGeometry LatheGeometry OctahedronBufferGeometry OctahedronGeometry ParametricBufferGeometry ParametricGeometry PlaneBufferGeometry PlaneGeometry PolyhedronBufferGeometry PolyhedronGeometry RingBufferGeometry RingGeometry ShapeBufferGeometry ShapeGeometry SphereBufferGeometry SphereGeometry TetrahedronBufferGeometry TetrahedronGeometry TextBufferGeometry TextGeometry TorusBufferGeometry TorusGeometry TorusKnotBufferGeometry TorusKnotGeometry TubeBufferGeometry TubeGeometry WireframeGeometry
辅助对象
ArrowHelper AxesHelper BoxHelper Box3Helper CameraHelper DirectionalLightHelper FaceNormalsHelper GridHelper PolarGridHelper PositionalAudioHelper HemisphereLightHelper PlaneHelper PointLightHelper RectAreaLightHelper SkeletonHelper SpotLightHelper VertexNormalsHelper
灯光
AmbientLight DirectionalLight HemisphereLight Light PointLight RectAreaLight SpotLight
灯光 / 阴影
DirectionalLightShadow LightShadow SpotLightShadow
加载器
AnimationLoader AudioLoader BufferGeometryLoader Cache CompressedTextureLoader CubeTextureLoader DataTextureLoader FileLoader FontLoader ImageBitmapLoader ImageLoader Loader LoaderUtils MaterialLoader ObjectLoader TextureLoader
加载器 / 管理器
DefaultLoadingManager LoadingManager
材质
LineBasicMaterial LineDashedMaterial Material MeshBasicMaterial MeshDepthMaterial MeshDistanceMaterial MeshLambertMaterial MeshMatcapMaterial MeshNormalMaterial MeshPhongMaterial MeshPhysicalMaterial MeshStandardMaterial MeshToonMaterial PointsMaterial RawShaderMaterial ShaderMaterial ShadowMaterial SpriteMaterial
数学库
Box2 Box3 Color Cylindrical Euler Frustum Interpolant Line3 Math Matrix3 Matrix4 Plane Quaternion Ray Sphere Spherical Triangle Vector2 Vector3 Vector4
数学库 / 插值
CubicInterpolant DiscreteInterpolant LinearInterpolant QuaternionLinearInterpolant
物体
Bone Group Line LineLoop LineSegments LOD Mesh Points Skeleton SkinnedMesh Sprite
渲染器
WebGLMultisampleRenderTarget WebGLRenderer WebGLRenderTarget WebGLRenderTargetCube
渲染器 / 着色器
ShaderChunk ShaderLib UniformsLib UniformsUtils
场景
Fog FogExp2 Scene
纹理贴图
CanvasTexture CompressedTexture CubeTexture DataTexture DataTexture3D DepthTexture Texture VideoTexture

BufferGeometry

是面片、线或点几何体的有效表述。包括顶点位置,面片索引、法相量、颜色值、UV 坐标和自定义缓存属性值。使用 BufferGeometry 可以有效减少向 GPU 传输上述数据所需的开销。

读取或编辑 BufferGeometry 中的数据,见 BufferAttribute 文档。

几何体的更多使用示例,详见 Geometry。

示例

var geometry = new THREE.BufferGeometry(); 
// 创建一个简单的矩形. 在这里我们左上和右下顶点被复制了两次。 
// 因为在两个三角面片里,这两个顶点都需要被用到。 
var vertices = new Float32Array( [ -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0 ] ); // itemSize = 3 因为每个顶点都是一个三元组。 
geometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) ); 
var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } ); 
var mesh = new THREE.Mesh( geometry, material );

Mesh with non-indexed faces
Mesh with indexed faces
Lines
Indexed Lines
Particles
Raw Shaders

构造函数

BufferGeometry()

创建一个新的 BufferGeometry. 同时将预置属性设置为默认值.

属性

# .attributes : Object

通过 hashmap 存储该几何体相关的属性,hashmap 的 id 是当前 attribute 的名称,值是相应的 buffer。 你可以通过 .addAttribute 和 .getAttribute 添加和访问与当前几何体有关的 attribute。

# .boundingBox : Box3

当前 bufferGeometry 的外边界矩形。可以通过 .computeBoundingBox() 计算。默认值是 null

# .boundingSphere : Sphere

当前 bufferGeometry 的外边界球形。可以通过 .computeBoundingSphere() 计算。默认值是 null

# .drawRange : Object

用于判断几何体的哪个部分需要被渲染。该值不应该直接被设置,而需要通过 .setDrawRange 进行设置。
默认值为 { start: 0, count: Infinity }

# .groups : Array

将当前几何体分割成组进行渲染,每个部分都会在单独的 WebGL 的 draw call 中进行绘制。该方法可以让当前的 bufferGeometry 可以使用一个材质队列进行描述。

分割后的每个部分都是一个如下的表单: { start: Integer, count: Integer, materialIndex: Integer } start 表明当前 draw call 中的没有索引的几何体的几何体的第一个顶点;或者第一个三角面片的索引。 count 指明当前分割包含多少顶点(或 indices)。 materialIndex 指出当前用到的材质队列的索引。

通过 .addGroup 来增加组,而不是直接更改当前队列。

# .id : Integer

当前 bufferGeometry 的唯一编号。

# .index : BufferAttribute

允许顶点在多个三角面片间可以重用。这样的顶点被称为"已索引的三角面片(indexed triangles)"并且使用时和Geometry中一致: 每个三角面片都和三个顶点的索引相关。该 attribute 因此所存储的是每个三角面片的三个顶点的索引。 如果该 attribute 没有设置过,则 renderer 假设每三个连续的位置代表一个三角面片。 默认值是 null

# .isBufferGeometry : Boolean

用于检查当前类或派生类的类型是 BufferGeometries。默认值是 true

该值用于内部优化,你不应该手动修改该值。

# .morphAttributes : Object

存储 BufferAttribute 的 Hashmap,存储了几何体 morphTargets 的细节信息。

# .name : String

当前 bufferGeometry 实例的可选别名。默认值是空字符串。

# .userData : Object

存储 BufferGeometry 的自定义数据的对象。为保持对象在克隆时完整,该对象不应该包括任何函数的引用。

# .uuid : String

当前对象实例的 UUID,该值会自动被分配,且不应被修改。

方法

EventDispatcher 在该类上可用的所有方法。

# .addAttribute ( name : String, attribute : BufferAttribute ) : BufferGeometry

为当前几何体增加一个 attribute。 的属性,在类的内部,有一个存储 .attributes 的 hashmap, 通过该 hashmap,遍历 attributes 的速度会更快。而使用该方法,可以向 hashmap 内部增加 attribute。 所以,你需要使用该方法来添加 attributes。

# .addGroup ( start : Integer, count : Integer, materialIndex : Integer ) : null

为当前几何体增加一个 group,详见 groups 属性。

# .applyMatrix ( matrix : Matrix4 ) : null

用给定矩阵转换几何体的顶点坐标。

# .center () : BufferGeometry

根据边界矩形将几何体居中。

# .clone () : BufferGeometry

克隆当前的 BufferGeometry。

# .copy ( bufferGeometry : BufferGeometry ) : BufferGeometry

将参数指定的 BufferGeometry 的值拷贝到当前 BufferGeometry 中。

# .clearGroups ( ) : null

清空所有的 groups。

# .computeBoundingBox () : null

计算当前几何体的的边界矩形,该操作会更新已有 [param:.boundingBox]。
边界矩形不会默认计算,需要调用该接口指定计算边界矩形,否则保持默认值 null

# .computeBoundingSphere () : null

计算当前几何体的的边界球形,该操作会更新已有 [param:.boundingSphere]。
边界球形不会默认计算,需要调用该接口指定计算边界球形,否则保持默认值 null

# .computeVertexNormals () : null

通过面片法向量的平均值计算每个顶点的法向量。

# .dispose () : null

从内存中销毁对象。
如果在运行是需要从内存中删除 BufferGeometry,则需要调用该函数。

# .fromDirectGeometry ( Geometry : Geometry ) : BufferGeometry

通过 DirectGeometry 所包含的面数据生成一个 BufferGeometry 对象。对于线型几何体未实现该方法。

注意: DirectGeometry 主要用于内部 Geometry 和 BufferGeometry 的类型转换。

# .fromGeometry ( Geometry : Geometry ) : BufferGeometry

通过 Geometry 所包含的面信息生成一个 BufferGeometry 对象。对于线型几何体未实现该方法。

# .getAttribute ( name : String ) : BufferAttribute

返回指定名称的 attribute。

# .getIndex () : BufferAttribute

返回缓存相关的 .index。

# .lookAt ( vector : Vector3 ) : BufferGeometry

vector - 几何体所朝向的世界坐标。

旋转几何体朝向控件中的一点。该过程通常在一次处理中完成,不会循环处理。典型的用法是过通过调用 Object3D.lookAt 实时改变 mesh 朝向。

# .merge ( bufferGeometry : BufferGeometry, offset : Integer ) : null

同参数指定的 BufferGeometry 进行合并。可以通过可选参数指定,从哪个偏移位置开始进行 merge。

# .normalizeNormals () : null

几何体中的每个法向量长度将会为 1。这样操作会更正光线在表面的效果。

# .removeAttribute ( name : String ) : BufferAttribute

删除具有指定名称的 attribute。

# .rotateX ( radians : Float ) : BufferGeometry

在 X 轴上旋转几何体。该操作一般在一次处理中完成,不会循环处理。典型的用法是通过调用 Object3D.rotation 实时旋转几何体。

# .rotateY ( radians : Float ) : BufferGeometry

在 Y 轴上旋转几何体。该操作一般在一次处理中完成,不会循环处理。典型的用法是通过调用 Object3D.rotation 实时旋转几何体。

# .rotateZ ( radians : Float ) : BufferGeometry

在 Z 轴上旋转几何体。该操作一般在一次处理中完成,不会循环处理。典型的用法是通过调用 Object3D.rotation 实时旋转几何体。

# .scale ( x : Float, y : Float, z : Float ) : BufferGeometry

缩放几何体。该操作一般在一次处理中完成,不会循环处理。典型的用法是通过调用 Object3D.scale 实时旋转几何体。

# .setIndex ( index : BufferAttribute ) : null

设置缓存的 .index。

# .setDrawRange ( start : Integer, count : Integer ) : null

设置缓存的 .drawRange。详见相关属性说明。

# .setFromObject ( object : Object3D ) : BufferGeometry

通过 Object3D 设置该 BufferGeometry 的 attribute。

# .setFromPoints ( points : Array ) : BufferGeometry

通过点队列设置该 BufferGeometry 的 attribute。

# .toJSON () : Object

返回代表该 BufferGeometry 的 JSON 对象。

# .toNonIndexed () : BufferGeometry

返回已索引的 BufferGeometry 的非索引版本。

# .translate ( x : Float, y : Float, z : Float ) : BufferGeometry

移动几何体。该操作一般在一次处理中完成,不会循环处理。典型的用法是通过调用 Object3D.rotation 实时旋转几何体。

# .updateFromObject ( object : Object3D ) : BufferGeometry

通过 Object3D 更新 BufferGeometry 的 attribute。

Source

src/core/BufferGeometry.js