@babylonjs/loaders 9.26.0 → 9.26.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/FBX/fbxConstraintBehavior.d.ts +188 -0
  2. package/FBX/fbxConstraintBehavior.js +532 -0
  3. package/FBX/fbxConstraintBehavior.js.map +1 -0
  4. package/FBX/fbxFileLoader.pure.d.ts +175 -6
  5. package/FBX/fbxFileLoader.pure.js +1521 -286
  6. package/FBX/fbxFileLoader.pure.js.map +1 -1
  7. package/FBX/index.d.ts +4 -1
  8. package/FBX/index.js +1 -0
  9. package/FBX/index.js.map +1 -1
  10. package/FBX/interpreter/animation.d.ts +73 -33
  11. package/FBX/interpreter/animation.js +620 -223
  12. package/FBX/interpreter/animation.js.map +1 -1
  13. package/FBX/interpreter/animationCurve.d.ts +91 -0
  14. package/FBX/interpreter/animationCurve.js +623 -0
  15. package/FBX/interpreter/animationCurve.js.map +1 -0
  16. package/FBX/interpreter/blendShapes.js +9 -18
  17. package/FBX/interpreter/blendShapes.js.map +1 -1
  18. package/FBX/interpreter/connections.d.ts +1 -1
  19. package/FBX/interpreter/connections.js +173 -34
  20. package/FBX/interpreter/connections.js.map +1 -1
  21. package/FBX/interpreter/constraints.d.ts +68 -0
  22. package/FBX/interpreter/constraints.js +143 -0
  23. package/FBX/interpreter/constraints.js.map +1 -0
  24. package/FBX/interpreter/fbxInterpreter.d.ts +89 -4
  25. package/FBX/interpreter/fbxInterpreter.js +474 -122
  26. package/FBX/interpreter/fbxInterpreter.js.map +1 -1
  27. package/FBX/interpreter/geometry.d.ts +1 -1
  28. package/FBX/interpreter/geometry.js +150 -92
  29. package/FBX/interpreter/geometry.js.map +1 -1
  30. package/FBX/interpreter/legacyDocument.d.ts +11 -0
  31. package/FBX/interpreter/legacyDocument.js +425 -0
  32. package/FBX/interpreter/legacyDocument.js.map +1 -0
  33. package/FBX/interpreter/materialModel.d.ts +71 -0
  34. package/FBX/interpreter/materialModel.js +622 -0
  35. package/FBX/interpreter/materialModel.js.map +1 -0
  36. package/FBX/interpreter/materials.d.ts +13 -1
  37. package/FBX/interpreter/materials.js +88 -5
  38. package/FBX/interpreter/materials.js.map +1 -1
  39. package/FBX/interpreter/nodeTransform.d.ts +32 -0
  40. package/FBX/interpreter/nodeTransform.js +54 -0
  41. package/FBX/interpreter/nodeTransform.js.map +1 -0
  42. package/FBX/interpreter/nurbs.d.ts +99 -0
  43. package/FBX/interpreter/nurbs.js +627 -0
  44. package/FBX/interpreter/nurbs.js.map +1 -0
  45. package/FBX/interpreter/propertyTemplates.d.ts +23 -0
  46. package/FBX/interpreter/propertyTemplates.js +109 -2
  47. package/FBX/interpreter/propertyTemplates.js.map +1 -1
  48. package/FBX/interpreter/rig.js +16 -0
  49. package/FBX/interpreter/rig.js.map +1 -1
  50. package/FBX/interpreter/sceneDiagnostics.js +28 -3
  51. package/FBX/interpreter/sceneDiagnostics.js.map +1 -1
  52. package/FBX/interpreter/skeleton.d.ts +4 -18
  53. package/FBX/interpreter/skeleton.js +16 -94
  54. package/FBX/interpreter/skeleton.js.map +1 -1
  55. package/FBX/parsers/fbxAsciiParser.js +119 -9
  56. package/FBX/parsers/fbxAsciiParser.js.map +1 -1
  57. package/FBX/parsers/fbxBinaryParser.js +74 -22
  58. package/FBX/parsers/fbxBinaryParser.js.map +1 -1
  59. package/FBX/pure.d.ts +1 -0
  60. package/FBX/pure.js +1 -0
  61. package/FBX/pure.js.map +1 -1
  62. package/FBX/types/fbxTypes.d.ts +18 -2
  63. package/FBX/types/fbxTypes.js +40 -12
  64. package/FBX/types/fbxTypes.js.map +1 -1
  65. package/SPLAT/gaussianSplattingStream.d.ts +79 -25
  66. package/SPLAT/gaussianSplattingStream.js +320 -95
  67. package/SPLAT/gaussianSplattingStream.js.map +1 -1
  68. package/USD/usdCommandProtocol.d.ts +20 -4
  69. package/USD/usdCommandProtocol.js +25 -3
  70. package/USD/usdCommandProtocol.js.map +1 -1
  71. package/USD/usdFileLoader.pure.js +2 -0
  72. package/USD/usdFileLoader.pure.js.map +1 -1
  73. package/USD/usdSceneMaterializer.js +430 -92
  74. package/USD/usdSceneMaterializer.js.map +1 -1
  75. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +110 -3
  76. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +468 -74
  77. package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js.map +1 -1
  78. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphEventReferenceBlock.d.ts +47 -0
  79. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphEventReferenceBlock.js +68 -0
  80. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphEventReferenceBlock.js.map +1 -0
  81. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +2 -2
  82. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +1 -1
  83. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js.map +1 -1
  84. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphObjectReferenceBlock.d.ts +24 -0
  85. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphObjectReferenceBlock.js +38 -0
  86. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphObjectReferenceBlock.js.map +1 -0
  87. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphUnsupportedInteractivityBlock.d.ts +41 -0
  88. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphUnsupportedInteractivityBlock.js +63 -0
  89. package/glTF/2.0/Extensions/KHR_interactivity/flowGraphUnsupportedInteractivityBlock.js.map +1 -0
  90. package/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +5 -0
  91. package/glTF/2.0/Extensions/KHR_interactivity/index.js +5 -0
  92. package/glTF/2.0/Extensions/KHR_interactivity/index.js.map +1 -1
  93. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.d.ts +112 -0
  94. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js +773 -0
  95. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js.map +1 -0
  96. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +18 -10
  97. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +299 -54
  98. package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js.map +1 -1
  99. package/glTF/2.0/Extensions/KHR_interactivity/interactivityHostResolver.d.ts +2 -1
  100. package/glTF/2.0/Extensions/KHR_interactivity/interactivityHostResolver.js +7 -2
  101. package/glTF/2.0/Extensions/KHR_interactivity/interactivityHostResolver.js.map +1 -1
  102. package/glTF/2.0/Extensions/KHR_interactivity/interactivityNodeState.d.ts +24 -0
  103. package/glTF/2.0/Extensions/KHR_interactivity/interactivityNodeState.js +89 -0
  104. package/glTF/2.0/Extensions/KHR_interactivity/interactivityNodeState.js.map +1 -0
  105. package/glTF/2.0/Extensions/KHR_interactivity/pure.d.ts +5 -0
  106. package/glTF/2.0/Extensions/KHR_interactivity/pure.js +5 -0
  107. package/glTF/2.0/Extensions/KHR_interactivity/pure.js.map +1 -1
  108. package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +55 -1
  109. package/glTF/2.0/Extensions/KHR_interactivity.pure.js +124 -76
  110. package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
  111. package/glTF/2.0/Extensions/KHR_interactivity.types.d.ts +18 -1
  112. package/glTF/2.0/Extensions/KHR_interactivity.types.js.map +1 -1
  113. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.d.ts +2 -0
  114. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js +114 -56
  115. package/glTF/2.0/Extensions/KHR_node_hoverability.pure.js.map +1 -1
  116. package/glTF/2.0/Extensions/KHR_node_selectability.pure.d.ts +2 -0
  117. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js +80 -35
  118. package/glTF/2.0/Extensions/KHR_node_selectability.pure.js.map +1 -1
  119. package/glTF/2.0/Extensions/interactivityRefPathToObjectConverter.js +3 -2
  120. package/glTF/2.0/Extensions/interactivityRefPathToObjectConverter.js.map +1 -1
  121. package/glTF/2.0/Extensions/objectModelMapping.d.ts +4 -2
  122. package/glTF/2.0/Extensions/objectModelMapping.js +33 -4
  123. package/glTF/2.0/Extensions/objectModelMapping.js.map +1 -1
  124. package/glTF/2.0/glTFLoader.pure.d.ts +1 -1
  125. package/glTF/2.0/glTFLoader.pure.js +9 -4
  126. package/glTF/2.0/glTFLoader.pure.js.map +1 -1
  127. package/glTF/2.0/glTFLoaderExtension.d.ts +2 -1
  128. package/glTF/2.0/glTFLoaderExtension.js.map +1 -1
  129. package/package.json +3 -3
