@babylonjs/loaders 8.31.3 → 8.32.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.
@@ -1,4 +1,5 @@
1
1
  import { Vector3, Quaternion, Matrix, TmpVectors } from "@babylonjs/core/Maths/math.vector.js";
2
+ import { Logger } from "@babylonjs/core/Misc/logger.js";
2
3
  import { GLTFLoader, ArrayItem } from "../glTFLoader.js";
3
4
  import { registerGLTFExtension, unregisterGLTFExtension } from "../glTFLoaderExtensionRegistry.js";
4
5
  import "@babylonjs/core/Meshes/thinInstanceMesh.js";
@@ -55,9 +56,10 @@ export class EXT_mesh_gpu_instancing {
55
56
  loadAttribute("TRANSLATION");
56
57
  loadAttribute("ROTATION");
57
58
  loadAttribute("SCALE");
59
+ loadAttribute("_COLOR_0");
58
60
  // eslint-disable-next-line github/no-then
59
61
  return await promise.then(async (babylonTransformNode) => {
60
- const [translationBuffer, rotationBuffer, scaleBuffer] = await Promise.all(promises);
62
+ const [translationBuffer, rotationBuffer, scaleBuffer, colorBuffer] = await Promise.all(promises);
61
63
  const matrices = new Float32Array(instanceCount * 16);
62
64
  TmpVectors.Vector3[0].copyFromFloats(0, 0, 0); // translation
63
65
  TmpVectors.Quaternion[0].copyFromFloats(0, 0, 0, 1); // rotation
@@ -71,6 +73,17 @@ export class EXT_mesh_gpu_instancing {
71
73
  }
72
74
  for (const babylonMesh of node._primitiveBabylonMeshes) {
73
75
  babylonMesh.thinInstanceSetBuffer("matrix", matrices, 16, true);
76
+ if (colorBuffer) {
77
+ if (colorBuffer.length === instanceCount * 3) {
78
+ babylonMesh.thinInstanceSetBuffer("color", colorBuffer, 3, true);
79
+ }
80
+ else if (colorBuffer.length === instanceCount * 4) {
81
+ babylonMesh.thinInstanceSetBuffer("color", colorBuffer, 4, true);
82
+ }
83
+ else {
84
+ Logger.Warn("Unexpected size of _COLOR_0 attribute for mesh " + babylonMesh.name);
85
+ }
86
+ }
74
87
  }
75
88
  return babylonTransformNode;
76
89
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EXT_mesh_gpu_instancing.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector3, Quaternion, Matrix, TmpVectors } from \"core/Maths/math.vector\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { TransformNode } from \"core/Meshes/transformNode\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { GLTFLoader, ArrayItem } from \"../glTFLoader\";\r\nimport type { IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport type { INode } from \"../glTFLoaderInterfaces\";\r\nimport type { IEXTMeshGpuInstancing } from \"babylonjs-gltf2interface\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\n\r\nimport \"core/Meshes/thinInstanceMesh\";\r\n\r\nconst NAME = \"EXT_mesh_gpu_instancing\";\r\n\r\ndeclare module \"../../glTFFileLoader\" {\r\n // eslint-disable-next-line jsdoc/require-jsdoc, @typescript-eslint/naming-convention\r\n export interface GLTFLoaderExtensionOptions {\r\n /**\r\n * Defines options for the EXT_mesh_gpu_instancing extension.\r\n */\r\n // NOTE: Don't use NAME here as it will break the UMD type declarations.\r\n [\"EXT_mesh_gpu_instancing\"]: {};\r\n }\r\n}\r\n\r\n/**\r\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/README.md)\r\n * [Playground Sample](https://playground.babylonjs.com/#QFIGLW#9)\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class EXT_mesh_gpu_instancing implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _loader: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = this._loader.isExtensionUsed(NAME);\r\n }\r\n\r\n /** @internal */\r\n public dispose() {\r\n (this._loader as any) = null;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line no-restricted-syntax\r\n public loadNodeAsync(context: string, node: INode, assign: (babylonTransformNode: TransformNode) => void): Nullable<Promise<TransformNode>> {\r\n return GLTFLoader.LoadExtensionAsync<IEXTMeshGpuInstancing, TransformNode>(context, node, this.name, async (extensionContext, extension) => {\r\n this._loader._disableInstancedMesh++;\r\n\r\n const promise = this._loader.loadNodeAsync(`/nodes/${node.index}`, node, assign);\r\n\r\n this._loader._disableInstancedMesh--;\r\n\r\n if (!node._primitiveBabylonMeshes) {\r\n return await promise;\r\n }\r\n\r\n const promises = new Array<Promise<Nullable<Float32Array>>>();\r\n let instanceCount = 0;\r\n\r\n const loadAttribute = (attribute: string) => {\r\n if (extension.attributes[attribute] == undefined) {\r\n promises.push(Promise.resolve(null));\r\n return;\r\n }\r\n\r\n const accessor = ArrayItem.Get(`${extensionContext}/attributes/${attribute}`, this._loader.gltf.accessors, extension.attributes[attribute]);\r\n promises.push(this._loader._loadFloatAccessorAsync(`/accessors/${accessor.bufferView}`, accessor));\r\n\r\n if (instanceCount === 0) {\r\n instanceCount = accessor.count;\r\n } else if (instanceCount !== accessor.count) {\r\n throw new Error(`${extensionContext}/attributes: Instance buffer accessors do not have the same count.`);\r\n }\r\n };\r\n\r\n loadAttribute(\"TRANSLATION\");\r\n loadAttribute(\"ROTATION\");\r\n loadAttribute(\"SCALE\");\r\n\r\n // eslint-disable-next-line github/no-then\r\n return await promise.then(async (babylonTransformNode) => {\r\n const [translationBuffer, rotationBuffer, scaleBuffer] = await Promise.all(promises);\r\n const matrices = new Float32Array(instanceCount * 16);\r\n TmpVectors.Vector3[0].copyFromFloats(0, 0, 0); // translation\r\n TmpVectors.Quaternion[0].copyFromFloats(0, 0, 0, 1); // rotation\r\n TmpVectors.Vector3[1].copyFromFloats(1, 1, 1); // scale\r\n for (let i = 0; i < instanceCount; ++i) {\r\n translationBuffer && Vector3.FromArrayToRef(translationBuffer, i * 3, TmpVectors.Vector3[0]);\r\n rotationBuffer && Quaternion.FromArrayToRef(rotationBuffer, i * 4, TmpVectors.Quaternion[0]);\r\n scaleBuffer && Vector3.FromArrayToRef(scaleBuffer, i * 3, TmpVectors.Vector3[1]);\r\n\r\n Matrix.ComposeToRef(TmpVectors.Vector3[1], TmpVectors.Quaternion[0], TmpVectors.Vector3[0], TmpVectors.Matrix[0]);\r\n\r\n TmpVectors.Matrix[0].copyToArray(matrices, i * 16);\r\n }\r\n for (const babylonMesh of node._primitiveBabylonMeshes!) {\r\n (babylonMesh as Mesh).thinInstanceSetBuffer(\"matrix\", matrices, 16, true);\r\n }\r\n return babylonTransformNode;\r\n });\r\n });\r\n }\r\n}\r\n\r\nunregisterGLTFExtension(NAME);\r\nregisterGLTFExtension(NAME, true, (loader) => new EXT_mesh_gpu_instancing(loader));\r\n"]}
1
+ {"version":3,"file":"EXT_mesh_gpu_instancing.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector3, Quaternion, Matrix, TmpVectors } from \"core/Maths/math.vector\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { TransformNode } from \"core/Meshes/transformNode\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { GLTFLoader, ArrayItem } from \"../glTFLoader\";\r\nimport type { IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport type { INode } from \"../glTFLoaderInterfaces\";\r\nimport type { IEXTMeshGpuInstancing } from \"babylonjs-gltf2interface\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\n\r\nimport \"core/Meshes/thinInstanceMesh\";\r\n\r\nconst NAME = \"EXT_mesh_gpu_instancing\";\r\n\r\ndeclare module \"../../glTFFileLoader\" {\r\n // eslint-disable-next-line jsdoc/require-jsdoc, @typescript-eslint/naming-convention\r\n export interface GLTFLoaderExtensionOptions {\r\n /**\r\n * Defines options for the EXT_mesh_gpu_instancing extension.\r\n */\r\n // NOTE: Don't use NAME here as it will break the UMD type declarations.\r\n [\"EXT_mesh_gpu_instancing\"]: {};\r\n }\r\n}\r\n\r\n/**\r\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/EXT_mesh_gpu_instancing/README.md)\r\n * [Playground Sample](https://playground.babylonjs.com/#QFIGLW#9)\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class EXT_mesh_gpu_instancing implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _loader: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = this._loader.isExtensionUsed(NAME);\r\n }\r\n\r\n /** @internal */\r\n public dispose() {\r\n (this._loader as any) = null;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line no-restricted-syntax\r\n public loadNodeAsync(context: string, node: INode, assign: (babylonTransformNode: TransformNode) => void): Nullable<Promise<TransformNode>> {\r\n return GLTFLoader.LoadExtensionAsync<IEXTMeshGpuInstancing, TransformNode>(context, node, this.name, async (extensionContext, extension) => {\r\n this._loader._disableInstancedMesh++;\r\n\r\n const promise = this._loader.loadNodeAsync(`/nodes/${node.index}`, node, assign);\r\n\r\n this._loader._disableInstancedMesh--;\r\n\r\n if (!node._primitiveBabylonMeshes) {\r\n return await promise;\r\n }\r\n\r\n const promises = new Array<Promise<Nullable<Float32Array>>>();\r\n let instanceCount = 0;\r\n\r\n const loadAttribute = (attribute: string) => {\r\n if (extension.attributes[attribute] == undefined) {\r\n promises.push(Promise.resolve(null));\r\n return;\r\n }\r\n\r\n const accessor = ArrayItem.Get(`${extensionContext}/attributes/${attribute}`, this._loader.gltf.accessors, extension.attributes[attribute]);\r\n promises.push(this._loader._loadFloatAccessorAsync(`/accessors/${accessor.bufferView}`, accessor));\r\n\r\n if (instanceCount === 0) {\r\n instanceCount = accessor.count;\r\n } else if (instanceCount !== accessor.count) {\r\n throw new Error(`${extensionContext}/attributes: Instance buffer accessors do not have the same count.`);\r\n }\r\n };\r\n\r\n loadAttribute(\"TRANSLATION\");\r\n loadAttribute(\"ROTATION\");\r\n loadAttribute(\"SCALE\");\r\n loadAttribute(\"_COLOR_0\");\r\n\r\n // eslint-disable-next-line github/no-then\r\n return await promise.then(async (babylonTransformNode) => {\r\n const [translationBuffer, rotationBuffer, scaleBuffer, colorBuffer] = await Promise.all(promises);\r\n const matrices = new Float32Array(instanceCount * 16);\r\n TmpVectors.Vector3[0].copyFromFloats(0, 0, 0); // translation\r\n TmpVectors.Quaternion[0].copyFromFloats(0, 0, 0, 1); // rotation\r\n TmpVectors.Vector3[1].copyFromFloats(1, 1, 1); // scale\r\n for (let i = 0; i < instanceCount; ++i) {\r\n translationBuffer && Vector3.FromArrayToRef(translationBuffer, i * 3, TmpVectors.Vector3[0]);\r\n rotationBuffer && Quaternion.FromArrayToRef(rotationBuffer, i * 4, TmpVectors.Quaternion[0]);\r\n scaleBuffer && Vector3.FromArrayToRef(scaleBuffer, i * 3, TmpVectors.Vector3[1]);\r\n\r\n Matrix.ComposeToRef(TmpVectors.Vector3[1], TmpVectors.Quaternion[0], TmpVectors.Vector3[0], TmpVectors.Matrix[0]);\r\n\r\n TmpVectors.Matrix[0].copyToArray(matrices, i * 16);\r\n }\r\n for (const babylonMesh of node._primitiveBabylonMeshes!) {\r\n (babylonMesh as Mesh).thinInstanceSetBuffer(\"matrix\", matrices, 16, true);\r\n if (colorBuffer) {\r\n if (colorBuffer.length === instanceCount * 3) {\r\n (babylonMesh as Mesh).thinInstanceSetBuffer(\"color\", colorBuffer, 3, true);\r\n } else if (colorBuffer.length === instanceCount * 4) {\r\n (babylonMesh as Mesh).thinInstanceSetBuffer(\"color\", colorBuffer, 4, true);\r\n } else {\r\n Logger.Warn(\"Unexpected size of _COLOR_0 attribute for mesh \" + babylonMesh.name);\r\n }\r\n }\r\n }\r\n return babylonTransformNode;\r\n });\r\n });\r\n }\r\n}\r\n\r\nunregisterGLTFExtension(NAME);\r\nregisterGLTFExtension(NAME, true, (loader) => new EXT_mesh_gpu_instancing(loader));\r\n"]}
@@ -59,6 +59,14 @@ class LightAnimationPropertyInfo extends AnimationPropertyInfo {
59
59
  return [{ babylonAnimatable: target._babylonLight, babylonAnimation: this._buildAnimation(name, fps, keys) }];
60
60
  }
61
61
  }
62
+ class MeshAnimationPropertyInfo extends AnimationPropertyInfo {
63
+ /** @internal */
64
+ buildAnimations(target, name, fps, keys) {
65
+ return target._primitiveBabylonMeshes
66
+ ? target._primitiveBabylonMeshes.map((mesh) => ({ babylonAnimatable: mesh, babylonAnimation: this._buildAnimation(name, fps, keys) }))
67
+ : [];
68
+ }
69
+ }
62
70
  SetInterpolationForKey("/cameras/{}/orthographic/xmag", [
63
71
  new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, "orthoLeft", getMinusFloat, () => 1),
64
72
  new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, "orthoRight", getNextFloat, () => 1),
