@google/model-viewer
Version:
Easily display interactive 3D models on the web and in AR!
97 lines (96 loc) • 2.86 kB
TypeScript
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 {};