import { Mat4 } from "../math/Mat4"; import { Vec3 } from "../math/Vec3"; import { Box } from "../struct/3d/Box"; import { Sphere } from "../struct/3d/Sphere"; import { BufferAttribute } from "./buffer-attribute"; import { TypedArray } from "./types"; import { Vec2 } from "../math/Vec2"; import { Vec4 } from "../math/Vec4"; export interface IGeometry { position: number[]; normal?: number[]; index?: number[]; uv?: number[]; uv2?: number[]; tangent?: number[]; } export interface IBufferGeometry { position: Float32Array | undefined; index?: Uint32Array | Uint16Array; normal?: Float32Array; uv?: Float32Array; uv2?: Float32Array; tangent?: Float32Array; } /** * BufferType 几何体,用于独立计算几何体 */ export declare class BufferGeometry { name: string; index: BufferAttribute | undefined; morphAttributes: any; morphTargetsRelative: boolean; groups: { start: number; count: number; materialIndex?: number; }[]; boundingBox: Box | undefined; boundingSphere: Sphere | undefined; drawRange: { start: number; count: number; }; attributes: { [key: string]: BufferAttribute; }; parameters: any; readonly isBufferGeometry: true; uuid: string; type: string; constructor(); /** * 转化成BufferArray来计算 * @param geo */ setFromGeometry(geo: IGeometry): this; getIndex(): BufferAttribute | undefined; setIndex(index: BufferAttribute | TypedArray | number[]): void; getAttribute(name: string): BufferAttribute; setAttribute(name: string, attribute: BufferAttribute): this; addAttribute(name: string, attribute: BufferAttribute | TypedArray | Array, itemSize?: number): this; deleteAttribute(name: string): this; addGroup(start: number, count: number, materialIndex?: number): void; clearGroups(): void; setDrawRange(start: number, count: number): void; applyMat4(matrix: Mat4): this; rotateX(angle: number): this; rotateY(angle: number): this; rotateZ(angle: number): this; translate(x: number, y: number, z: number): this; scale(x: number, y: number, z: number): this; lookAt(vector: Vec3): this; center(): this; setFromObject(object: any): this; setFromPoints(points: Vec3[]): this; updateFromObject(object: any): this; computeBoundingBox(): void; computeBoundingSphere(): void; computeFaceNormals(): void; computeVertexNormals(): void; merge(geometry: BufferGeometry, offset: number): this | undefined; normalizeNormals(): void; toFlat(): BufferGeometry; toNonIndexed(): BufferGeometry; toJSON(): any; userData(userData: any): void; clone(): BufferGeometry; copy(source: BufferGeometry): this; }