@@ -236,4 +244,5 @@ SetInterpolationForKey("/extensions/KHR_lights_punctual/lights/{}/spot/outerCone
236
244
  ]);
237
245
  SetInterpolationForKey("/nodes/{}/extensions/EXT_lights_ies/color", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, "diffuse", getColor3, () => 3)]);
238
246
  SetInterpolationForKey("/nodes/{}/extensions/EXT_lights_ies/multiplier", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, "intensity", getFloat, () => 1)]);
247
+ SetInterpolationForKey("/nodes/{}/extensions/KHR_node_visibility/visible", [new MeshAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, "isVisible", getFloat, () => 1)]);
239
248
  //# sourceMappingURL=KHR_animation_pointer.data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_animation_pointer.data.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_animation_pointer.data.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\nimport { Animation } from \"core/Animations/animation\";\r\nimport type { ICamera, IKHRLightsPunctual_Light, IMaterial } from \"../glTFLoaderInterfaces\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { AnimationPropertyInfo } from \"../glTFLoaderAnimation\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { SetInterpolationForKey } from \"./objectModelMapping\";\r\n\r\nfunction getColor3(_target: any, source: Float32Array, offset: number, scale: number): Color3 {\r\n return Color3.FromArray(source, offset).scale(scale);\r\n}\r\n\r\nfunction getAlpha(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return source[offset + 3] * scale;\r\n}\r\n\r\nfunction getFloat(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return source[offset] * scale;\r\n}\r\n\r\nfunction getMinusFloat(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return -source[offset] * scale;\r\n}\r\n\r\nfunction getNextFloat(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return source[offset + 1] * scale;\r\n}\r\n\r\nfunction getFloatBy2(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return source[offset] * scale * 2;\r\n}\r\n\r\nfunction getTextureTransformTree(textureName: string) {\r\n return {\r\n scale: [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.uScale`, getFloat, () => 2),\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.vScale`, getNextFloat, () => 2),\r\n ],\r\n offset: [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.uOffset`, getFloat, () => 2),\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.vOffset`, getNextFloat, () => 2),\r\n ],\r\n rotation: [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.wAng`, getMinusFloat, () => 1)],\r\n };\r\n}\r\n\r\nclass CameraAnimationPropertyInfo extends AnimationPropertyInfo {\r\n /** @internal */\r\n public buildAnimations(target: ICamera, name: string, fps: number, keys: any[]) {\r\n return [{ babylonAnimatable: target._babylonCamera!, babylonAnimation: this._buildAnimation(name, fps, keys) }];\r\n }\r\n}\r\n\r\nclass MaterialAnimationPropertyInfo extends AnimationPropertyInfo {\r\n /** @internal */\r\n public buildAnimations(target: IMaterial, name: string, fps: number, keys: any[]) {\r\n const babylonAnimations: { babylonAnimatable: IAnimatable; babylonAnimation: Animation }[] = [];\r\n for (const fillMode in target._data!) {\r\n babylonAnimations.push({\r\n babylonAnimatable: target._data[fillMode].babylonMaterial,\r\n babylonAnimation: this._buildAnimation(name, fps, keys),\r\n });\r\n }\r\n return babylonAnimations;\r\n }\r\n}\r\n\r\nclass LightAnimationPropertyInfo extends AnimationPropertyInfo {\r\n /** @internal */\r\n public buildAnimations(target: IKHRLightsPunctual_Light, name: string, fps: number, keys: any[]) {\r\n return [{ babylonAnimatable: target._babylonLight!, babylonAnimation: this._buildAnimation(name, fps, keys) }];\r\n }\r\n}\r\n\r\nSetInterpolationForKey(\"/cameras/{}/orthographic/xmag\", [\r\n new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"orthoLeft\", getMinusFloat, () => 1),\r\n new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"orthoRight\", getNextFloat, () => 1),\r\n]);\r\n\r\nSetInterpolationForKey(\"/cameras/{}/orthographic/ymag\", [\r\n new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"orthoBottom\", getMinusFloat, () => 1),\r\n new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"orthoTop\", getNextFloat, () => 1),\r\n]);\r\n\r\nSetInterpolationForKey(\"/cameras/{}/orthographic/zfar\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"maxZ\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/cameras/{}/orthographic/znear\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"minZ\", getFloat, () => 1)]);\r\n\r\nSetInterpolationForKey(\"/cameras/{}/perspective/yfov\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"fov\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/cameras/{}/perspective/zfar\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"maxZ\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/cameras/{}/perspective/znear\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"minZ\", getFloat, () => 1)]);\r\n\r\n// add interpolation to the materials mapping\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/baseColorFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"albedoColor\", getColor3, () => 4),\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"alpha\", getAlpha, () => 4),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/metallicFactor\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"metallic\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/metallicFactor\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"roughness\", getFloat, () => 1)]);\r\nconst baseColorTextureInterpolation = getTextureTransformTree(\"albedoTexture\");\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale\", baseColorTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset\", baseColorTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/rotation\", baseColorTextureInterpolation.rotation);\r\n\r\nconst metallicRoughnessTextureInterpolation = getTextureTransformTree(\"metallicTexture\");\r\nSetInterpolationForKey(\"//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/scale\", metallicRoughnessTextureInterpolation.scale);\r\nSetInterpolationForKey(\"//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/offset\", metallicRoughnessTextureInterpolation.offset);\r\nSetInterpolationForKey(\"//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/rotation\", metallicRoughnessTextureInterpolation.rotation);\r\n\r\nSetInterpolationForKey(\"/materials/{}/emissiveFactor\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"emissiveColor\", getColor3, () => 3)]);\r\nconst normalTextureInterpolation = getTextureTransformTree(\"bumpTexture\");\r\nSetInterpolationForKey(\"/materials/{}/normalTexture/scale\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"bumpTexture.level\", getFloat, () => 1)]);\r\n\r\nSetInterpolationForKey(\"/materials/{}/normalTexture/extensions/KHR_texture_transform/scale\", normalTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/normalTexture/extensions/KHR_texture_transform/offset\", normalTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/normalTexture/extensions/KHR_texture_transform/rotation\", normalTextureInterpolation.rotation);\r\n\r\nSetInterpolationForKey(\"/materials/{}/occlusionTexture/strength\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"ambientTextureStrength\", getFloat, () => 1)]);\r\n\r\nconst occlusionTextureInterpolation = getTextureTransformTree(\"ambientTexture\");\r\nSetInterpolationForKey(\"/materials/{}/occlusionTexture/extensions/KHR_texture_transform/scale\", occlusionTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/occlusionTexture/extensions/KHR_texture_transform/offset\", occlusionTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/occlusionTexture/extensions/KHR_texture_transform/rotation\", occlusionTextureInterpolation.rotation);\r\nconst emissiveTextureInterpolation = getTextureTransformTree(\"emissiveTexture\");\r\nSetInterpolationForKey(\"/materials/{}/emissiveTexture/extensions/KHR_texture_transform/scale\", emissiveTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/emissiveTexture/extensions/KHR_texture_transform/offset\", emissiveTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/emissiveTexture/extensions/KHR_texture_transform/rotation\", emissiveTextureInterpolation.rotation);\r\n\r\n// materials extensions\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyStrength\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"anisotropy.intensity\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyRotation\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"anisotropy.angle\", getFloat, () => 1),\r\n]);\r\nconst anisotropyTextureInterpolation = getTextureTransformTree(\"anisotropy.texture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/scale\", anisotropyTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/offset\", anisotropyTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/rotation\", anisotropyTextureInterpolation.rotation);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"clearCoat.intensity\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"clearCoat.roughness\", getFloat, () => 1),\r\n]);\r\nconst clearcoatTextureInterpolation = getTextureTransformTree(\"clearCoat.texture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/scale\", clearcoatTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/offset\", clearcoatTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/rotation\", clearcoatTextureInterpolation.rotation);\r\nconst clearcoatNormalTextureInterpolation = getTextureTransformTree(\"clearCoat.bumpTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/scale\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"clearCoat.bumpTexture.level\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/scale\", clearcoatNormalTextureInterpolation.scale);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/offset\",\r\n clearcoatNormalTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/rotation\",\r\n clearcoatNormalTextureInterpolation.rotation\r\n);\r\nconst clearcoatRoughnessTextureInterpolation = getTextureTransformTree(\"clearCoat.textureRoughness\");\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/scale\",\r\n clearcoatRoughnessTextureInterpolation.scale\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/offset\",\r\n clearcoatRoughnessTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/rotation\",\r\n clearcoatRoughnessTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_dispersion/dispersionFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.dispersion\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_emissive_strength/emissiveStrength\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"emissiveIntensity\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_ior/ior\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"indexOfRefraction\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.intensity\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceIor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.indexOfRefraction\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMinimum\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.minimumThickness\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMaximum\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.maximumThickness\", getFloat, () => 1),\r\n]);\r\n\r\nconst iridescenceTextureInterpolation = getTextureTransformTree(\"iridescence.texture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/scale\", iridescenceTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/offset\", iridescenceTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/rotation\", iridescenceTextureInterpolation.rotation);\r\n\r\nconst iridescenceThicknessTextureInterpolation = getTextureTransformTree(\"iridescence.thicknessTexture\");\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/scale\",\r\n iridescenceThicknessTextureInterpolation.scale\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/offset\",\r\n iridescenceThicknessTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/rotation\",\r\n iridescenceThicknessTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenColorFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"sheen.color\", getColor3, () => 3),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"sheen.roughness\", getFloat, () => 1),\r\n]);\r\n\r\nconst sheenTextureInterpolation = getTextureTransformTree(\"sheen.texture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/scale\", sheenTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/offset\", sheenTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/rotation\", sheenTextureInterpolation.rotation);\r\n\r\nconst sheenRoughnessTextureInterpolation = getTextureTransformTree(\"sheen.textureRoughness\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/scale\", sheenRoughnessTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/offset\", sheenRoughnessTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/rotation\", sheenRoughnessTextureInterpolation.rotation);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"metallicF0Factor\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularColorFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"metallicReflectanceColor\", getColor3, () => 3),\r\n]);\r\n\r\nconst specularTextureInterpolation = getTextureTransformTree(\"metallicReflectanceTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/scale\", specularTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/offset\", specularTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/rotation\", specularTextureInterpolation.rotation);\r\nconst specularColorTextureInterpolation = getTextureTransformTree(\"reflectanceTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/scale\", specularColorTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/offset\", specularColorTextureInterpolation.offset);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/rotation\",\r\n specularColorTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_transmission/transmissionFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.refractionIntensity\", getFloat, () => 1),\r\n]);\r\nconst transmissionTextureInterpolation = getTextureTransformTree(\"subSurface.refractionIntensityTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/scale\", transmissionTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/offset\", transmissionTextureInterpolation.offset);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/rotation\",\r\n transmissionTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/attenuationColor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"subSurface.tintColor\", getColor3, () => 3),\r\n]);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/attenuationDistance\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.tintColorAtDistance\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/thicknessFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.maximumThickness\", getFloat, () => 1),\r\n]);\r\n\r\nconst thicknessTextureInterpolation = getTextureTransformTree(\"subSurface.thicknessTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/scale\", thicknessTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/offset\", thicknessTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/rotation\", thicknessTextureInterpolation.rotation);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.translucencyIntensity\", getFloat, () => 1),\r\n]);\r\n\r\nconst diffuseTransmissionTextureInterpolation = getTextureTransformTree(\"subSurface.translucencyIntensityTexture\");\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/scale\",\r\n diffuseTransmissionTextureInterpolation.scale\r\n);\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/offset\",\r\n diffuseTransmissionTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/rotation\",\r\n diffuseTransmissionTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"subSurface.translucencyColor\", getColor3, () => 3),\r\n]);\r\n\r\nconst diffuseTransmissionColorTextureInterpolation = getTextureTransformTree(\"subSurface.translucencyColorTexture\");\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/scale\",\r\n diffuseTransmissionColorTextureInterpolation.scale\r\n);\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/offset\",\r\n diffuseTransmissionColorTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/rotation\",\r\n diffuseTransmissionColorTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/color\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"diffuse\", getColor3, () => 3)]);\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/intensity\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"intensity\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/range\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"range\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/spot/innerConeAngle\", [\r\n new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"innerAngle\", getFloatBy2, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/spot/outerConeAngle\", [\r\n new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"angle\", getFloatBy2, () => 1),\r\n]);\r\n\r\nSetInterpolationForKey(\"/nodes/{}/extensions/EXT_lights_ies/color\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"diffuse\", getColor3, () => 3)]);\r\nSetInterpolationForKey(\"/nodes/{}/extensions/EXT_lights_ies/multiplier\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"intensity\", getFloat, () => 1)]);\r\n"]}
