@babylonjs/loaders 9.22.2 → 9.24.0

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 (80) hide show
  1. package/OBJ/objFileLoader.metadata.d.ts +5 -1
  2. package/OBJ/objFileLoader.metadata.js +4 -1
  3. package/OBJ/objFileLoader.metadata.js.map +1 -1
  4. package/OBJ/objFileLoader.pure.d.ts +12 -3
  5. package/OBJ/objFileLoader.pure.js +30 -2
  6. package/OBJ/objFileLoader.pure.js.map +1 -1
  7. package/OBJ/objLoadingOptions.d.ts +6 -0
  8. package/OBJ/objLoadingOptions.js.map +1 -1
  9. package/SPLAT/gaussianSplattingStream.d.ts +162 -15
  10. package/SPLAT/gaussianSplattingStream.js +523 -96
  11. package/SPLAT/gaussianSplattingStream.js.map +1 -1
  12. package/dynamic.js +16 -6
  13. package/dynamic.js.map +1 -1
  14. package/glTF/1.0/glTFBinaryExtension.d.ts +4 -14
  15. package/glTF/1.0/glTFBinaryExtension.js +6 -62
  16. package/glTF/1.0/glTFBinaryExtension.js.map +1 -1
  17. package/glTF/1.0/glTFBinaryExtension.pure.d.ts +21 -0
  18. package/glTF/1.0/glTFBinaryExtension.pure.js +76 -0
  19. package/glTF/1.0/glTFBinaryExtension.pure.js.map +1 -0
  20. package/glTF/1.0/glTFLoader.d.ts +3 -142
  21. package/glTF/1.0/glTFLoader.js +7 -1840
  22. package/glTF/1.0/glTFLoader.js.map +1 -1
  23. package/glTF/1.0/glTFLoader.pure.d.ts +149 -0
  24. package/glTF/1.0/glTFLoader.pure.js +1854 -0
  25. package/glTF/1.0/glTFLoader.pure.js.map +1 -0
  26. package/glTF/1.0/glTFLoaderUtils.d.ts +2 -2
  27. package/glTF/1.0/glTFLoaderUtils.js +5 -5
  28. package/glTF/1.0/glTFLoaderUtils.js.map +1 -1
  29. package/glTF/1.0/glTFMaterialsCommonExtension.d.ts +4 -11
  30. package/glTF/1.0/glTFMaterialsCommonExtension.js +6 -128
  31. package/glTF/1.0/glTFMaterialsCommonExtension.js.map +1 -1
  32. package/glTF/1.0/glTFMaterialsCommonExtension.pure.d.ts +18 -0
  33. package/glTF/1.0/glTFMaterialsCommonExtension.pure.js +142 -0
  34. package/glTF/1.0/glTFMaterialsCommonExtension.pure.js.map +1 -0
  35. package/glTF/1.0/pure.d.ts +3 -0
  36. package/glTF/1.0/pure.js +3 -0
  37. package/glTF/1.0/pure.js.map +1 -1
  38. package/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +0 -1
  39. package/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -1
  40. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js +3 -251
  41. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js.map +1 -1
  42. package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.d.ts +5 -0
  43. package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.js +267 -0
  44. package/glTF/2.0/Extensions/KHR_animation_pointer.data.pure.js.map +1 -0
  45. package/glTF/2.0/Extensions/KHR_animation_pointer.js +2 -1
  46. package/glTF/2.0/Extensions/KHR_animation_pointer.js.map +1 -1
  47. package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +5 -0
  48. package/glTF/2.0/Extensions/KHR_interactivity.pure.js +15 -4
  49. package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
  50. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +5 -0
  51. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +19 -6
  52. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -1
  53. package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +5 -0
  54. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +19 -6
  55. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -1
  56. package/glTF/2.0/Extensions/KHR_node_visibility.pure.d.ts +5 -0
  57. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js +19 -6
  58. package/glTF/2.0/Extensions/KHR_node_visibility.pure.js.map +1 -1
  59. package/glTF/2.0/Extensions/dynamic.js +59 -42
  60. package/glTF/2.0/Extensions/dynamic.js.map +1 -1
  61. package/glTF/2.0/Extensions/pure.d.ts +1 -0
  62. package/glTF/2.0/Extensions/pure.js +1 -0
  63. package/glTF/2.0/Extensions/pure.js.map +1 -1
  64. package/glTF/2.0/glTFLoader.pure.d.ts +2 -2
  65. package/glTF/2.0/glTFLoader.pure.js +6 -5
  66. package/glTF/2.0/glTFLoader.pure.js.map +1 -1
  67. package/glTF/2.0/glTFLoaderAnimation.d.ts +1 -42
  68. package/glTF/2.0/glTFLoaderAnimation.js +3 -79
  69. package/glTF/2.0/glTFLoaderAnimation.js.map +1 -1
  70. package/glTF/2.0/glTFLoaderAnimation.pure.d.ts +47 -0
  71. package/glTF/2.0/glTFLoaderAnimation.pure.js +91 -0
  72. package/glTF/2.0/glTFLoaderAnimation.pure.js.map +1 -0
  73. package/glTF/2.0/pure.d.ts +1 -0
  74. package/glTF/2.0/pure.js +1 -0
  75. package/glTF/2.0/pure.js.map +1 -1
  76. package/glTF/glTFFileLoader.pure.d.ts +8 -4
  77. package/glTF/glTFFileLoader.pure.js +13 -6
  78. package/glTF/glTFFileLoader.pure.js.map +1 -1
  79. package/package.json +3 -4
  80. /package/{bvh → BVH}/license.md +0 -0