@@ -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 AbstractMesh } from \"core/Meshes/abstractMesh\";\nimport { type MorphTargetManager } from \"core/Morph/morphTargetManager\";\nimport {\n type IAnimation,\n type ICamera,\n type IGLTF,\n type IKHRLightsPunctual_Light,\n type IEXTLightsArea_Light,\n type IMaterial,\n type IMesh,\n type IMeshPrimitive,\n type INode,\n type IScene,\n type ISkin,\n} from \"../glTFLoaderInterfaces\";\nimport { type Vector3, Matrix, Quaternion, Vector2 } from \"core/Maths/math.vector.pure\";\nimport { Constants } from \"core/Engines/constants\";\nimport { type Color3, Color4 } from \"core/Maths/math.color.pure\";\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.pure\";\nimport { type IEXTLightsImageBased_LightImageBased } from \"babylonjs-gltf2interface\";\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\nimport { type IInterpolationPropertyInfo, type IObjectAccessor } from \"core/FlowGraph/typeDefinitions\";\nimport { FlowGraphInteger } from \"core/FlowGraph/CustomTypes/flowGraphInteger.pure\";\nimport { FlowGraphTypes } from \"core/FlowGraph/flowGraphRichTypes.pure\";\nimport { GLTFPathToObjectConverter } from \"./gltfPathToObjectConverter\";\nimport { type AnimationGroup } from \"core/Animations/animationGroup\";\nimport { type Mesh } from \"core/Meshes/mesh\";\nimport { type RectAreaLight } from \"core/Lights/rectAreaLight\";\n\n/**\n * Top-level shape of the glTF Object Model accessor tree. Each property\n * describes a navigable section of the JSON-Pointer namespace (e.g. `/nodes`,\n * `/materials`, `/scenes`) that KHR_interactivity, KHR_animation_pointer and\n * other extensions consume via {@link GetMappingForKey}.\n */\nexport interface IGLTFObjectModelTree {\n /** Read-only accessor for the active scene index (`/scene`). */\n scene: { __target__: boolean } & IObjectAccessor<number | undefined, any, number>;\n /** Accessor tree for `/cameras`. */\n cameras: IGLTFObjectModelTreeCamerasObject;\n /** Accessor tree for `/nodes`. */\n nodes: IGLTFObjectModelTreeNodesObject;\n /** Accessor tree for `/materials`. */\n materials: IGLTFObjectModelTreeMaterialsObject;\n /** Accessor tree for `/extensions` (root-level glTF extensions). */\n extensions: IGLTFObjectModelTreeExtensionsObject;\n /** Accessor tree for `/animations`. */\n animations: {\n length: IObjectAccessor<IAnimation[], AnimationGroup[], FlowGraphInteger>;\n __array__: {};\n };\n /** Accessor tree for `/meshes`. */\n meshes: IGLTFObjectModelTreeMeshesObject;\n /** Accessor tree for `/scenes`. */\n scenes: IGLTFObjectModelTreeScenesObject;\n /** Accessor tree for `/skins`. */\n skins: IGLTFObjectModelTreeSkinsObject;\n}\n\n/**\n * Accessor tree describing the `/nodes` section of the glTF Object Model.\n * Exposes per-node TRS, ref-typed parent/children/camera/mesh/skin links,\n * morph-target weights and node-extension properties.\n */\nexport interface IGLTFObjectModelTreeNodesObject<GLTFTargetType = INode, BabylonTargetType = TransformNode> {\n /** Number of nodes in the array. */\n length: IObjectAccessor<GLTFTargetType[], BabylonTargetType[], FlowGraphInteger>;\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 camera: IObjectAccessor<GLTFTargetType, any, string | undefined>;\n mesh: IObjectAccessor<GLTFTargetType, any, string | undefined>;\n skin: IObjectAccessor<GLTFTargetType, any, string | undefined>;\n parent: IObjectAccessor<GLTFTargetType, any, string | undefined>;\n children: {\n length: IObjectAccessor<number[], any, FlowGraphInteger>;\n __array__: { __target__: boolean } & IObjectAccessor<any, any, string>;\n };\n weights: {\n /** When true, the path converter skips objectTree traversal for this property, keeping the parent target. */\n __passThroughTarget__?: boolean;\n length: IObjectAccessor<GLTFTargetType, BabylonTargetType, FlowGraphInteger>;\n // The per-element target alternates between TransformNode (when the index is\n // out of range or no morph host is reachable) and MorphTarget (when it is),\n // so we widen the BabylonTargetType to `any` here.\n __array__: { __target__: boolean } & IObjectAccessor<GLTFTargetType, any, 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\n/**\n * Accessor tree describing the `/cameras` section of the glTF Object Model.\n * Exposes orthographic and perspective camera properties.\n */\nexport interface IGLTFObjectModelTreeCamerasObject {\n /** Number of cameras in the array. */\n length: IObjectAccessor<ICamera[], any, FlowGraphInteger>;\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\n/**\n * Accessor tree describing the `/materials` section of the glTF Object Model.\n * Covers core PBR properties as well as the family of KHR_materials_* extensions.\n */\nexport interface IGLTFObjectModelTreeMaterialsObject {\n /** Number of materials in the array. */\n length: IObjectAccessor<IMaterial[], PBRMaterial[], FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n doubleSided: IObjectAccessor<IMaterial, PBRMaterial, boolean>;\n alphaCutoff: IObjectAccessor<IMaterial, PBRMaterial, number>;\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\n/**\n * Accessor tree describing the `/meshes` section of the glTF Object Model.\n * Exposes per-mesh primitives (and their material refs) and the mesh-level\n * morph-target weights array.\n */\nexport interface IGLTFObjectModelTreeMeshesObject {\n /** Number of meshes in the array. */\n length: IObjectAccessor<IMesh[], (Mesh | undefined)[], FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n primitives: {\n length: IObjectAccessor<IMeshPrimitive[], any, FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n material: IObjectAccessor<any, any, string | undefined>;\n };\n };\n weights: {\n length: IObjectAccessor<number[], any, FlowGraphInteger>;\n __array__: { __target__: boolean } & IObjectAccessor<any, any, number>;\n };\n };\n}\n\n/**\n * Accessor tree describing the `/scenes` section of the glTF Object Model.\n * Per-scene root-node refs are exposed under `nodes/{i}`.\n */\nexport interface IGLTFObjectModelTreeScenesObject {\n /** Number of scenes in the array. */\n length: IObjectAccessor<IScene[], any, FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n nodes: {\n length: IObjectAccessor<number[], any, FlowGraphInteger>;\n __array__: { __target__: boolean } & IObjectAccessor<any, any, string>;\n };\n };\n}\n\n/**\n * Accessor tree describing the `/skins` section of the glTF Object Model.\n * Joint and skeleton properties are exposed as JSON-Pointer refs.\n */\nexport interface IGLTFObjectModelTreeSkinsObject {\n /** Number of skins in the array. */\n length: IObjectAccessor<ISkin[], any, FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n joints: {\n length: IObjectAccessor<number[], any, FlowGraphInteger>;\n __array__: { __target__: boolean } & IObjectAccessor<any, any, string>;\n };\n skeleton: IObjectAccessor<ISkin, any, string | undefined>;\n };\n}\n\n/**\n * Accessor tree describing root-level glTF extensions exposed through the\n * Object Model. Currently covers the punctual / area / IES / image-based\n * light extension families.\n */\nexport interface IGLTFObjectModelTreeExtensionsObject {\n /** Accessor tree for `/extensions/KHR_lights_punctual`. */\n KHR_lights_punctual: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], FlowGraphInteger>;\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 /** Accessor tree for `/extensions/EXT_lights_area`. */\n EXT_lights_area: {\n lights: {\n length: IObjectAccessor<IEXTLightsArea_Light[], Light[], FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n color: IObjectAccessor<IEXTLightsArea_Light, Light, Color3>;\n intensity: IObjectAccessor<IEXTLightsArea_Light, Light, number>;\n size: IObjectAccessor<IEXTLightsArea_Light, Light, number>;\n rect: {\n aspect: IObjectAccessor<IEXTLightsArea_Light, Light, number>;\n };\n };\n };\n };\n /** Accessor tree for `/extensions/EXT_lights_ies`. */\n EXT_lights_ies: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], FlowGraphInteger>;\n };\n };\n /** Accessor tree for `/extensions/EXT_lights_image_based`. */\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[], FlowGraphInteger>;\n };\n };\n}\n\n/**\n * Builds an accessor for an array `length` pointer (e.g. `/nodes.length`, `/meshes/{}/primitives.length`).\n *\n * The KHR object model types these `length` values as `int`, so the accessor reports the count as a\n * {@link FlowGraphInteger} (type {@link FlowGraphTypes.Integer}). Keeping the representation an integer\n * at the source lets integer-typed consumers such as `FlowGraphIntToFloat` accept the precise\n * `RichTypeFlowGraphInteger` instead of a widened `RichTypeAny`.\n * @param getLength returns the raw count for the addressed array; may be `undefined` when the array is not addressable\n * @param getTarget returns the Babylon object(s) backing the array\n * @returns an object accessor whose value is the count as a {@link FlowGraphInteger}\n */\nfunction _CreateLengthAccessor<GLTFTargetType, BabylonTargetType>(\n getLength: (target: GLTFTargetType) => number | undefined,\n getTarget: (target: GLTFTargetType) => BabylonTargetType\n): IObjectAccessor<GLTFTargetType, BabylonTargetType, FlowGraphInteger> {\n return {\n type: FlowGraphTypes.Integer,\n get: (target: GLTFTargetType) => {\n const length = getLength(target);\n return length === undefined ? undefined : FlowGraphInteger.FromValue(length);\n },\n getTarget,\n getPropertyName: [() => \"length\"],\n };\n}\n\nconst nodesTree: IGLTFObjectModelTreeNodesObject = {\n length: _CreateLengthAccessor(\n (nodes: INode[]) => nodes.length,\n (nodes: INode[]) => nodes.map((node) => node._babylonTransformNode!)\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 // Skip glTF objectTree traversal — weights may be undefined on the glTF node\n // but accessible via the Babylon MorphTargetManager on the INode's meshes\n __passThroughTarget__: true,\n length: _CreateLengthAccessor(\n (node: INode) => {\n const found = _findNodeMorphTargets(node);\n return found ? found.mtm.numTargets : node?.mesh !== undefined ? 0 : undefined;\n },\n (node: INode) => node?._babylonTransformNode!\n ),\n __array__: {\n __target__: true,\n type: \"number\",\n get: (node: INode, index?: number) => {\n const found = _findNodeMorphTargets(node);\n if (found && index !== undefined && index >= 0 && index < found.mtm.numTargets) {\n return _roundFloat32Artifact(found.mtm.getTarget(index).influence);\n }\n return undefined;\n },\n set: (value: any, node: INode, index?: number) => {\n const numValue = typeof value === \"number\" ? value : typeof value?.value === \"number\" ? value.value : value;\n const found = _findNodeMorphTargets(node);\n if (!found || index === undefined || index < 0 || index >= found.mtm.numTargets) {\n return;\n }\n // Fan out to every mesh that shares this morph target manager so\n // multi-primitive meshes stay in sync.\n for (const mesh of found.meshes) {\n const target = mesh.morphTargetManager?.getTarget(index);\n if (target) {\n target.influence = numValue;\n }\n }\n },\n getTarget: (node: INode, index?: number) => {\n const found = _findNodeMorphTargets(node);\n if (found && index !== undefined && index >= 0 && index < found.mtm.numTargets) {\n return found.mtm.getTarget(index);\n }\n return node?._babylonTransformNode;\n },\n getPropertyName: [() => \"influence\"],\n },\n type: \"number[]\",\n get: (node: INode) => {\n const found = _findNodeMorphTargets(node);\n if (!found) {\n return [];\n }\n const weights: number[] = [];\n for (let i = 0; i < found.mtm.numTargets; i++) {\n weights.push(_roundFloat32Artifact(found.mtm.getTarget(i).influence));\n }\n return weights;\n },\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 camera: {\n type: \"string\",\n // Per KHR_interactivity Object Model: read-only ref pointing to the\n // attached camera, encoded as a JSON Pointer string. Empty string\n // when no camera is attached (the spec's null-ref convention).\n get: (node: INode) => (node.camera !== undefined ? `/cameras/${node.camera}` : \"\"),\n getTarget: (node: INode) => node,\n isReadOnly: true,\n },\n mesh: {\n type: \"string\",\n get: (node: INode) => (node.mesh !== undefined ? `/meshes/${node.mesh}` : \"\"),\n getTarget: (node: INode) => node,\n isReadOnly: true,\n },\n skin: {\n type: \"string\",\n get: (node: INode) => (node.skin !== undefined ? `/skins/${node.skin}` : \"\"),\n getTarget: (node: INode) => node,\n isReadOnly: true,\n },\n parent: {\n type: \"string\",\n get: (node: INode) => (node.parent && node.parent.index !== undefined ? `/nodes/${node.parent.index}` : \"\"),\n getTarget: (node: INode) => node,\n isReadOnly: true,\n },\n children: {\n length: _CreateLengthAccessor(\n (children: number[]) => children?.length ?? 0,\n (children: number[]) => children ?? []\n ),\n __array__: {\n __target__: true,\n type: \"string\",\n // The wrapping converter passes the indexed child value (an\n // INode index); convert it to a JSON Pointer ref string.\n get: (childIndex: any) => (typeof childIndex === \"number\" ? `/nodes/${childIndex}` : \"\"),\n getTarget: () => ({ __nodeIndex: true }),\n isReadOnly: true,\n },\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: _CreateLengthAccessor(\n (animations: IAnimation[]) => animations.length,\n (animations: IAnimation[]) => animations.map((animation) => animation._babylonAnimationGroup!)\n ),\n __array__: {\n // Indexed access to the animation, surfaced as a JSON Pointer ref string so blocks like\n // ``animation/start`` can consume it directly. Uses the animation's own ``index`` property\n // (populated by the loader's ArrayItem.Assign step) so the ref is resolved without needing\n // a separate index payload from the path converter.\n __target__: true,\n type: \"string\",\n get: (animation: IAnimation) => (animation && typeof animation.index === \"number\" ? `/animations/${animation.index}` : \"\"),\n getTarget: (animation: IAnimation) => animation._babylonAnimationGroup,\n isReadOnly: true,\n },\n};\n\nconst meshesTree: IGLTFObjectModelTreeMeshesObject = {\n length: _CreateLengthAccessor(\n (meshes: IMesh[]) => meshes.length,\n (meshes: IMesh[]) => meshes.map((mesh) => mesh.primitives[0]._instanceData?.babylonSourceMesh)\n ),\n __array__: {\n __target__: true,\n primitives: {\n length: _CreateLengthAccessor(\n (primitives: IMeshPrimitive[]) => primitives?.length ?? 0,\n (primitives: IMeshPrimitive[]) => primitives ?? []\n ),\n __array__: {\n __target__: true,\n material: {\n type: \"string\",\n // Read-only ref to the assigned material, JSON Pointer encoded.\n get: (primitive: IMeshPrimitive) => (primitive.material !== undefined ? `/materials/${primitive.material}` : \"\"),\n getTarget: (primitive: IMeshPrimitive) => primitive,\n isReadOnly: true,\n },\n },\n },\n weights: {\n length: _CreateLengthAccessor(\n (weights: number[]) => weights?.length ?? 0,\n (weights: number[]) => weights ?? []\n ),\n __array__: {\n __target__: true,\n type: \"number\",\n get: (weightValue: any) => weightValue,\n getTarget: () => ({ __weightValue: true }),\n isReadOnly: true,\n },\n },\n },\n};\n\nconst camerasTree: IGLTFObjectModelTreeCamerasObject = {\n length: _CreateLengthAccessor(\n (cameras: ICamera[]) => cameras.length,\n (cameras: ICamera[]) => cameras.map((camera) => camera._babylonCamera!)\n ),\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 length: _CreateLengthAccessor(\n (materials: IMaterial[]) => materials.length,\n (materials: IMaterial[]) => materials.map((material) => material._data?.[Constants.MATERIAL_TriangleFillMode]?.babylonMaterial as PBRMaterial)\n ),\n __array__: {\n __target__: true,\n doubleSided: {\n type: \"boolean\",\n get: (material, index?, payload?) => !GetMaterial(material, index, payload)?.backFaceCulling,\n set: (value: boolean, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.backFaceCulling = !value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"backFaceCulling\"],\n },\n alphaCutoff: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload)?.alphaCutOff,\n set: (value: number, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.alphaCutOff = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"alphaCutOff\"],\n },\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 const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.anisotropy.intensity = value;\n }\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 const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.anisotropy.angle = value;\n }\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\", \"textureRoughness\"),\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 extensionKey: \"KHR_materials_transmission\",\n texturePath: [\"transmissionTexture\"],\n }),\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 extensionKey: \"KHR_materials_diffuse_transmission\",\n texturePath: [\"diffuseTransmissionTexture\"],\n }),\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 extensionKey: \"KHR_materials_diffuse_transmission\",\n texturePath: [\"diffuseTransmissionColorTexture\"],\n }),\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\", { extensionKey: \"KHR_materials_volume\", texturePath: [\"thicknessTexture\"] }),\n },\n },\n },\n },\n },\n};\n\nconst extensionsTree: IGLTFObjectModelTreeExtensionsObject = {\n KHR_lights_punctual: {\n lights: {\n length: _CreateLengthAccessor(\n (lights: IKHRLightsPunctual_Light[]) => lights.length,\n (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!)\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_area: {\n lights: {\n length: _CreateLengthAccessor(\n (lights: IEXTLightsArea_Light[]) => lights.length,\n (lights: IEXTLightsArea_Light[]) => lights.map((light) => light._babylonLight!)\n ),\n __array__: {\n __target__: true,\n color: {\n type: \"Color3\",\n get: (light: IEXTLightsArea_Light) => light._babylonLight?.diffuse,\n set: (value: Color3, light: IEXTLightsArea_Light) => light._babylonLight?.diffuse.copyFrom(value),\n getTarget: (light: IEXTLightsArea_Light) => light._babylonLight,\n getPropertyName: [(_light: IEXTLightsArea_Light) => \"diffuse\"],\n },\n intensity: {\n type: \"number\",\n get: (light: IEXTLightsArea_Light) => light._babylonLight?.intensity,\n set: (value: number, light: IEXTLightsArea_Light) => (light._babylonLight ? (light._babylonLight.intensity = value) : undefined),\n getTarget: (light: IEXTLightsArea_Light) => light._babylonLight,\n getPropertyName: [(_light: IEXTLightsArea_Light) => \"intensity\"],\n },\n size: {\n type: \"number\",\n get: (light: IEXTLightsArea_Light) => (light._babylonLight as RectAreaLight)?.height,\n set: (value: number, light: IEXTLightsArea_Light) => (light._babylonLight ? ((light._babylonLight as RectAreaLight).height = value) : undefined),\n getTarget: (light: IEXTLightsArea_Light) => light._babylonLight,\n getPropertyName: [(_light: IEXTLightsArea_Light) => \"size\"],\n },\n rect: {\n aspect: {\n type: \"number\",\n get: (light: IEXTLightsArea_Light) => (light._babylonLight as RectAreaLight)?.width / (light._babylonLight as RectAreaLight)?.height,\n set: (value: number, light: IEXTLightsArea_Light) =>\n light._babylonLight ? ((light._babylonLight as RectAreaLight).width = value * (light._babylonLight as RectAreaLight).height) : undefined,\n getTarget: (light: IEXTLightsArea_Light) => light._babylonLight,\n getPropertyName: [(_light: IEXTLightsArea_Light) => \"aspect\"],\n },\n },\n },\n },\n },\n EXT_lights_ies: {\n lights: {\n length: _CreateLengthAccessor(\n (lights: IKHRLightsPunctual_Light[]) => lights.length,\n (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!)\n ),\n },\n },\n EXT_lights_image_based: {\n lights: {\n length: _CreateLengthAccessor(\n (lights: IEXTLightsImageBased_LightImageBased[]) => lights.length,\n (lights: IEXTLightsImageBased_LightImageBased[]) => lights.map((light) => light._babylonTexture!)\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 _getNodeMorphTargetManager(node: INode): any {\n const tn = node?._babylonTransformNode;\n if (!tn) {\n return undefined;\n }\n // Single primitive: transform node IS the mesh with morphTargetManager\n if ((tn as any).morphTargetManager) {\n return (tn as any).morphTargetManager;\n }\n // Multiple primitives: check each primitive mesh and its source\n const primMeshes = node._primitiveBabylonMeshes;\n if (primMeshes) {\n for (const mesh of primMeshes) {\n if (mesh?.morphTargetManager) {\n return mesh.morphTargetManager;\n }\n // Check source mesh for instanced meshes\n if ((mesh as any)?.sourceMesh?.morphTargetManager) {\n return (mesh as any).sourceMesh.morphTargetManager;\n }\n }\n }\n return undefined;\n}\n\n/**\n * Result of a morph-target lookup: the active manager plus every Babylon mesh\n * that shares it, so writes (set) can fan out across all primitives.\n */\ninterface IMorphTargetLookup {\n mtm: MorphTargetManager;\n meshes: AbstractMesh[];\n}\n\n/**\n * KHR_interactivity test assets routinely use a glTF hierarchy where the\n * **parent** node has no `mesh` but a descendant does. The Khronos morph-weight\n * tests query `/nodes/<parent>/weights/*` and expect the result to come from\n * the morph targets of the first descendant mesh. To support this we walk the\n * Babylon-side scene graph below the queried INode looking for a Mesh that has\n * a morphTargetManager.\n *\n * For multi-primitive meshes (one INode → several Babylon meshes parented to a\n * wrapper TransformNode) we also collect the sibling primitives so a `set`\n * touches every mesh that shares the manager.\n * @param node the glTF node to start the lookup from\n * @returns the active morph target manager and every Babylon mesh that shares\n * it, or `undefined` when no morph target manager is reachable from the node.\n */\nfunction _findNodeMorphTargets(node: INode): IMorphTargetLookup | undefined {\n const tn = node?._babylonTransformNode;\n if (!tn) {\n return undefined;\n }\n // Direct: this node's own mesh has a morph target manager.\n const directMtm: MorphTargetManager | undefined = _getNodeMorphTargetManager(node);\n if (directMtm && node._primitiveBabylonMeshes && node._primitiveBabylonMeshes.length > 0) {\n return { mtm: directMtm, meshes: node._primitiveBabylonMeshes as AbstractMesh[] };\n }\n // Fallback: search descendants in the Babylon scene graph for the first\n // mesh that has a morph target manager, then collect every sibling mesh\n // that shares it (covers the multi-primitive case).\n const descendants = tn.getDescendants(false);\n for (const desc of descendants) {\n const candidate = desc as AbstractMesh;\n const mtm: MorphTargetManager | undefined = (candidate as any).morphTargetManager ?? (candidate as any).sourceMesh?.morphTargetManager;\n if (!mtm) {\n continue;\n }\n const meshes: AbstractMesh[] = [];\n const parent = candidate.parent;\n if (parent) {\n for (const sib of parent.getChildMeshes(true)) {\n const sibMtm: MorphTargetManager | undefined = (sib as any).morphTargetManager ?? (sib as any).sourceMesh?.morphTargetManager;\n if (sibMtm === mtm) {\n meshes.push(sib);\n }\n }\n }\n if (meshes.length === 0) {\n meshes.push(candidate);\n }\n return { mtm, meshes };\n }\n return undefined;\n}\n\n/**\n * Collapse float32-precision artifacts back to the closest \"clean\" double.\n *\n * glTF stores numbers as JSON, but tools usually serialize float32 morph weights\n * with their full double-precision text — `0.1` becomes `0.10000000149011612`.\n * KHR_interactivity tests then compare the read-back weight via strict `math/eq`\n * against literals like `0.1`, which fails because the two doubles aren't bitwise\n * equal. Rounding the value to 7 significant figures (the precision of a float32)\n * recovers the original \"clean\" double for any value that survived a float32\n * round-trip while leaving genuinely high-precision doubles essentially intact.\n * @param v the value to round\n * @returns the rounded value, or the input unchanged if it is not finite\n */\nfunction _roundFloat32Artifact(v: number): number {\n if (!Number.isFinite(v)) {\n return v;\n }\n return parseFloat(v.toPrecision(7));\n}\n/**\n * Coordinate where a Babylon `Texture` lives on a PBRMaterial vs where its\n * KHR_texture_transform definition lives in the source glTF JSON. Used by\n * {@link GenerateTextureMap} to provide a glTF-side fallback when the loader\n * extension that owns the texture decided not to materialise it on the\n * Babylon material (e.g. KHR_materials_volume early-returns when there is no\n * `thicknessFactor`, leaving `subSurface.thicknessTexture` null even though\n * the glTF JSON has the texture+transform fully defined).\n *\n * The fallback gives KHR_interactivity `pointer/get` and `pointer/set` a\n * place to read/write the transform values so round-trip tests succeed even\n * when the texture is not yet active in the renderer. If/when the loader\n * later activates the texture, the seeded values can be picked up from the\n * glTF JSON.\n */\ninterface IGltfTextureTransformPath {\n /**\n * The path of nested keys under `material.extensions.<ext>` to reach the\n * texture-info object. For example `[\"thicknessTexture\"]` for\n * `KHR_materials_volume.thicknessTexture`.\n */\n extensionKey: string;\n texturePath: string[];\n}\n\n/**\n * Read the KHR_texture_transform object stored in the source glTF JSON for a\n * texture-info that lives under one of the material's extensions, creating\n * empty parent objects on demand so callers can write through it. Returns\n * `undefined` when the input shape is incompatible.\n * @param material the source IMaterial owning the extension\n * @param gltfPath the path describing where the texture-info lives\n * @param createMissing when true, create missing parent objects so writes succeed\n * @returns the glTF-side KHR_texture_transform object, or undefined\n */\nfunction _gltfTextureTransform(material: IMaterial, gltfPath: IGltfTextureTransformPath, createMissing: boolean): any | undefined {\n if (!material) {\n return undefined;\n }\n let extensions = material.extensions;\n if (!extensions) {\n if (!createMissing) {\n return undefined;\n }\n extensions = {};\n material.extensions = extensions;\n }\n let cursor: any = extensions[gltfPath.extensionKey];\n if (!cursor) {\n if (!createMissing) {\n return undefined;\n }\n cursor = {};\n extensions[gltfPath.extensionKey] = cursor;\n }\n for (const key of gltfPath.texturePath) {\n let next = cursor[key];\n if (!next) {\n if (!createMissing) {\n return undefined;\n }\n next = {};\n cursor[key] = next;\n }\n cursor = next;\n }\n if (!cursor.extensions) {\n if (!createMissing) {\n return undefined;\n }\n cursor.extensions = {};\n }\n let xform = cursor.extensions.KHR_texture_transform;\n if (!xform) {\n if (!createMissing) {\n return undefined;\n }\n xform = {};\n cursor.extensions.KHR_texture_transform = xform;\n }\n return xform;\n}\n\nfunction GenerateTextureMap(textureType: keyof PBRMaterial, textureInObject?: string, gltfPath?: IGltfTextureTransformPath): 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 if (texture) {\n return new Vector2(texture.uOffset, texture.vOffset);\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, false);\n const o = xform?.offset;\n return new Vector2(o?.[0] ?? 0, o?.[1] ?? 0);\n }\n return new Vector2(0, 0);\n },\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n if (texture) {\n texture.uOffset = value.x;\n texture.vOffset = value.y;\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, true);\n if (xform) {\n xform.offset = [value.x, value.y];\n }\n }\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?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n if (texture) {\n return texture.wAng;\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, false);\n return xform?.rotation ?? 0;\n }\n return 0;\n },\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n if (texture) {\n texture.wAng = value;\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, true);\n if (xform) {\n xform.rotation = value;\n }\n }\n },\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 if (texture) {\n return new Vector2(texture.uScale, texture.vScale);\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, false);\n const s = xform?.scale;\n return new Vector2(s?.[0] ?? 1, s?.[1] ?? 1);\n }\n return new Vector2(1, 1);\n },\n getTarget: GetMaterial,\n set: (value, material, index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n if (texture) {\n texture.uScale = value.x;\n texture.vScale = value.y;\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, true);\n if (xform) {\n xform.scale = [value.x, value.y];\n }\n }\n },\n getPropertyName: [\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.uScale`,\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.vScale`,\n ],\n },\n };\n}\n\nconst scenesTree: IGLTFObjectModelTreeScenesObject = {\n length: _CreateLengthAccessor(\n (scenes: IScene[]) => scenes.length,\n (scenes: IScene[]) => scenes\n ),\n __array__: {\n __target__: true,\n nodes: {\n length: _CreateLengthAccessor(\n (nodes: number[]) => nodes?.length ?? 0,\n (nodes: number[]) => nodes ?? []\n ),\n __array__: {\n __target__: true,\n type: \"string\",\n // Indexed scene root: the underlying value is the INode index;\n // KHR_interactivity expects a ref-typed JSON Pointer string.\n get: (nodeIndex: any) => (typeof nodeIndex === \"number\" ? `/nodes/${nodeIndex}` : \"\"),\n getTarget: () => ({ __nodeIndex: true }),\n isReadOnly: true,\n },\n },\n },\n};\n\nconst skinsTree: IGLTFObjectModelTreeSkinsObject = {\n length: _CreateLengthAccessor(\n (skins: ISkin[]) => skins.length,\n (skins: ISkin[]) => skins.map((skin) => skin._data?.babylonSkeleton)\n ),\n __array__: {\n __target__: true,\n joints: {\n length: _CreateLengthAccessor(\n (joints: number[]) => joints?.length ?? 0,\n (joints: number[]) => joints ?? []\n ),\n __array__: {\n __target__: true,\n type: \"string\",\n // Indexed skin joint: returns a ref to the joint node.\n get: (jointIndex: any) => (typeof jointIndex === \"number\" ? `/nodes/${jointIndex}` : \"\"),\n getTarget: () => ({ __nodeIndex: true }),\n isReadOnly: true,\n },\n },\n skeleton: {\n type: \"string\",\n // Skin's skeleton root: returns a ref to the root node, or empty\n // (null ref) when no skeleton root is declared.\n get: (skin: ISkin) => {\n const skeleton = (skin as any).skeleton;\n return typeof skeleton === \"number\" ? `/nodes/${skeleton}` : \"\";\n },\n getTarget: (skin: ISkin) => skin,\n isReadOnly: true,\n },\n },\n};\n\nconst objectModelMapping: IGLTFObjectModelTree = {\n scene: {\n __target__: true,\n type: \"number\",\n get: (sceneIndex: any) => sceneIndex ?? 0,\n getTarget: () => ({ __gltfRoot: true }),\n isReadOnly: true,\n getPropertyName: [() => \"scene\"],\n },\n cameras: camerasTree,\n nodes: nodesTree,\n materials: materialsTree,\n extensions: extensionsTree,\n animations: animationsTree,\n meshes: meshesTree,\n scenes: scenesTree,\n skins: skinsTree,\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 AbstractMesh } from \"core/Meshes/abstractMesh\";\nimport { type MorphTargetManager } from \"core/Morph/morphTargetManager\";\nimport {\n type IAnimation,\n type ICamera,\n type IGLTF,\n type IKHRLightsPunctual_Light,\n type IEXTLightsArea_Light,\n type IMaterial,\n type IMesh,\n type IMeshPrimitive,\n type INode,\n type IScene,\n type ISkin,\n} from \"../glTFLoaderInterfaces\";\nimport { type Vector3, Matrix, Quaternion, Vector2 } from \"core/Maths/math.vector.pure\";\nimport { Constants } from \"core/Engines/constants\";\nimport { type Color3, Color4 } from \"core/Maths/math.color.pure\";\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.pure\";\nimport { type IEXTLightsImageBased_LightImageBased } from \"babylonjs-gltf2interface\";\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\nimport { type IInterpolationPropertyInfo, type IObjectAccessor } from \"core/FlowGraph/typeDefinitions\";\nimport { FlowGraphInteger } from \"core/FlowGraph/CustomTypes/flowGraphInteger.pure\";\nimport { FlowGraphTypes } from \"core/FlowGraph/flowGraphRichTypes.pure\";\nimport { GLTFPathToObjectConverter } from \"./gltfPathToObjectConverter\";\nimport { type AnimationGroup } from \"core/Animations/animationGroup\";\nimport { type Mesh } from \"core/Meshes/mesh\";\nimport { type RectAreaLight } from \"core/Lights/rectAreaLight\";\n\n/**\n * Top-level shape of the glTF Object Model accessor tree. Each property\n * describes a navigable section of the JSON-Pointer namespace (e.g. `/nodes`,\n * `/materials`, `/scenes`) that KHR_interactivity, KHR_animation_pointer and\n * other extensions consume via {@link GetMappingForKey}.\n */\nexport interface IGLTFObjectModelTree {\n /** Read-only accessor for the active scene index (`/scene`). */\n scene: { __target__: boolean } & IObjectAccessor<number | undefined, any, number>;\n /** Accessor tree for `/cameras`. */\n cameras: IGLTFObjectModelTreeCamerasObject;\n /** Accessor tree for `/nodes`. */\n nodes: IGLTFObjectModelTreeNodesObject;\n /** Accessor tree for `/materials`. */\n materials: IGLTFObjectModelTreeMaterialsObject;\n /** Accessor tree for `/extensions` (root-level glTF extensions). */\n extensions: IGLTFObjectModelTreeExtensionsObject;\n /** Accessor tree for `/animations`. */\n animations: {\n length: IObjectAccessor<IAnimation[], AnimationGroup[], FlowGraphInteger>;\n __array__: {};\n };\n /** Accessor tree for `/meshes`. */\n meshes: IGLTFObjectModelTreeMeshesObject;\n /** Accessor tree for `/scenes`. */\n scenes: IGLTFObjectModelTreeScenesObject;\n /** Accessor tree for `/skins`. */\n skins: IGLTFObjectModelTreeSkinsObject;\n}\n\n/**\n * Accessor tree describing the `/nodes` section of the glTF Object Model.\n * Exposes per-node TRS, ref-typed parent/children/camera/mesh/skin links,\n * morph-target weights and node-extension properties.\n */\nexport interface IGLTFObjectModelTreeNodesObject<GLTFTargetType = INode, BabylonTargetType = TransformNode> {\n /** Number of nodes in the array. */\n length: IObjectAccessor<GLTFTargetType[], BabylonTargetType[], FlowGraphInteger>;\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 camera: IObjectAccessor<GLTFTargetType, any, string | undefined>;\n mesh: IObjectAccessor<GLTFTargetType, any, string | undefined>;\n skin: IObjectAccessor<GLTFTargetType, any, string | undefined>;\n parent: IObjectAccessor<GLTFTargetType, any, string | undefined>;\n children: {\n length: IObjectAccessor<number[], any, FlowGraphInteger>;\n __array__: { __target__: boolean } & IObjectAccessor<any, any, string>;\n };\n weights: {\n /** When true, the path converter skips objectTree traversal for this property, keeping the parent target. */\n __passThroughTarget__?: boolean;\n length: IObjectAccessor<GLTFTargetType, BabylonTargetType, FlowGraphInteger>;\n // The per-element target alternates between TransformNode (when the index is\n // out of range or no morph host is reachable) and MorphTarget (when it is),\n // so we widen the BabylonTargetType to `any` here.\n __array__: { __target__: boolean } & IObjectAccessor<GLTFTargetType, any, 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\n/**\n * Accessor tree describing the `/cameras` section of the glTF Object Model.\n * Exposes orthographic and perspective camera properties.\n */\nexport interface IGLTFObjectModelTreeCamerasObject {\n /** Number of cameras in the array. */\n length: IObjectAccessor<ICamera[], any, FlowGraphInteger>;\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\n/**\n * Accessor tree describing the `/materials` section of the glTF Object Model.\n * Covers core PBR properties as well as the family of KHR_materials_* extensions.\n */\nexport interface IGLTFObjectModelTreeMaterialsObject {\n /** Number of materials in the array. */\n length: IObjectAccessor<IMaterial[], PBRMaterial[], FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n doubleSided: IObjectAccessor<IMaterial, PBRMaterial, boolean>;\n alphaCutoff: IObjectAccessor<IMaterial, PBRMaterial, number>;\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\n/**\n * Accessor tree describing the `/meshes` section of the glTF Object Model.\n * Exposes per-mesh primitives (and their material refs) and the mesh-level\n * morph-target weights array.\n */\nexport interface IGLTFObjectModelTreeMeshesObject {\n /** Number of meshes in the array. */\n length: IObjectAccessor<IMesh[], (Mesh | undefined)[], FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n primitives: {\n length: IObjectAccessor<IMeshPrimitive[], any, FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n material: IObjectAccessor<any, any, string | undefined>;\n };\n };\n weights: {\n length: IObjectAccessor<number[], any, FlowGraphInteger>;\n __array__: { __target__: boolean } & IObjectAccessor<any, any, number>;\n };\n };\n}\n\n/**\n * Accessor tree describing the `/scenes` section of the glTF Object Model.\n * Per-scene root-node refs are exposed under `nodes/{i}`.\n */\nexport interface IGLTFObjectModelTreeScenesObject {\n /** Number of scenes in the array. */\n length: IObjectAccessor<IScene[], any, FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n nodes: {\n length: IObjectAccessor<number[], any, FlowGraphInteger>;\n __array__: { __target__: boolean } & IObjectAccessor<any, any, string>;\n };\n };\n}\n\n/**\n * Accessor tree describing the `/skins` section of the glTF Object Model.\n * Joint and skeleton properties are exposed as JSON-Pointer refs.\n */\nexport interface IGLTFObjectModelTreeSkinsObject {\n /** Number of skins in the array. */\n length: IObjectAccessor<ISkin[], any, FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n joints: {\n length: IObjectAccessor<number[], any, FlowGraphInteger>;\n __array__: { __target__: boolean } & IObjectAccessor<any, any, string>;\n };\n skeleton: IObjectAccessor<ISkin, any, string | undefined>;\n };\n}\n\n/**\n * Accessor tree describing root-level glTF extensions exposed through the\n * Object Model. Currently covers the punctual / area / IES / image-based\n * light extension families.\n */\nexport interface IGLTFObjectModelTreeExtensionsObject {\n /** Accessor tree for `/extensions/KHR_lights_punctual`. */\n KHR_lights_punctual: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], FlowGraphInteger>;\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 /** Accessor tree for `/extensions/EXT_lights_area`. */\n EXT_lights_area: {\n lights: {\n length: IObjectAccessor<IEXTLightsArea_Light[], Light[], FlowGraphInteger>;\n __array__: {\n __target__: boolean;\n color: IObjectAccessor<IEXTLightsArea_Light, Light, Color3>;\n intensity: IObjectAccessor<IEXTLightsArea_Light, Light, number>;\n size: IObjectAccessor<IEXTLightsArea_Light, Light, number>;\n rect: {\n aspect: IObjectAccessor<IEXTLightsArea_Light, Light, number>;\n };\n };\n };\n };\n /** Accessor tree for `/extensions/EXT_lights_ies`. */\n EXT_lights_ies: {\n lights: {\n length: IObjectAccessor<IKHRLightsPunctual_Light[], Light[], FlowGraphInteger>;\n };\n };\n /** Accessor tree for `/extensions/EXT_lights_image_based`. */\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[], FlowGraphInteger>;\n };\n };\n}\n\n/**\n * Builds an accessor for an array `length` pointer (e.g. `/nodes.length`, `/meshes/{}/primitives.length`).\n *\n * The KHR object model types these `length` values as `int`, so the accessor reports the count as a\n * {@link FlowGraphInteger} (type {@link FlowGraphTypes.Integer}). Keeping the representation an integer\n * at the source lets integer-typed consumers such as `FlowGraphIntToFloat` accept the precise\n * `RichTypeFlowGraphInteger` instead of a widened `RichTypeAny`.\n * @param getLength returns the raw count for the addressed array; may be `undefined` when the array is not addressable\n * @param getTarget returns the Babylon object(s) backing the array\n * @returns an object accessor whose value is the count as a {@link FlowGraphInteger}\n */\nfunction _CreateLengthAccessor<GLTFTargetType, BabylonTargetType>(\n getLength: (target: GLTFTargetType) => number | undefined,\n getTarget: (target: GLTFTargetType) => BabylonTargetType\n): IObjectAccessor<GLTFTargetType, BabylonTargetType, FlowGraphInteger> {\n return {\n type: FlowGraphTypes.Integer,\n get: (target: GLTFTargetType) => {\n const length = getLength(target);\n return length === undefined ? undefined : FlowGraphInteger.FromValue(length);\n },\n getTarget,\n getPropertyName: [() => \"length\"],\n };\n}\n\nconst nodesTree: IGLTFObjectModelTreeNodesObject = {\n length: _CreateLengthAccessor(\n (nodes: INode[]) => nodes.length,\n (nodes: INode[]) => nodes.map((node) => node._babylonTransformNode!)\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 // Skip glTF objectTree traversal — weights may be undefined on the glTF node\n // but accessible via the Babylon MorphTargetManager on the INode's meshes\n __passThroughTarget__: true,\n length: _CreateLengthAccessor(\n (node: INode) => {\n const found = _findNodeMorphTargets(node);\n return found ? found.mtm.numTargets : node?.mesh !== undefined ? 0 : undefined;\n },\n (node: INode) => node?._babylonTransformNode!\n ),\n __array__: {\n __target__: true,\n type: \"number\",\n get: (node: INode, index?: number) => {\n const found = _findNodeMorphTargets(node);\n if (found && index !== undefined && index >= 0 && index < found.mtm.numTargets) {\n return _roundFloat32Artifact(found.mtm.getTarget(index).influence);\n }\n return undefined;\n },\n set: (value: any, node: INode, index?: number) => {\n const numValue = typeof value === \"number\" ? value : typeof value?.value === \"number\" ? value.value : value;\n const found = _findNodeMorphTargets(node);\n if (!found || index === undefined || index < 0 || index >= found.mtm.numTargets) {\n return;\n }\n // Fan out to every mesh that shares this morph target manager so\n // multi-primitive meshes stay in sync.\n for (const mesh of found.meshes) {\n const target = mesh.morphTargetManager?.getTarget(index);\n if (target) {\n target.influence = numValue;\n }\n }\n },\n getTarget: (node: INode, index?: number) => {\n const found = _findNodeMorphTargets(node);\n if (found && index !== undefined && index >= 0 && index < found.mtm.numTargets) {\n return found.mtm.getTarget(index);\n }\n return node?._babylonTransformNode;\n },\n getPropertyName: [() => \"influence\"],\n },\n type: \"number[]\",\n get: (node: INode) => {\n const found = _findNodeMorphTargets(node);\n if (!found) {\n return [];\n }\n const weights: number[] = [];\n for (let i = 0; i < found.mtm.numTargets; i++) {\n weights.push(_roundFloat32Artifact(found.mtm.getTarget(i).influence));\n }\n return weights;\n },\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 camera: {\n type: \"string\",\n // Per KHR_interactivity Object Model: read-only ref pointing to the\n // attached camera, encoded as a JSON Pointer string. Empty string\n // when no camera is attached (the spec's null-ref convention).\n get: (node: INode) => (node.camera !== undefined ? `/cameras/${node.camera}` : \"\"),\n getTarget: (node: INode) => node,\n isReadOnly: true,\n },\n mesh: {\n type: \"string\",\n get: (node: INode) => (node.mesh !== undefined ? `/meshes/${node.mesh}` : \"\"),\n getTarget: (node: INode) => node,\n isReadOnly: true,\n },\n skin: {\n type: \"string\",\n get: (node: INode) => (node.skin !== undefined ? `/skins/${node.skin}` : \"\"),\n getTarget: (node: INode) => node,\n isReadOnly: true,\n },\n parent: {\n type: \"string\",\n get: (node: INode) => (node.parent && node.parent.index !== undefined ? `/nodes/${node.parent.index}` : \"\"),\n getTarget: (node: INode) => node,\n isReadOnly: true,\n },\n children: {\n length: _CreateLengthAccessor(\n (children: number[]) => children?.length ?? 0,\n (children: number[]) => children ?? []\n ),\n __array__: {\n __target__: true,\n type: \"string\",\n // The wrapping converter passes the indexed child value (an\n // INode index); convert it to a JSON Pointer ref string.\n get: (childIndex: any) => (typeof childIndex === \"number\" ? `/nodes/${childIndex}` : \"\"),\n getTarget: () => ({ __nodeIndex: true }),\n isReadOnly: true,\n },\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: _CreateLengthAccessor(\n (animations: IAnimation[]) => animations.length,\n (animations: IAnimation[]) => animations.map((animation) => animation._babylonAnimationGroup!)\n ),\n __array__: {\n // Indexed access to the animation, surfaced as a JSON Pointer ref string so blocks like\n // ``animation/start`` can consume it directly. Uses the animation's own ``index`` property\n // (populated by the loader's ArrayItem.Assign step) so the ref is resolved without needing\n // a separate index payload from the path converter.\n __target__: true,\n type: \"string\",\n get: (animation: IAnimation) => (animation && typeof animation.index === \"number\" ? `/animations/${animation.index}` : \"\"),\n getTarget: (animation: IAnimation) => animation._babylonAnimationGroup,\n isReadOnly: true,\n },\n};\n\nconst meshesTree: IGLTFObjectModelTreeMeshesObject = {\n length: _CreateLengthAccessor(\n (meshes: IMesh[]) => meshes.length,\n (meshes: IMesh[]) => meshes.map((mesh) => mesh.primitives[0]._instanceData?.babylonSourceMesh)\n ),\n __array__: {\n __target__: true,\n primitives: {\n length: _CreateLengthAccessor(\n (primitives: IMeshPrimitive[]) => primitives?.length ?? 0,\n (primitives: IMeshPrimitive[]) => primitives ?? []\n ),\n __array__: {\n __target__: true,\n material: {\n type: \"string\",\n // Read-only ref to the assigned material, JSON Pointer encoded.\n get: (primitive: IMeshPrimitive) => (primitive.material !== undefined ? `/materials/${primitive.material}` : \"\"),\n getTarget: (primitive: IMeshPrimitive) => primitive,\n isReadOnly: true,\n },\n },\n },\n weights: {\n length: _CreateLengthAccessor(\n (weights: number[]) => weights?.length ?? 0,\n (weights: number[]) => weights ?? []\n ),\n __array__: {\n __target__: true,\n type: \"number\",\n get: (weightValue: any) => weightValue,\n getTarget: () => ({ __weightValue: true }),\n isReadOnly: true,\n },\n },\n },\n};\n\nconst camerasTree: IGLTFObjectModelTreeCamerasObject = {\n length: _CreateLengthAccessor(\n (cameras: ICamera[]) => cameras.length,\n (cameras: ICamera[]) => cameras.map((camera) => camera._babylonCamera!)\n ),\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 length: _CreateLengthAccessor(\n (materials: IMaterial[]) => materials.length,\n (materials: IMaterial[]) => materials.map((material) => material._data?.[Constants.MATERIAL_TriangleFillMode]?.babylonMaterial as PBRMaterial)\n ),\n __array__: {\n __target__: true,\n doubleSided: {\n type: \"boolean\",\n get: (material, index?, payload?) => !GetMaterial(material, index, payload)?.backFaceCulling,\n set: (value: boolean, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.backFaceCulling = !value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"backFaceCulling\"],\n },\n alphaCutoff: {\n type: \"number\",\n get: (material, index?, payload?) => GetMaterial(material, index, payload)?.alphaCutOff,\n set: (value: number, material, index?, payload?) => {\n const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.alphaCutOff = value;\n }\n },\n getTarget: (material, index?, payload?) => GetMaterial(material, index, payload),\n getPropertyName: [() => \"alphaCutOff\"],\n },\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 const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.anisotropy.intensity = value;\n }\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 const mat = GetMaterial(material, index, payload);\n if (mat) {\n mat.anisotropy.angle = value;\n }\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\", \"textureRoughness\"),\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 extensionKey: \"KHR_materials_transmission\",\n texturePath: [\"transmissionTexture\"],\n }),\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 extensionKey: \"KHR_materials_diffuse_transmission\",\n texturePath: [\"diffuseTransmissionTexture\"],\n }),\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 extensionKey: \"KHR_materials_diffuse_transmission\",\n texturePath: [\"diffuseTransmissionColorTexture\"],\n }),\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\", { extensionKey: \"KHR_materials_volume\", texturePath: [\"thicknessTexture\"] }),\n },\n },\n },\n },\n },\n};\n\nconst extensionsTree: IGLTFObjectModelTreeExtensionsObject = {\n KHR_lights_punctual: {\n lights: {\n length: _CreateLengthAccessor(\n (lights: IKHRLightsPunctual_Light[]) => lights.length,\n (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!)\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_area: {\n lights: {\n length: _CreateLengthAccessor(\n (lights: IEXTLightsArea_Light[]) => lights.length,\n (lights: IEXTLightsArea_Light[]) => lights.map((light) => light._babylonLight!)\n ),\n __array__: {\n __target__: true,\n color: {\n type: \"Color3\",\n get: (light: IEXTLightsArea_Light) => light._babylonLight?.diffuse,\n set: (value: Color3, light: IEXTLightsArea_Light) => light._babylonLight?.diffuse.copyFrom(value),\n getTarget: (light: IEXTLightsArea_Light) => light._babylonLight,\n getPropertyName: [(_light: IEXTLightsArea_Light) => \"diffuse\"],\n },\n intensity: {\n type: \"number\",\n get: (light: IEXTLightsArea_Light) => light._babylonLight?.intensity,\n set: (value: number, light: IEXTLightsArea_Light) => (light._babylonLight ? (light._babylonLight.intensity = value) : undefined),\n getTarget: (light: IEXTLightsArea_Light) => light._babylonLight,\n getPropertyName: [(_light: IEXTLightsArea_Light) => \"intensity\"],\n },\n size: {\n type: \"number\",\n get: (light: IEXTLightsArea_Light) => (light._babylonLight as RectAreaLight)?.height,\n set: (value: number, light: IEXTLightsArea_Light) => (light._babylonLight ? ((light._babylonLight as RectAreaLight).height = value) : undefined),\n getTarget: (light: IEXTLightsArea_Light) => light._babylonLight,\n getPropertyName: [(_light: IEXTLightsArea_Light) => \"size\"],\n },\n rect: {\n aspect: {\n type: \"number\",\n get: (light: IEXTLightsArea_Light) => (light._babylonLight as RectAreaLight)?.width / (light._babylonLight as RectAreaLight)?.height,\n set: (value: number, light: IEXTLightsArea_Light) =>\n light._babylonLight ? ((light._babylonLight as RectAreaLight).width = value * (light._babylonLight as RectAreaLight).height) : undefined,\n getTarget: (light: IEXTLightsArea_Light) => light._babylonLight,\n getPropertyName: [(_light: IEXTLightsArea_Light) => \"aspect\"],\n },\n },\n },\n },\n },\n EXT_lights_ies: {\n lights: {\n length: _CreateLengthAccessor(\n (lights: IKHRLightsPunctual_Light[]) => lights.length,\n (lights: IKHRLightsPunctual_Light[]) => lights.map((light) => light._babylonLight!)\n ),\n },\n },\n EXT_lights_image_based: {\n lights: {\n length: _CreateLengthAccessor(\n (lights: IEXTLightsImageBased_LightImageBased[]) => lights.length,\n (lights: IEXTLightsImageBased_LightImageBased[]) => lights.map((light) => light._babylonTexture!)\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 _getNodeMorphTargetManager(node: INode): any {\n const tn = node?._babylonTransformNode;\n if (!tn) {\n return undefined;\n }\n // Single primitive: transform node IS the mesh with morphTargetManager\n if ((tn as any).morphTargetManager) {\n return (tn as any).morphTargetManager;\n }\n // Multiple primitives: check each primitive mesh and its source\n const primMeshes = node._primitiveBabylonMeshes;\n if (primMeshes) {\n for (const mesh of primMeshes) {\n if (mesh?.morphTargetManager) {\n return mesh.morphTargetManager;\n }\n // Check source mesh for instanced meshes\n if ((mesh as any)?.sourceMesh?.morphTargetManager) {\n return (mesh as any).sourceMesh.morphTargetManager;\n }\n }\n }\n return undefined;\n}\n\n/**\n * Result of a morph-target lookup: the active manager plus every Babylon mesh\n * that shares it, so writes (set) can fan out across all primitives.\n */\ninterface IMorphTargetLookup {\n mtm: MorphTargetManager;\n meshes: AbstractMesh[];\n}\n\n/**\n * KHR_interactivity test assets routinely use a glTF hierarchy where the\n * **parent** node has no `mesh` but a descendant does. The Khronos morph-weight\n * tests query `/nodes/<parent>/weights/*` and expect the result to come from\n * the morph targets of the first descendant mesh. To support this we walk the\n * Babylon-side scene graph below the queried INode looking for a Mesh that has\n * a morphTargetManager.\n *\n * For multi-primitive meshes (one INode → several Babylon meshes parented to a\n * wrapper TransformNode) we also collect the sibling primitives so a `set`\n * touches every mesh that shares the manager.\n * @param node the glTF node to start the lookup from\n * @returns the active morph target manager and every Babylon mesh that shares\n * it, or `undefined` when no morph target manager is reachable from the node.\n */\nfunction _findNodeMorphTargets(node: INode): IMorphTargetLookup | undefined {\n const tn = node?._babylonTransformNode;\n if (!tn) {\n return undefined;\n }\n // Direct: this node's own mesh has a morph target manager.\n const directMtm: MorphTargetManager | undefined = _getNodeMorphTargetManager(node);\n if (directMtm && node._primitiveBabylonMeshes && node._primitiveBabylonMeshes.length > 0) {\n return { mtm: directMtm, meshes: node._primitiveBabylonMeshes as AbstractMesh[] };\n }\n // Fallback: search descendants in the Babylon scene graph for the first\n // mesh that has a morph target manager, then collect every sibling mesh\n // that shares it (covers the multi-primitive case).\n const descendants = tn.getDescendants(false);\n for (const desc of descendants) {\n const candidate = desc as AbstractMesh;\n const mtm: MorphTargetManager | undefined = (candidate as any).morphTargetManager ?? (candidate as any).sourceMesh?.morphTargetManager;\n if (!mtm) {\n continue;\n }\n const meshes: AbstractMesh[] = [];\n const parent = candidate.parent;\n if (parent) {\n for (const sib of parent.getChildMeshes(true)) {\n const sibMtm: MorphTargetManager | undefined = (sib as any).morphTargetManager ?? (sib as any).sourceMesh?.morphTargetManager;\n if (sibMtm === mtm) {\n meshes.push(sib);\n }\n }\n }\n if (meshes.length === 0) {\n meshes.push(candidate);\n }\n return { mtm, meshes };\n }\n return undefined;\n}\n\n/**\n * Collapse float32-precision artifacts back to the closest \"clean\" double.\n *\n * glTF stores numbers as JSON, but tools usually serialize float32 morph weights\n * with their full double-precision text — `0.1` becomes `0.10000000149011612`.\n * KHR_interactivity tests then compare the read-back weight via strict `math/eq`\n * against literals like `0.1`, which fails because the two doubles aren't bitwise\n * equal. Rounding the value to 7 significant figures (the precision of a float32)\n * recovers the original \"clean\" double for any value that survived a float32\n * round-trip while leaving genuinely high-precision doubles essentially intact.\n * @param v the value to round\n * @returns the rounded value, or the input unchanged if it is not finite\n */\nfunction _roundFloat32Artifact(v: number): number {\n if (!Number.isFinite(v)) {\n return v;\n }\n return parseFloat(v.toPrecision(7));\n}\n/**\n * Coordinate where a Babylon `Texture` lives on a PBRMaterial vs where its\n * KHR_texture_transform definition lives in the source glTF JSON. Used by\n * {@link GenerateTextureMap} to provide a glTF-side fallback when the loader\n * extension that owns the texture decided not to materialise it on the\n * Babylon material (e.g. KHR_materials_volume early-returns when there is no\n * `thicknessFactor`, leaving `subSurface.thicknessTexture` null even though\n * the glTF JSON has the texture+transform fully defined).\n *\n * The fallback gives KHR_interactivity `pointer/get` and `pointer/set` a\n * place to read/write the transform values so round-trip tests succeed even\n * when the texture is not yet active in the renderer. If/when the loader\n * later activates the texture, the seeded values can be picked up from the\n * glTF JSON.\n */\ninterface IGltfTextureTransformPath {\n /**\n * The path of nested keys under `material.extensions.<ext>` to reach the\n * texture-info object. For example `[\"thicknessTexture\"]` for\n * `KHR_materials_volume.thicknessTexture`.\n */\n extensionKey: string;\n texturePath: string[];\n}\n\n/**\n * Read the KHR_texture_transform object stored in the source glTF JSON for a\n * texture-info that lives under one of the material's extensions, creating\n * empty parent objects on demand so callers can write through it. Returns\n * `undefined` when the input shape is incompatible.\n * @param material the source IMaterial owning the extension\n * @param gltfPath the path describing where the texture-info lives\n * @param createMissing when true, create missing parent objects so writes succeed\n * @returns the glTF-side KHR_texture_transform object, or undefined\n */\nfunction _gltfTextureTransform(material: IMaterial, gltfPath: IGltfTextureTransformPath, createMissing: boolean): any | undefined {\n if (!material) {\n return undefined;\n }\n let extensions = material.extensions;\n if (!extensions) {\n if (!createMissing) {\n return undefined;\n }\n extensions = {};\n material.extensions = extensions;\n }\n let cursor: any = extensions[gltfPath.extensionKey];\n if (!cursor) {\n if (!createMissing) {\n return undefined;\n }\n cursor = {};\n extensions[gltfPath.extensionKey] = cursor;\n }\n for (const key of gltfPath.texturePath) {\n let next = cursor[key];\n if (!next) {\n if (!createMissing) {\n return undefined;\n }\n next = {};\n cursor[key] = next;\n }\n cursor = next;\n }\n if (!cursor.extensions) {\n if (!createMissing) {\n return undefined;\n }\n cursor.extensions = {};\n }\n let xform = cursor.extensions.KHR_texture_transform;\n if (!xform) {\n if (!createMissing) {\n return undefined;\n }\n xform = {};\n cursor.extensions.KHR_texture_transform = xform;\n }\n return xform;\n}\n\nfunction GenerateTextureMap(textureType: keyof PBRMaterial, textureInObject?: string, gltfPath?: IGltfTextureTransformPath): 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 if (texture) {\n return new Vector2(texture.uOffset, texture.vOffset);\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, false);\n const o = xform?.offset;\n return new Vector2(o?.[0] ?? 0, o?.[1] ?? 0);\n }\n return new Vector2(0, 0);\n },\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n if (texture) {\n texture.uOffset = value.x;\n texture.vOffset = value.y;\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, true);\n if (xform) {\n xform.offset = [value.x, value.y];\n }\n }\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?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n if (texture) {\n return texture.wAng;\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, false);\n return xform?.rotation ?? 0;\n }\n return 0;\n },\n getTarget: GetMaterial,\n set: (value, material, _index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n if (texture) {\n texture.wAng = value;\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, true);\n if (xform) {\n xform.rotation = value;\n }\n }\n },\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 if (texture) {\n return new Vector2(texture.uScale, texture.vScale);\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, false);\n const s = xform?.scale;\n return new Vector2(s?.[0] ?? 1, s?.[1] ?? 1);\n }\n return new Vector2(1, 1);\n },\n getTarget: GetMaterial,\n set: (value, material, index?, payload?) => {\n const texture = GetTexture(material, payload, textureType, textureInObject);\n if (texture) {\n texture.uScale = value.x;\n texture.vScale = value.y;\n }\n if (gltfPath) {\n const xform = _gltfTextureTransform(material, gltfPath, true);\n if (xform) {\n xform.scale = [value.x, value.y];\n }\n }\n },\n getPropertyName: [\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.uScale`,\n () => `${textureType}${textureInObject ? \".\" + textureInObject : \"\"}.vScale`,\n ],\n },\n };\n}\n\nconst scenesTree: IGLTFObjectModelTreeScenesObject = {\n length: _CreateLengthAccessor(\n (scenes: IScene[]) => scenes.length,\n (scenes: IScene[]) => scenes\n ),\n __array__: {\n __target__: true,\n nodes: {\n length: _CreateLengthAccessor(\n (nodes: number[]) => nodes?.length ?? 0,\n (nodes: number[]) => nodes ?? []\n ),\n __array__: {\n __target__: true,\n type: \"string\",\n // Indexed scene root: the underlying value is the INode index;\n // KHR_interactivity expects a ref-typed JSON Pointer string.\n get: (nodeIndex: any) => (typeof nodeIndex === \"number\" ? `/nodes/${nodeIndex}` : \"\"),\n getTarget: () => ({ __nodeIndex: true }),\n isReadOnly: true,\n },\n },\n },\n};\n\nconst skinsTree: IGLTFObjectModelTreeSkinsObject = {\n length: _CreateLengthAccessor(\n (skins: ISkin[]) => skins.length,\n (skins: ISkin[]) => skins.map((skin) => skin._data?.babylonSkeleton)\n ),\n __array__: {\n __target__: true,\n joints: {\n length: _CreateLengthAccessor(\n (joints: number[]) => joints?.length ?? 0,\n (joints: number[]) => joints ?? []\n ),\n __array__: {\n __target__: true,\n type: \"string\",\n // Indexed skin joint: returns a ref to the joint node.\n get: (jointIndex: any) => (typeof jointIndex === \"number\" ? `/nodes/${jointIndex}` : \"\"),\n getTarget: () => ({ __nodeIndex: true }),\n isReadOnly: true,\n },\n },\n skeleton: {\n type: \"string\",\n // Skin's skeleton root: returns a ref to the root node, or empty\n // (null ref) when no skeleton root is declared.\n get: (skin: ISkin) => {\n const skeleton = (skin as any).skeleton;\n return typeof skeleton === \"number\" ? `/nodes/${skeleton}` : \"\";\n },\n getTarget: (skin: ISkin) => skin,\n isReadOnly: true,\n },\n },\n};\n\nconst objectModelMapping: IGLTFObjectModelTree = {\n scene: {\n __target__: true,\n type: \"number\",\n get: (sceneIndex: any) => sceneIndex ?? 0,\n getTarget: () => ({ __gltfRoot: true }),\n isReadOnly: true,\n getPropertyName: [() => \"scene\"],\n },\n cameras: camerasTree,\n nodes: nodesTree,\n materials: materialsTree,\n extensions: extensionsTree,\n animations: animationsTree,\n meshes: meshesTree,\n scenes: scenesTree,\n skins: skinsTree,\n};\n\n/**\n * Creates a detached copy so asset-local accessors cannot mutate other converters.\n * @param value mapping value to clone\n * @returns the cloned mapping value\n */\nfunction _cloneObjectModelMapping<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((entry) => _cloneObjectModelMapping(entry)) as T;\n }\n if (value !== null && typeof value === \"object\") {\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return value;\n }\n const clone: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n clone[key] = _cloneObjectModelMapping(entry);\n }\n return clone as T;\n }\n return value;\n}\n\n/**\n * get a path-to-object converter for the given glTF tree\n * @param gltf the glTF tree to use\n * @param configure optional callback for adding asset-local accessors to this converter\n * @returns a path-to-object converter for the given glTF tree\n */\nexport function GetPathToObjectConverter(gltf: IGLTF, configure?: (mapping: object) => void) {\n if (!configure) {\n return new GLTFPathToObjectConverter(gltf, objectModelMapping);\n }\n const assetMapping = _cloneObjectModelMapping(objectModelMapping);\n configure(assetMapping);\n return new GLTFPathToObjectConverter(gltf, assetMapping);\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 * @param mapping object-model mapping to update; defaults to the process-wide mapping used as the template for new converters\n */\nexport function AddObjectAccessorToKey<GLTFTargetType = any, BabylonTargetType = any, BabylonValueType = any>(\n key: string,\n accessor: IObjectAccessor<GLTFTargetType, BabylonTargetType, BabylonValueType>,\n mapping: object = objectModelMapping\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 = mapping 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"]}