UNPKG

soonspacejs

Version:
133 lines (132 loc) 5.43 kB
/// <reference types="stats.js" /> import { Mesh, Clock, Scene, PerspectiveCamera, WebGLRenderer, PMREMGenerator, Vector3, AnimationMixer, Raycaster, Intersection, AnimationClip, Texture, Material, OrthographicCamera } from 'three'; import { EffectComposer } from 'postprocessing'; import Stats from 'three/examples/jsm/libs/stats.module.js'; import { Sky } from 'three/examples/jsm/objects/Sky.js'; import { AnimationOperate } from '@three3d/animation'; import Scener from './Scener'; import { CSS2DRenderer, CSS3DRenderer } from '../Renderer'; import RendererManager from './RendererManager'; import CameraManager from './CameraManager'; import EffectManager from './EffectManager'; import Bvh from './Bvh'; import Controls from '../Controls'; import { Model } from '../Library'; import { IColorSpace, SkyOptions, IColor, OffsetPoint, Position, ViewportOptions, ViewportState, ModelAnimationFindFunc, SignalsState, ToneMappingOptions, SSAOOptions, BloomOptions, IntersectsOptions, EnvironmentOptions } from '../Interface'; import EventHandler from './EventHandler'; import Info from './Info'; import { ViewHelper } from './ViewHelper'; import { ObjectsCache } from '../Cache'; export declare const innerRenderState: { needsUpdate: boolean; }; declare class Viewport { readonly options: ViewportOptions; readonly signals: SignalsState; readonly cache: ObjectsCache; clock: Clock; raycaster: Raycaster; scene: Scene; sky: Sky | null; state: ViewportState; scener: Scener; rendererManager: RendererManager; container: HTMLElement; interactiveContainer: HTMLElement; renderer: WebGLRenderer; rendererCSS2D: CSS2DRenderer; rendererCSS3D: CSS3DRenderer; pmremGenerator: PMREMGenerator; info: Info; stats: Stats; cameraManager: CameraManager; camera: PerspectiveCamera | OrthographicCamera; controls: Controls; effectManager: EffectManager; effectComposer: EffectComposer; bvh: Bvh; mixer: AnimationMixer; clipsSet: Set<AnimationClip>; viewHelper: ViewHelper; eventHandler: EventHandler; /** * render 前回调(每帧执行) */ postUpdate: Map<string | number, (time: number) => void>; /** * render 后回调 */ postRender: Map<string | number, () => void>; private _loop; resizeObserver: ResizeObserver; constructor(options: ViewportOptions, signals: SignalsState, cache: ObjectsCache); _initInfo(): void; _initStats(): void; setAutoInstancing(enabled: boolean): void; /** ***************************** post-processing *************************** */ setBloom(options?: BloomOptions): void; setSSAO(options?: SSAOOptions): void; /** ***************************** renderer *************************** */ setColorSpace(colorSpace: IColorSpace): void; setToneMapping(options?: ToneMappingOptions): void; /** ***************************** background *************************** */ setSphereSkyBackground(imgUrl: string): Promise<void>; setSkyBackground(dirPath: string, fileNames?: string[]): Promise<void>; setBackgroundColor(color: IColor): void; setBackgroundColorAlpha(color: IColor, alpha?: number): void; setBackgroundImage(imgUrl: string): Promise<void>; setSky(options?: SkyOptions): Sky | undefined; closeSky(): boolean; screenshot(): Promise<Blob | null>; /** ***************************** environment *************************** */ setEnvironment(options?: EnvironmentOptions): Promise<Texture>; /** ***************************** modelAnimation *************************** */ playModelAnimation(model: Model, animation: number | AnimationClip | ModelAnimationFindFunc): AnimationOperate | undefined; stopModelAnimation(model: Model, animation: number | AnimationClip | ModelAnimationFindFunc): void; /** ***************************** render *************************** */ render(fn?: () => unknown): Promise<number>; /** * 触发渲染(兼容 soongis) * @param count */ triggerRender(count?: number): void; /** * 暂停渲染 * @param pause */ setPauseRender(pause?: boolean): Promise<number | undefined>; /** * effect passes */ _passesObserver(): void; /** * 每帧都会被执行 * @param time * @returns */ autoRender(): void; animate(time: number): void; getOffsetByPosition(position: Position): { left: number; top: number; }; getPositionByOffset(offset: OffsetPoint, z?: number, scalar?: number): Vector3; getIntersects(event: MouseEvent | TouchEvent | OffsetPoint, objects?: import("three").Object3D<import("three").Object3DEventMap>[], options?: IntersectsOptions): Intersection<import("three").Object3D<import("three").Object3DEventMap>>[]; rayClash(startPoint?: Vector3, dir?: Vector3, objects?: Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, Material | Material[], import("three").Object3DEventMap>[]): Intersection<import("three").Object3D<import("three").Object3DEventMap>>[]; clearSignals(): void; dispose(): void; _signalsEventListenr(): void; } export default Viewport;