@ulb-darmstadt/photogrammetry-viewer
Version:
```console npm i photogrammetry-viewer ``` This library provides an HTML web component that displays photogrammetric data. The component consists of a combined 3D and 2D viewer. For each view of the 3D model, the 2D image closest to the view is loaded. Fo
109 lines (108 loc) • 4.25 kB
TypeScript
import { Vector3D } from '@google/model-viewer/lib/model-viewer-base';
import { Euler, Group, Line, Matrix4, Vector3 } from 'three';
import { EventEmitter } from 'events';
import { EulerYXZ } from './eulerYXZ';
import { Sensor } from './sensor';
export declare class MeasurementTool extends EventEmitter {
private _isEditModeActive;
private _measurementPoints;
private _measuredLength;
private _currentOrientation;
private _currentTranslation;
private _imageSensor;
private _imageCamOrientation;
private _measurementDistances;
private _showMeasurementDistances;
private _sceneElementGroup;
set imageSensor(sensor: Sensor);
set imageCamOrientation(imageCamOrientation: Matrix4);
get sceneElementGroup(): Group;
set isEditModeActive(isEditModeActive: boolean);
get isEditModeActive(): boolean;
get numPoints(): number;
get measurementPoints(): MeasurementPoint[];
get measurementDistances(): MeasurementDistance[];
get measuredLength(): number;
set translation(translation: Vector3);
set eulerOrientation(orientation: EulerYXZ);
addPointFromImage(imageXCoor: number, imageYCoor: number): void;
addPointFrom3DScene(position: Vector3D, normal: Vector3D, updateHotspotInImage?: boolean, label?: string | number): void;
resetPoints(): void;
showPoints(): void;
hidePoints(): void;
get showMeasurementDistances(): boolean;
set showMeasurementDistances(value: boolean);
saveMeasurement(format?: 'csv' | 'json'): void;
loadMeasurement(url: string): Promise<void>;
private _updateHotspotInImage;
}
export declare class MeasurementSceneLineElement {
private _distanceLine;
private _lineGeometry;
private _lineMaterial;
private _translation;
private _pointsInModelCoor;
constructor();
get lineElement(): Line;
addPoint(point: Vector3, translationInScene: Vector3, sceneOrientation: Euler): void;
addPointInModelCoor(point: Vector3, translationInScene: Vector3, sceneOrientation: Euler): void;
setTranslation(translation: Vector3): void;
setEulerOrientation(orientation: Euler): void;
set opacity(value: number);
show(): void;
hide(): void;
reset(): void;
}
export declare class MeasurementDistance {
private _sceneLineElement;
private _distanceAnnotation;
private _numVisiblePoints;
private _isHidden;
constructor(index: number, startPoint: MeasurementPoint, endPoint: MeasurementPoint, translationInScene: Vector3, sceneOrientation: Euler);
get distance(): number;
get sceneElement(): Line;
get annotationElement(): HTMLButtonElement;
translate(translation: Vector3): void;
changeSceneOrientation(orientation: Euler): void;
show(): void;
hide(): void;
reset(): void;
private _handlePointVisibilityChanged;
private _updateAnnotationVisibility;
}
export declare class SceneHotspotElement extends EventEmitter {
protected _domElement: HTMLButtonElement;
private _positionInModelCoor;
private _positionInSceneCoor;
private _normalInModelCoor;
private _normalInSceneCoor;
constructor(positionInScene: Vector3, normalInScene: Vector3, sceneOrientation: Euler);
get domElement(): HTMLButtonElement;
get positionInModelCoor(): Vector3;
get positionInSceneCoor(): Vector3;
get normalInSceneCoor(): Vector3;
get positionInSceneCoorAsString(): string;
get normalInSceneCoorAsString(): string;
updatePosition(sceneOrientation: Euler): void;
show(): void;
hide(): void;
delete(): void;
private _handleFocusChanged;
}
export declare class MeasurementPoint extends SceneHotspotElement {
constructor(label: string | number, position: Vector3, normal: Vector3, sceneOrientation: Euler);
set label(value: string);
get label(): string;
distanceTo(measurementPoint: MeasurementPoint): number;
}
export declare class MeasurementDistanceAnnotation extends SceneHotspotElement {
private _distance;
constructor(index: number, distance: number, position: Vector3, normal: Vector3, sceneOrientation: Euler);
get distance(): number;
}
export type Measurement = {
pos: number[];
normal: number[];
distance?: number;
label: string;
}[];