@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
35 lines (34 loc) • 1.87 kB
TypeScript
import { BufferGeometry, Matrix4, 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: (Record<GeometryAttributes.POSITION, number[]> & Partial<Record<GeometryAttributes, number[]>>) | null;
bakeTransform: Matrix4 | null;
transform: Matrix4 | null;
metaData?: SpeckleObject;
instanced?: boolean;
}
export declare class Geometry {
private static readonly floatArrayBuff;
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;
/** Only supports indexed geometry */
static computeVertexNormalsBuffer(buffer: number[], position: number[], index: number[]): void;
static computeVertexNormals(buffer: BufferGeometry, doublePositions: Float64Array): void;
}