@babylonjs/loaders 9.26.2 → 9.27.1
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.
- package/glTF/2.0/Extensions/EXT_texture_avif.pure.js +1 -1
- package/glTF/2.0/Extensions/EXT_texture_avif.pure.js.map +1 -1
- package/glTF/2.0/Extensions/EXT_texture_webp.pure.js +1 -1
- package/glTF/2.0/Extensions/EXT_texture_webp.pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +33 -0
- package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +166 -37
- package/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/index.js +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/index.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphExporter.d.ts +243 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphExporter.js +2335 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphExporter.js.map +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.d.ts +82 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js +180 -34
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphModel.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +14 -2
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +220 -34
- package/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity/pure.d.ts +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.js +1 -0
- package/glTF/2.0/Extensions/KHR_interactivity/pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_interactivity.pure.d.ts +4 -0
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js +6 -2
- package/glTF/2.0/Extensions/KHR_interactivity.pure.js.map +1 -1
- package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js +1 -1
- package/glTF/2.0/Extensions/KHR_texture_basisu.pure.js.map +1 -1
- package/glTF/2.0/glTFLoader.pure.d.ts +2 -1
- package/glTF/2.0/glTFLoader.pure.js +41 -4
- package/glTF/2.0/glTFLoader.pure.js.map +1 -1
- package/glTF/2.0/glTFLoaderInterfaces.d.ts +9 -0
- package/glTF/2.0/glTFLoaderInterfaces.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KHR_interactivity.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_interactivity.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type IKHRInteractivity } from \"babylonjs-gltf2interface\";\r\nimport { type GLTFLoader } from \"../glTFLoader.pure\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { FlowGraphCoordinator } from \"core/FlowGraph/flowGraphCoordinator\";\r\nimport { ParseFlowGraphAsync } from \"core/FlowGraph/flowGraphParser\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension, registeredGLTFExtensions } from \"../glTFLoaderExtensionRegistry\";\r\nimport { type GLTFPathToObjectConverter } from \"./gltfPathToObjectConverter\";\r\nimport { AddObjectAccessorToKey, GetPathToObjectConverter } from \"./objectModelMapping\";\r\nimport { InteractivityGraphToFlowGraphParser } from \"./KHR_interactivity/interactivityGraphParser\";\r\nimport { addToBlockFactory } from \"core/FlowGraph/Blocks/flowGraphBlockFactory\";\r\nimport { Quaternion, Vector3 } from \"core/Maths/math.vector.pure\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { type Camera } from \"core/Cameras/camera\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { type IAnimation } from \"../glTFLoaderInterfaces\";\r\nimport { CompositePathToObjectConverter, type IPathConverterPrefixEntry } from \"./compositePathToObjectConverter\";\r\nimport { BabylonScenePathToObjectConverter, BABYLON_SCENE_OBJECT_MODEL_PREFIX, CreateDefaultBabylonSceneObjectModelTree } from \"./babylonScenePathToObjectConverter\";\r\nimport { InteractivityRefPathToObjectConverter } from \"./interactivityRefPathToObjectConverter\";\r\nimport { InteractivityAssetPathToObjectConverter, InteractivityAssetCapabilitiesPrefix, InteractivityLimitsPrefix } from \"./interactivityAssetPathToObjectConverter\";\r\nimport { EventReferencePrefix, DelayReferencePrefix } from \"./KHR_interactivity/interactivityReferences\";\r\nimport { InteractivityHostResolver } from \"./KHR_interactivity/interactivityHostResolver\";\r\nimport { type IObjectAccessor, type ISerializedFlowGraph } from \"core/FlowGraph/typeDefinitions\";\r\nimport { type IPathToObjectConverter } from \"core/ObjectModel/objectModelInterfaces\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport {\r\n CreateKHRInteractivityDocument,\r\n type IKHRInteractivityDiagnostic,\r\n type IKHRInteractivityDocument,\r\n type IKHRInteractivityGraphModel,\r\n} from \"./KHR_interactivity/interactivityGraphModel\";\r\nimport { type FlowGraph } from \"core/FlowGraph/flowGraph\";\r\n\r\nconst NAME = \"KHR_interactivity\";\r\n\r\n/**\r\n * Runtime projection of one canonical KHR_interactivity graph.\r\n */\r\nexport interface IKHRInteractivityGraphImportResult {\r\n /** Canonical source graph and diagnostics. */\r\n graph: IKHRInteractivityGraphModel;\r\n /** Executable FlowGraph serialization when lowering succeeded. */\r\n serializedFlowGraph?: ISerializedFlowGraph;\r\n /** Runtime FlowGraph when runtime construction was requested. */\r\n flowGraph?: FlowGraph;\r\n /** Coordinator that owns the runtime FlowGraph. */\r\n coordinator?: FlowGraphCoordinator;\r\n /** Additional lowering/runtime diagnostics. */\r\n diagnostics: IKHRInteractivityDiagnostic[];\r\n}\r\n\r\n/**\r\n * Completed KHR_interactivity import result associated with a loaded scene.\r\n */\r\nexport interface IKHRInteractivityImportResult {\r\n /** Stable zero-based identity of this interactivity asset among assets appended to the scene. */\r\n assetIndex: number;\r\n /** Canonical, lossless source document. */\r\n document: IKHRInteractivityDocument;\r\n /** Graph import results in source order. */\r\n graphs: IKHRInteractivityGraphImportResult[];\r\n /** Shared path converter required by pointer blocks. */\r\n pathConverter: CompositePathToObjectConverter<IObjectAccessor>;\r\n /** Live glTF loader data used by glTF data-provider blocks. */\r\n glTF: GLTFLoader[\"gltf\"];\r\n /** Host resolver that supplies KHR reference semantics to executable graphs. */\r\n hostResolver: InteractivityHostResolver;\r\n}\r\n\r\nconst _ImportResults = /*#__PURE__*/ new WeakMap<Scene, IKHRInteractivityImportResult[]>();\r\n\r\n/**\r\n * Gets the completed KHR_interactivity import result for a loaded scene.\r\n * @param scene scene loaded from the glTF asset\r\n * @returns the import result, or undefined when the scene has no KHR_interactivity data\r\n */\r\nexport function GetKHRInteractivityImportResult(scene: Scene): IKHRInteractivityImportResult | undefined {\r\n const results = _ImportResults.get(scene);\r\n return results?.[results.length - 1];\r\n}\r\n\r\n/**\r\n * Gets every completed KHR_interactivity import result appended to a loaded scene.\r\n * Results remain in asset load order and each result has a stable {@link IKHRInteractivityImportResult.assetIndex}.\r\n * @param scene scene containing the loaded glTF assets\r\n * @returns the scene's import results, or an empty array when it has no KHR_interactivity data\r\n */\r\nexport function GetKHRInteractivityImportResults(scene: Scene): readonly IKHRInteractivityImportResult[] {\r\n return _ImportResults.get(scene) ?? [];\r\n}\r\n\r\n/**\r\n * Loader extension for KHR_interactivity\r\n */\r\nexport class KHR_interactivity implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n /** Runs after extensions that contribute interactivity operations and object state. */\r\n public readonly order = 200;\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _gltfPathConverter?: GLTFPathToObjectConverter<any, any, any>;\r\n private _pathConverter?: CompositePathToObjectConverter<IObjectAccessor>;\r\n\r\n /**\r\n * @internal\r\n * @param _loader\r\n */\r\n constructor(private _loader: GLTFLoader) {\r\n this.enabled = this._loader.isExtensionUsed(NAME);\r\n // avoid starting animations automatically.\r\n _loader._skipStartAnimationStep = true;\r\n }\r\n\r\n private _initializePathConverter(scene: Scene): CompositePathToObjectConverter<IObjectAccessor> {\r\n this._gltfPathConverter = GetPathToObjectConverter(this._loader.gltf, (mapping) => _AddInteractivityObjectModel(scene, this._loader.parent.targetFps, mapping));\r\n const initialPrefixes: IPathConverterPrefixEntry<IObjectAccessor>[] = [\r\n {\r\n prefix: BABYLON_SCENE_OBJECT_MODEL_PREFIX,\r\n converter: new BabylonScenePathToObjectConverter(scene, CreateDefaultBabylonSceneObjectModelTree()),\r\n },\r\n ];\r\n const refConverter = new InteractivityRefPathToObjectConverter();\r\n initialPrefixes.push({ prefix: EventReferencePrefix, converter: refConverter });\r\n initialPrefixes.push({ prefix: DelayReferencePrefix, converter: refConverter });\r\n const enabledExtensions = new Set(\r\n (this._loader.gltf.extensionsUsed ?? []).filter((name) => registeredGLTFExtensions.has(name) && this._loader.parent.extensionOptions[name]?.enabled !== false)\r\n );\r\n const assetConverter = new InteractivityAssetPathToObjectConverter(this._loader.gltf, (extensionName) => enabledExtensions.has(extensionName));\r\n initialPrefixes.push({ prefix: InteractivityAssetCapabilitiesPrefix, converter: assetConverter });\r\n initialPrefixes.push({ prefix: InteractivityLimitsPrefix, converter: assetConverter });\r\n const pathConverter = new CompositePathToObjectConverter<IObjectAccessor>(initialPrefixes, this._gltfPathConverter as unknown as IPathToObjectConverter<IObjectAccessor>);\r\n this._pathConverter = pathConverter;\r\n return pathConverter;\r\n }\r\n\r\n public dispose() {\r\n (this._loader as any) = null;\r\n delete this._gltfPathConverter;\r\n delete this._pathConverter;\r\n }\r\n\r\n public async onReady(): Promise<void> {\r\n if (!this._loader.babylonScene) {\r\n return;\r\n }\r\n const scene = this._loader.babylonScene;\r\n const pathConverter = this._initializePathConverter(scene);\r\n const interactivityDefinition = this._loader.gltf.extensions?.KHR_interactivity as IKHRInteractivity;\r\n if (!interactivityDefinition) {\r\n // This can technically throw, but it's not a critical error\r\n return;\r\n }\r\n\r\n const supportedExtensions = new Set(\r\n (this._loader.gltf.extensionsUsed ?? []).filter((extensionName) => this._loader.parent.extensionOptions[extensionName]?.enabled !== false)\r\n );\r\n const document = CreateKHRInteractivityDocument(interactivityDefinition, supportedExtensions, this._loader.gltf.nodes?.length ?? 0);\r\n const options = this._loader.parent.extensionOptions[NAME];\r\n const autoStart = options?.autoStart ?? true;\r\n const parseOnly = options?.parseOnly ?? false;\r\n const strictValidation = options?.strictValidation ?? true;\r\n const importResults = _ImportResults.get(scene) ?? [];\r\n const result: IKHRInteractivityImportResult = {\r\n assetIndex: importResults.length,\r\n document,\r\n graphs: [],\r\n pathConverter,\r\n glTF: this._loader.gltf,\r\n hostResolver: new InteractivityHostResolver(),\r\n };\r\n importResults.push(result);\r\n _ImportResults.set(scene, importResults);\r\n\r\n await Promise.all(\r\n document.graphs.map(async (graphModel) => {\r\n const graphResult: IKHRInteractivityGraphImportResult = {\r\n graph: graphModel,\r\n diagnostics: graphModel.diagnostics.slice(),\r\n };\r\n result.graphs[graphModel.index] = graphResult;\r\n if (!graphModel.valid && strictValidation) {\r\n Logger.Error(`KHR_interactivity: rejecting behavior graph #${graphModel.index}: ${graphModel.diagnostics.map((diagnostic) => diagnostic.message).join(\"; \")}`);\r\n return;\r\n }\r\n try {\r\n const parser = new InteractivityGraphToFlowGraphParser(\r\n strictValidation ? graphModel.effectiveSource : graphModel.source,\r\n this._loader.gltf,\r\n this._loader.parent.targetFps,\r\n graphModel.index,\r\n supportedExtensions,\r\n strictValidation ? graphModel.declarations : undefined\r\n );\r\n const serializedFlowGraph = parser.serializeToFlowGraph();\r\n graphResult.serializedFlowGraph = serializedFlowGraph;\r\n if (parseOnly) {\r\n return;\r\n }\r\n const coordinator = new FlowGraphCoordinator({ scene, hostResolver: result.hostResolver });\r\n coordinator.dispatchEventsSynchronously = false;\r\n graphResult.coordinator = coordinator;\r\n graphResult.flowGraph = await ParseFlowGraphAsync(serializedFlowGraph, { coordinator, pathConverter });\r\n if (autoStart && graphModel.index === document.defaultGraphIndex) {\r\n coordinator.start();\r\n }\r\n } catch (error) {\r\n const message = (error as Error)?.message ?? String(error);\r\n graphResult.diagnostics.push({\r\n path: graphModel.path,\r\n message,\r\n severity: \"error\",\r\n });\r\n Logger.Error(`KHR_interactivity: rejecting behavior graph #${graphModel.index}: ${message}`);\r\n graphResult.coordinator?.dispose();\r\n delete graphResult.coordinator;\r\n delete graphResult.flowGraph;\r\n delete graphResult.serializedFlowGraph;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * populates the object model with the interactivity extension\r\n */\r\nexport function _AddInteractivityObjectModel(scene: Scene, targetFps: number, mapping: object) {\r\n // Note - all of those are read-only, as per the specs!\r\n\r\n // active camera rotation\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/rotation\",\r\n {\r\n get: () => {\r\n if (!scene.activeCamera) {\r\n return new Quaternion(NaN, NaN, NaN, NaN);\r\n }\r\n const quat = Quaternion.FromRotationMatrix(scene.activeCamera.getWorldMatrix()).normalize();\r\n if (!scene.useRightHandedSystem) {\r\n quat.w *= -1; // glTF uses right-handed system, while babylon uses left-handed\r\n quat.x *= -1; // glTF uses right-handed system, while babylon uses left-handed\r\n }\r\n return quat;\r\n },\r\n type: \"Quaternion\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // activeCamera position\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/position\",\r\n {\r\n get: () => {\r\n if (!scene.activeCamera) {\r\n return new Vector3(NaN, NaN, NaN);\r\n }\r\n const pos = scene.activeCamera.getWorldMatrix().getTranslation(); // not global position\r\n if (!scene.useRightHandedSystem) {\r\n pos.x *= -1; // glTF uses right-handed system, while babylon uses left-handed\r\n }\r\n return pos;\r\n },\r\n type: \"Vector3\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n\r\n // activeCamera projection properties. Per the spec these read-only values are NaN when there is no\r\n // active camera, or when the active camera does not use the projection type of the requested pointer\r\n // (all perspective properties are NaN for an orthographic camera, and vice-versa).\r\n const getActivePerspectiveValue = (compute: (camera: Camera) => number): number => {\r\n const camera = scene.activeCamera;\r\n if (!camera || camera.mode === Constants.ORTHOGRAPHIC_CAMERA) {\r\n return NaN;\r\n }\r\n return compute(camera);\r\n };\r\n const getActiveOrthographicValue = (compute: (camera: Camera) => number): number => {\r\n const camera = scene.activeCamera;\r\n if (!camera || camera.mode !== Constants.ORTHOGRAPHIC_CAMERA) {\r\n return NaN;\r\n }\r\n return compute(camera);\r\n };\r\n\r\n // perspective/aspectRatio (width over height)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/perspective/aspectRatio\",\r\n {\r\n get: () => getActivePerspectiveValue((camera) => camera.getEngine().getAspectRatio(camera)),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // perspective/yfov (vertical field of view, in radians)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/perspective/yfov\",\r\n {\r\n get: () =>\r\n getActivePerspectiveValue((camera) => {\r\n // Babylon stores the vertical fov when fovMode is vertical-fixed (the default and what the glTF\r\n // loader sets). For a horizontal-fixed camera, convert the horizontal fov to vertical.\r\n if (camera.fovMode === Constants.FOVMODE_VERTICAL_FIXED) {\r\n return camera.fov;\r\n }\r\n const aspectRatio = camera.getEngine().getAspectRatio(camera);\r\n return aspectRatio ? 2 * Math.atan(Math.tan(camera.fov / 2) / aspectRatio) : camera.fov;\r\n }),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // perspective/znear (distance to the near clipping plane)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/perspective/znear\",\r\n {\r\n get: () => getActivePerspectiveValue((camera) => camera.minZ),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // perspective/zfar (distance to the far clipping plane; Babylon uses maxZ === 0 to mean an infinite far plane)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/perspective/zfar\",\r\n {\r\n get: () => getActivePerspectiveValue((camera) => (camera.maxZ === 0 ? Infinity : camera.maxZ)),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // orthographic/xmag (half the orthographic width)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/orthographic/xmag\",\r\n {\r\n get: () =>\r\n getActiveOrthographicValue((camera) => {\r\n const halfWidth = camera.getEngine().getRenderWidth() / 2;\r\n return ((camera.orthoRight ?? halfWidth) - (camera.orthoLeft ?? -halfWidth)) / 2;\r\n }),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // orthographic/ymag (half the orthographic height)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/orthographic/ymag\",\r\n {\r\n get: () =>\r\n getActiveOrthographicValue((camera) => {\r\n const halfHeight = camera.getEngine().getRenderHeight() / 2;\r\n return ((camera.orthoTop ?? halfHeight) - (camera.orthoBottom ?? -halfHeight)) / 2;\r\n }),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // orthographic/znear (distance to the near clipping plane)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/orthographic/znear\",\r\n {\r\n get: () => getActiveOrthographicValue((camera) => camera.minZ),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // orthographic/zfar (distance to the far clipping plane)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/orthographic/zfar\",\r\n {\r\n get: () => getActiveOrthographicValue((camera) => camera.maxZ),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n\r\n const getAnimationFps = (animation: IAnimation): number => animation._babylonAnimationGroup?.targetedAnimations?.[0]?.animation.framePerSecond ?? targetFps;\r\n\r\n // /animations/{} pointers:\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/isPlaying\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup?.isPlaying ?? false;\r\n },\r\n type: \"boolean\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/minTime\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.from ?? 0) / getAnimationFps(animation);\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/maxTime\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.to ?? 0) / getAnimationFps(animation);\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n // playhead\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/playhead\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.getRetainedCurrentFrame() ?? 0) / getAnimationFps(animation);\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/virtualPlayhead\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.getVirtualCurrentFrame() ?? 0) / getAnimationFps(animation);\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n}\r\n\r\nlet _RuntimeRegistered = false;\r\n/**\r\n * @internal\r\n * Registers KHR_interactivity runtime dependencies without changing the extension registry.\r\n */\r\nexport function _RegisterKHRInteractivityRuntime(): void {\r\n if (_RuntimeRegistered) {\r\n return;\r\n }\r\n _RuntimeRegistered = true;\r\n\r\n addToBlockFactory(NAME, \"FlowGraphGLTFDataProvider\", async () => {\r\n return (await import(\"./KHR_interactivity/flowGraphGLTFDataProvider\")).FlowGraphGLTFDataProvider;\r\n });\r\n addToBlockFactory(NAME, \"FlowGraphUnsupportedInteractivityBlock\", async () => {\r\n return (await import(\"./KHR_interactivity/flowGraphUnsupportedInteractivityBlock\")).FlowGraphUnsupportedInteractivityBlock;\r\n });\r\n addToBlockFactory(NAME, \"FlowGraphObjectReferenceBlock\", async () => {\r\n return (await import(\"./KHR_interactivity/flowGraphObjectReferenceBlock\")).FlowGraphObjectReferenceBlock;\r\n });\r\n addToBlockFactory(NAME, \"FlowGraphEventReferenceBlock\", async () => {\r\n return (await import(\"./KHR_interactivity/flowGraphEventReferenceBlock\")).FlowGraphEventReferenceBlock;\r\n });\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_interactivity glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_interactivity(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n _RegisterKHRInteractivityRuntime();\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_interactivity(loader));\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"KHR_interactivity.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_interactivity.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type IKHRInteractivity } from \"babylonjs-gltf2interface\";\r\nimport { type GLTFLoader } from \"../glTFLoader.pure\";\r\nimport { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { FlowGraphCoordinator } from \"core/FlowGraph/flowGraphCoordinator\";\r\nimport { ParseFlowGraphAsync } from \"core/FlowGraph/flowGraphParser\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension, registeredGLTFExtensions } from \"../glTFLoaderExtensionRegistry\";\r\nimport { type GLTFPathToObjectConverter } from \"./gltfPathToObjectConverter\";\r\nimport { AddObjectAccessorToKey, GetPathToObjectConverter } from \"./objectModelMapping\";\r\nimport { _CaptureKHRInteractivityRuntimeInputDefaults, InteractivityGraphToFlowGraphParser } from \"./KHR_interactivity/interactivityGraphParser\";\r\nimport { addToBlockFactory } from \"core/FlowGraph/Blocks/flowGraphBlockFactory\";\r\nimport { Quaternion, Vector3 } from \"core/Maths/math.vector.pure\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { type Camera } from \"core/Cameras/camera\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { type IAnimation } from \"../glTFLoaderInterfaces\";\r\nimport { CompositePathToObjectConverter, type IPathConverterPrefixEntry } from \"./compositePathToObjectConverter\";\r\nimport { BabylonScenePathToObjectConverter, BABYLON_SCENE_OBJECT_MODEL_PREFIX, CreateDefaultBabylonSceneObjectModelTree } from \"./babylonScenePathToObjectConverter\";\r\nimport { InteractivityRefPathToObjectConverter } from \"./interactivityRefPathToObjectConverter\";\r\nimport { InteractivityAssetPathToObjectConverter, InteractivityAssetCapabilitiesPrefix, InteractivityLimitsPrefix } from \"./interactivityAssetPathToObjectConverter\";\r\nimport { EventReferencePrefix, DelayReferencePrefix } from \"./KHR_interactivity/interactivityReferences\";\r\nimport { InteractivityHostResolver } from \"./KHR_interactivity/interactivityHostResolver\";\r\nimport { type IObjectAccessor, type ISerializedFlowGraph } from \"core/FlowGraph/typeDefinitions\";\r\nimport { type IPathToObjectConverter } from \"core/ObjectModel/objectModelInterfaces\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport {\r\n CreateKHRInteractivityDocument,\r\n type IKHRInteractivityDiagnostic,\r\n type IKHRInteractivityDocument,\r\n type IKHRInteractivityGraphModel,\r\n} from \"./KHR_interactivity/interactivityGraphModel\";\r\nimport { type FlowGraph } from \"core/FlowGraph/flowGraph\";\r\n\r\nexport * from \"./KHR_interactivity/interactivityGraphExporter\";\r\nexport { _CaptureKHRInteractivityRuntimeInputDefaults } from \"./KHR_interactivity/interactivityGraphParser\";\r\n\r\nconst NAME = \"KHR_interactivity\";\r\n\r\n/**\r\n * Runtime projection of one canonical KHR_interactivity graph.\r\n */\r\nexport interface IKHRInteractivityGraphImportResult {\r\n /** Canonical source graph and diagnostics. */\r\n graph: IKHRInteractivityGraphModel;\r\n /** Executable FlowGraph serialization when lowering succeeded. */\r\n serializedFlowGraph?: ISerializedFlowGraph;\r\n /** Runtime FlowGraph when runtime construction was requested. */\r\n flowGraph?: FlowGraph;\r\n /** Coordinator that owns the runtime FlowGraph. */\r\n coordinator?: FlowGraphCoordinator;\r\n /** Additional lowering/runtime diagnostics. */\r\n diagnostics: IKHRInteractivityDiagnostic[];\r\n}\r\n\r\n/**\r\n * Completed KHR_interactivity import result associated with a loaded scene.\r\n */\r\nexport interface IKHRInteractivityImportResult {\r\n /** Stable zero-based identity of this interactivity asset among assets appended to the scene. */\r\n assetIndex: number;\r\n /** Canonical, lossless source document. */\r\n document: IKHRInteractivityDocument;\r\n /** Graph import results in source order. */\r\n graphs: IKHRInteractivityGraphImportResult[];\r\n /** Shared path converter required by pointer blocks. */\r\n pathConverter: CompositePathToObjectConverter<IObjectAccessor>;\r\n /** Live glTF loader data used by glTF data-provider blocks. */\r\n glTF: GLTFLoader[\"gltf\"];\r\n /** Scene that owns the imported asset and its runtime object mappings, when retained by the importer. */\r\n scene?: Scene;\r\n /** Host resolver that supplies KHR reference semantics to executable graphs. */\r\n hostResolver: InteractivityHostResolver;\r\n}\r\n\r\nconst _ImportResults = /*#__PURE__*/ new WeakMap<Scene, IKHRInteractivityImportResult[]>();\r\n\r\n/**\r\n * Gets the completed KHR_interactivity import result for a loaded scene.\r\n * @param scene scene loaded from the glTF asset\r\n * @returns the import result, or undefined when the scene has no KHR_interactivity data\r\n */\r\nexport function GetKHRInteractivityImportResult(scene: Scene): IKHRInteractivityImportResult | undefined {\r\n const results = _ImportResults.get(scene);\r\n return results?.[results.length - 1];\r\n}\r\n\r\n/**\r\n * Gets every completed KHR_interactivity import result appended to a loaded scene.\r\n * Results remain in asset load order and each result has a stable {@link IKHRInteractivityImportResult.assetIndex}.\r\n * @param scene scene containing the loaded glTF assets\r\n * @returns the scene's import results, or an empty array when it has no KHR_interactivity data\r\n */\r\nexport function GetKHRInteractivityImportResults(scene: Scene): readonly IKHRInteractivityImportResult[] {\r\n return _ImportResults.get(scene) ?? [];\r\n}\r\n\r\n/**\r\n * Loader extension for KHR_interactivity\r\n */\r\nexport class KHR_interactivity implements IGLTFLoaderExtension {\r\n /**\r\n * The name of this extension.\r\n */\r\n public readonly name = NAME;\r\n /** Runs after extensions that contribute interactivity operations and object state. */\r\n public readonly order = 200;\r\n /**\r\n * Defines whether this extension is enabled.\r\n */\r\n public enabled: boolean;\r\n\r\n private _gltfPathConverter?: GLTFPathToObjectConverter<any, any, any>;\r\n private _pathConverter?: CompositePathToObjectConverter<IObjectAccessor>;\r\n\r\n /**\r\n * @internal\r\n * @param _loader\r\n */\r\n constructor(private _loader: GLTFLoader) {\r\n this.enabled = this._loader.isExtensionUsed(NAME);\r\n // avoid starting animations automatically.\r\n _loader._skipStartAnimationStep = true;\r\n }\r\n\r\n private _initializePathConverter(scene: Scene): CompositePathToObjectConverter<IObjectAccessor> {\r\n this._gltfPathConverter = GetPathToObjectConverter(this._loader.gltf, (mapping) => _AddInteractivityObjectModel(scene, this._loader.parent.targetFps, mapping));\r\n const initialPrefixes: IPathConverterPrefixEntry<IObjectAccessor>[] = [\r\n {\r\n prefix: BABYLON_SCENE_OBJECT_MODEL_PREFIX,\r\n converter: new BabylonScenePathToObjectConverter(scene, CreateDefaultBabylonSceneObjectModelTree()),\r\n },\r\n ];\r\n const refConverter = new InteractivityRefPathToObjectConverter();\r\n initialPrefixes.push({ prefix: EventReferencePrefix, converter: refConverter });\r\n initialPrefixes.push({ prefix: DelayReferencePrefix, converter: refConverter });\r\n const enabledExtensions = new Set(\r\n (this._loader.gltf.extensionsUsed ?? []).filter((name) => registeredGLTFExtensions.has(name) && this._loader.parent.extensionOptions[name]?.enabled !== false)\r\n );\r\n const assetConverter = new InteractivityAssetPathToObjectConverter(this._loader.gltf, (extensionName) => enabledExtensions.has(extensionName));\r\n initialPrefixes.push({ prefix: InteractivityAssetCapabilitiesPrefix, converter: assetConverter });\r\n initialPrefixes.push({ prefix: InteractivityLimitsPrefix, converter: assetConverter });\r\n const pathConverter = new CompositePathToObjectConverter<IObjectAccessor>(initialPrefixes, this._gltfPathConverter as unknown as IPathToObjectConverter<IObjectAccessor>);\r\n this._pathConverter = pathConverter;\r\n return pathConverter;\r\n }\r\n\r\n public dispose() {\r\n (this._loader as any) = null;\r\n delete this._gltfPathConverter;\r\n delete this._pathConverter;\r\n }\r\n\r\n public async onReady(): Promise<void> {\r\n if (!this._loader.babylonScene) {\r\n return;\r\n }\r\n const scene = this._loader.babylonScene;\r\n const pathConverter = this._initializePathConverter(scene);\r\n const interactivityDefinition = this._loader.gltf.extensions?.KHR_interactivity as IKHRInteractivity;\r\n if (!interactivityDefinition) {\r\n // This can technically throw, but it's not a critical error\r\n return;\r\n }\r\n\r\n const supportedExtensions = new Set(\r\n (this._loader.gltf.extensionsUsed ?? []).filter((extensionName) => this._loader.parent.extensionOptions[extensionName]?.enabled !== false)\r\n );\r\n const document = CreateKHRInteractivityDocument(interactivityDefinition, supportedExtensions, this._loader.gltf.nodes?.length ?? 0);\r\n const options = this._loader.parent.extensionOptions[NAME];\r\n const autoStart = options?.autoStart ?? true;\r\n const parseOnly = options?.parseOnly ?? false;\r\n const strictValidation = options?.strictValidation ?? true;\r\n const importResults = _ImportResults.get(scene) ?? [];\r\n const result: IKHRInteractivityImportResult = {\r\n assetIndex: importResults.length,\r\n document,\r\n graphs: [],\r\n pathConverter,\r\n glTF: this._loader.gltf,\r\n scene,\r\n hostResolver: new InteractivityHostResolver(),\r\n };\r\n importResults.push(result);\r\n _ImportResults.set(scene, importResults);\r\n\r\n await Promise.all(\r\n document.graphs.map(async (graphModel) => {\r\n const graphResult: IKHRInteractivityGraphImportResult = {\r\n graph: graphModel,\r\n diagnostics: graphModel.diagnostics.slice(),\r\n };\r\n result.graphs[graphModel.index] = graphResult;\r\n if (!graphModel.valid && strictValidation) {\r\n Logger.Error(`KHR_interactivity: rejecting behavior graph #${graphModel.index}: ${graphModel.diagnostics.map((diagnostic) => diagnostic.message).join(\"; \")}`);\r\n return;\r\n }\r\n try {\r\n const parser = new InteractivityGraphToFlowGraphParser(\r\n strictValidation ? graphModel.effectiveSource : graphModel.source,\r\n this._loader.gltf,\r\n this._loader.parent.targetFps,\r\n graphModel.index,\r\n supportedExtensions,\r\n strictValidation ? graphModel.declarations : undefined,\r\n graphModel.source\r\n );\r\n const serializedFlowGraph = parser.serializeToFlowGraph();\r\n graphResult.serializedFlowGraph = serializedFlowGraph;\r\n if (parseOnly) {\r\n return;\r\n }\r\n const coordinator = new FlowGraphCoordinator({ scene, hostResolver: result.hostResolver });\r\n coordinator.dispatchEventsSynchronously = false;\r\n graphResult.coordinator = coordinator;\r\n graphResult.flowGraph = await ParseFlowGraphAsync(serializedFlowGraph, { coordinator, pathConverter });\r\n _CaptureKHRInteractivityRuntimeInputDefaults(graphResult.flowGraph);\r\n if (autoStart && graphModel.index === document.defaultGraphIndex) {\r\n coordinator.start();\r\n }\r\n } catch (error) {\r\n const message = (error as Error)?.message ?? String(error);\r\n graphResult.diagnostics.push({\r\n path: graphModel.path,\r\n message,\r\n severity: \"error\",\r\n });\r\n Logger.Error(`KHR_interactivity: rejecting behavior graph #${graphModel.index}: ${message}`);\r\n graphResult.coordinator?.dispose();\r\n delete graphResult.coordinator;\r\n delete graphResult.flowGraph;\r\n delete graphResult.serializedFlowGraph;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * @internal\r\n * populates the object model with the interactivity extension\r\n */\r\nexport function _AddInteractivityObjectModel(scene: Scene, targetFps: number, mapping: object) {\r\n // Note - all of those are read-only, as per the specs!\r\n\r\n // active camera rotation\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/rotation\",\r\n {\r\n get: () => {\r\n if (!scene.activeCamera) {\r\n return new Quaternion(NaN, NaN, NaN, NaN);\r\n }\r\n const quat = Quaternion.FromRotationMatrix(scene.activeCamera.getWorldMatrix()).normalize();\r\n if (!scene.useRightHandedSystem) {\r\n quat.w *= -1; // glTF uses right-handed system, while babylon uses left-handed\r\n quat.x *= -1; // glTF uses right-handed system, while babylon uses left-handed\r\n }\r\n return quat;\r\n },\r\n type: \"Quaternion\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // activeCamera position\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/position\",\r\n {\r\n get: () => {\r\n if (!scene.activeCamera) {\r\n return new Vector3(NaN, NaN, NaN);\r\n }\r\n const pos = scene.activeCamera.getWorldMatrix().getTranslation(); // not global position\r\n if (!scene.useRightHandedSystem) {\r\n pos.x *= -1; // glTF uses right-handed system, while babylon uses left-handed\r\n }\r\n return pos;\r\n },\r\n type: \"Vector3\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n\r\n // activeCamera projection properties. Per the spec these read-only values are NaN when there is no\r\n // active camera, or when the active camera does not use the projection type of the requested pointer\r\n // (all perspective properties are NaN for an orthographic camera, and vice-versa).\r\n const getActivePerspectiveValue = (compute: (camera: Camera) => number): number => {\r\n const camera = scene.activeCamera;\r\n if (!camera || camera.mode === Constants.ORTHOGRAPHIC_CAMERA) {\r\n return NaN;\r\n }\r\n return compute(camera);\r\n };\r\n const getActiveOrthographicValue = (compute: (camera: Camera) => number): number => {\r\n const camera = scene.activeCamera;\r\n if (!camera || camera.mode !== Constants.ORTHOGRAPHIC_CAMERA) {\r\n return NaN;\r\n }\r\n return compute(camera);\r\n };\r\n\r\n // perspective/aspectRatio (width over height)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/perspective/aspectRatio\",\r\n {\r\n get: () => getActivePerspectiveValue((camera) => camera.getEngine().getAspectRatio(camera)),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // perspective/yfov (vertical field of view, in radians)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/perspective/yfov\",\r\n {\r\n get: () =>\r\n getActivePerspectiveValue((camera) => {\r\n // Babylon stores the vertical fov when fovMode is vertical-fixed (the default and what the glTF\r\n // loader sets). For a horizontal-fixed camera, convert the horizontal fov to vertical.\r\n if (camera.fovMode === Constants.FOVMODE_VERTICAL_FIXED) {\r\n return camera.fov;\r\n }\r\n const aspectRatio = camera.getEngine().getAspectRatio(camera);\r\n return aspectRatio ? 2 * Math.atan(Math.tan(camera.fov / 2) / aspectRatio) : camera.fov;\r\n }),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // perspective/znear (distance to the near clipping plane)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/perspective/znear\",\r\n {\r\n get: () => getActivePerspectiveValue((camera) => camera.minZ),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // perspective/zfar (distance to the far clipping plane; Babylon uses maxZ === 0 to mean an infinite far plane)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/perspective/zfar\",\r\n {\r\n get: () => getActivePerspectiveValue((camera) => (camera.maxZ === 0 ? Infinity : camera.maxZ)),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // orthographic/xmag (half the orthographic width)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/orthographic/xmag\",\r\n {\r\n get: () =>\r\n getActiveOrthographicValue((camera) => {\r\n const halfWidth = camera.getEngine().getRenderWidth() / 2;\r\n return ((camera.orthoRight ?? halfWidth) - (camera.orthoLeft ?? -halfWidth)) / 2;\r\n }),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // orthographic/ymag (half the orthographic height)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/orthographic/ymag\",\r\n {\r\n get: () =>\r\n getActiveOrthographicValue((camera) => {\r\n const halfHeight = camera.getEngine().getRenderHeight() / 2;\r\n return ((camera.orthoTop ?? halfHeight) - (camera.orthoBottom ?? -halfHeight)) / 2;\r\n }),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // orthographic/znear (distance to the near clipping plane)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/orthographic/znear\",\r\n {\r\n get: () => getActiveOrthographicValue((camera) => camera.minZ),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n // orthographic/zfar (distance to the far clipping plane)\r\n AddObjectAccessorToKey(\r\n \"/extensions/KHR_interactivity/?/activeCamera/orthographic/zfar\",\r\n {\r\n get: () => getActiveOrthographicValue((camera) => camera.maxZ),\r\n type: \"number\",\r\n getTarget: () => scene.activeCamera,\r\n },\r\n mapping\r\n );\r\n\r\n const getAnimationFps = (animation: IAnimation): number => animation._babylonAnimationGroup?.targetedAnimations?.[0]?.animation.framePerSecond ?? targetFps;\r\n\r\n // /animations/{} pointers:\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/isPlaying\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup?.isPlaying ?? false;\r\n },\r\n type: \"boolean\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/minTime\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.from ?? 0) / getAnimationFps(animation);\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/maxTime\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.to ?? 0) / getAnimationFps(animation);\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n // playhead\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/playhead\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.getRetainedCurrentFrame() ?? 0) / getAnimationFps(animation);\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n AddObjectAccessorToKey(\r\n \"/animations/{}/extensions/KHR_interactivity/virtualPlayhead\",\r\n {\r\n get: (animation: IAnimation) => {\r\n return (animation._babylonAnimationGroup?.getVirtualCurrentFrame() ?? 0) / getAnimationFps(animation);\r\n },\r\n type: \"number\",\r\n getTarget: (animation: IAnimation) => {\r\n return animation._babylonAnimationGroup;\r\n },\r\n },\r\n mapping\r\n );\r\n}\r\n\r\nlet _RuntimeRegistered = false;\r\n/**\r\n * @internal\r\n * Registers KHR_interactivity runtime dependencies without changing the extension registry.\r\n */\r\nexport function _RegisterKHRInteractivityRuntime(): void {\r\n if (_RuntimeRegistered) {\r\n return;\r\n }\r\n _RuntimeRegistered = true;\r\n\r\n addToBlockFactory(NAME, \"FlowGraphGLTFDataProvider\", async () => {\r\n return (await import(\"./KHR_interactivity/flowGraphGLTFDataProvider\")).FlowGraphGLTFDataProvider;\r\n });\r\n addToBlockFactory(NAME, \"FlowGraphUnsupportedInteractivityBlock\", async () => {\r\n return (await import(\"./KHR_interactivity/flowGraphUnsupportedInteractivityBlock\")).FlowGraphUnsupportedInteractivityBlock;\r\n });\r\n addToBlockFactory(NAME, \"FlowGraphObjectReferenceBlock\", async () => {\r\n return (await import(\"./KHR_interactivity/flowGraphObjectReferenceBlock\")).FlowGraphObjectReferenceBlock;\r\n });\r\n addToBlockFactory(NAME, \"FlowGraphEventReferenceBlock\", async () => {\r\n return (await import(\"./KHR_interactivity/flowGraphEventReferenceBlock\")).FlowGraphEventReferenceBlock;\r\n });\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_interactivity glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_interactivity(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n _RegisterKHRInteractivityRuntime();\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_interactivity(loader));\r\n}\r\n"]}
|
|
@@ -29,7 +29,7 @@ export class KHR_texture_basisu {
|
|
|
29
29
|
const image = ArrayItem.Get(`${extensionContext}/source`, this._loader.gltf.images, extension.source);
|
|
30
30
|
return await this._loader._createTextureAsync(context, sampler, image, (babylonTexture) => {
|
|
31
31
|
assign(babylonTexture);
|
|
32
|
-
}, texture._textureInfo.nonColorData ? { useRGBAIfASTCBC7NotAvailableWhenUASTC: true } : undefined, !texture._textureInfo.nonColorData);
|
|
32
|
+
}, texture._textureInfo.nonColorData ? { useRGBAIfASTCBC7NotAvailableWhenUASTC: true } : undefined, !texture._textureInfo.nonColorData, texture);
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KHR_texture_basisu.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_texture_basisu.pure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK3D,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAElC;;GAEG;AACH,gEAAgE;AAChE,MAAM,OAAO,kBAAkB;IAS3B;;OAEG;IACH,YAAY,MAAkB;QAX9B,kCAAkC;QAClB,SAAI,GAAG,IAAI,CAAC;QAWxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;IACT,OAAO;QACT,IAAI,CAAC,OAAe,GAAG,IAAI,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,gDAAgD;IACzC,iBAAiB,CAAC,OAAe,EAAE,OAAiB,EAAE,MAA6C;QACtG,OAAO,UAAU,CAAC,kBAAkB,CAAiC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE;YACpI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5J,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,gBAAgB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YACtG,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CACzC,OAAO,EACP,OAAO,EACP,KAAK,EACL,CAAC,cAAc,EAAE,EAAE;gBACf,MAAM,CAAC,cAAc,CAAC,CAAC;YAC3B,CAAC,EACD,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,qCAAqC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAC/F,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"KHR_texture_basisu.pure.js","sourceRoot":"","sources":["../../../../../../dev/loaders/src/glTF/2.0/Extensions/KHR_texture_basisu.pure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK3D,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEhG,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAElC;;GAEG;AACH,gEAAgE;AAChE,MAAM,OAAO,kBAAkB;IAS3B;;OAEG;IACH,YAAY,MAAkB;QAX9B,kCAAkC;QAClB,SAAI,GAAG,IAAI,CAAC;QAWxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;IACT,OAAO;QACT,IAAI,CAAC,OAAe,GAAG,IAAI,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,gDAAgD;IACzC,iBAAiB,CAAC,OAAe,EAAE,OAAiB,EAAE,MAA6C;QACtG,OAAO,UAAU,CAAC,kBAAkB,CAAiC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE;YACpI,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5J,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,gBAAgB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YACtG,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CACzC,OAAO,EACP,OAAO,EACP,KAAK,EACL,CAAC,cAAc,EAAE,EAAE;gBACf,MAAM,CAAC,cAAc,CAAC,CAAC;YAC3B,CAAC,EACD,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,qCAAqC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAC/F,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAClC,OAAO,CACV,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAED,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,gEAAgE;AAChE,MAAM,UAAU,0BAA0B;IACtC,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAE9B,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AAClF,CAAC","sourcesContent":["import { type IGLTFLoaderExtension } from \"../glTFLoaderExtension\";\r\nimport { GLTFLoader, ArrayItem } from \"../glTFLoader.pure\";\r\nimport { type ITexture } from \"../glTFLoaderInterfaces\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { type Nullable } from \"core/types\";\r\nimport { type IKHRTextureBasisU } from \"babylonjs-gltf2interface\";\r\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\r\n\r\nconst NAME = \"KHR_texture_basisu\";\r\n\r\n/**\r\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_texture_basisu/README.md)\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport class KHR_texture_basisu implements IGLTFLoaderExtension {\r\n /** The name of this extension. */\r\n public readonly name = NAME;\r\n\r\n /** Defines whether this extension is enabled. */\r\n public enabled: boolean;\r\n\r\n private _loader: GLTFLoader;\r\n\r\n /**\r\n * @internal\r\n */\r\n constructor(loader: GLTFLoader) {\r\n this._loader = loader;\r\n this.enabled = loader.isExtensionUsed(NAME);\r\n }\r\n\r\n /** @internal */\r\n public dispose() {\r\n (this._loader as any) = null;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line no-restricted-syntax\r\n public _loadTextureAsync(context: string, texture: ITexture, assign: (babylonTexture: BaseTexture) => void): Nullable<Promise<BaseTexture>> {\r\n return GLTFLoader.LoadExtensionAsync<IKHRTextureBasisU, BaseTexture>(context, texture, this.name, async (extensionContext, extension) => {\r\n const sampler = texture.sampler == undefined ? GLTFLoader.DefaultSampler : ArrayItem.Get(`${context}/sampler`, this._loader.gltf.samplers, texture.sampler);\r\n const image = ArrayItem.Get(`${extensionContext}/source`, this._loader.gltf.images, extension.source);\r\n return await this._loader._createTextureAsync(\r\n context,\r\n sampler,\r\n image,\r\n (babylonTexture) => {\r\n assign(babylonTexture);\r\n },\r\n texture._textureInfo.nonColorData ? { useRGBAIfASTCBC7NotAvailableWhenUASTC: true } : undefined,\r\n !texture._textureInfo.nonColorData,\r\n texture\r\n );\r\n });\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the KHR_texture_basisu glTF loader extension.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function RegisterKHR_texture_basisu(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n unregisterGLTFExtension(NAME);\r\n\r\n registerGLTFExtension(NAME, true, (loader) => new KHR_texture_basisu(loader));\r\n}\r\n"]}
|
|
@@ -362,10 +362,11 @@ export declare class GLTFLoader implements IGLTFLoader {
|
|
|
362
362
|
* @internal
|
|
363
363
|
*/
|
|
364
364
|
_loadTextureAsync(context: string, texture: ITexture, assign?: (babylonTexture: BaseTexture) => void): Promise<BaseTexture>;
|
|
365
|
+
private _trackTexture;
|
|
365
366
|
/**
|
|
366
367
|
* @internal
|
|
367
368
|
*/
|
|
368
|
-
_createTextureAsync(context: string, sampler: ISampler, image: IImage, assign?: (babylonTexture: BaseTexture) => void, textureLoaderOptions?: unknown, useSRGBBuffer?: boolean): Promise<BaseTexture>;
|
|
369
|
+
_createTextureAsync(context: string, sampler: ISampler, image: IImage, assign?: (babylonTexture: BaseTexture) => void, textureLoaderOptions?: unknown, useSRGBBuffer?: boolean, sourceTexture?: ITexture): Promise<BaseTexture>;
|
|
369
370
|
private _loadSampler;
|
|
370
371
|
/**
|
|
371
372
|
* Loads a glTF image.
|
|
@@ -2061,7 +2061,13 @@ export class GLTFLoader {
|
|
|
2061
2061
|
loadTextureInfoAsync(context, textureInfo, assign = () => { }) {
|
|
2062
2062
|
const extensionPromise = this._extensionsLoadTextureInfoAsync(context, textureInfo, assign);
|
|
2063
2063
|
if (extensionPromise) {
|
|
2064
|
-
return extensionPromise
|
|
2064
|
+
return extensionPromise.then((babylonTexture) => {
|
|
2065
|
+
const texture = this._gltf.textures?.[textureInfo.index];
|
|
2066
|
+
if (texture) {
|
|
2067
|
+
this._trackTexture(texture, babylonTexture);
|
|
2068
|
+
}
|
|
2069
|
+
return babylonTexture;
|
|
2070
|
+
});
|
|
2065
2071
|
}
|
|
2066
2072
|
this.logOpen(`${context}`);
|
|
2067
2073
|
if (textureInfo.texCoord >= 6) {
|
|
@@ -2082,21 +2088,49 @@ export class GLTFLoader {
|
|
|
2082
2088
|
* @internal
|
|
2083
2089
|
*/
|
|
2084
2090
|
_loadTextureAsync(context, texture, assign = () => { }) {
|
|
2085
|
-
const
|
|
2091
|
+
const trackAndAssign = (babylonTexture) => {
|
|
2092
|
+
this._trackTexture(texture, babylonTexture);
|
|
2093
|
+
assign(babylonTexture);
|
|
2094
|
+
};
|
|
2095
|
+
const extensionPromise = this._extensionsLoadTextureAsync(context, texture, trackAndAssign);
|
|
2086
2096
|
if (extensionPromise) {
|
|
2087
2097
|
return extensionPromise;
|
|
2088
2098
|
}
|
|
2089
2099
|
this.logOpen(`${context} ${texture.name || ""}`);
|
|
2090
2100
|
const sampler = texture.sampler == undefined ? GLTFLoader.DefaultSampler : ArrayItem.Get(`${context}/sampler`, this._gltf.samplers, texture.sampler);
|
|
2091
2101
|
const image = ArrayItem.Get(`${context}/source`, this._gltf.images, texture.source);
|
|
2092
|
-
const promise = this._createTextureAsync(context, sampler, image,
|
|
2102
|
+
const promise = this._createTextureAsync(context, sampler, image, trackAndAssign, undefined, !texture._textureInfo.nonColorData, texture);
|
|
2093
2103
|
this.logClose();
|
|
2094
2104
|
return promise;
|
|
2095
2105
|
}
|
|
2106
|
+
_trackTexture(texture, babylonTexture, imageIndex, samplerIndex) {
|
|
2107
|
+
texture._babylonTextures || (texture._babylonTextures = []);
|
|
2108
|
+
if (!texture._babylonTextures.includes(babylonTexture)) {
|
|
2109
|
+
texture._babylonTextures.push(babylonTexture);
|
|
2110
|
+
}
|
|
2111
|
+
texture._babylonTextureSources || (texture._babylonTextureSources = []);
|
|
2112
|
+
const existing = texture._babylonTextureSources.find((source) => source.babylonTexture === babylonTexture);
|
|
2113
|
+
const fallback = texture._babylonTextureSources[texture._babylonTextureSources.length - 1];
|
|
2114
|
+
const resolvedImageIndex = imageIndex ?? existing?.imageIndex ?? fallback?.imageIndex;
|
|
2115
|
+
if (resolvedImageIndex === undefined) {
|
|
2116
|
+
return;
|
|
2117
|
+
}
|
|
2118
|
+
if (existing) {
|
|
2119
|
+
existing.imageIndex = resolvedImageIndex;
|
|
2120
|
+
existing.samplerIndex = samplerIndex ?? existing.samplerIndex ?? fallback?.samplerIndex;
|
|
2121
|
+
}
|
|
2122
|
+
else {
|
|
2123
|
+
texture._babylonTextureSources.push({
|
|
2124
|
+
babylonTexture,
|
|
2125
|
+
imageIndex: resolvedImageIndex,
|
|
2126
|
+
samplerIndex: samplerIndex ?? fallback?.samplerIndex,
|
|
2127
|
+
});
|
|
2128
|
+
}
|
|
2129
|
+
}
|
|
2096
2130
|
/**
|
|
2097
2131
|
* @internal
|
|
2098
2132
|
*/
|
|
2099
|
-
_createTextureAsync(context, sampler, image, assign = () => { }, textureLoaderOptions, useSRGBBuffer) {
|
|
2133
|
+
_createTextureAsync(context, sampler, image, assign = () => { }, textureLoaderOptions, useSRGBBuffer, sourceTexture) {
|
|
2100
2134
|
const samplerData = this._loadSampler(`/samplers/${sampler.index}`, sampler);
|
|
2101
2135
|
const promises = new Array();
|
|
2102
2136
|
const deferred = new Deferred();
|
|
@@ -2120,6 +2154,9 @@ export class GLTFLoader {
|
|
|
2120
2154
|
useSRGBBuffer: !!useSRGBBuffer && this._parent.useSRGBBuffers,
|
|
2121
2155
|
};
|
|
2122
2156
|
const babylonTexture = new Texture(null, this._babylonScene, textureCreationOptions);
|
|
2157
|
+
if (sourceTexture) {
|
|
2158
|
+
this._trackTexture(sourceTexture, babylonTexture, image.index, sampler.index >= 0 ? sampler.index : undefined);
|
|
2159
|
+
}
|
|
2123
2160
|
babylonTexture._parentContainer = this._assetContainer;
|
|
2124
2161
|
this._babylonScene._blockEntityCollection = false;
|
|
2125
2162
|
promises.push(deferred.promise);
|