UNPKG

@itwin/core-frontend

Version:
108 lines 4.63 kB
/** @packageDocumentation * @module Rendering */ import { IndexedPolyface, Point3d, Polyface, PolyfaceVisitor, Range3d } from "@itwin/core-geometry"; import { Feature, TextureMapping } from "@itwin/core-common"; import { DisplayParams } from "./DisplayParams"; import { Triangle, TriangleSet } from "./Primitives"; import { StrokesPrimitivePointLists } from "./Strokes"; import { VertexKeyProps, VertexMap } from "./VertexKey"; import { Mesh } from "./MeshPrimitives"; type VertexKeyPropsWithIndex = VertexKeyProps & { sourceIndex: number; }; /** @internal */ export declare class MeshBuilder { readonly vertexMap: VertexMap; private _triangleSet?; private _currentPolyface?; readonly mesh: Mesh; readonly tolerance: number; readonly areaTolerance: number; readonly tileRange: Range3d; get currentPolyface(): MeshBuilderPolyface | undefined; get displayParams(): DisplayParams; set displayParams(params: DisplayParams); /** create reference for triangleSet on demand */ get triangleSet(): TriangleSet; private constructor(); /** create a new MeshBuilder */ static create(props: MeshBuilder.Props): MeshBuilder; /** * iterate through each point list of the strokes primitive and either load the point string or polyline into builder * @param strokes lists of stroke primitive point lists to iterate * @param isDisjoint if true add point string, else add polyline * @param fillColor */ addStrokePointLists(strokes: StrokesPrimitivePointLists, isDisjoint: boolean, fillColor: number, feature: Feature | undefined): void; /** * add data from polyface into mesh builder * @param polyface the indexed polyface to iterate the facets of to load each facet's triangles' vertices * @param props the properties required for this operation */ addFromPolyface(polyface: IndexedPolyface, props: MeshBuilder.PolyfaceOptions, feature: Feature | undefined): void; /** * @param visitor the PolyfaceVisitor containing the face data to be added * @param props the properties required for this operation: */ addFromPolyfaceVisitor(visitor: PolyfaceVisitor, options: MeshBuilder.PolyfaceOptions, feature: Feature | undefined): void; createTriangleVertices(triangleIndex: number, visitor: PolyfaceVisitor, options: MeshBuilder.PolyfaceVisitorOptions, feature: Feature | undefined): VertexKeyPropsWithIndex[] | undefined; createTriangle(triangleIndex: number, visitor: PolyfaceVisitor, options: MeshBuilder.PolyfaceVisitorOptions, feature: Feature | undefined): Triangle | undefined; /** removed Feature for now */ addPolyline(points: Point3d[], fillColor: number, feature: Feature | undefined): void; /** removed Feature for now */ addPointString(points: Point3d[], fillColor: number, feature: Feature | undefined): void; beginPolyface(polyface: Polyface, options: MeshEdgeCreationOptions): void; endPolyface(): void; addVertex(vertex: VertexKeyProps, addToMeshOnInsert?: boolean): number; addTriangle(triangle: Triangle): void; } /** @internal */ export declare namespace MeshBuilder { interface Props extends Mesh.Props { tolerance: number; areaTolerance: number; } interface PolyfaceOptions { includeParams: boolean; fillColor: number; mappedTexture?: TextureMapping; edgeOptions: MeshEdgeCreationOptions; } interface PolyfaceVisitorOptions extends PolyfaceOptions { triangleCount: number; haveParam: boolean; } } /** @internal */ export declare class MeshEdgeCreationOptions { readonly type: MeshEdgeCreationOptions.Type; readonly minCreaseAngle: number; get generateAllEdges(): boolean; get generateNoEdges(): boolean; get generateCreaseEdges(): boolean; /** Create edge chains for polyfaces that do not already have them. */ get createEdgeChains(): boolean; constructor(type?: MeshEdgeCreationOptions.Type); } /** @internal */ export declare namespace MeshEdgeCreationOptions { enum Type { NoEdges = 0, CreaseEdges = 2, SmoothEdges = 4, CreateChains = 8, DefaultEdges = 2, AllEdges = 6 } } /** @internal */ export declare class MeshBuilderPolyface { readonly polyface: Polyface; readonly edgeOptions: MeshEdgeCreationOptions; readonly vertexIndexMap: Map<number, number>; readonly baseTriangleIndex: number; constructor(polyface: Polyface, edgeOptions: MeshEdgeCreationOptions, baseTriangleIndex: number); } export {}; //# sourceMappingURL=MeshBuilder.d.ts.map