UNPKG

@speckle/viewer

Version:

A 3d viewer for Speckle, based on threejs.

39 lines (38 loc) 2.12 kB
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[]; }