@onerjs/loaders 8.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/OBJ/index.d.ts +4 -0
  2. package/OBJ/index.js +5 -0
  3. package/OBJ/index.js.map +1 -0
  4. package/OBJ/mtlFileLoader.d.ts +41 -0
  5. package/OBJ/mtlFileLoader.js +231 -0
  6. package/OBJ/mtlFileLoader.js.map +1 -0
  7. package/OBJ/objFileLoader.d.ts +136 -0
  8. package/OBJ/objFileLoader.js +318 -0
  9. package/OBJ/objFileLoader.js.map +1 -0
  10. package/OBJ/objFileLoader.metadata.d.ts +4 -0
  11. package/OBJ/objFileLoader.metadata.js +5 -0
  12. package/OBJ/objFileLoader.metadata.js.map +1 -0
  13. package/OBJ/objLoadingOptions.d.ts +47 -0
  14. package/OBJ/objLoadingOptions.js +2 -0
  15. package/OBJ/objLoadingOptions.js.map +1 -0
  16. package/OBJ/solidParser.d.ts +174 -0
  17. package/OBJ/solidParser.js +862 -0
  18. package/OBJ/solidParser.js.map +1 -0
  19. package/SPLAT/index.d.ts +2 -0
  20. package/SPLAT/index.js +4 -0
  21. package/SPLAT/index.js.map +1 -0
  22. package/SPLAT/splatFileLoader.d.ts +88 -0
  23. package/SPLAT/splatFileLoader.js +562 -0
  24. package/SPLAT/splatFileLoader.js.map +1 -0
  25. package/SPLAT/splatFileLoader.metadata.d.ts +14 -0
  26. package/SPLAT/splatFileLoader.metadata.js +12 -0
  27. package/SPLAT/splatFileLoader.metadata.js.map +1 -0
  28. package/SPLAT/splatLoadingOptions.d.ts +13 -0
  29. package/SPLAT/splatLoadingOptions.js +2 -0
  30. package/SPLAT/splatLoadingOptions.js.map +1 -0
  31. package/STL/index.d.ts +1 -0
  32. package/STL/index.js +2 -0
  33. package/STL/index.js.map +1 -0
  34. package/STL/stlFileLoader.d.ts +78 -0
  35. package/STL/stlFileLoader.js +239 -0
  36. package/STL/stlFileLoader.js.map +1 -0
  37. package/STL/stlFileLoader.metadata.d.ts +8 -0
  38. package/STL/stlFileLoader.metadata.js +8 -0
  39. package/STL/stlFileLoader.metadata.js.map +1 -0
  40. package/bvh/bvhFileLoader.d.ts +69 -0
  41. package/bvh/bvhFileLoader.js +133 -0
  42. package/bvh/bvhFileLoader.js.map +1 -0
  43. package/bvh/bvhFileLoader.metadata.d.ts +8 -0
  44. package/bvh/bvhFileLoader.metadata.js +8 -0
  45. package/bvh/bvhFileLoader.metadata.js.map +1 -0
  46. package/bvh/bvhLoader.d.ts +14 -0
  47. package/bvh/bvhLoader.js +329 -0
  48. package/bvh/bvhLoader.js.map +1 -0
  49. package/bvh/bvhLoadingOptions.d.ts +9 -0
  50. package/bvh/bvhLoadingOptions.js +2 -0
  51. package/bvh/bvhLoadingOptions.js.map +1 -0
  52. package/bvh/index.d.ts +2 -0
  53. package/bvh/index.js +4 -0
  54. package/bvh/index.js.map +1 -0
  55. package/bvh/license.md +21 -0
  56. package/dynamic.d.ts +5 -0
  57. package/dynamic.js +57 -0
  58. package/dynamic.js.map +1 -0
  59. package/glTF/1.0/glTFBinaryExtension.d.ts +16 -0
  60. package/glTF/1.0/glTFBinaryExtension.js +65 -0
  61. package/glTF/1.0/glTFBinaryExtension.js.map +1 -0
  62. package/glTF/1.0/glTFLoader.d.ts +144 -0
  63. package/glTF/1.0/glTFLoader.js +1841 -0
  64. package/glTF/1.0/glTFLoader.js.map +1 -0
  65. package/glTF/1.0/glTFLoaderInterfaces.d.ts +412 -0
  66. package/glTF/1.0/glTFLoaderInterfaces.js +96 -0
  67. package/glTF/1.0/glTFLoaderInterfaces.js.map +1 -0
  68. package/glTF/1.0/glTFLoaderUtils.d.ts +71 -0
  69. package/glTF/1.0/glTFLoaderUtils.js +255 -0
  70. package/glTF/1.0/glTFLoaderUtils.js.map +1 -0
  71. package/glTF/1.0/glTFMaterialsCommonExtension.d.ts +13 -0
  72. package/glTF/1.0/glTFMaterialsCommonExtension.js +131 -0
  73. package/glTF/1.0/glTFMaterialsCommonExtension.js.map +1 -0
  74. package/glTF/1.0/index.d.ts +5 -0
  75. package/glTF/1.0/index.js +6 -0
  76. package/glTF/1.0/index.js.map +1 -0
  77. package/glTF/2.0/Extensions/EXT_lights_ies.d.ts +41 -0
  78. package/glTF/2.0/Extensions/EXT_lights_ies.js +84 -0
  79. package/glTF/2.0/Extensions/EXT_lights_ies.js.map +1 -0
  80. package/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +48 -0
  81. package/glTF/2.0/Extensions/EXT_lights_image_based.js +116 -0
  82. package/glTF/2.0/Extensions/EXT_lights_image_based.js.map +1 -0
  83. package/glTF/2.0/Extensions/EXT_materials_diffuse_roughness.d.ts +43 -0
  84. package/glTF/2.0/Extensions/EXT_materials_diffuse_roughness.js +69 -0
  85. package/glTF/2.0/Extensions/EXT_materials_diffuse_roughness.js.map +1 -0
  86. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +39 -0
  87. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +82 -0
  88. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -0
  89. package/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +39 -0
  90. package/glTF/2.0/Extensions/EXT_meshopt_compression.js +51 -0
  91. package/glTF/2.0/Extensions/EXT_meshopt_compression.js.map +1 -0
  92. package/glTF/2.0/Extensions/EXT_texture_avif.d.ts +34 -0
  93. package/glTF/2.0/Extensions/EXT_texture_avif.js +39 -0
  94. package/glTF/2.0/Extensions/EXT_texture_avif.js.map +1 -0
  95. package/glTF/2.0/Extensions/EXT_texture_webp.d.ts +33 -0
  96. package/glTF/2.0/Extensions/EXT_texture_webp.js +38 -0
  97. package/glTF/2.0/Extensions/EXT_texture_webp.js.map +1 -0
  98. package/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +48 -0
  99. package/glTF/2.0/Extensions/ExtrasAsMetadata.js +63 -0
  100. package/glTF/2.0/Extensions/ExtrasAsMetadata.js.map +1 -0
  101. package/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +47 -0
  102. package/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -0
  103. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js +239 -0
  104. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js.map +1 -0
  105. package/glTF/2.0/Extensions/KHR_animation_pointer.js +78 -0
  106. package/glTF/2.0/Extensions/KHR_animation_pointer.js.map +1 -0
  107. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +47 -0
  108. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +93 -0
  109. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js.map +1 -0
  110. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +352 -0
  111. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +1700 -0
  112. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js.map +1 -0
  113. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +33 -0
  114. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +20 -0
  115. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js.map +1 -0
  116. package/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +3 -0
  117. package/glTF/2.0/Extensions/KHR_interactivity/index.js +4 -0
  118. package/glTF/2.0/Extensions/KHR_interactivity/index.js.map +1 -0
  119. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +70 -0
  120. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +450 -0
  121. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js.map +1 -0
  122. package/glTF/2.0/Extensions/KHR_interactivity.d.ts +38 -0
  123. package/glTF/2.0/Extensions/KHR_interactivity.js +151 -0
  124. package/glTF/2.0/Extensions/KHR_interactivity.js.map +1 -0
  125. package/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +41 -0
  126. package/glTF/2.0/Extensions/KHR_lights_punctual.js +92 -0
  127. package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -0
  128. package/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +42 -0
  129. package/glTF/2.0/Extensions/KHR_materials_anisotropy.js +61 -0
  130. package/glTF/2.0/Extensions/KHR_materials_anisotropy.js.map +1 -0
  131. package/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +43 -0
  132. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +94 -0
  133. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js.map +1 -0
  134. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +43 -0
  135. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +95 -0
  136. package/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js.map +1 -0
  137. package/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +43 -0
  138. package/glTF/2.0/Extensions/KHR_materials_dispersion.js +60 -0
  139. package/glTF/2.0/Extensions/KHR_materials_dispersion.js.map +1 -0
  140. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +42 -0
  141. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +52 -0
  142. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js.map +1 -0
  143. package/glTF/2.0/Extensions/KHR_materials_ior.d.ts +46 -0
  144. package/glTF/2.0/Extensions/KHR_materials_ior.js +62 -0
  145. package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -0
  146. package/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +42 -0
  147. package/glTF/2.0/Extensions/KHR_materials_iridescence.js +71 -0
  148. package/glTF/2.0/Extensions/KHR_materials_iridescence.js.map +1 -0
  149. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +42 -0
  150. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +81 -0
  151. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js.map +1 -0
  152. package/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +43 -0
  153. package/glTF/2.0/Extensions/KHR_materials_sheen.js +85 -0
  154. package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -0
  155. package/glTF/2.0/Extensions/KHR_materials_specular.d.ts +42 -0
  156. package/glTF/2.0/Extensions/KHR_materials_specular.js +85 -0
  157. package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -0
  158. package/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +42 -0
  159. package/glTF/2.0/Extensions/KHR_materials_transmission.js +306 -0
  160. package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -0
  161. package/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +42 -0
  162. package/glTF/2.0/Extensions/KHR_materials_unlit.js +73 -0
  163. package/glTF/2.0/Extensions/KHR_materials_unlit.js.map +1 -0
  164. package/glTF/2.0/Extensions/KHR_materials_variants.d.ts +112 -0
  165. package/glTF/2.0/Extensions/KHR_materials_variants.js +263 -0
  166. package/glTF/2.0/Extensions/KHR_materials_variants.js.map +1 -0
  167. package/glTF/2.0/Extensions/KHR_materials_volume.d.ts +43 -0
  168. package/glTF/2.0/Extensions/KHR_materials_volume.js +86 -0
  169. package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -0
  170. package/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +29 -0
  171. package/glTF/2.0/Extensions/KHR_mesh_quantization.js +23 -0
  172. package/glTF/2.0/Extensions/KHR_mesh_quantization.js.map +1 -0
  173. package/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +31 -0
  174. package/glTF/2.0/Extensions/KHR_node_hoverability.js +190 -0
  175. package/glTF/2.0/Extensions/KHR_node_hoverability.js.map +1 -0
  176. package/glTF/2.0/Extensions/KHR_node_selectability.d.ts +30 -0
  177. package/glTF/2.0/Extensions/KHR_node_selectability.js +124 -0
  178. package/glTF/2.0/Extensions/KHR_node_selectability.js.map +1 -0
  179. package/glTF/2.0/Extensions/KHR_node_visibility.d.ts +30 -0
  180. package/glTF/2.0/Extensions/KHR_node_visibility.js +69 -0
  181. package/glTF/2.0/Extensions/KHR_node_visibility.js.map +1 -0
  182. package/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +33 -0
  183. package/glTF/2.0/Extensions/KHR_texture_basisu.js +38 -0
  184. package/glTF/2.0/Extensions/KHR_texture_basisu.js.map +1 -0
  185. package/glTF/2.0/Extensions/KHR_texture_transform.d.ts +37 -0
  186. package/glTF/2.0/Extensions/KHR_texture_transform.js +59 -0
  187. package/glTF/2.0/Extensions/KHR_texture_transform.js.map +1 -0
  188. package/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +39 -0
  189. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js +48 -0
  190. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js.map +1 -0
  191. package/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +56 -0
  192. package/glTF/2.0/Extensions/MSFT_audio_emitter.js +227 -0
  193. package/glTF/2.0/Extensions/MSFT_audio_emitter.js.map +1 -0
  194. package/glTF/2.0/Extensions/MSFT_lod.d.ts +104 -0
  195. package/glTF/2.0/Extensions/MSFT_lod.js +338 -0
  196. package/glTF/2.0/Extensions/MSFT_lod.js.map +1 -0
  197. package/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +27 -0
  198. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js +41 -0
  199. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js.map +1 -0
  200. package/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +27 -0
  201. package/glTF/2.0/Extensions/MSFT_sRGBFactors.js +42 -0
  202. package/glTF/2.0/Extensions/MSFT_sRGBFactors.js.map +1 -0
  203. package/glTF/2.0/Extensions/dynamic.d.ts +4 -0
  204. package/glTF/2.0/Extensions/dynamic.js +156 -0
  205. package/glTF/2.0/Extensions/dynamic.js.map +1 -0
  206. package/glTF/2.0/Extensions/gltfPathToObjectConverter.d.ts +45 -0
  207. package/glTF/2.0/Extensions/gltfPathToObjectConverter.js +101 -0
  208. package/glTF/2.0/Extensions/gltfPathToObjectConverter.js.map +1 -0
  209. package/glTF/2.0/Extensions/index.d.ts +39 -0
  210. package/glTF/2.0/Extensions/index.js +41 -0
  211. package/glTF/2.0/Extensions/index.js.map +1 -0
  212. package/glTF/2.0/Extensions/objectModelMapping.d.ts +289 -0
  213. package/glTF/2.0/Extensions/objectModelMapping.js +828 -0
  214. package/glTF/2.0/Extensions/objectModelMapping.js.map +1 -0
  215. package/glTF/2.0/glTFLoader.d.ts +429 -0
  216. package/glTF/2.0/glTFLoader.js +2408 -0
  217. package/glTF/2.0/glTFLoader.js.map +1 -0
  218. package/glTF/2.0/glTFLoaderAnimation.d.ts +42 -0
  219. package/glTF/2.0/glTFLoaderAnimation.js +80 -0
  220. package/glTF/2.0/glTFLoaderAnimation.js.map +1 -0
  221. package/glTF/2.0/glTFLoaderExtension.d.ts +165 -0
  222. package/glTF/2.0/glTFLoaderExtension.js +2 -0
  223. package/glTF/2.0/glTFLoaderExtension.js.map +1 -0
  224. package/glTF/2.0/glTFLoaderExtensionRegistry.d.ts +25 -0
  225. package/glTF/2.0/glTFLoaderExtensionRegistry.js +33 -0
  226. package/glTF/2.0/glTFLoaderExtensionRegistry.js.map +1 -0
  227. package/glTF/2.0/glTFLoaderInterfaces.d.ts +257 -0
  228. package/glTF/2.0/glTFLoaderInterfaces.js +2 -0
  229. package/glTF/2.0/glTFLoaderInterfaces.js.map +1 -0
  230. package/glTF/2.0/index.d.ts +6 -0
  231. package/glTF/2.0/index.js +8 -0
  232. package/glTF/2.0/index.js.map +1 -0
  233. package/glTF/glTFFileLoader.d.ts +516 -0
  234. package/glTF/glTFFileLoader.js +968 -0
  235. package/glTF/glTFFileLoader.js.map +1 -0
  236. package/glTF/glTFFileLoader.metadata.d.ts +15 -0
  237. package/glTF/glTFFileLoader.metadata.js +18 -0
  238. package/glTF/glTFFileLoader.metadata.js.map +1 -0
  239. package/glTF/glTFValidation.d.ts +29 -0
  240. package/glTF/glTFValidation.js +126 -0
  241. package/glTF/glTFValidation.js.map +1 -0
  242. package/glTF/index.d.ts +5 -0
  243. package/glTF/index.js +7 -0
  244. package/glTF/index.js.map +1 -0
  245. package/index.d.ts +5 -0
  246. package/index.js +7 -0
  247. package/index.js.map +1 -0
  248. package/legacy/legacy-bvhFileLoader.d.ts +1 -0
  249. package/legacy/legacy-bvhFileLoader.js +16 -0
  250. package/legacy/legacy-bvhFileLoader.js.map +1 -0
  251. package/legacy/legacy-glTF.d.ts +2 -0
  252. package/legacy/legacy-glTF.js +19 -0
  253. package/legacy/legacy-glTF.js.map +1 -0
  254. package/legacy/legacy-glTF1.d.ts +2 -0
  255. package/legacy/legacy-glTF1.js +16 -0
  256. package/legacy/legacy-glTF1.js.map +1 -0
  257. package/legacy/legacy-glTF1FileLoader.d.ts +2 -0
  258. package/legacy/legacy-glTF1FileLoader.js +4 -0
  259. package/legacy/legacy-glTF1FileLoader.js.map +1 -0
  260. package/legacy/legacy-glTF2.d.ts +2 -0
  261. package/legacy/legacy-glTF2.js +35 -0
  262. package/legacy/legacy-glTF2.js.map +1 -0
  263. package/legacy/legacy-glTF2FileLoader.d.ts +2 -0
  264. package/legacy/legacy-glTF2FileLoader.js +4 -0
  265. package/legacy/legacy-glTF2FileLoader.js.map +1 -0
  266. package/legacy/legacy-glTFFileLoader.d.ts +3 -0
  267. package/legacy/legacy-glTFFileLoader.js +5 -0
  268. package/legacy/legacy-glTFFileLoader.js.map +1 -0
  269. package/legacy/legacy-objFileLoader.d.ts +1 -0
  270. package/legacy/legacy-objFileLoader.js +16 -0
  271. package/legacy/legacy-objFileLoader.js.map +1 -0
  272. package/legacy/legacy-stlFileLoader.d.ts +1 -0
  273. package/legacy/legacy-stlFileLoader.js +16 -0
  274. package/legacy/legacy-stlFileLoader.js.map +1 -0
  275. package/legacy/legacy.d.ts +7 -0
  276. package/legacy/legacy.js +10 -0
  277. package/legacy/legacy.js.map +1 -0
  278. package/license.md +71 -0
  279. package/package.json +49 -0
  280. package/readme.md +23 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectModelMapping.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/objectModelMapping.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n\nimport type { TransformNode } from \"core/Meshes/transformNode\";\nimport type { IAnimation, ICamera, IGLTF, IKHRLightsPunctual_Light, IMaterial, IMesh, INode } from \"../glTFLoaderInterfaces\";\nimport type { Vector3 } from \"core/Maths/math.vector\";\nimport { Matrix, Quaternion, Vector2 } from \"core/Maths/math.vector\";\nimport { Constants } from \"core/Engines/constants\";\nimport type { Color3 } from \"core/Maths/math.color\";\nimport { Color4 } from \"core/Maths/math.color\";\nimport type { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\nimport type { Light } from \"core/Lights/light\";\nimport type { Nullable } from \"core/types\";\nimport { SpotLight } from \"core/Lights/spotLight\";\nimport type { IEXTLightsImageBased_LightImageBased } from \"babylonjs-gltf2interface\";\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\nimport type { IInterpolationPropertyInfo, IObjectAccessor } from \"core/FlowGraph/typeDefinitions\";\nimport { GLTFPathToObjectConverter } from \"./gltfPathToObjectConverter\";\nimport type { AnimationGroup } from \"core/Animations/animationGroup\";\nimport type { Mesh } from \"core/Meshes/mesh\";\n\nexport interface IGLTFObjectModelTree {\n cameras: IGLTFObjectModelTreeCamerasObject;\n nodes: IGLTFObjectModelTreeNodesObject;\n materials: IGLTFObjectModelTreeMaterialsObject;\n extensions: IGLTFObjectModelTreeExtensionsObject;\n animations: {\n length: IObjectAccessor<IAnimation[], AnimationGroup[], number>;\n __array__: {};\n };\n meshes: {\n length: IObjectAccessor<IMesh[], (Mesh | undefined)[], number>;\n __array__: {};\n };\n}\n\nexport interface IGLTFObjectModelTreeNodesObject<GLTFTargetType = INode, BabylonTargetType = TransformNode> {\n length: IObjectAccessor<GLTFTargetType[], BabylonTargetType[], number>;\n __array__: {\n __target__: boolean;\n translation: IObjectAccessor<GLTFTargetType, BabylonTargetType, Vector3>;\n rotation: IObjectAccessor<GLTFTargetType, BabylonTargetType, Quaternion>;\n scale: IObjectAccessor<GLTFTargetType, BabylonTargetType, Vector3>;\n matrix: IObjectAccessor<GLTFTargetType, BabylonTargetType, Matrix>;\n globalMatrix: IObjectAccessor<GLTFTargetType, BabylonTargetType, Matrix>;\n weights: {\n length: IObjectAccessor<GLTFTargetType, BabylonTargetType, number>;\n __array__: { __target__: boolean } & IObjectAccessor<GLTFTargetType, BabylonTargetType, number>;\n } & IObjectAccessor<GLTFTargetType, BabylonTargetType, number[]>;\n extensions: {\n EXT_lights_ies?: {\n multiplier: IObjectAccessor<INode, Light, number>;\n color: IObjectAccessor<INode, Light, Color3>;\n };\n };\n };\n}\n\nexport interface IGLTFObjectModelTreeCamerasObject {\n __array__: {\n __target__: boolean;\n orthographic: {\n xmag: IObjectAccessor<ICamera, ICamera, Vector2>;\n ymag: IObjectAccessor<ICamera, ICamera, Vector2>;\n zfar: IObjectAccessor<ICamera, ICamera, number>;\n znear: IObjectAccessor<ICamera, ICamera, number>;\n };\n perspective: {\n yfov: IObjectAccessor<ICamera, ICamera, number>;\n zfar: IObjectAccessor<ICamera, ICamera, number>;\n znear: IObjectAccessor<ICamera, ICamera, number>;\n aspectRatio: IObjectAccessor<ICamera, ICamera, Nullable<number>>;\n };\n };\n}\n\nexport interface IGLTFObjectModelTreeMaterialsObject {\n __array__: {\n __target__: boolean;\n pbrMetallicRoughness: {\n baseColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color4>;\n metallicFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<number>>;\n roughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<number>>;\n baseColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n metallicRoughnessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n emissiveFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n normalTexture: {\n scale: IObjectAccessor<IMaterial, PBRMaterial, number>;\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n occlusionTexture: {\n strength: IObjectAccessor<IMaterial, PBRMaterial, number>;\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n emissiveTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n extensions: {\n KHR_materials_anisotropy: {\n anisotropyStrength: IObjectAccessor<IMaterial, PBRMaterial, number>;\n anisotropyRotation: IObjectAccessor<IMaterial, PBRMaterial, number>;\n anisotropyTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_clearcoat: {\n clearcoatFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n clearcoatRoughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n clearcoatTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n clearcoatNormalTexture: {\n scale: IObjectAccessor<IMaterial, PBRMaterial, number>;\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n clearcoatRoughnessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_dispersion: {\n dispersion: IObjectAccessor<IMaterial, PBRMaterial, number>;\n };\n KHR_materials_emissive_strength: {\n emissiveStrength: IObjectAccessor<IMaterial, PBRMaterial, number>;\n };\n KHR_materials_ior: {\n ior: IObjectAccessor<IMaterial, PBRMaterial, number>;\n };\n KHR_materials_iridescence: {\n iridescenceFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceIor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceThicknessMinimum: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceThicknessMaximum: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n iridescenceThicknessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_sheen: {\n sheenColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n sheenRoughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n sheenColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n sheenRoughnessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_specular: {\n specularFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n specularColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n specularTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n specularColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_transmission: {\n transmissionFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n transmissionTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_diffuse_transmission: {\n diffuseTransmissionFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n diffuseTransmissionTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n diffuseTransmissionColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<Color3>>;\n diffuseTransmissionColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_volume: {\n thicknessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n attenuationColor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n attenuationDistance: IObjectAccessor<IMaterial, PBRMaterial, number>;\n thicknessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n };\n };\n}\n\ninterface ITextureDefinition {\n offset: IObjectAccessor<IMaterial, PBRMaterial, Vector2>;\n rotation: IObjectAccessor<IMaterial, PBRMaterial, number>;\n scale: IObjectAccessor<IMaterial, PBRMaterial, Vector2>;\n}\n\nexport interface IGLTFObjectModelTreeMeshesObject {}\n\nexport interface IGLTFObjectModelTreeExtensionsObject {\n KHR_lights_punctual: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], number>;\n __array__: {\n __target__: boolean;\n color: IObjectAccessor<IKHRLightsPunctual_Light, Light, Color3>;\n intensity: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n range: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n spot: {\n innerConeAngle: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n outerConeAngle: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n };\n };\n };\n };\n EXT_lights_ies: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], number>;\n };\n };\n EXT_lights_image_based: {\n lights: {\n __array__: {\n __target__: boolean;\n intensity: IObjectAccessor<IEXTLightsImageBased_LightImageBased, BaseTexture, number>;\n rotation: IObjectAccessor<IEXTLightsImageBased_LightImageBased, BaseTexture, Quaternion>;\n };\n length: IObjectAccessor<IEXTLightsImageBased_LightImageBased[], BaseTexture[], number>;\n };\n };\n}\n\nconst nodesTree: IGLTFObjectModelTreeNodesObject = {\n length: {\n type: \"number\",\n get: (nodes: INode[]) => nodes.length,\n getTarget: (nodes: INode[]) => nodes.map((node) => node._babylonTransformNode!),\n getPropertyName: [() => \"length\"],\n },\n __array__: {\n __target__: true,\n translation: {\n type: \"Vector3\",\n get: (node: INode) => node._babylonTransformNode?.position,\n set: (value: Vector3, node: INode) => node._babylonTransformNode?.position.copyFrom(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"position\"],\n },\n rotation: {\n type: \"Quaternion\",\n get: (node: INode) => node._babylonTransformNode?.rotationQuaternion!,\n set: (value: Quaternion, node: INode) => node._babylonTransformNode?.rotationQuaternion?.copyFrom(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"rotationQuaternion\"],\n },\n scale: {\n type: \"Vector3\",\n get: (node: INode) => node._babylonTransformNode?.scaling,\n set: (value: Vector3, node: INode) => node._babylonTransformNode?.scaling.copyFrom(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"scaling\"],\n },\n weights: {\n length: {\n type: \"number\",\n get: (node: INode) => node._numMorphTargets,\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"influence\"],\n },\n __array__: {\n __target__: true,\n type: \"number\",\n get: (node: INode, index?: number) => (index !== undefined ? node._primitiveBabylonMeshes?.[0].morphTargetManager?.getTarget(index).influence : undefined),\n // set: (value: number, node: INode, index?: number) => node._babylonTransformNode?.getMorphTargetManager()?.getTarget(index)?.setInfluence(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"influence\"],\n },\n type: \"number[]\",\n get: (node: INode, index?: number) => [0], // TODO: get the weights correctly\n // set: (value: number, node: INode, index?: number) => node._babylonTransformNode?.getMorphTargetManager()?.getTarget(index)?.setInfluence(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"influence\"],\n },\n // readonly!\n matrix: {\n type: \"Matrix\",\n get: (node: INode) => Matrix.Compose(node._babylonTransformNode?.scaling!, node._babylonTransformNode?.rotationQuaternion!, node._babylonTransformNode?.position!),\n getTarget: (node: INode) => node._babylonTransformNode,\n isReadOnly: true,\n },\n globalMatrix: {\n type: \"Matrix\",\n get: (node: INode) => {\n const matrix = Matrix.Identity();\n // RHS/LHS support\n let rootNode = node.parent;\n while (rootNode && rootNode.parent) {\n rootNode = rootNode.parent;\n }\n const forceUpdate =\n node._babylonTransformNode?.position._isDirty || node._babylonTransformNode?.rotationQuaternion?._isDirty || node._babylonTransformNode?.scaling._isDirty;\n if (rootNode) {\n // take the parent root node's world matrix, invert it, and multiply it with the current node's world matrix\n // This will provide the global matrix, ignoring the RHS->LHS conversion\n const rootMatrix = rootNode._babylonTransformNode?.computeWorldMatrix(true).invert();\n if (rootMatrix) {\n node._babylonTransformNode?.computeWorldMatrix(forceUpdate)?.multiplyToRef(rootMatrix, matrix);\n }\n } else if (node._babylonTransformNode) {\n matrix.copyFrom(node._babylonTransformNode.computeWorldMatrix(forceUpdate));\n }\n return matrix;\n },\n getTarget: (node: INode) => node._babylonTransformNode,\n isReadOnly: true,\n },\n extensions: {\n EXT_lights_ies: {\n multiplier: {\n type: \"number\",\n get: (node: INode) => {\n return node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0]?.intensity;\n },\n getTarget: (node: INode) => node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0],\n set: (value, node) => {\n if (node._babylonTransformNode) {\n const light = node._babylonTransformNode.getChildren((child) => child instanceof SpotLight, true)[0];\n if (light) {\n light.intensity = value;\n }\n }\n },\n },\n color: {\n type: \"Color3\",\n get: (node: INode) => {\n return node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0]?.diffuse;\n },\n getTarget: (node: INode) => node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0],\n set: (value, node: INode) => {\n if (node._babylonTransformNode) {\n const light = node._babylonTransformNode.getChildren((child) => child instanceof SpotLight, true)[0];\n if (light) {\n light.diffuse = value;\n }\n }\n },\n },\n },\n },\n },\n};\n\nconst animationsTree = {\n length: {\n type: \"number\",\n get: (animations: IAnimation[]) => animations.length,\n getTarget: (animations: IAnimation[]) => animations.map((animation) => animation._babylonAnimationGroup!),\n getPropertyName: [() => \"length\"],\n },\n __array__: {},\n};\n\nconst meshesTree = {\n length: {\n type: \"number\",\n get: (meshes: IMesh[]) => meshes.length,\n getTarget: (meshes: IMesh[]) => meshes.map((mesh) => mesh.primitives[0]._instanceData?.babylonSourceMesh),\n getPropertyName: [() => \"length\"],\n },\n __array__: {},\n};\n\nconst camerasTree: IGLTFObjectModelTreeCamerasObject = {\n __array__: {\n __target__: true,\n orthographic: {\n xmag: {\n componentsCount: 2,\n type: \"Vector2\",\n get: (camera) => new Vector2(camera._babylonCamera?.orthoLeft ?? 0, camera._babylonCamera?.orthoRight ?? 0),\n set: (value, camera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.orthoLeft = value.x;\n camera._babylonCamera.orthoRight = value.y;\n }\n },\n getTarget: (camera) => camera,\n getPropertyName: [() => \"orthoLeft\", () => \"orthoRight\"],\n },\n ymag: {\n componentsCount: 2,\n type: \"Vector2\",\n get: (camera: ICamera) => new Vector2(camera._babylonCamera?.orthoBottom ?? 0, camera._babylonCamera?.orthoTop ?? 0),\n set: (value: Vector2, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.orthoBottom = value.x;\n camera._babylonCamera.orthoTop = value.y;\n }\n },\n getTarget: (camera) => camera,\n getPropertyName: [() => \"orthoBottom\", () => \"orthoTop\"],\n },\n zfar: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.maxZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.maxZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"maxZ\"],\n },\n znear: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.minZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.minZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"minZ\"],\n },\n },\n perspective: {\n aspectRatio: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.getEngine().getAspectRatio(camera._babylonCamera),\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"aspectRatio\"],\n isReadOnly: true, // might not be the case for glTF?\n },\n yfov: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.fov,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.fov = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"fov\"],\n },\n zfar: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.maxZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.maxZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"maxZ\"],\n },\n znear: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.minZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.minZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"minZ\"],\n },\n },\n },\n};\n\nconst materialsTree: IGLTFObjectModelTreeMaterialsObject = {\n __array__: {\n __target__: true,\n emissiveFactor: {\n type: \"Color3\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).emissiveColor,\n set: (value: Color3, material, index?, payload?) => GetMaterial(material, index, payload).emissiveColor.copyFrom(value),\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"emissiveColor\"],\n },\n emissiveTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"emissiveTexture\"),\n },\n },\n normalTexture: {\n scale: {\n type: \"number\",\n get: (material, index?, payload?) => GetTexture(material, payload, \"bumpTexture\")?.level,\n set: (value: number, material, index?, payload?) => {\n const texture = GetTexture(material, payload, \"bumpTexture\");\n if (texture) {\n texture.level = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"level\"],\n },\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"bumpTexture\"),\n },\n },\n occlusionTexture: {\n strength: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).ambientTextureStrength,\n set: (value: number, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.ambientTextureStrength = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"ambientTextureStrength\"],\n },\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"ambientTexture\"),\n },\n },\n pbrMetallicRoughness: {\n baseColorFactor: {\n type: \"Color4\",\n get: (material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n return Color4.FromColor3(mat.albedoColor, mat.alpha);\n },\n set: (value: Color4, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n mat.albedoColor.set(value.r, value.g, value.b);\n mat.alpha = value.a;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n // This is correct on the animation level, but incorrect as a single property of a type Color4\n getPropertyName: [() => \"albedoColor\", () => \"alpha\"],\n },\n baseColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"albedoTexture\"),\n },\n },\n metallicFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).metallic,\n set: (value, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.metallic = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"metallic\"],\n },\n roughnessFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).roughness,\n set: (value, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.roughness = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"roughness\"],\n },\n metallicRoughnessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"metallicTexture\"),\n },\n },\n },\n extensions: {\n KHR_materials_anisotropy: {\n anisotropyStrength: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).anisotropy.intensity,\n set: (value: number, material, index?, payload?) => {\n GetMaterial(material, index, payload).anisotropy.intensity = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"anisotropy.intensity\"],\n },\n anisotropyRotation: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).anisotropy.angle,\n set: (value: number, material, index?, payload?) => {\n GetMaterial(material, index, payload).anisotropy.angle = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"anisotropy.angle\"],\n },\n anisotropyTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"anisotropy\", \"texture\"),\n },\n },\n },\n KHR_materials_clearcoat: {\n clearcoatFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).clearCoat.intensity,\n set: (value, material, index?, payload?) => {\n GetMaterial(material, index, payload).clearCoat.intensity = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"clearCoat.intensity\"],\n },\n clearcoatRoughnessFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).clearCoat.roughness,\n set: (value, material, index?, payload?) => {\n GetMaterial(material, index, payload).clearCoat.roughness = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"clearCoat.roughness\"],\n },\n clearcoatTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"clearCoat\", \"texture\"),\n },\n },\n clearcoatNormalTexture: {\n scale: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).clearCoat.bumpTexture?.level,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).clearCoat.bumpTexture!.level = value),\n },\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"clearCoat\", \"bumpTexture\"),\n },\n },\n clearcoatRoughnessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"clearCoat\", \"textureRoughness\"),\n },\n },\n },\n KHR_materials_dispersion: {\n dispersion: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.dispersion,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.dispersion = value),\n },\n },\n KHR_materials_emissive_strength: {\n emissiveStrength: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).emissiveIntensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).emissiveIntensity = value),\n },\n },\n KHR_materials_ior: {\n ior: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).indexOfRefraction,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).indexOfRefraction = value),\n },\n },\n KHR_materials_iridescence: {\n iridescenceFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.intensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.intensity = value),\n },\n iridescenceIor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.indexOfRefraction,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.indexOfRefraction = value),\n },\n iridescenceTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"iridescence\", \"texture\"),\n },\n },\n iridescenceThicknessMaximum: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.maximumThickness,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.maximumThickness = value),\n },\n iridescenceThicknessMinimum: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.minimumThickness,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.minimumThickness = value),\n },\n iridescenceThicknessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"iridescence\", \"thicknessTexture\"),\n },\n },\n },\n KHR_materials_sheen: {\n sheenColorFactor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).sheen.color,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => GetMaterial(material, index, payload).sheen.color.copyFrom(value),\n },\n sheenColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"sheen\", \"texture\"),\n },\n },\n sheenRoughnessFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).sheen.intensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).sheen.intensity = value),\n },\n sheenRoughnessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"sheen\", \"thicknessTexture\"),\n },\n },\n },\n KHR_materials_specular: {\n specularFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).metallicF0Factor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).metallicF0Factor = value),\n getPropertyName: [() => \"metallicF0Factor\"],\n },\n specularColorFactor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).metallicReflectanceColor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => GetMaterial(material, index, payload).metallicReflectanceColor.copyFrom(value),\n getPropertyName: [() => \"metallicReflectanceColor\"],\n },\n specularTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"metallicReflectanceTexture\"),\n },\n },\n specularColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"reflectanceTexture\"),\n },\n },\n },\n KHR_materials_transmission: {\n transmissionFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.refractionIntensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.refractionIntensity = value),\n getPropertyName: [() => \"subSurface.refractionIntensity\"],\n },\n transmissionTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"refractionIntensityTexture\"),\n },\n },\n },\n KHR_materials_diffuse_transmission: {\n diffuseTransmissionFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.translucencyIntensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.translucencyIntensity = value),\n },\n diffuseTransmissionTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"translucencyIntensityTexture\"),\n },\n },\n diffuseTransmissionColorFactor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.translucencyColor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => value && GetMaterial(material, index, payload).subSurface.translucencyColor?.copyFrom(value),\n },\n diffuseTransmissionColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"translucencyColorTexture\"),\n },\n },\n },\n KHR_materials_volume: {\n attenuationColor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.tintColor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => GetMaterial(material, index, payload).subSurface.tintColor.copyFrom(value),\n },\n attenuationDistance: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.tintColorAtDistance,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.tintColorAtDistance = value),\n },\n thicknessFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.maximumThickness,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.maximumThickness = value),\n },\n thicknessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"thicknessTexture\"),\n },\n },\n },\n },\n },\n};\n\nconst extensionsTree: IGLTFObjectModelTreeExtensionsObject = {\n KHR_lights_punctual: {\n lights: {\n length: {\n type: \"number\",\n get: (lights: IKHRLightsPunctual_Light[]) => lights.length,\n getTarget: (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!),\n getPropertyName: [(_lights: IKHRLightsPunctual_Light[]) => \"length\"],\n },\n __array__: {\n __target__: true,\n color: {\n type: \"Color3\",\n get: (light: IKHRLightsPunctual_Light) => light._babylonLight?.diffuse,\n set: (value: Color3, light: IKHRLightsPunctual_Light) => light._babylonLight?.diffuse.copyFrom(value),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"diffuse\"],\n },\n intensity: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => light._babylonLight?.intensity,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? (light._babylonLight.intensity = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"intensity\"],\n },\n range: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => light._babylonLight?.range,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? (light._babylonLight.range = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"range\"],\n },\n spot: {\n innerConeAngle: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => (light._babylonLight as SpotLight)?.innerAngle,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? ((light._babylonLight as SpotLight).innerAngle = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"innerConeAngle\"],\n },\n outerConeAngle: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => (light._babylonLight as SpotLight)?.angle,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? ((light._babylonLight as SpotLight).angle = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"outerConeAngle\"],\n },\n },\n },\n },\n },\n EXT_lights_ies: {\n lights: {\n length: {\n type: \"number\",\n get: (lights: IKHRLightsPunctual_Light[]) => lights.length,\n getTarget: (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!),\n getPropertyName: [(_lights: IKHRLightsPunctual_Light[]) => \"length\"],\n },\n },\n },\n EXT_lights_image_based: {\n lights: {\n length: {\n type: \"number\",\n get: (lights) => lights.length,\n getTarget: (lights) => lights.map((light) => light._babylonTexture!),\n getPropertyName: [(_lights) => \"length\"],\n },\n __array__: {\n __target__: true,\n intensity: {\n type: \"number\",\n get: (light) => light._babylonTexture?.level,\n set: (value, light) => {\n if (light._babylonTexture) {\n light._babylonTexture.level = value;\n }\n },\n\n getTarget: (light) => light._babylonTexture,\n },\n rotation: {\n type: \"Quaternion\",\n get: (light) => light._babylonTexture && Quaternion.FromRotationMatrix(light._babylonTexture?.getReflectionTextureMatrix()),\n set: (value, light) => {\n if (!light._babylonTexture) {\n return;\n }\n // Invert the rotation so that positive rotation is counter-clockwise.\n if (!light._babylonTexture.getScene()?.useRightHandedSystem) {\n value = Quaternion.Inverse(value);\n }\n\n Matrix.FromQuaternionToRef(value, light._babylonTexture.getReflectionTextureMatrix());\n },\n getTarget: (light) => light._babylonTexture,\n },\n },\n },\n },\n};\n\nfunction GetTexture(material: IMaterial, payload: any, textureType: keyof PBRMaterial, textureInObject?: string) {\n const babylonMaterial = GetMaterial(material, payload);\n return textureInObject ? babylonMaterial[textureType][textureInObject] : babylonMaterial[textureType];\n}\nfunction GetMaterial(material: IMaterial, _index?: number, payload?: any) {\n return material._data?.[payload?.fillMode ?? Constants.MATERIAL_TriangleFillMode]?.babylonMaterial as PBRMaterial;\n}\nfunction GenerateTextureMap(textureType: keyof PBRMaterial, textureInObject?: string): ITextureDefinition {\n return {\n offset: {\n componentsCount: 2,\n // assuming two independent values for u and v, and NOT a Vector2\n type: \"Vector2\",\n get: (material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n return new Vector2(texture?.uOffset, texture?.vOffset);\n },\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n (texture.uOffset = value.x), (texture.vOffset = value.y);\n },\n getPropertyName: [\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.uOffset`,\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.vOffset`,\n ],\n },\n rotation: {\n type: \"number\",\n get: (material, _index?, payload?) => GetTexture(material, payload, textureType, textureInObject)?.wAng,\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => (GetTexture(material, payload, textureType, textureInObject).wAng = value),\n getPropertyName: [() => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.wAng`],\n },\n scale: {\n componentsCount: 2,\n type: \"Vector2\",\n get: (material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n return new Vector2(texture?.uScale, texture?.vScale);\n },\n getTarget: GetMaterial,\n set: (value, material, index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n (texture.uScale = value.x), (texture.vScale = value.y);\n },\n getPropertyName: [\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.uScale`,\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.vScale`,\n ],\n },\n };\n}\n\nconst objectModelMapping: IGLTFObjectModelTree = {\n cameras: camerasTree,\n nodes: nodesTree,\n materials: materialsTree,\n extensions: extensionsTree,\n animations: animationsTree,\n meshes: meshesTree,\n};\n\n/**\n * get a path-to-object converter for the given glTF tree\n * @param gltf the glTF tree to use\n * @returns a path-to-object converter for the given glTF tree\n */\nexport function GetPathToObjectConverter(gltf: IGLTF) {\n return new GLTFPathToObjectConverter(gltf, objectModelMapping);\n}\n\n/**\n * This function will return the object accessor for the given key in the object model\n * If the key is not found, it will return undefined\n * @param key the key to get the mapping for, for example /materials/\\{\\}/emissiveFactor\n * @returns an object accessor for the given key, or undefined if the key is not found\n */\nexport function GetMappingForKey(key: string): IObjectAccessor | undefined {\n // replace every `{}` in key with __array__ to match the object model\n const keyParts = key.split(\"/\").map((part) => part.replace(/{}/g, \"__array__\"));\n let current = objectModelMapping as any;\n for (const part of keyParts) {\n // make sure part is not empty\n if (!part) {\n continue;\n }\n current = current[part];\n }\n // validate that current is an object accessor\n if (current && current.type && current.get) {\n return current;\n }\n return undefined;\n}\n\n/**\n * Set interpolation for a specific key in the object model\n * @param key the key to set, for example /materials/\\{\\}/emissiveFactor\n * @param interpolation the interpolation elements array\n */\nexport function SetInterpolationForKey(key: string, interpolation?: IInterpolationPropertyInfo[]): void {\n // replace every `{}` in key with __array__ to match the object model\n const keyParts = key.split(\"/\").map((part) => part.replace(/{}/g, \"__array__\"));\n let current = objectModelMapping as any;\n for (const part of keyParts) {\n // make sure part is not empty\n if (!part) {\n continue;\n }\n current = current[part];\n }\n // validate that the current object is an object accessor\n if (current && current.type && current.get) {\n (current as IObjectAccessor).interpolation = interpolation;\n }\n}\n\n/**\n * This will ad a new object accessor in the object model at the given key.\n * Note that this will NOT change the typescript types. To do that you will need to change the interface itself (extending it in the module that uses it)\n * @param key the key to add the object accessor at. For example /cameras/\\{\\}/perspective/aspectRatio\n * @param accessor the object accessor to add\n */\nexport function AddObjectAccessorToKey<GLTFTargetType = any, BabylonTargetType = any, BabylonValueType = any>(\n key: string,\n accessor: IObjectAccessor<GLTFTargetType, BabylonTargetType, BabylonValueType>\n): void {\n // replace every `{}` in key with __array__ to match the object model\n const keyParts = key.split(\"/\").map((part) => part.replace(/{}/g, \"__array__\"));\n let current = objectModelMapping as any;\n for (const part of keyParts) {\n // make sure part is not empty\n if (!part) {\n continue;\n }\n if (!current[part]) {\n if (part === \"?\") {\n current.__ignoreObjectTree__ = true;\n continue;\n }\n current[part] = {};\n // if the part is __array__ then add the __target__ property\n if (part === \"__array__\") {\n current[part].__target__ = true;\n }\n }\n current = current[part];\n }\n Object.assign(current, accessor);\n}\n"]}