1
+ {"version":3,"file":"KHR_animation_pointer.data.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_animation_pointer.data.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\nimport { Animation } from \"core/Animations/animation\";\r\nimport type { ICamera, IKHRLightsPunctual_Light, IMaterial, INode } from \"../glTFLoaderInterfaces\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { AnimationPropertyInfo } from \"../glTFLoaderAnimation\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { SetInterpolationForKey } from \"./objectModelMapping\";\r\n\r\nfunction getColor3(_target: any, source: Float32Array, offset: number, scale: number): Color3 {\r\n return Color3.FromArray(source, offset).scale(scale);\r\n}\r\n\r\nfunction getAlpha(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return source[offset + 3] * scale;\r\n}\r\n\r\nfunction getFloat(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return source[offset] * scale;\r\n}\r\n\r\nfunction getMinusFloat(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return -source[offset] * scale;\r\n}\r\n\r\nfunction getNextFloat(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return source[offset + 1] * scale;\r\n}\r\n\r\nfunction getFloatBy2(_target: any, source: Float32Array, offset: number, scale: number): number {\r\n return source[offset] * scale * 2;\r\n}\r\n\r\nfunction getTextureTransformTree(textureName: string) {\r\n return {\r\n scale: [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.uScale`, getFloat, () => 2),\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.vScale`, getNextFloat, () => 2),\r\n ],\r\n offset: [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.uOffset`, getFloat, () => 2),\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.vOffset`, getNextFloat, () => 2),\r\n ],\r\n rotation: [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, `${textureName}.wAng`, getMinusFloat, () => 1)],\r\n };\r\n}\r\n\r\nclass CameraAnimationPropertyInfo extends AnimationPropertyInfo {\r\n /** @internal */\r\n public buildAnimations(target: ICamera, name: string, fps: number, keys: any[]) {\r\n return [{ babylonAnimatable: target._babylonCamera!, babylonAnimation: this._buildAnimation(name, fps, keys) }];\r\n }\r\n}\r\n\r\nclass MaterialAnimationPropertyInfo extends AnimationPropertyInfo {\r\n /** @internal */\r\n public buildAnimations(target: IMaterial, name: string, fps: number, keys: any[]) {\r\n const babylonAnimations: { babylonAnimatable: IAnimatable; babylonAnimation: Animation }[] = [];\r\n for (const fillMode in target._data!) {\r\n babylonAnimations.push({\r\n babylonAnimatable: target._data[fillMode].babylonMaterial,\r\n babylonAnimation: this._buildAnimation(name, fps, keys),\r\n });\r\n }\r\n return babylonAnimations;\r\n }\r\n}\r\n\r\nclass LightAnimationPropertyInfo extends AnimationPropertyInfo {\r\n /** @internal */\r\n public buildAnimations(target: IKHRLightsPunctual_Light, name: string, fps: number, keys: any[]) {\r\n return [{ babylonAnimatable: target._babylonLight!, babylonAnimation: this._buildAnimation(name, fps, keys) }];\r\n }\r\n}\r\n\r\nclass MeshAnimationPropertyInfo extends AnimationPropertyInfo {\r\n /** @internal */\r\n public buildAnimations(target: INode, name: string, fps: number, keys: any[]) {\r\n return target._primitiveBabylonMeshes\r\n ? target._primitiveBabylonMeshes.map((mesh) => ({ babylonAnimatable: mesh, babylonAnimation: this._buildAnimation(name, fps, keys) }))\r\n : [];\r\n }\r\n}\r\n\r\nSetInterpolationForKey(\"/cameras/{}/orthographic/xmag\", [\r\n new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"orthoLeft\", getMinusFloat, () => 1),\r\n new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"orthoRight\", getNextFloat, () => 1),\r\n]);\r\n\r\nSetInterpolationForKey(\"/cameras/{}/orthographic/ymag\", [\r\n new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"orthoBottom\", getMinusFloat, () => 1),\r\n new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"orthoTop\", getNextFloat, () => 1),\r\n]);\r\n\r\nSetInterpolationForKey(\"/cameras/{}/orthographic/zfar\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"maxZ\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/cameras/{}/orthographic/znear\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"minZ\", getFloat, () => 1)]);\r\n\r\nSetInterpolationForKey(\"/cameras/{}/perspective/yfov\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"fov\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/cameras/{}/perspective/zfar\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"maxZ\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/cameras/{}/perspective/znear\", [new CameraAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"minZ\", getFloat, () => 1)]);\r\n\r\n// add interpolation to the materials mapping\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/baseColorFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"albedoColor\", getColor3, () => 4),\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"alpha\", getAlpha, () => 4),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/metallicFactor\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"metallic\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/metallicFactor\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"roughness\", getFloat, () => 1)]);\r\nconst baseColorTextureInterpolation = getTextureTransformTree(\"albedoTexture\");\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale\", baseColorTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset\", baseColorTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/rotation\", baseColorTextureInterpolation.rotation);\r\n\r\nconst metallicRoughnessTextureInterpolation = getTextureTransformTree(\"metallicTexture\");\r\nSetInterpolationForKey(\"//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/scale\", metallicRoughnessTextureInterpolation.scale);\r\nSetInterpolationForKey(\"//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/offset\", metallicRoughnessTextureInterpolation.offset);\r\nSetInterpolationForKey(\"//materials/{}/pbrMetallicRoughness/metallicRoughnessTexture/rotation\", metallicRoughnessTextureInterpolation.rotation);\r\n\r\nSetInterpolationForKey(\"/materials/{}/emissiveFactor\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"emissiveColor\", getColor3, () => 3)]);\r\nconst normalTextureInterpolation = getTextureTransformTree(\"bumpTexture\");\r\nSetInterpolationForKey(\"/materials/{}/normalTexture/scale\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"bumpTexture.level\", getFloat, () => 1)]);\r\n\r\nSetInterpolationForKey(\"/materials/{}/normalTexture/extensions/KHR_texture_transform/scale\", normalTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/normalTexture/extensions/KHR_texture_transform/offset\", normalTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/normalTexture/extensions/KHR_texture_transform/rotation\", normalTextureInterpolation.rotation);\r\n\r\nSetInterpolationForKey(\"/materials/{}/occlusionTexture/strength\", [new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"ambientTextureStrength\", getFloat, () => 1)]);\r\n\r\nconst occlusionTextureInterpolation = getTextureTransformTree(\"ambientTexture\");\r\nSetInterpolationForKey(\"/materials/{}/occlusionTexture/extensions/KHR_texture_transform/scale\", occlusionTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/occlusionTexture/extensions/KHR_texture_transform/offset\", occlusionTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/occlusionTexture/extensions/KHR_texture_transform/rotation\", occlusionTextureInterpolation.rotation);\r\nconst emissiveTextureInterpolation = getTextureTransformTree(\"emissiveTexture\");\r\nSetInterpolationForKey(\"/materials/{}/emissiveTexture/extensions/KHR_texture_transform/scale\", emissiveTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/emissiveTexture/extensions/KHR_texture_transform/offset\", emissiveTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/emissiveTexture/extensions/KHR_texture_transform/rotation\", emissiveTextureInterpolation.rotation);\r\n\r\n// materials extensions\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyStrength\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"anisotropy.intensity\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyRotation\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"anisotropy.angle\", getFloat, () => 1),\r\n]);\r\nconst anisotropyTextureInterpolation = getTextureTransformTree(\"anisotropy.texture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/scale\", anisotropyTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/offset\", anisotropyTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_anisotropy/anisotropyTexture/extensions/KHR_texture_transform/rotation\", anisotropyTextureInterpolation.rotation);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"clearCoat.intensity\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"clearCoat.roughness\", getFloat, () => 1),\r\n]);\r\nconst clearcoatTextureInterpolation = getTextureTransformTree(\"clearCoat.texture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/scale\", clearcoatTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/offset\", clearcoatTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatTexture/extensions/KHR_texture_transform/rotation\", clearcoatTextureInterpolation.rotation);\r\nconst clearcoatNormalTextureInterpolation = getTextureTransformTree(\"clearCoat.bumpTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/scale\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"clearCoat.bumpTexture.level\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/scale\", clearcoatNormalTextureInterpolation.scale);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/offset\",\r\n clearcoatNormalTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatNormalTexture/extensions/KHR_texture_transform/rotation\",\r\n clearcoatNormalTextureInterpolation.rotation\r\n);\r\nconst clearcoatRoughnessTextureInterpolation = getTextureTransformTree(\"clearCoat.textureRoughness\");\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/scale\",\r\n clearcoatRoughnessTextureInterpolation.scale\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/offset\",\r\n clearcoatRoughnessTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_clearcoat/clearcoatRoughnessTexture/extensions/KHR_texture_transform/rotation\",\r\n clearcoatRoughnessTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_dispersion/dispersionFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.dispersion\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_emissive_strength/emissiveStrength\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"emissiveIntensity\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_ior/ior\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"indexOfRefraction\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.intensity\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceIor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.indexOfRefraction\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMinimum\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.minimumThickness\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessMaximum\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"iridescence.maximumThickness\", getFloat, () => 1),\r\n]);\r\n\r\nconst iridescenceTextureInterpolation = getTextureTransformTree(\"iridescence.texture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/scale\", iridescenceTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/offset\", iridescenceTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_iridescence/iridescenceTexture/extensions/KHR_texture_transform/rotation\", iridescenceTextureInterpolation.rotation);\r\n\r\nconst iridescenceThicknessTextureInterpolation = getTextureTransformTree(\"iridescence.thicknessTexture\");\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/scale\",\r\n iridescenceThicknessTextureInterpolation.scale\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/offset\",\r\n iridescenceThicknessTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_iridescence/iridescenceThicknessTexture/extensions/KHR_texture_transform/rotation\",\r\n iridescenceThicknessTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenColorFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"sheen.color\", getColor3, () => 3),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"sheen.roughness\", getFloat, () => 1),\r\n]);\r\n\r\nconst sheenTextureInterpolation = getTextureTransformTree(\"sheen.texture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/scale\", sheenTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/offset\", sheenTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenColorTexture/extensions/KHR_texture_transform/rotation\", sheenTextureInterpolation.rotation);\r\n\r\nconst sheenRoughnessTextureInterpolation = getTextureTransformTree(\"sheen.textureRoughness\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/scale\", sheenRoughnessTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/offset\", sheenRoughnessTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_sheen/sheenRoughnessTexture/extensions/KHR_texture_transform/rotation\", sheenRoughnessTextureInterpolation.rotation);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"metallicF0Factor\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularColorFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"metallicReflectanceColor\", getColor3, () => 3),\r\n]);\r\n\r\nconst specularTextureInterpolation = getTextureTransformTree(\"metallicReflectanceTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/scale\", specularTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/offset\", specularTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularTexture/extensions/KHR_texture_transform/rotation\", specularTextureInterpolation.rotation);\r\nconst specularColorTextureInterpolation = getTextureTransformTree(\"reflectanceTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/scale\", specularColorTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/offset\", specularColorTextureInterpolation.offset);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_specular/specularColorTexture/extensions/KHR_texture_transform/rotation\",\r\n specularColorTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_transmission/transmissionFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.refractionIntensity\", getFloat, () => 1),\r\n]);\r\nconst transmissionTextureInterpolation = getTextureTransformTree(\"subSurface.refractionIntensityTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/scale\", transmissionTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/offset\", transmissionTextureInterpolation.offset);\r\nSetInterpolationForKey(\r\n \"/materials/{}/extensions/KHR_materials_transmission/transmissionTexture/extensions/KHR_texture_transform/rotation\",\r\n transmissionTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/attenuationColor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"subSurface.tintColor\", getColor3, () => 3),\r\n]);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/attenuationDistance\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.tintColorAtDistance\", getFloat, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/thicknessFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.maximumThickness\", getFloat, () => 1),\r\n]);\r\n\r\nconst thicknessTextureInterpolation = getTextureTransformTree(\"subSurface.thicknessTexture\");\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/scale\", thicknessTextureInterpolation.scale);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/offset\", thicknessTextureInterpolation.offset);\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_volume/thicknessTexture/extensions/KHR_texture_transform/rotation\", thicknessTextureInterpolation.rotation);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"subSurface.translucencyIntensity\", getFloat, () => 1),\r\n]);\r\n\r\nconst diffuseTransmissionTextureInterpolation = getTextureTransformTree(\"subSurface.translucencyIntensityTexture\");\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/scale\",\r\n diffuseTransmissionTextureInterpolation.scale\r\n);\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/offset\",\r\n diffuseTransmissionTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionTexture/extensions/KHR_texture_transform/rotation\",\r\n diffuseTransmissionTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorFactor\", [\r\n new MaterialAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"subSurface.translucencyColor\", getColor3, () => 3),\r\n]);\r\n\r\nconst diffuseTransmissionColorTextureInterpolation = getTextureTransformTree(\"subSurface.translucencyColorTexture\");\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/scale\",\r\n diffuseTransmissionColorTextureInterpolation.scale\r\n);\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/offset\",\r\n diffuseTransmissionColorTextureInterpolation.offset\r\n);\r\nSetInterpolationForKey(\r\n \"materials/{}/extensions/KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture/extensions/KHR_texture_transform/rotation\",\r\n diffuseTransmissionColorTextureInterpolation.rotation\r\n);\r\n\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/color\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"diffuse\", getColor3, () => 3)]);\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/intensity\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"intensity\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/range\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"range\", getFloat, () => 1)]);\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/spot/innerConeAngle\", [\r\n new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"innerAngle\", getFloatBy2, () => 1),\r\n]);\r\nSetInterpolationForKey(\"/extensions/KHR_lights_punctual/lights/{}/spot/outerConeAngle\", [\r\n new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"angle\", getFloatBy2, () => 1),\r\n]);\r\n\r\nSetInterpolationForKey(\"/nodes/{}/extensions/EXT_lights_ies/color\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_COLOR3, \"diffuse\", getColor3, () => 3)]);\r\nSetInterpolationForKey(\"/nodes/{}/extensions/EXT_lights_ies/multiplier\", [new LightAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"intensity\", getFloat, () => 1)]);\r\n\r\nSetInterpolationForKey(\"/nodes/{}/extensions/KHR_node_visibility/visible\", [new MeshAnimationPropertyInfo(Animation.ANIMATIONTYPE_FLOAT, \"isVisible\", getFloat, () => 1)]);\r\n"]}
@@ -20,11 +20,11 @@ export declare class KHR_node_visibility implements IGLTFLoaderExtension {
20
20
  * Defines whether this extension is enabled.
21
21
  */
22
22
  enabled: boolean;
23
- private _loader;
23
+ private _loader?;
24
24
  /**
25
25
  * @internal
26
26
  */
27
27
  constructor(loader: GLTFLoader);
28
- onReady(): Promise<void>;
28
+ onReady(): void;
29
29
  dispose(): void;
30
30
  }
@@ -41,27 +41,25 @@ export class KHR_node_visibility {
41
41
  this._loader = loader;
42
42
  this.enabled = loader.isExtensionUsed(NAME);
43
43
  }