@@ -1,131 +1,9 @@
1
- import { GLTFLoaderExtension, GLTFLoaderBase, GLTFLoader } from "./glTFLoader.js";
2
- import { Vector3 } 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 { Material } from "@babylonjs/core/Materials/material.js";
6
- import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial.js";
7
- import { HemisphericLight } from "@babylonjs/core/Lights/hemisphericLight.js";
8
- import { DirectionalLight } from "@babylonjs/core/Lights/directionalLight.js";
9
- import { PointLight } from "@babylonjs/core/Lights/pointLight.js";
10
- import { SpotLight } from "@babylonjs/core/Lights/spotLight.js";
11
1
  /**
12
- * @internal
13
- * @deprecated
2
+ * Re-exports the pure implementation and applies the runtime registration side effect.
3
+ * Import "./glTFMaterialsCommonExtension.pure" for tree-shakeable, side-effect-free usage.
14
4
  */
15
- export class GLTFMaterialsCommonExtension extends GLTFLoaderExtension {
16
- constructor() {
17
- super("KHR_materials_common");
18
- }
19
- // eslint-disable-next-line no-restricted-syntax
20
- loadRuntimeExtensionsAsync(gltfRuntime) {
21
- if (!gltfRuntime.extensions) {
22
- return false;
23
- }
24
- const extension = gltfRuntime.extensions[this.name];
25
- if (!extension) {
26
- return false;
27
- }
28
- // Create lights
29
- const lights = extension.lights;
30
- if (lights) {
31
- for (const thing in lights) {
32
- const light = lights[thing];
33
- switch (light.type) {
34
- case "ambient": {
35
- const ambientLight = new HemisphericLight(light.name, new Vector3(0, 1, 0), gltfRuntime.scene);
36
- const ambient = light.ambient;
37
- if (ambient) {
38
- ambientLight.diffuse = Color3.FromArray(ambient.color || [1, 1, 1]);
39
- }
40
- break;
41
- }
42
- case "point": {
43
- const pointLight = new PointLight(light.name, new Vector3(10, 10, 10), gltfRuntime.scene);
44
- const point = light.point;
45
- if (point) {
46
- pointLight.diffuse = Color3.FromArray(point.color || [1, 1, 1]);
47
- }
48
- break;
49
- }
50
- case "directional": {
51
- const dirLight = new DirectionalLight(light.name, new Vector3(0, -1, 0), gltfRuntime.scene);
52
- const directional = light.directional;
53
- if (directional) {
54
- dirLight.diffuse = Color3.FromArray(directional.color || [1, 1, 1]);
55
- }
56
- break;
57
- }
58
- case "spot": {
59
- const spot = light.spot;
60
- if (spot) {
61
- const spotLight = new SpotLight(light.name, new Vector3(0, 10, 0), new Vector3(0, -1, 0), spot.fallOffAngle || Math.PI, spot.fallOffExponent || 0.0, gltfRuntime.scene);
62
- spotLight.diffuse = Color3.FromArray(spot.color || [1, 1, 1]);
63
- }
64
- break;
65
- }
66
- default:
67
- Tools.Warn('GLTF Material Common extension: light type "' + light.type + "” not supported");
68
- break;
69
- }
70
- }
71
- }
72
- return false;
73
- }
74
- // eslint-disable-next-line no-restricted-syntax
75
- loadMaterialAsync(gltfRuntime, id, onSuccess, onError) {
76
- const material = gltfRuntime.materials[id];
77
- if (!material || !material.extensions) {
78
- return false;
79
- }
80
- const extension = material.extensions[this.name];
81
- if (!extension) {
82
- return false;
83
- }
84
- const standardMaterial = new StandardMaterial(id, gltfRuntime.scene);
85
- standardMaterial.sideOrientation = Material.CounterClockWiseSideOrientation;
86
- if (extension.technique === "CONSTANT") {
87
- standardMaterial.disableLighting = true;
88
- }
89
- standardMaterial.backFaceCulling = extension.doubleSided === undefined ? false : !extension.doubleSided;
90
- standardMaterial.alpha = extension.values.transparency === undefined ? 1.0 : extension.values.transparency;
91
- standardMaterial.specularPower = extension.values.shininess === undefined ? 0.0 : extension.values.shininess;
92
- // Ambient
93
- if (typeof extension.values.ambient === "string") {
94
- this._loadTexture(gltfRuntime, extension.values.ambient, standardMaterial, "ambientTexture", onError);
95
- }
96
- else {
97
- standardMaterial.ambientColor = Color3.FromArray(extension.values.ambient || [0, 0, 0]);
98
- }
99
- // Diffuse
100
- if (typeof extension.values.diffuse === "string") {
101
- this._loadTexture(gltfRuntime, extension.values.diffuse, standardMaterial, "diffuseTexture", onError);
102
- }
103
- else {
104
- standardMaterial.diffuseColor = Color3.FromArray(extension.values.diffuse || [0, 0, 0]);
105
- }
106
- // Emission
107
- if (typeof extension.values.emission === "string") {
108
- this._loadTexture(gltfRuntime, extension.values.emission, standardMaterial, "emissiveTexture", onError);
109
- }
110
- else {
111
- standardMaterial.emissiveColor = Color3.FromArray(extension.values.emission || [0, 0, 0]);
112
- }
113
- // Specular
114
- if (typeof extension.values.specular === "string") {
115
- this._loadTexture(gltfRuntime, extension.values.specular, standardMaterial, "specularTexture", onError);
116
- }
117
- else {
118
- standardMaterial.specularColor = Color3.FromArray(extension.values.specular || [0, 0, 0]);
119
- }
120
- return true;
121
- }
122
- _loadTexture(gltfRuntime, id, material, propertyPath, onError) {
123
- // Create buffer from texture url
124
- GLTFLoaderBase.LoadTextureBufferAsync(gltfRuntime, id, (buffer) => {
125
- // Create texture from buffer
126
- GLTFLoaderBase.CreateTextureAsync(gltfRuntime, id, buffer, (texture) => (material[propertyPath] = texture));
127
- }, onError);
128
- }
129
- }
130
- GLTFLoader.RegisterExtension(new GLTFMaterialsCommonExtension());
5
+ export * from "./glTFMaterialsCommonExtension.pure.js";
6
+ import "./glTFLoader.js";
7
+ import { RegisterGLTFMaterialsCommonExtension } from "./glTFMaterialsCommonExtension.pure.js";
8
+ RegisterGLTFMaterialsCommonExtension();
131
9
  //# sourceMappingURL=glTFMaterialsCommonExtension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"glTFMaterialsCommonExtension.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/1.0/glTFMaterialsCommonExtension.ts"],"names":[],"mappings":"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","sourcesContent":["import { GLTFLoaderExtension, GLTFLoaderBase, GLTFLoader } from \"./glTFLoader\";\r\n\r\nimport { type IGLTFRuntime, type IGLTFMaterial } from \"./glTFLoaderInterfaces\";\r\n\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport { Material } from \"core/Materials/material\";\r\nimport { StandardMaterial } from \"core/Materials/standardMaterial\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight\";\r\nimport { DirectionalLight } from \"core/Lights/directionalLight\";\r\nimport { PointLight } from \"core/Lights/pointLight\";\r\nimport { SpotLight } from \"core/Lights/spotLight\";\r\n\r\ninterface IGLTFMaterialsCommonExtensionValues {\r\n ambient?: number[] | string;\r\n diffuse?: number[] | string;\r\n emission?: number[] | string;\r\n specular?: number[] | string;\r\n shininess?: number;\r\n transparency?: number;\r\n}\r\n\r\ninterface IGLTFMaterialsCommonExtension {\r\n technique: string;\r\n transparent?: number;\r\n doubleSided?: boolean;\r\n values: IGLTFMaterialsCommonExtensionValues;\r\n}\r\n\r\ninterface IGLTFRuntimeCommonExtension {\r\n lights: { [key: string]: IGLTFLightCommonExtension };\r\n}\r\n\r\ninterface IGLTFLightCommonExtension {\r\n name: string;\r\n type: string;\r\n\r\n ambient?: IGLTFAmbientLightCommonExtension;\r\n point?: IGLTFPointLightCommonExtension;\r\n directional?: IGLTFDirectionalLightCommonExtension;\r\n spot?: IGLTFSpotLightCommonExtension;\r\n}\r\n\r\ninterface IGLTFPointLightCommonExtension {\r\n color: number[];\r\n constantAttenuation: number;\r\n linearAttenuation: number;\r\n quadraticAttenuation: number;\r\n}\r\n\r\ninterface IGLTFAmbientLightCommonExtension {\r\n color: number[];\r\n}\r\n\r\ninterface IGLTFDirectionalLightCommonExtension {\r\n color: number[];\r\n}\r\n\r\ninterface IGLTFSpotLightCommonExtension {\r\n color: number[];\r\n constantAttenuation: number;\r\n fallOffAngle: number;\r\n fallOffExponent: number;\r\n linearAttenuation: number;\r\n quadraticAttenuation: number;\r\n}\r\n\r\n/**\r\n * @internal\r\n * @deprecated\r\n */\r\nexport class GLTFMaterialsCommonExtension extends GLTFLoaderExtension {\r\n constructor() {\r\n super(\"KHR_materials_common\");\r\n }\r\n\r\n // eslint-disable-next-line no-restricted-syntax\r\n public override loadRuntimeExtensionsAsync(gltfRuntime: IGLTFRuntime): boolean {\r\n if (!gltfRuntime.extensions) {\r\n return false;\r\n }\r\n\r\n const extension: IGLTFRuntimeCommonExtension = gltfRuntime.extensions[this.name];\r\n if (!extension) {\r\n return false;\r\n }\r\n\r\n // Create lights\r\n const lights = extension.lights;\r\n if (lights) {\r\n for (const thing in lights) {\r\n const light: IGLTFLightCommonExtension = lights[thing];\r\n\r\n switch (light.type) {\r\n case \"ambient\": {\r\n const ambientLight = new HemisphericLight(light.name, new Vector3(0, 1, 0), gltfRuntime.scene);\r\n const ambient = light.ambient;\r\n if (ambient) {\r\n ambientLight.diffuse = Color3.FromArray(ambient.color || [1, 1, 1]);\r\n }\r\n break;\r\n }\r\n case \"point\": {\r\n const pointLight = new PointLight(light.name, new Vector3(10, 10, 10), gltfRuntime.scene);\r\n const point = light.point;\r\n if (point) {\r\n pointLight.diffuse = Color3.FromArray(point.color || [1, 1, 1]);\r\n }\r\n break;\r\n }\r\n case \"directional\": {\r\n const dirLight = new DirectionalLight(light.name, new Vector3(0, -1, 0), gltfRuntime.scene);\r\n const directional = light.directional;\r\n if (directional) {\r\n dirLight.diffuse = Color3.FromArray(directional.color || [1, 1, 1]);\r\n }\r\n break;\r\n }\r\n case \"spot\": {\r\n const spot = light.spot;\r\n if (spot) {\r\n const spotLight = new SpotLight(\r\n light.name,\r\n new Vector3(0, 10, 0),\r\n new Vector3(0, -1, 0),\r\n spot.fallOffAngle || Math.PI,\r\n spot.fallOffExponent || 0.0,\r\n gltfRuntime.scene\r\n );\r\n spotLight.diffuse = Color3.FromArray(spot.color || [1, 1, 1]);\r\n }\r\n break;\r\n }\r\n default:\r\n Tools.Warn('GLTF Material Common extension: light type \"' + light.type + \"” not supported\");\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // eslint-disable-next-line no-restricted-syntax\r\n public override loadMaterialAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (material: Material) => void, onError: (message: string) => void): boolean {\r\n const material: IGLTFMaterial = gltfRuntime.materials[id];\r\n if (!material || !material.extensions) {\r\n return false;\r\n }\r\n\r\n const extension: IGLTFMaterialsCommonExtension = material.extensions[this.name];\r\n if (!extension) {\r\n return false;\r\n }\r\n\r\n const standardMaterial = new StandardMaterial(id, gltfRuntime.scene);\r\n standardMaterial.sideOrientation = Material.CounterClockWiseSideOrientation;\r\n\r\n if (extension.technique === \"CONSTANT\") {\r\n standardMaterial.disableLighting = true;\r\n }\r\n\r\n standardMaterial.backFaceCulling = extension.doubleSided === undefined ? false : !extension.doubleSided;\r\n standardMaterial.alpha = extension.values.transparency === undefined ? 1.0 : extension.values.transparency;\r\n standardMaterial.specularPower = extension.values.shininess === undefined ? 0.0 : extension.values.shininess;\r\n\r\n // Ambient\r\n if (typeof extension.values.ambient === \"string\") {\r\n this._loadTexture(gltfRuntime, extension.values.ambient, standardMaterial, \"ambientTexture\", onError);\r\n } else {\r\n standardMaterial.ambientColor = Color3.FromArray(extension.values.ambient || [0, 0, 0]);\r\n }\r\n\r\n // Diffuse\r\n if (typeof extension.values.diffuse === \"string\") {\r\n this._loadTexture(gltfRuntime, extension.values.diffuse, standardMaterial, \"diffuseTexture\", onError);\r\n } else {\r\n standardMaterial.diffuseColor = Color3.FromArray(extension.values.diffuse || [0, 0, 0]);\r\n }\r\n\r\n // Emission\r\n if (typeof extension.values.emission === \"string\") {\r\n this._loadTexture(gltfRuntime, extension.values.emission, standardMaterial, \"emissiveTexture\", onError);\r\n } else {\r\n standardMaterial.emissiveColor = Color3.FromArray(extension.values.emission || [0, 0, 0]);\r\n }\r\n\r\n // Specular\r\n if (typeof extension.values.specular === \"string\") {\r\n this._loadTexture(gltfRuntime, extension.values.specular, standardMaterial, \"specularTexture\", onError);\r\n } else {\r\n standardMaterial.specularColor = Color3.FromArray(extension.values.specular || [0, 0, 0]);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _loadTexture(gltfRuntime: IGLTFRuntime, id: string, material: StandardMaterial, propertyPath: string, onError: (message: string) => void): void {\r\n // Create buffer from texture url\r\n GLTFLoaderBase.LoadTextureBufferAsync(\r\n gltfRuntime,\r\n id,\r\n (buffer) => {\r\n // Create texture from buffer\r\n GLTFLoaderBase.CreateTextureAsync(gltfRuntime, id, buffer, (texture) => ((<any>material)[propertyPath] = texture));\r\n },\r\n onError\r\n );\r\n }\r\n}\r\n\r\nGLTFLoader.RegisterExtension(new GLTFMaterialsCommonExtension());\r\n"]}
