123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- import { ITemplateConfiguration } from './../templateManager';
- export interface ViewerConfiguration {
- // configuration version
- version?: string;
- extends?: string; // is this configuration extending an existing configuration?
- pageUrl?: string; // will be used for sharing and other fun stuff. This is the page showing the model (not the model's url!)
- configuration?: string | {
- url?: string;
- payload?: any;
- mapper?: string; // json (default), html, yaml, xml, etc'. if not provided, file extension will be used.
- };
- // names of functions in the window context.
- observers?: IObserversConfiguration;
- canvasElement?: string; // if there is a need to override the standard implementation - ID of HTMLCanvasElement
- model?: IModelConfiguration | string;
- scene?: ISceneConfiguration;
- optimizer?: ISceneOptimizerConfiguration | boolean;
- // at the moment, support only a single camera.
- camera?: ICameraConfiguration,
- skybox?: boolean | ISkyboxConfiguration;
- ground?: boolean | IGroundConfiguration;
- lights?: { [name: string]: boolean | ILightConfiguration },
- // engine configuration. optional!
- engine?: {
- antialiasing?: boolean;
- disableResize?: boolean;
- engineOptions?: { [key: string]: any };
- adaptiveQuality?: boolean;
- },
- //templateStructure?: ITemplateStructure,
- templates?: {
- main: ITemplateConfiguration,
- [key: string]: ITemplateConfiguration
- };
- customShaders?: {
- shaders?: {
- [key: string]: string;
- };
- includes?: {
- [key: string]: string;
- }
- }
- // features that are being tested.
- // those features' syntax will change and move out!
- // Don't use in production (or be ready to make the changes :) )
- lab?: {
- flashlight?: boolean | {
- exponent?: number;
- angle?: number;
- intensity?: number;
- diffuse?: { r: number, g: number, b: number };
- specular?: { r: number, g: number, b: number };
- }
- hideLoadingDelay?: number;
- }
- }
- export interface IModelConfiguration {
- url?: string;
- root?: string; //optional
- loader?: string; // obj, gltf?
- position?: { x: number, y: number, z: number };
- rotation?: { x: number, y: number, z: number, w?: number };
- scaling?: { x: number, y: number, z: number };
- parentObjectIndex?: number; // the index of the parent object of the model in the loaded meshes array.
- castShadow?: boolean;
- normalize?: boolean | {
- center?: boolean;
- unitSize?: boolean;
- parentIndex?: number;
- }; // shoud the model be scaled to unit-size
- title?: string;
- subtitle?: string;
- thumbnail?: string; // URL or data-url
- animation?: {
- autoStart?: boolean | string;
- playOnce?: boolean;
- }
- // [propName: string]: any; // further configuration, like title and creator
- }
- export interface ISkyboxConfiguration {
- cubeTexture?: {
- noMipMap?: boolean;
- gammaSpace?: boolean;
- url?: string | Array<string>;
- };
- color?: { r: number, g: number, b: number };
- pbr?: boolean; // deprecated
- scale?: number;
- blur?: number; // deprecated
- material?: {
- imageProcessingConfiguration?: IImageProcessingConfiguration;
- [propName: string]: any;
- };
- infiniteDIstance?: boolean;
- }
- export interface IGroundConfiguration {
- size?: number;
- receiveShadows?: boolean;
- shadowLevel?: number;
- shadowOnly?: boolean; // deprecated
- mirror?: boolean | {
- sizeRatio?: number;
- blurKernel?: number;
- amount?: number;
- fresnelWeight?: number;
- fallOffDistance?: number;
- textureType?: number;
- };
- texture?: string;
- color?: { r: number, g: number, b: number };
- opacity?: number;
- material?: { // deprecated!
- [propName: string]: any;
- };
- }
- export interface ISceneConfiguration {
- debug?: boolean;
- autoRotate?: boolean; // deprecated
- rotationSpeed?: number; // deprecated
- defaultCamera?: boolean; // deprecated
- defaultLight?: boolean; // deprecated
- clearColor?: { r: number, g: number, b: number, a: number };
- imageProcessingConfiguration?: IImageProcessingConfiguration;
- environmentTexture?: string;
- }
- export interface ISceneOptimizerConfiguration {
- targetFrameRate?: number;
- trackerDuration?: number;
- autoGeneratePriorities?: boolean;
- improvementMode?: boolean;
- degradation?: string; // low, moderate, high
- types?: {
- texture?: ISceneOptimizerParameters;
- hardwareScaling?: ISceneOptimizerParameters;
- shadow?: ISceneOptimizerParameters;
- postProcess?: ISceneOptimizerParameters;
- lensFlare?: ISceneOptimizerParameters;
- particles?: ISceneOptimizerParameters;
- renderTarget?: ISceneOptimizerParameters;
- mergeMeshes?: ISceneOptimizerParameters;
- }
- }
- export interface IObserversConfiguration {
- onEngineInit?: string;
- onSceneInit?: string;
- onModelLoaded?: string;
- }
- export interface ICameraConfiguration {
- position?: { x: number, y: number, z: number };
- rotation?: { x: number, y: number, z: number, w: number };
- fov?: number;
- fovMode?: number;
- minZ?: number;
- maxZ?: number;
- inertia?: number;
- behaviors?: {
- [name: string]: number | {
- type: number;
- [propName: string]: any;
- };
- };
- [propName: string]: any;
- }
- export interface ILightConfiguration {
- type: number;
- name?: string;
- disabled?: boolean;
- position?: { x: number, y: number, z: number };
- target?: { x: number, y: number, z: number };
- direction?: { x: number, y: number, z: number };
- diffuse?: { r: number, g: number, b: number };
- specular?: { r: number, g: number, b: number };
- intensity?: number;
- intensityMode?: number;
- radius?: number;
- shadownEnabled?: boolean; // only on specific lights!
- shadowConfig?: {
- useBlurExponentialShadowMap?: boolean;
- useKernelBlur?: boolean;
- blurKernel?: number;
- blurScale?: number;
- minZ?: number;
- maxZ?: number;
- frustumSize?: number;
- angleScale?: number;
- [propName: string]: any;
- }
- [propName: string]: any;
- // no behaviors for light at the moment, but allowing configuration for future reference.
- behaviors?: {
- [name: string]: number | {
- type: number;
- [propName: string]: any;
- };
- };
- }
- export interface ISceneOptimizerParameters {
- priority?: number;
- maximumSize?: number;
- step?: number;
- }
- export interface IImageProcessingConfiguration {
- colorGradingEnabled?: boolean;
- colorCurvesEnabled?: boolean;
- colorCurves?: {
- globalHue?: number;
- globalDensity?: number;
- globalSaturation?: number;
- globalExposure?: number;
- highlightsHue?: number;
- highlightsDensity?: number;
- highlightsSaturation?: number;
- highlightsExposure?: number;
- midtonesHue?: number;
- midtonesDensity?: number;
- midtonesSaturation?: number;
- midtonesExposure?: number;
- shadowsHue?: number;
- shadowsDensity?: number;
- shadowsSaturation?: number;
- shadowsExposure?: number;
- };
- colorGradingWithGreenDepth?: boolean;
- colorGradingBGR?: boolean;
- exposure?: number;
- toneMappingEnabled?: boolean;
- contrast?: number;
- vignetteEnabled?: boolean;
- vignetteStretch?: number;
- vignetteCentreX?: number;
- vignetteCentreY?: number;
- vignetteWeight?: number;
- vignetteColor?: { r: number, g: number, b: number, a?: number };
- vignetteCameraFov?: number;
- vignetteBlendMode?: number;
- vignetteM?: boolean;
- applyByPostProcess?: boolean;
- isEnabled?: boolean;
- }
|