44
- // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-misused-promises
45
- async onReady() {
46
- this._loader.gltf.nodes?.forEach((node) => {
47
- node._primitiveBabylonMeshes?.forEach((mesh) => {
48
- mesh.inheritVisibility = true;
49
- });
50
- // When the JSON Pointer is used we need to change both the transform node and the primitive meshes to the new value.
51
- if (node.extensions?.KHR_node_visibility) {
52
- if (node.extensions?.KHR_node_visibility.visible === false) {
53
- if (node._babylonTransformNode) {
54
- node._babylonTransformNode.isVisible = false;
44
+ onReady() {
45
+ if (!this._loader) {
46
+ return;
47
+ }
48
+ const nodes = this._loader.gltf.nodes;
49
+ if (nodes) {
50
+ for (const node of nodes) {
51
+ const babylonTransformNode = node._babylonTransformNode;
52
+ if (babylonTransformNode) {
53
+ babylonTransformNode.inheritVisibility = true;
54
+ if (node.extensions && node.extensions.KHR_node_visibility && node.extensions.KHR_node_visibility.visible === false) {
55
+ babylonTransformNode.isVisible = false;
55
56
  }
56
- node._primitiveBabylonMeshes?.forEach((mesh) => {
57
- mesh.isVisible = false;
58
- });
59
57
  }
60
58
  }
61
- });
59
+ }
62
60
  }
63
61
  dispose() {
64
- this._loader = null;
62
+ delete this._loader;
65
63
  }
66
64
  }
67
65
  unregisterGLTFExtension(NAME);
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_node_visibility.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_node_visibility.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,IAAI,GAAG,qBAAqB,CAAC;AAanC,wCAAwC;AACxC,sBAAsB,CAAC,kDAAkD,EAAE;IACvE,GAAG,EAAE,CAAC,IAAW,EAAE,EAAE;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,qBAA4B,CAAC;QAC7C,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC,SAAS,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,GAAG,EAAE,CAAC,KAAc,EAAE,IAAW,EAAE,EAAE;QACjC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC5B,IAAI,CAAC,qBAAsC,CAAC,SAAS,GAAG,KAAK,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IACD,SAAS,EAAE,CAAC,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB;IACtD,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;IACpC,IAAI,EAAE,SAAS;CAClB,CAAC,CAAC;AAEH;;GAEG;AACH,gEAAgE;AAChE,MAAM,OAAO,mBAAmB;IAY5B;;OAEG;IACH,YAAY,MAAkB;QAd9B;;WAEG;QACa,SAAI,GAAG,IAAI,CAAC;QAYxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,wGAAwG;IACjG,KAAK,CAAC,OAAO;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACtC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,qHAAqH;YACrH,IAAI,IAAI,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAC;gBACvC,IAAI,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;oBACzD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC5B,IAAI,CAAC,qBAAsC,CAAC,SAAS,GAAG,KAAK,CAAC;oBACnE,CAAC;oBACD,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC3B,CAAC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,OAAO;QACT,IAAI,CAAC,OAAe,GAAG,IAAI,CAAC;IACjC,CAAC;CACJ;AAED,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAC9B,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC","sourcesContent":["import type { AbstractMesh } from \"core/Meshes/abstractMesh\";\nimport type { GLTFLoader } from \"../glTFLoader\";\nimport type { IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\nimport type { INode } from \"../glTFLoaderInterfaces\";\nimport { AddObjectAccessorToKey } from \"./objectModelMapping\";\n\nconst NAME = \"KHR_node_visibility\";\n\ndeclare module \"../../glTFFileLoader\" {\n // eslint-disable-next-line jsdoc/require-jsdoc, @typescript-eslint/naming-convention\n export interface GLTFLoaderExtensionOptions {\n /**\n * Defines options for the KHR_node_visibility extension.\n */\n // NOTE: Don't use NAME here as it will break the UMD type declarations.\n [\"KHR_node_visibility\"]: {};\n }\n}\n\n// object model extension for visibility\nAddObjectAccessorToKey(\"/nodes/{}/extensions/KHR_node_visibility/visible\", {\n get: (node: INode) => {\n const tn = node._babylonTransformNode as any;\n if (tn && tn.isVisible !== undefined) {\n return tn.isVisible;\n }\n return true;\n },\n set: (value: boolean, node: INode) => {\n node._primitiveBabylonMeshes?.forEach((mesh) => {\n mesh.inheritVisibility = true;\n });\n if (node._babylonTransformNode) {\n (node._babylonTransformNode as AbstractMesh).isVisible = value;\n }\n node._primitiveBabylonMeshes?.forEach((mesh) => {\n mesh.isVisible = value;\n });\n },\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"isVisible\"],\n type: \"boolean\",\n});\n\n/**\n * Loader extension for KHR_node_visibility\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_node_visibility implements IGLTFLoaderExtension {\n /**\n * The name of this extension.\n */\n public readonly name = NAME;\n /**\n * Defines whether this extension is enabled.\n */\n public enabled: boolean;\n\n private _loader: GLTFLoader;\n\n /**\n * @internal\n */\n constructor(loader: GLTFLoader) {\n this._loader = loader;\n this.enabled = loader.isExtensionUsed(NAME);\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-misused-promises\n public async onReady(): Promise<void> {\n this._loader.gltf.nodes?.forEach((node) => {\n node._primitiveBabylonMeshes?.forEach((mesh) => {\n mesh.inheritVisibility = true;\n });\n // When the JSON Pointer is used we need to change both the transform node and the primitive meshes to the new value.\n if (node.extensions?.KHR_node_visibility) {\n if (node.extensions?.KHR_node_visibility.visible === false) {\n if (node._babylonTransformNode) {\n (node._babylonTransformNode as AbstractMesh).isVisible = false;\n }\n node._primitiveBabylonMeshes?.forEach((mesh) => {\n mesh.isVisible = false;\n });\n }\n }\n });\n }\n\n public dispose() {\n (this._loader as any) = null;\n }\n}\n\nunregisterGLTFExtension(NAME);\nregisterGLTFExtension(NAME, true, (loader) => new KHR_node_visibility(loader));\n"]}
1
+ {"version":3,"file":"KHR_node_visibility.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_node_visibility.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,IAAI,GAAG,qBAAqB,CAAC;AAanC,wCAAwC;AACxC,sBAAsB,CAAC,kDAAkD,EAAE;IACvE,GAAG,EAAE,CAAC,IAAW,EAAE,EAAE;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,qBAA4B,CAAC;QAC7C,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC,SAAS,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,GAAG,EAAE,CAAC,KAAc,EAAE,IAAW,EAAE,EAAE;QACjC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC5B,IAAI,CAAC,qBAAsC,CAAC,SAAS,GAAG,KAAK,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IACD,SAAS,EAAE,CAAC,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB;IACtD,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;IACpC,IAAI,EAAE,SAAS;CAClB,CAAC,CAAC;AAEH;;GAEG;AACH,gEAAgE;AAChE,MAAM,OAAO,mBAAmB;IAa5B;;OAEG;IACH,YAAY,MAAkB;QAf9B;;WAEG;QACa,SAAI,GAAG,IAAI,CAAC;QAaxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC;gBACxD,IAAI,oBAAoB,EAAE,CAAC;oBACvB,oBAAoB,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;wBAClH,oBAAoB,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC3C,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAED,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAC9B,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC","sourcesContent":["import type { AbstractMesh } from \"core/Meshes/abstractMesh\";\nimport type { GLTFLoader } from \"../glTFLoader\";\nimport type { IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\nimport type { INode } from \"../glTFLoaderInterfaces\";\nimport { AddObjectAccessorToKey } from \"./objectModelMapping\";\n\nconst NAME = \"KHR_node_visibility\";\n\ndeclare module \"../../glTFFileLoader\" {\n // eslint-disable-next-line jsdoc/require-jsdoc, @typescript-eslint/naming-convention\n export interface GLTFLoaderExtensionOptions {\n /**\n * Defines options for the KHR_node_visibility extension.\n */\n // NOTE: Don't use NAME here as it will break the UMD type declarations.\n [\"KHR_node_visibility\"]: {};\n }\n}\n\n// object model extension for visibility\nAddObjectAccessorToKey(\"/nodes/{}/extensions/KHR_node_visibility/visible\", {\n get: (node: INode) => {\n const tn = node._babylonTransformNode as any;\n if (tn && tn.isVisible !== undefined) {\n return tn.isVisible;\n }\n return true;\n },\n set: (value: boolean, node: INode) => {\n node._primitiveBabylonMeshes?.forEach((mesh) => {\n mesh.inheritVisibility = true;\n });\n if (node._babylonTransformNode) {\n (node._babylonTransformNode as AbstractMesh).isVisible = value;\n }\n node._primitiveBabylonMeshes?.forEach((mesh) => {\n mesh.isVisible = value;\n });\n },\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"isVisible\"],\n type: \"boolean\",\n});\n\n/**\n * Loader extension for KHR_node_visibility\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_node_visibility implements IGLTFLoaderExtension {\n /**\n * The name of this extension.\n */\n public readonly name = NAME;\n\n /**\n * Defines whether this extension is enabled.\n */\n public enabled: boolean;\n\n private _loader?: GLTFLoader;\n\n /**\n * @internal\n */\n constructor(loader: GLTFLoader) {\n this._loader = loader;\n this.enabled = loader.isExtensionUsed(NAME);\n }\n\n public onReady(): void {\n if (!this._loader) {\n return;\n }\n\n const nodes = this._loader.gltf.nodes;\n if (nodes) {\n for (const node of nodes) {\n const babylonTransformNode = node._babylonTransformNode;\n if (babylonTransformNode) {\n babylonTransformNode.inheritVisibility = true;\n if (node.extensions && node.extensions.KHR_node_visibility && node.extensions.KHR_node_visibility.visible === false) {\n babylonTransformNode.isVisible = false;\n }\n }\n }\n }\n }\n\n public dispose() {\n delete this._loader;\n }\n}\n\nunregisterGLTFExtension(NAME);\nregisterGLTFExtension(NAME, true, (loader) => new KHR_node_visibility(loader));\n"]}
@@ -47,6 +47,9 @@ export interface IGLTFObjectModelTreeNodesObject<GLTFTargetType = INode, Babylon
47
47
  multiplier: IObjectAccessor<INode, Light, number>;
48
48
  color: IObjectAccessor<INode, Light, Color3>;
49
49
  };
50
+ KHR_node_visibility?: {
51
+ visible: IObjectAccessor<INode, Mesh, boolean>;
52
+ };
50
53
  };
51
54
  };
52
55
  }
@@ -121,6 +121,20 @@ const nodesTree = {
121
121
  },
122
122
  },
123
123
  },
124
+ KHR_node_visibility: {
125
+ visible: {
126
+ type: "boolean",
127
+ get: (node) => {
128
+ return node._primitiveBabylonMeshes ? node._primitiveBabylonMeshes[0].isVisible : false;
129
+ },
130
+ getTarget: () => undefined, // TODO: what should this return?
131
+ set: (value, node) => {
132
+ if (node._primitiveBabylonMeshes) {
133
+ node._primitiveBabylonMeshes.forEach((mesh) => (mesh.isVisible = value));
134
+ }
135
+ },
136
+ },
137
+ },
124
138
  },
125
139
  },
126
140
  };