1
+ {"version":3,"file":"glTFMaterialsCommonExtension.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/1.0/glTFMaterialsCommonExtension.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qCAAqC,CAAC;AAEpD,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAC3F,oCAAoC,EAAE,CAAC","sourcesContent":["/**\n * Re-exports the pure implementation and applies the runtime registration side effect.\n * Import \"./glTFMaterialsCommonExtension.pure\" for tree-shakeable, side-effect-free usage.\n */\nexport * from \"./glTFMaterialsCommonExtension.pure\";\n\nimport \"./glTFLoader\";\nimport { RegisterGLTFMaterialsCommonExtension } from \"./glTFMaterialsCommonExtension.pure\";\nRegisterGLTFMaterialsCommonExtension();\n"]}
@@ -0,0 +1,18 @@
1
+ import { GLTFLoaderExtension } from "./glTFLoader.pure.js";
2
+ import { type IGLTFRuntime } from "./glTFLoaderInterfaces.js";
3
+ import { Material } from "@babylonjs/core/Materials/material.pure.js";
4
+ /**
5
+ * @internal
6
+ * @deprecated
7
+ */
8
+ export declare class GLTFMaterialsCommonExtension extends GLTFLoaderExtension {
9
+ constructor();
10
+ loadRuntimeExtensionsAsync(gltfRuntime: IGLTFRuntime): boolean;
11
+ loadMaterialAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (material: Material) => void, onError: (message: string) => void): boolean;
12
+ private _loadTexture;
13
+ }
14
+ /**
15
+ * Registers the KHR_materials_common extension.
16
+ * Safe to call multiple times; only the first call has an effect.
17
+ */
18
+ export declare function RegisterGLTFMaterialsCommonExtension(): void;
@@ -0,0 +1,142 @@
1
+ import { GLTFLoaderExtension, GLTFLoaderBase, GLTFLoader } from "./glTFLoader.pure.js";
2
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.pure.js";
3
+ import { Color3 } from "@babylonjs/core/Maths/math.color.pure.js";
4
+ import { Tools } from "@babylonjs/core/Misc/tools.pure.js";
5
+ import { Material } from "@babylonjs/core/Materials/material.pure.js";
6
+ import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial.pure.js";
7
+ import { HemisphericLight } from "@babylonjs/core/Lights/hemisphericLight.pure.js";
8
+ import { DirectionalLight } from "@babylonjs/core/Lights/directionalLight.pure.js";
9
+ import { PointLight } from "@babylonjs/core/Lights/pointLight.pure.js";
10
+ import { SpotLight } from "@babylonjs/core/Lights/spotLight.pure.js";
11
+ /**
12
+ * @internal
13
+ * @deprecated
14
+ */
15
+ export class GLTFMaterialsCommonExtension extends GLTFLoaderExtension {
16
+ constructor() {
17
+ super("KHR_materials_common");
18
+ }
19
+ // eslint-disable-next-line no-restricted-syntax
20
+ loadRuntimeExtensionsAsync(gltfRuntime) {
21
+ if (!gltfRuntime.extensions) {
22
+ return false;
23
+ }
24
+ const extension = gltfRuntime.extensions[this.name];
25
+ if (!extension) {
26
+ return false;
27
+ }
28
+ // Create lights
29
+ const lights = extension.lights;
30
+ if (lights) {
31
+ for (const thing in lights) {
32
+ const light = lights[thing];
33
+ switch (light.type) {
34
+ case "ambient": {
35
+ const ambientLight = new HemisphericLight(light.name, new Vector3(0, 1, 0), gltfRuntime.scene);
36
+ const ambient = light.ambient;
37
+ if (ambient) {
38
+ ambientLight.diffuse = Color3.FromArray(ambient.color || [1, 1, 1]);
39
+ }
40
+ break;
41
+ }
42
+ case "point": {
43
+ const pointLight = new PointLight(light.name, new Vector3(10, 10, 10), gltfRuntime.scene);
44
+ const point = light.point;
45
+ if (point) {
46
+ pointLight.diffuse = Color3.FromArray(point.color || [1, 1, 1]);
47
+ }
48
+ break;
49
+ }
50
+ case "directional": {
51
+ const dirLight = new DirectionalLight(light.name, new Vector3(0, -1, 0), gltfRuntime.scene);
52
+ const directional = light.directional;
53
+ if (directional) {
54
+ dirLight.diffuse = Color3.FromArray(directional.color || [1, 1, 1]);
55
+ }
56
+ break;
57
+ }
58
+ case "spot": {
59
+ const spot = light.spot;
60
+ if (spot) {
61
+ const spotLight = new SpotLight(light.name, new Vector3(0, 10, 0), new Vector3(0, -1, 0), spot.fallOffAngle || Math.PI, spot.fallOffExponent || 0.0, gltfRuntime.scene);
62
+ spotLight.diffuse = Color3.FromArray(spot.color || [1, 1, 1]);
63
+ }
64
+ break;
65
+ }
66
+ default:
67
+ Tools.Warn('GLTF Material Common extension: light type "' + light.type + "” not supported");
68
+ break;
69
+ }
70
+ }
71
+ }
72
+ return false;
73
+ }
74
+ // eslint-disable-next-line no-restricted-syntax
75
+ loadMaterialAsync(gltfRuntime, id, onSuccess, onError) {
76
+ const material = gltfRuntime.materials[id];
77
+ if (!material || !material.extensions) {
78
+ return false;
79
+ }
80
+ const extension = material.extensions[this.name];
81
+ if (!extension) {
82
+ return false;
83
+ }
84
+ const standardMaterial = new StandardMaterial(id, gltfRuntime.scene);
85
+ standardMaterial.sideOrientation = Material.CounterClockWiseSideOrientation;
86
+ if (extension.technique === "CONSTANT") {
87
+ standardMaterial.disableLighting = true;
88
+ }
89
+ standardMaterial.backFaceCulling = extension.doubleSided === undefined ? false : !extension.doubleSided;
90
+ standardMaterial.alpha = extension.values.transparency === undefined ? 1.0 : extension.values.transparency;
91
+ standardMaterial.specularPower = extension.values.shininess === undefined ? 0.0 : extension.values.shininess;
92
+ // Ambient
93
+ if (typeof extension.values.ambient === "string") {
94
+ this._loadTexture(gltfRuntime, extension.values.ambient, standardMaterial, "ambientTexture", onError);
95
+ }
96
+ else {
97
+ standardMaterial.ambientColor = Color3.FromArray(extension.values.ambient || [0, 0, 0]);
98
+ }
99
+ // Diffuse
100
+ if (typeof extension.values.diffuse === "string") {
101
+ this._loadTexture(gltfRuntime, extension.values.diffuse, standardMaterial, "diffuseTexture", onError);
102
+ }
103
+ else {
104
+ standardMaterial.diffuseColor = Color3.FromArray(extension.values.diffuse || [0, 0, 0]);
105
+ }
106
+ // Emission
107
+ if (typeof extension.values.emission === "string") {
108
+ this._loadTexture(gltfRuntime, extension.values.emission, standardMaterial, "emissiveTexture", onError);
109
+ }
110
+ else {
111
+ standardMaterial.emissiveColor = Color3.FromArray(extension.values.emission || [0, 0, 0]);
112
+ }
113
+ // Specular
114
+ if (typeof extension.values.specular === "string") {
115
+ this._loadTexture(gltfRuntime, extension.values.specular, standardMaterial, "specularTexture", onError);
116
+ }
117
+ else {
118
+ standardMaterial.specularColor = Color3.FromArray(extension.values.specular || [0, 0, 0]);
119
+ }
120
+ return true;
121
+ }
122
+ _loadTexture(gltfRuntime, id, material, propertyPath, onError) {
123
+ // Create buffer from texture url
124
+ GLTFLoaderBase.LoadTextureBufferAsync(gltfRuntime, id, (buffer) => {
125
+ // Create texture from buffer
126
+ GLTFLoaderBase.CreateTextureAsync(gltfRuntime, id, buffer, (texture) => (material[propertyPath] = texture));
127
+ }, onError);
128
+ }
129
+ }
130
+ let _Registered = false;
131
+ /**
132
+ * Registers the KHR_materials_common extension.
133
+ * Safe to call multiple times; only the first call has an effect.
134
+ */
135
+ export function RegisterGLTFMaterialsCommonExtension() {
136
+ if (_Registered) {
137
+ return;
138
+ }
139
+ _Registered = true;
140
+ GLTFLoader.RegisterExtension(new GLTFMaterialsCommonExtension());
141
+ }
142
+ //# sourceMappingURL=glTFMaterialsCommonExtension.pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glTFMaterialsCommonExtension.pure.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/1.0/glTFMaterialsCommonExtension.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { GLTFLoaderExtension, GLTFLoaderBase, GLTFLoader } from \"./glTFLoader.pure\";\r\n\r\nimport { type IGLTFRuntime, type IGLTFMaterial } from \"./glTFLoaderInterfaces\";\r\n\r\nimport { Vector3 } from \"core/Maths/math.vector.pure\";\r\nimport { Color3 } from \"core/Maths/math.color.pure\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { Material } from \"core/Materials/material.pure\";\r\nimport { StandardMaterial } from \"core/Materials/standardMaterial.pure\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight.pure\";\r\nimport { DirectionalLight } from \"core/Lights/directionalLight.pure\";\r\nimport { PointLight } from \"core/Lights/pointLight.pure\";\r\nimport { SpotLight } from \"core/Lights/spotLight.pure\";\r\n\r\ninterface IGLTFMaterialsCommonExtensionValues {\r\n ambient?: number[] | string;\r\n diffuse?: number[] | string;\r\n emission?: number[] | string;\r\n specular?: number[] | string;\r\n shininess?: number;\r\n transparency?: number;\r\n}\r\n\r\ninterface IGLTFMaterialsCommonExtension {\r\n technique: string;\r\n transparent?: number;\r\n doubleSided?: boolean;\r\n values: IGLTFMaterialsCommonExtensionValues;\r\n}\r\n\r\ninterface IGLTFRuntimeCommonExtension {\r\n lights: { [key: string]: IGLTFLightCommonExtension };\r\n}\r\n\r\ninterface IGLTFLightCommonExtension {\r\n name: string;\r\n type: string;\r\n\r\n ambient?: IGLTFAmbientLightCommonExtension;\r\n point?: IGLTFPointLightCommonExtension;\r\n directional?: IGLTFDirectionalLightCommonExtension;\r\n spot?: IGLTFSpotLightCommonExtension;\r\n}\r\n\r\ninterface IGLTFPointLightCommonExtension {\r\n color: number[];\r\n constantAttenuation: number;\r\n linearAttenuation: number;\r\n quadraticAttenuation: number;\r\n}\r\n\r\ninterface IGLTFAmbientLightCommonExtension {\r\n color: number[];\r\n}\r\n\r\ninterface IGLTFDirectionalLightCommonExtension {\r\n color: number[];\r\n}\r\n\r\ninterface IGLTFSpotLightCommonExtension {\r\n color: number[];\r\n constantAttenuation: number;\r\n fallOffAngle: number;\r\n fallOffExponent: number;\r\n linearAttenuation: number;\r\n quadraticAttenuation: number;\r\n}\r\n\r\n/**\r\n * @internal\r\n * @deprecated\r\n */\r\nexport class GLTFMaterialsCommonExtension extends GLTFLoaderExtension {\r\n constructor() {\r\n super(\"KHR_materials_common\");\r\n }\r\n\r\n // eslint-disable-next-line no-restricted-syntax\r\n public override loadRuntimeExtensionsAsync(gltfRuntime: IGLTFRuntime): boolean {\r\n if (!gltfRuntime.extensions) {\r\n return false;\r\n }\r\n\r\n const extension: IGLTFRuntimeCommonExtension = gltfRuntime.extensions[this.name];\r\n if (!extension) {\r\n return false;\r\n }\r\n\r\n // Create lights\r\n const lights = extension.lights;\r\n if (lights) {\r\n for (const thing in lights) {\r\n const light: IGLTFLightCommonExtension = lights[thing];\r\n\r\n switch (light.type) {\r\n case \"ambient\": {\r\n const ambientLight = new HemisphericLight(light.name, new Vector3(0, 1, 0), gltfRuntime.scene);\r\n const ambient = light.ambient;\r\n if (ambient) {\r\n ambientLight.diffuse = Color3.FromArray(ambient.color || [1, 1, 1]);\r\n }\r\n break;\r\n }\r\n case \"point\": {\r\n const pointLight = new PointLight(light.name, new Vector3(10, 10, 10), gltfRuntime.scene);\r\n const point = light.point;\r\n if (point) {\r\n pointLight.diffuse = Color3.FromArray(point.color || [1, 1, 1]);\r\n }\r\n break;\r\n }\r\n case \"directional\": {\r\n const dirLight = new DirectionalLight(light.name, new Vector3(0, -1, 0), gltfRuntime.scene);\r\n const directional = light.directional;\r\n if (directional) {\r\n dirLight.diffuse = Color3.FromArray(directional.color || [1, 1, 1]);\r\n }\r\n break;\r\n }\r\n case \"spot\": {\r\n const spot = light.spot;\r\n if (spot) {\r\n const spotLight = new SpotLight(\r\n light.name,\r\n new Vector3(0, 10, 0),\r\n new Vector3(0, -1, 0),\r\n spot.fallOffAngle || Math.PI,\r\n spot.fallOffExponent || 0.0,\r\n gltfRuntime.scene\r\n );\r\n spotLight.diffuse = Color3.FromArray(spot.color || [1, 1, 1]);\r\n }\r\n break;\r\n }\r\n default:\r\n Tools.Warn('GLTF Material Common extension: light type \"' + light.type + \"” not supported\");\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // eslint-disable-next-line no-restricted-syntax\r\n public override loadMaterialAsync(gltfRuntime: IGLTFRuntime, id: string, onSuccess: (material: Material) => void, onError: (message: string) => void): boolean {\r\n const material: IGLTFMaterial = gltfRuntime.materials[id];\r\n if (!material || !material.extensions) {\r\n return false;\r\n }\r\n\r\n const extension: IGLTFMaterialsCommonExtension = material.extensions[this.name];\r\n if (!extension) {\r\n return false;\r\n }\r\n\r\n const standardMaterial = new StandardMaterial(id, gltfRuntime.scene);\r\n standardMaterial.sideOrientation = Material.CounterClockWiseSideOrientation;\r\n\r\n if (extension.technique === \"CONSTANT\") {\r\n standardMaterial.disableLighting = true;\r\n }\r\n\r\n standardMaterial.backFaceCulling = extension.doubleSided === undefined ? false : !extension.doubleSided;\r\n standardMaterial.alpha = extension.values.transparency === undefined ? 1.0 : extension.values.transparency;\r\n standardMaterial.specularPower = extension.values.shininess === undefined ? 0.0 : extension.values.shininess;\r\n\r\n // Ambient\r\n if (typeof extension.values.ambient === \"string\") {\r\n this._loadTexture(gltfRuntime, extension.values.ambient, standardMaterial, \"ambientTexture\", onError);\r\n } else {\r\n standardMaterial.ambientColor = Color3.FromArray(extension.values.ambient || [0, 0, 0]);\r\n }\r\n\r\n // Diffuse\r\n if (typeof extension.values.diffuse === \"string\") {\r\n this._loadTexture(gltfRuntime, extension.values.diffuse, standardMaterial, \"diffuseTexture\", onError);\r\n } else {\r\n standardMaterial.diffuseColor = Color3.FromArray(extension.values.diffuse || [0, 0, 0]);\r\n }\r\n\r\n // Emission\r\n if (typeof extension.values.emission === \"string\") {\r\n this._loadTexture(gltfRuntime, extension.values.emission, standardMaterial, \"emissiveTexture\", onError);\r\n } else {\r\n standardMaterial.emissiveColor = Color3.FromArray(extension.values.emission || [0, 0, 0]);\r\n }\r\n\r\n // Specular\r\n if (typeof extension.values.specular === \"string\") {\r\n this._loadTexture(gltfRuntime, extension.values.specular, standardMaterial, \"specularTexture\", onError);\r\n } else {\r\n standardMaterial.specularColor = Color3.FromArray(extension.values.specular || [0, 0, 0]);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _loadTexture(gltfRuntime: IGLTFRuntime, id: string, material: StandardMaterial, propertyPath: string, onError: (message: string) => void): void {\r\n // Create buffer from texture url\r\n GLTFLoaderBase.LoadTextureBufferAsync(\r\n gltfRuntime,\r\n id,\r\n (buffer) => {\r\n // Create texture from buffer\r\n GLTFLoaderBase.CreateTextureAsync(gltfRuntime, id, buffer, (texture) => ((<any>material)[propertyPath] = texture));\r\n },\r\n onError\r\n );\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n\r\n/**\r\n * Registers the KHR_materials_common extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterGLTFMaterialsCommonExtension(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n GLTFLoader.RegisterExtension(new GLTFMaterialsCommonExtension());\r\n}\r\n"]}
@@ -1,3 +1,6 @@
1
1
  /** Pure barrel — re-exports only side-effect-free modules */
