@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) • 1.89 kB
JavaScript
import{T as n,aq as t,bp as o,bq as e,F as s}from"./index-B8IgtevW.esm.min.js";function i(n,t){const o=t.boundMin,e=t.boundMax,s=t.worldMatrix,i=t.thinInstances,a=i.matrices,c=Math.min(i.count,a.length/16|0),l=[.5*(o[0]+e[0]),.5*(o[1]+e[1]),.5*(o[2]+e[2])],r=[.5*(e[0]-o[0]),.5*(e[1]-o[1]),.5*(e[2]-o[2])];for(let t=0;t<c;t++){const o=16*t;let e=0;for(let n=0;n<3;n++)for(let t=0;t<3;t++)e+=Math.abs(a[o+4*t+n]);if(!(e<1e-9))for(let t=0;t<3;t++){let e=s[12+t],i=0;for(let n=0;n<3;n++){let c=0;for(let e=0;e<3;e++)c+=s[4*e+t]*a[o+4*n+e];e+=c*l[n],i+=Math.abs(c)*r[n]}for(let n=0;n<3;n++)e+=s[4*n+t]*a[o+12+n];const c=e-i,u=e+i,f=0===t?"minX":1===t?"minY":"minZ",d=0===t?"maxX":1===t?"maxY":"maxZ";c<n[f]&&(n[f]=c),u>n[d]&&(n[d]=u)}}}function a(t){t.thinInstances||n(279),t._expandWorldBounds=i}function c(n){const t=[];for(const o of n?.children??[])o&&"object"==typeof o&&"material"in o&&t.push(o);return t}function l(n,t,o,i){const a=new s(16*i);for(let s=0;s<i;s++){const i=n?n[3*s]:0,c=n?n[3*s+1]:0,l=n?n[3*s+2]:0,r=t?t[4*s]:0,u=t?t[4*s+1]:0,f=t?t[4*s+2]:0,d=t?t[4*s+3]:1,m=o?o[3*s]:1,_=o?o[3*s+1]:1,h=o?o[3*s+2]:1;e(a,16*s,i,c,l,r,u,f,d,m,_,h)}return a}const r={id:"EXT_mesh_gpu_instancing",async applyAsset(e,s,i){const{_json:r,_binChunk:u,_nodeMap:f}=i;if(!f)return{};const d=r.nodes??[];for(let e=0;e<d.length;e++){const s=d[e]?.extensions?.EXT_mesh_gpu_instancing?.attributes;if(!s)continue;const i=f[e];if(!i)continue;const m=c(i);if(0===m.length)continue;const _=void 0!==s.TRANSLATION?t(r,u,s.TRANSLATION):null,h=void 0!==s.ROTATION?t(r,u,s.ROTATION):null,p=void 0!==s.SCALE?t(r,u,s.SCALE):null;let T=0;for(const t of[_,h,p])t&&(0===T?T=t._count:t._count!==T&&n(95,e));if(0===T)continue;const b=l(_?_._data:null,h?h._data:null,p?p._data:null,T);for(const n of m)o(n,b,T),a(n)}return{}}};export{r as default};
//# sourceMappingURL=gltf-feature-gpu-instancing-ATvF5mSh.esm.min.js.map