@babylonjs/loaders 5.0.0-alpha.8 → 5.0.0-beta.3
Sign up to get free protection for your applications and to get access to all the features.
- package/OBJ/index.d.ts +2 -0
- package/OBJ/index.js +4 -2
- package/OBJ/index.js.map +1 -1
- package/OBJ/mtlFileLoader.d.ts +4 -2
- package/OBJ/mtlFileLoader.js +7 -6
- package/OBJ/mtlFileLoader.js.map +1 -1
- package/OBJ/objFileLoader.d.ts +12 -84
- package/OBJ/objFileLoader.js +50 -667
- package/OBJ/objFileLoader.js.map +1 -1
- package/OBJ/objLoadingOptions.d.ts +43 -0
- package/OBJ/objLoadingOptions.js +2 -0
- package/OBJ/objLoadingOptions.js.map +1 -0
- package/OBJ/solidParser.d.ts +153 -0
- package/OBJ/solidParser.js +700 -0
- package/OBJ/solidParser.js.map +1 -0
- package/STL/index.js +1 -1
- package/STL/stlFileLoader.d.ts +6 -0
- package/STL/stlFileLoader.js +38 -11
- package/STL/stlFileLoader.js.map +1 -1
- package/glTF/1.0/glTFBinaryExtension.js +4 -4
- package/glTF/1.0/glTFLoader.d.ts +4 -4
- package/glTF/1.0/glTFLoader.js +60 -55
- package/glTF/1.0/glTFLoader.js.map +1 -1
- package/glTF/1.0/glTFLoaderInterfaces.d.ts +3 -1
- package/glTF/1.0/glTFLoaderInterfaces.js.map +1 -1
- package/glTF/1.0/glTFLoaderUtils.js +6 -6
- package/glTF/1.0/glTFMaterialsCommonExtension.js +12 -12
- package/glTF/1.0/index.js +5 -5
- package/glTF/2.0/Extensions/EXT_lights_image_based.js +8 -5
- package/glTF/2.0/Extensions/EXT_lights_image_based.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +3 -3
- package/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +1 -5
- package/glTF/2.0/Extensions/EXT_meshopt_compression.js +5 -21
- package/glTF/2.0/Extensions/EXT_meshopt_compression.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_texture_webp.js +2 -2
- package/glTF/2.0/Extensions/EXT_texture_webp.js.map +1 -1
- package/glTF/2.0/Extensions/ExtrasAsMetadata.js +1 -1
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +8 -4
- package/glTF/2.0/Extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_lights_punctual.js +9 -8
- package/glTF/2.0/Extensions/KHR_lights_punctual.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_clearcoat.js +2 -2
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +30 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +46 -0
- package/glTF/2.0/Extensions/KHR_materials_emissive_strength.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_materials_ior.d.ts +1 -2
- package/glTF/2.0/Extensions/KHR_materials_ior.js +3 -4
- package/glTF/2.0/Extensions/KHR_materials_ior.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +3 -4
- package/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +0 -1
- package/glTF/2.0/Extensions/KHR_materials_sheen.js +3 -4
- package/glTF/2.0/Extensions/KHR_materials_sheen.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_specular.d.ts +1 -2
- package/glTF/2.0/Extensions/KHR_materials_specular.js +12 -6
- package/glTF/2.0/Extensions/KHR_materials_specular.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_translucency.js +6 -6
- package/glTF/2.0/Extensions/KHR_materials_translucency.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_transmission.js +93 -84
- package/glTF/2.0/Extensions/KHR_materials_transmission.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_unlit.js +3 -3
- package/glTF/2.0/Extensions/KHR_materials_variants.js +70 -5
- package/glTF/2.0/Extensions/KHR_materials_variants.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_materials_volume.d.ts +31 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.js +79 -0
- package/glTF/2.0/Extensions/KHR_materials_volume.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_mesh_quantization.js +1 -1
- package/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +1 -2
- package/glTF/2.0/Extensions/KHR_texture_basisu.js +3 -4
- package/glTF/2.0/Extensions/KHR_texture_basisu.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_texture_transform.js +2 -2
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +2 -2
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.js +6 -3
- package/glTF/2.0/Extensions/KHR_xmp_json_ld.js.map +1 -1
- package/glTF/2.0/Extensions/MSFT_audio_emitter.js +6 -7
- package/glTF/2.0/Extensions/MSFT_audio_emitter.js.map +1 -1
- package/glTF/2.0/Extensions/MSFT_lod.d.ts +2 -1
- package/glTF/2.0/Extensions/MSFT_lod.js +48 -8
- package/glTF/2.0/Extensions/MSFT_lod.js.map +1 -1
- package/glTF/2.0/Extensions/MSFT_minecraftMesh.js +2 -2
- package/glTF/2.0/Extensions/MSFT_sRGBFactors.js +2 -2
- package/glTF/2.0/Extensions/index.d.ts +2 -0
- package/glTF/2.0/Extensions/index.js +26 -24
- package/glTF/2.0/Extensions/index.js.map +1 -1
- package/glTF/2.0/glTFLoader.d.ts +6 -11
- package/glTF/2.0/glTFLoader.js +129 -95
- package/glTF/2.0/glTFLoader.js.map +1 -1
- package/glTF/2.0/glTFLoaderInterfaces.d.ts +4 -2
- package/glTF/2.0/glTFLoaderInterfaces.js.map +1 -1
- package/glTF/2.0/index.d.ts +1 -1
- package/glTF/2.0/index.js +4 -4
- package/glTF/2.0/index.js.map +1 -1
- package/glTF/glTFFileLoader.d.ts +15 -9
- package/glTF/glTFFileLoader.js +62 -76
- package/glTF/glTFFileLoader.js.map +1 -1
- package/glTF/glTFValidation.js +1 -1
- package/glTF/glTFValidation.js.map +1 -1
- package/glTF/index.d.ts +2 -2
- package/glTF/index.js +4 -4
- package/glTF/index.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/legacy/legacy-glTF.js +4 -4
- package/legacy/legacy-glTF1.d.ts +1 -1
- package/legacy/legacy-glTF1.js +1 -1
- package/legacy/legacy-glTF1.js.map +1 -1
- package/legacy/legacy-glTF1FileLoader.js +2 -2
- package/legacy/legacy-glTF2.d.ts +1 -1
- package/legacy/legacy-glTF2.js +3 -3
- package/legacy/legacy-glTF2.js.map +1 -1
- package/legacy/legacy-glTF2FileLoader.js +2 -2
- package/legacy/legacy-glTFFileLoader.js +3 -3
- package/legacy/legacy-objFileLoader.d.ts +1 -1
- package/legacy/legacy-objFileLoader.js +2 -2
- package/legacy/legacy-objFileLoader.js.map +1 -1
- package/legacy/legacy-stlFileLoader.d.ts +1 -1
- package/legacy/legacy-stlFileLoader.js +2 -2
- package/legacy/legacy-stlFileLoader.js.map +1 -1
- package/legacy/legacy.js +6 -6
- package/package.json +16 -4
@@ -1,5 +1,5 @@
|
|
1
|
-
import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial";
|
2
|
-
import { GLTFLoader } from "../glTFLoader";
|
1
|
+
import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js";
|
2
|
+
import { GLTFLoader } from "../glTFLoader.js";
|
3
3
|
var NAME = "MSFT_minecraftMesh";
|
4
4
|
/** @hidden */
|
5
5
|
var MSFT_minecraftMesh = /** @class */ (function () {
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial";
|
2
|
-
import { GLTFLoader } from "../glTFLoader";
|
1
|
+
import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js";
|
2
|
+
import { GLTFLoader } from "../glTFLoader.js";
|
3
3
|
var NAME = "MSFT_sRGBFactors";
|
4
4
|
/** @hidden */
|
5
5
|
var MSFT_sRGBFactors = /** @class */ (function () {
|
@@ -7,12 +7,14 @@ export * from "./KHR_lights_punctual";
|
|
7
7
|
export * from "./KHR_materials_pbrSpecularGlossiness";
|
8
8
|
export * from "./KHR_materials_unlit";
|
9
9
|
export * from "./KHR_materials_clearcoat";
|
10
|
+
export * from "./KHR_materials_emissive_strength";
|
10
11
|
export * from "./KHR_materials_sheen";
|
11
12
|
export * from "./KHR_materials_specular";
|
12
13
|
export * from "./KHR_materials_ior";
|
13
14
|
export * from "./KHR_materials_variants";
|
14
15
|
export * from "./KHR_materials_transmission";
|
15
16
|
export * from "./KHR_materials_translucency";
|
17
|
+
export * from "./KHR_materials_volume";
|
16
18
|
export * from "./KHR_mesh_quantization";
|
17
19
|
export * from "./KHR_texture_basisu";
|
18
20
|
export * from "./KHR_texture_transform";
|
@@ -1,25 +1,27 @@
|
|
1
|
-
export * from "./EXT_lights_image_based";
|
2
|
-
export * from "./EXT_mesh_gpu_instancing";
|
3
|
-
export * from "./EXT_meshopt_compression";
|
4
|
-
export * from "./EXT_texture_webp";
|
5
|
-
export * from "./KHR_draco_mesh_compression";
|
6
|
-
export * from "./KHR_lights_punctual";
|
7
|
-
export * from "./KHR_materials_pbrSpecularGlossiness";
|
8
|
-
export * from "./KHR_materials_unlit";
|
9
|
-
export * from "./KHR_materials_clearcoat";
|
10
|
-
export * from "./
|
11
|
-
export * from "./
|
12
|
-
export * from "./
|
13
|
-
export * from "./
|
14
|
-
export * from "./
|
15
|
-
export * from "./
|
16
|
-
export * from "./
|
17
|
-
export * from "./
|
18
|
-
export * from "./
|
19
|
-
export * from "./
|
20
|
-
export * from "./
|
21
|
-
export * from "./
|
22
|
-
export * from "./
|
23
|
-
export * from "./
|
24
|
-
export * from "./
|
1
|
+
export * from "./EXT_lights_image_based.js";
|
2
|
+
export * from "./EXT_mesh_gpu_instancing.js";
|
3
|
+
export * from "./EXT_meshopt_compression.js";
|
4
|
+
export * from "./EXT_texture_webp.js";
|
5
|
+
export * from "./KHR_draco_mesh_compression.js";
|
6
|
+
export * from "./KHR_lights_punctual.js";
|
7
|
+
export * from "./KHR_materials_pbrSpecularGlossiness.js";
|
8
|
+
export * from "./KHR_materials_unlit.js";
|
9
|
+
export * from "./KHR_materials_clearcoat.js";
|
10
|
+
export * from "./KHR_materials_emissive_strength.js";
|
11
|
+
export * from "./KHR_materials_sheen.js";
|
12
|
+
export * from "./KHR_materials_specular.js";
|
13
|
+
export * from "./KHR_materials_ior.js";
|
14
|
+
export * from "./KHR_materials_variants.js";
|
15
|
+
export * from "./KHR_materials_transmission.js";
|
16
|
+
export * from "./KHR_materials_translucency.js";
|
17
|
+
export * from "./KHR_materials_volume.js";
|
18
|
+
export * from "./KHR_mesh_quantization.js";
|
19
|
+
export * from "./KHR_texture_basisu.js";
|
20
|
+
export * from "./KHR_texture_transform.js";
|
21
|
+
export * from "./KHR_xmp_json_ld.js";
|
22
|
+
export * from "./MSFT_audio_emitter.js";
|
23
|
+
export * from "./MSFT_lod.js";
|
24
|
+
export * from "./MSFT_minecraftMesh.js";
|
25
|
+
export * from "./MSFT_sRGBFactors.js";
|
26
|
+
export * from "./ExtrasAsMetadata.js";
|
25
27
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../sourceES6/loaders/src/glTF/2.0/Extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./EXT_lights_image_based\";\r\nexport * from \"./EXT_mesh_gpu_instancing\";\r\nexport * from \"./EXT_meshopt_compression\";\r\nexport * from \"./EXT_texture_webp\";\r\nexport * from \"./KHR_draco_mesh_compression\";\r\nexport * from \"./KHR_lights_punctual\";\r\nexport * from \"./KHR_materials_pbrSpecularGlossiness\";\r\nexport * from \"./KHR_materials_unlit\";\r\nexport * from \"./KHR_materials_clearcoat\";\r\nexport * from \"./KHR_materials_sheen\";\r\nexport * from \"./KHR_materials_specular\";\r\nexport * from \"./KHR_materials_ior\";\r\nexport * from \"./KHR_materials_variants\";\r\nexport * from \"./KHR_materials_transmission\";\r\nexport * from \"./KHR_materials_translucency\";\r\nexport * from \"./KHR_mesh_quantization\";\r\nexport * from \"./KHR_texture_basisu\";\r\nexport * from \"./KHR_texture_transform\";\r\nexport * from \"./KHR_xmp_json_ld\";\r\nexport * from \"./MSFT_audio_emitter\";\r\nexport * from \"./MSFT_lod\";\r\nexport * from \"./MSFT_minecraftMesh\";\r\nexport * from \"./MSFT_sRGBFactors\";\r\nexport * from \"./ExtrasAsMetadata\";\r\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../sourceES6/loaders/src/glTF/2.0/Extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./EXT_lights_image_based\";\r\nexport * from \"./EXT_mesh_gpu_instancing\";\r\nexport * from \"./EXT_meshopt_compression\";\r\nexport * from \"./EXT_texture_webp\";\r\nexport * from \"./KHR_draco_mesh_compression\";\r\nexport * from \"./KHR_lights_punctual\";\r\nexport * from \"./KHR_materials_pbrSpecularGlossiness\";\r\nexport * from \"./KHR_materials_unlit\";\r\nexport * from \"./KHR_materials_clearcoat\";\r\nexport * from \"./KHR_materials_emissive_strength\";\r\nexport * from \"./KHR_materials_sheen\";\r\nexport * from \"./KHR_materials_specular\";\r\nexport * from \"./KHR_materials_ior\";\r\nexport * from \"./KHR_materials_variants\";\r\nexport * from \"./KHR_materials_transmission\";\r\nexport * from \"./KHR_materials_translucency\";\r\nexport * from \"./KHR_materials_volume\";\r\nexport * from \"./KHR_mesh_quantization\";\r\nexport * from \"./KHR_texture_basisu\";\r\nexport * from \"./KHR_texture_transform\";\r\nexport * from \"./KHR_xmp_json_ld\";\r\nexport * from \"./MSFT_audio_emitter\";\r\nexport * from \"./MSFT_lod\";\r\nexport * from \"./MSFT_minecraftMesh\";\r\nexport * from \"./MSFT_sRGBFactors\";\r\nexport * from \"./ExtrasAsMetadata\";\r\n"]}
|
package/glTF/2.0/glTFLoader.d.ts
CHANGED
@@ -11,10 +11,11 @@ import { Scene } from "@babylonjs/core/scene";
|
|
11
11
|
import { IProperty } from "babylonjs-gltf2interface";
|
12
12
|
import { IGLTF, ISampler, INode, IScene, IMesh, IAccessor, ICamera, IAnimation, IAnimationChannel, IBuffer, IBufferView, IMaterial, ITextureInfo, ITexture, IImage, IMeshPrimitive, IArrayItem as IArrItem } from "./glTFLoaderInterfaces";
|
13
13
|
import { IGLTFLoaderExtension } from "./glTFLoaderExtension";
|
14
|
-
import { IGLTFLoader, GLTFFileLoader,
|
14
|
+
import { IGLTFLoader, GLTFFileLoader, IGLTFLoaderData } from "../glTFFileLoader";
|
15
15
|
import { IAnimatable } from '@babylonjs/core/Animations/animatable.interface';
|
16
16
|
import { IDataBuffer } from '@babylonjs/core/Misc/dataReader';
|
17
17
|
import { Light } from '@babylonjs/core/Lights/light';
|
18
|
+
import { AssetContainer } from "@babylonjs/core/assetContainer";
|
18
19
|
/**
|
19
20
|
* Helper class for working with arrays when loading the glTF asset
|
20
21
|
*/
|
@@ -40,14 +41,13 @@ export declare class GLTFLoader implements IGLTFLoader {
|
|
40
41
|
/** @hidden */
|
41
42
|
_completePromises: Promise<any>[];
|
42
43
|
/** @hidden */
|
43
|
-
|
44
|
+
_assetContainer: Nullable<AssetContainer>;
|
44
45
|
/** Storage */
|
45
46
|
_babylonLights: Light[];
|
46
47
|
/** @hidden */
|
47
48
|
_disableInstancedMesh: number;
|
48
49
|
private _disposed;
|
49
50
|
private _parent;
|
50
|
-
private _state;
|
51
51
|
private _extensions;
|
52
52
|
private _rootUrl;
|
53
53
|
private _fileName;
|
@@ -74,10 +74,6 @@ export declare class GLTFLoader implements IGLTFLoader {
|
|
74
74
|
* @returns A boolean indicating whether the extension has been unregistered
|
75
75
|
*/
|
76
76
|
static UnregisterExtension(name: string): boolean;
|
77
|
-
/**
|
78
|
-
* The loader state.
|
79
|
-
*/
|
80
|
-
get state(): Nullable<GLTFLoaderState>;
|
81
77
|
/**
|
82
78
|
* The object that represents the glTF JSON.
|
83
79
|
*/
|
@@ -97,13 +93,13 @@ export declare class GLTFLoader implements IGLTFLoader {
|
|
97
93
|
/**
|
98
94
|
* The root Babylon mesh when loading the asset.
|
99
95
|
*/
|
100
|
-
get rootBabylonMesh(): Mesh
|
96
|
+
get rootBabylonMesh(): Nullable<Mesh>;
|
101
97
|
/** @hidden */
|
102
98
|
constructor(parent: GLTFFileLoader);
|
103
99
|
/** @hidden */
|
104
100
|
dispose(): void;
|
105
101
|
/** @hidden */
|
106
|
-
importMeshAsync(meshesNames: any, scene: Scene,
|
102
|
+
importMeshAsync(meshesNames: any, scene: Scene, container: Nullable<AssetContainer>, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string): Promise<ISceneLoaderAsyncResult>;
|
107
103
|
/** @hidden */
|
108
104
|
loadAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: ISceneLoaderProgressEvent) => void, fileName?: string): Promise<void>;
|
109
105
|
private _loadAsync;
|
@@ -111,7 +107,6 @@ export declare class GLTFLoader implements IGLTFLoader {
|
|
111
107
|
private _setupData;
|
112
108
|
private _loadExtensions;
|
113
109
|
private _checkExtensions;
|
114
|
-
private _setState;
|
115
110
|
private _createRootNode;
|
116
111
|
/**
|
117
112
|
* Loads a glTF scene.
|
@@ -255,7 +250,7 @@ export declare class GLTFLoader implements IGLTFLoader {
|
|
255
250
|
/** @hidden */
|
256
251
|
_loadTextureAsync(context: string, texture: ITexture, assign?: (babylonTexture: BaseTexture) => void): Promise<BaseTexture>;
|
257
252
|
/** @hidden */
|
258
|
-
_createTextureAsync(context: string, sampler: ISampler, image: IImage, assign?: (babylonTexture: BaseTexture) => void, textureLoaderOptions?: any): Promise<BaseTexture>;
|
253
|
+
_createTextureAsync(context: string, sampler: ISampler, image: IImage, assign?: (babylonTexture: BaseTexture) => void, textureLoaderOptions?: any, useSRGBBuffer?: boolean): Promise<BaseTexture>;
|
259
254
|
private _loadSampler;
|
260
255
|
/**
|
261
256
|
* Loads a glTF image.
|
package/glTF/2.0/glTFLoader.js
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
import { Deferred } from "@babylonjs/core/Misc/deferred";
|
2
|
-
import { Quaternion, Vector3, Matrix } from "@babylonjs/core/Maths/math.vector";
|
3
|
-
import { Color3 } from '@babylonjs/core/Maths/math.color';
|
4
|
-
import { Tools } from "@babylonjs/core/Misc/tools";
|
5
|
-
import { Camera } from "@babylonjs/core/Cameras/camera";
|
6
|
-
import { FreeCamera } from "@babylonjs/core/Cameras/freeCamera";
|
7
|
-
import { AnimationGroup } from "@babylonjs/core/Animations/animationGroup";
|
8
|
-
import { Animation } from "@babylonjs/core/Animations/animation";
|
9
|
-
import { Bone } from "@babylonjs/core/Bones/bone";
|
10
|
-
import { Skeleton } from "@babylonjs/core/Bones/skeleton";
|
11
|
-
import { Material } from "@babylonjs/core/Materials/material";
|
12
|
-
import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial";
|
13
|
-
import { Texture } from "@babylonjs/core/Materials/Textures/texture";
|
14
|
-
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
15
|
-
import { Buffer, VertexBuffer } from "@babylonjs/core/
|
16
|
-
import { Geometry } from "@babylonjs/core/Meshes/geometry";
|
17
|
-
import { Mesh } from "@babylonjs/core/Meshes/mesh";
|
18
|
-
import { MorphTarget } from "@babylonjs/core/Morph/morphTarget";
|
19
|
-
import { MorphTargetManager } from "@babylonjs/core/Morph/morphTargetManager";
|
20
|
-
import { GLTFFileLoader, GLTFLoaderState, GLTFLoaderCoordinateSystemMode, GLTFLoaderAnimationStartMode } from "../glTFFileLoader";
|
21
|
-
import { AnimationKeyInterpolation } from '@babylonjs/core/Animations/animationKey';
|
22
|
-
import { LoadFileError } from '@babylonjs/core/Misc/fileTools';
|
23
|
-
import { Logger } from '@babylonjs/core/Misc/logger';
|
24
|
-
import { TmpVectors } from '@babylonjs/core/Maths/math.vector';
|
25
|
-
import { BoundingInfo } from '@babylonjs/core/Culling/boundingInfo';
|
26
|
-
import { StringTools } from '@babylonjs/core/Misc/stringTools';
|
1
|
+
import { Deferred } from "@babylonjs/core/Misc/deferred.js";
|
2
|
+
import { Quaternion, Vector3, Matrix } from "@babylonjs/core/Maths/math.vector.js";
|
3
|
+
import { Color3 } from '@babylonjs/core/Maths/math.color.js';
|
4
|
+
import { Tools } from "@babylonjs/core/Misc/tools.js";
|
5
|
+
import { Camera } from "@babylonjs/core/Cameras/camera.js";
|
6
|
+
import { FreeCamera } from "@babylonjs/core/Cameras/freeCamera.js";
|
7
|
+
import { AnimationGroup } from "@babylonjs/core/Animations/animationGroup.js";
|
8
|
+
import { Animation } from "@babylonjs/core/Animations/animation.js";
|
9
|
+
import { Bone } from "@babylonjs/core/Bones/bone.js";
|
10
|
+
import { Skeleton } from "@babylonjs/core/Bones/skeleton.js";
|
11
|
+
import { Material } from "@babylonjs/core/Materials/material.js";
|
12
|
+
import { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js";
|
13
|
+
import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
|
14
|
+
import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
|
15
|
+
import { Buffer, VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
16
|
+
import { Geometry } from "@babylonjs/core/Meshes/geometry.js";
|
17
|
+
import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
|
18
|
+
import { MorphTarget } from "@babylonjs/core/Morph/morphTarget.js";
|
19
|
+
import { MorphTargetManager } from "@babylonjs/core/Morph/morphTargetManager.js";
|
20
|
+
import { GLTFFileLoader, GLTFLoaderState, GLTFLoaderCoordinateSystemMode, GLTFLoaderAnimationStartMode } from "../glTFFileLoader.js";
|
21
|
+
import { AnimationKeyInterpolation } from '@babylonjs/core/Animations/animationKey.js';
|
22
|
+
import { DecodeBase64UrlToBinary, IsBase64DataUrl, LoadFileError } from '@babylonjs/core/Misc/fileTools.js';
|
23
|
+
import { Logger } from '@babylonjs/core/Misc/logger.js';
|
24
|
+
import { TmpVectors } from '@babylonjs/core/Maths/math.vector.js';
|
25
|
+
import { BoundingInfo } from '@babylonjs/core/Culling/boundingInfo.js';
|
26
|
+
import { StringTools } from '@babylonjs/core/Misc/stringTools.js';
|
27
27
|
/**
|
28
28
|
* Helper class for working with arrays when loading the glTF asset
|
29
29
|
*/
|
@@ -66,14 +66,14 @@ var GLTFLoader = /** @class */ (function () {
|
|
66
66
|
/** @hidden */
|
67
67
|
this._completePromises = new Array();
|
68
68
|
/** @hidden */
|
69
|
-
this.
|
69
|
+
this._assetContainer = null;
|
70
70
|
/** Storage */
|
71
71
|
this._babylonLights = [];
|
72
72
|
/** @hidden */
|
73
73
|
this._disableInstancedMesh = 0;
|
74
74
|
this._disposed = false;
|
75
|
-
this._state = null;
|
76
75
|
this._extensions = new Array();
|
76
|
+
this._rootBabylonMesh = null;
|
77
77
|
this._defaultBabylonMaterialData = {};
|
78
78
|
this._parent = parent;
|
79
79
|
}
|
@@ -102,16 +102,6 @@ var GLTFLoader = /** @class */ (function () {
|
|
102
102
|
delete GLTFLoader._RegisteredExtensions[name];
|
103
103
|
return true;
|
104
104
|
};
|
105
|
-
Object.defineProperty(GLTFLoader.prototype, "state", {
|
106
|
-
/**
|
107
|
-
* The loader state.
|
108
|
-
*/
|
109
|
-
get: function () {
|
110
|
-
return this._state;
|
111
|
-
},
|
112
|
-
enumerable: false,
|
113
|
-
configurable: true
|
114
|
-
});
|
115
105
|
Object.defineProperty(GLTFLoader.prototype, "gltf", {
|
116
106
|
/**
|
117
107
|
* The object that represents the glTF JSON.
|
@@ -180,12 +170,12 @@ var GLTFLoader = /** @class */ (function () {
|
|
180
170
|
this._parent.dispose();
|
181
171
|
};
|
182
172
|
/** @hidden */
|
183
|
-
GLTFLoader.prototype.importMeshAsync = function (meshesNames, scene,
|
173
|
+
GLTFLoader.prototype.importMeshAsync = function (meshesNames, scene, container, data, rootUrl, onProgress, fileName) {
|
184
174
|
var _this = this;
|
185
175
|
if (fileName === void 0) { fileName = ""; }
|
186
176
|
return Promise.resolve().then(function () {
|
187
177
|
_this._babylonScene = scene;
|
188
|
-
_this.
|
178
|
+
_this._assetContainer = container;
|
189
179
|
_this._loadData(data);
|
190
180
|
var nodes = null;
|
191
181
|
if (meshesNames) {
|
@@ -242,7 +232,7 @@ var GLTFLoader = /** @class */ (function () {
|
|
242
232
|
var loadingToCompleteCounterName = GLTFLoaderState[GLTFLoaderState.LOADING] + " => " + GLTFLoaderState[GLTFLoaderState.COMPLETE];
|
243
233
|
_this._parent._startPerformanceCounter(loadingToReadyCounterName);
|
244
234
|
_this._parent._startPerformanceCounter(loadingToCompleteCounterName);
|
245
|
-
_this._setState(GLTFLoaderState.LOADING);
|
235
|
+
_this._parent._setState(GLTFLoaderState.LOADING);
|
246
236
|
_this._extensionsOnLoading();
|
247
237
|
var promises = new Array();
|
248
238
|
// Block the marking of materials dirty until the scene is loaded.
|
@@ -276,7 +266,7 @@ var GLTFLoader = /** @class */ (function () {
|
|
276
266
|
_this._rootBabylonMesh.setEnabled(true);
|
277
267
|
}
|
278
268
|
_this._extensionsOnReady();
|
279
|
-
_this._setState(GLTFLoaderState.READY);
|
269
|
+
_this._parent._setState(GLTFLoaderState.READY);
|
280
270
|
_this._startAnimations();
|
281
271
|
return resultFunc();
|
282
272
|
});
|
@@ -286,7 +276,7 @@ var GLTFLoader = /** @class */ (function () {
|
|
286
276
|
if (!_this._disposed) {
|
287
277
|
Promise.all(_this._completePromises).then(function () {
|
288
278
|
_this._parent._endPerformanceCounter(loadingToCompleteCounterName);
|
289
|
-
_this._setState(GLTFLoaderState.COMPLETE);
|
279
|
+
_this._parent._setState(GLTFLoaderState.COMPLETE);
|
290
280
|
_this._parent.onCompleteObservable.notifyObservers(undefined);
|
291
281
|
_this._parent.onCompleteObservable.clear();
|
292
282
|
_this.dispose();
|
@@ -385,13 +375,10 @@ var GLTFLoader = /** @class */ (function () {
|
|
385
375
|
}
|
386
376
|
}
|
387
377
|
};
|
388
|
-
GLTFLoader.prototype._setState = function (state) {
|
389
|
-
this._state = state;
|
390
|
-
this.log(GLTFLoaderState[this._state]);
|
391
|
-
};
|
392
378
|
GLTFLoader.prototype._createRootNode = function () {
|
393
|
-
this._babylonScene._blockEntityCollection = this.
|
379
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
394
380
|
this._rootBabylonMesh = new Mesh("__root__", this._babylonScene);
|
381
|
+
this._rootBabylonMesh._parentContainer = this._assetContainer;
|
395
382
|
this._babylonScene._blockEntityCollection = false;
|
396
383
|
this._rootBabylonMesh.setEnabled(false);
|
397
384
|
var rootNode = {
|
@@ -484,8 +471,10 @@ var GLTFLoader = /** @class */ (function () {
|
|
484
471
|
};
|
485
472
|
GLTFLoader.prototype._getMeshes = function () {
|
486
473
|
var meshes = new Array();
|
487
|
-
// Root mesh is always first.
|
488
|
-
|
474
|
+
// Root mesh is always first, if available.
|
475
|
+
if (this._rootBabylonMesh) {
|
476
|
+
meshes.push(this._rootBabylonMesh);
|
477
|
+
}
|
489
478
|
var nodes = this._gltf.nodes;
|
490
479
|
if (nodes) {
|
491
480
|
for (var _i = 0, nodes_2 = nodes; _i < nodes_2.length; _i++) {
|
@@ -604,8 +593,9 @@ var GLTFLoader = /** @class */ (function () {
|
|
604
593
|
};
|
605
594
|
if (node.mesh == undefined) {
|
606
595
|
var nodeName = node.name || "node" + node.index;
|
607
|
-
this._babylonScene._blockEntityCollection = this.
|
596
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
608
597
|
node._babylonTransformNode = new TransformNode(nodeName, this._babylonScene);
|
598
|
+
node._babylonTransformNode._parentContainer = this._assetContainer;
|
609
599
|
this._babylonScene._blockEntityCollection = false;
|
610
600
|
loadNode(node._babylonTransformNode);
|
611
601
|
}
|
@@ -646,8 +636,9 @@ var GLTFLoader = /** @class */ (function () {
|
|
646
636
|
}));
|
647
637
|
}
|
648
638
|
else {
|
649
|
-
this._babylonScene._blockEntityCollection = this.
|
639
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
650
640
|
node._babylonTransformNode = new TransformNode(name, this._babylonScene);
|
641
|
+
node._babylonTransformNode._parentContainer = this._assetContainer;
|
651
642
|
this._babylonScene._blockEntityCollection = false;
|
652
643
|
node._primitiveBabylonMeshes = [];
|
653
644
|
for (var _i = 0, primitives_1 = primitives; _i < primitives_1.length; _i++) {
|
@@ -689,22 +680,25 @@ var GLTFLoader = /** @class */ (function () {
|
|
689
680
|
var babylonAbstractMesh;
|
690
681
|
var promise;
|
691
682
|
if (shouldInstance && primitive._instanceData) {
|
692
|
-
this._babylonScene._blockEntityCollection = this.
|
683
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
693
684
|
babylonAbstractMesh = primitive._instanceData.babylonSourceMesh.createInstance(name);
|
685
|
+
babylonAbstractMesh._parentContainer = this._assetContainer;
|
694
686
|
this._babylonScene._blockEntityCollection = false;
|
695
687
|
promise = primitive._instanceData.promise;
|
696
688
|
}
|
697
689
|
else {
|
698
690
|
var promises = new Array();
|
699
|
-
this._babylonScene._blockEntityCollection = this.
|
691
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
700
692
|
var babylonMesh_1 = new Mesh(name, this._babylonScene);
|
693
|
+
babylonMesh_1._parentContainer = this._assetContainer;
|
701
694
|
this._babylonScene._blockEntityCollection = false;
|
702
695
|
babylonMesh_1.overrideMaterialSideOrientation = this._babylonScene.useRightHandedSystem ? Material.CounterClockWiseSideOrientation : Material.ClockWiseSideOrientation;
|
703
696
|
this._createMorphTargets(context, node, mesh, primitive, babylonMesh_1);
|
704
697
|
promises.push(this._loadVertexDataAsync(context, primitive, babylonMesh_1).then(function (babylonGeometry) {
|
705
698
|
return _this._loadMorphTargetsAsync(context, primitive, babylonMesh_1, babylonGeometry).then(function () {
|
706
|
-
_this._babylonScene._blockEntityCollection = _this.
|
699
|
+
_this._babylonScene._blockEntityCollection = !!_this._assetContainer;
|
707
700
|
babylonGeometry.applyToMesh(babylonMesh_1);
|
701
|
+
babylonGeometry._parentContainer = _this._assetContainer;
|
708
702
|
_this._babylonScene._blockEntityCollection = false;
|
709
703
|
});
|
710
704
|
}));
|
@@ -775,6 +769,27 @@ var GLTFLoader = /** @class */ (function () {
|
|
775
769
|
if (babylonVertexBuffer.getKind() === VertexBuffer.PositionKind && !_this.parent.alwaysComputeBoundingBox && !babylonMesh.skeleton) {
|
776
770
|
var mmin = accessor.min, mmax = accessor.max;
|
777
771
|
if (mmin !== undefined && mmax !== undefined) {
|
772
|
+
if (accessor.normalized && accessor.componentType !== 5126 /* FLOAT */) {
|
773
|
+
var divider = 1;
|
774
|
+
switch (accessor.componentType) {
|
775
|
+
case 5120 /* BYTE */:
|
776
|
+
divider = 127.0;
|
777
|
+
break;
|
778
|
+
case 5121 /* UNSIGNED_BYTE */:
|
779
|
+
divider = 255.0;
|
780
|
+
break;
|
781
|
+
case 5122 /* SHORT */:
|
782
|
+
divider = 32767.0;
|
783
|
+
break;
|
784
|
+
case 5123 /* UNSIGNED_SHORT */:
|
785
|
+
divider = 65535.0;
|
786
|
+
break;
|
787
|
+
}
|
788
|
+
for (var i = 0; i < 3; ++i) {
|
789
|
+
mmin[i] = Math.max(mmin[i] / divider, -1.0);
|
790
|
+
mmax[i] = Math.max(mmax[i] / divider, -1.0);
|
791
|
+
}
|
792
|
+
}
|
778
793
|
var min = TmpVectors.Vector3[0], max = TmpVectors.Vector3[1];
|
779
794
|
min.copyFromFloats.apply(min, mmin);
|
780
795
|
max.copyFromFloats.apply(max, mmax);
|
@@ -796,6 +811,10 @@ var GLTFLoader = /** @class */ (function () {
|
|
796
811
|
loadAttribute("TANGENT", VertexBuffer.TangentKind);
|
797
812
|
loadAttribute("TEXCOORD_0", VertexBuffer.UVKind);
|
798
813
|
loadAttribute("TEXCOORD_1", VertexBuffer.UV2Kind);
|
814
|
+
loadAttribute("TEXCOORD_2", VertexBuffer.UV3Kind);
|
815
|
+
loadAttribute("TEXCOORD_3", VertexBuffer.UV4Kind);
|
816
|
+
loadAttribute("TEXCOORD_4", VertexBuffer.UV5Kind);
|
817
|
+
loadAttribute("TEXCOORD_5", VertexBuffer.UV6Kind);
|
799
818
|
loadAttribute("JOINTS_0", VertexBuffer.MatricesIndicesKind);
|
800
819
|
loadAttribute("WEIGHTS_0", VertexBuffer.MatricesWeightsKind);
|
801
820
|
loadAttribute("JOINTS_1", VertexBuffer.MatricesIndicesExtraKind);
|
@@ -821,6 +840,7 @@ var GLTFLoader = /** @class */ (function () {
|
|
821
840
|
}
|
822
841
|
var targetNames = mesh.extras ? mesh.extras.targetNames : null;
|
823
842
|
babylonMesh.morphTargetManager = new MorphTargetManager(babylonMesh.getScene());
|
843
|
+
babylonMesh.morphTargetManager.areUpdatesFrozen = true;
|
824
844
|
for (var index = 0; index < primitive.targets.length; index++) {
|
825
845
|
var weight = node.weights ? node.weights[index] : mesh.weights ? mesh.weights[index] : 0;
|
826
846
|
var name_4 = targetNames ? targetNames[index] : "morphTarget" + index;
|
@@ -838,7 +858,9 @@ var GLTFLoader = /** @class */ (function () {
|
|
838
858
|
var babylonMorphTarget = morphTargetManager.getTarget(index);
|
839
859
|
promises.push(this._loadMorphTargetVertexDataAsync(context + "/targets/" + index, babylonGeometry, primitive.targets[index], babylonMorphTarget));
|
840
860
|
}
|
841
|
-
return Promise.all(promises).then(function () {
|
861
|
+
return Promise.all(promises).then(function () {
|
862
|
+
morphTargetManager.areUpdatesFrozen = false;
|
863
|
+
});
|
842
864
|
};
|
843
865
|
GLTFLoader.prototype._loadMorphTargetVertexDataAsync = function (context, babylonGeometry, attributes, babylonMorphTarget) {
|
844
866
|
var _this = this;
|
@@ -930,8 +952,9 @@ var GLTFLoader = /** @class */ (function () {
|
|
930
952
|
return skin._data.promise;
|
931
953
|
}
|
932
954
|
var skeletonId = "skeleton" + skin.index;
|
933
|
-
this._babylonScene._blockEntityCollection = this.
|
955
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
934
956
|
var babylonSkeleton = new Skeleton(skin.name || skeletonId, skeletonId, this._babylonScene);
|
957
|
+
babylonSkeleton._parentContainer = this._assetContainer;
|
935
958
|
this._babylonScene._blockEntityCollection = false;
|
936
959
|
// See https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins (second implementation note)
|
937
960
|
babylonSkeleton.overrideMesh = this._rootBabylonMesh;
|
@@ -990,7 +1013,6 @@ var GLTFLoader = /** @class */ (function () {
|
|
990
1013
|
if (babylonParentBone) {
|
991
1014
|
baseMatrix.multiplyToRef(babylonParentBone.getInvertedAbsoluteTransform(), baseMatrix);
|
992
1015
|
}
|
993
|
-
babylonBone.setBindPose(baseMatrix);
|
994
1016
|
babylonBone.updateMatrix(baseMatrix, false, false);
|
995
1017
|
babylonBone._updateDifferenceMatrix(undefined, false);
|
996
1018
|
}
|
@@ -1015,8 +1037,9 @@ var GLTFLoader = /** @class */ (function () {
|
|
1015
1037
|
}
|
1016
1038
|
var promises = new Array();
|
1017
1039
|
this.logOpen(context + " " + (camera.name || ""));
|
1018
|
-
this._babylonScene._blockEntityCollection = this.
|
1040
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
1019
1041
|
var babylonCamera = new FreeCamera(camera.name || "camera" + camera.index, Vector3.Zero(), this._babylonScene, false);
|
1042
|
+
babylonCamera._parentContainer = this._assetContainer;
|
1020
1043
|
this._babylonScene._blockEntityCollection = false;
|
1021
1044
|
babylonCamera.ignoreParentScaling = true;
|
1022
1045
|
babylonCamera.rotation = new Vector3(0, Math.PI, 0);
|
@@ -1084,8 +1107,9 @@ var GLTFLoader = /** @class */ (function () {
|
|
1084
1107
|
if (promise) {
|
1085
1108
|
return promise;
|
1086
1109
|
}
|
1087
|
-
this._babylonScene._blockEntityCollection = this.
|
1110
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
1088
1111
|
var babylonAnimationGroup = new AnimationGroup(animation.name || "animation" + animation.index, this._babylonScene);
|
1112
|
+
babylonAnimationGroup._parentContainer = this._assetContainer;
|
1089
1113
|
this._babylonScene._blockEntityCollection = false;
|
1090
1114
|
animation._babylonAnimationGroup = babylonAnimationGroup;
|
1091
1115
|
var promises = new Array();
|
@@ -1441,36 +1465,33 @@ var GLTFLoader = /** @class */ (function () {
|
|
1441
1465
|
};
|
1442
1466
|
GLTFLoader.prototype._loadVertexAccessorAsync = function (context, accessor, kind) {
|
1443
1467
|
var _this = this;
|
1444
|
-
|
1445
|
-
|
1468
|
+
var _a;
|
1469
|
+
if ((_a = accessor._babylonVertexBuffer) === null || _a === void 0 ? void 0 : _a[kind]) {
|
1470
|
+
return accessor._babylonVertexBuffer[kind];
|
1446
1471
|
}
|
1447
|
-
if (accessor.
|
1448
|
-
accessor._babylonVertexBuffer =
|
1449
|
-
return new VertexBuffer(_this._babylonScene.getEngine(), data, kind, false);
|
1450
|
-
});
|
1472
|
+
if (!accessor._babylonVertexBuffer) {
|
1473
|
+
accessor._babylonVertexBuffer = {};
|
1451
1474
|
}
|
1452
|
-
|
1453
|
-
|
1454
|
-
Logger.Warn("Accessor byte offset is not a multiple of component type byte length");
|
1455
|
-
accessor._babylonVertexBuffer = this._loadFloatAccessorAsync("/accessors/" + accessor.index, accessor).then(function (data) {
|
1475
|
+
if (accessor.sparse) {
|
1476
|
+
accessor._babylonVertexBuffer[kind] = this._loadFloatAccessorAsync(context, accessor).then(function (data) {
|
1456
1477
|
return new VertexBuffer(_this._babylonScene.getEngine(), data, kind, false);
|
1457
1478
|
});
|
1458
1479
|
}
|
1459
1480
|
// Load joint indices as a float array since the shaders expect float data but glTF uses unsigned byte/short.
|
1460
1481
|
// This prevents certain platforms (e.g. D3D) from having to convert the data to float on the fly.
|
1461
1482
|
else if (kind === VertexBuffer.MatricesIndicesKind || kind === VertexBuffer.MatricesIndicesExtraKind) {
|
1462
|
-
accessor._babylonVertexBuffer = this._loadFloatAccessorAsync(
|
1483
|
+
accessor._babylonVertexBuffer[kind] = this._loadFloatAccessorAsync(context, accessor).then(function (data) {
|
1463
1484
|
return new VertexBuffer(_this._babylonScene.getEngine(), data, kind, false);
|
1464
1485
|
});
|
1465
1486
|
}
|
1466
1487
|
else {
|
1467
1488
|
var bufferView_2 = ArrayItem.Get(context + "/bufferView", this._gltf.bufferViews, accessor.bufferView);
|
1468
|
-
accessor._babylonVertexBuffer = this._loadVertexBufferViewAsync(bufferView_2, kind).then(function (babylonBuffer) {
|
1489
|
+
accessor._babylonVertexBuffer[kind] = this._loadVertexBufferViewAsync(bufferView_2, kind).then(function (babylonBuffer) {
|
1469
1490
|
var size = GLTFLoader._GetNumComponents(context, accessor.type);
|
1470
1491
|
return new VertexBuffer(_this._babylonScene.getEngine(), babylonBuffer, kind, false, false, bufferView_2.byteStride, false, accessor.byteOffset, size, accessor.componentType, accessor.normalized, true, 1, true);
|
1471
1492
|
});
|
1472
1493
|
}
|
1473
|
-
return accessor._babylonVertexBuffer;
|
1494
|
+
return accessor._babylonVertexBuffer[kind];
|
1474
1495
|
};
|
1475
1496
|
GLTFLoader.prototype._loadMaterialMetallicRoughnessPropertiesAsync = function (context, properties, babylonMaterial) {
|
1476
1497
|
if (!(babylonMaterial instanceof PBRMaterial)) {
|
@@ -1543,8 +1564,9 @@ var GLTFLoader = /** @class */ (function () {
|
|
1543
1564
|
});
|
1544
1565
|
};
|
1545
1566
|
GLTFLoader.prototype._createDefaultMaterial = function (name, babylonDrawMode) {
|
1546
|
-
this._babylonScene._blockEntityCollection = this.
|
1567
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
1547
1568
|
var babylonMaterial = new PBRMaterial(name, this._babylonScene);
|
1569
|
+
babylonMaterial._parentContainer = this._assetContainer;
|
1548
1570
|
this._babylonScene._blockEntityCollection = false;
|
1549
1571
|
// Moved to mesh so user can change materials on gltf meshes: babylonMaterial.sideOrientation = this._babylonScene.useRightHandedSystem ? Material.CounterClockWiseSideOrientation : Material.ClockWiseSideOrientation;
|
1550
1572
|
babylonMaterial.fillMode = babylonDrawMode;
|
@@ -1694,7 +1716,7 @@ var GLTFLoader = /** @class */ (function () {
|
|
1694
1716
|
return extensionPromise;
|
1695
1717
|
}
|
1696
1718
|
this.logOpen("" + context);
|
1697
|
-
if (textureInfo.texCoord >=
|
1719
|
+
if (textureInfo.texCoord >= 6) {
|
1698
1720
|
throw new Error(context + "/texCoord: Invalid value (" + textureInfo.texCoord + ")");
|
1699
1721
|
}
|
1700
1722
|
var texture = ArrayItem.Get(context + "/index", this._gltf.textures, textureInfo.index);
|
@@ -1718,27 +1740,38 @@ var GLTFLoader = /** @class */ (function () {
|
|
1718
1740
|
this.logOpen(context + " " + (texture.name || ""));
|
1719
1741
|
var sampler = (texture.sampler == undefined ? GLTFLoader.DefaultSampler : ArrayItem.Get(context + "/sampler", this._gltf.samplers, texture.sampler));
|
1720
1742
|
var image = ArrayItem.Get(context + "/source", this._gltf.images, texture.source);
|
1721
|
-
var promise = this._createTextureAsync(context, sampler, image, assign);
|
1743
|
+
var promise = this._createTextureAsync(context, sampler, image, assign, undefined, !texture._textureInfo.nonColorData);
|
1722
1744
|
this.logClose();
|
1723
1745
|
return promise;
|
1724
1746
|
};
|
1725
1747
|
/** @hidden */
|
1726
|
-
GLTFLoader.prototype._createTextureAsync = function (context, sampler, image, assign, textureLoaderOptions) {
|
1748
|
+
GLTFLoader.prototype._createTextureAsync = function (context, sampler, image, assign, textureLoaderOptions, useSRGBBuffer) {
|
1727
1749
|
var _this = this;
|
1728
1750
|
if (assign === void 0) { assign = function () { }; }
|
1729
1751
|
var samplerData = this._loadSampler("/samplers/" + sampler.index, sampler);
|
1730
1752
|
var promises = new Array();
|
1731
1753
|
var deferred = new Deferred();
|
1732
|
-
this._babylonScene._blockEntityCollection = this.
|
1733
|
-
var
|
1734
|
-
|
1735
|
-
|
1736
|
-
|
1737
|
-
|
1738
|
-
|
1739
|
-
|
1740
|
-
|
1741
|
-
|
1754
|
+
this._babylonScene._blockEntityCollection = !!this._assetContainer;
|
1755
|
+
var textureCreationOptions = {
|
1756
|
+
noMipmap: samplerData.noMipMaps,
|
1757
|
+
invertY: false,
|
1758
|
+
samplingMode: samplerData.samplingMode,
|
1759
|
+
onLoad: function () {
|
1760
|
+
if (!_this._disposed) {
|
1761
|
+
deferred.resolve();
|
1762
|
+
}
|
1763
|
+
},
|
1764
|
+
onError: function (message, exception) {
|
1765
|
+
if (!_this._disposed) {
|
1766
|
+
deferred.reject(new Error(context + ": " + ((exception && exception.message) ? exception.message : message || "Failed to load texture")));
|
1767
|
+
}
|
1768
|
+
},
|
1769
|
+
mimeType: image.mimeType,
|
1770
|
+
loaderOptions: textureLoaderOptions,
|
1771
|
+
useSRGBBuffer: !!useSRGBBuffer && this._parent.useSRGBBuffers,
|
1772
|
+
};
|
1773
|
+
var babylonTexture = new Texture(null, this._babylonScene, textureCreationOptions);
|
1774
|
+
babylonTexture._parentContainer = this._assetContainer;
|
1742
1775
|
this._babylonScene._blockEntityCollection = false;
|
1743
1776
|
promises.push(deferred.promise);
|
1744
1777
|
promises.push(this.loadImageAsync("/images/" + image.index, image).then(function (data) {
|
@@ -1800,15 +1833,15 @@ var GLTFLoader = /** @class */ (function () {
|
|
1800
1833
|
if (!GLTFLoader._ValidateUri(uri)) {
|
1801
1834
|
throw new Error(context + ": '" + uri + "' is invalid");
|
1802
1835
|
}
|
1803
|
-
if (
|
1804
|
-
var data = new Uint8Array(
|
1836
|
+
if (IsBase64DataUrl(uri)) {
|
1837
|
+
var data = new Uint8Array(DecodeBase64UrlToBinary(uri));
|
1805
1838
|
this.log(context + ": Decoded " + uri.substr(0, 64) + "... (" + data.length + " bytes)");
|
1806
1839
|
return Promise.resolve(data);
|
1807
1840
|
}
|
1808
1841
|
this.log(context + ": Loading " + uri);
|
1809
1842
|
return this._parent.preprocessUrlAsync(this._rootUrl + uri).then(function (url) {
|
1810
1843
|
return new Promise(function (resolve, reject) {
|
1811
|
-
_this._parent._loadFile(
|
1844
|
+
_this._parent._loadFile(_this._babylonScene, url, function (data) {
|
1812
1845
|
if (!_this._disposed) {
|
1813
1846
|
_this.log(context + ": Loaded " + uri + " (" + data.byteLength + " bytes)");
|
1814
1847
|
resolve(new Uint8Array(data));
|
@@ -1891,12 +1924,13 @@ var GLTFLoader = /** @class */ (function () {
|
|
1891
1924
|
var buffer = bufferView.buffer;
|
1892
1925
|
byteOffset = bufferView.byteOffset + (byteOffset || 0);
|
1893
1926
|
var constructor = GLTFLoader._GetTypedArrayConstructor(context + "/componentType", componentType);
|
1894
|
-
|
1895
|
-
|
1896
|
-
|
1897
|
-
|
1898
|
-
|
1927
|
+
var componentTypeLength = VertexBuffer.GetTypeByteLength(componentType);
|
1928
|
+
if (byteOffset % componentTypeLength !== 0) {
|
1929
|
+
// HACK: Copy the buffer if byte offset is not a multiple of component type byte length.
|
1930
|
+
Logger.Warn(context + ": Copying buffer as byte offset (" + byteOffset + ") is not a multiple of component type byte length (" + componentTypeLength + ")");
|
1931
|
+
return new constructor(buffer.slice(byteOffset, byteOffset + length * componentTypeLength), 0);
|
1899
1932
|
}
|
1933
|
+
return new constructor(buffer, byteOffset, length);
|
1900
1934
|
};
|
1901
1935
|
GLTFLoader._GetNumComponents = function (context, type) {
|
1902
1936
|
switch (type) {
|