af4f9d88ebdc6a54049f7e5e94a37f83287e26a2396cd72dc65f350103d30497.json 30 KB

1
  1. {"ast":null,"code":"import { GLTFLoader, ArrayItem } from \"../glTFLoader.js\";\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh.js\";\nconst NAME = \"KHR_materials_variants\";\n/**\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_variants/README.md)\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_variants {\n /**\n * @internal\n */\n constructor(loader) {\n /**\n * The name of this extension.\n */\n this.name = NAME;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n }\n /** @internal */\n dispose() {\n this._loader = null;\n }\n /**\n * Gets the list of available variant names for this asset.\n * @param rootMesh The glTF root mesh\n * @returns the list of all the variant names for this model\n */\n static GetAvailableVariants(rootMesh) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n return [];\n }\n return Object.keys(extensionMetadata.variants);\n }\n /**\n * Gets the list of available variant names for this asset.\n * @param rootMesh The glTF root mesh\n * @returns the list of all the variant names for this model\n */\n getAvailableVariants(rootMesh) {\n return KHR_materials_variants.GetAvailableVariants(rootMesh);\n }\n /**\n * Select a variant given a variant name or a list of variant names.\n * @param rootMesh The glTF root mesh\n * @param variantName The variant name(s) to select.\n */\n static SelectVariant(rootMesh, variantName) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n throw new Error(`Cannot select variant on a glTF mesh that does not have the ${NAME} extension`);\n }\n const select = variantName => {\n const entries = extensionMetadata.variants[variantName];\n if (entries) {\n for (const entry of entries) {\n entry.mesh.material = entry.material;\n }\n }\n };\n if (variantName instanceof Array) {\n for (const name of variantName) {\n select(name);\n }\n } else {\n select(variantName);\n }\n extensionMetadata.lastSelected = variantName;\n }\n /**\n * Select a variant given a variant name or a list of variant names.\n * @param rootMesh The glTF root mesh\n * @param variantName The variant name(s) to select.\n */\n selectVariant(rootMesh, variantName) {\n KHR_materials_variants.SelectVariant(rootMesh, variantName);\n }\n /**\n * Reset back to the original before selecting a variant.\n * @param rootMesh The glTF root mesh\n */\n static Reset(rootMesh) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n throw new Error(`Cannot reset on a glTF mesh that does not have the ${NAME} extension`);\n }\n for (const entry of extensionMetadata.original) {\n entry.mesh.material = entry.material;\n }\n extensionMetadata.lastSelected = null;\n }\n /**\n * Reset back to the original before selecting a variant.\n * @param rootMesh The glTF root mesh\n */\n reset(rootMesh) {\n KHR_materials_variants.Reset(rootMesh);\n }\n /**\n * Gets the last selected variant name(s) or null if original.\n * @param rootMesh The glTF root mesh\n * @returns The selected variant name(s).\n */\n static GetLastSelectedVariant(rootMesh) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n throw new Error(`Cannot get the last selected variant on a glTF mesh that does not have the ${NAME} extension`);\n }\n return extensionMetadata.lastSelected;\n }\n /**\n * Gets the last selected variant name(s) or null if original.\n * @param rootMesh The glTF root mesh\n * @returns The selected variant name(s).\n */\n getLastSelectedVariant(rootMesh) {\n return KHR_materials_variants.GetLastSelectedVariant(rootMesh);\n }\n static _GetExtensionMetadata(rootMesh) {\n var _rootMesh$_internalMe;\n return (rootMesh === null || rootMesh === void 0 || (_rootMesh$_internalMe = rootMesh._internalMetadata) === null || _rootMesh$_internalMe === void 0 || (_rootMesh$_internalMe = _rootMesh$_internalMe.gltf) === null || _rootMesh$_internalMe === void 0 ? void 0 : _rootMesh$_internalMe[NAME]) || null;\n }\n /** @internal */\n onLoading() {\n const extensions = this._loader.gltf.extensions;\n if (extensions && extensions[this.name]) {\n const extension = extensions[this.name];\n this._variants = extension.variants;\n }\n }\n /**\n * @internal\n */\n _loadMeshPrimitiveAsync(context, name, node, mesh, primitive, assign) {\n return GLTFLoader.LoadExtensionAsync(context, primitive, this.name, (extensionContext, extension) => {\n const promises = new Array();\n promises.push(this._loader._loadMeshPrimitiveAsync(context, name, node, mesh, primitive, babylonMesh => {\n assign(babylonMesh);\n if (babylonMesh instanceof Mesh) {\n const babylonDrawMode = GLTFLoader._GetDrawMode(context, primitive.mode);\n const root = this._loader.rootBabylonMesh;\n const metadata = root ? root._internalMetadata = root._internalMetadata || {} : {};\n const gltf = metadata.gltf = metadata.gltf || {};\n const extensionMetadata = gltf[NAME] = gltf[NAME] || {\n lastSelected: null,\n original: [],\n variants: {}\n };\n // Store the original material.\n extensionMetadata.original.push({\n mesh: babylonMesh,\n material: babylonMesh.material\n });\n // For each mapping, look at the variants and make a new entry for them.\n for (let mappingIndex = 0; mappingIndex < extension.mappings.length; ++mappingIndex) {\n const mapping = extension.mappings[mappingIndex];\n const material = ArrayItem.Get(`${extensionContext}/mappings/${mappingIndex}/material`, this._loader.gltf.materials, mapping.material);\n promises.push(this._loader._loadMaterialAsync(`#/materials/${mapping.material}`, material, babylonMesh, babylonDrawMode, babylonMaterial => {\n for (let mappingVariantIndex = 0; mappingVariantIndex < mapping.variants.length; ++mappingVariantIndex) {\n const variantIndex = mapping.variants[mappingVariantIndex];\n const variant = ArrayItem.Get(`/extensions/${NAME}/variants/${variantIndex}`, this._variants, variantIndex);\n extensionMetadata.variants[variant.name] = extensionMetadata.variants[variant.name] || [];\n extensionMetadata.variants[variant.name].push({\n mesh: babylonMesh,\n material: babylonMaterial\n });\n // Replace the target when original mesh is cloned\n babylonMesh.onClonedObservable.add(newOne => {\n const newMesh = newOne;\n let metadata = null;\n let newRoot = newMesh;\n // Find root to get medata\n do {\n newRoot = newRoot.parent;\n if (!newRoot) {\n return;\n }\n metadata = KHR_materials_variants._GetExtensionMetadata(newRoot);\n } while (metadata === null);\n // Need to clone the metadata on the root (first time only)\n if (root && metadata === KHR_materials_variants._GetExtensionMetadata(root)) {\n // Copy main metadata\n newRoot._internalMetadata = {};\n for (const key in root._internalMetadata) {\n newRoot._internalMetadata[key] = root._internalMetadata[key];\n }\n // Copy the gltf metadata\n newRoot._internalMetadata.gltf = [];\n for (const key in root._internalMetadata.gltf) {\n newRoot._internalMetadata.gltf[key] = root._internalMetadata.gltf[key];\n }\n // Duplicate the extension specific metadata\n newRoot._internalMetadata.gltf[NAME] = {\n lastSelected: null,\n original: [],\n variants: {}\n };\n for (const original of metadata.original) {\n newRoot._internalMetadata.gltf[NAME].original.push({\n mesh: original.mesh,\n material: original.material\n });\n }\n for (const key in metadata.variants) {\n if (Object.prototype.hasOwnProperty.call(metadata.variants, key)) {\n newRoot._internalMetadata.gltf[NAME].variants[key] = [];\n for (const variantEntry of metadata.variants[key]) {\n newRoot._internalMetadata.gltf[NAME].variants[key].push({\n mesh: variantEntry.mesh,\n material: variantEntry.material\n });\n }\n }\n }\n metadata = newRoot._internalMetadata.gltf[NAME];\n }\n // Relocate\n for (const target of metadata.original) {\n if (target.mesh === babylonMesh) {\n target.mesh = newMesh;\n }\n }\n for (const target of metadata.variants[variant.name]) {\n if (target.mesh === babylonMesh) {\n target.mesh = newMesh;\n }\n }\n });\n }\n }));\n }\n }\n }));\n return Promise.all(promises).then(([babylonMesh]) => {\n return babylonMesh;\n });\n });\n }\n}\nGLTFLoader.RegisterExtension(NAME, loader => new KHR_materials_variants(loader));","map":{"version":3,"names":["GLTFLoader","ArrayItem","Mesh","NAME","KHR_materials_variants","constructor","loader","name","_loader","enabled","isExtensionUsed","dispose","GetAvailableVariants","rootMesh","extensionMetadata","_GetExtensionMetadata","Object","keys","variants","getAvailableVariants","SelectVariant","variantName","Error","select","entries","entry","mesh","material","Array","lastSelected","selectVariant","Reset","original","reset","GetLastSelectedVariant","getLastSelectedVariant","_rootMesh$_internalMe","_internalMetadata","gltf","onLoading","extensions","extension","_variants","_loadMeshPrimitiveAsync","context","node","primitive","assign","LoadExtensionAsync","extensionContext","promises","push","babylonMesh","babylonDrawMode","_GetDrawMode","mode","root","rootBabylonMesh","metadata","mappingIndex","mappings","length","mapping","Get","materials","_loadMaterialAsync","babylonMaterial","mappingVariantIndex","variantIndex","variant","onClonedObservable","add","newOne","newMesh","newRoot","parent","key","prototype","hasOwnProperty","call","variantEntry","target","Promise","all","then","RegisterExtension"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.js"],"sourcesContent":["import { GLTFLoader, ArrayItem } from \"../glTFLoader.js\";\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh.js\";\nconst NAME = \"KHR_materials_variants\";\n/**\n * [Specification](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_variants/README.md)\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class KHR_materials_variants {\n /**\n * @internal\n */\n constructor(loader) {\n /**\n * The name of this extension.\n */\n this.name = NAME;\n this._loader = loader;\n this.enabled = this._loader.isExtensionUsed(NAME);\n }\n /** @internal */\n dispose() {\n this._loader = null;\n }\n /**\n * Gets the list of available variant names for this asset.\n * @param rootMesh The glTF root mesh\n * @returns the list of all the variant names for this model\n */\n static GetAvailableVariants(rootMesh) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n return [];\n }\n return Object.keys(extensionMetadata.variants);\n }\n /**\n * Gets the list of available variant names for this asset.\n * @param rootMesh The glTF root mesh\n * @returns the list of all the variant names for this model\n */\n getAvailableVariants(rootMesh) {\n return KHR_materials_variants.GetAvailableVariants(rootMesh);\n }\n /**\n * Select a variant given a variant name or a list of variant names.\n * @param rootMesh The glTF root mesh\n * @param variantName The variant name(s) to select.\n */\n static SelectVariant(rootMesh, variantName) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n throw new Error(`Cannot select variant on a glTF mesh that does not have the ${NAME} extension`);\n }\n const select = (variantName) => {\n const entries = extensionMetadata.variants[variantName];\n if (entries) {\n for (const entry of entries) {\n entry.mesh.material = entry.material;\n }\n }\n };\n if (variantName instanceof Array) {\n for (const name of variantName) {\n select(name);\n }\n }\n else {\n select(variantName);\n }\n extensionMetadata.lastSelected = variantName;\n }\n /**\n * Select a variant given a variant name or a list of variant names.\n * @param rootMesh The glTF root mesh\n * @param variantName The variant name(s) to select.\n */\n selectVariant(rootMesh, variantName) {\n KHR_materials_variants.SelectVariant(rootMesh, variantName);\n }\n /**\n * Reset back to the original before selecting a variant.\n * @param rootMesh The glTF root mesh\n */\n static Reset(rootMesh) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n throw new Error(`Cannot reset on a glTF mesh that does not have the ${NAME} extension`);\n }\n for (const entry of extensionMetadata.original) {\n entry.mesh.material = entry.material;\n }\n extensionMetadata.lastSelected = null;\n }\n /**\n * Reset back to the original before selecting a variant.\n * @param rootMesh The glTF root mesh\n */\n reset(rootMesh) {\n KHR_materials_variants.Reset(rootMesh);\n }\n /**\n * Gets the last selected variant name(s) or null if original.\n * @param rootMesh The glTF root mesh\n * @returns The selected variant name(s).\n */\n static GetLastSelectedVariant(rootMesh) {\n const extensionMetadata = this._GetExtensionMetadata(rootMesh);\n if (!extensionMetadata) {\n throw new Error(`Cannot get the last selected variant on a glTF mesh that does not have the ${NAME} extension`);\n }\n return extensionMetadata.lastSelected;\n }\n /**\n * Gets the last selected variant name(s) or null if original.\n * @param rootMesh The glTF root mesh\n * @returns The selected variant name(s).\n */\n getLastSelectedVariant(rootMesh) {\n return KHR_materials_variants.GetLastSelectedVariant(rootMesh);\n }\n static _GetExtensionMetadata(rootMesh) {\n return rootMesh?._internalMetadata?.gltf?.[NAME] || null;\n }\n /** @internal */\n onLoading() {\n const extensions = this._loader.gltf.extensions;\n if (extensions && extensions[this.name]) {\n const extension = extensions[this.name];\n this._variants = extension.variants;\n }\n }\n /**\n * @internal\n */\n _loadMeshPrimitiveAsync(context, name, node, mesh, primitive, assign) {\n return GLTFLoader.LoadExtensionAsync(context, primitive, this.name, (extensionContext, extension) => {\n const promises = new Array();\n promises.push(this._loader._loadMeshPrimitiveAsync(context, name, node, mesh, primitive, (babylonMesh) => {\n assign(babylonMesh);\n if (babylonMesh instanceof Mesh) {\n const babylonDrawMode = GLTFLoader._GetDrawMode(context, primitive.mode);\n const root = this._loader.rootBabylonMesh;\n const metadata = root ? (root._internalMetadata = root._internalMetadata || {}) : {};\n const gltf = (metadata.gltf = metadata.gltf || {});\n const extensionMetadata = (gltf[NAME] = gltf[NAME] || { lastSelected: null, original: [], variants: {} });\n // Store the original material.\n extensionMetadata.original.push({ mesh: babylonMesh, material: babylonMesh.material });\n // For each mapping, look at the variants and make a new entry for them.\n for (let mappingIndex = 0; mappingIndex < extension.mappings.length; ++mappingIndex) {\n const mapping = extension.mappings[mappingIndex];\n const material = ArrayItem.Get(`${extensionContext}/mappings/${mappingIndex}/material`, this._loader.gltf.materials, mapping.material);\n promises.push(this._loader._loadMaterialAsync(`#/materials/${mapping.material}`, material, babylonMesh, babylonDrawMode, (babylonMaterial) => {\n for (let mappingVariantIndex = 0; mappingVariantIndex < mapping.variants.length; ++mappingVariantIndex) {\n const variantIndex = mapping.variants[mappingVariantIndex];\n const variant = ArrayItem.Get(`/extensions/${NAME}/variants/${variantIndex}`, this._variants, variantIndex);\n extensionMetadata.variants[variant.name] = extensionMetadata.variants[variant.name] || [];\n extensionMetadata.variants[variant.name].push({\n mesh: babylonMesh,\n material: babylonMaterial,\n });\n // Replace the target when original mesh is cloned\n babylonMesh.onClonedObservable.add((newOne) => {\n const newMesh = newOne;\n let metadata = null;\n let newRoot = newMesh;\n // Find root to get medata\n do {\n newRoot = newRoot.parent;\n if (!newRoot) {\n return;\n }\n metadata = KHR_materials_variants._GetExtensionMetadata(newRoot);\n } while (metadata === null);\n // Need to clone the metadata on the root (first time only)\n if (root && metadata === KHR_materials_variants._GetExtensionMetadata(root)) {\n // Copy main metadata\n newRoot._internalMetadata = {};\n for (const key in root._internalMetadata) {\n newRoot._internalMetadata[key] = root._internalMetadata[key];\n }\n // Copy the gltf metadata\n newRoot._internalMetadata.gltf = [];\n for (const key in root._internalMetadata.gltf) {\n newRoot._internalMetadata.gltf[key] = root._internalMetadata.gltf[key];\n }\n // Duplicate the extension specific metadata\n newRoot._internalMetadata.gltf[NAME] = { lastSelected: null, original: [], variants: {} };\n for (const original of metadata.original) {\n newRoot._internalMetadata.gltf[NAME].original.push({\n mesh: original.mesh,\n material: original.material,\n });\n }\n for (const key in metadata.variants) {\n if (Object.prototype.hasOwnProperty.call(metadata.variants, key)) {\n newRoot._internalMetadata.gltf[NAME].variants[key] = [];\n for (const variantEntry of metadata.variants[key]) {\n newRoot._internalMetadata.gltf[NAME].variants[key].push({\n mesh: variantEntry.mesh,\n material: variantEntry.material,\n });\n }\n }\n }\n metadata = newRoot._internalMetadata.gltf[NAME];\n }\n // Relocate\n for (const target of metadata.original) {\n if (target.mesh === babylonMesh) {\n target.mesh = newMesh;\n }\n }\n for (const target of metadata.variants[variant.name]) {\n if (target.mesh === babylonMesh) {\n target.mesh = newMesh;\n }\n }\n });\n }\n }));\n }\n }\n }));\n return Promise.all(promises).then(([babylonMesh]) => {\n return babylonMesh;\n });\n });\n }\n}\nGLTFLoader.RegisterExtension(NAME, (loader) => new KHR_materials_variants(loader));\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}