configuration.d.ts 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. import { ITemplateConfiguration } from './../templateManager';
  2. import { EngineOptions, IGlowLayerOptions, DepthOfFieldEffectBlurLevel } from 'babylonjs';
  3. export declare function getConfigurationKey(key: string, configObject: any): any;
  4. export interface ViewerConfiguration {
  5. version?: string;
  6. extends?: string;
  7. pageUrl?: string;
  8. configuration?: string | {
  9. url?: string;
  10. payload?: any;
  11. mapper?: string;
  12. };
  13. observers?: IObserversConfiguration;
  14. canvasElement?: string;
  15. model?: IModelConfiguration | string;
  16. scene?: ISceneConfiguration;
  17. optimizer?: ISceneOptimizerConfiguration | boolean;
  18. camera?: ICameraConfiguration;
  19. skybox?: boolean | ISkyboxConfiguration;
  20. ground?: boolean | IGroundConfiguration;
  21. lights?: {
  22. [name: string]: number | boolean | ILightConfiguration;
  23. };
  24. engine?: {
  25. renderInBackground?: boolean;
  26. antialiasing?: boolean;
  27. disableResize?: boolean;
  28. engineOptions?: EngineOptions;
  29. adaptiveQuality?: boolean;
  30. };
  31. templates?: {
  32. main: ITemplateConfiguration;
  33. [key: string]: ITemplateConfiguration;
  34. };
  35. customShaders?: {
  36. shaders?: {
  37. [key: string]: string;
  38. };
  39. includes?: {
  40. [key: string]: string;
  41. };
  42. };
  43. loaderPlugins?: {
  44. extendedMaterial?: boolean;
  45. msftLod?: boolean;
  46. telemetry?: boolean;
  47. minecraft?: boolean;
  48. [propName: string]: boolean | undefined;
  49. };
  50. lab?: {
  51. flashlight?: boolean | {
  52. exponent?: number;
  53. angle?: number;
  54. intensity?: number;
  55. diffuse?: {
  56. r: number;
  57. g: number;
  58. b: number;
  59. };
  60. specular?: {
  61. r: number;
  62. g: number;
  63. b: number;
  64. };
  65. };
  66. hideLoadingDelay?: number;
  67. assetsRootURL?: string;
  68. environmentMainColor?: {
  69. r: number;
  70. g: number;
  71. b: number;
  72. };
  73. environmentMap?: {
  74. /**
  75. * Environment map texture path in relative to the asset folder.
  76. */
  77. texture: string;
  78. /**
  79. * Default rotation to apply to the environment map.
  80. */
  81. rotationY: number;
  82. /**
  83. * Tint level of the main color on the environment map.
  84. */
  85. tintLevel: number;
  86. };
  87. defaultRenderingPipelines?: boolean | IDefaultRenderingPipelineConfiguration;
  88. globalLightRotation?: number;
  89. };
  90. }
  91. /**
  92. * Defines an animation to be applied to a model (translation, scale or rotation).
  93. */
  94. export interface IModelAnimationConfiguration {
  95. /**
  96. * Time of animation, in seconds
  97. */
  98. time?: number;
  99. /**
  100. * Scale to apply
  101. */
  102. scaling?: {
  103. x: number;
  104. y: number;
  105. z: number;
  106. };
  107. /**
  108. * Easing function to apply
  109. * See SPECTRE.EasingFunction
  110. */
  111. easingFunction?: number;
  112. /**
  113. * An Easing mode to apply to the easing function
  114. * See BABYLON.EasingFunction
  115. */
  116. easingMode?: number;
  117. }
  118. export interface IDefaultRenderingPipelineConfiguration {
  119. sharpenEnabled?: boolean;
  120. bloomEnabled?: boolean;
  121. bloomThreshold?: number;
  122. depthOfFieldEnabled?: boolean;
  123. depthOfFieldBlurLevel?: DepthOfFieldEffectBlurLevel;
  124. fxaaEnabled?: boolean;
  125. imageProcessingEnabled?: boolean;
  126. defaultPipelineTextureType?: number;
  127. bloomScale?: number;
  128. chromaticAberrationEnabled?: boolean;
  129. grainEnabled?: boolean;
  130. bloomKernel?: number;
  131. hardwareScaleLevel?: number;
  132. bloomWeight?: number;
  133. hdr?: boolean;
  134. samples?: number;
  135. glowLayerEnabled?: boolean;
  136. }
  137. export interface IModelConfiguration {
  138. id?: string;
  139. url?: string;
  140. root?: string;
  141. file?: string | File;
  142. loader?: string;
  143. position?: {
  144. x: number;
  145. y: number;
  146. z: number;
  147. };
  148. rotation?: {
  149. x: number;
  150. y: number;
  151. z: number;
  152. w?: number;
  153. };
  154. scaling?: {
  155. x: number;
  156. y: number;
  157. z: number;
  158. };
  159. parentObjectIndex?: number;
  160. castShadow?: boolean;
  161. receiveShadows?: boolean;
  162. normalize?: boolean | {
  163. center?: boolean;
  164. unitSize?: boolean;
  165. parentIndex?: number;
  166. };
  167. title?: string;
  168. subtitle?: string;
  169. thumbnail?: string;
  170. animation?: {
  171. autoStart?: boolean | string;
  172. playOnce?: boolean;
  173. autoStartIndex?: number;
  174. };
  175. entryAnimation?: IModelAnimationConfiguration;
  176. exitAnimation?: IModelAnimationConfiguration;
  177. material?: {
  178. directEnabled?: boolean;
  179. directIntensity?: number;
  180. emissiveIntensity?: number;
  181. environmentIntensity?: number;
  182. [propName: string]: any;
  183. };
  184. /**
  185. * Rotation offset axis definition
  186. */
  187. rotationOffsetAxis?: {
  188. x: number;
  189. y: number;
  190. z: number;
  191. };
  192. /**
  193. * the offset angle
  194. */
  195. rotationOffsetAngle?: number;
  196. loaderConfiguration?: {
  197. maxLODsToLoad?: number;
  198. progressiveLoading?: boolean;
  199. };
  200. }
  201. export interface ISkyboxConfiguration {
  202. cubeTexture?: {
  203. noMipMap?: boolean;
  204. gammaSpace?: boolean;
  205. url?: string | Array<string>;
  206. };
  207. color?: {
  208. r: number;
  209. g: number;
  210. b: number;
  211. };
  212. pbr?: boolean;
  213. scale?: number;
  214. blur?: number;
  215. material?: {
  216. imageProcessingConfiguration?: IImageProcessingConfiguration;
  217. [propName: string]: any;
  218. };
  219. infiniteDistance?: boolean;
  220. }
  221. export interface IGroundConfiguration {
  222. size?: number;
  223. receiveShadows?: boolean;
  224. shadowLevel?: number;
  225. shadowOnly?: boolean;
  226. mirror?: boolean | {
  227. sizeRatio?: number;
  228. blurKernel?: number;
  229. amount?: number;
  230. fresnelWeight?: number;
  231. fallOffDistance?: number;
  232. textureType?: number;
  233. };
  234. texture?: string;
  235. color?: {
  236. r: number;
  237. g: number;
  238. b: number;
  239. };
  240. opacity?: number;
  241. material?: {
  242. [propName: string]: any;
  243. };
  244. }
  245. export interface ISceneConfiguration {
  246. debug?: boolean;
  247. clearColor?: {
  248. r: number;
  249. g: number;
  250. b: number;
  251. a: number;
  252. };
  253. mainColor?: {
  254. r?: number;
  255. g?: number;
  256. b?: number;
  257. };
  258. imageProcessingConfiguration?: IImageProcessingConfiguration;
  259. environmentTexture?: string;
  260. colorGrading?: IColorGradingConfiguration;
  261. environmentRotationY?: number;
  262. /**
  263. * Deprecated, please use default rendering pipeline
  264. */
  265. glow?: boolean | IGlowLayerOptions;
  266. disableHdr?: boolean;
  267. renderInBackground?: boolean;
  268. disableCameraControl?: boolean;
  269. animationPropertiesOverride?: {
  270. [propName: string]: any;
  271. };
  272. defaultMaterial?: {
  273. materialType: "standard" | "pbr";
  274. [propName: string]: any;
  275. };
  276. flags?: {
  277. shadowsEnabled?: boolean;
  278. particlesEnabled?: boolean;
  279. collisionsEnabled?: boolean;
  280. lightsEnabled?: boolean;
  281. texturesEnabled?: boolean;
  282. lensFlaresEnabled?: boolean;
  283. proceduralTexturesEnabled?: boolean;
  284. renderTargetsEnabled?: boolean;
  285. spritesEnabled?: boolean;
  286. skeletonsEnabled?: boolean;
  287. audioEnabled?: boolean;
  288. };
  289. }
  290. /**
  291. * The Color Grading Configuration groups the different settings used to define the color grading used in the viewer.
  292. */
  293. export interface IColorGradingConfiguration {
  294. /**
  295. * Transform data string, encoded as determined by transformDataFormat.
  296. */
  297. transformData: string;
  298. /**
  299. * The encoding format of TransformData (currently only raw-base16 is supported).
  300. */
  301. transformDataFormat: string;
  302. /**
  303. * The weight of the transform
  304. */
  305. transformWeight: number;
  306. /**
  307. * Color curve colorFilterHueGlobal value
  308. */
  309. colorFilterHueGlobal: number;
  310. /**
  311. * Color curve colorFilterHueShadows value
  312. */
  313. colorFilterHueShadows: number;
  314. /**
  315. * Color curve colorFilterHueMidtones value
  316. */
  317. colorFilterHueMidtones: number;
  318. /**
  319. * Color curve colorFilterHueHighlights value
  320. */
  321. colorFilterHueHighlights: number;
  322. /**
  323. * Color curve colorFilterDensityGlobal value
  324. */
  325. colorFilterDensityGlobal: number;
  326. /**
  327. * Color curve colorFilterDensityShadows value
  328. */
  329. colorFilterDensityShadows: number;
  330. /**
  331. * Color curve colorFilterDensityMidtones value
  332. */
  333. colorFilterDensityMidtones: number;
  334. /**
  335. * Color curve colorFilterDensityHighlights value
  336. */
  337. colorFilterDensityHighlights: number;
  338. /**
  339. * Color curve saturationGlobal value
  340. */
  341. saturationGlobal: number;
  342. /**
  343. * Color curve saturationShadows value
  344. */
  345. saturationShadows: number;
  346. /**
  347. * Color curve saturationMidtones value
  348. */
  349. saturationMidtones: number;
  350. /**
  351. * Color curve saturationHighlights value
  352. */
  353. saturationHighlights: number;
  354. /**
  355. * Color curve exposureGlobal value
  356. */
  357. exposureGlobal: number;
  358. /**
  359. * Color curve exposureShadows value
  360. */
  361. exposureShadows: number;
  362. /**
  363. * Color curve exposureMidtones value
  364. */
  365. exposureMidtones: number;
  366. /**
  367. * Color curve exposureHighlights value
  368. */
  369. exposureHighlights: number;
  370. }
  371. export interface ISceneOptimizerConfiguration {
  372. targetFrameRate?: number;
  373. trackerDuration?: number;
  374. autoGeneratePriorities?: boolean;
  375. improvementMode?: boolean;
  376. degradation?: string;
  377. types?: {
  378. texture?: ISceneOptimizerParameters;
  379. hardwareScaling?: ISceneOptimizerParameters;
  380. shadow?: ISceneOptimizerParameters;
  381. postProcess?: ISceneOptimizerParameters;
  382. lensFlare?: ISceneOptimizerParameters;
  383. particles?: ISceneOptimizerParameters;
  384. renderTarget?: ISceneOptimizerParameters;
  385. mergeMeshes?: ISceneOptimizerParameters;
  386. };
  387. custom?: string;
  388. }
  389. export interface IObserversConfiguration {
  390. onEngineInit?: string;
  391. onSceneInit?: string;
  392. onModelLoaded?: string;
  393. }
  394. export interface ICameraConfiguration {
  395. position?: {
  396. x: number;
  397. y: number;
  398. z: number;
  399. };
  400. rotation?: {
  401. x: number;
  402. y: number;
  403. z: number;
  404. w: number;
  405. };
  406. fov?: number;
  407. fovMode?: number;
  408. minZ?: number;
  409. maxZ?: number;
  410. inertia?: number;
  411. exposure?: number;
  412. pinchPrecision?: number;
  413. behaviors?: {
  414. [name: string]: boolean | number | ICameraBehaviorConfiguration;
  415. };
  416. disableCameraControl?: boolean;
  417. disableCtrlForPanning?: boolean;
  418. disableAutoFocus?: boolean;
  419. [propName: string]: any;
  420. }
  421. export interface ICameraBehaviorConfiguration {
  422. type: number;
  423. [propName: string]: any;
  424. }
  425. export interface ILightConfiguration {
  426. type: number;
  427. name?: string;
  428. disabled?: boolean;
  429. position?: {
  430. x: number;
  431. y: number;
  432. z: number;
  433. };
  434. target?: {
  435. x: number;
  436. y: number;
  437. z: number;
  438. };
  439. direction?: {
  440. x: number;
  441. y: number;
  442. z: number;
  443. };
  444. diffuse?: {
  445. r: number;
  446. g: number;
  447. b: number;
  448. };
  449. specular?: {
  450. r: number;
  451. g: number;
  452. b: number;
  453. };
  454. intensity?: number;
  455. intensityMode?: number;
  456. radius?: number;
  457. shadownEnabled?: boolean;
  458. shadowConfig?: {
  459. useBlurExponentialShadowMap?: boolean;
  460. useBlurCloseExponentialShadowMap?: boolean;
  461. useKernelBlur?: boolean;
  462. blurKernel?: number;
  463. blurScale?: number;
  464. minZ?: number;
  465. maxZ?: number;
  466. frustumSize?: number;
  467. angleScale?: number;
  468. frustumEdgeFalloff?: number;
  469. [propName: string]: any;
  470. };
  471. spotAngle?: number;
  472. shadowFieldOfView?: number;
  473. shadowBufferSize?: number;
  474. shadowFrustumSize?: number;
  475. shadowMinZ?: number;
  476. shadowMaxZ?: number;
  477. [propName: string]: any;
  478. behaviors?: {
  479. [name: string]: number | {
  480. type: number;
  481. [propName: string]: any;
  482. };
  483. };
  484. }
  485. export interface ISceneOptimizerParameters {
  486. priority?: number;
  487. maximumSize?: number;
  488. step?: number;
  489. }
  490. export interface IImageProcessingConfiguration {
  491. colorGradingEnabled?: boolean;
  492. colorCurvesEnabled?: boolean;
  493. colorCurves?: {
  494. globalHue?: number;
  495. globalDensity?: number;
  496. globalSaturation?: number;
  497. globalExposure?: number;
  498. highlightsHue?: number;
  499. highlightsDensity?: number;
  500. highlightsSaturation?: number;
  501. highlightsExposure?: number;
  502. midtonesHue?: number;
  503. midtonesDensity?: number;
  504. midtonesSaturation?: number;
  505. midtonesExposure?: number;
  506. shadowsHue?: number;
  507. shadowsDensity?: number;
  508. shadowsSaturation?: number;
  509. shadowsExposure?: number;
  510. };
  511. colorGradingWithGreenDepth?: boolean;
  512. colorGradingBGR?: boolean;
  513. exposure?: number;
  514. toneMappingEnabled?: boolean;
  515. contrast?: number;
  516. vignetteEnabled?: boolean;
  517. vignetteStretch?: number;
  518. vignetteCentreX?: number;
  519. vignetteCentreY?: number;
  520. vignetteWeight?: number;
  521. vignetteColor?: {
  522. r: number;
  523. g: number;
  524. b: number;
  525. a?: number;
  526. };
  527. vignetteCameraFov?: number;
  528. vignetteBlendMode?: number;
  529. vignetteM?: boolean;
  530. applyByPostProcess?: boolean;
  531. isEnabled?: boolean;
  532. }