@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
39 lines (38 loc) • 2.12 kB
TypeScript
import { Box3, BufferGeometry, Matrix4, Vector2, Vector3 } from 'three';
import { type SpeckleObject } from '../../IViewer.js';
export declare enum GeometryAttributes {
POSITION = "POSITION",
COLOR = "COLOR",
NORMAL = "NORMAL",
UV = "UV",
TANGENT = "TANGENT",
INDEX = "INDEX"
}
export interface GeometryData {
attributes: ({
[GeometryAttributes.POSITION]: number[];
} & Partial<Record<Exclude<GeometryAttributes, GeometryAttributes.POSITION>, number[]>>) | null;
bakeTransform: Matrix4 | null;
transform: Matrix4 | null;
metaData?: SpeckleObject;
instanced?: boolean;
}
export declare class Geometry {
static updateRTEGeometry(geometry: BufferGeometry, doublePositions: Float64Array | Float32Array): void;
static mergeGeometryAttribute(attributes: (number[] | undefined)[], target: Float32Array | Float64Array): ArrayLike<number>;
static mergeIndexAttribute(indexAttributes: (number[] | undefined)[], positionAttributes: (number[] | undefined)[]): number[];
static mergeGeometryData(geometries: GeometryData[]): GeometryData;
static transformGeometryData(geometryData: GeometryData, m: Matrix4 | null): void;
static unpackColors(int32Colors: number[]): number[];
/** Please see https://speckle.systems/blog/improving-speckles-rte-implementation/ for additional details
* regarding double -> <float low; float high> encoding.
*/
static DoubleToHighLowVector(input: Vector3, low: Vector3, high: Vector3): void;
static DoubleToHighLowBuffer(input: ArrayLike<number>, position_low: number[] | Float32Array, position_high: number[] | Float32Array): void;
static needsRTE(bounds: Box3): boolean;
static getFP32ProjectionDelta(point: Vector3, projection: Matrix4, screenSize: Vector2, relativeOffset?: number): Vector2;
/** Only supports indexed geometry */
static computeVertexNormalsBuffer(buffer: number[], position: number[], index: number[]): void;
static computeVertexNormals(buffer: BufferGeometry, doublePositions: Float64Array): void;
static triangulatePolygon(points: Vector2[]): number[];
}