@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
61 lines (60 loc) • 2.4 kB
TypeScript
import { Box3, Material, Object3D, WebGLRenderer } from 'three';
import { NodeRenderView } from '../tree/NodeRenderView.js';
import { type Batch, type BatchUpdateRange, type DrawGroup, GeometryType } from './Batch.js';
import SpeckleInstancedMesh from '../objects/SpeckleInstancedMesh.js';
import { DrawRanges } from './DrawRanges.js';
export declare class InstancedMeshBatch implements Batch {
id: string;
subtreeId: string;
renderViews: NodeRenderView[];
private geometry;
batchMaterial: Material;
mesh: SpeckleInstancedMesh;
protected drawRanges: DrawRanges;
private instanceTransformBuffer0;
private instanceTransformBuffer1;
private transformBufferIndex;
private instanceGradientBuffer;
private instanceObjectIdBuffer;
private needsShuffle;
get bounds(): Box3;
get drawCalls(): number;
get minDrawCalls(): number;
get maxDrawCalls(): number;
get triCount(): number;
get vertCount(): number;
get pointCount(): number;
get lineCount(): number;
get geometryType(): GeometryType;
get renderObject(): Object3D;
getCount(): number;
get materials(): Material[];
get groups(): Array<DrawGroup>;
constructor(id: string, subtreeId: string, renderViews: NodeRenderView[], webGL2: boolean);
setBatchMaterial(material: Material): void;
onUpdate(deltaTime: number): void;
onRender(renderer: WebGLRenderer): void;
/** Note: You can only set visibility on ranges that exist as draw groups! */
setVisibleRange(ranges: BatchUpdateRange[]): void;
getVisibleRange(): BatchUpdateRange;
getOpaque(): BatchUpdateRange;
getDepth(): BatchUpdateRange;
getTransparent(): BatchUpdateRange;
getStencil(): BatchUpdateRange;
setBatchBuffers(ranges: BatchUpdateRange[]): void;
setDrawRanges(ranges: BatchUpdateRange[]): void;
private cleanMaterials;
private shuffleDrawGroups;
resetDrawRanges(): void;
private getCurrentTransformBuffer;
private getNextTransformBuffer;
private getCurrentGradientBuffer;
private getCurrentObjectIndexBuffer;
buildBatch(): Promise<void>;
getRenderView(index: number): NodeRenderView | null;
getMaterialAtIndex(index: number): Material | null;
getMaterial(rv: NodeRenderView): Material | null;
private makeInstancedMeshGeometry;
private updateGradientIndexBufferData;
purge(): void;
}