@@ -0,0 +1,429 @@
1
+ import type { IndicesArray, Nullable } from "@babylonjs/core/types.js";
2
+ import { Camera } from "@babylonjs/core/Cameras/camera.js";
3
+ import type { Animation } from "@babylonjs/core/Animations/animation.js";
4
+ import type { IAnimatable } from "@babylonjs/core/Animations/animatable.interface.js";
5
+ import type { AnimationGroup } from "@babylonjs/core/Animations/animationGroup.js";
6
+ import { Material } from "@babylonjs/core/Materials/material.js";
7
+ import type { BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture.js";
8
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
9
+ import { Buffer, VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
10
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
11
+ import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
12
+ import type { ISceneLoaderAsyncResult, ISceneLoaderProgressEvent } from "@babylonjs/core/Loading/sceneLoader.js";
13
+ import type { Scene } from "@babylonjs/core/scene.js";
14
+ import type { IProperty } from "babylonjs-gltf2interface";
15
+ import type { IGLTF, ISampler, INode, IScene, IMesh, IAccessor, ICamera, IAnimation, IBuffer, IBufferView, IMaterial, ITextureInfo, ITexture, IImage, IMeshPrimitive, IArrayItem, IAnimationChannel } from "./glTFLoaderInterfaces.js";
16
+ import type { IGLTFLoader, IGLTFLoaderData } from "../glTFFileLoader.js";
17
+ import { GLTFFileLoader } from "../glTFFileLoader.js";
18
+ import type { IDataBuffer } from "@babylonjs/core/Misc/dataReader.js";
19
+ import type { Light } from "@babylonjs/core/Lights/light.js";
20
+ import { BoundingInfo } from "@babylonjs/core/Culling/boundingInfo.js";
21
+ import type { AssetContainer } from "@babylonjs/core/assetContainer.js";
22
+ import type { AnimationPropertyInfo } from "./glTFLoaderAnimation.js";
23
+ import type { IObjectInfo } from "@babylonjs/core/ObjectModel/objectModelInterfaces.js";
24
+ import type { GLTFExtensionFactory } from "./glTFLoaderExtensionRegistry.js";
25
+ import type { IInterpolationPropertyInfo } from "@babylonjs/core/FlowGraph/typeDefinitions.js";
26
+ export { GLTFFileLoader };
27
+ interface IWithMetadata {
28
+ metadata: any;
29
+ _internalMetadata: any;
30
+ }
31
+ /**
32
+ * Helper class for working with arrays when loading the glTF asset
33
+ */
34
+ export declare class ArrayItem {
35
+ /**
36
+ * Gets an item from the given array.
37
+ * @param context The context when loading the asset
38
+ * @param array The array to get the item from
39
+ * @param index The index to the array
40
+ * @returns The array item
41
+ */
42
+ static Get<T>(context: string, array: ArrayLike<T> | undefined, index: number | undefined): T;
43
+ /**
44
+ * Gets an item from the given array or returns null if not available.
45
+ * @param array The array to get the item from
46
+ * @param index The index to the array
47
+ * @returns The array item or null
48
+ */
49
+ static TryGet<T>(array: ArrayLike<T> | undefined, index: number | undefined): Nullable<T>;
50
+ /**
51
+ * Assign an `index` field to each item of the given array.
52
+ * @param array The array of items
53
+ */
54
+ static Assign(array?: IArrayItem[]): void;
55
+ }
56
+ /** @internal */
57
+ export interface IAnimationTargetInfo {
58
+ /** @internal */
59
+ target: unknown;
60
+ /** @internal */
61
+ properties: Array<AnimationPropertyInfo>;
62
+ }
63
+ /** @internal */
64
+ export declare function LoadBoundingInfoFromPositionAccessor(accessor: IAccessor): Nullable<BoundingInfo>;
65
+ /**
66
+ * The glTF 2.0 loader
67
+ */
68
+ export declare class GLTFLoader implements IGLTFLoader {
69
+ /** @internal */
70
+ readonly _completePromises: Promise<unknown>[];
71
+ /** @internal */
72
+ _assetContainer: Nullable<AssetContainer>;
73
+ /** Storage */
74
+ _babylonLights: Light[];
75
+ /** @internal */
76
+ _disableInstancedMesh: number;
77
+ /** @internal */
78
+ _allMaterialsDirtyRequired: boolean;
79
+ /** @internal */
80
+ _skipStartAnimationStep: boolean;
81
+ private readonly _parent;
82
+ private readonly _extensions;
83
+ private _disposed;
84
+ private _rootUrl;
85
+ private _fileName;
86
+ private _uniqueRootUrl;
87
+ private _gltf;
88
+ private _bin;
89
+ private _babylonScene;
90
+ private _rootBabylonMesh;
91
+ private _defaultBabylonMaterialData;
92
+ private readonly _postSceneLoadActions;
93
+ /**
94
+ * The default glTF sampler.
95
+ */
96
+ static readonly DefaultSampler: ISampler;
97
+ /**
98
+ * Registers a loader extension.
99
+ * @param name The name of the loader extension.
100
+ * @param factory The factory function that creates the loader extension.
101
+ * @deprecated Please use registerGLTFExtension instead.
102
+ */
103
+ static RegisterExtension(name: string, factory: GLTFExtensionFactory): void;
104
+ /**
105
+ * Unregisters a loader extension.
106
+ * @param name The name of the loader extension.
107
+ * @returns A boolean indicating whether the extension has been unregistered
108
+ * @deprecated Please use unregisterGLTFExtension instead.
109
+ */
110
+ static UnregisterExtension(name: string): boolean;
111
+ /**
112
+ * The object that represents the glTF JSON.
113
+ */
114
+ get gltf(): IGLTF;
115
+ /**
116
+ * The BIN chunk of a binary glTF.
117
+ */
118
+ get bin(): Nullable<IDataBuffer>;
119
+ /**
120
+ * The parent file loader.
121
+ */
122
+ get parent(): GLTFFileLoader;
123
+ /**
124
+ * The Babylon scene when loading the asset.
125
+ */
126
+ get babylonScene(): Scene;
127
+ /**
128
+ * The root Babylon node when loading the asset.
129
+ */
130
+ get rootBabylonMesh(): Nullable<TransformNode>;
131
+ /**
132
+ * The root url when loading the asset.
133
+ */
134
+ get rootUrl(): Nullable<string>;
135
+ /**
136
+ * @internal
137
+ */
138
+ constructor(parent: GLTFFileLoader);
139
+ /** @internal */
140
+ dispose(): void;
141
+ /**
142
+ * @internal
143
+ */
144
+ importMeshAsync(meshesNames: string | readonly string[] | null | undefined, scene: Scene, container: Nullable<AssetContainer>, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string): Promise<ISceneLoaderAsyncResult>;
145
+ /**
146
+ * @internal
147
+ */
148
+ loadAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string): Promise<void>;
149
+ private _loadAsync;
150
+ private _loadData;
151
+ private _setupData;
152
+ private _loadExtensionsAsync;
153
+ private _createRootNode;
154
+ /**
155
+ * Loads a glTF scene.
156
+ * @param context The context when loading the asset
157
+ * @param scene The glTF scene property
158
+ * @returns A promise that resolves when the load is complete
159
+ */
160
+ loadSceneAsync(context: string, scene: IScene): Promise<void>;
161
+ private _forEachPrimitive;
162
+ private _getGeometries;
163
+ private _getMeshes;
164
+ private _getTransformNodes;
165
+ private _getSkeletons;
166
+ private _getAnimationGroups;
167
+ private _startAnimations;
168
+ /**
169
+ * Loads a glTF node.
170
+ * @param context The context when loading the asset
171
+ * @param node The glTF node property
172
+ * @param assign A function called synchronously after parsing the glTF properties
173
+ * @returns A promise that resolves with the loaded Babylon mesh when the load is complete
174
+ */
175
+ loadNodeAsync(context: string, node: INode, assign?: (babylonTransformNode: TransformNode) => void): Promise<TransformNode>;
176
+ private _loadMeshAsync;
177
+ /**
178
+ * @internal Define this method to modify the default behavior when loading data for mesh primitives.
179
+ * @param context The context when loading the asset
180
+ * @param name The mesh name when loading the asset
181
+ * @param node The glTF node when loading the asset
182
+ * @param mesh The glTF mesh when loading the asset
183
+ * @param primitive The glTF mesh primitive property
184
+ * @param assign A function called synchronously after parsing the glTF properties
185
+ * @returns A promise that resolves with the loaded mesh when the load is complete or null if not handled
186
+ */
187
+ _loadMeshPrimitiveAsync(context: string, name: string, node: INode, mesh: IMesh, primitive: IMeshPrimitive, assign: (babylonMesh: AbstractMesh) => void): Promise<AbstractMesh>;
188
+ private _loadVertexDataAsync;
189
+ private _createMorphTargets;
190
+ private _loadMorphTargetsAsync;
191
+ private _loadMorphTargetVertexDataAsync;
192
+ private static _LoadTransform;
193
+ private _loadSkinAsync;
194
+ private _loadBones;
195
+ private _findSkeletonRootNode;
196
+ private _loadBone;
197
+ private _loadSkinInverseBindMatricesDataAsync;
198
+ private _updateBoneMatrices;
199
+ private _getNodeMatrix;
200
+ /**
201
+ * Loads a glTF camera.
202
+ * @param context The context when loading the asset
203
+ * @param camera The glTF camera property
204
+ * @param assign A function called synchronously after parsing the glTF properties
205
+ * @returns A promise that resolves with the loaded Babylon camera when the load is complete
206
+ */
207
+ loadCameraAsync(context: string, camera: ICamera, assign?: (babylonCamera: Camera) => void): Promise<Camera>;
208
+ private _loadAnimationsAsync;
209
+ /**
210
+ * Loads a glTF animation.
211
+ * @param context The context when loading the asset
212
+ * @param animation The glTF animation property
213
+ * @returns A promise that resolves with the loaded Babylon animation group when the load is complete
214
+ */
215
+ loadAnimationAsync(context: string, animation: IAnimation): Promise<AnimationGroup>;
216
+ /**
217
+ * @hidden
218
+ * Loads a glTF animation channel.
219
+ * @param context The context when loading the asset
220
+ * @param animationContext The context of the animation when loading the asset
221
+ * @param animation The glTF animation property
222
+ * @param channel The glTF animation channel property
223
+ * @param onLoad Called for each animation loaded
224
+ * @returns A void promise that resolves when the load is complete
225
+ */
226
+ _loadAnimationChannelAsync(context: string, animationContext: string, animation: IAnimation, channel: IAnimationChannel, onLoad: (babylonAnimatable: IAnimatable, babylonAnimation: Animation) => void): Promise<void>;
227
+ /**
228
+ * @hidden
229
+ * Loads a glTF animation channel.
230
+ * @param context The context when loading the asset
231
+ * @param animationContext The context of the animation when loading the asset
232
+ * @param animation The glTF animation property
233
+ * @param channel The glTF animation channel property
234
+ * @param targetInfo The glTF target and properties
235
+ * @param onLoad Called for each animation loaded
236
+ * @returns A void promise that resolves when the load is complete
237
+ */
238
+ _loadAnimationChannelFromTargetInfoAsync(context: string, animationContext: string, animation: IAnimation, channel: IAnimationChannel, targetInfo: IObjectInfo<IInterpolationPropertyInfo[]>, onLoad: (babylonAnimatable: IAnimatable, babylonAnimation: Animation) => void): Promise<void>;
239
+ private _loadAnimationSamplerAsync;
240
+ /**
241
+ * Loads a glTF buffer.
242
+ * @param context The context when loading the asset
243
+ * @param buffer The glTF buffer property
244
+ * @param byteOffset The byte offset to use
245
+ * @param byteLength The byte length to use
246
+ * @returns A promise that resolves with the loaded data when the load is complete
247
+ */
248
+ loadBufferAsync(context: string, buffer: IBuffer, byteOffset: number, byteLength: number): Promise<ArrayBufferView>;
249
+ /**
250
+ * Loads a glTF buffer view.
251
+ * @param context The context when loading the asset
252
+ * @param bufferView The glTF buffer view property
253
+ * @returns A promise that resolves with the loaded data when the load is complete
254
+ */
255
+ loadBufferViewAsync(context: string, bufferView: IBufferView): Promise<ArrayBufferView>;
256
+ private _loadAccessorAsync;
257
+ /**
258
+ * @internal
259
+ */
260
+ _loadFloatAccessorAsync(context: string, accessor: IAccessor): Promise<Float32Array>;
261
+ /**
262
+ * @internal
263
+ */
264
+ _loadIndicesAccessorAsync(context: string, accessor: IAccessor): Promise<IndicesArray>;
265
+ /**
266
+ * @internal
267
+ */
268
+ _loadVertexBufferViewAsync(bufferView: IBufferView): Promise<Buffer>;
269
+ /**
270
+ * @internal
271
+ */
272
+ _loadVertexAccessorAsync(context: string, accessor: IAccessor, kind: string): Promise<VertexBuffer>;
273
+ private _loadMaterialMetallicRoughnessPropertiesAsync;
274
+ /**
275
+ * @internal
276
+ */
277
+ _loadMaterialAsync(context: string, material: IMaterial, babylonMesh: Nullable<Mesh>, babylonDrawMode: number, assign?: (babylonMaterial: Material) => void): Promise<Material>;
278
+ private _createDefaultMaterial;
279
+ /**
280
+ * Creates a Babylon material from a glTF material.
281
+ * @param context The context when loading the asset
282
+ * @param material The glTF material property
283
+ * @param babylonDrawMode The draw mode for the Babylon material
284
+ * @returns The Babylon material
285
+ */
286
+ createMaterial(context: string, material: IMaterial, babylonDrawMode: number): Material;
287
+ /**
288
+ * Loads properties from a glTF material into a Babylon material.
289
+ * @param context The context when loading the asset
290
+ * @param material The glTF material property
291
+ * @param babylonMaterial The Babylon material
292
+ * @returns A promise that resolves when the load is complete
293
+ */
294
+ loadMaterialPropertiesAsync(context: string, material: IMaterial, babylonMaterial: Material): Promise<void>;
295
+ /**
296
+ * Loads the normal, occlusion, and emissive properties from a glTF material into a Babylon material.
297
+ * @param context The context when loading the asset
298
+ * @param material The glTF material property
299
+ * @param babylonMaterial The Babylon material
300
+ * @returns A promise that resolves when the load is complete
301
+ */
302
+ loadMaterialBasePropertiesAsync(context: string, material: IMaterial, babylonMaterial: Material): Promise<void>;
303
+ /**
304
+ * Loads the alpha properties from a glTF material into a Babylon material.
305
+ * Must be called after the setting the albedo texture of the Babylon material when the material has an albedo texture.
306
+ * @param context The context when loading the asset
307
+ * @param material The glTF material property
308
+ * @param babylonMaterial The Babylon material
309
+ */
310
+ loadMaterialAlphaProperties(context: string, material: IMaterial, babylonMaterial: Material): void;
311
+ /**
312
+ * Loads a glTF texture info.
313
+ * @param context The context when loading the asset
314
+ * @param textureInfo The glTF texture info property
315
+ * @param assign A function called synchronously after parsing the glTF properties
316
+ * @returns A promise that resolves with the loaded Babylon texture when the load is complete
317
+ */
318
+ loadTextureInfoAsync(context: string, textureInfo: ITextureInfo, assign?: (babylonTexture: BaseTexture) => void): Promise<BaseTexture>;
319
+ /**
320
+ * @internal
321
+ */
322
+ _loadTextureAsync(context: string, texture: ITexture, assign?: (babylonTexture: BaseTexture) => void): Promise<BaseTexture>;
323
+ /**
324
+ * @internal
325
+ */
326
+ _createTextureAsync(context: string, sampler: ISampler, image: IImage, assign?: (babylonTexture: BaseTexture) => void, textureLoaderOptions?: unknown, useSRGBBuffer?: boolean): Promise<BaseTexture>;
327
+ private _loadSampler;
328
+ /**
329
+ * Loads a glTF image.
330
+ * @param context The context when loading the asset
331
+ * @param image The glTF image property
332
+ * @returns A promise that resolves with the loaded data when the load is complete
333
+ */
334
+ loadImageAsync(context: string, image: IImage): Promise<ArrayBufferView>;
335
+ /**
336
+ * Loads a glTF uri.
337
+ * @param context The context when loading the asset
338
+ * @param property The glTF property associated with the uri
339
+ * @param uri The base64 or relative uri
340
+ * @returns A promise that resolves with the loaded data when the load is complete
341
+ */
342
+ loadUriAsync(context: string, property: IProperty, uri: string): Promise<ArrayBufferView>;
343
+ /**
344
+ * Adds a JSON pointer to the _internalMetadata of the Babylon object at `<object>._internalMetadata.gltf.pointers`.
345
+ * @param babylonObject the Babylon object with _internalMetadata
346
+ * @param pointer the JSON pointer
347
+ */
348
+ static AddPointerMetadata(babylonObject: IWithMetadata, pointer: string): void;
349
+ private static _GetTextureWrapMode;
350
+ private static _GetTextureSamplingMode;
351
+ private static _GetTypedArrayConstructor;
352
+ private static _GetTypedArray;
353
+ private static _GetNumComponents;
354
+ private static _ValidateUri;
355
+ /**
356
+ * @internal
357
+ */
358
+ static _GetDrawMode(context: string, mode: number | undefined): number;
359
+ private _compileMaterialsAsync;
360
+ private _compileShadowGeneratorsAsync;
361
+ private _forEachExtensions;
362
+ private _applyExtensions;
363
+ private _extensionsOnLoading;
364
+ private _extensionsOnReady;
365
+ private _extensionsLoadSceneAsync;
366
+ private _extensionsLoadNodeAsync;
367
+ private _extensionsLoadCameraAsync;
368
+ private _extensionsLoadVertexDataAsync;
369
+ private _extensionsLoadMeshPrimitiveAsync;
370
+ private _extensionsLoadMaterialAsync;
371
+ private _extensionsCreateMaterial;
372
+ private _extensionsLoadMaterialPropertiesAsync;
373
+ private _extensionsLoadTextureInfoAsync;
374
+ private _extensionsLoadTextureAsync;
375
+ private _extensionsLoadAnimationAsync;
376
+ private _extensionsLoadAnimationChannelAsync;
377
+ private _extensionsLoadSkinAsync;
378
+ private _extensionsLoadUriAsync;
379
+ private _extensionsLoadBufferViewAsync;
380
+ private _extensionsLoadBufferAsync;
381
+ /**
382
+ * Helper method called by a loader extension to load an glTF extension.
383
+ * @param context The context when loading the asset
384
+ * @param property The glTF property to load the extension from
385
+ * @param extensionName The name of the extension to load
386
+ * @param actionAsync The action to run
387
+ * @returns The promise returned by actionAsync or null if the extension does not exist
388
+ */
389
+ static LoadExtensionAsync<TExtension = unknown, TResult = void>(context: string, property: IProperty, extensionName: string, actionAsync: (extensionContext: string, extension: TExtension) => Nullable<Promise<TResult>>): Nullable<Promise<TResult>>;
390
+ /**
391
+ * Helper method called by a loader extension to load a glTF extra.
392
+ * @param context The context when loading the asset
393
+ * @param property The glTF property to load the extra from
394
+ * @param extensionName The name of the extension to load
395
+ * @param actionAsync The action to run
396
+ * @returns The promise returned by actionAsync or null if the extra does not exist
397
+ */
398
+ static LoadExtraAsync<TExtra = unknown, TResult = void>(context: string, property: IProperty, extensionName: string, actionAsync: (extraContext: string, extra: TExtra) => Nullable<Promise<TResult>>): Nullable<Promise<TResult>>;
399
+ /**
400
+ * Checks for presence of an extension.
401
+ * @param name The name of the extension to check
402
+ * @returns A boolean indicating the presence of the given extension name in `extensionsUsed`
403
+ */
404
+ isExtensionUsed(name: string): boolean;
405
+ /**
406
+ * Increments the indentation level and logs a message.
407
+ * @param message The message to log
408
+ */
409
+ logOpen(message: string): void;
410
+ /**
411
+ * Decrements the indentation level.
412
+ */
413
+ logClose(): void;
414
+ /**
415
+ * Logs a message
416
+ * @param message The message to log
417
+ */
418
+ log(message: string): void;
419
+ /**
420
+ * Starts a performance counter.
421
+ * @param counterName The name of the performance counter
422
+ */
423
+ startPerformanceCounter(counterName: string): void;
424
+ /**
425
+ * Ends a performance counter.
426
+ * @param counterName The name of the performance counter
427
+ */
428
+ endPerformanceCounter(counterName: string): void;
429
+ }