@@ -1 +1 @@
1
- {"version":3,"file":"objectModelMapping.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/objectModelMapping.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n\nimport type { TransformNode } from \"core/Meshes/transformNode\";\nimport type { IAnimation, ICamera, IGLTF, IKHRLightsPunctual_Light, IMaterial, IMesh, INode } from \"../glTFLoaderInterfaces\";\nimport type { Vector3 } from \"core/Maths/math.vector\";\nimport { Matrix, Quaternion, Vector2 } from \"core/Maths/math.vector\";\nimport { Constants } from \"core/Engines/constants\";\nimport type { Color3 } from \"core/Maths/math.color\";\nimport { Color4 } from \"core/Maths/math.color\";\nimport type { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\nimport type { Light } from \"core/Lights/light\";\nimport type { Nullable } from \"core/types\";\nimport { SpotLight } from \"core/Lights/spotLight\";\nimport type { IEXTLightsImageBased_LightImageBased } from \"babylonjs-gltf2interface\";\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\nimport type { IInterpolationPropertyInfo, IObjectAccessor } from \"core/FlowGraph/typeDefinitions\";\nimport { GLTFPathToObjectConverter } from \"./gltfPathToObjectConverter\";\nimport type { AnimationGroup } from \"core/Animations/animationGroup\";\nimport type { Mesh } from \"core/Meshes/mesh\";\n\nexport interface IGLTFObjectModelTree {\n cameras: IGLTFObjectModelTreeCamerasObject;\n nodes: IGLTFObjectModelTreeNodesObject;\n materials: IGLTFObjectModelTreeMaterialsObject;\n extensions: IGLTFObjectModelTreeExtensionsObject;\n animations: {\n length: IObjectAccessor<IAnimation[], AnimationGroup[], number>;\n __array__: {};\n };\n meshes: {\n length: IObjectAccessor<IMesh[], (Mesh | undefined)[], number>;\n __array__: {};\n };\n}\n\nexport interface IGLTFObjectModelTreeNodesObject<GLTFTargetType = INode, BabylonTargetType = TransformNode> {\n length: IObjectAccessor<GLTFTargetType[], BabylonTargetType[], number>;\n __array__: {\n __target__: boolean;\n translation: IObjectAccessor<GLTFTargetType, BabylonTargetType, Vector3>;\n rotation: IObjectAccessor<GLTFTargetType, BabylonTargetType, Quaternion>;\n scale: IObjectAccessor<GLTFTargetType, BabylonTargetType, Vector3>;\n matrix: IObjectAccessor<GLTFTargetType, BabylonTargetType, Matrix>;\n globalMatrix: IObjectAccessor<GLTFTargetType, BabylonTargetType, Matrix>;\n weights: {\n length: IObjectAccessor<GLTFTargetType, BabylonTargetType, number>;\n __array__: { __target__: boolean } & IObjectAccessor<GLTFTargetType, BabylonTargetType, number>;\n } & IObjectAccessor<GLTFTargetType, BabylonTargetType, number[]>;\n extensions: {\n EXT_lights_ies?: {\n multiplier: IObjectAccessor<INode, Light, number>;\n color: IObjectAccessor<INode, Light, Color3>;\n };\n };\n };\n}\n\nexport interface IGLTFObjectModelTreeCamerasObject {\n __array__: {\n __target__: boolean;\n orthographic: {\n xmag: IObjectAccessor<ICamera, ICamera, Vector2>;\n ymag: IObjectAccessor<ICamera, ICamera, Vector2>;\n zfar: IObjectAccessor<ICamera, ICamera, number>;\n znear: IObjectAccessor<ICamera, ICamera, number>;\n };\n perspective: {\n yfov: IObjectAccessor<ICamera, ICamera, number>;\n zfar: IObjectAccessor<ICamera, ICamera, number>;\n znear: IObjectAccessor<ICamera, ICamera, number>;\n aspectRatio: IObjectAccessor<ICamera, ICamera, Nullable<number>>;\n };\n };\n}\n\nexport interface IGLTFObjectModelTreeMaterialsObject {\n __array__: {\n __target__: boolean;\n pbrMetallicRoughness: {\n baseColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color4>;\n metallicFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<number>>;\n roughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<number>>;\n baseColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n metallicRoughnessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n emissiveFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n normalTexture: {\n scale: IObjectAccessor<IMaterial, PBRMaterial, number>;\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n occlusionTexture: {\n strength: IObjectAccessor<IMaterial, PBRMaterial, number>;\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n emissiveTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n extensions: {\n KHR_materials_anisotropy: {\n anisotropyStrength: IObjectAccessor<IMaterial, PBRMaterial, number>;\n anisotropyRotation: IObjectAccessor<IMaterial, PBRMaterial, number>;\n anisotropyTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_clearcoat: {\n clearcoatFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n clearcoatRoughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n clearcoatTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n clearcoatNormalTexture: {\n scale: IObjectAccessor<IMaterial, PBRMaterial, number>;\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n clearcoatRoughnessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_dispersion: {\n dispersion: IObjectAccessor<IMaterial, PBRMaterial, number>;\n };\n KHR_materials_emissive_strength: {\n emissiveStrength: IObjectAccessor<IMaterial, PBRMaterial, number>;\n };\n KHR_materials_ior: {\n ior: IObjectAccessor<IMaterial, PBRMaterial, number>;\n };\n KHR_materials_iridescence: {\n iridescenceFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceIor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceThicknessMinimum: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceThicknessMaximum: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n iridescenceThicknessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_sheen: {\n sheenColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n sheenRoughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n sheenColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n sheenRoughnessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_specular: {\n specularFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n specularColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n specularTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n specularColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_transmission: {\n transmissionFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n transmissionTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_diffuse_transmission: {\n diffuseTransmissionFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n diffuseTransmissionTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n diffuseTransmissionColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<Color3>>;\n diffuseTransmissionColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_volume: {\n thicknessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n attenuationColor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n attenuationDistance: IObjectAccessor<IMaterial, PBRMaterial, number>;\n thicknessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n };\n };\n}\n\ninterface ITextureDefinition {\n offset: IObjectAccessor<IMaterial, PBRMaterial, Vector2>;\n rotation: IObjectAccessor<IMaterial, PBRMaterial, number>;\n scale: IObjectAccessor<IMaterial, PBRMaterial, Vector2>;\n}\n\nexport interface IGLTFObjectModelTreeMeshesObject {}\n\nexport interface IGLTFObjectModelTreeExtensionsObject {\n KHR_lights_punctual: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], number>;\n __array__: {\n __target__: boolean;\n color: IObjectAccessor<IKHRLightsPunctual_Light, Light, Color3>;\n intensity: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n range: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n spot: {\n innerConeAngle: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n outerConeAngle: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n };\n };\n };\n };\n EXT_lights_ies: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], number>;\n };\n };\n EXT_lights_image_based: {\n lights: {\n __array__: {\n __target__: boolean;\n intensity: IObjectAccessor<IEXTLightsImageBased_LightImageBased, BaseTexture, number>;\n rotation: IObjectAccessor<IEXTLightsImageBased_LightImageBased, BaseTexture, Quaternion>;\n };\n length: IObjectAccessor<IEXTLightsImageBased_LightImageBased[], BaseTexture[], number>;\n };\n };\n}\n\nconst nodesTree: IGLTFObjectModelTreeNodesObject = {\n length: {\n type: \"number\",\n get: (nodes: INode[]) => nodes.length,\n getTarget: (nodes: INode[]) => nodes.map((node) => node._babylonTransformNode!),\n getPropertyName: [() => \"length\"],\n },\n __array__: {\n __target__: true,\n translation: {\n type: \"Vector3\",\n get: (node: INode) => node._babylonTransformNode?.position,\n set: (value: Vector3, node: INode) => node._babylonTransformNode?.position.copyFrom(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"position\"],\n },\n rotation: {\n type: \"Quaternion\",\n get: (node: INode) => node._babylonTransformNode?.rotationQuaternion!,\n set: (value: Quaternion, node: INode) => node._babylonTransformNode?.rotationQuaternion?.copyFrom(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"rotationQuaternion\"],\n },\n scale: {\n type: \"Vector3\",\n get: (node: INode) => node._babylonTransformNode?.scaling,\n set: (value: Vector3, node: INode) => node._babylonTransformNode?.scaling.copyFrom(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"scaling\"],\n },\n weights: {\n length: {\n type: \"number\",\n get: (node: INode) => node._numMorphTargets,\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"influence\"],\n },\n __array__: {\n __target__: true,\n type: \"number\",\n get: (node: INode, index?: number) => (index !== undefined ? node._primitiveBabylonMeshes?.[0].morphTargetManager?.getTarget(index).influence : undefined),\n // set: (value: number, node: INode, index?: number) => node._babylonTransformNode?.getMorphTargetManager()?.getTarget(index)?.setInfluence(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"influence\"],\n },\n type: \"number[]\",\n get: (node: INode, index?: number) => [0], // TODO: get the weights correctly\n // set: (value: number, node: INode, index?: number) => node._babylonTransformNode?.getMorphTargetManager()?.getTarget(index)?.setInfluence(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"influence\"],\n },\n // readonly!\n matrix: {\n type: \"Matrix\",\n get: (node: INode) => Matrix.Compose(node._babylonTransformNode?.scaling!, node._babylonTransformNode?.rotationQuaternion!, node._babylonTransformNode?.position!),\n getTarget: (node: INode) => node._babylonTransformNode,\n isReadOnly: true,\n },\n globalMatrix: {\n type: \"Matrix\",\n get: (node: INode) => {\n const matrix = Matrix.Identity();\n // RHS/LHS support\n let rootNode = node.parent;\n while (rootNode && rootNode.parent) {\n rootNode = rootNode.parent;\n }\n const forceUpdate =\n node._babylonTransformNode?.position._isDirty || node._babylonTransformNode?.rotationQuaternion?._isDirty || node._babylonTransformNode?.scaling._isDirty;\n if (rootNode) {\n // take the parent root node's world matrix, invert it, and multiply it with the current node's world matrix\n // This will provide the global matrix, ignoring the RHS->LHS conversion\n const rootMatrix = rootNode._babylonTransformNode?.computeWorldMatrix(true).invert();\n if (rootMatrix) {\n node._babylonTransformNode?.computeWorldMatrix(forceUpdate)?.multiplyToRef(rootMatrix, matrix);\n }\n } else if (node._babylonTransformNode) {\n matrix.copyFrom(node._babylonTransformNode.computeWorldMatrix(forceUpdate));\n }\n return matrix;\n },\n getTarget: (node: INode) => node._babylonTransformNode,\n isReadOnly: true,\n },\n extensions: {\n EXT_lights_ies: {\n multiplier: {\n type: \"number\",\n get: (node: INode) => {\n return node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0]?.intensity;\n },\n getTarget: (node: INode) => node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0],\n set: (value, node) => {\n if (node._babylonTransformNode) {\n const light = node._babylonTransformNode.getChildren((child) => child instanceof SpotLight, true)[0];\n if (light) {\n light.intensity = value;\n }\n }\n },\n },\n color: {\n type: \"Color3\",\n get: (node: INode) => {\n return node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0]?.diffuse;\n },\n getTarget: (node: INode) => node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0],\n set: (value, node: INode) => {\n if (node._babylonTransformNode) {\n const light = node._babylonTransformNode.getChildren((child) => child instanceof SpotLight, true)[0];\n if (light) {\n light.diffuse = value;\n }\n }\n },\n },\n },\n },\n },\n};\n\nconst animationsTree = {\n length: {\n type: \"number\",\n get: (animations: IAnimation[]) => animations.length,\n getTarget: (animations: IAnimation[]) => animations.map((animation) => animation._babylonAnimationGroup!),\n getPropertyName: [() => \"length\"],\n },\n __array__: {},\n};\n\nconst meshesTree = {\n length: {\n type: \"number\",\n get: (meshes: IMesh[]) => meshes.length,\n getTarget: (meshes: IMesh[]) => meshes.map((mesh) => mesh.primitives[0]._instanceData?.babylonSourceMesh),\n getPropertyName: [() => \"length\"],\n },\n __array__: {},\n};\n\nconst camerasTree: IGLTFObjectModelTreeCamerasObject = {\n __array__: {\n __target__: true,\n orthographic: {\n xmag: {\n componentsCount: 2,\n type: \"Vector2\",\n get: (camera) => new Vector2(camera._babylonCamera?.orthoLeft ?? 0, camera._babylonCamera?.orthoRight ?? 0),\n set: (value, camera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.orthoLeft = value.x;\n camera._babylonCamera.orthoRight = value.y;\n }\n },\n getTarget: (camera) => camera,\n getPropertyName: [() => \"orthoLeft\", () => \"orthoRight\"],\n },\n ymag: {\n componentsCount: 2,\n type: \"Vector2\",\n get: (camera: ICamera) => new Vector2(camera._babylonCamera?.orthoBottom ?? 0, camera._babylonCamera?.orthoTop ?? 0),\n set: (value: Vector2, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.orthoBottom = value.x;\n camera._babylonCamera.orthoTop = value.y;\n }\n },\n getTarget: (camera) => camera,\n getPropertyName: [() => \"orthoBottom\", () => \"orthoTop\"],\n },\n zfar: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.maxZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.maxZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"maxZ\"],\n },\n znear: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.minZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.minZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"minZ\"],\n },\n },\n perspective: {\n aspectRatio: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.getEngine().getAspectRatio(camera._babylonCamera),\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"aspectRatio\"],\n isReadOnly: true, // might not be the case for glTF?\n },\n yfov: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.fov,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.fov = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"fov\"],\n },\n zfar: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.maxZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.maxZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"maxZ\"],\n },\n znear: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.minZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.minZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"minZ\"],\n },\n },\n },\n};\n\nconst materialsTree: IGLTFObjectModelTreeMaterialsObject = {\n __array__: {\n __target__: true,\n emissiveFactor: {\n type: \"Color3\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).emissiveColor,\n set: (value: Color3, material, index?, payload?) => GetMaterial(material, index, payload).emissiveColor.copyFrom(value),\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"emissiveColor\"],\n },\n emissiveTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"emissiveTexture\"),\n },\n },\n normalTexture: {\n scale: {\n type: \"number\",\n get: (material, index?, payload?) => GetTexture(material, payload, \"bumpTexture\")?.level,\n set: (value: number, material, index?, payload?) => {\n const texture = GetTexture(material, payload, \"bumpTexture\");\n if (texture) {\n texture.level = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"level\"],\n },\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"bumpTexture\"),\n },\n },\n occlusionTexture: {\n strength: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).ambientTextureStrength,\n set: (value: number, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.ambientTextureStrength = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"ambientTextureStrength\"],\n },\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"ambientTexture\"),\n },\n },\n pbrMetallicRoughness: {\n baseColorFactor: {\n type: \"Color4\",\n get: (material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n return Color4.FromColor3(mat.albedoColor, mat.alpha);\n },\n set: (value: Color4, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n mat.albedoColor.set(value.r, value.g, value.b);\n mat.alpha = value.a;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n // This is correct on the animation level, but incorrect as a single property of a type Color4\n getPropertyName: [() => \"albedoColor\", () => \"alpha\"],\n },\n baseColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"albedoTexture\"),\n },\n },\n metallicFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).metallic,\n set: (value, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.metallic = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"metallic\"],\n },\n roughnessFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).roughness,\n set: (value, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.roughness = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"roughness\"],\n },\n metallicRoughnessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"metallicTexture\"),\n },\n },\n },\n extensions: {\n KHR_materials_anisotropy: {\n anisotropyStrength: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).anisotropy.intensity,\n set: (value: number, material, index?, payload?) => {\n GetMaterial(material, index, payload).anisotropy.intensity = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"anisotropy.intensity\"],\n },\n anisotropyRotation: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).anisotropy.angle,\n set: (value: number, material, index?, payload?) => {\n GetMaterial(material, index, payload).anisotropy.angle = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"anisotropy.angle\"],\n },\n anisotropyTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"anisotropy\", \"texture\"),\n },\n },\n },\n KHR_materials_clearcoat: {\n clearcoatFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).clearCoat.intensity,\n set: (value, material, index?, payload?) => {\n GetMaterial(material, index, payload).clearCoat.intensity = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"clearCoat.intensity\"],\n },\n clearcoatRoughnessFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).clearCoat.roughness,\n set: (value, material, index?, payload?) => {\n GetMaterial(material, index, payload).clearCoat.roughness = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"clearCoat.roughness\"],\n },\n clearcoatTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"clearCoat\", \"texture\"),\n },\n },\n clearcoatNormalTexture: {\n scale: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).clearCoat.bumpTexture?.level,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).clearCoat.bumpTexture!.level = value),\n },\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"clearCoat\", \"bumpTexture\"),\n },\n },\n clearcoatRoughnessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"clearCoat\", \"textureRoughness\"),\n },\n },\n },\n KHR_materials_dispersion: {\n dispersion: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.dispersion,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.dispersion = value),\n },\n },\n KHR_materials_emissive_strength: {\n emissiveStrength: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).emissiveIntensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).emissiveIntensity = value),\n },\n },\n KHR_materials_ior: {\n ior: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).indexOfRefraction,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).indexOfRefraction = value),\n },\n },\n KHR_materials_iridescence: {\n iridescenceFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.intensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.intensity = value),\n },\n iridescenceIor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.indexOfRefraction,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.indexOfRefraction = value),\n },\n iridescenceTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"iridescence\", \"texture\"),\n },\n },\n iridescenceThicknessMaximum: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.maximumThickness,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.maximumThickness = value),\n },\n iridescenceThicknessMinimum: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.minimumThickness,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.minimumThickness = value),\n },\n iridescenceThicknessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"iridescence\", \"thicknessTexture\"),\n },\n },\n },\n KHR_materials_sheen: {\n sheenColorFactor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).sheen.color,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => GetMaterial(material, index, payload).sheen.color.copyFrom(value),\n },\n sheenColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"sheen\", \"texture\"),\n },\n },\n sheenRoughnessFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).sheen.intensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).sheen.intensity = value),\n },\n sheenRoughnessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"sheen\", \"thicknessTexture\"),\n },\n },\n },\n KHR_materials_specular: {\n specularFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).metallicF0Factor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).metallicF0Factor = value),\n getPropertyName: [() => \"metallicF0Factor\"],\n },\n specularColorFactor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).metallicReflectanceColor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => GetMaterial(material, index, payload).metallicReflectanceColor.copyFrom(value),\n getPropertyName: [() => \"metallicReflectanceColor\"],\n },\n specularTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"metallicReflectanceTexture\"),\n },\n },\n specularColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"reflectanceTexture\"),\n },\n },\n },\n KHR_materials_transmission: {\n transmissionFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.refractionIntensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.refractionIntensity = value),\n getPropertyName: [() => \"subSurface.refractionIntensity\"],\n },\n transmissionTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"refractionIntensityTexture\"),\n },\n },\n },\n KHR_materials_diffuse_transmission: {\n diffuseTransmissionFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.translucencyIntensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.translucencyIntensity = value),\n },\n diffuseTransmissionTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"translucencyIntensityTexture\"),\n },\n },\n diffuseTransmissionColorFactor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.translucencyColor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => value && GetMaterial(material, index, payload).subSurface.translucencyColor?.copyFrom(value),\n },\n diffuseTransmissionColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"translucencyColorTexture\"),\n },\n },\n },\n KHR_materials_volume: {\n attenuationColor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.tintColor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => GetMaterial(material, index, payload).subSurface.tintColor.copyFrom(value),\n },\n attenuationDistance: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.tintColorAtDistance,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.tintColorAtDistance = value),\n },\n thicknessFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.maximumThickness,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.maximumThickness = value),\n },\n thicknessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"thicknessTexture\"),\n },\n },\n },\n },\n },\n};\n\nconst extensionsTree: IGLTFObjectModelTreeExtensionsObject = {\n KHR_lights_punctual: {\n lights: {\n length: {\n type: \"number\",\n get: (lights: IKHRLightsPunctual_Light[]) => lights.length,\n getTarget: (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!),\n getPropertyName: [(_lights: IKHRLightsPunctual_Light[]) => \"length\"],\n },\n __array__: {\n __target__: true,\n color: {\n type: \"Color3\",\n get: (light: IKHRLightsPunctual_Light) => light._babylonLight?.diffuse,\n set: (value: Color3, light: IKHRLightsPunctual_Light) => light._babylonLight?.diffuse.copyFrom(value),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"diffuse\"],\n },\n intensity: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => light._babylonLight?.intensity,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? (light._babylonLight.intensity = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"intensity\"],\n },\n range: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => light._babylonLight?.range,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? (light._babylonLight.range = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"range\"],\n },\n spot: {\n innerConeAngle: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => (light._babylonLight as SpotLight)?.innerAngle,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? ((light._babylonLight as SpotLight).innerAngle = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"innerConeAngle\"],\n },\n outerConeAngle: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => (light._babylonLight as SpotLight)?.angle,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? ((light._babylonLight as SpotLight).angle = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"outerConeAngle\"],\n },\n },\n },\n },\n },\n EXT_lights_ies: {\n lights: {\n length: {\n type: \"number\",\n get: (lights: IKHRLightsPunctual_Light[]) => lights.length,\n getTarget: (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!),\n getPropertyName: [(_lights: IKHRLightsPunctual_Light[]) => \"length\"],\n },\n },\n },\n EXT_lights_image_based: {\n lights: {\n length: {\n type: \"number\",\n get: (lights) => lights.length,\n getTarget: (lights) => lights.map((light) => light._babylonTexture!),\n getPropertyName: [(_lights) => \"length\"],\n },\n __array__: {\n __target__: true,\n intensity: {\n type: \"number\",\n get: (light) => light._babylonTexture?.level,\n set: (value, light) => {\n if (light._babylonTexture) {\n light._babylonTexture.level = value;\n }\n },\n\n getTarget: (light) => light._babylonTexture,\n },\n rotation: {\n type: \"Quaternion\",\n get: (light) => light._babylonTexture && Quaternion.FromRotationMatrix(light._babylonTexture?.getReflectionTextureMatrix()),\n set: (value, light) => {\n if (!light._babylonTexture) {\n return;\n }\n // Invert the rotation so that positive rotation is counter-clockwise.\n if (!light._babylonTexture.getScene()?.useRightHandedSystem) {\n value = Quaternion.Inverse(value);\n }\n\n Matrix.FromQuaternionToRef(value, light._babylonTexture.getReflectionTextureMatrix());\n },\n getTarget: (light) => light._babylonTexture,\n },\n },\n },\n },\n};\n\nfunction GetTexture(material: IMaterial, payload: any, textureType: keyof PBRMaterial, textureInObject?: string) {\n const babylonMaterial = GetMaterial(material, payload);\n return textureInObject ? babylonMaterial[textureType][textureInObject] : babylonMaterial[textureType];\n}\nfunction GetMaterial(material: IMaterial, _index?: number, payload?: any) {\n return material._data?.[payload?.fillMode ?? Constants.MATERIAL_TriangleFillMode]?.babylonMaterial as PBRMaterial;\n}\nfunction GenerateTextureMap(textureType: keyof PBRMaterial, textureInObject?: string): ITextureDefinition {\n return {\n offset: {\n componentsCount: 2,\n // assuming two independent values for u and v, and NOT a Vector2\n type: \"Vector2\",\n get: (material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n return new Vector2(texture?.uOffset, texture?.vOffset);\n },\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n (texture.uOffset = value.x), (texture.vOffset = value.y);\n },\n getPropertyName: [\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.uOffset`,\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.vOffset`,\n ],\n },\n rotation: {\n type: \"number\",\n get: (material, _index?, payload?) => GetTexture(material, payload, textureType, textureInObject)?.wAng,\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => (GetTexture(material, payload, textureType, textureInObject).wAng = value),\n getPropertyName: [() => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.wAng`],\n },\n scale: {\n componentsCount: 2,\n type: \"Vector2\",\n get: (material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n return new Vector2(texture?.uScale, texture?.vScale);\n },\n getTarget: GetMaterial,\n set: (value, material, index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n (texture.uScale = value.x), (texture.vScale = value.y);\n },\n getPropertyName: [\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.uScale`,\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.vScale`,\n ],\n },\n };\n}\n\nconst objectModelMapping: IGLTFObjectModelTree = {\n cameras: camerasTree,\n nodes: nodesTree,\n materials: materialsTree,\n extensions: extensionsTree,\n animations: animationsTree,\n meshes: meshesTree,\n};\n\n/**\n * get a path-to-object converter for the given glTF tree\n * @param gltf the glTF tree to use\n * @returns a path-to-object converter for the given glTF tree\n */\nexport function GetPathToObjectConverter(gltf: IGLTF) {\n return new GLTFPathToObjectConverter(gltf, objectModelMapping);\n}\n\n/**\n * This function will return the object accessor for the given key in the object model\n * If the key is not found, it will return undefined\n * @param key the key to get the mapping for, for example /materials/\\{\\}/emissiveFactor\n * @returns an object accessor for the given key, or undefined if the key is not found\n */\nexport function GetMappingForKey(key: string): IObjectAccessor | undefined {\n // replace every `{}` in key with __array__ to match the object model\n const keyParts = key.split(\"/\").map((part) => part.replace(/{}/g, \"__array__\"));\n let current = objectModelMapping as any;\n for (const part of keyParts) {\n // make sure part is not empty\n if (!part) {\n continue;\n }\n current = current[part];\n }\n // validate that current is an object accessor\n if (current && current.type && current.get) {\n return current;\n }\n return undefined;\n}\n\n/**\n * Set interpolation for a specific key in the object model\n * @param key the key to set, for example /materials/\\{\\}/emissiveFactor\n * @param interpolation the interpolation elements array\n */\nexport function SetInterpolationForKey(key: string, interpolation?: IInterpolationPropertyInfo[]): void {\n // replace every `{}` in key with __array__ to match the object model\n const keyParts = key.split(\"/\").map((part) => part.replace(/{}/g, \"__array__\"));\n let current = objectModelMapping as any;\n for (const part of keyParts) {\n // make sure part is not empty\n if (!part) {\n continue;\n }\n current = current[part];\n }\n // validate that the current object is an object accessor\n if (current && current.type && current.get) {\n (current as IObjectAccessor).interpolation = interpolation;\n }\n}\n\n/**\n * This will ad a new object accessor in the object model at the given key.\n * Note that this will NOT change the typescript types. To do that you will need to change the interface itself (extending it in the module that uses it)\n * @param key the key to add the object accessor at. For example /cameras/\\{\\}/perspective/aspectRatio\n * @param accessor the object accessor to add\n */\nexport function AddObjectAccessorToKey<GLTFTargetType = any, BabylonTargetType = any, BabylonValueType = any>(\n key: string,\n accessor: IObjectAccessor<GLTFTargetType, BabylonTargetType, BabylonValueType>\n): void {\n // replace every `{}` in key with __array__ to match the object model\n const keyParts = key.split(\"/\").map((part) => part.replace(/{}/g, \"__array__\"));\n let current = objectModelMapping as any;\n for (const part of keyParts) {\n // make sure part is not empty\n if (!part) {\n continue;\n }\n if (!current[part]) {\n if (part === \"?\") {\n current.__ignoreObjectTree__ = true;\n continue;\n }\n current[part] = {};\n // if the part is __array__ then add the __target__ property\n if (part === \"__array__\") {\n current[part].__target__ = true;\n }\n }\n current = current[part];\n }\n Object.assign(current, accessor);\n}\n"]}
1
+ {"version":3,"file":"objectModelMapping.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/objectModelMapping.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n\nimport type { TransformNode } from \"core/Meshes/transformNode\";\nimport type { IAnimation, ICamera, IGLTF, IKHRLightsPunctual_Light, IMaterial, IMesh, INode } from \"../glTFLoaderInterfaces\";\nimport type { Vector3 } from \"core/Maths/math.vector\";\nimport { Matrix, Quaternion, Vector2 } from \"core/Maths/math.vector\";\nimport { Constants } from \"core/Engines/constants\";\nimport type { Color3 } from \"core/Maths/math.color\";\nimport { Color4 } from \"core/Maths/math.color\";\nimport type { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\nimport type { Light } from \"core/Lights/light\";\nimport type { Nullable } from \"core/types\";\nimport { SpotLight } from \"core/Lights/spotLight\";\nimport type { IEXTLightsImageBased_LightImageBased } from \"babylonjs-gltf2interface\";\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\nimport type { IInterpolationPropertyInfo, IObjectAccessor } from \"core/FlowGraph/typeDefinitions\";\nimport { GLTFPathToObjectConverter } from \"./gltfPathToObjectConverter\";\nimport type { AnimationGroup } from \"core/Animations/animationGroup\";\nimport type { Mesh } from \"core/Meshes/mesh\";\n\nexport interface IGLTFObjectModelTree {\n cameras: IGLTFObjectModelTreeCamerasObject;\n nodes: IGLTFObjectModelTreeNodesObject;\n materials: IGLTFObjectModelTreeMaterialsObject;\n extensions: IGLTFObjectModelTreeExtensionsObject;\n animations: {\n length: IObjectAccessor<IAnimation[], AnimationGroup[], number>;\n __array__: {};\n };\n meshes: {\n length: IObjectAccessor<IMesh[], (Mesh | undefined)[], number>;\n __array__: {};\n };\n}\n\nexport interface IGLTFObjectModelTreeNodesObject<GLTFTargetType = INode, BabylonTargetType = TransformNode> {\n length: IObjectAccessor<GLTFTargetType[], BabylonTargetType[], number>;\n __array__: {\n __target__: boolean;\n translation: IObjectAccessor<GLTFTargetType, BabylonTargetType, Vector3>;\n rotation: IObjectAccessor<GLTFTargetType, BabylonTargetType, Quaternion>;\n scale: IObjectAccessor<GLTFTargetType, BabylonTargetType, Vector3>;\n matrix: IObjectAccessor<GLTFTargetType, BabylonTargetType, Matrix>;\n globalMatrix: IObjectAccessor<GLTFTargetType, BabylonTargetType, Matrix>;\n weights: {\n length: IObjectAccessor<GLTFTargetType, BabylonTargetType, number>;\n __array__: { __target__: boolean } & IObjectAccessor<GLTFTargetType, BabylonTargetType, number>;\n } & IObjectAccessor<GLTFTargetType, BabylonTargetType, number[]>;\n extensions: {\n EXT_lights_ies?: {\n multiplier: IObjectAccessor<INode, Light, number>;\n color: IObjectAccessor<INode, Light, Color3>;\n };\n KHR_node_visibility?: {\n visible: IObjectAccessor<INode, Mesh, boolean>;\n };\n };\n };\n}\n\nexport interface IGLTFObjectModelTreeCamerasObject {\n __array__: {\n __target__: boolean;\n orthographic: {\n xmag: IObjectAccessor<ICamera, ICamera, Vector2>;\n ymag: IObjectAccessor<ICamera, ICamera, Vector2>;\n zfar: IObjectAccessor<ICamera, ICamera, number>;\n znear: IObjectAccessor<ICamera, ICamera, number>;\n };\n perspective: {\n yfov: IObjectAccessor<ICamera, ICamera, number>;\n zfar: IObjectAccessor<ICamera, ICamera, number>;\n znear: IObjectAccessor<ICamera, ICamera, number>;\n aspectRatio: IObjectAccessor<ICamera, ICamera, Nullable<number>>;\n };\n };\n}\n\nexport interface IGLTFObjectModelTreeMaterialsObject {\n __array__: {\n __target__: boolean;\n pbrMetallicRoughness: {\n baseColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color4>;\n metallicFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<number>>;\n roughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<number>>;\n baseColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n metallicRoughnessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n emissiveFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n normalTexture: {\n scale: IObjectAccessor<IMaterial, PBRMaterial, number>;\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n occlusionTexture: {\n strength: IObjectAccessor<IMaterial, PBRMaterial, number>;\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n emissiveTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n extensions: {\n KHR_materials_anisotropy: {\n anisotropyStrength: IObjectAccessor<IMaterial, PBRMaterial, number>;\n anisotropyRotation: IObjectAccessor<IMaterial, PBRMaterial, number>;\n anisotropyTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_clearcoat: {\n clearcoatFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n clearcoatRoughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n clearcoatTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n clearcoatNormalTexture: {\n scale: IObjectAccessor<IMaterial, PBRMaterial, number>;\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n clearcoatRoughnessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_dispersion: {\n dispersion: IObjectAccessor<IMaterial, PBRMaterial, number>;\n };\n KHR_materials_emissive_strength: {\n emissiveStrength: IObjectAccessor<IMaterial, PBRMaterial, number>;\n };\n KHR_materials_ior: {\n ior: IObjectAccessor<IMaterial, PBRMaterial, number>;\n };\n KHR_materials_iridescence: {\n iridescenceFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceIor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceThicknessMinimum: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceThicknessMaximum: IObjectAccessor<IMaterial, PBRMaterial, number>;\n iridescenceTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n iridescenceThicknessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_sheen: {\n sheenColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n sheenRoughnessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n sheenColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n sheenRoughnessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_specular: {\n specularFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n specularColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n specularTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n specularColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_transmission: {\n transmissionFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n transmissionTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_diffuse_transmission: {\n diffuseTransmissionFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n diffuseTransmissionTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n diffuseTransmissionColorFactor: IObjectAccessor<IMaterial, PBRMaterial, Nullable<Color3>>;\n diffuseTransmissionColorTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n KHR_materials_volume: {\n thicknessFactor: IObjectAccessor<IMaterial, PBRMaterial, number>;\n attenuationColor: IObjectAccessor<IMaterial, PBRMaterial, Color3>;\n attenuationDistance: IObjectAccessor<IMaterial, PBRMaterial, number>;\n thicknessTexture: {\n extensions: {\n KHR_texture_transform: ITextureDefinition;\n };\n };\n };\n };\n };\n}\n\ninterface ITextureDefinition {\n offset: IObjectAccessor<IMaterial, PBRMaterial, Vector2>;\n rotation: IObjectAccessor<IMaterial, PBRMaterial, number>;\n scale: IObjectAccessor<IMaterial, PBRMaterial, Vector2>;\n}\n\nexport interface IGLTFObjectModelTreeMeshesObject {}\n\nexport interface IGLTFObjectModelTreeExtensionsObject {\n KHR_lights_punctual: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], number>;\n __array__: {\n __target__: boolean;\n color: IObjectAccessor<IKHRLightsPunctual_Light, Light, Color3>;\n intensity: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n range: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n spot: {\n innerConeAngle: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n outerConeAngle: IObjectAccessor<IKHRLightsPunctual_Light, Light, number>;\n };\n };\n };\n };\n EXT_lights_ies: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], number>;\n };\n };\n EXT_lights_image_based: {\n lights: {\n __array__: {\n __target__: boolean;\n intensity: IObjectAccessor<IEXTLightsImageBased_LightImageBased, BaseTexture, number>;\n rotation: IObjectAccessor<IEXTLightsImageBased_LightImageBased, BaseTexture, Quaternion>;\n };\n length: IObjectAccessor<IEXTLightsImageBased_LightImageBased[], BaseTexture[], number>;\n };\n };\n}\n\nconst nodesTree: IGLTFObjectModelTreeNodesObject = {\n length: {\n type: \"number\",\n get: (nodes: INode[]) => nodes.length,\n getTarget: (nodes: INode[]) => nodes.map((node) => node._babylonTransformNode!),\n getPropertyName: [() => \"length\"],\n },\n __array__: {\n __target__: true,\n translation: {\n type: \"Vector3\",\n get: (node: INode) => node._babylonTransformNode?.position,\n set: (value: Vector3, node: INode) => node._babylonTransformNode?.position.copyFrom(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"position\"],\n },\n rotation: {\n type: \"Quaternion\",\n get: (node: INode) => node._babylonTransformNode?.rotationQuaternion!,\n set: (value: Quaternion, node: INode) => node._babylonTransformNode?.rotationQuaternion?.copyFrom(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"rotationQuaternion\"],\n },\n scale: {\n type: \"Vector3\",\n get: (node: INode) => node._babylonTransformNode?.scaling,\n set: (value: Vector3, node: INode) => node._babylonTransformNode?.scaling.copyFrom(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"scaling\"],\n },\n weights: {\n length: {\n type: \"number\",\n get: (node: INode) => node._numMorphTargets,\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"influence\"],\n },\n __array__: {\n __target__: true,\n type: \"number\",\n get: (node: INode, index?: number) => (index !== undefined ? node._primitiveBabylonMeshes?.[0].morphTargetManager?.getTarget(index).influence : undefined),\n // set: (value: number, node: INode, index?: number) => node._babylonTransformNode?.getMorphTargetManager()?.getTarget(index)?.setInfluence(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"influence\"],\n },\n type: \"number[]\",\n get: (node: INode, index?: number) => [0], // TODO: get the weights correctly\n // set: (value: number, node: INode, index?: number) => node._babylonTransformNode?.getMorphTargetManager()?.getTarget(index)?.setInfluence(value),\n getTarget: (node: INode) => node._babylonTransformNode,\n getPropertyName: [() => \"influence\"],\n },\n // readonly!\n matrix: {\n type: \"Matrix\",\n get: (node: INode) => Matrix.Compose(node._babylonTransformNode?.scaling!, node._babylonTransformNode?.rotationQuaternion!, node._babylonTransformNode?.position!),\n getTarget: (node: INode) => node._babylonTransformNode,\n isReadOnly: true,\n },\n globalMatrix: {\n type: \"Matrix\",\n get: (node: INode) => {\n const matrix = Matrix.Identity();\n // RHS/LHS support\n let rootNode = node.parent;\n while (rootNode && rootNode.parent) {\n rootNode = rootNode.parent;\n }\n const forceUpdate =\n node._babylonTransformNode?.position._isDirty || node._babylonTransformNode?.rotationQuaternion?._isDirty || node._babylonTransformNode?.scaling._isDirty;\n if (rootNode) {\n // take the parent root node's world matrix, invert it, and multiply it with the current node's world matrix\n // This will provide the global matrix, ignoring the RHS->LHS conversion\n const rootMatrix = rootNode._babylonTransformNode?.computeWorldMatrix(true).invert();\n if (rootMatrix) {\n node._babylonTransformNode?.computeWorldMatrix(forceUpdate)?.multiplyToRef(rootMatrix, matrix);\n }\n } else if (node._babylonTransformNode) {\n matrix.copyFrom(node._babylonTransformNode.computeWorldMatrix(forceUpdate));\n }\n return matrix;\n },\n getTarget: (node: INode) => node._babylonTransformNode,\n isReadOnly: true,\n },\n extensions: {\n EXT_lights_ies: {\n multiplier: {\n type: \"number\",\n get: (node: INode) => {\n return node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0]?.intensity;\n },\n getTarget: (node: INode) => node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0],\n set: (value, node) => {\n if (node._babylonTransformNode) {\n const light = node._babylonTransformNode.getChildren((child) => child instanceof SpotLight, true)[0];\n if (light) {\n light.intensity = value;\n }\n }\n },\n },\n color: {\n type: \"Color3\",\n get: (node: INode) => {\n return node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0]?.diffuse;\n },\n getTarget: (node: INode) => node._babylonTransformNode?.getChildren((child) => child instanceof SpotLight, true)[0],\n set: (value, node: INode) => {\n if (node._babylonTransformNode) {\n const light = node._babylonTransformNode.getChildren((child) => child instanceof SpotLight, true)[0];\n if (light) {\n light.diffuse = value;\n }\n }\n },\n },\n },\n KHR_node_visibility: {\n visible: {\n type: \"boolean\",\n get: (node: INode) => {\n return node._primitiveBabylonMeshes ? node._primitiveBabylonMeshes[0].isVisible : false;\n },\n getTarget: () => undefined, // TODO: what should this return?\n set: (value: boolean, node: INode) => {\n if (node._primitiveBabylonMeshes) {\n node._primitiveBabylonMeshes.forEach((mesh) => (mesh.isVisible = value));\n }\n },\n },\n },\n },\n },\n};\n\nconst animationsTree = {\n length: {\n type: \"number\",\n get: (animations: IAnimation[]) => animations.length,\n getTarget: (animations: IAnimation[]) => animations.map((animation) => animation._babylonAnimationGroup!),\n getPropertyName: [() => \"length\"],\n },\n __array__: {},\n};\n\nconst meshesTree = {\n length: {\n type: \"number\",\n get: (meshes: IMesh[]) => meshes.length,\n getTarget: (meshes: IMesh[]) => meshes.map((mesh) => mesh.primitives[0]._instanceData?.babylonSourceMesh),\n getPropertyName: [() => \"length\"],\n },\n __array__: {},\n};\n\nconst camerasTree: IGLTFObjectModelTreeCamerasObject = {\n __array__: {\n __target__: true,\n orthographic: {\n xmag: {\n componentsCount: 2,\n type: \"Vector2\",\n get: (camera) => new Vector2(camera._babylonCamera?.orthoLeft ?? 0, camera._babylonCamera?.orthoRight ?? 0),\n set: (value, camera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.orthoLeft = value.x;\n camera._babylonCamera.orthoRight = value.y;\n }\n },\n getTarget: (camera) => camera,\n getPropertyName: [() => \"orthoLeft\", () => \"orthoRight\"],\n },\n ymag: {\n componentsCount: 2,\n type: \"Vector2\",\n get: (camera: ICamera) => new Vector2(camera._babylonCamera?.orthoBottom ?? 0, camera._babylonCamera?.orthoTop ?? 0),\n set: (value: Vector2, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.orthoBottom = value.x;\n camera._babylonCamera.orthoTop = value.y;\n }\n },\n getTarget: (camera) => camera,\n getPropertyName: [() => \"orthoBottom\", () => \"orthoTop\"],\n },\n zfar: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.maxZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.maxZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"maxZ\"],\n },\n znear: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.minZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.minZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"minZ\"],\n },\n },\n perspective: {\n aspectRatio: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.getEngine().getAspectRatio(camera._babylonCamera),\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"aspectRatio\"],\n isReadOnly: true, // might not be the case for glTF?\n },\n yfov: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.fov,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.fov = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"fov\"],\n },\n zfar: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.maxZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.maxZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"maxZ\"],\n },\n znear: {\n type: \"number\",\n get: (camera: ICamera) => camera._babylonCamera?.minZ,\n set: (value: number, camera: ICamera) => {\n if (camera._babylonCamera) {\n camera._babylonCamera.minZ = value;\n }\n },\n getTarget: (camera: ICamera) => camera,\n getPropertyName: [() => \"minZ\"],\n },\n },\n },\n};\n\nconst materialsTree: IGLTFObjectModelTreeMaterialsObject = {\n __array__: {\n __target__: true,\n emissiveFactor: {\n type: \"Color3\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).emissiveColor,\n set: (value: Color3, material, index?, payload?) => GetMaterial(material, index, payload).emissiveColor.copyFrom(value),\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"emissiveColor\"],\n },\n emissiveTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"emissiveTexture\"),\n },\n },\n normalTexture: {\n scale: {\n type: \"number\",\n get: (material, index?, payload?) => GetTexture(material, payload, \"bumpTexture\")?.level,\n set: (value: number, material, index?, payload?) => {\n const texture = GetTexture(material, payload, \"bumpTexture\");\n if (texture) {\n texture.level = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"level\"],\n },\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"bumpTexture\"),\n },\n },\n occlusionTexture: {\n strength: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).ambientTextureStrength,\n set: (value: number, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.ambientTextureStrength = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"ambientTextureStrength\"],\n },\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"ambientTexture\"),\n },\n },\n pbrMetallicRoughness: {\n baseColorFactor: {\n type: \"Color4\",\n get: (material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n return Color4.FromColor3(mat.albedoColor, mat.alpha);\n },\n set: (value: Color4, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n mat.albedoColor.set(value.r, value.g, value.b);\n mat.alpha = value.a;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n // This is correct on the animation level, but incorrect as a single property of a type Color4\n getPropertyName: [() => \"albedoColor\", () => \"alpha\"],\n },\n baseColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"albedoTexture\"),\n },\n },\n metallicFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).metallic,\n set: (value, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.metallic = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"metallic\"],\n },\n roughnessFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).roughness,\n set: (value, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.roughness = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"roughness\"],\n },\n metallicRoughnessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"metallicTexture\"),\n },\n },\n },\n extensions: {\n KHR_materials_anisotropy: {\n anisotropyStrength: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).anisotropy.intensity,\n set: (value: number, material, index?, payload?) => {\n GetMaterial(material, index, payload).anisotropy.intensity = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"anisotropy.intensity\"],\n },\n anisotropyRotation: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).anisotropy.angle,\n set: (value: number, material, index?, payload?) => {\n GetMaterial(material, index, payload).anisotropy.angle = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"anisotropy.angle\"],\n },\n anisotropyTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"anisotropy\", \"texture\"),\n },\n },\n },\n KHR_materials_clearcoat: {\n clearcoatFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).clearCoat.intensity,\n set: (value, material, index?, payload?) => {\n GetMaterial(material, index, payload).clearCoat.intensity = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"clearCoat.intensity\"],\n },\n clearcoatRoughnessFactor: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload).clearCoat.roughness,\n set: (value, material, index?, payload?) => {\n GetMaterial(material, index, payload).clearCoat.roughness = value;\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"clearCoat.roughness\"],\n },\n clearcoatTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"clearCoat\", \"texture\"),\n },\n },\n clearcoatNormalTexture: {\n scale: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).clearCoat.bumpTexture?.level,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).clearCoat.bumpTexture!.level = value),\n },\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"clearCoat\", \"bumpTexture\"),\n },\n },\n clearcoatRoughnessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"clearCoat\", \"textureRoughness\"),\n },\n },\n },\n KHR_materials_dispersion: {\n dispersion: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.dispersion,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.dispersion = value),\n },\n },\n KHR_materials_emissive_strength: {\n emissiveStrength: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).emissiveIntensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).emissiveIntensity = value),\n },\n },\n KHR_materials_ior: {\n ior: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).indexOfRefraction,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).indexOfRefraction = value),\n },\n },\n KHR_materials_iridescence: {\n iridescenceFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.intensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.intensity = value),\n },\n iridescenceIor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.indexOfRefraction,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.indexOfRefraction = value),\n },\n iridescenceTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"iridescence\", \"texture\"),\n },\n },\n iridescenceThicknessMaximum: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.maximumThickness,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.maximumThickness = value),\n },\n iridescenceThicknessMinimum: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).iridescence.minimumThickness,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).iridescence.minimumThickness = value),\n },\n iridescenceThicknessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"iridescence\", \"thicknessTexture\"),\n },\n },\n },\n KHR_materials_sheen: {\n sheenColorFactor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).sheen.color,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => GetMaterial(material, index, payload).sheen.color.copyFrom(value),\n },\n sheenColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"sheen\", \"texture\"),\n },\n },\n sheenRoughnessFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).sheen.intensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).sheen.intensity = value),\n },\n sheenRoughnessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"sheen\", \"thicknessTexture\"),\n },\n },\n },\n KHR_materials_specular: {\n specularFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).metallicF0Factor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).metallicF0Factor = value),\n getPropertyName: [() => \"metallicF0Factor\"],\n },\n specularColorFactor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).metallicReflectanceColor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => GetMaterial(material, index, payload).metallicReflectanceColor.copyFrom(value),\n getPropertyName: [() => \"metallicReflectanceColor\"],\n },\n specularTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"metallicReflectanceTexture\"),\n },\n },\n specularColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"reflectanceTexture\"),\n },\n },\n },\n KHR_materials_transmission: {\n transmissionFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.refractionIntensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.refractionIntensity = value),\n getPropertyName: [() => \"subSurface.refractionIntensity\"],\n },\n transmissionTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"refractionIntensityTexture\"),\n },\n },\n },\n KHR_materials_diffuse_transmission: {\n diffuseTransmissionFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.translucencyIntensity,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.translucencyIntensity = value),\n },\n diffuseTransmissionTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"translucencyIntensityTexture\"),\n },\n },\n diffuseTransmissionColorFactor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.translucencyColor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => value && GetMaterial(material, index, payload).subSurface.translucencyColor?.copyFrom(value),\n },\n diffuseTransmissionColorTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"translucencyColorTexture\"),\n },\n },\n },\n KHR_materials_volume: {\n attenuationColor: {\n type: \"Color3\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.tintColor,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => GetMaterial(material, index, payload).subSurface.tintColor.copyFrom(value),\n },\n attenuationDistance: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.tintColorAtDistance,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.tintColorAtDistance = value),\n },\n thicknessFactor: {\n type: \"number\",\n get: (material, index, payload) => GetMaterial(material, index, payload).subSurface.maximumThickness,\n getTarget: GetMaterial,\n set: (value, material, index, payload) => (GetMaterial(material, index, payload).subSurface.maximumThickness = value),\n },\n thicknessTexture: {\n extensions: {\n KHR_texture_transform: GenerateTextureMap(\"subSurface\", \"thicknessTexture\"),\n },\n },\n },\n },\n },\n};\n\nconst extensionsTree: IGLTFObjectModelTreeExtensionsObject = {\n KHR_lights_punctual: {\n lights: {\n length: {\n type: \"number\",\n get: (lights: IKHRLightsPunctual_Light[]) => lights.length,\n getTarget: (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!),\n getPropertyName: [(_lights: IKHRLightsPunctual_Light[]) => \"length\"],\n },\n __array__: {\n __target__: true,\n color: {\n type: \"Color3\",\n get: (light: IKHRLightsPunctual_Light) => light._babylonLight?.diffuse,\n set: (value: Color3, light: IKHRLightsPunctual_Light) => light._babylonLight?.diffuse.copyFrom(value),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"diffuse\"],\n },\n intensity: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => light._babylonLight?.intensity,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? (light._babylonLight.intensity = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"intensity\"],\n },\n range: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => light._babylonLight?.range,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? (light._babylonLight.range = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"range\"],\n },\n spot: {\n innerConeAngle: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => (light._babylonLight as SpotLight)?.innerAngle,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? ((light._babylonLight as SpotLight).innerAngle = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"innerConeAngle\"],\n },\n outerConeAngle: {\n type: \"number\",\n get: (light: IKHRLightsPunctual_Light) => (light._babylonLight as SpotLight)?.angle,\n set: (value: number, light: IKHRLightsPunctual_Light) => (light._babylonLight ? ((light._babylonLight as SpotLight).angle = value) : undefined),\n getTarget: (light: IKHRLightsPunctual_Light) => light._babylonLight,\n getPropertyName: [(_light: IKHRLightsPunctual_Light) => \"outerConeAngle\"],\n },\n },\n },\n },\n },\n EXT_lights_ies: {\n lights: {\n length: {\n type: \"number\",\n get: (lights: IKHRLightsPunctual_Light[]) => lights.length,\n getTarget: (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!),\n getPropertyName: [(_lights: IKHRLightsPunctual_Light[]) => \"length\"],\n },\n },\n },\n EXT_lights_image_based: {\n lights: {\n length: {\n type: \"number\",\n get: (lights) => lights.length,\n getTarget: (lights) => lights.map((light) => light._babylonTexture!),\n getPropertyName: [(_lights) => \"length\"],\n },\n __array__: {\n __target__: true,\n intensity: {\n type: \"number\",\n get: (light) => light._babylonTexture?.level,\n set: (value, light) => {\n if (light._babylonTexture) {\n light._babylonTexture.level = value;\n }\n },\n\n getTarget: (light) => light._babylonTexture,\n },\n rotation: {\n type: \"Quaternion\",\n get: (light) => light._babylonTexture && Quaternion.FromRotationMatrix(light._babylonTexture?.getReflectionTextureMatrix()),\n set: (value, light) => {\n if (!light._babylonTexture) {\n return;\n }\n // Invert the rotation so that positive rotation is counter-clockwise.\n if (!light._babylonTexture.getScene()?.useRightHandedSystem) {\n value = Quaternion.Inverse(value);\n }\n\n Matrix.FromQuaternionToRef(value, light._babylonTexture.getReflectionTextureMatrix());\n },\n getTarget: (light) => light._babylonTexture,\n },\n },\n },\n },\n};\n\nfunction GetTexture(material: IMaterial, payload: any, textureType: keyof PBRMaterial, textureInObject?: string) {\n const babylonMaterial = GetMaterial(material, payload);\n return textureInObject ? babylonMaterial[textureType][textureInObject] : babylonMaterial[textureType];\n}\nfunction GetMaterial(material: IMaterial, _index?: number, payload?: any) {\n return material._data?.[payload?.fillMode ?? Constants.MATERIAL_TriangleFillMode]?.babylonMaterial as PBRMaterial;\n}\nfunction GenerateTextureMap(textureType: keyof PBRMaterial, textureInObject?: string): ITextureDefinition {\n return {\n offset: {\n componentsCount: 2,\n // assuming two independent values for u and v, and NOT a Vector2\n type: \"Vector2\",\n get: (material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n return new Vector2(texture?.uOffset, texture?.vOffset);\n },\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n (texture.uOffset = value.x), (texture.vOffset = value.y);\n },\n getPropertyName: [\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.uOffset`,\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.vOffset`,\n ],\n },\n rotation: {\n type: \"number\",\n get: (material, _index?, payload?) => GetTexture(material, payload, textureType, textureInObject)?.wAng,\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => (GetTexture(material, payload, textureType, textureInObject).wAng = value),\n getPropertyName: [() => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.wAng`],\n },\n scale: {\n componentsCount: 2,\n type: \"Vector2\",\n get: (material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n return new Vector2(texture?.uScale, texture?.vScale);\n },\n getTarget: GetMaterial,\n set: (value, material, index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n (texture.uScale = value.x), (texture.vScale = value.y);\n },\n getPropertyName: [\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.uScale`,\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.vScale`,\n ],\n },\n };\n}\n\nconst objectModelMapping: IGLTFObjectModelTree = {\n cameras: camerasTree,\n nodes: nodesTree,\n materials: materialsTree,\n extensions: extensionsTree,\n animations: animationsTree,\n meshes: meshesTree,\n};\n\n/**\n * get a path-to-object converter for the given glTF tree\n * @param gltf the glTF tree to use\n * @returns a path-to-object converter for the given glTF tree\n */\nexport function GetPathToObjectConverter(gltf: IGLTF) {\n return new GLTFPathToObjectConverter(gltf, objectModelMapping);\n}\n\n/**\n * This function will return the object accessor for the given key in the object model\n * If the key is not found, it will return undefined\n * @param key the key to get the mapping for, for example /materials/\\{\\}/emissiveFactor\n * @returns an object accessor for the given key, or undefined if the key is not found\n */\nexport function GetMappingForKey(key: string): IObjectAccessor | undefined {\n // replace every `{}` in key with __array__ to match the object model\n const keyParts = key.split(\"/\").map((part) => part.replace(/{}/g, \"__array__\"));\n let current = objectModelMapping as any;\n for (const part of keyParts) {\n // make sure part is not empty\n if (!part) {\n continue;\n }\n current = current[part];\n }\n // validate that current is an object accessor\n if (current && current.type && current.get) {\n return current;\n }\n return undefined;\n}\n\n/**\n * Set interpolation for a specific key in the object model\n * @param key the key to set, for example /materials/\\{\\}/emissiveFactor\n * @param interpolation the interpolation elements array\n */\nexport function SetInterpolationForKey(key: string, interpolation?: IInterpolationPropertyInfo[]): void {\n // replace every `{}` in key with __array__ to match the object model\n const keyParts = key.split(\"/\").map((part) => part.replace(/{}/g, \"__array__\"));\n let current = objectModelMapping as any;\n for (const part of keyParts) {\n // make sure part is not empty\n if (!part) {\n continue;\n }\n current = current[part];\n }\n // validate that the current object is an object accessor\n if (current && current.type && current.get) {\n (current as IObjectAccessor).interpolation = interpolation;\n }\n}\n\n/**\n * This will ad a new object accessor in the object model at the given key.\n * Note that this will NOT change the typescript types. To do that you will need to change the interface itself (extending it in the module that uses it)\n * @param key the key to add the object accessor at. For example /cameras/\\{\\}/perspective/aspectRatio\n * @param accessor the object accessor to add\n */\nexport function AddObjectAccessorToKey<GLTFTargetType = any, BabylonTargetType = any, BabylonValueType = any>(\n key: string,\n accessor: IObjectAccessor<GLTFTargetType, BabylonTargetType, BabylonValueType>\n): void {\n // replace every `{}` in key with __array__ to match the object model\n const keyParts = key.split(\"/\").map((part) => part.replace(/{}/g, \"__array__\"));\n let current = objectModelMapping as any;\n for (const part of keyParts) {\n // make sure part is not empty\n if (!part) {\n continue;\n }\n if (!current[part]) {\n if (part === \"?\") {\n current.__ignoreObjectTree__ = true;\n continue;\n }\n current[part] = {};\n // if the part is __array__ then add the __target__ property\n if (part === \"__array__\") {\n current[part].__target__ = true;\n }\n }\n current = current[part];\n }\n Object.assign(current, accessor);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonjs/loaders",
3
- "version": "8.31.3",
3
+ "version": "8.32.0",
4
4
  "main": "index.js",
5
5
  "module": "index.js",
6
6
  "types": "index.d.ts",
@@ -18,10 +18,10 @@
18
18
  "postcompile": "build-tools -c add-js-to-es6"
19
19
  },
20
20
  "devDependencies": {
21
- "@babylonjs/core": "^8.31.3",
21
+ "@babylonjs/core": "^8.32.0",
22
22
  "@dev/build-tools": "^1.0.0",
23
23
  "@lts/loaders": "^1.0.0",
24
- "babylonjs-gltf2interface": "^8.31.3"
24
+ "babylonjs-gltf2interface": "^8.32.0"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "@babylonjs/core": "^8.0.0",