UNPKG

@google/model-viewer

Version:

Easily display interactive 3D models on the web and in AR!

97 lines (96 loc) 2.86 kB
import { Camera, Event as ThreeEvent, Object3D, PerspectiveCamera, Scene, ShaderMaterial, Vector3 } from 'three'; import { Mesh } from 'three'; import ModelViewerElementBase from '../model-viewer-base.js'; import Model from './Model.js'; import { Renderer } from './Renderer.js'; import StaticShadow from './StaticShadow.js'; export interface ModelLoadEvent extends ThreeEvent { url: string; } export interface ModelSceneConfig { element: ModelViewerElementBase; canvas: HTMLCanvasElement; width: number; height: number; renderer: Renderer; } export declare type IlluminationRole = 'primary' | 'secondary'; export declare const IlluminationRole: { [index: string]: IlluminationRole; }; declare const $paused: unique symbol; /** * A THREE.Scene object that takes a Model and CanvasHTMLElement and * constructs a framed scene based off of the canvas dimensions. * Provides lights and cameras to be used in a renderer. */ export default class ModelScene extends Scene { private [$paused]; aspect: number; canvas: HTMLCanvasElement; renderer: Renderer; shadow: StaticShadow; pivot: Object3D; pivotCenter: Vector3; width: number; height: number; isVisible: boolean; isDirty: boolean; element: ModelViewerElementBase; context: CanvasRenderingContext2D; exposure: number; model: Model; skyboxMesh: Mesh; activeCamera: Camera; camera: PerspectiveCamera; constructor({ canvas, element, width, height, renderer }: ModelSceneConfig); readonly paused: boolean; pause(): void; resume(): void; /** * Sets the model via URL. */ setModelSource(source: string | null, progressCallback?: (progress: number) => void): Promise<void>; /** * Receives the size of the 2D canvas element to make according * adjustments in the scene. */ setSize(width: number, height: number): void; /** * Returns the size of the corresponding canvas element. */ getSize(): { width: number; height: number; }; resetModelPose(): void; /** * Returns the current camera. */ getCamera(): Camera; /** * Sets the passed in camera to be used for rendering. */ setCamera(camera: Camera): void; /** * Sets the rotation of the model's pivot, around its pivotCenter point. */ setPivotRotation(radiansY: number): void; /** * Gets the current rotation value of the pivot */ getPivotRotation(): number; /** * Called when the model's contents have loaded, or changed. */ onModelLoad(event: { url: string; }): void; /** * Called to update the shadow rendering when the model changes. */ updateStaticShadow(): void; createSkyboxMesh(): Mesh; skyboxMaterial(): ShaderMaterial; } export {};