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) 6.45 kB
import{aU as e,aV as t,aW as r,aX as s,aZ as n}from"./index-DFZFpUG-.esm.min.js";import{s as a}from"./visibility-uC4EArTl.esm.min.js";import{_installPointerHandlers as i}from"./gltf-animation-hYBmlaQq.esm.min.js";function o(e){if(!e.emissiveColor)return;const t=e._animEmissiveFactor??[0,0,0],r=e._animEmissiveStrength??1;e.emissiveColor[0]=t[0]*r,e.emissiveColor[1]=t[1]*r,e.emissiveColor[2]=t[2]*r,e._uboVersion++}const l={"pbrMetallicRoughness/baseColorTexture":"baseColorTexture",emissiveTexture:"emissiveTexture",normalTexture:"normalTexture",occlusionTexture:"ormTexture"};function c(e,t){const r=e?.[t];if(!r)return;if(r._animPriv)return r;const s={...r,_animPriv:!0};return e[t]=s,s}function u(e,t,r){if("rotation"===r)return{arity:1,writer:(r,s)=>{t.uAng=r[s],e._uboVersion++}};const s="scale"===r;return{arity:2,writer:(r,n)=>{s?(t.uScale=r[n],t.vScale=r[n+1]):(t.uOffset=r[n],t.vOffset=r[n+1]),e._uboVersion++}}}const m=[[/^\/nodes\/(\d+)\/extensions\/KHR_node_visibility\/visible$/,(e,t)=>{const r=t.nodes[+e[1]];return r?{arity:1,writer:(e,t)=>{a(r,0!==e[t])}}:null}],[/^\/materials\/(\d+)\/(pbrMetallicRoughness\/baseColorTexture|emissiveTexture|normalTexture|occlusionTexture)\/extensions\/KHR_texture_transform\/(offset|scale|rotation)$/,(e,t)=>{const r=t.materials?.[+e[1]];if(!r)return null;const s=e[2],n=c(r,"occlusionTexture"===s&&r.occlusionTexture?"occlusionTexture":l[s]);return n?u(r,n,e[3]):null}],[/^\/materials\/(\d+)\/extensions\/(KHR_materials_\w+)\/(\w+Texture)\/extensions\/KHR_texture_transform\/(offset|scale|rotation)$/,(e,t)=>{const r=t.materials?.[+e[1]],s=r&&function(e,t,r){const s=e;switch(`${t}/${r}`){case"KHR_materials_iridescence/iridescenceTexture":return c(s.iridescence,"texture");case"KHR_materials_iridescence/iridescenceThicknessTexture":return c(s.iridescence,"thicknessTexture");case"KHR_materials_anisotropy/anisotropyTexture":return c(s.anisotropy,"texture");case"KHR_materials_sheen/sheenColorTexture":return c(s.sheen,"texture");case"KHR_materials_sheen/sheenRoughnessTexture":return c(s.sheen,s.sheen?.roughnessTexture?"roughnessTexture":"texture");case"KHR_materials_clearcoat/clearcoatTexture":return c(s.clearCoat,"texture");case"KHR_materials_clearcoat/clearcoatRoughnessTexture":return c(s.clearCoat,"roughnessTexture");case"KHR_materials_clearcoat/clearcoatNormalTexture":return c(s.clearCoat,"bumpTexture");case"KHR_materials_specular/specularTexture":return c(s,"metallicReflectanceTexture");case"KHR_materials_specular/specularColorTexture":return c(s,"reflectanceTexture");case"KHR_materials_diffuse_transmission/diffuseTransmissionColorTexture":return c(s.subsurface?.translucency,"colorTexture");case"KHR_materials_diffuse_transmission/diffuseTransmissionTexture":return c(s.subsurface?.translucency,"intensityTexture");case"KHR_materials_transmission/transmissionTexture":return c(s.subsurface?.refraction,"texture");case"KHR_materials_volume/thicknessTexture":return c(s.subsurface?.thickness,"texture");default:return}}(r,e[2],e[3]);return r&&s?u(r,s,e[4]):null}],[/^\/materials\/(\d+)\/emissiveFactor$/,(e,t)=>{const r=t.materials?.[+e[1]];return r?.emissiveColor?{arity:3,writer:(e,t)=>{r._animEmissiveFactor=[e[t],e[t+1],e[t+2]],o(r)}}:null}],[/^\/materials\/(\d+)\/extensions\/KHR_materials_emissive_strength\/emissiveStrength$/,(e,t)=>{const r=t.materials?.[+e[1]];return r?.emissiveColor?{arity:1,writer:(e,t)=>{r._animEmissiveStrength=e[t],o(r)}}:null}],[/^\/materials\/(\d+)\/pbrMetallicRoughness\/baseColorFactor$/,(e,t)=>{const r=t.materials?.[+e[1]];return r?.baseColorFactor?{arity:4,writer:(e,t)=>{r.baseColorFactor[0]=e[t],r.baseColorFactor[1]=e[t+1],r.baseColorFactor[2]=e[t+2],r.baseColorFactor[3]=e[t+3],r._uboVersion++}}:null}]];function _(e){m.push(...e)}const x=new Set;const f={translation:s,rotation:r,scale:t,weights:e};let h=null,d=[];const p=/^\/extensions\/KHR_lights_punctual\/lights\/\d+\/(?:color|intensity|range|spot\/outerConeAngle)$/,T=/^\/materials\/\d+\/(?:pbrMetallicRoughness\/metallicFactor|normalTexture\/scale|occlusionTexture\/strength|extensions\/KHR_materials_(?:transmission|ior|volume|iridescence)\/)/,b=/^\/materials\/\d+\/pbrMetallicRoughness\/baseColorFactor$/;let R=null,v=null;function g(e,t){if(t===h)return d;h=t;const r=[],s=new Set,n=new Set;for(const t of e.animations??[])for(const e of t.channels??[]){const t=e.target?.extensions?.KHR_animation_pointer?.pointer,r=t&&/^\/materials\/(\d+)\/pbrMetallicRoughness\/baseColorFactor$/.exec(t);r&&s.add(+r[1]);const a=t&&/^\/materials\/(\d+)\/.*\/KHR_texture_transform\/(offset|scale|rotation)$/.exec(t);a&&n.add(+a[1])}const a=e.nodes??[];let i=0;for(let o=0;o<a.length;o++){const l=a[o]?.mesh;if(void 0===l)continue;const c=e.meshes?.[l]?.primitives??[];for(let a=0;a<c.length;a++){const o=c[a]?.material,l=t[i++];if(void 0!==o&&l){const t=l.material,a=e.materials?.[o];if(a&&t.emissiveColor){const e=a.emissiveFactor??[0,0,0];t._animEmissiveFactor=[e[0]??0,e[1]??0,e[2]??0],t._animEmissiveStrength=a.extensions?.KHR_materials_emissive_strength?.emissiveStrength??1}if(s.has(o)&&!t.baseColorFactor){const e=a?.pbrMetallicRoughness?.baseColorFactor??[1,1,1,1];t.baseColorFactor=[e[0]??1,e[1]??1,e[2]??1,e[3]??1]}n.has(o)&&(t._hasUvTx=!0),r[o]=t}}}return R?.seedExtMaterials(e,r),d=r,r}i((e,t,r,s,a)=>{if(!r)return null;const i=/^\/nodes\/(\d+)\/(translation|rotation|scale|weights)$/.exec(e);if(i)return{samplerIdx:t.sampler,nodeIdx:+i[1],path:f[i[2]]};const o=function(e,t){for(const[r,s]of m){const n=r.exec(e);if(n)return s(n,t)}return x.has(e)||(x.add(e),console.warn(`[babylon-lite] KHR_animation_pointer: no handler for "${e}"`)),null}(e,{nodes:r,materials:g(s,a),_json:s});if(!o)return null;return{samplerIdx:t.sampler,nodeIdx:-1,path:n,pointerWriter:o.writer,pointerArity:o.arity}});const C={id:"KHR_animation_pointer",async preParse(e){let t=!1,r=!1,s=!1;for(const n of e.animations??[])for(const e of n.channels??[]){const n=e.target?.extensions?.KHR_animation_pointer?.pointer;n&&(b.test(n)&&(s=!0),p.test(n)&&(t=!0),T.test(n)&&(r=!0))}s&&(v=await import("./animation-pointer-basecolor-CsgjZOdN.esm.min.js"),v.collectBaseColorDefs(e)),t&&await import("./animation-pointer-lights-De656Azh.esm.min.js"),r&&(R=await import("./animation-pointer-ext-9kVs13AP.esm.min.js"))},applyMaterial:async e=>v?.whiteFallback(e)??null};var H=Object.freeze({__proto__:null,default:C});export{_,H as g}; //# sourceMappingURL=gltf-feature-animation-pointer-igoMl73F.esm.min.js.map