@babylonjs/loaders 5.0.0-alpha.9 → 5.0.0-beta.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 (122) hide show
  1. package/OBJ/index.d.ts +2 -0
  2. package/OBJ/index.js +4 -2
  3. package/OBJ/index.js.map +1 -1
  4. package/OBJ/mtlFileLoader.d.ts +4 -2
  5. package/OBJ/mtlFileLoader.js +7 -6
  6. package/OBJ/mtlFileLoader.js.map +1 -1
  7. package/OBJ/objFileLoader.d.ts +12 -84
  8. package/OBJ/objFileLoader.js +50 -667
  9. package/OBJ/objFileLoader.js.map +1 -1
  10. package/OBJ/objLoadingOptions.d.ts +43 -0
  11. package/OBJ/objLoadingOptions.js +2 -0
  12. package/OBJ/objLoadingOptions.js.map +1 -0
  13. package/OBJ/solidParser.d.ts +153 -0
  14. package/OBJ/solidParser.js +700 -0
  15. package/OBJ/solidParser.js.map +1 -0
  16. package/STL/index.js +1 -1
  17. package/STL/stlFileLoader.d.ts +6 -0
  18. package/STL/stlFileLoader.js +38 -11
  19. package/STL/stlFileLoader.js.map +1 -1
  20. package/glTF/1.0/glTFBinaryExtension.js +4 -4
  21. package/glTF/1.0/glTFLoader.d.ts +4 -4
  22. package/glTF/1.0/glTFLoader.js +60 -55
  23. package/glTF/1.0/glTFLoader.js.map +1 -1
  24. package/glTF/1.0/glTFLoaderInterfaces.d.ts +3 -1
  25. package/glTF/1.0/glTFLoaderInterfaces.js.map +1 -1
  26. package/glTF/1.0/glTFLoaderUtils.js +6 -6
  27. package/glTF/1.0/glTFMaterialsCommonExtension.js +12 -12
  28. package/glTF/1.0/index.js +5 -5
  29. package/glTF/2.0/Extensions/EXT_lights_image_based.js +8 -5
  30. package/glTF/2.0/Extensions/EXT_lights_image_based.js.map +1 -1
  31. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +3 -3
  32. package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -1
  33. package/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +1 -5
  34. package/glTF/2.0/Extensions/EXT_meshopt_compression.js +5 -21
  35. package/glTF/2.0/Extensions/EXT_meshopt_compression.js.map +1 -1
  36. package/glTF/2.0/Extensions/EXT_texture_webp.js +2 -2
  37. package/glTF/2.0/Extensions/EXT_texture_webp.js.map +1 -1
  38. package/glTF/2.0/Extensions/ExtrasAsMetadata.js +1 -1
  39. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +8 -4
  40. package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js.map +1 -1
  41. package/glTF/2.0/Extensions/KHR_lights_punctual.js +9 -8
  42. package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -1
  43. package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +2 -2
  44. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +30 -0
  45. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +46 -0
  46. package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js.map +1 -0
  47. package/glTF/2.0/Extensions/KHR_materials_ior.d.ts +1 -2
  48. package/glTF/2.0/Extensions/KHR_materials_ior.js +3 -4
  49. package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -1
  50. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +3 -4
  51. package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js.map +1 -1
  52. package/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +0 -1
  53. package/glTF/2.0/Extensions/KHR_materials_sheen.js +3 -4
  54. package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -1
  55. package/glTF/2.0/Extensions/KHR_materials_specular.d.ts +1 -2
  56. package/glTF/2.0/Extensions/KHR_materials_specular.js +12 -6
  57. package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -1
  58. package/glTF/2.0/Extensions/KHR_materials_translucency.js +6 -6
  59. package/glTF/2.0/Extensions/KHR_materials_translucency.js.map +1 -1
  60. package/glTF/2.0/Extensions/KHR_materials_transmission.js +93 -84
  61. package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -1
  62. package/glTF/2.0/Extensions/KHR_materials_unlit.js +3 -3
  63. package/glTF/2.0/Extensions/KHR_materials_variants.js +70 -5
  64. package/glTF/2.0/Extensions/KHR_materials_variants.js.map +1 -1
  65. package/glTF/2.0/Extensions/KHR_materials_volume.d.ts +31 -0
  66. package/glTF/2.0/Extensions/KHR_materials_volume.js +79 -0
  67. package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -0
  68. package/glTF/2.0/Extensions/KHR_mesh_quantization.js +1 -1
  69. package/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +1 -2
  70. package/glTF/2.0/Extensions/KHR_texture_basisu.js +3 -4
  71. package/glTF/2.0/Extensions/KHR_texture_basisu.js.map +1 -1
  72. package/glTF/2.0/Extensions/KHR_texture_transform.js +2 -2
  73. package/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +2 -2
  74. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js +6 -3
  75. package/glTF/2.0/Extensions/KHR_xmp_json_ld.js.map +1 -1
  76. package/glTF/2.0/Extensions/MSFT_audio_emitter.js +6 -7
  77. package/glTF/2.0/Extensions/MSFT_audio_emitter.js.map +1 -1
  78. package/glTF/2.0/Extensions/MSFT_lod.d.ts +2 -1
  79. package/glTF/2.0/Extensions/MSFT_lod.js +48 -8
  80. package/glTF/2.0/Extensions/MSFT_lod.js.map +1 -1
  81. package/glTF/2.0/Extensions/MSFT_minecraftMesh.js +2 -2
  82. package/glTF/2.0/Extensions/MSFT_sRGBFactors.js +2 -2
  83. package/glTF/2.0/Extensions/index.d.ts +2 -0
  84. package/glTF/2.0/Extensions/index.js +26 -24
  85. package/glTF/2.0/Extensions/index.js.map +1 -1
  86. package/glTF/2.0/glTFLoader.d.ts +6 -11
  87. package/glTF/2.0/glTFLoader.js +129 -95
  88. package/glTF/2.0/glTFLoader.js.map +1 -1
  89. package/glTF/2.0/glTFLoaderInterfaces.d.ts +4 -2
  90. package/glTF/2.0/glTFLoaderInterfaces.js.map +1 -1
  91. package/glTF/2.0/index.d.ts +1 -1
  92. package/glTF/2.0/index.js +4 -4
  93. package/glTF/2.0/index.js.map +1 -1
  94. package/glTF/glTFFileLoader.d.ts +15 -9
  95. package/glTF/glTFFileLoader.js +62 -76
  96. package/glTF/glTFFileLoader.js.map +1 -1
  97. package/glTF/glTFValidation.js +1 -1
  98. package/glTF/glTFValidation.js.map +1 -1
  99. package/glTF/index.d.ts +2 -2
  100. package/glTF/index.js +4 -4
  101. package/glTF/index.js.map +1 -1
  102. package/index.d.ts +3 -3
  103. package/index.js +3 -3
  104. package/index.js.map +1 -1
  105. package/legacy/legacy-glTF.js +4 -4
  106. package/legacy/legacy-glTF1.d.ts +1 -1
  107. package/legacy/legacy-glTF1.js +1 -1
  108. package/legacy/legacy-glTF1.js.map +1 -1
  109. package/legacy/legacy-glTF1FileLoader.js +2 -2
  110. package/legacy/legacy-glTF2.d.ts +1 -1
  111. package/legacy/legacy-glTF2.js +3 -3
  112. package/legacy/legacy-glTF2.js.map +1 -1
  113. package/legacy/legacy-glTF2FileLoader.js +2 -2
  114. package/legacy/legacy-glTFFileLoader.js +3 -3
  115. package/legacy/legacy-objFileLoader.d.ts +1 -1
  116. package/legacy/legacy-objFileLoader.js +2 -2
  117. package/legacy/legacy-objFileLoader.js.map +1 -1
  118. package/legacy/legacy-stlFileLoader.d.ts +1 -1
  119. package/legacy/legacy-stlFileLoader.js +2 -2
  120. package/legacy/legacy-stlFileLoader.js.map +1 -1
  121. package/legacy/legacy.js +6 -6
  122. package/package.json +16 -4
