@babylonjs/loaders 7.51.0 → 7.51.2

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 (56) hide show
  1. package/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +1 -0
  2. package/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +0 -299
  3. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js +190 -224
  4. package/glTF/2.0/Extensions/KHR_animation_pointer.data.js.map +1 -1
  5. package/glTF/2.0/Extensions/KHR_animation_pointer.js +11 -14
  6. package/glTF/2.0/Extensions/KHR_animation_pointer.js.map +1 -1
  7. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +339 -0
  8. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +1507 -0
  9. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js.map +1 -0
  10. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +33 -0
  11. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +20 -0
  12. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js.map +1 -0
  13. package/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +3 -0
  14. package/glTF/2.0/Extensions/KHR_interactivity/index.js +4 -0
  15. package/glTF/2.0/Extensions/KHR_interactivity/index.js.map +1 -0
  16. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +71 -0
  17. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +442 -0
  18. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js.map +1 -0
  19. package/glTF/2.0/Extensions/KHR_interactivity.d.ts +7 -1
  20. package/glTF/2.0/Extensions/KHR_interactivity.js +105 -7
  21. package/glTF/2.0/Extensions/KHR_interactivity.js.map +1 -1
  22. package/glTF/2.0/Extensions/KHR_node_hoverability.js +153 -0
  23. package/glTF/2.0/Extensions/KHR_node_hoverability.js.map +1 -1
  24. package/glTF/2.0/Extensions/KHR_node_selectability.d.ts +30 -0
  25. package/glTF/2.0/Extensions/KHR_node_selectability.js +123 -0
  26. package/glTF/2.0/Extensions/KHR_node_selectability.js.map +1 -0
  27. package/glTF/2.0/Extensions/KHR_node_visibility.js +25 -0
  28. package/glTF/2.0/Extensions/KHR_node_visibility.js.map +1 -1
  29. package/glTF/2.0/Extensions/gltfPathToObjectConverter.d.ts +5 -2
  30. package/glTF/2.0/Extensions/gltfPathToObjectConverter.js +26 -5
  31. package/glTF/2.0/Extensions/gltfPathToObjectConverter.js.map +1 -1
  32. package/glTF/2.0/Extensions/index.d.ts +4 -0
  33. package/glTF/2.0/Extensions/index.js +5 -0
  34. package/glTF/2.0/Extensions/index.js.map +1 -1
  35. package/glTF/2.0/Extensions/objectModelMapping.d.ts +289 -0
  36. package/glTF/2.0/Extensions/objectModelMapping.js +801 -0
  37. package/glTF/2.0/Extensions/objectModelMapping.js.map +1 -0
  38. package/glTF/2.0/glTFLoader.d.ts +4 -1
  39. package/glTF/2.0/glTFLoader.js +22 -11
  40. package/glTF/2.0/glTFLoader.js.map +1 -1
  41. package/glTF/2.0/glTFLoaderAnimation.d.ts +12 -10
  42. package/glTF/2.0/glTFLoaderAnimation.js +13 -11
  43. package/glTF/2.0/glTFLoaderAnimation.js.map +1 -1
  44. package/glTF/2.0/index.d.ts +1 -0
  45. package/glTF/2.0/index.js +1 -0
  46. package/glTF/2.0/index.js.map +1 -1
  47. package/package.json +3 -3
  48. package/glTF/2.0/Extensions/interactivityFunctions.d.ts +0 -9
  49. package/glTF/2.0/Extensions/interactivityFunctions.js +0 -198
  50. package/glTF/2.0/Extensions/interactivityFunctions.js.map +0 -1
  51. package/glTF/2.0/Extensions/interactivityPathToObjectConverter.d.ts +0 -9
  52. package/glTF/2.0/Extensions/interactivityPathToObjectConverter.js +0 -32
  53. package/glTF/2.0/Extensions/interactivityPathToObjectConverter.js.map +0 -1
  54. package/glTF/2.0/Extensions/interactivityUtils.d.ts +0 -4
  55. package/glTF/2.0/Extensions/interactivityUtils.js +0 -108
  56. package/glTF/2.0/Extensions/interactivityUtils.js.map +0 -1
@@ -1,17 +1,19 @@
1
1
  import type { IObjectInfo, IPathToObjectConverter } from "@babylonjs/core/ObjectModel/objectModelInterfaces.js";
2
2
  import type { IGLTF } from "../glTFLoaderInterfaces";
