UNPKG

playcanvas

Version:

Open-source WebGL/WebGPU 3D engine for the web

28 lines (27 loc) 788 B
const createVariants = (gltf) => { if (!gltf.hasOwnProperty("extensions") || !gltf.extensions.hasOwnProperty("KHR_materials_variants")) { return null; } const data = gltf.extensions.KHR_materials_variants.variants; const variants = {}; for (let i = 0; i < data.length; i++) { variants[data[i].name] = i; } return variants; }; const registerMeshVariants = (primitive, meshId, meshVariants) => { if (primitive?.extensions?.KHR_materials_variants) { const variants = primitive.extensions.KHR_materials_variants; const tempMapping = {}; variants.mappings.forEach((mapping) => { mapping.variants.forEach((variant) => { tempMapping[variant] = mapping.material; }); }); meshVariants[meshId] = tempMapping; } }; export { createVariants, registerMeshVariants };