2
+ export * from "./glTFBinaryExtension.pure.js";
3
+ export * from "./glTFLoader.pure.js";
2
4
  export * from "./glTFLoaderInterfaces.js";
3
5
  export * from "./glTFLoaderUtils.js";
6
+ export * from "./glTFMaterialsCommonExtension.pure.js";
package/glTF/1.0/pure.js CHANGED
@@ -1,4 +1,7 @@
1
1
  /** Pure barrel — re-exports only side-effect-free modules */
2
+ export * from "./glTFBinaryExtension.pure.js";
3
+ export * from "./glTFLoader.pure.js";
2
4
  export * from "./glTFLoaderInterfaces.js";
3
5
  export * from "./glTFLoaderUtils.js";
6
+ export * from "./glTFMaterialsCommonExtension.pure.js";
4
7
  //# sourceMappingURL=pure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/1.0/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./glTFLoaderInterfaces\";\nexport * from \"./glTFLoaderUtils\";\n"]}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/loaders/src/glTF/1.0/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qCAAqC,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./glTFBinaryExtension.pure\";\nexport * from \"./glTFLoader.pure\";\nexport * from \"./glTFLoaderInterfaces\";\nexport * from \"./glTFLoaderUtils\";\nexport * from \"./glTFMaterialsCommonExtension.pure\";\n"]}
@@ -4,4 +4,3 @@
4
4
  */
5
5
  export * from "./KHR_animation_pointer.types.js";
6
6
  export * from "./KHR_animation_pointer.pure.js";
7
- import "./KHR_animation_pointer.data.js";
@@ -1 +1 @@
1
- export {};
1
+ export * from "./KHR_animation_pointer.data.pure.js";