UNPKG

vue-threejs-display

Version:

基于 Vue + Three.js 的 3D展示组件

497 lines (496 loc) 14.1 kB
import { Object3D, Vector2, Scene, Raycaster, WebGLRenderer, PerspectiveCamera, AnimationMixer, Clock, Light } from 'three'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; export interface coordinates { x: number; y: number; z: number; } export interface controlsValue { min: number; max: number; } declare type plyMaterial = 'MeshBasicMaterial' | 'MeshStandardMaterial'; declare type encode = 'linear' | 'sRGB'; declare const _default: import("vue").DefineComponent<{ filePath: { type: (StringConstructor | ArrayConstructor)[]; required: true; }; fileType: { type: (StringConstructor | ArrayConstructor)[]; required: false; }; width: { type: NumberConstructor; required: false; }; height: { type: NumberConstructor; required: false; }; position: { type: (ArrayConstructor | ObjectConstructor)[]; required: false; }; rotation: { type: (ArrayConstructor | ObjectConstructor)[]; required: false; }; scale: { type: (ArrayConstructor | ObjectConstructor)[]; required: false; }; lights: { type: ArrayConstructor; required: false; default: () => ({ type: string; color: number; position?: undefined; intensity?: undefined; } | { type: string; position: { x: number; y: number; z: number; }; color: number; intensity: number; })[]; }; cameraPosition: { type: ObjectConstructor; required: false; default: () => { x: number; y: number; z: number; }; }; cameraRotation: { type: ObjectConstructor; required: false; }; cameraUp: { type: ObjectConstructor; required: false; }; cameraLookAt: { type: ObjectConstructor; required: false; }; backgroundColor: { type: (StringConstructor | NumberConstructor)[]; required: false; default: () => number; }; backgroundAlpha: { type: NumberConstructor; required: false; default: () => number; }; controlsOptions: { type: ObjectConstructor; required: false; }; crossOrigin: { type: StringConstructor; required: false; default: string; }; requestHeader: { type: ObjectConstructor; required: false; }; outputEncoding: { type: StringConstructor; required: false; default: () => string; }; webGLRendererOptions: { type: ObjectConstructor; required: false; default: () => {}; }; mtlPath: { type: (StringConstructor | ArrayConstructor)[]; required: false; default: string; }; showFps: { type: BooleanConstructor; required: false; default: boolean; }; textureImage: { type: (StringConstructor | ArrayConstructor)[]; required: false; default: string; }; clearScene: { type: BooleanConstructor; required: false; default: boolean; }; parallelLoad: { type: BooleanConstructor; required: false; default: boolean; }; labels: { type: ArrayConstructor; required: false; default: () => never[]; }; autoPlay: { type: BooleanConstructor; required: false; default: boolean; }; enableDraco: { type: BooleanConstructor; required: false; default: boolean; }; dracoDir: { type: StringConstructor; required: false; }; intersectRecursive: { type: BooleanConstructor; required: false; default: boolean; }; enableDamping: { type: BooleanConstructor; required: false; }; dampingFactor: { type: NumberConstructor; required: false; }; verticalCtrl: { type: (ObjectConstructor | BooleanConstructor)[]; required: false; default: boolean; }; horizontalCtrl: { type: (ObjectConstructor | BooleanConstructor)[]; required: false; default: boolean; }; plyMaterial: { type: StringConstructor; required: false; default: string; }; }, { props: { filePath: string | string[]; fileType?: string | string[] | undefined; width?: number | undefined; height?: number | undefined; position?: coordinates | coordinates[] | undefined; rotation?: coordinates | coordinates[] | undefined; scale?: coordinates | coordinates[] | undefined; lights: object[]; cameraPosition: coordinates; cameraRotation?: coordinates | undefined; cameraUp?: coordinates | undefined; cameraLookAt?: coordinates | undefined; backgroundColor: number | string; backgroundAlpha: number; controlsOptions?: object | undefined; crossOrigin: string; requestHeader?: object | undefined; outputEncoding: encode; webGLRendererOptions: object; mtlPath: string | string[]; showFps: boolean; textureImage: string | string[]; clearScene: boolean; parallelLoad: boolean; labels: object[]; autoPlay: boolean; enableDraco: boolean; dracoDir?: string | undefined; intersectRecursive: boolean; enableDamping?: boolean | undefined; dampingFactor?: number | undefined; verticalCtrl: boolean | controlsValue; horizontalCtrl: boolean | controlsValue; plyMaterial: plyMaterial; }; object: any; raycaster: Raycaster; mouse: Vector2; camera: PerspectiveCamera; clock: Clock; scene: Scene; wrapper: Object3D<import("three").Event>; renderer: WebGLRenderer; controls: OrbitControls; allLights: Light[]; loader: any; requestAnimationId: number; stats: any; mixers: AnimationMixer | AnimationMixer[]; textureLoader: any; size: import("vue").Ref<{ width: number; height: number; }>; loaderIndex: import("vue").Ref<number>; objectPositionHasSet: import("vue").Ref<boolean>; isMultipleModels: import("vue").Ref<boolean>; containerElement: import("vue").Ref<null>; canvasElement: import("vue").Ref<null>; emit: (event: "mousedown" | "mousemove" | "mouseup" | "click" | "dblclick" | "load" | "process" | "error", ...args: any[]) => void; resetScene: () => void; destroyScene: () => void; init: () => void; setContainerElementStyle: (el: any) => void; enableMousemoveEvent: (enable: boolean) => void; onResize: () => void; onMouseDown: (event: MouseEvent) => void; onMouseMove: (event: MouseEvent) => void; onMouseUp: (event: MouseEvent) => void; onClick: (event: MouseEvent) => void; onDblclick: (event: MouseEvent) => void; pick: (x: number, y: number) => import("three").Intersection<Object3D<import("three").Event>> | null; update: () => void; updateModel: () => void; updateRenderer: () => void; updateCamera: (isResize?: boolean) => void; updateLights: () => void; updateControls: () => void; loadModelSelect: () => void; load: (fileIndex?: number) => void; loadFilePath: (filePath: string, getObject: any, index: number) => void; loadMtl: (filePath: string, getObject: any, index: number) => void; getObject: (object: any) => any; addObject: (obj: Object3D, filePath: string) => void; animate: () => void; render: () => void; updateStats: () => void; onProcess: (xhr: ProgressEvent) => void; addTexture: (object: Object3D, texture: any) => void; clearSceneWrapper: () => void; setObjectAttribute: (type: string, val: any) => void; getAllObject: () => any; setLabel: () => void; setSpriteLabel: () => void; clearSprite: () => void; generateCanvas: (text: string, style: any) => HTMLCanvasElement; getObjectIndex: (object: any) => any; playAnimations: () => void; playSingleModel: (item: Object3D) => void; playMultipleModels: (obj: Object3D) => void; setVerticalHorizontalControls: () => void; }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("mousedown" | "mousemove" | "mouseup" | "click" | "dblclick" | "load" | "process" | "error")[], "mousedown" | "mousemove" | "mouseup" | "click" | "dblclick" | "load" | "process" | "error", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ filePath: { type: (StringConstructor | ArrayConstructor)[]; required: true; }; fileType: { type: (StringConstructor | ArrayConstructor)[]; required: false; }; width: { type: NumberConstructor; required: false; }; height: { type: NumberConstructor; required: false; }; position: { type: (ArrayConstructor | ObjectConstructor)[]; required: false; }; rotation: { type: (ArrayConstructor | ObjectConstructor)[]; required: false; }; scale: { type: (ArrayConstructor | ObjectConstructor)[]; required: false; }; lights: { type: ArrayConstructor; required: false; default: () => ({ type: string; color: number; position?: undefined; intensity?: undefined; } | { type: string; position: { x: number; y: number; z: number; }; color: number; intensity: number; })[]; }; cameraPosition: { type: ObjectConstructor; required: false; default: () => { x: number; y: number; z: number; }; }; cameraRotation: { type: ObjectConstructor; required: false; }; cameraUp: { type: ObjectConstructor; required: false; }; cameraLookAt: { type: ObjectConstructor; required: false; }; backgroundColor: { type: (StringConstructor | NumberConstructor)[]; required: false; default: () => number; }; backgroundAlpha: { type: NumberConstructor; required: false; default: () => number; }; controlsOptions: { type: ObjectConstructor; required: false; }; crossOrigin: { type: StringConstructor; required: false; default: string; }; requestHeader: { type: ObjectConstructor; required: false; }; outputEncoding: { type: StringConstructor; required: false; default: () => string; }; webGLRendererOptions: { type: ObjectConstructor; required: false; default: () => {}; }; mtlPath: { type: (StringConstructor | ArrayConstructor)[]; required: false; default: string; }; showFps: { type: BooleanConstructor; required: false; default: boolean; }; textureImage: { type: (StringConstructor | ArrayConstructor)[]; required: false; default: string; }; clearScene: { type: BooleanConstructor; required: false; default: boolean; }; parallelLoad: { type: BooleanConstructor; required: false; default: boolean; }; labels: { type: ArrayConstructor; required: false; default: () => never[]; }; autoPlay: { type: BooleanConstructor; required: false; default: boolean; }; enableDraco: { type: BooleanConstructor; required: false; default: boolean; }; dracoDir: { type: StringConstructor; required: false; }; intersectRecursive: { type: BooleanConstructor; required: false; default: boolean; }; enableDamping: { type: BooleanConstructor; required: false; }; dampingFactor: { type: NumberConstructor; required: false; }; verticalCtrl: { type: (ObjectConstructor | BooleanConstructor)[]; required: false; default: boolean; }; horizontalCtrl: { type: (ObjectConstructor | BooleanConstructor)[]; required: false; default: boolean; }; plyMaterial: { type: StringConstructor; required: false; default: string; }; }>> & { onMousedown?: ((...args: any[]) => any) | undefined; onMousemove?: ((...args: any[]) => any) | undefined; onMouseup?: ((...args: any[]) => any) | undefined; onClick?: ((...args: any[]) => any) | undefined; onDblclick?: ((...args: any[]) => any) | undefined; onLoad?: ((...args: any[]) => any) | undefined; onProcess?: ((...args: any[]) => any) | undefined; onError?: ((...args: any[]) => any) | undefined; }, { lights: unknown[]; cameraPosition: Record<string, any>; backgroundColor: string | number; backgroundAlpha: number; crossOrigin: string; outputEncoding: string; webGLRendererOptions: Record<string, any>; mtlPath: string | unknown[]; showFps: boolean; textureImage: string | unknown[]; clearScene: boolean; parallelLoad: boolean; labels: unknown[]; autoPlay: boolean; enableDraco: boolean; intersectRecursive: boolean; enableDamping: boolean; verticalCtrl: boolean | Record<string, any>; horizontalCtrl: boolean | Record<string, any>; plyMaterial: string; }>; export default _default;