configuration.ts 5.4 KB

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