Files
PM_test/libs/3dViewer/bundle.26e9bcb072f8f12dccbf.js
2026-06-12 17:14:03 +09:00

2 lines
9.2 KiB
JavaScript

(()=>{"use strict";var e,t={732:(e,t,a)=>{var n=a(437),o=a(922),r=a(40),i=a(24),s=a(231),c=a(728),d=a(921),l=a(92),u=a(70),p=a(702),m=a(806),h=a(494);class w{constructor(e){let t,a,n;this.mouseMoved,e.addEventListener("mousedown",e=>{t=e.offsetX,a=e.offsetY,n=Date.now()}),e.addEventListener("mouseup",e=>{const o=Math.abs(e.offsetX-t),r=Math.abs(e.offsetY-a),i=Date.now()-n;this.mouseMoved=o>5||r>5||i>500})}}let g,f,y,v,b,L,x,M,R,U,j=document.getElementById("progress-text"),k=null;function O(){y.aspect=g.clientWidth/g.clientHeight,y.updateProjectionMatrix(),v.setSize(window.innerWidth,window.innerHeight)}function C(){R&&R.update(),b.update(),v.setAnimationLoop(C),v.render(f,y)}async function S(e){await async function(){if(f)return;g=document.querySelector("#canvas"),v=new n.JeP({canvas:g,antialias:!0,powerPreference:"high-performance"}),v.setSize(window.innerWidth,window.innerHeight),v.setPixelRatio(Math.min(window.devicePixelRatio,2)),k=new n.JeP({antialias:!0,preserveDrawingBuffer:!0}),f=new o.Z58;const e=g.clientWidth/g.clientHeight;y=new o.ubm(75,e,.1,1e3),y.position.set(0,5,10);const t=new o.$p8(16777215,.6);f.add(t),b=new i.N(y,g),window.addEventListener("resize",O);const a=(new s.Y).setPath("./textures/"),r=await a.loadAsync("demonstration-research-center.hdr");r.mapping=o.wfO,f.background=r,f.backgroundBlurriness=.9,f.environment=r,r.dispose(),L=new o.tBo,x=new o.I9Y,g.addEventListener("click",D),U=new w(g),C()}(),M&&(f.remove(M),function(){M&&M.traverse(e=>{e.geometry&&e.geometry.dispose(),e.material&&(Array.isArray(e.material)?e.material.forEach(e=>{e.map&&e.map.dispose(),e.normalMap&&e.normalMap.dispose(),e.roughnessMap&&e.roughnessMap.dispose(),e.metalnessMap&&e.metalnessMap.dispose(),e.dispose()}):(e.material.map&&e.material.map.dispose(),e.material.normalMap&&e.material.normalMap.dispose(),e.material.roughnessMap&&e.material.roughnessMap.dispose(),e.material.metalnessMap&&e.material.metalnessMap.dispose(),e.material.dispose()))});window.gc&&window.gc()}(),URL.revokeObjectURL(M.userData.url));const t=e.name.split(".").pop().toLowerCase(),a=URL.createObjectURL(e);let r;try{switch(t){case"glb":case"gltf":{const t=new d.p;t.setTranscoderPath("./libs/basis/").detectSupport(v);const n=new c.Z;let o;n.setDecoderPath("./libs/draco/gltf/"),n.preload(),r=new l.B,r.setKTX2Loader(t),r.setDRACOLoader(n);try{o=await r.loadAsync(a,t=>$(t,e))}catch(e){return void URL.revokeObjectURL(a)}document.querySelector(".progress-wrap").style.display="none",M=o.scene,M.userData.url=a,f.add(M),P(y,M,b),URL.revokeObjectURL(a);break}case"obj":{let t;r=new u.L;try{t=await r.loadAsync(a,t=>$(t,e))}catch(e){return void URL.revokeObjectURL(a)}document.querySelector(".progress-wrap").style.display="none",M=t,M.userData.url=a,f.add(M),P(y,M,b),URL.revokeObjectURL(a);break}case"stl":{let t;r=new p.t;try{t=await r.loadAsync(a,t=>$(t,e))}catch(e){return void URL.revokeObjectURL(a)}document.querySelector(".progress-wrap").style.display="none";const n=new o._4j({color:11184810}),i=new o.eaF(t,n);M=i,M.userData.url={url:a},f.add(M),P(y,M,b),URL.revokeObjectURL(a);break}case"fbx":{let t;r=new m.w;try{t=await r.loadAsync(a,t=>$(t,e))}catch(e){return void URL.revokeObjectURL(a)}document.querySelector(".progress-wrap").style.display="none",M=t,M.userData.url=a,f.add(M),P(y,M,b),URL.revokeObjectURL(a);break}case"3dm":{let t;r=new h.a,r.setLibraryPath("./libs/rhino3dm/");try{t=await r.loadAsync(a,t=>$(t,e))}catch(e){URL.revokeObjectURL(a);const t=["• 웹 최적화된 GLB 포맷 또는 IFC 형식으로 변환해 보세요","• 브라우저 캐시를 삭제하고 다시 시도해보세요","• 불필요한 레이어나 객체를 제거해보세요."];return void alert(`3DM 파일 로딩 실패\n\n오류: ${e?.error?.message}\n\n해결 방법:\n${t.join("\n")}`)}document.querySelector(".progress-wrap").style.display="none",M=t,M.userData.url=a,f.add(M),P(y,M,b),URL.revokeObjectURL(a);break}default:URL.revokeObjectURL(a)}}finally{document.getElementById("schema").textContent=t.toUpperCase(),document.getElementById("schema").style.background="#6944F0",document.getElementById("file-name").textContent=function(){if(performance.memory){const e=performance.memory,t=e.usedJSHeapSize/1048576,a=e.totalJSHeapSize/1048576,n=e.jsHeapSizeLimit/1048576;return`메모리: ${t.toFixed(2)}MB / ${a.toFixed(2)}MB (한계: ${n.toFixed(2)}MB)`}}(),document.querySelector(".left-header > h2").textContent=e.name.replace(/\.[^/.]+$/,"")}}function P(e,t,a){R&&R.stop();const n=(new o.NRn).setFromObject(t).getBoundingSphere(new o.iyt),i=o.cj9.degToRad(e.fov),s=e.aspect,c=2*Math.atan(Math.tan(i/2)*s),d=Math.min(i,c),l=1.05*n.radius/Math.sin(d/2),u=(new o.Pq0).subVectors(e.position,a.target).normalize(),p=n.center.clone().addScaledVector(u,l);e.near=n.radius/100,e.far=1e3*n.radius,e.updateProjectionMatrix();const m={camX:e.position.x,camY:e.position.y,camZ:e.position.z,tgtX:a.target.x,tgtY:a.target.y,tgtZ:a.target.z},h={camX:p.x,camY:p.y,camZ:p.z,tgtX:n.center.x,tgtY:n.center.y,tgtZ:n.center.z};R=new r.K(m).to(h,1500).easing(r.GS.Quadratic.InOut).onUpdate(()=>{e.position.set(m.camX,m.camY,m.camZ),a.target.set(m.tgtX,m.tgtY,m.tgtZ),a.update()}).onComplete(()=>{}).start()}function $(e,t){if(e.lengthComputable){const t=100*Math.min(e.loaded/e.total,1);j.textContent=`<DownLoad-reader> ${t.toFixed(2)}%`}}let B=null,F=0;function D(e){if(U.mouseMoved)return;x.x=e.offsetX/g.clientWidth*2-1,x.y=-(e.offsetY/g.clientHeight*2-1),L.setFromCamera(x,y);const t=L.intersectObjects([M],!0);if(0===t.length)return void(B&&(B.material.emissive?.setHex(F),B=null));const a=t[0].object;B!==a&&(B&&B.material.emissive?.setHex(F),B=a,F=a.material.emissive?.getHex(),a.material.emissive?.setHex(12382500),P(y,a,b))}async function E(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:960,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:540,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.9,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"image/jpeg",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"cover",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:200;const i=v.domElement,s=i.width||i.clientWidth,c=i.height||i.clientHeight;if(!s||!c||s<r||c<r)return null;b.update(),v.render(f,y),await new Promise(e=>requestAnimationFrame(e));const d=s/c,l=e/t,u=document.createElement("canvas");u.width=e,u.height=t;const p=u.getContext("2d");let m=0,h=0,w=s,g=c,L=0,x=0,M=e,R=t;if("fit"===o){const a=Math.min(e/s,t/c);M=Math.round(s*a),R=Math.round(c*a),L=Math.round((e-M)/2),x=Math.round((t-R)/2)}else d>l?(w=Math.round(c*l),m=Math.round((s-w)/2)):(g=Math.round(s/l),h=Math.round((c-g)/2));p.drawImage(i,m,h,w,g,L,x,M,R);return await new Promise(e=>u.toBlob(e,n,a))}window.addEventListener("message",async e=>{if(!e.data?.path)return;let{path:t,thumbnail_key:a,resourcePath:n,dataId:o,path_name:r}=e.data;"null"==a&&(a=null);try{if(await async function(e){const t=e.split("/").pop().split("?")[0],a=decodeURIComponent(t).split("__")[0],n=a.split(".").pop().toLowerCase(),o=["glb","gltf"],r=314572800;try{const t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch ${e}: ${t.status}`);const i=t.headers.get("Content-Length"),s=i?parseInt(i,10):0;if(!o.includes(n)&&s>r)return void(document.querySelector(".modal").style.display="flex");const c=t.body.getReader();let d=0;const l=[];for(;;){const{done:e,value:t}=await c.read();if(e)break;if(l.push(t),d+=t.length,!o.includes(n)&&0===s&&d>r)return c.cancel(),void(document.querySelector(".modal").style.display="flex");if(s){const e=(d/s*100).toFixed(2);z.textContent=`File Size: ${(s/1048576).toFixed(2)}MB | ${e}%`}else z.textContent=`Downloaded: ${(d/1048576).toFixed(2)}MB`}const u=t.headers.get("Content-Type")||"application/octet-stream",p=new File(l,a,{type:u});await S(p)}catch(e){}}(t),a)return;const i=n.replace(/\.[^/.]+$/,".jpeg"),s=`${e.origin}${r}`,c=await axios.post(`${s}/generateUploadUrl`,{resourcePath:n,date:new Date,needsThumbnail:!0,thumbnailPath:i}),{thumbnailUrl:d,thumbnailKey:l}=c.data.result;await new Promise(e=>setTimeout(e,1500));const u=await E(763,540,.9);if(!u)return;await axios.put(d,u,{headers:{"Content-Type":u.type||"image/jpeg"}});await axios.post(`${s}/updateThumbnailInfo`,{data_id:o,thumbnail_key:l,thumbnail_size:u.size})}catch(e){e.response||e.request}},!1);let z=document.getElementById("progress-text")}},a={};function n(e){var o=a[e];if(void 0!==o)return o.exports;var r=a[e]={exports:{}};return t[e](r,r.exports,n),r.exports}n.m=t,e=[],n.O=(t,a,o,r)=>{if(!a){var i=1/0;for(l=0;l<e.length;l++){for(var[a,o,r]=e[l],s=!0,c=0;c<a.length;c++)(!1&r||i>=r)&&Object.keys(n.O).every(e=>n.O[e](a[c]))?a.splice(c--,1):(s=!1,r<i&&(i=r));if(s){e.splice(l--,1);var d=o();void 0!==d&&(t=d)}}return t}r=r||0;for(var l=e.length;l>0&&e[l-1][2]>r;l--)e[l]=e[l-1];e[l]=[a,o,r]},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={792:0};n.O.j=t=>0===e[t];var t=(t,a)=>{var o,r,[i,s,c]=a,d=0;if(i.some(t=>0!==e[t])){for(o in s)n.o(s,o)&&(n.m[o]=s[o]);if(c)var l=c(n)}for(t&&t(a);d<i.length;d++)r=i[d],n.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return n.O(l)},a=self.webpackChunk_3dviewer=self.webpackChunk_3dviewer||[];a.forEach(t.bind(null,0)),a.push=t.bind(null,a.push.bind(a))})();var o=n.O(void 0,[471],()=>n(732));o=n.O(o)})();
//# sourceMappingURL=bundle.26e9bcb072f8f12dccbf.js.map