three-stdlib
Version:
stand-alone library of threejs examples
342 lines (279 loc) • 7.14 kB
TypeScript
import {
Vector3,
Color,
Vector2,
Vector4,
Box3,
Sphere,
Matrix4,
BufferGeometry,
Mesh,
Bone,
AnimationClip,
EventDispatcher,
Object3D,
} from 'three'
/**
* @deprecated Use Face3 instead.
*/
export interface MorphTarget {
name: string
vertices: Vector3[]
}
export interface MorphColor {
name: string
colors: Color[]
}
export interface MorphNormals {
name: string
normals: Vector3[]
}
/**
* Base class for geometries
*/
export class Geometry extends EventDispatcher {
constructor()
/**
* Unique number of this geometry instance
*/
id: number
uuid: string
readonly isGeometry: true
/**
* Name for this geometry. Default is an empty string.
* @default ''
*/
name: string
/**
* @default 'Geometry'
*/
type: string
/**
* The array of vertices hold every position of points of the model.
* To signal an update in this array, Geometry.verticesNeedUpdate needs to be set to true.
* @default []
*/
vertices: Vector3[]
/**
* Array of vertex colors, matching number and order of vertices.
* Used in ParticleSystem, Line and Ribbon.
* Meshes use per-face-use-of-vertex colors embedded directly in faces.
* To signal an update in this array, Geometry.colorsNeedUpdate needs to be set to true.
* @default []
*/
colors: Color[]
/**
* Array of triangles or/and quads.
* The array of faces describe how each vertex in the model is connected with each other.
* To signal an update in this array, Geometry.elementsNeedUpdate needs to be set to true.
* @default []
*/
faces: Face3[]
/**
* Array of face UV layers.
* Each UV layer is an array of UV matching order and number of vertices in faces.
* To signal an update in this array, Geometry.uvsNeedUpdate needs to be set to true.
* @default [[]]
*/
faceVertexUvs: Vector2[][][]
/**
* Array of morph targets. Each morph target is a Javascript object:
*
* { name: "targetName", vertices: [ new THREE.Vector3(), ... ] }
*
* Morph vertices match number and order of primary vertices.
* @default []
*/
morphTargets: MorphTarget[]
/**
* Array of morph normals. Morph normals have similar structure as morph targets, each normal set is a Javascript object:
*
* morphNormal = { name: "NormalName", normals: [ new THREE.Vector3(), ... ] }
* @default []
*/
morphNormals: MorphNormals[]
/**
* Array of skinning weights, matching number and order of vertices.
* @default []
*/
skinWeights: Vector4[]
/**
* Array of skinning indices, matching number and order of vertices.
* @default []
*/
skinIndices: Vector4[]
/**
* @default []
*/
lineDistances: number[]
/**
* Bounding box.
* @default null
*/
boundingBox: Box3 | null
/**
* Bounding sphere.
* @default null
*/
boundingSphere: Sphere | null
/**
* Set to true if the vertices array has been updated.
* @default false
*/
verticesNeedUpdate: boolean
/**
* Set to true if the faces array has been updated.
* @default false
*/
elementsNeedUpdate: boolean
/**
* Set to true if the uvs array has been updated.
* @default false
*/
uvsNeedUpdate: boolean
/**
* Set to true if the normals array has been updated.
* @default false
*/
normalsNeedUpdate: boolean
/**
* Set to true if the colors array has been updated.
* @default false
*/
colorsNeedUpdate: boolean
/**
* Set to true if the linedistances array has been updated.
* @default false
*/
lineDistancesNeedUpdate: boolean
/**
*
* @default false
*/
groupsNeedUpdate: boolean
/**
* Bakes matrix transform directly into vertex coordinates.
*/
applyMatrix4(matrix: Matrix4): Geometry
rotateX(angle: number): Geometry
rotateY(angle: number): Geometry
rotateZ(angle: number): Geometry
translate(x: number, y: number, z: number): Geometry
scale(x: number, y: number, z: number): Geometry
lookAt(vector: Vector3): void
fromBufferGeometry(geometry: BufferGeometry): Geometry
center(): Geometry
normalize(): Geometry
/**
* Computes face normals.
*/
computeFaceNormals(): void
/**
* Computes vertex normals by averaging face normals.
* Face normals must be existing / computed beforehand.
*/
computeVertexNormals(areaWeighted?: boolean): void
/**
* Compute vertex normals, but duplicating face normals.
*/
computeFlatVertexNormals(): void
/**
* Computes morph normals.
*/
computeMorphNormals(): void
/**
* Computes bounding box of the geometry, updating {@link Geometry.boundingBox} attribute.
*/
computeBoundingBox(): void
/**
* Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute.
* Neither bounding boxes or bounding spheres are computed by default. They need to be explicitly computed, otherwise they are null.
*/
computeBoundingSphere(): void
merge(geometry: Geometry, matrix?: Matrix4, materialIndexOffset?: number): void
mergeMesh(mesh: Mesh): void
/**
* Checks for duplicate vertices using hashmap for specified number of decimal points, e.g. 4 for epsilon of 0.0001
* Duplicated vertices are removed and faces' vertices are updated.
*/
mergeVertices(precisionPoints?: number): number
setFromPoints(points: Vector2[] | Vector3[]): this
sortFacesByMaterialIndex(): void
toBufferGeometry(): BufferGeometry
static createBufferGeometryFromObject(object: Object3D): BufferGeometry
toJSON(): any
/**
* Creates a new clone of the Geometry.
*/
clone(): Geometry
copy(source: Geometry): this
/**
* Removes The object from memory.
* Don't forget to call this method when you remove an geometry because it can cuase meomory leaks.
*/
dispose(): void
// These properties do not exist in a normal Geometry class, but if you use the instance that was passed by JSONLoader, it will be added.
bones: Bone[]
animation: AnimationClip
animations: AnimationClip[]
}
/**
* Triangle face.
*/
export class Face3 {
/**
* @param a Vertex A index.
* @param b Vertex B index.
* @param c Vertex C index.
* @param normal Face normal or array of vertex normals.
* @param color Face color or array of vertex colors.
* @param materialIndex Material index.
*/
constructor(
a: number,
b: number,
c: number,
normal?: Vector3 | Vector3[],
color?: Color | Color[],
materialIndex?: number,
)
/**
* Vertex A index.
*/
a: number
/**
* Vertex B index.
*/
b: number
/**
* Vertex C index.
*/
c: number
/**
* Face normal.
* @default new THREE.Vector3()
*/
normal: Vector3
/**
* Array of 3 vertex normals.
* @default []
*/
vertexNormals: Vector3[]
/**
* Face color.
* @default new THREE.Color()
*/
color: Color
/**
* Array of 3 vertex colors.
* @default []
*/
vertexColors: Color[]
/**
* Material index (points to {@link Mesh.material}).
* @default 0
*/
materialIndex: number
clone(): this
copy(source: Face3): this
}