configuration.ts 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. import { ITemplateConfiguration } from './../templateManager';
  2. export interface ViewerConfiguration {
  3. // configuration version
  4. version?: string;
  5. extends?: string; // is this configuration extending an existing configuration?
  6. pageUrl?: string; // will be used for sharing and other fun stuff. This is the page showing the model (not the model's url!)
  7. configuration?: string | {
  8. url: string;
  9. mapper?: string; // json (default), html, yaml, xml, etc'. if not provided, file extension will be used.
  10. };
  11. // Deprecated
  12. /*// native (!!!) javascript events. Mainly used in the JSON-format.
  13. // those events will be triggered by the container element (the <babylon> tag);
  14. events?: {
  15. load: boolean | string;
  16. init: boolean | string;
  17. meshselected: boolean | string;
  18. pointerdown: boolean | string;
  19. pointerup: boolean | string;
  20. pointermove: boolean | string;
  21. // load: 'onViewerLoaded' // will trigger the event prefix-onViewerLoaded instead of prefix-onLoad (and ONLY this event).
  22. } | boolean; //events: true - fire all events*/
  23. //eventPrefix?: string;
  24. // names of functions in the window context.
  25. observers?: {
  26. onEngineInit?: string;
  27. onSceneInit?: string;
  28. onModelLoaded?: string;
  29. }
  30. canvasElement?: string; // if there is a need to override the standard implementation - ID of HTMLCanvasElement
  31. model?: {
  32. url?: string;
  33. loader?: string; // obj, gltf?
  34. position?: { x: number, y: number, z: number };
  35. rotation?: { x: number, y: number, z: number, w: number };
  36. scaling?: { x: number, y: number, z: number };
  37. parentObjectIndex?: number; // the index of the parent object of the model in the loaded meshes array.
  38. title: string;
  39. subtitle?: string;
  40. thumbnail?: string; // URL or data-url
  41. [propName: string]: any; // further configuration, like title and creator
  42. } | string;
  43. scene?: {
  44. debug?: boolean;
  45. autoRotate?: boolean;
  46. rotationSpeed?: number;
  47. defaultCamera?: boolean;
  48. defaultLight?: boolean;
  49. clearColor?: { r: number, g: number, b: number, a: number };
  50. imageProcessingConfiguration?: IImageProcessingConfiguration;
  51. },
  52. // at the moment, support only a single camera.
  53. camera?: {
  54. position?: { x: number, y: number, z: number };
  55. rotation?: { x: number, y: number, z: number, w: number };
  56. fov?: number;
  57. fovMode?: number;
  58. minZ?: number;
  59. maxZ?: number;
  60. inertia?: number;
  61. behaviors?: {
  62. [name: string]: number | {
  63. type: number;
  64. [propName: string]: any;
  65. };
  66. };
  67. [propName: string]: any;
  68. },
  69. skybox?: {
  70. cubeTexture: {
  71. noMipMap?: boolean;
  72. gammaSpace?: boolean;
  73. url: string | Array<string>;
  74. };
  75. pbr?: boolean;
  76. scale?: number;
  77. blur?: number;
  78. material?: {
  79. imageProcessingConfiguration?: IImageProcessingConfiguration;
  80. };
  81. infiniteDIstance?: boolean;
  82. };
  83. ground?: boolean | {
  84. size?: number;
  85. receiveShadows?: boolean;
  86. shadowOnly?: boolean;
  87. material?: {
  88. [propName: string]: any;
  89. }
  90. };
  91. lights?: {
  92. [name: string]: {
  93. type: number;
  94. name?: string;
  95. disabled?: boolean;
  96. position?: { x: number, y: number, z: number };
  97. target?: { x: number, y: number, z: number };
  98. direction?: { x: number, y: number, z: number };
  99. diffuse?: { r: number, g: number, b: number };
  100. specular?: { r: number, g: number, b: number };
  101. intensity?: number;
  102. radius?: number;
  103. shadownEnabled?: boolean; // only on specific lights!
  104. shadowConfig?: {
  105. useBlurExponentialShadowMap?: boolean;
  106. useKernelBlur?: boolean;
  107. blurKernel?: number;
  108. blurScale?: number;
  109. [propName: string]: any;
  110. }
  111. [propName: string]: any;
  112. // no behaviors for light at the moment, but allowing configuration for future reference.
  113. behaviors?: {
  114. [name: string]: number | {
  115. type: number;
  116. [propName: string]: any;
  117. };
  118. };
  119. }
  120. },
  121. // engine configuration. optional!
  122. engine?: {
  123. antialiasing?: boolean;
  124. },
  125. //templateStructure?: ITemplateStructure,
  126. templates?: {
  127. main: ITemplateConfiguration,
  128. [key: string]: ITemplateConfiguration
  129. };
  130. // nodes?
  131. }
  132. export interface IImageProcessingConfiguration {
  133. colorGradingEnabled?: boolean;
  134. colorCurvesEnabled?: boolean;
  135. colorCurves?: {
  136. globalHue?: number;
  137. globalDensity?: number;
  138. globalSaturation?: number;
  139. globalExposure?: number;
  140. highlightsHue?: number;
  141. highlightsDensity?: number;
  142. highlightsSaturation?: number;
  143. highlightsExposure?: number;
  144. midtonesHue?: number;
  145. midtonesDensity?: number;
  146. midtonesSaturation?: number;
  147. midtonesExposure?: number;
  148. shadowsHue?: number;
  149. shadowsDensity?: number;
  150. shadowsSaturation?: number;
  151. shadowsExposure?: number;
  152. };
  153. colorGradingWithGreenDepth?: boolean;
  154. colorGradingBGR?: boolean;
  155. exposure?: number;
  156. toneMappingEnabled?: boolean;
  157. contrast?: number;
  158. vignetteEnabled?: boolean;
  159. vignetteStretch?: number;
  160. vignetteCentreX?: number;
  161. vignetteCentreY?: number;
  162. vignetteWeight?: number;
  163. vignetteColor?: { r: number, g: number, b: number, a?: number };
  164. vignetteCameraFov?: number;
  165. vignetteBlendMode?: number;
  166. vignetteM?: boolean;
  167. applyByPostProcess?: boolean;
  168. }