@@ -3,7 +3,7 @@ import { Bone } from "@babylonjs/core/Bones/bone";
3
3
  import { Skeleton } from "@babylonjs/core/Bones/skeleton";
4
4
  import { Material } from "@babylonjs/core/Materials/material";
5
5
  import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
6
- import { Buffer, VertexBuffer } from "@babylonjs/core/Meshes/buffer";
6
+ import { Buffer, VertexBuffer } from "@babylonjs/core/Buffers/buffer";
7
7
  import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
8
8
  import { Mesh } from "@babylonjs/core/Meshes/mesh";
9
9
  import * as GLTF2 from "babylonjs-gltf2interface";
@@ -23,7 +23,9 @@ export interface IAccessor extends GLTF2.IAccessor, IArrayItem {
23
23
  /** @hidden */
24
24
  _data?: Promise<ArrayBufferView>;
25
25
  /** @hidden */
26
- _babylonVertexBuffer?: Promise<VertexBuffer>;
26
+ _babylonVertexBuffer?: {
27
+ [kind: string]: Promise<VertexBuffer>;
28
+ };
27
29
  }
28
30
  /**
29
31
  * Loader interface with additional members.
@@ -1 +1 @@
1
- {"version":3,"file":"glTFLoaderInterfaces.js","sourceRoot":"","sources":["../../../../sourceES6/loaders/src/glTF/2.0/glTFLoaderInterfaces.ts"],"names":[],"mappings":"","sourcesContent":["import { AnimationGroup } from \"@babylonjs/core/Animations/animationGroup\";\r\nimport { Bone } from \"@babylonjs/core/Bones/bone\";\r\nimport { Skeleton } from \"@babylonjs/core/Bones/skeleton\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Buffer, VertexBuffer } from \"@babylonjs/core/Meshes/buffer\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\n\r\nimport * as GLTF2 from \"babylonjs-gltf2interface\";\r\n\r\n/**\r\n * Loader interface with an index field.\r\n */\r\nexport interface IArrayItem {\r\n /**\r\n * The index of this item in the array.\r\n */\r\n index: number;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAccessor extends GLTF2.IAccessor, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n\r\n /** @hidden */\r\n _babylonVertexBuffer?: Promise<VertexBuffer>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimationChannel extends GLTF2.IAnimationChannel, IArrayItem {\r\n}\r\n\r\n/** @hidden */\r\nexport interface _IAnimationSamplerData {\r\n input: Float32Array;\r\n interpolation: GLTF2.AnimationSamplerInterpolation;\r\n output: Float32Array;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimationSampler extends GLTF2.IAnimationSampler, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<_IAnimationSamplerData>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimation extends GLTF2.IAnimation, IArrayItem {\r\n channels: IAnimationChannel[];\r\n samplers: IAnimationSampler[];\r\n\r\n /** @hidden */\r\n _babylonAnimationGroup?: AnimationGroup;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IBuffer extends GLTF2.IBuffer, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IBufferView extends GLTF2.IBufferView, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n\r\n /** @hidden */\r\n _babylonBuffer?: Promise<Buffer>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ICamera extends GLTF2.ICamera, IArrayItem {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IImage extends GLTF2.IImage, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialNormalTextureInfo extends GLTF2.IMaterialNormalTextureInfo, ITextureInfo {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialOcclusionTextureInfo extends GLTF2.IMaterialOcclusionTextureInfo, ITextureInfo {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialPbrMetallicRoughness extends GLTF2.IMaterialPbrMetallicRoughness {\r\n baseColorTexture?: ITextureInfo;\r\n metallicRoughnessTexture?: ITextureInfo;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterial extends GLTF2.IMaterial, IArrayItem {\r\n pbrMetallicRoughness?: IMaterialPbrMetallicRoughness;\r\n normalTexture?: IMaterialNormalTextureInfo;\r\n occlusionTexture?: IMaterialOcclusionTextureInfo;\r\n emissiveTexture?: ITextureInfo;\r\n\r\n /** @hidden */\r\n _data?: {\r\n [babylonDrawMode: number]: {\r\n babylonMaterial: Material;\r\n babylonMeshes: AbstractMesh[];\r\n promise: Promise<void>;\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMesh extends GLTF2.IMesh, IArrayItem {\r\n primitives: IMeshPrimitive[];\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMeshPrimitive extends GLTF2.IMeshPrimitive, IArrayItem {\r\n /** @hidden */\r\n _instanceData?: {\r\n babylonSourceMesh: Mesh;\r\n promise: Promise<any>;\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface INode extends GLTF2.INode, IArrayItem {\r\n /**\r\n * The parent glTF node.\r\n */\r\n parent?: INode;\r\n\r\n /** @hidden */\r\n _babylonTransformNode?: TransformNode;\r\n\r\n /** @hidden */\r\n _primitiveBabylonMeshes?: AbstractMesh[];\r\n\r\n /** @hidden */\r\n _babylonBones?: Bone[];\r\n\r\n /** @hidden */\r\n _numMorphTargets?: number;\r\n}\r\n\r\n/** @hidden */\r\nexport interface _ISamplerData {\r\n noMipMaps: boolean;\r\n samplingMode: number;\r\n wrapU: number;\r\n wrapV: number;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ISampler extends GLTF2.ISampler, IArrayItem {\r\n /** @hidden */\r\n _data?: _ISamplerData;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IScene extends GLTF2.IScene, IArrayItem {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ISkin extends GLTF2.ISkin, IArrayItem {\r\n /** @hidden */\r\n _data?: {\r\n babylonSkeleton: Skeleton;\r\n promise: Promise<void>;\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ITexture extends GLTF2.ITexture, IArrayItem {\r\n /** @hidden */\r\n _textureInfo: ITextureInfo;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ITextureInfo extends GLTF2.ITextureInfo {\r\n /** false or undefined if the texture holds color data (true if data are roughness, normal, ...) */\r\n nonColorData?: boolean;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IGLTF extends GLTF2.IGLTF {\r\n accessors?: IAccessor[];\r\n animations?: IAnimation[];\r\n buffers?: IBuffer[];\r\n bufferViews?: IBufferView[];\r\n cameras?: ICamera[];\r\n images?: IImage[];\r\n materials?: IMaterial[];\r\n meshes?: IMesh[];\r\n nodes?: INode[];\r\n samplers?: ISampler[];\r\n scenes?: IScene[];\r\n skins?: ISkin[];\r\n textures?: ITexture[];\r\n}\r\n"]}
1
+ {"version":3,"file":"glTFLoaderInterfaces.js","sourceRoot":"","sources":["../../../../sourceES6/loaders/src/glTF/2.0/glTFLoaderInterfaces.ts"],"names":[],"mappings":"","sourcesContent":["import { AnimationGroup } from \"@babylonjs/core/Animations/animationGroup\";\r\nimport { Bone } from \"@babylonjs/core/Bones/bone\";\r\nimport { Skeleton } from \"@babylonjs/core/Bones/skeleton\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Buffer, VertexBuffer } from \"@babylonjs/core/Buffers/buffer\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\n\r\nimport * as GLTF2 from \"babylonjs-gltf2interface\";\r\n\r\n/**\r\n * Loader interface with an index field.\r\n */\r\nexport interface IArrayItem {\r\n /**\r\n * The index of this item in the array.\r\n */\r\n index: number;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAccessor extends GLTF2.IAccessor, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n\r\n /** @hidden */\r\n _babylonVertexBuffer?: { [kind: string]: Promise<VertexBuffer>; };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimationChannel extends GLTF2.IAnimationChannel, IArrayItem {\r\n}\r\n\r\n/** @hidden */\r\nexport interface _IAnimationSamplerData {\r\n input: Float32Array;\r\n interpolation: GLTF2.AnimationSamplerInterpolation;\r\n output: Float32Array;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimationSampler extends GLTF2.IAnimationSampler, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<_IAnimationSamplerData>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IAnimation extends GLTF2.IAnimation, IArrayItem {\r\n channels: IAnimationChannel[];\r\n samplers: IAnimationSampler[];\r\n\r\n /** @hidden */\r\n _babylonAnimationGroup?: AnimationGroup;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IBuffer extends GLTF2.IBuffer, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IBufferView extends GLTF2.IBufferView, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n\r\n /** @hidden */\r\n _babylonBuffer?: Promise<Buffer>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ICamera extends GLTF2.ICamera, IArrayItem {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IImage extends GLTF2.IImage, IArrayItem {\r\n /** @hidden */\r\n _data?: Promise<ArrayBufferView>;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialNormalTextureInfo extends GLTF2.IMaterialNormalTextureInfo, ITextureInfo {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialOcclusionTextureInfo extends GLTF2.IMaterialOcclusionTextureInfo, ITextureInfo {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterialPbrMetallicRoughness extends GLTF2.IMaterialPbrMetallicRoughness {\r\n baseColorTexture?: ITextureInfo;\r\n metallicRoughnessTexture?: ITextureInfo;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMaterial extends GLTF2.IMaterial, IArrayItem {\r\n pbrMetallicRoughness?: IMaterialPbrMetallicRoughness;\r\n normalTexture?: IMaterialNormalTextureInfo;\r\n occlusionTexture?: IMaterialOcclusionTextureInfo;\r\n emissiveTexture?: ITextureInfo;\r\n\r\n /** @hidden */\r\n _data?: {\r\n [babylonDrawMode: number]: {\r\n babylonMaterial: Material;\r\n babylonMeshes: AbstractMesh[];\r\n promise: Promise<void>;\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMesh extends GLTF2.IMesh, IArrayItem {\r\n primitives: IMeshPrimitive[];\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IMeshPrimitive extends GLTF2.IMeshPrimitive, IArrayItem {\r\n /** @hidden */\r\n _instanceData?: {\r\n babylonSourceMesh: Mesh;\r\n promise: Promise<any>;\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface INode extends GLTF2.INode, IArrayItem {\r\n /**\r\n * The parent glTF node.\r\n */\r\n parent?: INode;\r\n\r\n /** @hidden */\r\n _babylonTransformNode?: TransformNode;\r\n\r\n /** @hidden */\r\n _primitiveBabylonMeshes?: AbstractMesh[];\r\n\r\n /** @hidden */\r\n _babylonBones?: Bone[];\r\n\r\n /** @hidden */\r\n _numMorphTargets?: number;\r\n}\r\n\r\n/** @hidden */\r\nexport interface _ISamplerData {\r\n noMipMaps: boolean;\r\n samplingMode: number;\r\n wrapU: number;\r\n wrapV: number;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ISampler extends GLTF2.ISampler, IArrayItem {\r\n /** @hidden */\r\n _data?: _ISamplerData;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IScene extends GLTF2.IScene, IArrayItem {\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ISkin extends GLTF2.ISkin, IArrayItem {\r\n /** @hidden */\r\n _data?: {\r\n babylonSkeleton: Skeleton;\r\n promise: Promise<void>;\r\n };\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ITexture extends GLTF2.ITexture, IArrayItem {\r\n /** @hidden */\r\n _textureInfo: ITextureInfo;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface ITextureInfo extends GLTF2.ITextureInfo {\r\n /** false or undefined if the texture holds color data (true if data are roughness, normal, ...) */\r\n nonColorData?: boolean;\r\n}\r\n\r\n/**\r\n * Loader interface with additional members.\r\n */\r\nexport interface IGLTF extends GLTF2.IGLTF {\r\n accessors?: IAccessor[];\r\n animations?: IAnimation[];\r\n buffers?: IBuffer[];\r\n bufferViews?: IBufferView[];\r\n cameras?: ICamera[];\r\n images?: IImage[];\r\n materials?: IMaterial[];\r\n meshes?: IMesh[];\r\n nodes?: INode[];\r\n samplers?: ISampler[];\r\n scenes?: IScene[];\r\n skins?: ISkin[];\r\n textures?: ITexture[];\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
1
  export * from "./glTFLoader";
2
2
  export * from "./glTFLoaderExtension";
3
3
  export * from "./glTFLoaderInterfaces";
4
- export * from "./Extensions";
4
+ export * from "./Extensions/index";
package/glTF/2.0/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export * from "./glTFLoader";
2
- export * from "./glTFLoaderExtension";
3
- export * from "./glTFLoaderInterfaces";
4
- export * from "./Extensions";
1
+ export * from "./glTFLoader.js";
2
+ export * from "./glTFLoaderExtension.js";
3
+ export * from "./glTFLoaderInterfaces.js";
4
+ export * from "./Extensions/index.js";
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../sourceES6/loaders/src/glTF/2.0/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC","sourcesContent":["export * from \"./glTFLoader\";\r\nexport * from \"./glTFLoaderExtension\";\r\nexport * from \"./glTFLoaderInterfaces\";\r\nexport * from \"./Extensions\";"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../sourceES6/loaders/src/glTF/2.0/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./glTFLoader\";\r\nexport * from \"./glTFLoaderExtension\";\r\nexport * from \"./glTFLoaderInterfaces\";\r\nexport * from \"./Extensions/index\";"]}
@@ -11,7 +11,7 @@ import { Scene, IDisposable } from "@babylonjs/core/scene";
11
11
  import { WebRequest } from "@babylonjs/core/Misc/webRequest";
12
12
  import { IFileRequest } from "@babylonjs/core/Misc/fileRequest";
13
13
  import { IDataBuffer } from '@babylonjs/core/Misc/dataReader';
14
- import { RequestFileError } from '@babylonjs/core/Misc/fileTools';
14
+ import { LoadFileError } from '@babylonjs/core/Misc/fileTools';
15
15
  /**
16
16
  * Mode that determines the coordinate system to use.
17
17
  */
@@ -92,8 +92,7 @@ export declare enum GLTFLoaderState {
92
92
  }
93
93
  /** @hidden */
94
94
  export interface IGLTFLoader extends IDisposable {
95
- readonly state: Nullable<GLTFLoaderState>;
96
- importMeshAsync: (meshesNames: any, scene: Scene, forAssetContainer: boolean, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string) => Promise<ISceneLoaderAsyncResult>;
95
+ importMeshAsync: (meshesNames: any, scene: Scene, container: Nullable<AssetContainer>, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string) => Promise<ISceneLoaderAsyncResult>;
97
96
  loadAsync: (scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string) => Promise<void>;
98
97
  }
99
98
  /**
@@ -171,8 +170,12 @@ export declare class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAs
171
170
  */
172
171
  loadAllMaterials: boolean;
173
172
  /**
174
- * Function called before loading a url referenced by the asset.
173
+ * If true, load the color (gamma encoded) textures into sRGB buffers (if supported by the GPU), which will yield more accurate results when sampling the texture. Defaults to true.
175
174
  */
175
+ useSRGBBuffers: boolean;
176
+ /**
177
+ * Function called before loading a url referenced by the asset.
178
+ */
176
179
  preprocessUrlAsync: (url: string) => Promise<string>;
177
180
  /**
178
181
  * Observable raised when the loader creates a mesh after parsing the glTF properties of the mesh.
@@ -277,6 +280,7 @@ export declare class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAs
277
280
  */
278
281
  set onValidated(callback: (results: GLTF2.IGLTFValidationResults) => void);
279
282
  private _loader;
283
+ private _state;
280
284
  private _progressCallback?;
281
285
  private _requests;
282
286
  private static magicBase64Encoded;
@@ -291,9 +295,7 @@ export declare class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAs
291
295
  */
292
296
  dispose(): void;
293
297
  /** @hidden */
294
- requestFile(scene: Scene, url: string, onSuccess: (data: any, request?: WebRequest) => void, onProgress?: (ev: ISceneLoaderProgressEvent) => void, useArrayBuffer?: boolean, onError?: (error: any) => void): IFileRequest;
295
- /** @hidden */
296
- readFile(scene: Scene, file: File, onSuccess: (data: any) => void, onProgress?: (ev: ISceneLoaderProgressEvent) => any, useArrayBuffer?: boolean, onError?: (error: any) => void): IFileRequest;
298
+ loadFile(scene: Scene, fileOrUrl: File | string, onSuccess: (data: any, responseURL?: string) => void, onProgress?: (ev: ISceneLoaderProgressEvent) => void, useArrayBuffer?: boolean, onError?: (request?: WebRequest, exception?: LoadFileError) => void): IFileRequest;
297
299
  /** @hidden */
298
300
  importMeshAsync(meshesNames: any, scene: Scene, data: any, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string): Promise<ISceneLoaderAsyncResult>;
299
301
  /** @hidden */
@@ -317,15 +319,19 @@ export declare class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAs
317
319
  * The loader state or null if the loader is not active.
318
320
  */
319
321
  get loaderState(): Nullable<GLTFLoaderState>;
322
+ /**
323
+ * Observable raised when the loader state changes.
324
+ */
325
+ onLoaderStateChangedObservable: Observable<Nullable<GLTFLoaderState>>;
320
326
  /**
321
327
  * Returns a promise that resolves when the asset is completely loaded.
322
328
  * @returns a promise that resolves when the asset is completely loaded.
323
329
  */
324
330
  whenCompleteAsync(): Promise<void>;
325
331
  /** @hidden */
326
- _loadFile(url: string, scene: Scene, onSuccess: (data: string | ArrayBuffer) => void, useArrayBuffer?: boolean, onError?: (request?: WebRequest) => void): IFileRequest;
332
+ _setState(state: GLTFLoaderState): void;
327
333
  /** @hidden */
328
- _requestFile(url: string, scene: Scene, onSuccess: (data: string | ArrayBuffer, request?: WebRequest) => void, useArrayBuffer?: boolean, onError?: (error: RequestFileError) => void, onOpened?: (request: WebRequest) => void): IFileRequest;
334
+ _loadFile(scene: Scene, fileOrUrl: File | string, onSuccess: (data: string | ArrayBuffer) => void, useArrayBuffer?: boolean, onError?: (request?: WebRequest) => void, onOpened?: (request: WebRequest) => void): IFileRequest;
329
335
  private _onProgress;
330
336
  private _validate;
331
337
  private _getLoader;
@@ -1,11 +1,20 @@
1
- import { Observable } from "@babylonjs/core/Misc/observable";
2
- import { Tools } from "@babylonjs/core/Misc/tools";
3
- import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader";
4
- import { AssetContainer } from "@babylonjs/core/assetContainer";
5
- import { Logger } from '@babylonjs/core/Misc/logger';
6
- import { DataReader } from '@babylonjs/core/Misc/dataReader';
7
- import { GLTFValidation } from './glTFValidation';
8
- import { StringTools } from '@babylonjs/core/Misc/stringTools';
1
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
2
+ import { Tools } from "@babylonjs/core/Misc/tools.js";
3
+ import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader.js";
4
+ import { AssetContainer } from "@babylonjs/core/assetContainer.js";
5
+ import { Logger } from '@babylonjs/core/Misc/logger.js';
6
+ import { DataReader } from '@babylonjs/core/Misc/dataReader.js';
7
+ import { GLTFValidation } from './glTFValidation.js';
8
+ import { DecodeBase64UrlToBinary } from '@babylonjs/core/Misc/fileTools.js';
9
+ import { StringTools } from '@babylonjs/core/Misc/stringTools.js';
10
+ function readAsync(arrayBuffer, byteOffset, byteLength) {
11
+ try {
12
+ return Promise.resolve(new Uint8Array(arrayBuffer, byteOffset, byteLength));
13
+ }
14
+ catch (e) {
15
+ return Promise.reject(e);
16
+ }
17
+ }
9
18
  /**
10
19
  * Mode that determines the coordinate system to use.
11
20
  */
@@ -116,8 +125,12 @@ var GLTFFileLoader = /** @class */ (function () {
116
125
  */
117
126
  this.loadAllMaterials = false;
118
127
  /**
119
- * Function called before loading a url referenced by the asset.
128
+ * If true, load the color (gamma encoded) textures into sRGB buffers (if supported by the GPU), which will yield more accurate results when sampling the texture. Defaults to true.
120
129
  */
130
+ this.useSRGBBuffers = true;
131
+ /**
132
+ * Function called before loading a url referenced by the asset.
133
+ */
121
134
  this.preprocessUrlAsync = function (url) { return Promise.resolve(url); };
122
135
  /**
123
136
  * Observable raised when the loader creates a mesh after parsing the glTF properties of the mesh.
@@ -164,6 +177,7 @@ var GLTFFileLoader = /** @class */ (function () {
164
177
  */
165
178
  this.onValidatedObservable = new Observable();
166
179
  this._loader = null;
180
+ this._state = null;
167
181
  this._requests = new Array();
168
182
  /**
169
183
  * Name of the loader ("gltf")
@@ -174,6 +188,10 @@ var GLTFFileLoader = /** @class */ (function () {
174
188
  ".gltf": { isBinary: false },
175
189
  ".glb": { isBinary: true }
176
190
  };
191
+ /**
192
+ * Observable raised when the loader state changes.
193
+ */
194
+ this.onLoaderStateChangedObservable = new Observable();
177
195
  this._logIndentLevel = 0;
178
196
  this._loggingEnabled = false;
179
197
  /** @hidden */
@@ -388,7 +406,7 @@ var GLTFFileLoader = /** @class */ (function () {
388
406
  this.onDisposeObservable.clear();
389
407
  };
390
408
  /** @hidden */
391
- GLTFFileLoader.prototype.requestFile = function (scene, url, onSuccess, onProgress, useArrayBuffer, onError) {
409
+ GLTFFileLoader.prototype.loadFile = function (scene, fileOrUrl, onSuccess, onProgress, useArrayBuffer, onError) {
392
410
  var _this = this;
393
411
  this._progressCallback = onProgress;
394
412
  if (useArrayBuffer) {
@@ -403,7 +421,7 @@ var GLTFFileLoader = /** @class */ (function () {
403
421
  var dataBuffer = {
404
422
  readAsync: function (byteOffset, byteLength) {
405
423
  return new Promise(function (resolve, reject) {
406
- _this._requestFile(url, scene, function (data) {
424
+ _this._loadFile(scene, fileOrUrl, function (data) {
407
425
  resolve(new Uint8Array(data));
408
426
  }, true, function (error) {
409
427
  reject(error);
@@ -417,40 +435,29 @@ var GLTFFileLoader = /** @class */ (function () {
417
435
  this._unpackBinaryAsync(new DataReader(dataBuffer)).then(function (loaderData) {
418
436
  fileRequest_1.onCompleteObservable.notifyObservers(fileRequest_1);
419
437
  onSuccess(loaderData);
420
- }, onError);
438
+ }, onError ? function (error) { return onError(undefined, error); } : undefined);
421
439
  return fileRequest_1;
422
440
  }
423
- return this._requestFile(url, scene, function (data, request) {
441
+ return this._loadFile(scene, fileOrUrl, function (data) {
424
442
  var arrayBuffer = data;
425
443
  _this._unpackBinaryAsync(new DataReader({
426
- readAsync: function (byteOffset, byteLength) { return Promise.resolve(new Uint8Array(arrayBuffer, byteOffset, byteLength)); },
444
+ readAsync: function (byteOffset, byteLength) { return readAsync(arrayBuffer, byteOffset, byteLength); },
427
445
  byteLength: arrayBuffer.byteLength
428
446
  })).then(function (loaderData) {
429
- onSuccess(loaderData, request);
430
- }, onError);
447
+ onSuccess(loaderData);
448
+ }, onError ? function (error) { return onError(undefined, error); } : undefined);
431
449
  }, true, onError);
432
450
  }
433
- return this._requestFile(url, scene, function (data, request) {
434
- _this._validate(scene, data, Tools.GetFolderPath(url), Tools.GetFilename(url));
435
- onSuccess({ json: _this._parseJson(data) }, request);
436
- }, useArrayBuffer, onError);
437
- };
438
- /** @hidden */
439
- GLTFFileLoader.prototype.readFile = function (scene, file, onSuccess, onProgress, useArrayBuffer, onError) {
440
- var _this = this;
441
- return scene._readFile(file, function (data) {
442
- _this._validate(scene, data, "file:", file.name);
443
- if (useArrayBuffer) {
444
- var arrayBuffer_1 = data;
445
- _this._unpackBinaryAsync(new DataReader({
446
- readAsync: function (byteOffset, byteLength) { return Promise.resolve(new Uint8Array(arrayBuffer_1, byteOffset, byteLength)); },
447
- byteLength: arrayBuffer_1.byteLength
448
- })).then(onSuccess, onError);
451
+ return this._loadFile(scene, fileOrUrl, function (data) {
452
+ if (fileOrUrl.name) {
453
+ _this._validate(scene, data, "file:", fileOrUrl.name);
449
454
  }
450
455
  else {
451
- onSuccess({ json: _this._parseJson(data) });
456
+ var url = fileOrUrl;
457
+ _this._validate(scene, data, Tools.GetFolderPath(url), Tools.GetFilename(url));
452
458
  }
453
- }, onProgress, useArrayBuffer, onError);
459
+ onSuccess({ json: _this._parseJson(data) });
460
+ }, useArrayBuffer, onError);
454
461
  };
455
462
  /** @hidden */
456
463
  GLTFFileLoader.prototype.importMeshAsync = function (meshesNames, scene, data, rootUrl, onProgress, fileName) {
@@ -460,7 +467,7 @@ var GLTFFileLoader = /** @class */ (function () {
460
467
  _this.onParsedObservable.clear();
461
468
  _this._log("Loading " + (fileName || ""));
462
469
  _this._loader = _this._getLoader(data);
463
- return _this._loader.importMeshAsync(meshesNames, scene, false, data, rootUrl, onProgress, fileName);
470
+ return _this._loader.importMeshAsync(meshesNames, scene, null, data, rootUrl, onProgress, fileName);
464
471
  });
465
472
  };
466
473
  /** @hidden */
@@ -488,36 +495,16 @@ var GLTFFileLoader = /** @class */ (function () {
488
495
  var materials = [];
489
496
  _this.onMaterialLoadedObservable.add(function (material) {
490
497
  materials.push(material);
491
- material.onDisposeObservable.addOnce(function () {
492
- var index = container.materials.indexOf(material);
493
- if (index > -1) {
494
- container.materials.splice(index, 1);
495
- }
496
- index = materials.indexOf(material);
497
- if (index > -1) {
498
- materials.splice(index, 1);
499
- }
500
- });
501
498
  });
502
499
  var textures = [];
503
500
  _this.onTextureLoadedObservable.add(function (texture) {
504
501
  textures.push(texture);
505
- texture.onDisposeObservable.addOnce(function () {
506
- var index = container.textures.indexOf(texture);
507
- if (index > -1) {
508
- container.textures.splice(index, 1);
509
- }
510
- index = textures.indexOf(texture);
511
- if (index > -1) {
512
- textures.splice(index, 1);
513
- }
514
- });
515
502
  });
516
503
  var cameras = [];
517
504
  _this.onCameraLoadedObservable.add(function (camera) {
518
505
  cameras.push(camera);
519
506
  });
520
- return _this._loader.importMeshAsync(null, scene, true, data, rootUrl, onProgress, fileName).then(function (result) {
507
+ return _this._loader.importMeshAsync(null, scene, container, data, rootUrl, onProgress, fileName).then(function (result) {
521
508
  Array.prototype.push.apply(container.geometries, result.geometries);
522
509
  Array.prototype.push.apply(container.meshes, result.meshes);
523
510
  Array.prototype.push.apply(container.particleSystems, result.particleSystems);
@@ -535,20 +522,22 @@ var GLTFFileLoader = /** @class */ (function () {
535
522
  /** @hidden */
536
523
  GLTFFileLoader.prototype.canDirectLoad = function (data) {
537
524
  return (data.indexOf("asset") !== -1 && data.indexOf("version") !== -1)
538
- || StringTools.StartsWith(data, "data:base64," + GLTFFileLoader.magicBase64Encoded)
525
+ || StringTools.StartsWith(data, "data:base64," + GLTFFileLoader.magicBase64Encoded) // this is technically incorrect, but will continue to support for backcompat.
526
+ || StringTools.StartsWith(data, "data:;base64," + GLTFFileLoader.magicBase64Encoded)
539
527
  || StringTools.StartsWith(data, "data:application/octet-stream;base64," + GLTFFileLoader.magicBase64Encoded)
540
528
  || StringTools.StartsWith(data, "data:model/gltf-binary;base64," + GLTFFileLoader.magicBase64Encoded);
541
529
  };
542
530
  /** @hidden */
543
531
  GLTFFileLoader.prototype.directLoad = function (scene, data) {
544
- if (StringTools.StartsWith(data, "base64," + GLTFFileLoader.magicBase64Encoded) ||
532
+ if (StringTools.StartsWith(data, "base64," + GLTFFileLoader.magicBase64Encoded) || // this is technically incorrect, but will continue to support for backcompat.
533
+ StringTools.StartsWith(data, ";base64," + GLTFFileLoader.magicBase64Encoded) ||
545
534
  StringTools.StartsWith(data, "application/octet-stream;base64," + GLTFFileLoader.magicBase64Encoded) ||
546
535
  StringTools.StartsWith(data, "model/gltf-binary;base64," + GLTFFileLoader.magicBase64Encoded)) {
547
- var arrayBuffer_2 = Tools.DecodeBase64(data);
548
- this._validate(scene, arrayBuffer_2);
536
+ var arrayBuffer_1 = DecodeBase64UrlToBinary(data);
537
+ this._validate(scene, arrayBuffer_1);
549
538
  return this._unpackBinaryAsync(new DataReader({
550
- readAsync: function (byteOffset, byteLength) { return Promise.resolve(new Uint8Array(arrayBuffer_2, byteOffset, byteLength)); },
551
- byteLength: arrayBuffer_2.byteLength
539
+ readAsync: function (byteOffset, byteLength) { return readAsync(arrayBuffer_1, byteOffset, byteLength); },
540
+ byteLength: arrayBuffer_1.byteLength
552
541
  }));
553
542
  }
554
543
  this._validate(scene, data);
@@ -563,7 +552,7 @@ var GLTFFileLoader = /** @class */ (function () {
563
552
  * The loader state or null if the loader is not active.
564
553
  */
565
554
  get: function () {
566
- return this._loader ? this._loader.state : null;
555
+ return this._state;
567
556
  },
568
557
  enumerable: false,
569
558
  configurable: true
@@ -584,23 +573,20 @@ var GLTFFileLoader = /** @class */ (function () {
584
573
  });
585
574
  };
586
575
  /** @hidden */
587
- GLTFFileLoader.prototype._loadFile = function (url, scene, onSuccess, useArrayBuffer, onError) {
588
- var _this = this;
589
- var request = scene._loadFile(url, onSuccess, function (event) {
590
- _this._onProgress(event, request);
591
- }, undefined, useArrayBuffer, onError);
592
- request.onCompleteObservable.add(function (request) {
593
- _this._requests.splice(_this._requests.indexOf(request), 1);
594
- });
595
- this._requests.push(request);
596
- return request;
576
+ GLTFFileLoader.prototype._setState = function (state) {
577
+ if (this._state === state) {
578
+ return;
579
+ }
580
+ this._state = state;
581
+ this.onLoaderStateChangedObservable.notifyObservers(this._state);
582
+ this._log(GLTFLoaderState[this._state]);
597
583
  };
598
584
  /** @hidden */
599
- GLTFFileLoader.prototype._requestFile = function (url, scene, onSuccess, useArrayBuffer, onError, onOpened) {
585
+ GLTFFileLoader.prototype._loadFile = function (scene, fileOrUrl, onSuccess, useArrayBuffer, onError, onOpened) {
600
586
  var _this = this;
601
- var request = scene._requestFile(url, onSuccess, function (event) {
587
+ var request = scene._loadFile(fileOrUrl, onSuccess, function (event) {
602
588
  _this._onProgress(event, request);
603
- }, undefined, useArrayBuffer, onError, onOpened);
589
+ }, true, useArrayBuffer, onError, onOpened);
604
590
  request.onCompleteObservable.add(function (request) {
605
591
  _this._requests.splice(_this._requests.indexOf(request), 1);
606
592
  });