download
raw
8.6 kB
import { BufferGeometry, Vector3, Side, Material, Ray, Sphere, Matrix4, Color,
Intersection, Box3, Triangle, Vector2, Raycaster, MeshBasicMaterial, Group,
LineBasicMaterial, Mesh, DataTexture, BufferAttribute, Line3, Object3D } from 'three';
// Contants
export enum SplitStrategy {}
export const CENTER: SplitStrategy;
export const AVERAGE: SplitStrategy;
export const SAH: SplitStrategy;
export enum ShapecastIntersection {}
export const NOT_INTERSECTED: ShapecastIntersection;
export const INTERSECTED: ShapecastIntersection;
export const CONTAINED: ShapecastIntersection;
// MeshBVH
export interface HitPointInfo {
point: Vector3;
distance: number;
faceIndex: number;
}
export interface MeshBVHOptions {
strategy?: SplitStrategy;
maxDepth?: number;
maxLeafTris?: number;
setBoundingBox?: boolean;
useSharedArrayBuffer?: boolean;
verbose?: boolean;
onProgress?: ( progress: number ) => void;
range?: { start: number; count: number };
}
export interface MeshBVHSerializeOptions {
cloneBuffers?: boolean;
}
export interface MeshBVHDeserializeOptions {
setIndex?: boolean;
}
export class MeshBVH {
readonly geometry: BufferGeometry;
static serialize( bvh: MeshBVH, options?: MeshBVHSerializeOptions ): SerializedBVH;
static deserialize(
data: SerializedBVH,
geometry: BufferGeometry,
options?: MeshBVHDeserializeOptions
): MeshBVH;
constructor( geometry: BufferGeometry, options?: MeshBVHOptions );
raycast( ray: Ray, materialOrSide?: Side | Array<Material> | Material, near?: number, far?: number ): Array<Intersection>
raycastFirst( ray: Ray, materialOrSide?: Side | Array<Material> | Material, near?: number, far?: number ): Intersection;
intersectsSphere( sphere: Sphere ): boolean;
intersectsBox( box: Box3, boxToMesh: Matrix4 ): boolean;
intersectsGeometry( geometry: BufferGeometry, geometryToBvh: Matrix4 ): boolean;
closestPointToPoint(
point: Vector3,
target?: HitPointInfo,
minThreshold?: number,
maxThreshold?: number
): HitPointInfo | null;
closestPointToGeometry(
geometry: BufferGeometry,
geometryToBvh: Matrix4,
target1?: HitPointInfo,
target2?: HitPointInfo,
minThreshold?: number,
maxThreshold?: number
): HitPointInfo | null;
// union types to enable at least one of two functions:
// https://stackoverflow.com/a/60617060/9838891
shapecast(
callbacks: {
intersectsBounds: (
box: Box3,
isLeaf: boolean,
score: number | undefined,
depth: number,
nodeIndex: number
) => ShapecastIntersection|boolean,
boundsTraverseOrder?: (
box: Box3
) => number,
} & ( {
intersectsRange: (
triangleOffset: number,
triangleCount: number,
contained: boolean,
depth: number,
nodeIndex: number,
box: Box3
) => boolean,
} | {
intersectsTriangle: (
triangle: ExtendedTriangle,
triangleIndex: number,
contained: boolean,
depth: number
) => boolean|void
} )
): boolean;
// union types to enable at least one of two functions:
// https://stackoverflow.com/a/60617060/9838891
bvhcast(
otherBVH: MeshBVH,
matrixToLocal: Matrix4,
callbacks: ( {
intersectsRanges: (
offset1: number,
count1: number,
offset2: number,
count2: number,
depth1: number,
index1: number,
depth2: number,
index2: number
) => boolean
} | {
intersectsTriangles: (
triangle1: ExtendedTriangle,
triangle2: ExtendedTriangle,
i1: number,
i2: number,
depth1: number,
index1: number,
depth2: number,
index2: number,
) => boolean,
} )
): boolean;
traverse(
callback: (
depth: number,
isLeaf: boolean,
boundingData: ArrayBuffer,
offsetOrSplit: number,
count: number
) => void,
rootIndex?: number
): void;
refit( nodeIndices?: Array<number> | Set<number> ): void;
getBoundingBox( target: Box3 ): Box3;
}
// SerializedBVH
export class SerializedBVH {
roots: Array<ArrayBuffer>;
index: ArrayBufferView;
}
// MeshBVHHelper
export class MeshBVHHelper extends Group {
opacity: number;
depth: number;
displayParents: boolean;
displayEdges: boolean;
edgeMaterial: LineBasicMaterial;
meshMaterial: MeshBasicMaterial;
constructor( mesh: Mesh, depth?: number );
update(): void;
get color(): Color;
}
// THREE.js Extensions
export function computeBoundsTree( options?: MeshBVHOptions ): MeshBVH;
export function disposeBoundsTree(): void;
export function computeBatchedBoundsTree( index?: Number, options?: MeshBVHOptions ): MeshBVH | MeshBVH[];
export function disposeBatchedBoundsTree( index?: Number ): void;
export function acceleratedRaycast(
raycaster: Raycaster,
intersects: Array<Intersection>
): void;
declare module 'three' {
export interface BufferGeometry {
boundsTree?: MeshBVH;
computeBoundsTree: typeof computeBoundsTree;
disposeBoundsTree: typeof disposeBoundsTree;
}
export interface BatchedMesh {
boundsTrees?: Array<MeshBVH | null>;
computeBoundsTree: typeof computeBatchedBoundsTree;
disposeBoundsTree: typeof disposeBatchedBoundsTree;
}
export interface Raycaster {
firstHitOnly?: boolean;
}
}
// GenerateMeshBVHWorker
// export class GenerateMeshBVHWorker {
// running: boolean;
// generate( geometry: BufferGeometry, options?: MeshBVHOptions ): Promise<MeshBVH>;
// terminate(): boolean;
// }
// Debug functions
export function estimateMemoryInBytes( bvh: MeshBVH ): number;
export interface ExtremeInfo {
nodeCount: number;
leafNodeCount: number;
surfaceAreaScore: number;
depth: {min: number, max: number};
tris: {min: number, max: number};
splits: [number, number, number];
}
export function getBVHExtremes( bvh :MeshBVH ): Array<ExtremeInfo>;
export function validateBounds( bvh: MeshBVH ): boolean;
export interface TreeNode {
bounds: Box3;
count: number;
offset: number;
left?: TreeNode;
right?: TreeNode;
}
export function getJSONStructure( bvh: MeshBVH ): TreeNode;
// Triangle Utilities
export interface HitTriangleInfo {
face: {
a: number,
b: number,
c: number,
materialIndex: number,
normal: Vector3
},
uv: Vector2
}
export function getTriangleHitPointInfo(
point: Vector3,
geometry : BufferGeometry,
triangleIndex: number,
target?: HitTriangleInfo
): HitTriangleInfo
// Shader Utilities
declare class VertexAttributeTexture extends DataTexture {
overrideItemSize: number | null;
updateFrom( attribute: BufferAttribute ): void;
}
export class FloatVertexAttributeTexture extends VertexAttributeTexture {}
export class UIntVertexAttributeTexture extends VertexAttributeTexture {}
export class IntVertexAttributeTexture extends VertexAttributeTexture {}
export class MeshBVHUniformStruct {
updateFrom( bvh: MeshBVH ): void;
dispose(): void;
}
export const BVHShaderGLSL: {
bvh_distance_functions: string;
bvh_ray_functions: string;
bvh_struct_definitions: string;
common_functions: string;
};
// backwards compatibility
export const shaderStructs: string;
export const shaderDistanceFunction: string;
export const shaderIntersectFunction: string;
// Math classes
export class ExtendedTriangle extends Triangle {
needsUpdate : boolean;
intersectsTriangle( other : Triangle, target? : Line3 ) : boolean;
intersectsSphere( sphere : Sphere ) : boolean;
closestPointToSegment( segment : Line3, target1? : Vector3, target2? : Vector3 ) : number;
distanceToPoint( point : Vector3 ) : number;
distanceToTriangle( tri : Triangle ) : number;
}
export class OrientedBox {
min: Vector3;
max: Vector3;
matrix : Matrix4;
needsUpdate : boolean;
constructor( min : Vector3, max : Vector3 );
set( min : Vector3, max : Vector3, matrix : Matrix4 ) : OrientedBox;
intersectsBox( box : Box3 ) : boolean;
intersectsTriangle( tri : Triangle ) : boolean;
closestPointToPoint( point : Vector3, target? : Vector3 ) : number;
distanceToPoint( point : Vector3 ) : number;
distanceToBox( box : Box3, threshold? : number, target1? : Vector3, target2? : Vector3 ) : number;
}
export class StaticGeometryGenerator {
useGroups : boolean;
attributes : Array<string>;
applyWorldTransforms : boolean;
constructor( objects : Array<Object3D> | Object3D );
getMaterials() : Array<Material>;
generate( target? : BufferGeometry ) : BufferGeometry;
}

Xet Storage Details

Size:
8.6 kB
·
Xet hash:
132c03f821619d4b02167035132feddcc7b40945550adfd0d1a59f0f5a0a2856

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.