@shopware-ag/dive 1.18.4 → 1.18.5-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/AR-B6LRgTEL.js +1482 -0
- package/build/AR-B6LRgTEL.js.map +1 -0
- package/build/AR-YJZL1lm5.cjs +170 -0
- package/build/AR-YJZL1lm5.cjs.map +1 -0
- package/build/dive-BmDCwQRo.js +24811 -0
- package/build/dive-BmDCwQRo.js.map +1 -0
- package/build/dive-C-5_QywE.cjs +3857 -0
- package/build/dive-C-5_QywE.cjs.map +1 -0
- package/build/dive.cjs +2 -4860
- package/build/dive.cjs.map +1 -1
- package/build/dive.d.ts +6 -1186
- package/build/dive.js +7 -4889
- package/build/dive.js.map +1 -1
- package/build/src/animation/AnimationSystem.d.ts +16 -0
- package/build/src/ar/AR.d.ts +21 -0
- package/build/src/ar/arquicklook/ARQuickLook.d.ts +8 -0
- package/build/src/ar/sceneviewer/SceneViewer.d.ts +7 -0
- package/build/src/ar/webxr/WebXR.d.ts +21 -0
- package/build/src/ar/webxr/controller/WebXRController.d.ts +46 -0
- package/build/src/ar/webxr/crosshair/WebXRCrosshair.d.ts +7 -0
- package/build/src/ar/webxr/origin/WebXROrigin.d.ts +31 -0
- package/build/src/ar/webxr/overlay/Overlay.d.ts +8 -0
- package/build/src/ar/webxr/raycaster/WebXRRaycaster.d.ts +40 -0
- package/build/src/ar/webxr/raycaster/ar/WebXRRaycasterAR.d.ts +15 -0
- package/build/src/ar/webxr/raycaster/three/WebXRRaycasterTHREE.d.ts +12 -0
- package/build/src/ar/webxr/touchscreencontrols/WebXRTouchscreenControls.d.ts +73 -0
- package/build/src/axiscamera/AxisCamera.d.ts +18 -0
- package/build/src/camera/PerspectiveCamera.d.ts +20 -0
- package/build/src/com/Communication.d.ts +77 -0
- package/build/src/com/actions/camera/computeencompassingview.d.ts +9 -0
- package/build/src/com/actions/camera/getcameratransform.d.ts +9 -0
- package/build/src/com/actions/camera/movecamera.d.ts +15 -0
- package/build/src/com/actions/camera/resetcamera.d.ts +7 -0
- package/build/src/com/actions/camera/setcameralayer.d.ts +7 -0
- package/build/src/com/actions/camera/setcameratransform.d.ts +9 -0
- package/build/src/com/actions/camera/zoomcamera.d.ts +8 -0
- package/build/src/com/actions/index.d.ts +58 -0
- package/build/src/com/actions/media/generatemedia.d.ts +15 -0
- package/build/src/com/actions/object/addobject.d.ts +6 -0
- package/build/src/com/actions/object/deleteobject.d.ts +8 -0
- package/build/src/com/actions/object/deselectobject.d.ts +8 -0
- package/build/src/com/actions/object/getallobjects.d.ts +6 -0
- package/build/src/com/actions/object/getobjects.d.ts +8 -0
- package/build/src/com/actions/object/model/dropit.d.ts +7 -0
- package/build/src/com/actions/object/model/modelloaded.d.ts +7 -0
- package/build/src/com/actions/object/model/placeonfloor.d.ts +7 -0
- package/build/src/com/actions/object/selectobject.d.ts +8 -0
- package/build/src/com/actions/object/setparent.d.ts +13 -0
- package/build/src/com/actions/object/updateobject.d.ts +8 -0
- package/build/src/com/actions/scene/exportscene.d.ts +8 -0
- package/build/src/com/actions/scene/getallscenedata.d.ts +6 -0
- package/build/src/com/actions/scene/launchar.d.ts +6 -0
- package/build/src/com/actions/scene/setbackground.d.ts +7 -0
- package/build/src/com/actions/scene/updatescene.d.ts +11 -0
- package/build/src/com/actions/toolbox/select/setgizmomode.d.ts +7 -0
- package/build/src/com/actions/toolbox/transform/setgizmoscalelinked.d.ts +5 -0
- package/build/src/com/actions/toolbox/transform/setgizmovisible.d.ts +5 -0
- package/build/src/com/actions/toolbox/usetool.d.ts +8 -0
- package/build/src/com/types/COMBaseEntity.d.ts +8 -0
- package/build/src/com/types/COMEntity.d.ts +6 -0
- package/build/src/com/types/COMEntityType.d.ts +1 -0
- package/build/src/com/types/COMGeometry.d.ts +7 -0
- package/build/src/com/types/COMGeometryType.d.ts +1 -0
- package/build/src/com/types/COMGroup.d.ts +8 -0
- package/build/src/com/types/COMLight.d.ts +10 -0
- package/build/src/com/types/COMMaterial.d.ts +11 -0
- package/build/src/com/types/COMModel.d.ts +11 -0
- package/build/src/com/types/COMPov.d.ts +7 -0
- package/build/src/com/types/COMPrimitive.d.ts +11 -0
- package/build/src/com/types/index.d.ts +11 -0
- package/build/src/constant/AxisHelperColors.d.ts +6 -0
- package/build/src/constant/GridColors.d.ts +2 -0
- package/build/src/constant/VisibilityLayerMask.d.ts +5 -0
- package/build/src/controls/OrbitControls.d.ts +38 -0
- package/build/src/dive.d.ts +64 -0
- package/build/src/events/EventExecutor.d.ts +5 -0
- package/build/src/exporters/usdz/USDZExporter.d.ts +15 -0
- package/build/src/gizmo/Gizmo.d.ts +27 -0
- package/build/src/gizmo/handles/AxisHandle.d.ts +30 -0
- package/build/src/gizmo/handles/RadialHandle.d.ts +30 -0
- package/build/src/gizmo/handles/ScaleHandle.d.ts +33 -0
- package/build/src/gizmo/plane/GizmoPlane.d.ts +12 -0
- package/build/src/gizmo/rotate/RotateGizmo.d.ts +17 -0
- package/build/src/gizmo/scale/ScaleGizmo.d.ts +20 -0
- package/build/src/gizmo/translate/TranslateGizmo.d.ts +17 -0
- package/build/src/grid/Grid.d.ts +10 -0
- package/build/src/group/Group.d.ts +23 -0
- package/build/src/helper/applyMixins/applyMixins.d.ts +8 -0
- package/build/src/helper/findInterface/findInterface.d.ts +2 -0
- package/build/src/helper/findSceneRecursive/findSceneRecursive.d.ts +9 -0
- package/build/src/helper/getObjectDelta/getObjectDelta.d.ts +4 -0
- package/build/src/helper/isInterface/implementsInterface.d.ts +2 -0
- package/build/src/info/Info.d.ts +39 -0
- package/build/src/interface/Draggable.d.ts +7 -0
- package/build/src/interface/Hoverable.d.ts +7 -0
- package/build/src/interface/Movable.d.ts +11 -0
- package/build/src/interface/Rotatable.d.ts +9 -0
- package/build/src/interface/Scalable.d.ts +9 -0
- package/build/src/interface/Selectable.d.ts +10 -0
- package/build/src/io/IO.d.ts +10 -0
- package/build/src/io/gltf/GLTFIO.d.ts +12 -0
- package/build/src/light/AmbientLight.d.ts +17 -0
- package/build/src/light/PointLight.d.ts +29 -0
- package/build/src/light/SceneLight.d.ts +18 -0
- package/build/src/loadingmanager/LoadingManager.d.ts +14 -0
- package/build/src/math/ceil/ceilExp.d.ts +1 -0
- package/build/src/math/degToRad/degToRad.d.ts +1 -0
- package/build/src/math/floor/floorExp.d.ts +1 -0
- package/build/src/math/helper/shift.d.ts +1 -0
- package/build/src/math/index.d.ts +18 -0
- package/build/src/math/radToDeg/radToDeg.d.ts +1 -0
- package/build/src/math/round/roundExp.d.ts +1 -0
- package/build/src/math/signedAngleTo/signedAngleTo.d.ts +9 -0
- package/build/src/math/toFixed/toFixedExp.d.ts +1 -0
- package/build/src/math/truncate/truncateExp.d.ts +1 -0
- package/build/src/mediacreator/MediaCreator.d.ts +17 -0
- package/build/src/model/Model.d.ts +21 -0
- package/build/src/node/Node.d.ts +24 -0
- package/build/src/primitive/Primitive.d.ts +28 -0
- package/build/src/primitive/floor/Floor.d.ts +14 -0
- package/build/src/renderer/Renderer.d.ts +69 -0
- package/build/src/scene/Scene.d.ts +46 -0
- package/build/src/scene/root/Root.d.ts +42 -0
- package/build/src/scene/xrroot/XRRoot.d.ts +17 -0
- package/build/src/scene/xrroot/xrlightroot/XRLightRoot.d.ts +13 -0
- package/build/src/toolbox/BaseTool.d.ts +48 -0
- package/build/src/toolbox/Toolbox.d.ts +31 -0
- package/build/src/toolbox/select/SelectTool.d.ts +26 -0
- package/build/src/toolbox/transform/TransformTool.d.ts +27 -0
- package/build/src/types/SceneData.d.ts +19 -0
- package/build/src/types/SceneObjects.d.ts +7 -0
- package/build/src/types/SceneType.d.ts +4 -0
- package/build/src/types/index.d.ts +4 -0
- package/package.json +9 -8
- package/src/camera/PerspectiveCamera.ts +1 -1
- package/src/com/Communication.ts +33 -8
- package/src/com/__test__/Communication.test.ts +2 -1
- package/src/dive.ts +0 -3
- package/build/dive.d.cts +0 -1186
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("./dive-C-5_QywE.cjs");function Yt(e,t){return e?t in e:!1}function Ut(e,t){if(e)return Yt(e,t)?e:Ut(e.parent,t)}/*!
|
|
2
|
+
fflate - fast JavaScript compression/decompression
|
|
3
|
+
<https://101arrowz.github.io/fflate>
|
|
4
|
+
Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
|
|
5
|
+
version 0.8.2
|
|
6
|
+
*/var E=Uint8Array,D=Uint16Array,wt=Int32Array,yt=new E([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),xt=new E([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),$t=new E([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Vt=function(e,t){for(var i=new D(31),r=0;r<31;++r)i[r]=t+=1<<e[r-1];for(var s=new wt(i[30]),r=1;r<30;++r)for(var n=i[r];n<i[r+1];++n)s[n]=n-i[r]<<5|r;return{b:i,r:s}},Lt=Vt(yt,2),Zt=Lt.b,_t=Lt.r;Zt[28]=258,_t[258]=28;var Jt=Vt(xt,0),Pt=Jt.r,pt=new D(32768);for(var R=0;R<32768;++R){var N=(R&43690)>>1|(R&21845)<<1;N=(N&52428)>>2|(N&13107)<<2,N=(N&61680)>>4|(N&3855)<<4,pt[R]=((N&65280)>>8|(N&255)<<8)>>1}var it=function(e,t,i){for(var r=e.length,s=0,n=new D(t);s<r;++s)e[s]&&++n[e[s]-1];var o=new D(t);for(s=1;s<t;++s)o[s]=o[s-1]+n[s-1]<<1;var c;if(i){c=new D(1<<t);var h=15-t;for(s=0;s<r;++s)if(e[s])for(var l=s<<4|e[s],a=t-e[s],u=o[e[s]-1]++<<a,_=u|(1<<a)-1;u<=_;++u)c[pt[u]>>h]=l}else for(c=new D(r),s=0;s<r;++s)e[s]&&(c[s]=pt[o[e[s]-1]++]>>15-e[s]);return c},W=new E(288);for(var R=0;R<144;++R)W[R]=8;for(var R=144;R<256;++R)W[R]=9;for(var R=256;R<280;++R)W[R]=7;for(var R=280;R<288;++R)W[R]=8;var nt=new E(32);for(var R=0;R<32;++R)nt[R]=5;var Kt=it(W,9,0),te=it(nt,5,0),kt=function(e){return(e+7)/8|0},zt=function(e,t,i){return(i==null||i>e.length)&&(i=e.length),new E(e.subarray(t,i))},ee=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],at=function(e,t,i){var r=new Error(t||ee[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,at),!i)throw r;return r},j=function(e,t,i){i<<=t&7;var r=t/8|0;e[r]|=i,e[r+1]|=i>>8},K=function(e,t,i){i<<=t&7;var r=t/8|0;e[r]|=i,e[r+1]|=i>>8,e[r+2]|=i>>16},ft=function(e,t){for(var i=[],r=0;r<e.length;++r)e[r]&&i.push({s:r,f:e[r]});var s=i.length,n=i.slice();if(!s)return{t:jt,l:0};if(s==1){var o=new E(i[0].s+1);return o[i[0].s]=1,{t:o,l:1}}i.sort(function($,H){return $.f-H.f}),i.push({s:-1,f:25001});var c=i[0],h=i[1],l=0,a=1,u=2;for(i[0]={s:-1,f:c.f+h.f,l:c,r:h};a!=s-1;)c=i[i[l].f<i[u].f?l++:u++],h=i[l!=a&&i[l].f<i[u].f?l++:u++],i[a++]={s:-1,f:c.f+h.f,l:c,r:h};for(var _=n[0].s,r=1;r<s;++r)n[r].s>_&&(_=n[r].s);var d=new D(_+1),v=vt(i[a-1],d,0);if(v>t){var r=0,m=0,w=v-t,P=1<<w;for(n.sort(function(H,S){return d[S.s]-d[H.s]||H.f-S.f});r<s;++r){var O=n[r].s;if(d[O]>t)m+=P-(1<<v-d[O]),d[O]=t;else break}for(m>>=w;m>0;){var L=n[r].s;d[L]<t?m-=1<<t-d[L]++-1:++r}for(;r>=0&&m;--r){var y=n[r].s;d[y]==t&&(--d[y],++m)}v=t}return{t:new E(d),l:v}},vt=function(e,t,i){return e.s==-1?Math.max(vt(e.l,t,i+1),vt(e.r,t,i+1)):t[e.s]=i},Ht=function(e){for(var t=e.length;t&&!e[--t];);for(var i=new D(++t),r=0,s=e[0],n=1,o=function(h){i[r++]=h},c=1;c<=t;++c)if(e[c]==s&&c!=t)++n;else{if(!s&&n>2){for(;n>138;n-=138)o(32754);n>2&&(o(n>10?n-11<<5|28690:n-3<<5|12305),n=0)}else if(n>3){for(o(s),--n;n>6;n-=6)o(8304);n>2&&(o(n-3<<5|8208),n=0)}for(;n--;)o(s);n=1,s=e[c]}return{c:i.subarray(0,r),n:t}},tt=function(e,t){for(var i=0,r=0;r<t.length;++r)i+=e[r]*t[r];return i},Bt=function(e,t,i){var r=i.length,s=kt(t+2);e[s]=r&255,e[s+1]=r>>8,e[s+2]=e[s]^255,e[s+3]=e[s+1]^255;for(var n=0;n<r;++n)e[s+n+4]=i[n];return(s+4+r)*8},At=function(e,t,i,r,s,n,o,c,h,l,a){j(t,a++,i),++s[256];for(var u=ft(s,15),_=u.t,d=u.l,v=ft(n,15),m=v.t,w=v.l,P=Ht(_),O=P.c,L=P.n,y=Ht(m),$=y.c,H=y.n,S=new D(19),g=0;g<O.length;++g)++S[O[g]&31];for(var g=0;g<$.length;++g)++S[$[g]&31];for(var p=ft(S,7),A=p.t,q=p.l,I=19;I>4&&!A[$t[I-1]];--I);var G=l+5<<3,X=tt(s,W)+tt(n,nt)+o,U=tt(s,_)+tt(n,m)+o+14+3*I+tt(S,A)+2*S[16]+3*S[17]+7*S[18];if(h>=0&&G<=X&&G<=U)return Bt(t,a,e.subarray(h,h+l));var k,x,V,F;if(j(t,a,1+(U<X)),a+=2,U<X){k=it(_,d,0),x=_,V=it(m,w,0),F=m;var ct=it(A,q,0);j(t,a,L-257),j(t,a+5,H-1),j(t,a+10,I-4),a+=14;for(var g=0;g<I;++g)j(t,a+3*g,A[$t[g]]);a+=3*I;for(var z=[O,$],J=0;J<2;++J)for(var Q=z[J],g=0;g<Q.length;++g){var B=Q[g]&31;j(t,a,ct[B]),a+=A[B],B>15&&(j(t,a,Q[g]>>5&127),a+=Q[g]>>12)}}else k=Kt,x=W,V=te,F=nt;for(var g=0;g<c;++g){var b=r[g];if(b>255){var B=b>>18&31;K(t,a,k[B+257]),a+=x[B+257],B>7&&(j(t,a,b>>23&31),a+=yt[B]);var Y=b&31;K(t,a,V[Y]),a+=F[Y],Y>3&&(K(t,a,b>>5&8191),a+=xt[Y])}else K(t,a,k[b]),a+=x[b]}return K(t,a,k[256]),a+x[256]},ie=new wt([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),jt=new E(0),re=function(e,t,i,r,s,n){var o=n.z||e.length,c=new E(r+o+5*(1+Math.ceil(o/7e3))+s),h=c.subarray(r,c.length-s),l=n.l,a=(n.r||0)&7;if(t){a&&(h[0]=n.r>>3);for(var u=ie[t-1],_=u>>13,d=u&8191,v=(1<<i)-1,m=n.p||new D(32768),w=n.h||new D(v+1),P=Math.ceil(i/3),O=2*P,L=function(ut){return(e[ut]^e[ut+1]<<P^e[ut+2]<<O)&v},y=new wt(25e3),$=new D(288),H=new D(32),S=0,g=0,p=n.i||0,A=0,q=n.w||0,I=0;p+2<o;++p){var G=L(p),X=p&32767,U=w[G];if(m[X]=U,w[G]=X,q<=p){var k=o-p;if((S>7e3||A>24576)&&(k>423||!l)){a=At(e,h,0,y,$,H,g,A,I,p-I,a),A=S=g=0,I=p;for(var x=0;x<286;++x)$[x]=0;for(var x=0;x<30;++x)H[x]=0}var V=2,F=0,ct=d,z=X-U&32767;if(k>2&&G==L(p-z))for(var J=Math.min(_,k)-1,Q=Math.min(32767,p),B=Math.min(258,k);z<=Q&&--ct&&X!=U;){if(e[p+V]==e[p+V-z]){for(var b=0;b<B&&e[p+b]==e[p+b-z];++b);if(b>V){if(V=b,F=z,b>J)break;for(var Y=Math.min(z,b-2),bt=0,x=0;x<Y;++x){var ht=p-z+x&32767,Qt=m[ht],Tt=ht-Qt&32767;Tt>bt&&(bt=Tt,U=ht)}}}X=U,U=m[X],z+=X-U&32767}if(F){y[A++]=268435456|_t[V]<<18|Pt[F];var Et=_t[V]&31,Ct=Pt[F]&31;g+=yt[Et]+xt[Ct],++$[257+Et],++H[Ct],q=p+V,++S}else y[A++]=e[p],++$[e[p]]}}for(p=Math.max(p,q);p<o;++p)y[A++]=e[p],++$[e[p]];a=At(e,h,l,y,$,H,g,A,I,p-I,a),l||(n.r=a&7|h[a/8|0]<<3,a-=7,n.h=w,n.p=m,n.i=p,n.w=q)}else{for(var p=n.w||0;p<o+l;p+=65535){var lt=p+65535;lt>=o&&(h[a/8|0]=l,lt=o),a=Bt(h,a+1,e.subarray(p,lt))}n.i=o}return zt(c,0,r+kt(a)+s)},se=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var i=t,r=9;--r;)i=(i&1&&-306674912)^i>>>1;e[t]=i}return e}(),ne=function(){var e=-1;return{p:function(t){for(var i=e,r=0;r<t.length;++r)i=se[i&255^t[r]]^i>>>8;e=i},d:function(){return~e}}},oe=function(e,t,i,r,s){if(!s&&(s={l:1},t.dictionary)){var n=t.dictionary.subarray(-32768),o=new E(n.length+e.length);o.set(n),o.set(e,n.length),e=o,s.w=n.length}return re(e,t.level==null?6:t.level,t.mem==null?s.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,i,r,s)},Ft=function(e,t){var i={};for(var r in e)i[r]=e[r];for(var r in t)i[r]=t[r];return i},M=function(e,t,i){for(;i;++t)e[t]=i,i>>>=8};function ae(e,t){return oe(e,t||{},0,0)}var Nt=function(e,t,i,r){for(var s in e){var n=e[s],o=t+s,c=r;Array.isArray(n)&&(c=Ft(r,n[1]),n=n[0]),n instanceof E?i[o]=[n,c]:(i[o+="/"]=[new E(0),c],Nt(n,o,i,r))}},It=typeof TextEncoder<"u"&&new TextEncoder,ce=typeof TextDecoder<"u"&&new TextDecoder,he=0;try{ce.decode(jt,{stream:!0}),he=1}catch{}function ot(e,t){var i;if(It)return It.encode(e);for(var r=e.length,s=new E(e.length+(e.length>>1)),n=0,o=function(l){s[n++]=l},i=0;i<r;++i){if(n+5>s.length){var c=new E(n+8+(r-i<<1));c.set(s),s=c}var h=e.charCodeAt(i);h<128||t?o(h):h<2048?(o(192|h>>6),o(128|h&63)):h>55295&&h<57344?(h=65536+(h&1047552)|e.charCodeAt(++i)&1023,o(240|h>>18),o(128|h>>12&63),o(128|h>>6&63),o(128|h&63)):(o(224|h>>12),o(128|h>>6&63),o(128|h&63))}return zt(s,0,n)}var gt=function(e){var t=0;if(e)for(var i in e){var r=e[i].length;r>65535&&at(9),t+=r+4}return t},Dt=function(e,t,i,r,s,n,o,c){var h=r.length,l=i.extra,a=c&&c.length,u=gt(l);M(e,t,o!=null?33639248:67324752),t+=4,o!=null&&(e[t++]=20,e[t++]=i.os),e[t]=20,t+=2,e[t++]=i.flag<<1|(n<0&&8),e[t++]=s&&8,e[t++]=i.compression&255,e[t++]=i.compression>>8;var _=new Date(i.mtime==null?Date.now():i.mtime),d=_.getFullYear()-1980;if((d<0||d>119)&&at(10),M(e,t,d<<25|_.getMonth()+1<<21|_.getDate()<<16|_.getHours()<<11|_.getMinutes()<<5|_.getSeconds()>>1),t+=4,n!=-1&&(M(e,t,i.crc),M(e,t+4,n<0?-n-2:n),M(e,t+8,i.size)),M(e,t+12,h),M(e,t+14,u),t+=16,o!=null&&(M(e,t,a),M(e,t+6,i.attrs),M(e,t+10,o),t+=14),e.set(r,t),t+=h,u)for(var v in l){var m=l[v],w=m.length;M(e,t,+v),M(e,t+2,w),e.set(m,t+4),t+=4+w}return a&&(e.set(c,t),t+=a),t},le=function(e,t,i,r,s){M(e,t,101010256),M(e,t+8,i),M(e,t+10,i),M(e,t+12,r),M(e,t+16,s)};function ue(e,t){t||(t={});var i={},r=[];Nt(e,"",i,t);var s=0,n=0;for(var o in i){var c=i[o],h=c[0],l=c[1],a=l.level==0?0:8,u=ot(o),_=u.length,d=l.comment,v=d&&ot(d),m=v&&v.length,w=gt(l.extra);_>65535&&at(11);var P=a?ae(h,l):h,O=P.length,L=ne();L.p(h),r.push(Ft(l,{size:h.length,crc:L.d(),c:P,f:u,m:v,u:_!=o.length||v&&d.length!=m,o:s,compression:a})),s+=30+_+w+O,n+=76+2*(_+w)+(m||0)+O}for(var y=new E(n+22),$=s,H=n-s,S=0;S<r.length;++S){var u=r[S];Dt(y,u.o,u,u.f,u.u,u.c.length);var g=30+u.f.length+gt(u.extra);y.set(u.c,u.o+g),Dt(y,s,u,u.f,u.u,u.c.length,u.o,u.m),s+=16+g+(u.m?u.m.length:0)}return le(y,s,r.length,H,$),y}let et,dt,Z,rt;function fe(e,t=1/0,i=null){dt||(dt=new f.PlaneGeometry(2,2,1,1)),Z||(Z=new f.ShaderMaterial({uniforms:{blitTexture:new f.Uniform(e)},vertexShader:`
|
|
7
|
+
varying vec2 vUv;
|
|
8
|
+
void main(){
|
|
9
|
+
vUv = uv;
|
|
10
|
+
gl_Position = vec4(position.xy * 1.0,0.,.999999);
|
|
11
|
+
}`,fragmentShader:`
|
|
12
|
+
uniform sampler2D blitTexture;
|
|
13
|
+
varying vec2 vUv;
|
|
14
|
+
|
|
15
|
+
void main(){
|
|
16
|
+
gl_FragColor = vec4(vUv.xy, 0, 1);
|
|
17
|
+
|
|
18
|
+
#ifdef IS_SRGB
|
|
19
|
+
gl_FragColor = LinearTosRGB( texture2D( blitTexture, vUv) );
|
|
20
|
+
#else
|
|
21
|
+
gl_FragColor = texture2D( blitTexture, vUv);
|
|
22
|
+
#endif
|
|
23
|
+
}`})),Z.uniforms.blitTexture.value=e,Z.defines.IS_SRGB=e.colorSpace==f.SRGBColorSpace,Z.needsUpdate=!0,rt||(rt=new f.Mesh(dt,Z),rt.frustumCulled=!1);const r=new f.PerspectiveCamera,s=new f.Scene;s.add(rt),i===null&&(i=et=new f.WebGLRenderer({antialias:!1}));const n=Math.min(e.image.width,t),o=Math.min(e.image.height,t);i.setSize(n,o),i.clear(),i.render(s,r);const c=document.createElement("canvas"),h=c.getContext("2d");c.width=n,c.height=o,h.drawImage(i.domElement,0,0,n,o);const l=new f.CanvasTexture(c);return l.minFilter=e.minFilter,l.magFilter=e.magFilter,l.wrapS=e.wrapS,l.wrapT=e.wrapT,l.name=e.name,et&&(et.forceContextLoss(),et.dispose(),et=null),l}class de{async parse(t,i={}){i=Object.assign({ar:{anchoring:{type:"plane"},planeAnchoring:{alignment:"horizontal"}},quickLookCompatible:!1,maxTextureSize:1024},i);const r={},s="model.usda";r[s]=null;let n=Wt();n+=pe(i);const o={},c={};t.traverseVisible(l=>{if(l.isMesh){const a=l.geometry,u=l.material;if(u.isMeshStandardMaterial){const _="geometries/Geometry_"+a.id+".usda";if(!(_ in r)){const d=Re(a);r[_]=ge(d)}u.uuid in o||(o[u.uuid]=u),n+=me(l,a,u)}else console.warn("THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)",l)}else l.isCamera&&(n+=Ce(l))}),n+=ve(),n+=be(o,c,i.quickLookCompatible),r[s]=ot(n),n=null;for(const l in c){let a=c[l];a.isCompressedTexture===!0&&(a=fe(a));const u=_e(a.image,a.flipY,i.maxTextureSize),_=await new Promise(d=>u.toBlob(d,"image/png",1));r[`textures/Texture_${l}.png`]=new Uint8Array(await _.arrayBuffer())}let h=0;for(const l in r){const a=r[l],u=34+l.length;h+=u;const _=h&63;if(_!==4){const d=64-_,v=new Uint8Array(d);r[l]=[a,{extra:{12345:v}}]}h=a.length}return ue(r,{level:0})}}function _e(e,t,i){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const r=i/Math.max(e.width,e.height),s=document.createElement("canvas");s.width=e.width*Math.min(1,r),s.height=e.height*Math.min(1,r);const n=s.getContext("2d");return t===!0&&(n.translate(0,s.height),n.scale(1,-1)),n.drawImage(e,0,0,s.width,s.height),s}else throw new Error("THREE.USDZExporter: No valid image data found. Unable to process texture.")}const T=7;function Wt(){return`#usda 1.0
|
|
24
|
+
(
|
|
25
|
+
customLayerData = {
|
|
26
|
+
string creator = "Three.js USDZExporter"
|
|
27
|
+
}
|
|
28
|
+
defaultPrim = "Root"
|
|
29
|
+
metersPerUnit = 1
|
|
30
|
+
upAxis = "Y"
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
`}function pe(e){return`def Xform "Root"
|
|
34
|
+
{
|
|
35
|
+
def Scope "Scenes" (
|
|
36
|
+
kind = "sceneLibrary"
|
|
37
|
+
)
|
|
38
|
+
{
|
|
39
|
+
def Xform "Scene" (
|
|
40
|
+
customData = {
|
|
41
|
+
bool preliminary_collidesWithEnvironment = 0
|
|
42
|
+
string sceneName = "Scene"
|
|
43
|
+
}
|
|
44
|
+
sceneName = "Scene"
|
|
45
|
+
)
|
|
46
|
+
{
|
|
47
|
+
token preliminary:anchoring:type = "${e.ar.anchoring.type}"
|
|
48
|
+
token preliminary:planeAnchoring:alignment = "${e.ar.planeAnchoring.alignment}"
|
|
49
|
+
|
|
50
|
+
`}function ve(){return`
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
`}function ge(e){let t=Wt();return t+=e,ot(t)}function me(e,t,i){const r="Object_"+e.id,s=qt(e.matrixWorld);return e.matrixWorld.determinant()<0&&console.warn("THREE.USDZExporter: USDZ does not support negative scales",e),`def Xform "${r}" (
|
|
56
|
+
prepend references = @./geometries/Geometry_${t.id}.usda@</Geometry>
|
|
57
|
+
prepend apiSchemas = ["MaterialBindingAPI"]
|
|
58
|
+
)
|
|
59
|
+
{
|
|
60
|
+
matrix4d xformOp:transform = ${s}
|
|
61
|
+
uniform token[] xformOpOrder = ["xformOp:transform"]
|
|
62
|
+
|
|
63
|
+
rel material:binding = </Materials/Material_${i.id}>
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
`}function qt(e){const t=e.elements;return`( ${st(t,0)}, ${st(t,4)}, ${st(t,8)}, ${st(t,12)} )`}function st(e,t){return`(${e[t+0]}, ${e[t+1]}, ${e[t+2]}, ${e[t+3]})`}function Re(e){return`
|
|
67
|
+
def "Geometry"
|
|
68
|
+
{
|
|
69
|
+
${Se(e)}
|
|
70
|
+
}
|
|
71
|
+
`}function Se(e){const t="Geometry",i=e.attributes,r=i.position.count;return`
|
|
72
|
+
def Mesh "${t}"
|
|
73
|
+
{
|
|
74
|
+
int[] faceVertexCounts = [${we(e)}]
|
|
75
|
+
int[] faceVertexIndices = [${ye(e)}]
|
|
76
|
+
normal3f[] normals = [${mt(i.normal,r)}] (
|
|
77
|
+
interpolation = "vertex"
|
|
78
|
+
)
|
|
79
|
+
point3f[] points = [${mt(i.position,r)}]
|
|
80
|
+
${Me(i)}
|
|
81
|
+
uniform token subdivisionScheme = "none"
|
|
82
|
+
}
|
|
83
|
+
`}function we(e){const t=e.index!==null?e.index.count:e.attributes.position.count;return Array(t/3).fill(3).join(", ")}function ye(e){const t=e.index,i=[];if(t!==null)for(let r=0;r<t.count;r++)i.push(t.getX(r));else{const r=e.attributes.position.count;for(let s=0;s<r;s++)i.push(s)}return i.join(", ")}function mt(e,t){if(e===void 0)return console.warn("USDZExporter: Normals missing."),Array(t).fill("(0, 0, 0)").join(", ");const i=[];for(let r=0;r<e.count;r++){const s=e.getX(r),n=e.getY(r),o=e.getZ(r);i.push(`(${s.toPrecision(T)}, ${n.toPrecision(T)}, ${o.toPrecision(T)})`)}return i.join(", ")}function xe(e){const t=[];for(let i=0;i<e.count;i++){const r=e.getX(i),s=e.getY(i);t.push(`(${r.toPrecision(T)}, ${1-s.toPrecision(T)})`)}return t.join(", ")}function Me(e){let t="";for(let r=0;r<4;r++){const s=r>0?r:"",n=e["uv"+s];n!==void 0&&(t+=`
|
|
84
|
+
texCoord2f[] primvars:st${s} = [${xe(n)}] (
|
|
85
|
+
interpolation = "vertex"
|
|
86
|
+
)`)}const i=e.color;if(i!==void 0){const r=i.count;t+=`
|
|
87
|
+
color3f[] primvars:displayColor = [${mt(i,r)}] (
|
|
88
|
+
interpolation = "vertex"
|
|
89
|
+
)`}return t}function be(e,t,i=!1){const r=[];for(const s in e){const n=e[s];r.push(Te(n,t,i))}return`def "Materials"
|
|
90
|
+
{
|
|
91
|
+
${r.join("")}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
`}function Te(e,t,i=!1){const r=" ",s=[],n=[];function o(c,h,l){const a=c.source.id+"_"+c.flipY;t[a]=c;const u=c.channel>0?"st"+c.channel:"st",_={1e3:"repeat",1001:"clamp",1002:"mirror"},d=c.repeat.clone(),v=c.offset.clone(),m=c.rotation,w=Math.sin(m),P=Math.cos(m);return v.y=1-v.y-d.y,i?(v.x=v.x/d.x,v.y=v.y/d.y,v.x+=w/d.x,v.y+=P-1):(v.x+=w*d.x,v.y+=(1-P)*d.y),`
|
|
95
|
+
def Shader "PrimvarReader_${h}"
|
|
96
|
+
{
|
|
97
|
+
uniform token info:id = "UsdPrimvarReader_float2"
|
|
98
|
+
float2 inputs:fallback = (0.0, 0.0)
|
|
99
|
+
token inputs:varname = "${u}"
|
|
100
|
+
float2 outputs:result
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
def Shader "Transform2d_${h}"
|
|
104
|
+
{
|
|
105
|
+
uniform token info:id = "UsdTransform2d"
|
|
106
|
+
token inputs:in.connect = </Materials/Material_${e.id}/PrimvarReader_${h}.outputs:result>
|
|
107
|
+
float inputs:rotation = ${(m*(180/Math.PI)).toFixed(T)}
|
|
108
|
+
float2 inputs:scale = ${Xt(d)}
|
|
109
|
+
float2 inputs:translation = ${Xt(v)}
|
|
110
|
+
float2 outputs:result
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
def Shader "Texture_${c.id}_${h}"
|
|
114
|
+
{
|
|
115
|
+
uniform token info:id = "UsdUVTexture"
|
|
116
|
+
asset inputs:file = @textures/Texture_${a}.png@
|
|
117
|
+
float2 inputs:st.connect = </Materials/Material_${e.id}/Transform2d_${h}.outputs:result>
|
|
118
|
+
${l!==void 0?"float4 inputs:scale = "+Ee(l):""}
|
|
119
|
+
token inputs:sourceColorSpace = "${c.colorSpace===f.NoColorSpace?"raw":"sRGB"}"
|
|
120
|
+
token inputs:wrapS = "${_[c.wrapS]}"
|
|
121
|
+
token inputs:wrapT = "${_[c.wrapT]}"
|
|
122
|
+
float outputs:r
|
|
123
|
+
float outputs:g
|
|
124
|
+
float outputs:b
|
|
125
|
+
float3 outputs:rgb
|
|
126
|
+
${e.transparent||e.alphaTest>0?"float outputs:a":""}
|
|
127
|
+
}`}return e.side===f.DoubleSide&&console.warn("THREE.USDZExporter: USDZ does not support double sided materials",e),e.map!==null?(s.push(`${r}color3f inputs:diffuseColor.connect = </Materials/Material_${e.id}/Texture_${e.map.id}_diffuse.outputs:rgb>`),e.transparent?s.push(`${r}float inputs:opacity.connect = </Materials/Material_${e.id}/Texture_${e.map.id}_diffuse.outputs:a>`):e.alphaTest>0&&(s.push(`${r}float inputs:opacity.connect = </Materials/Material_${e.id}/Texture_${e.map.id}_diffuse.outputs:a>`),s.push(`${r}float inputs:opacityThreshold = ${e.alphaTest}`)),n.push(o(e.map,"diffuse",e.color))):s.push(`${r}color3f inputs:diffuseColor = ${Ot(e.color)}`),e.emissiveMap!==null?(s.push(`${r}color3f inputs:emissiveColor.connect = </Materials/Material_${e.id}/Texture_${e.emissiveMap.id}_emissive.outputs:rgb>`),n.push(o(e.emissiveMap,"emissive"))):e.emissive.getHex()>0&&s.push(`${r}color3f inputs:emissiveColor = ${Ot(e.emissive)}`),e.normalMap!==null&&(s.push(`${r}normal3f inputs:normal.connect = </Materials/Material_${e.id}/Texture_${e.normalMap.id}_normal.outputs:rgb>`),n.push(o(e.normalMap,"normal"))),e.aoMap!==null&&(s.push(`${r}float inputs:occlusion.connect = </Materials/Material_${e.id}/Texture_${e.aoMap.id}_occlusion.outputs:r>`),n.push(o(e.aoMap,"occlusion"))),e.roughnessMap!==null&&e.roughness===1?(s.push(`${r}float inputs:roughness.connect = </Materials/Material_${e.id}/Texture_${e.roughnessMap.id}_roughness.outputs:g>`),n.push(o(e.roughnessMap,"roughness"))):s.push(`${r}float inputs:roughness = ${e.roughness}`),e.metalnessMap!==null&&e.metalness===1?(s.push(`${r}float inputs:metallic.connect = </Materials/Material_${e.id}/Texture_${e.metalnessMap.id}_metallic.outputs:b>`),n.push(o(e.metalnessMap,"metallic"))):s.push(`${r}float inputs:metallic = ${e.metalness}`),e.alphaMap!==null?(s.push(`${r}float inputs:opacity.connect = </Materials/Material_${e.id}/Texture_${e.alphaMap.id}_opacity.outputs:r>`),s.push(`${r}float inputs:opacityThreshold = 0.0001`),n.push(o(e.alphaMap,"opacity"))):s.push(`${r}float inputs:opacity = ${e.opacity}`),e.isMeshPhysicalMaterial&&(s.push(`${r}float inputs:clearcoat = ${e.clearcoat}`),s.push(`${r}float inputs:clearcoatRoughness = ${e.clearcoatRoughness}`),s.push(`${r}float inputs:ior = ${e.ior}`)),`
|
|
128
|
+
def Material "Material_${e.id}"
|
|
129
|
+
{
|
|
130
|
+
def Shader "PreviewSurface"
|
|
131
|
+
{
|
|
132
|
+
uniform token info:id = "UsdPreviewSurface"
|
|
133
|
+
${s.join(`
|
|
134
|
+
`)}
|
|
135
|
+
int inputs:useSpecularWorkflow = 0
|
|
136
|
+
token outputs:surface
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
token outputs:surface.connect = </Materials/Material_${e.id}/PreviewSurface.outputs:surface>
|
|
140
|
+
|
|
141
|
+
${n.join(`
|
|
142
|
+
`)}
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
`}function Ot(e){return`(${e.r}, ${e.g}, ${e.b})`}function Ee(e){return`(${e.r}, ${e.g}, ${e.b}, 1.0)`}function Xt(e){return`(${e.x}, ${e.y})`}function Ce(e){const t=e.name?e.name:"Camera_"+e.id,i=qt(e.matrixWorld);return e.matrixWorld.determinant()<0&&console.warn("THREE.USDZExporter: USDZ does not support negative scales",e),e.isOrthographicCamera?`def Camera "${t}"
|
|
146
|
+
{
|
|
147
|
+
matrix4d xformOp:transform = ${i}
|
|
148
|
+
uniform token[] xformOpOrder = ["xformOp:transform"]
|
|
149
|
+
|
|
150
|
+
float2 clippingRange = (${e.near.toPrecision(T)}, ${e.far.toPrecision(T)})
|
|
151
|
+
float horizontalAperture = ${((Math.abs(e.left)+Math.abs(e.right))*10).toPrecision(T)}
|
|
152
|
+
float verticalAperture = ${((Math.abs(e.top)+Math.abs(e.bottom))*10).toPrecision(T)}
|
|
153
|
+
token projection = "orthographic"
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
`:`def Camera "${t}"
|
|
157
|
+
{
|
|
158
|
+
matrix4d xformOp:transform = ${i}
|
|
159
|
+
uniform token[] xformOpOrder = ["xformOp:transform"]
|
|
160
|
+
|
|
161
|
+
float2 clippingRange = (${e.near.toPrecision(T)}, ${e.far.toPrecision(T)})
|
|
162
|
+
float focalLength = ${e.getFocalLength().toPrecision(T)}
|
|
163
|
+
float focusDistance = ${e.focus.toPrecision(T)}
|
|
164
|
+
float horizontalAperture = ${e.getFilmWidth().toPrecision(T)}
|
|
165
|
+
token projection = "perspective"
|
|
166
|
+
float verticalAperture = ${e.getFilmHeight().toPrecision(T)}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
`}class $e extends de{parse(t,i){return super.parse(t,i)}}const Mt=class Mt{static Launch(t,i){const r=new f.Object3D;return r.add(...this.extractModels(t)),this.launchARFromNode(r,i)}static extractModels(t){return t.Root.children}static launchARFromNode(t,i){return this._usdzExporter.parse(t,{quickLookCompatible:!0,ar:{anchoring:{type:"plane"},planeAnchoring:{alignment:(i==null?void 0:i.arPlacement)==="vertical"?"vertical":"horizontal"}}}).then(r=>{const s=new Blob([r],{type:"model/vnd.usdz+zip"});let n=URL.createObjectURL(s);(i==null?void 0:i.arScale)==="fixed"&&(n=n.concat("#allowsContentScaling=0"));const o=document.createElement("a");o.innerHTML="<picture></picture>",o.rel="ar",o.href=n,o.download="scene.usdz",o.click()})}};Mt._usdzExporter=new $e;let Rt=Mt;class Pe{get Element(){return this._element}get CloseButton(){return this._closeButton}constructor(){this._element=document.createElement("div"),this._closeButton=this.createCloseButton(),this._element.appendChild(this._closeButton),document.body.appendChild(this._element)}createCloseButton(){const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttribute("d","M 12,12 L 28,28 M 28,12 12,28"),t.setAttribute("stroke","#fff"),t.setAttribute("stroke-width","2");const i=document.createElementNS("http://www.w3.org/2000/svg","svg");return i.setAttribute("width","38"),i.setAttribute("height","38"),i.style.position="absolute",i.style.right="20px",i.style.top="20px",i.appendChild(t),i}}class He extends f.Object3D{set mesh(t){this.clear(),t&&this.add(t)}constructor(t){return super(),t?this.mesh=t:this.UseDefaultMesh(),this.matrixAutoUpdate=!1,this}UseDefaultMesh(){const t=new f.RingGeometry(.08,.1,32).rotateX(-Math.PI/2),i=new f.MeshBasicMaterial;this.mesh=new f.Mesh(t,i)}UpdateFromPose(t){this.matrix.fromArray(t.transform.matrix)}}class Ae{constructor(t,i){this._referenceSpaceBuffer=null,this._requesting=!1,this._initialized=!1,this._session=t,this._renderer=i,this._hitMatrixBuffer=new f.Matrix4}Dispose(){var t;(t=this._transientHitTestSource)==null||t.cancel(),this._transientHitTestSource=void 0,this._initialized=!1}async Init(){return this._session?this._requesting?(console.error("DIVEWebXRRaycaster: Currently initializing! Aborting initialization..."),Promise.reject()):this._initialized?(console.error("DIVEWebXRRaycaster: Already initialized! Aborting initialization..."),Promise.reject()):(this._requesting=!0,this._transientHitTestSource=await this._session.requestHitTestSourceForTransientInput({profile:"generic-touchscreen"}),this._referenceSpaceBuffer=this._renderer.xr.getReferenceSpace(),this._requesting=!1,this._transientHitTestSource?(this._initialized=!0,console.log("DIVEWebXRRaycasterAR: Initialized"),Promise.resolve(this)):Promise.reject()):(console.error("DIVEWebXRRaycaster: No session set in Init()! Aborting initialization..."),Promise.reject())}GetIntersections(t){if(!this._transientHitTestSource)return[];const i=t.getHitTestResultsForTransientInput(this._transientHitTestSource);return i.length===0?[]:i.map(s=>{if(!this._referenceSpaceBuffer||!s.results[0]||!s.results[0].getPose)return;const n=s.results[0].getPose(this._referenceSpaceBuffer);return n?(this._hitMatrixBuffer.fromArray(n.transform.matrix),{point:new f.Vector3().setFromMatrixPosition(this._hitMatrixBuffer),matrix:this._hitMatrixBuffer,object:void 0}):void 0}).filter(s=>s!==void 0)}}class Ie{constructor(t,i){this._raycaster=new f.Raycaster,this._renderer=t,this._scene=i,this._controller=this._renderer.xr.getController(0)}async Init(){return console.log("DIVEWebXRRaycasterTHREE: Initialized"),Promise.resolve(this)}GetIntersections(){this._controller.updateMatrixWorld(),this._raycaster.setFromXRController(this._controller);const t=this._raycaster.intersectObjects(this._scene.XRRoot.XRModelRoot.children);return t.length===0?[]:t.map(i=>({point:i.point,matrix:i.object.matrixWorld,object:i.object}))}}class Gt{constructor(){this._listeners=new Map}Subscribe(t,i){return this._listeners.get(t)||this._listeners.set(t,[]),this._listeners.get(t).push(i),()=>{const r=this._listeners.get(t);if(!r)return!1;const s=r.findIndex(n=>n===i);return s===-1?!1:(r.splice(s,1),!0)}}dispatch(t,i){const r=this._listeners.get(t);r&&r.forEach(s=>s(i))}}class De extends Gt{constructor(t,i,r){super(),this._initialized=!1,this._arHitResultBuffer=[],this._sceneHitResultBuffer=[],this._hasHit=!1,this._session=t,this._threeRaycaster=new Ie(i,r),this._arRaycaster=new Ae(t,i)}Dispose(){this._initialized=!1}async Init(){return this._session?this._initialized?(console.error("DIVEWebXRRaycaster: Already initialized! Aborting initialization..."),Promise.reject()):(await this._threeRaycaster.Init(),await this._arRaycaster.Init(),console.log("DIVEWebXRRaycaster: Initialized"),this._initialized=!0,Promise.resolve(this)):(console.error("DIVEWebXRRaycaster: No session set in Init()! Aborting initialization..."),Promise.reject())}GetARIntersections(t){return this._arHitResultBuffer=this._arRaycaster.GetIntersections(t),this._arHitResultBuffer.length>0?this.onARHitFound(this._arHitResultBuffer[0]):this.onARHitLost(),this._arHitResultBuffer}GetSceneIntersections(){return this._sceneHitResultBuffer=this._threeRaycaster.GetIntersections(),this._sceneHitResultBuffer.length>0?this.onSceneHitFound(this._sceneHitResultBuffer[0]):this.onSceneHitLost(),this._sceneHitResultBuffer}onARHitFound(t){this._hasHit=!0,this.dispatch("AR_HIT_FOUND",{hit:t})}onARHitLost(){this._hasHit&&(this._hasHit=!1,this.dispatch("AR_HIT_LOST"))}onSceneHitFound(t){this._hasHit=!0,this.dispatch("SCENE_HIT_FOUND",{hit:t})}onSceneHitLost(){this._hasHit&&(this._hasHit=!1,this.dispatch("SCENE_HIT_LOST"))}}class Oe{constructor(t,i,r){this._raycastHitCounter=0,this._originSetResolve=()=>{},this._renderer=i,this._session=t,this._originSet=new Promise(s=>{this._originSetResolve=s}),this._requesting=!1,this._initialized=!1,this._referenceSpaceBuffer=null,this._hitTestSource=null,this._entityTypes=r||["plane"],this._hitTestResultBuffer=[],this._matrix=new f.Matrix4,this._position=new f.Vector3,this._quaternion=new f.Quaternion,this._scale=new f.Vector3,this._originSet.then(()=>{this._matrix.decompose(this._position,this._quaternion,this._scale)})}get originSet(){return this._originSet}get matrix(){return this._matrix}set matrix(t){this._matrix=t,this._matrix.decompose(this._position,this._quaternion,this._scale)}get position(){return this._position}get quaternion(){return this._quaternion}get scale(){return this._scale}async Init(){if(this._initialized)return Promise.resolve(this);if(!this._session)return console.error("DIVEWebXROrigin: No session set in Init()! Aborting initialization..."),Promise.reject();if(this._requesting)return console.error("DIVEWebXROrigin: Currently initializing! Aborting initialization..."),Promise.reject();this._requesting=!0;const t=await this._session.requestReferenceSpace("viewer");return this._hitTestSource=await this._session.requestHitTestSource({space:t,entityTypes:this._entityTypes})||null,this._requesting=!1,this._hitTestSource?(this._initialized=!0,Promise.resolve(this)):Promise.reject()}Dispose(){var t;this._initialized=!1,this._requesting=!1,(t=this._hitTestSource)==null||t.cancel(),this._hitTestSource=null,this._hitTestResultBuffer=[],this._matrix=new f.Matrix4,this._position=new f.Vector3,this._quaternion=new f.Quaternion,this._scale=new f.Vector3}Update(t){if(this._initialized){if(!this._hitTestSource)throw new Error("DIVEWebXRRaycaster: Critical Error: HitTestSource not available but WebXROrigin is initialized!");if(this._hitTestResultBuffer=t.getHitTestResults(this._hitTestSource),this._hitTestResultBuffer.length>0){if(this._referenceSpaceBuffer=this._renderer.xr.getReferenceSpace(),!this._referenceSpaceBuffer){this.onHitLost();return}const i=this._hitTestResultBuffer[0].getPose(this._referenceSpaceBuffer);if(!i){this.onHitLost();return}this.onHitFound(i)}else this.onHitLost()}}onHitFound(t){this._raycastHitCounter++,this.matrix.fromArray(t.transform.matrix),this._raycastHitCounter>50&&this._originSetResolve()}onHitLost(){this._raycastHitCounter=0}}class Xe extends Gt{constructor(t){super(),this._touchCount=0,this._touches=[],this._handleRotateStarted=!1,this._handleRotateMoved=!1,this._handleRotateEnded=!1,this._startAngle=0,this._lastAngle=0,this._angleDelta=0,this._handlePinchStarted=!1,this._handlePinchMoved=!1,this._handlePinchEnded=!1,this._scaleDistanceStart=0,this._currentDistance=1,this._deltaDistance=0,this._session=t,this._touches=[{start:new f.Vector2,current:new f.Vector2,delta:new f.Vector2},{start:new f.Vector2,current:new f.Vector2,delta:new f.Vector2}],this._handleRotateStarted=!1,window.addEventListener("touchstart",i=>this.onTouchStart(i)),window.addEventListener("touchmove",i=>this.onTouchMove(i)),window.addEventListener("touchend",i=>this.onTouchEnd(i)),this._session.addEventListener("selectstart",()=>this.onSessionSelectStart()),this._session.addEventListener("selectend",()=>this.onSessionSelectEnd())}Dispose(){window.removeEventListener("touchstart",t=>this.onTouchStart(t)),window.removeEventListener("touchmove",t=>this.onTouchMove(t)),window.removeEventListener("touchend",t=>this.onTouchEnd(t)),this._session.removeEventListener("selectstart",()=>this.onSessionSelectStart()),this._session.removeEventListener("selectend",()=>this.onSessionSelectEnd())}onTouchStart(t){this._touchCount=t.touches.length,this._touches[0].start.set(t.touches[0].clientX,t.touches[0].clientY),this._touches[0].current.set(t.touches[0].clientX,t.touches[0].clientY),this._touches[0].delta.set(0,0),this._touchCount>1&&(this._touches[1].start.set(t.touches[1].clientX,t.touches[1].clientY),this._touches[1].current.set(t.touches[1].clientX,t.touches[1].clientY),this._touches[1].delta.set(0,0)),this._touchCount===2&&(this.handleRotateStart(),this.handlePinchStart()),this._handleRotateStarted&&(this.dispatch("ROTATE_START",{current:0}),this._handleRotateStarted=!1),this._handlePinchStarted&&(this.dispatch("PINCH_START",{current:0}),this._handlePinchStarted=!1)}onTouchMove(t){this._touchCount=t.touches.length,this._touches[0].start.set(t.touches[0].clientX,t.touches[0].clientY),this._touches[0].current.set(t.touches[0].clientX,t.touches[0].clientY),this._touches[0].delta.copy(this._touches[0].current.clone().sub(this._touches[0].start)),this._touchCount>1&&(this._touches[1].start.set(t.touches[1].clientX,t.touches[1].clientY),this._touches[1].current.set(t.touches[1].clientX,t.touches[1].clientY),this._touches[1].delta.copy(this._touches[1].current.clone().sub(this._touches[1].start))),this._touchCount===2&&(this.handleRotateMoved(),this.handlePinchMoved()),this._touchCount===1&&this.dispatch("TOUCH_MOVE",{touches:[{current:this._touches[0].current.clone(),delta:this._touches[0].delta.clone()},{current:this._touches[1].current.clone(),delta:this._touches[1].delta.clone()}],touchCount:this._touchCount}),this._touchCount===2&&(this._handleRotateMoved&&(this.dispatch("ROTATE_MOVE",{current:this._lastAngle,delta:this._angleDelta}),this._handleRotateMoved=!1),this._handlePinchMoved&&(this.dispatch("PINCH_MOVE",{current:this._currentDistance,delta:this._deltaDistance}),this._handlePinchMoved=!1))}onTouchEnd(t){this._touchCount=t.touches.length,this._touchCount===0&&(this._touches[0].start.set(0,0),this._touches[0].current.set(0,0),this._touches[0].delta.set(0,0)),this._touchCount===1&&(this.handleRotateEnded(),this.handlePinchEnded(),this._touches[1].start.set(0,0),this._touches[1].current.set(0,0),this._touches[1].delta.set(0,0)),this._handleRotateEnded&&(this.dispatch("ROTATE_END",{current:this._lastAngle}),this._handleRotateEnded=!1),this._handlePinchEnded&&(this.dispatch("PINCH_END",{current:this._currentDistance}),this._handlePinchEnded=!1)}onSessionSelectStart(){this.dispatch("TOUCH_START",{touches:[{current:this._touches[0].current.clone()},{current:this._touches[1].current.clone()}],touchCount:this._touchCount})}onSessionSelectEnd(){this.dispatch("TOUCH_END",{touches:[{current:this._touches[0].current.clone()},{current:this._touches[1].current.clone()}],touchCount:this._touchCount})}handleRotateStart(){this._handleRotateStarted=!0,this._startAngle=this._touches[1].start.clone().sub(this._touches[0].current).angle()}handleRotateMoved(){this._handleRotateMoved=!0;const t=this._touches[1].current.clone().sub(this._touches[0].current).angle();this._angleDelta=t-this._startAngle,this._lastAngle=this._angleDelta*-1}handleRotateEnded(){this._handleRotateEnded=!0}handlePinchStart(){this._handlePinchStarted=!0,this._scaleDistanceStart=this._touches[1].start.distanceTo(this._touches[0].current)}handlePinchMoved(){this._handlePinchMoved=!0;const t=this._currentDistance,i=this._touches[1].current.distanceTo(this._touches[0].current);this._currentDistance=i/this._scaleDistanceStart,this._deltaDistance=this._currentDistance-t}handlePinchEnded(){this._handlePinchEnded=!0}}class Ue extends f.Object3D{constructor(t,i,r){super(),this._frameBuffer=null,this._handNodeInitialPosition=new f.Vector3,this._placed=!1,this._grabbedObject=null,this._arHitPosition=new f.Vector3,this._arHitQuaternion=new f.Quaternion,this._arHitScale=new f.Vector3(1,1,1),this._initialObjectPosition=null,this._initialRaycastHit=null,this._deltaRaycastHit=new f.Vector3,this._touchQuaterion=new f.Quaternion,this._touchScale=1,this._scaleThreshold=.1,this._startTouchQuaternion=new f.Quaternion,this._startTouchScale=1,this._renderer=i,this._scene=r,this._session=t,this._xrRaycaster=new De(t,i,r),this._origin=new Oe(this._session,this._renderer,["plane"]),this._crosshair=new He,this._crosshair.visible=!1,this._xrCamera=this._renderer.xr.getCamera(),this._scene.XRRoot.XRHandNode.position.set(0,-.05,-.25),this._handNodeInitialPosition=this._scene.XRRoot.XRHandNode.position.clone(),this._touchscreenControls=new Xe(this._session),this._touchscreenControls.Subscribe("TOUCH_START",()=>this.onTouchStart()),this._touchscreenControls.Subscribe("TOUCH_MOVE",()=>this.onTouchMove()),this._touchscreenControls.Subscribe("TOUCH_END",s=>this.onTouchEnd(s)),this._touchscreenControls.Subscribe("ROTATE_START",()=>this.onRotateStart()),this._touchscreenControls.Subscribe("ROTATE_MOVE",s=>this.onRotateMove(s)),this._touchscreenControls.Subscribe("PINCH_START",()=>this.onPinchStart()),this._touchscreenControls.Subscribe("PINCH_MOVE",s=>this.onPinchMove(s))}async Init(){return this.prepareScene(),await this.initOrigin(),await this.initRaycaster(),Promise.resolve(this)}Dispose(){this.restoreScene(),this._origin.Dispose(),this._xrRaycaster.Dispose(),this._placed=!1}Update(t){this._frameBuffer=t,this._placed||(this.updateHandNode(),this._origin&&this._origin.Update(t))}updateHandNode(){this._xrCamera.updateMatrixWorld(),this._scene.XRRoot.XRHandNode.position.copy(this._handNodeInitialPosition.clone().applyMatrix4(this._xrCamera.matrixWorld)),this._scene.XRRoot.XRHandNode.quaternion.setFromRotationMatrix(this._xrCamera.matrixWorld)}async initOrigin(){this._origin=await this._origin.Init(),this._origin.originSet.then(()=>{this.placeObjects(this._origin.matrix)})}placeObjects(t){this._scene.XRRoot.XRModelRoot.matrix.copy(t),[...this._scene.XRRoot.XRHandNode.children].forEach(i=>{this._scene.XRRoot.XRModelRoot.add(i)}),this._placed=!0}updateObject(){this._grabbedObject&&(this._grabbedObject.position.copy(this._arHitPosition),this._grabbedObject.quaternion.copy(this._arHitQuaternion.clone().multiply(this._touchQuaterion)),this._grabbedObject.scale.copy(new f.Vector3(this._touchScale,this._touchScale,this._touchScale).multiply(this._arHitScale)))}onTouchStart(){const t=this._xrRaycaster.GetSceneIntersections();if(console.log("sceneHits",t),t.length===0||!t[0].object)return;const i=Ut(t[0].object,"isMovable");i&&(this._grabbedObject=i)}onTouchMove(){if(!this._frameBuffer||!this._grabbedObject)return;const t=this._xrRaycaster.GetARIntersections(this._frameBuffer);if(t.length===0){this._crosshair.visible=!1;return}const i=t[0];this._crosshair.visible=!0,this._crosshair.matrix.copy(i.matrix),this._grabbedObject&&((!this._initialObjectPosition||!this._initialRaycastHit)&&(this._initialObjectPosition=this._grabbedObject.position.clone(),this._initialRaycastHit=i.point.clone()),i.matrix.decompose(this._arHitPosition,this._arHitQuaternion,this._arHitScale),this._deltaRaycastHit.copy(i.point.clone().sub(this._initialRaycastHit)),this._arHitPosition.copy(this._initialObjectPosition.clone().add(this._deltaRaycastHit)),console.log("arHitPosition",this._arHitPosition),this.updateObject())}onTouchEnd(t){t.touchCount===0&&(this._crosshair.visible=!1,this._initialObjectPosition=null,this._initialRaycastHit=null,this._grabbedObject=null)}onRotateStart(){this._startTouchQuaternion=this._touchQuaterion.clone()}onRotateMove(t){this._touchQuaterion.setFromAxisAngle(new f.Vector3(0,-1,0),t.delta*3),this._touchQuaterion.multiply(this._startTouchQuaternion),this.updateObject()}onPinchStart(){this._startTouchScale=this._touchScale}onPinchMove(t){this._touchScale=this._startTouchScale*t.current,this.updateObject()}prepareScene(){this._scene.XRRoot.XRModelRoot.matrixAutoUpdate=!1,this._scene.add(this._crosshair);const t=[];this._scene.Root.children.forEach(i=>{const r=i.clone();r.layers.enableAll(),r.traverse(s=>{s.layers.enableAll(),s instanceof f.Mesh&&s.scale.set(.1,.1,.1)}),r.position.set(0,0,0),t.push(r)}),this._scene.XRRoot.XRHandNode.add(...t)}restoreScene(){this._scene.remove(this._crosshair),this._scene.XRRoot.XRHandNode.clear(),this._scene.XRRoot.XRModelRoot.clear(),this._scene.XRRoot.XRModelRoot.matrixAutoUpdate=!0}async initRaycaster(){if(await this._xrRaycaster.Init(),!this._xrRaycaster)return console.error("Raycaster not initialized successfully. Aborting WebXR..."),this.Dispose(),Promise.reject()}}const C=class C{static async Launch(t,i,r){if(this._renderer=t,this._scene=i,this._controller=r,this._cameraPosition=this._controller.object.position.clone(),this._cameraTarget=this._controller.target.clone(),!navigator.xr)return console.error("WebXR not supported"),Promise.reject();if(this._renderer.xr.enabled=!0,this._scene.InitXR(t),!C._overlay){const n=new Pe;C._overlay=n}C._options.domOverlay={root:C._overlay.Element};const s=await navigator.xr.requestSession("immersive-ar",this._options);return s.addEventListener("end",()=>{this._onSessionEnded()}),t.xr.setReferenceSpaceType(this._referenceSpaceType),await t.xr.setSession(s),C._overlay.Element.style.display="",this._session=s,C._overlay.CloseButton.addEventListener("click",()=>this.End()),await this._onSessionStarted(),Promise.resolve()}static Update(t,i){this._session&&this._xrController&&this._xrController.Update(i)}static End(){this._session&&this._session.end()}static async _onSessionStarted(){if(this._session)return this._renderCallbackId=this._renderer.AddPreRenderCallback((t,i)=>{this.Update(t,i)}),this._xrController=new Ue(this._session,this._renderer,this._scene),await this._xrController.Init().catch(()=>{this.End()}),Promise.resolve()}static _onSessionEnded(){if(!this._session)return;this._xrController&&this._xrController.Dispose(),this._renderCallbackId&&(this._renderer.RemovePreRenderCallback(this._renderCallbackId),this._renderCallbackId=null),this._renderer.xr.enabled=!1;const t=this._renderer.domElement.parentElement;if(t){const{clientWidth:i,clientHeight:r}=t;this._renderer.OnResize(i,r),this._controller.object.OnResize(i,r)}this._controller.object.position.copy(this._cameraPosition),this._controller.target.copy(this._cameraTarget),this._cameraPosition.set(0,0,0),this._cameraTarget.set(0,0,0),this._scene.DisposeXR(),this._session.removeEventListener("end",this._onSessionEnded),C._overlay.Element.style.display="none",this._session=null}};C._renderCallbackId=null,C._session=null,C._referenceSpaceType="local",C._overlay=null,C._options={requiredFeatures:["local","hit-test"],optionalFeatures:["light-estimation","local-floor","dom-overlay","depth-sensing"],depthSensing:{usagePreference:["gpu-optimized"],dataFormatPreference:[]},domOverlay:{root:{}}},C._xrController=null;let St=C;class Ve{static Launch(t,i){const r=this.findSceneViewerSrc(t);this.launchSceneViewer(r,i)}static launchSceneViewer(t,i){const r=document.createElement("a"),s="#model-viewer-no-ar-fallback",n=self.location.toString(),o=new URL(n),c=new URL(t,n),h=new URLSearchParams(c.search);o.hash=s,h.set("mode","ar_only"),(i==null?void 0:i.arScale)==="fixed"&&h.set("resizable","false"),(i==null?void 0:i.arPlacement)==="vertical"&&h.set("enable_vertical_placement","true");const l=`intent://arvr.google.com/scene-viewer/1.2?${h.toString()+"&file="+c.toString()}#Intent;scheme=https;package=com.google.android.googlequicksearchbox;action=android.intent.action.VIEW;S.browser_fallback_url=${encodeURIComponent(o.toString())};end;`;r.setAttribute("href",l),r.click()}static findSceneViewerSrc(t){let i=null;if(t.traverse(r=>{i||r.userData.uri&&(i=r.userData.uri)}),!i)throw new Error("No model found in scene");return i}}class Le{constructor(t,i,r){this._renderer=t,this._scene=i,this._controller=r}async Launch(t){const i=f.DIVEInfo.GetSystem();if(i==="iOS")return this.tryARQuickLook();if(i==="Android")return t!=null&&t.useWebXR?(console.warn("DIVE: WebXR is experimental on Android."),this.tryWebXR()):this.trySceneViewer();console.log("DIVE: AR not supported. Not a mobile system. (System is "+i+")")}async tryARQuickLook(t){return f.DIVEInfo.GetSupportsARQuickLook()?(console.log("DIVE: Launching AR with ARQuickLook ..."),await Rt.Launch(this._scene,t),Promise.resolve()):(console.log("ARQuickLook not supported"),Promise.reject())}async tryWebXR(){return await f.DIVEInfo.GetSupportsWebXR()?(console.log("DIVE: Launching AR with WebXR ..."),await St.Launch(this._renderer,this._scene,this._controller),Promise.resolve()):(console.log("WebXR not supported. Reason: "+f.WebXRUnsupportedReason[f.DIVEInfo.GetWebXRUnsupportedReason()]),Promise.reject())}async trySceneViewer(t){return console.log("DIVE: Launching AR with SceneViewer ..."),Ve.Launch(this._scene,t),Promise.resolve()}}exports.DIVEAR=Le;
|
|
170
|
+
//# sourceMappingURL=AR-YJZL1lm5.cjs.map
|