3
+ import type { IObjectAccessor } from "@babylonjs/core/FlowGraph/typeDefinitions.js";
3
4
  /**
4
5
  * A converter that takes a glTF Object Model JSON Pointer
5
6
  * and transforms it into an ObjectAccessorContainer, allowing
6
7
  * objects referenced in the glTF to be associated with their
7
8
  * respective Babylon.js objects.
8
9
  */
9
- export declare class GLTFPathToObjectConverter<T> implements IPathToObjectConverter<T> {
10
+ export declare class GLTFPathToObjectConverter<T, BabylonType, BabylonValue> implements IPathToObjectConverter<IObjectAccessor<T, BabylonType, BabylonValue>> {
10
11
  private _gltf;
11
12
  private _infoTree;
12
13
  constructor(_gltf: IGLTF, _infoTree: any);
13
14
  /**
14
15
  * The pointer string is represented by a [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901).
16
+ * See also https://github.com/KhronosGroup/glTF/blob/main/specification/2.0/ObjectModel.adoc#core-pointers
15
17
  * <animationPointer> := /<rootNode>/<assetIndex>/<propertyPath>
16
18
  * <rootNode> := "nodes" | "materials" | "meshes" | "cameras" | "extensions"
17
19
  * <assetIndex> := <digit> | <name>
@@ -23,6 +25,7 @@ export declare class GLTFPathToObjectConverter<T> implements IPathToObjectConver
23
25
  *
24
26
  * Examples:
25
27
  * - "/nodes/0/rotation"
28
+ * - "/nodes.length"
26
29
  * - "/materials/2/emissiveFactor"
27
30
  * - "/materials/2/pbrMetallicRoughness/baseColorFactor"
28
31
  * - "/materials/2/extensions/KHR_materials_emissive_strength/emissiveStrength"
@@ -30,5 +33,5 @@ export declare class GLTFPathToObjectConverter<T> implements IPathToObjectConver
30
33
  * @param path The path to convert
31
34
  * @returns The object and info associated with the path
32
35
  */
33
- convert(path: string): IObjectInfo<T>;
36
+ convert(path: string): IObjectInfo<IObjectAccessor<T, BabylonType, BabylonValue>>;
34
37
  }
@@ -11,6 +11,7 @@ export class GLTFPathToObjectConverter {
11
11
  }
12
12
  /**
13
13
  * The pointer string is represented by a [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901).
14
+ * See also https://github.com/KhronosGroup/glTF/blob/main/specification/2.0/ObjectModel.adoc#core-pointers
14
15
  * <animationPointer> := /<rootNode>/<assetIndex>/<propertyPath>
15
16
  * <rootNode> := "nodes" | "materials" | "meshes" | "cameras" | "extensions"
16
17
  * <assetIndex> := <digit> | <name>
@@ -22,6 +23,7 @@ export class GLTFPathToObjectConverter {
22
23
  *
23
24
  * Examples:
24
25
  * - "/nodes/0/rotation"
26
+ * - "/nodes.length"
25
27
  * - "/materials/2/emissiveFactor"
26
28
  * - "/materials/2/pbrMetallicRoughness/baseColorFactor"
27
29
  * - "/materials/2/extensions/KHR_materials_emissive_strength/emissiveStrength"
@@ -38,8 +40,23 @@ export class GLTFPathToObjectConverter {
38
40
  }
39
41
  const parts = path.split("/");
40
42
  parts.shift();
43
+ //if the last part has ".length" in it, separate that as an extra part
44
+ if (parts[parts.length - 1].includes(".length")) {
45
+ const lastPart = parts[parts.length - 1];
46
+ const split = lastPart.split(".");
47
+ parts.pop();
48
+ parts.push(...split);
49
+ }
50
+ let ignoreObjectTree = false;
41
51
  for (const part of parts) {
42
- if (infoTree.__array__) {
52
+ const isLength = part === "length";
53
+ if (isLength && !infoTree.__array__) {
54
+ throw new Error(`Path ${path} is invalid`);
55
+ }
56
+ if (infoTree.__ignoreObjectTree__) {
57
+ ignoreObjectTree = true;
58
+ }
59
+ if (infoTree.__array__ && !isLength) {
43
60
  infoTree = infoTree.__array__;
44
61
  }
45
62
  else {
@@ -48,11 +65,15 @@ export class GLTFPathToObjectConverter {
48
65
  throw new Error(`Path ${path} is invalid`);
49
66
  }
50
67
  }
51
- if (objectTree === undefined) {
52
- throw new Error(`Path ${path} is invalid`);
68
+ if (!ignoreObjectTree) {
69
+ if (objectTree === undefined) {
70
+ throw new Error(`Path ${path} is invalid`);
71
+ }
72
+ if (!isLength) {
73
+ objectTree = objectTree?.[part];
74
+ }
53
75
  }
54
- objectTree = objectTree[part];
55
- if (infoTree.__target__) {
76
+ if (infoTree.__target__ || isLength) {
56
77
  target = objectTree;
57
78
  }
58
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gltfPathToObjectConverter.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/gltfPathToObjectConverter.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,OAAO,yBAAyB;IAClC,YACY,KAAY,EACZ,SAAc;QADd,UAAK,GAAL,KAAK,CAAO;QACZ,cAAS,GAAT,SAAS,CAAK;IACvB,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;OAmBG;IACI,OAAO,CAAC,IAAY;QACvB,IAAI,UAAU,GAAQ,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,QAAQ,GAAQ,IAAI,CAAC,SAAS,CAAC;QACnC,IAAI,MAAM,GAAQ,SAAS,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;gBACrB,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;YACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;YAC/C,CAAC;YACD,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9B,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACtB,MAAM,GAAG,UAAU,CAAC;YACxB,CAAC;QACL,CAAC;QAED,OAAO;YACH,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,QAAQ;SACjB,CAAC;IACN,CAAC;CACJ","sourcesContent":["import type { IObjectInfo, IPathToObjectConverter } from \"core/ObjectModel/objectModelInterfaces\";\r\nimport type { IGLTF } from \"../glTFLoaderInterfaces\";\r\n\r\n/**\r\n * A converter that takes a glTF Object Model JSON Pointer\r\n * and transforms it into an ObjectAccessorContainer, allowing\r\n * objects referenced in the glTF to be associated with their\r\n * respective Babylon.js objects.\r\n */\r\nexport class GLTFPathToObjectConverter<T> implements IPathToObjectConverter<T> {\r\n public constructor(\r\n private _gltf: IGLTF,\r\n private _infoTree: any\r\n ) {}\r\n\r\n /**\r\n * The pointer string is represented by a [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901).\r\n * <animationPointer> := /<rootNode>/<assetIndex>/<propertyPath>\r\n * <rootNode> := \"nodes\" | \"materials\" | \"meshes\" | \"cameras\" | \"extensions\"\r\n * <assetIndex> := <digit> | <name>\r\n * <propertyPath> := <extensionPath> | <standardPath>\r\n * <extensionPath> := \"extensions\"/<name>/<standardPath>\r\n * <standardPath> := <name> | <name>/<standardPath>\r\n * <name> := W+\r\n * <digit> := D+\r\n *\r\n * Examples:\r\n * - \"/nodes/0/rotation\"\r\n * - \"/materials/2/emissiveFactor\"\r\n * - \"/materials/2/pbrMetallicRoughness/baseColorFactor\"\r\n * - \"/materials/2/extensions/KHR_materials_emissive_strength/emissiveStrength\"\r\n *\r\n * @param path The path to convert\r\n * @returns The object and info associated with the path\r\n */\r\n public convert(path: string): IObjectInfo<T> {\r\n let objectTree: any = this._gltf;\r\n let infoTree: any = this._infoTree;\r\n let target: any = undefined;\r\n\r\n if (!path.startsWith(\"/\")) {\r\n throw new Error(\"Path must start with a /\");\r\n }\r\n const parts = path.split(\"/\");\r\n parts.shift();\r\n\r\n for (const part of parts) {\r\n if (infoTree.__array__) {\r\n infoTree = infoTree.__array__;\r\n } else {\r\n infoTree = infoTree[part];\r\n if (!infoTree) {\r\n throw new Error(`Path ${path} is invalid`);\r\n }\r\n }\r\n if (objectTree === undefined) {\r\n throw new Error(`Path ${path} is invalid`);\r\n }\r\n objectTree = objectTree[part];\r\n\r\n if (infoTree.__target__) {\r\n target = objectTree;\r\n }\r\n }\r\n\r\n return {\r\n object: target,\r\n info: infoTree,\r\n };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"gltfPathToObjectConverter.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/gltfPathToObjectConverter.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAO,yBAAyB;IAClC,YACY,KAAY,EACZ,SAAc;QADd,UAAK,GAAL,KAAK,CAAO;QACZ,cAAS,GAAT,SAAS,CAAK;IACvB,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,OAAO,CAAC,IAAY;QACvB,IAAI,UAAU,GAAQ,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,QAAQ,GAAQ,IAAI,CAAC,SAAS,CAAC;QACnC,IAAI,MAAM,GAAQ,SAAS,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,sEAAsE;QACtE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,KAAK,CAAC,GAAG,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,KAAK,QAAQ,CAAC;YACnC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC;gBAChC,gBAAgB,GAAG,IAAI,CAAC;YAC5B,CAAC;YACD,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1B,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,UAAU,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;YACL,CAAC;YAED,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;gBAClC,MAAM,GAAG,UAAU,CAAC;YACxB,CAAC;QACL,CAAC;QAED,OAAO;YACH,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,QAAQ;SACjB,CAAC;IACN,CAAC;CACJ","sourcesContent":["import type { IObjectInfo, IPathToObjectConverter } from \"core/ObjectModel/objectModelInterfaces\";\r\nimport type { IGLTF } from \"../glTFLoaderInterfaces\";\r\nimport type { IObjectAccessor } from \"core/FlowGraph/typeDefinitions\";\r\n\r\n/**\r\n * A converter that takes a glTF Object Model JSON Pointer\r\n * and transforms it into an ObjectAccessorContainer, allowing\r\n * objects referenced in the glTF to be associated with their\r\n * respective Babylon.js objects.\r\n */\r\nexport class GLTFPathToObjectConverter<T, BabylonType, BabylonValue> implements IPathToObjectConverter<IObjectAccessor<T, BabylonType, BabylonValue>> {\r\n public constructor(\r\n private _gltf: IGLTF,\r\n private _infoTree: any\r\n ) {}\r\n\r\n /**\r\n * The pointer string is represented by a [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901).\r\n * See also https://github.com/KhronosGroup/glTF/blob/main/specification/2.0/ObjectModel.adoc#core-pointers\r\n * <animationPointer> := /<rootNode>/<assetIndex>/<propertyPath>\r\n * <rootNode> := \"nodes\" | \"materials\" | \"meshes\" | \"cameras\" | \"extensions\"\r\n * <assetIndex> := <digit> | <name>\r\n * <propertyPath> := <extensionPath> | <standardPath>\r\n * <extensionPath> := \"extensions\"/<name>/<standardPath>\r\n * <standardPath> := <name> | <name>/<standardPath>\r\n * <name> := W+\r\n * <digit> := D+\r\n *\r\n * Examples:\r\n * - \"/nodes/0/rotation\"\r\n * - \"/nodes.length\"\r\n * - \"/materials/2/emissiveFactor\"\r\n * - \"/materials/2/pbrMetallicRoughness/baseColorFactor\"\r\n * - \"/materials/2/extensions/KHR_materials_emissive_strength/emissiveStrength\"\r\n *\r\n * @param path The path to convert\r\n * @returns The object and info associated with the path\r\n */\r\n public convert(path: string): IObjectInfo<IObjectAccessor<T, BabylonType, BabylonValue>> {\r\n let objectTree: any = this._gltf;\r\n let infoTree: any = this._infoTree;\r\n let target: any = undefined;\r\n\r\n if (!path.startsWith(\"/\")) {\r\n throw new Error(\"Path must start with a /\");\r\n }\r\n const parts = path.split(\"/\");\r\n parts.shift();\r\n\r\n //if the last part has \".length\" in it, separate that as an extra part\r\n if (parts[parts.length - 1].includes(\".length\")) {\r\n const lastPart = parts[parts.length - 1];\r\n const split = lastPart.split(\".\");\r\n parts.pop();\r\n parts.push(...split);\r\n }\r\n\r\n let ignoreObjectTree = false;\r\n\r\n for (const part of parts) {\r\n const isLength = part === \"length\";\r\n if (isLength && !infoTree.__array__) {\r\n throw new Error(`Path ${path} is invalid`);\r\n }\r\n if (infoTree.__ignoreObjectTree__) {\r\n ignoreObjectTree = true;\r\n }\r\n if (infoTree.__array__ && !isLength) {\r\n infoTree = infoTree.__array__;\r\n } else {\r\n infoTree = infoTree[part];\r\n if (!infoTree) {\r\n throw new Error(`Path ${path} is invalid`);\r\n }\r\n }\r\n if (!ignoreObjectTree) {\r\n if (objectTree === undefined) {\r\n throw new Error(`Path ${path} is invalid`);\r\n }\r\n if (!isLength) {\r\n objectTree = objectTree?.[part];\r\n }\r\n }\r\n\r\n if (infoTree.__target__ || isLength) {\r\n target = objectTree;\r\n }\r\n }\r\n\r\n return {\r\n object: target,\r\n info: infoTree,\r\n };\r\n }\r\n}\r\n"]}
@@ -1,3 +1,4 @@
1
+ export * from "./objectModelMapping";
1
2
  export * from "./EXT_lights_image_based";
2
3
  export * from "./EXT_mesh_gpu_instancing";
3
4
  export * from "./EXT_meshopt_compression";
@@ -31,4 +32,7 @@ export * from "./MSFT_minecraftMesh";
31
32
  export * from "./MSFT_sRGBFactors";
32
33
  export * from "./KHR_interactivity";
33
34
  export * from "./KHR_node_visibility";
35
+ export * from "./KHR_node_selectability";
36
+ export * from "./KHR_node_hoverability";
34
37
  export * from "./ExtrasAsMetadata";
38
+ export * from "./KHR_interactivity/index";
@@ -1,3 +1,4 @@
1
+ export * from "./objectModelMapping.js";
1
2
  export * from "./EXT_lights_image_based.js";
2
3
  export * from "./EXT_mesh_gpu_instancing.js";
3
4
  export * from "./EXT_meshopt_compression.js";
@@ -31,5 +32,9 @@ export * from "./MSFT_minecraftMesh.js";
31
32
  export * from "./MSFT_sRGBFactors.js";
32
33
  export * from "./KHR_interactivity.js";
33
34
  export * from "./KHR_node_visibility.js";
35
+ export * from "./KHR_node_selectability.js";
36
+ export * from "./KHR_node_hoverability.js";
34
37
  export * from "./ExtrasAsMetadata.js";
38
+ // eslint-disable-next-line import/no-internal-modules
39
+ export * from "./KHR_interactivity/index.js";
35
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/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,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,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,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,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 \"./EXT_texture_avif\";\r\nexport * from \"./EXT_lights_ies\";\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_iridescence\";\r\nexport * from \"./KHR_materials_anisotropy\";\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_diffuse_transmission\";\r\nexport * from \"./KHR_materials_volume\";\r\nexport * from \"./KHR_materials_dispersion\";\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 \"./KHR_animation_pointer\";\r\nexport * from \"./MSFT_audio_emitter\";\r\nexport * from \"./MSFT_lod\";\r\nexport * from \"./MSFT_minecraftMesh\";\r\nexport * from \"./MSFT_sRGBFactors\";\r\nexport * from \"./KHR_interactivity\";\r\nexport * from \"./KHR_node_visibility\";\r\nexport * from \"./ExtrasAsMetadata\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,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,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,sDAAsD;AACtD,cAAc,2BAA2B,CAAC","sourcesContent":["export * from \"./objectModelMapping\";\r\nexport * 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 \"./EXT_texture_avif\";\r\nexport * from \"./EXT_lights_ies\";\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_iridescence\";\r\nexport * from \"./KHR_materials_anisotropy\";\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_diffuse_transmission\";\r\nexport * from \"./KHR_materials_volume\";\r\nexport * from \"./KHR_materials_dispersion\";\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 \"./KHR_animation_pointer\";\r\nexport * from \"./MSFT_audio_emitter\";\r\nexport * from \"./MSFT_lod\";\r\nexport * from \"./MSFT_minecraftMesh\";\r\nexport * from \"./MSFT_sRGBFactors\";\r\nexport * from \"./KHR_interactivity\";\r\nexport * from \"./KHR_node_visibility\";\r\nexport * from \"./KHR_node_selectability\";\r\nexport * from \"./KHR_node_hoverability\";\r\nexport * from \"./ExtrasAsMetadata\";\r\n// eslint-disable-next-line import/no-internal-modules\r\nexport * from \"./KHR_interactivity/index\";\r\n"]}
@@ -0,0 +1,289 @@
1
+ import type { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
2
+ import type { IAnimation, ICamera, IGLTF, IKHRLightsPunctual_Light, IMaterial, IMesh, INode } from "../glTFLoaderInterfaces";
3
+ import type { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { Matrix, Quaternion, Vector2 } from "@babylonjs/core/Maths/math.vector.js";
5
+ import type { Color3 } from "@babylonjs/core/Maths/math.color.js";
6
+ import { Color4 } from "@babylonjs/core/Maths/math.color.js";
7
+ import type { PBRMaterial } from "@babylonjs/core/Materials/PBR/pbrMaterial.js";
8
+ import type { Light } from "@babylonjs/core/Lights/light.js";
9
+ import type { Nullable } from "@babylonjs/core/types.js";
10
+ import type { IEXTLightsImageBased_LightImageBased } from "babylonjs-gltf2interface";
11
+ import type { BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture.js";
12
+ import type { IInterpolationPropertyInfo, IObjectAccessor } from "@babylonjs/core/FlowGraph/typeDefinitions.js";
13
+ import { GLTFPathToObjectConverter } from "./gltfPathToObjectConverter";
14
+ import type { AnimationGroup } from "@babylonjs/core/Animations/animationGroup.js";
15
+ import type { Mesh } from "@babylonjs/core/Meshes/mesh.js";
16
+ export interface IGLTFObjectModelTree {
17
+ cameras: IGLTFObjectModelTreeCamerasObject;
18
+ nodes: IGLTFObjectModelTreeNodesObject;
19
+ materials: IGLTFObjectModelTreeMaterialsObject;
20
+ extensions: IGLTFObjectModelTreeExtensionsObject;
21
+ animations: {
22
+ length: IObjectAccessor<IAnimation[], AnimationGroup[], number>;
23
+ __array__: {};
24
+ };
25
+ meshes: {
26
+ length: IObjectAccessor<IMesh[], (Mesh | undefined)[], number>;
27
+ __array__: {};
28
+ };
29
+ }
30
+ export interface IGLTFObjectModelTreeNodesObject<GLTFTargetType = INode, BabylonTargetType = TransformNode> {
31
+ length: IObjectAccessor<GLTFTargetType[], BabylonTargetType[], number>;
32
+ __array__: {
33
+ __target__: boolean;
34
+ translation: IObjectAccessor<GLTFTargetType, BabylonTargetType, Vector3>;
35
+ rotation: IObjectAccessor<GLTFTargetType, BabylonTargetType, Quaternion>;
36
+ scale: IObjectAccessor<GLTFTargetType, BabylonTargetType, Vector3>;
37
+ matrix: IObjectAccessor<GLTFTargetType, BabylonTargetType, Matrix>;
38
+ globalMatrix: IObjectAccessor<GLTFTargetType, BabylonTargetType, Matrix>;
39
+ weights: {
40
+ length: IObjectAccessor<GLTFTargetType, BabylonTargetType, number>;
41
+ __array__: {
42
+ __target__: boolean;
43
+ } & IObjectAccessor<GLTFTargetType, BabylonTargetType, number>;
44
+ } & IObjectAccessor<GLTFTargetType, BabylonTargetType, number[]>;
45
+ extensions: {
46
+ EXT_lights_ies?: {
47
+ multiplier: IObjectAccessor<INode, Light, number>;
48
+ color: IObjectAccessor<INode, Light, Color3>;
49
+ };
50
+ };
51
+ };
52
+ }
53
+ export interface IGLTFObjectModelTreeCamerasObject {
54
+ __array__: {
55
+ __target__: boolean;
56
+ orthographic: {
57
+ xmag: IObjectAccessor<ICamera, ICamera, Vector2>;
58
+ ymag: IObjectAccessor<ICamera, ICamera, Vector2>;
59
+ zfar: IObjectAccessor<ICamera, ICamera, number>;
60
+ znear: IObjectAccessor<ICamera, ICamera, number>;
61
+ };
62
+ perspective: {
63
+ yfov: IObjectAccessor<ICamera, ICamera, number>;
64
+ zfar: IObjectAccessor<ICamera, ICamera, number>;
65
+ znear: IObjectAccessor<ICamera, ICamera, number>;
66
+ aspectRatio: IObjectAccessor<ICamera, ICamera, Nullable<number>>;
67
+ };
68
+ };
69
+ }
70
+ export interface IGLTFObjectModelTreeMaterialsObject {
71
+ __array__: {
72
+ __target__: boolean;
73
+ pbrMetallicRoughness: {
74
+ baseColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color4>;
75
+ metallicFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<number>>;
76
+ roughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<number>>;
77
+ baseColorTexture: {
78
+ extensions: {
79
+ KHR_texture_transform: ITextureDefinition;
80
+ };
81
+ };
82
+ metallicRoughnessTexture: {
83
+ extensions: {
84
+ KHR_texture_transform: ITextureDefinition;
85
+ };
86
+ };
87
+ };
88
+ emissiveFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;
89
+ normalTexture: {
90
+ scale: IObjectAccessor<IMaterial, PBRMaterial, number>;
91
+ extensions: {
92
+ KHR_texture_transform: ITextureDefinition;
93
+ };
94
+ };
95
+ occlusionTexture: {
96
+ strength: IObjectAccessor<IMaterial, PBRMaterial, number>;
97
+ extensions: {
98
+ KHR_texture_transform: ITextureDefinition;
99
+ };
100
+ };
101
+ emissiveTexture: {
102
+ extensions: {
103
+ KHR_texture_transform: ITextureDefinition;
104
+ };
105
+ };
106
+ extensions: {
107
+ KHR_materials_anisotropy: {
108
+ anisotropyStrength: IObjectAccessor<IMaterial, PBRMaterial, number>;
109
+ anisotropyRotation: IObjectAccessor<IMaterial, PBRMaterial, number>;
110
+ anisotropyTexture: {
111
+ extensions: {
112
+ KHR_texture_transform: ITextureDefinition;
113
+ };
114
+ };
115
+ };
116
+ KHR_materials_clearcoat: {
117
+ clearcoatFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;
118
+ clearcoatRoughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;
119
+ clearcoatTexture: {
120
+ extensions: {
121
+ KHR_texture_transform: ITextureDefinition;
122
+ };
123
+ };
124
+ clearcoatNormalTexture: {
125
+ scale: IObjectAccessor<IMaterial, PBRMaterial, number>;
126
+ extensions: {
127
+ KHR_texture_transform: ITextureDefinition;
128
+ };
129
+ };
130
+ clearcoatRoughnessTexture: {
131
+ extensions: {
132
+ KHR_texture_transform: ITextureDefinition;
133
+ };
134
+ };
135
+ };
136
+ KHR_materials_dispersion: {
137
+ dispersion: IObjectAccessor<IMaterial, PBRMaterial, number>;
138
+ };
139
+ KHR_materials_emissive_strength: {
140
+ emissiveStrength: IObjectAccessor<IMaterial, PBRMaterial, number>;
141
+ };
142
+ KHR_materials_ior: {
143
+ ior: IObjectAccessor<IMaterial, PBRMaterial, number>;
144
+ };
145
+ KHR_materials_iridescence: {
146
+ iridescenceFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;
147
+ iridescenceIor: IObjectAccessor<IMaterial, PBRMaterial, number>;
148
+ iridescenceThicknessMinimum: IObjectAccessor<IMaterial, PBRMaterial, number>;
149
+ iridescenceThicknessMaximum: IObjectAccessor<IMaterial, PBRMaterial, number>;
150
+ iridescenceTexture: {
151
+ extensions: {
152
+ KHR_texture_transform: ITextureDefinition;
153
+ };
154
+ };
155
+ iridescenceThicknessTexture: {
156
+ extensions: {
157
+ KHR_texture_transform: ITextureDefinition;
158
+ };
159
+ };
160
+ };
161
+ KHR_materials_sheen: {
162
+ sheenColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;
163
+ sheenRoughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;
164
+ sheenColorTexture: {
165
+ extensions: {
166
+ KHR_texture_transform: ITextureDefinition;
167
+ };
168
+ };
169
+ sheenRoughnessTexture: {
170
+ extensions: {
171
+ KHR_texture_transform: ITextureDefinition;
172
+ };
173
+ };
174
+ };
175
+ KHR_materials_specular: {
176
+ specularFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;
177
+ specularColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;
178
+ specularTexture: {
179
+ extensions: {
180
+ KHR_texture_transform: ITextureDefinition;
181
+ };
182
+ };
183
+ specularColorTexture: {
184
+ extensions: {
185
+ KHR_texture_transform: ITextureDefinition;
186
+ };
187
+ };
188
+ };
189
+ KHR_materials_transmission: {
190
+ transmissionFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;
191
+ transmissionTexture: {
192
+ extensions: {
193
+ KHR_texture_transform: ITextureDefinition;
194
+ };
195
+ };
196
+ };
197
+ KHR_materials_diffuse_transmission: {
198
+ diffuseTransmissionFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;
199
+ diffuseTransmissionTexture: {
200
+ extensions: {
201
+ KHR_texture_transform: ITextureDefinition;
202
+ };
203
+ };
204
+ diffuseTransmissionColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<Color3>>;
205
+ diffuseTransmissionColorTexture: {
206
+ extensions: {
207
+ KHR_texture_transform: ITextureDefinition;
208
+ };
209
+ };
210
+ };
211
+ KHR_materials_volume: {
212
+ thicknessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;
213
+ attenuationColor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;
214
+ attenuationDistance: IObjectAccessor<IMaterial, PBRMaterial, number>;
215
+ thicknessTexture: {
216
+ extensions: {
217
+ KHR_texture_transform: ITextureDefinition;
218
+ };
219
+ };
220
+ };
221
+ };
222
+ };
223
+ }
224
+ interface ITextureDefinition {
225
+ offset: IObjectAccessor<IMaterial, PBRMaterial, Vector2>;
226
+ rotation: IObjectAccessor<IMaterial, PBRMaterial, number>;
227
+ scale: IObjectAccessor<IMaterial, PBRMaterial, Vector2>;
228
+ }
229
+ export interface IGLTFObjectModelTreeMeshesObject {
230
+ }
231
+ export interface IGLTFObjectModelTreeExtensionsObject {
232
+ KHR_lights_punctual: {
233
+ lights: {
234
+ length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], number>;
235
+ __array__: {
236
+ __target__: boolean;
237
+ color: IObjectAccessor<IKHRLightsPunctual_Light, Light, Color3>;
238
+ intensity: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;
239
+ range: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;
240
+ spot: {
241
+ innerConeAngle: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;
242
+ outerConeAngle: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;
243
+ };
244
+ };
245
+ };
246
+ };
247
+ EXT_lights_ies: {
248
+ lights: {
249
+ length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], number>;
250
+ };
251
+ };
252
+ EXT_lights_image_based: {
253
+ lights: {
254
+ __array__: {
255
+ __target__: boolean;
256
+ intensity: IObjectAccessor<IEXTLightsImageBased_LightImageBased, BaseTexture, number>;
257
+ rotation: IObjectAccessor<IEXTLightsImageBased_LightImageBased, BaseTexture, Quaternion>;
258
+ };
259
+ length: IObjectAccessor<IEXTLightsImageBased_LightImageBased[], BaseTexture[], number>;
260
+ };
261
+ };
262
+ }
263
+ /**
264
+ * get a path-to-object converter for the given glTF tree
265
+ * @param gltf the glTF tree to use
266
+ * @returns a path-to-object converter for the given glTF tree
267
+ */
268
+ export declare function GetPathToObjectConverter(gltf: IGLTF): GLTFPathToObjectConverter<unknown, unknown, unknown>;
269
+ /**
270
+ * This function will return the object accessor for the given key in the object model
271
+ * If the key is not found, it will return undefined
272
+ * @param key the key to get the mapping for, for example /materials/\{\}/emissiveFactor
273
+ * @returns an object accessor for the given key, or undefined if the key is not found
274
+ */
275
+ export declare function GetMappingForKey(key: string): IObjectAccessor | undefined;
276
+ /**
277
+ * Set interpolation for a specific key in the object model
278
+ * @param key the key to set, for example /materials/\{\}/emissiveFactor
279
+ * @param interpolation the interpolation elements array
280
+ */
281
+ export declare function SetInterpolationForKey(key: string, interpolation?: IInterpolationPropertyInfo[]): void;
282
+ /**
283
+ * This will ad a new object accessor in the object model at the given key.
284
+ * Note that this will NOT change the typescript types. To do that you will need to change the interface itself (extending it in the module that uses it)
285
+ * @param key the key to add the object accessor at. For example /cameras/\{\}/perspective/aspectRatio
286
+ * @param accessor the object accessor to add
287
+ */
288
+ export declare function AddObjectAccessorToKey<GLTFTargetType = any, BabylonTargetType = any, BabylonValueType = any>(key: string, accessor: IObjectAccessor<GLTFTargetType, BabylonTargetType, BabylonValueType>): void;
289
+ export {};