UNPKG

@babylonjs/viewer

Version:

The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.

3 lines (2 loc) 4.41 kB
import{_ as e}from"./gltf-feature-animation-pointer-C9vKVvIP.esm.min.js";import"./index-B8IgtevW.esm.min.js";import"./visibility-37FD43tJ.esm.min.js";import"./gltf-animation-5rtffpPK.esm.min.js";async function t(e){const t=function(e){const t=new Set,s=new Set,n=new Set,i=new Set,r=new Set;for(const a of e.animations??[])for(const e of a.channels??[]){const a=e.target?.extensions?.KHR_animation_pointer?.pointer;if(!a)continue;const o=/^\/materials\/(\d+)\/occlusionTexture\/strength$/.exec(a);o&&t.add(+o[1]);const c=/^\/materials\/(\d+)\/extensions\/KHR_materials_transmission\/transmissionFactor$/.exec(a);c&&s.add(+c[1]);const l=/^\/materials\/(\d+)\/extensions\/KHR_materials_ior\/ior$/.exec(a);l&&n.add(+l[1]);const u=/^\/materials\/(\d+)\/extensions\/KHR_materials_volume\/thicknessFactor$/.exec(a);u&&i.add(+u[1]);const m=/^\/materials\/(\d+)\/extensions\/KHR_materials_volume\/(attenuationColor|attenuationDistance)$/.exec(a);m&&r.add(+m[1])}return{occlusionStrength:t,transmission:s,ior:n,volumeThickness:i,volumeTint:r}}(e),i=t.occlusionStrength.size>0||t.ior.size>0?(await import("./set-metallic-reflectance-CdBVQVJt.esm.min.js")).setPbrMetallicReflectance:null;return r=>function(e,t,i,r){for(let a=0;a<t.length;a++){const o=t[a];if(!o)continue;const c=e.materials?.[a];if(i.occlusionStrength.has(a)&&(o.occlusionStrength=c?.occlusionTexture?.strength??1,r?.(s(o),{}),o._occlStrengthAnimated=!0),i.transmission.has(a)&&(o._transmissive=!0,o._subsurface??={},o._subsurface.refraction??={intensity:c?.extensions?.KHR_materials_transmission?.transmissionFactor??0,indexOfRefraction:c?.extensions?.KHR_materials_ior?.ior??1.5}),i.ior.has(a)){o._subsurface??={},o._subsurface.refraction??={intensity:0,indexOfRefraction:c?.extensions?.KHR_materials_ior?.ior??1.5};const e=c?.extensions?.KHR_materials_ior?.ior??1.5;r?.(s(o),{f0Factor:n(e),specularWeight:1})}if(i.volumeThickness.has(a)||i.volumeTint.has(a)){o._subsurface??={};const e=c?.extensions?.KHR_materials_volume;i.volumeThickness.has(a)&&(o._subsurface.thickness??={min:0,max:e?.thicknessFactor??0,useGlTFChannel:!0},o._subsurface.refraction&&(o._subsurface.refraction.useThicknessAsDepth=!0)),i.volumeTint.has(a)&&(o._subsurface.tint??={color:e?.attenuationColor??[1,1,1],atDistance:e?.attenuationDistance??1})}}}(e,r,t,i)}function s(e){return e}function n(e){return((e-1)/(e+1))**2/.04}function i(e){e._uboVersion++}e([[/^\/materials\/(\d+)\/pbrMetallicRoughness\/metallicFactor$/,(e,t)=>{const s=t.materials?.[+e[1]];return s?{arity:1,writer:(e,t)=>{s.roughnessFactor=e[t],s._uboVersion++}}:null}],[/^\/materials\/(\d+)\/normalTexture\/scale$/,(e,t)=>{const s=t.materials?.[+e[1]];return s?{arity:1,writer:(e,t)=>{s.normalTextureScale=e[t],s._uboVersion++}}:null}],[/^\/materials\/(\d+)\/extensions\/KHR_materials_transmission\/transmissionFactor$/,(e,t)=>{const s=t.materials?.[+e[1]],n=s?._subsurface?.refraction;return s&&n?{arity:1,writer:(e,t)=>{s._transmissive=!0,n.intensity=e[t],i(s)}}:null}],[/^\/materials\/(\d+)\/extensions\/KHR_materials_ior\/ior$/,(e,t)=>{const s=t.materials?.[+e[1]];return s?{arity:1,writer:(e,t)=>{const r=e[t];s._subsurface?.refraction&&(s._subsurface.refraction.indexOfRefraction=r),s._metallicF0Factor=n(r),s._specularWeight=1,i(s)}}:null}],[/^\/materials\/(\d+)\/extensions\/KHR_materials_volume\/(thicknessFactor|attenuationDistance|attenuationColor)$/,(e,t)=>{const s=t.materials?.[+e[1]];return s?._subsurface?{arity:"attenuationColor"===e[2]?3:1,writer:(t,n)=>{const r=s._subsurface;"thicknessFactor"===e[2]?(r.thickness??={min:0,max:0,useGlTFChannel:!0},r.thickness.max=t[n],r.refraction&&(r.refraction.useThicknessAsDepth=!0)):(r.tint??={color:[1,1,1],atDistance:1},"attenuationDistance"===e[2]?r.tint.atDistance=t[n]:r.tint.color=[t[n],t[n+1],t[n+2]]),i(s)}}:null}],[/^\/materials\/(\d+)\/extensions\/KHR_materials_iridescence\/(iridescenceFactor|iridescenceIor|iridescenceThicknessMaximum)$/,(e,t)=>{const s=t.materials?.[+e[1]],n=s?._iridescence;return s&&n?{arity:1,writer:(t,r)=>{const a=t[r];"iridescenceFactor"===e[2]?n.intensity=a:"iridescenceIor"===e[2]?n.indexOfRefraction=a:n.maximumThickness=a,i(s)}}:null}],[/^\/materials\/(\d+)\/occlusionTexture\/strength$/,(e,t)=>{const s=t.materials?.[+e[1]];return s?{arity:1,writer:(e,t)=>{s.occlusionStrength=e[t],s._uboVersion++}}:null}]]);export{t as prepareExtMaterials}; //# sourceMappingURL=animation-pointer-ext-gTptdwKd.esm.min.js.map