configuration.ts 5.6 KB

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