{"code":"(window[\"webpackJsonp\"]=window[\"webpackJsonp\"]||[]).push([[\"chunk-3a8a6014\"],{\"1aeb\":function(t,e,n){e=t.exports=n(\"2350\")(!0),e.push([t.i,'.model-container[data-v-2eb924f8]{position:relative}.model-container[data-v-2eb924f8],.model-container .view-container[data-v-2eb924f8]{width:100%;height:100%;overflow:hidden}.model-container .tag-container[data-v-2eb924f8]{width:12.5vw;padding:1.04167vw;border:.10417vw solid #fff;top:-4.16667vw;background-color:rgba(116,130,143,.9);color:#fff;border-radius:.52083vw}.model-container #close[data-v-2eb924f8]{position:absolute;right:.52083vw;top:.52083vw;cursor:pointer}.model-container #close[data-v-2eb924f8]:hover{color:#12f4e2}.model-container .tag-container[data-v-2eb924f8]:after{content:\"\";height:1.04167vw;width:.10417vw;background-color:#12f4e2;position:absolute;top:100%;left:calc(50% - 1px)}.model-container .tag-container[data-v-2eb924f8]:before{content:\"\";height:.52083vw;width:.52083vw;border-radius:.26042vw;background-color:#12f4e2;position:absolute;top:calc(100% + 1.04167vw);left:calc(50% - .26042vw)}.model-container #loading[data-v-2eb924f8]{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;color:#fff;background-color:rgba(40,85,128,.9);display:flex;justify-content:center;align-items:center}.model-container .btn[data-v-2eb924f8]{position:absolute;left:50%;bottom:1.04167vw;transform:translateX(-50%);z-index:999}',\"\",{version:3,sources:[\"D:/jenkins/workspace/sfz-lh-fvue/src/views/Normal/components/D:/jenkins/workspace/sfz-lh-fvue/src/views/Normal/components/D:/jenkins/workspace/sfz-lh-fvue/src/views/Normal/components/D:/jenkins/workspace/sfz-lh-fvue/src/views/Normal/components/modalPosition.vue\"],names:[],mappings:\"AAiVA,kCACI,iBAGgB,CAJpB,oFAEI,WACA,YACA,eAIoB,CARxB,iDAWQ,aACA,kBACA,2BACA,eACA,sCACA,WACA,sBAAmB,CAjB3B,yCAqBQ,kBACA,eACA,aACA,cAAe,CAxBvB,+CA2BQ,aAAc,CA3BtB,uDA8BQ,WACA,iBACA,eACA,yBACA,kBACA,SACA,oBAAqB,CApC7B,wDAuCQ,WACA,gBACA,eACA,uBACA,yBACA,kBACA,2BACA,yBAAqB,CA9C7B,2CAiDQ,kBACA,OACA,MACA,WACA,YACA,gBACA,WACA,oCACA,aACA,uBACA,kBAAmB,CA3D3B,uCA8DQ,kBACA,SACA,iBACA,2BACA,WAAY,CAAA\",file:\"modalPosition.vue?vue&type=style&index=0&id=2eb924f8&lang=scss&scoped=true&\",sourcesContent:[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\r\\n.model-container{\\r\\n position: relative;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n overflow: hidden;\\r\\n .view-container {\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n overflow: hidden;\\r\\n }\\r\\n .tag-container{\\r\\n width: 240px;\\r\\n padding: 20px;\\r\\n border: 2px solid #fff;\\r\\n top: -80px;\\r\\n background-color: rgba(116, 130, 143, 0.9);\\r\\n color: #fff;\\r\\n border-radius: 10px;\\r\\n // box-shadow: 0 0 10px 4px #12f4e2;\\r\\n }\\r\\n #close{\\r\\n position: absolute;\\r\\n right: 10px;\\r\\n top: 10px;\\r\\n cursor: pointer;\\r\\n }\\r\\n #close:hover{\\r\\n color: #12f4e2;\\r\\n }\\r\\n .tag-container:after{\\r\\n content: '';\\r\\n height: 20px;\\r\\n width: 2px;\\r\\n background-color: #12f4e2;\\r\\n position: absolute;\\r\\n top: 100%;\\r\\n left: calc(50% - 1px);\\r\\n }\\r\\n .tag-container:before{\\r\\n content: '';\\r\\n height: 10px;\\r\\n width: 10px;\\r\\n border-radius: 5px;\\r\\n background-color: #12f4e2;\\r\\n position: absolute;\\r\\n top: calc(100% + 20px);\\r\\n left: calc(50% - 5px);\\r\\n }\\r\\n #loading{\\r\\n position: absolute;\\r\\n left: 0;\\r\\n top: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n overflow: hidden;\\r\\n color: #fff;\\r\\n background-color: rgba(40, 85, 128, 0.9);\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n }\\r\\n .btn{\\r\\n position: absolute;\\r\\n left: 50%;\\r\\n bottom: 20px;\\r\\n transform: translateX(-50%);\\r\\n z-index: 999;\\r\\n }\\r\\n}\\r\\n\\r\\n\"],sourceRoot:\"\"}])},7013:function(t,e,n){\"use strict\";n.r(e);var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"model-container\"},[n(\"div\",{ref:\"threeDBox\",staticClass:\"view-container\"}),n(\"div\",{attrs:{id:\"loading\"}},[n(\"el-progress\",{attrs:{type:\"circle\",percentage:t.percent,\"show-text\":!1,\"stroke-width\":14}})],1)])},i=[],a=(n(\"7f7f\"),n(\"5a89\")),s=n(\"4721\"),o=n(\"34ad\"),l=n(\"afeb\"),d=n(\"c1df\"),h=n.n(d);const u={name:\"CopyShader\",uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:\"\\n\\n\\t\\tvarying vec2 vUv;\\n\\n\\t\\tvoid main() {\\n\\n\\t\\t\\tvUv = uv;\\n\\t\\t\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\n\\t\\t}\",fragmentShader:\"\\n\\n\\t\\tuniform float opacity;\\n\\n\\t\\tuniform sampler2D tDiffuse;\\n\\n\\t\\tvarying vec2 vUv;\\n\\n\\t\\tvoid main() {\\n\\n\\t\\t\\tvec4 texel = texture2D( tDiffuse, vUv );\\n\\t\\t\\tgl_FragColor = opacity * texel;\\n\\n\\n\\t\\t}\"};class c{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){}dispose(){}}const f=new a[\"gb\"](-1,1,1,-1,0,1);class p extends a[\"h\"]{constructor(){super(),this.setAttribute(\"position\",new a[\"s\"]([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute(\"uv\",new a[\"s\"]([0,2,0,0,2,0],2))}}const g=new p;class m{constructor(t){this._mesh=new a[\"T\"](g,t)}dispose(){this._mesh.geometry.dispose()}render(t){t.render(this._mesh,f)}get material(){return this._mesh.material}set material(t){this._mesh.material=t}}class v extends c{constructor(t,e){super(),this.textureID=void 0!==e?e:\"tDiffuse\",t instanceof a[\"yb\"]?(this.uniforms=t.uniforms,this.material=t):t&&(this.uniforms=a[\"Lb\"].clone(t.uniforms),this.material=new a[\"yb\"]({name:void 0!==t.name?t.name:\"unspecified\",defines:Object.assign({},t.defines),uniforms:this.uniforms,vertexShader:t.vertexShader,fragmentShader:t.fragmentShader})),this.fsQuad=new m(this.material)}render(t,e,n){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=n.texture),this.fsQuad.material=this.material,this.renderToScreen?(t.setRenderTarget(null),this.fsQuad.render(t)):(t.setRenderTarget(e),this.clear&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),this.fsQuad.render(t))}dispose(){this.material.dispose(),this.fsQuad.dispose()}}class x extends c{constructor(t,e){super(),this.scene=t,this.camera=e,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(t,e,n){const r=t.getContext(),i=t.state;let a,s;i.buffers.color.setMask(!1),i.buffers.depth.setMask(!1),i.buffers.color.setLocked(!0),i.buffers.depth.setLocked(!0),this.inverse?(a=0,s=1):(a=1,s=0),i.buffers.stencil.setTest(!0),i.buffers.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),i.buffers.stencil.setFunc(r.ALWAYS,a,4294967295),i.buffers.stencil.setClear(s),i.buffers.stencil.setLocked(!0),t.setRenderTarget(n),this.clear&&t.clear(),t.render(this.scene,this.camera),t.setRenderTarget(e),this.clear&&t.clear(),t.render(this.scene,this.camera),i.buffers.color.setLocked(!1),i.buffers.depth.setLocked(!1),i.buffers.color.setMask(!0),i.buffers.depth.setMask(!0),i.buffers.stencil.setLocked(!1),i.buffers.stencil.setFunc(r.EQUAL,1,4294967295),i.buffers.stencil.setOp(r.KEEP,r.KEEP,r.KEEP),i.buffers.stencil.setLocked(!0)}}class b extends c{constructor(){super(),this.needsSwap=!1}render(t){t.state.buffers.stencil.setLocked(!1),t.state.buffers.stencil.setTest(!1)}}class T{constructor(t,e){if(this.renderer=t,this._pixelRatio=t.getPixelRatio(),void 0===e){const n=t.getSize(new a[\"Mb\"]);this._width=n.width,this._height=n.height,e=new a[\"Pb\"](this._width*this._pixelRatio,this._height*this._pixelRatio,{type:a[\"v\"]}),e.texture.name=\"EffectComposer.rt1\"}else this._width=e.width,this._height=e.height;this.renderTarget1=e,this.renderTarget2=e.clone(),this.renderTarget2.texture.name=\"EffectComposer.rt2\",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new v(u),this.copyPass.material.blending=a[\"db\"],this.clock=new a[\"k\"]}swapBuffers(){const t=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=t}addPass(t){this.passes.push(t),t.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(t,e){this.passes.splice(e,0,t),t.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(t){const e=this.passes.indexOf(t);-1!==e&&this.passes.splice(e,1)}isLastEnabledPass(t){for(let e=t+1;e0){t.getClearColor(this._oldClearColor),this.oldClearAlpha=t.getClearAlpha();const e=t.autoClear;t.autoClear=!1,i&&t.state.buffers.stencil.setTest(!1),t.setClearColor(16777215,1),this.changeVisibilityOfSelectedObjects(!1);const r=this.renderScene.background;if(this.renderScene.background=null,this.renderScene.overrideMaterial=this.depthMaterial,t.setRenderTarget(this.renderTargetDepthBuffer),t.clear(),t.render(this.renderScene,this.renderCamera),this.changeVisibilityOfSelectedObjects(!0),this._visibilityCache.clear(),this.updateTextureMatrix(),this.changeVisibilityOfNonSelectedObjects(!1),this.renderScene.overrideMaterial=this.prepareMaskMaterial,this.prepareMaskMaterial.uniforms[\"cameraNearFar\"].value.set(this.renderCamera.near,this.renderCamera.far),this.prepareMaskMaterial.uniforms[\"depthTexture\"].value=this.renderTargetDepthBuffer.texture,this.prepareMaskMaterial.uniforms[\"textureMatrix\"].value=this.textureMatrix,t.setRenderTarget(this.renderTargetMaskBuffer),t.clear(),t.render(this.renderScene,this.renderCamera),this.renderScene.overrideMaterial=null,this.changeVisibilityOfNonSelectedObjects(!0),this._visibilityCache.clear(),this.renderScene.background=r,this.fsQuad.material=this.materialCopy,this.copyUniforms[\"tDiffuse\"].value=this.renderTargetMaskBuffer.texture,t.setRenderTarget(this.renderTargetMaskDownSampleBuffer),t.clear(),this.fsQuad.render(t),this.tempPulseColor1.copy(this.visibleEdgeColor),this.tempPulseColor2.copy(this.hiddenEdgeColor),this.pulsePeriod>0){const t=.625+.75*Math.cos(.01*performance.now()/this.pulsePeriod)/2;this.tempPulseColor1.multiplyScalar(t),this.tempPulseColor2.multiplyScalar(t)}this.fsQuad.material=this.edgeDetectionMaterial,this.edgeDetectionMaterial.uniforms[\"maskTexture\"].value=this.renderTargetMaskDownSampleBuffer.texture,this.edgeDetectionMaterial.uniforms[\"texSize\"].value.set(this.renderTargetMaskDownSampleBuffer.width,this.renderTargetMaskDownSampleBuffer.height),this.edgeDetectionMaterial.uniforms[\"visibleEdgeColor\"].value=this.tempPulseColor1,this.edgeDetectionMaterial.uniforms[\"hiddenEdgeColor\"].value=this.tempPulseColor2,t.setRenderTarget(this.renderTargetEdgeBuffer1),t.clear(),this.fsQuad.render(t),this.fsQuad.material=this.separableBlurMaterial1,this.separableBlurMaterial1.uniforms[\"colorTexture\"].value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial1.uniforms[\"direction\"].value=A.BlurDirectionX,this.separableBlurMaterial1.uniforms[\"kernelRadius\"].value=this.edgeThickness,t.setRenderTarget(this.renderTargetBlurBuffer1),t.clear(),this.fsQuad.render(t),this.separableBlurMaterial1.uniforms[\"colorTexture\"].value=this.renderTargetBlurBuffer1.texture,this.separableBlurMaterial1.uniforms[\"direction\"].value=A.BlurDirectionY,t.setRenderTarget(this.renderTargetEdgeBuffer1),t.clear(),this.fsQuad.render(t),this.fsQuad.material=this.separableBlurMaterial2,this.separableBlurMaterial2.uniforms[\"colorTexture\"].value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial2.uniforms[\"direction\"].value=A.BlurDirectionX,t.setRenderTarget(this.renderTargetBlurBuffer2),t.clear(),this.fsQuad.render(t),this.separableBlurMaterial2.uniforms[\"colorTexture\"].value=this.renderTargetBlurBuffer2.texture,this.separableBlurMaterial2.uniforms[\"direction\"].value=A.BlurDirectionY,t.setRenderTarget(this.renderTargetEdgeBuffer2),t.clear(),this.fsQuad.render(t),this.fsQuad.material=this.overlayMaterial,this.overlayMaterial.uniforms[\"maskTexture\"].value=this.renderTargetMaskBuffer.texture,this.overlayMaterial.uniforms[\"edgeTexture1\"].value=this.renderTargetEdgeBuffer1.texture,this.overlayMaterial.uniforms[\"edgeTexture2\"].value=this.renderTargetEdgeBuffer2.texture,this.overlayMaterial.uniforms[\"patternTexture\"].value=this.patternTexture,this.overlayMaterial.uniforms[\"edgeStrength\"].value=this.edgeStrength,this.overlayMaterial.uniforms[\"edgeGlow\"].value=this.edgeGlow,this.overlayMaterial.uniforms[\"usePatternTexture\"].value=this.usePatternTexture,i&&t.state.buffers.stencil.setTest(!0),t.setRenderTarget(n),this.fsQuad.render(t),t.setClearColor(this._oldClearColor,this.oldClearAlpha),t.autoClear=e}this.renderToScreen&&(this.fsQuad.material=this.materialCopy,this.copyUniforms[\"tDiffuse\"].value=n.texture,t.setRenderTarget(null),this.fsQuad.render(t))}getPrepareMaskMaterial(){return new a[\"yb\"]({uniforms:{depthTexture:{value:null},cameraNearFar:{value:new a[\"Mb\"](.5,.5)},textureMatrix:{value:null}},vertexShader:\"#include \\n\\t\\t\\t\\t#include \\n\\n\\t\\t\\t\\tvarying vec4 projTexCoord;\\n\\t\\t\\t\\tvarying vec4 vPosition;\\n\\t\\t\\t\\tuniform mat4 textureMatrix;\\n\\n\\t\\t\\t\\tvoid main() {\\n\\n\\t\\t\\t\\t\\t#include \\n\\t\\t\\t\\t\\t#include \\n\\t\\t\\t\\t\\t#include \\n\\t\\t\\t\\t\\t#include \\n\\t\\t\\t\\t\\t#include \\n\\n\\t\\t\\t\\t\\tvPosition = mvPosition;\\n\\n\\t\\t\\t\\t\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\n\\t\\t\\t\\t\\t#ifdef USE_INSTANCING\\n\\n\\t\\t\\t\\t\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\n\\t\\t\\t\\t\\t#endif\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\tworldPosition = modelMatrix * worldPosition;\\n\\n\\t\\t\\t\\t\\tprojTexCoord = textureMatrix * worldPosition;\\n\\n\\t\\t\\t\\t}\",fragmentShader:\"#include \\n\\t\\t\\t\\tvarying vec4 vPosition;\\n\\t\\t\\t\\tvarying vec4 projTexCoord;\\n\\t\\t\\t\\tuniform sampler2D depthTexture;\\n\\t\\t\\t\\tuniform vec2 cameraNearFar;\\n\\n\\t\\t\\t\\tvoid main() {\\n\\n\\t\\t\\t\\t\\tfloat depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord ));\\n\\t\\t\\t\\t\\tfloat viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y );\\n\\t\\t\\t\\t\\tfloat depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;\\n\\t\\t\\t\\t\\tgl_FragColor = vec4(0.0, depthTest, 1.0, 1.0);\\n\\n\\t\\t\\t\\t}\"})}getEdgeDetectionMaterial(){return new a[\"yb\"]({uniforms:{maskTexture:{value:null},texSize:{value:new a[\"Mb\"](.5,.5)},visibleEdgeColor:{value:new a[\"Nb\"](1,1,1)},hiddenEdgeColor:{value:new a[\"Nb\"](1,1,1)}},vertexShader:\"varying vec2 vUv;\\n\\n\\t\\t\\t\\tvoid main() {\\n\\t\\t\\t\\t\\tvUv = uv;\\n\\t\\t\\t\\t\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\t\\t\\t\\t}\",fragmentShader:\"varying vec2 vUv;\\n\\n\\t\\t\\t\\tuniform sampler2D maskTexture;\\n\\t\\t\\t\\tuniform vec2 texSize;\\n\\t\\t\\t\\tuniform vec3 visibleEdgeColor;\\n\\t\\t\\t\\tuniform vec3 hiddenEdgeColor;\\n\\n\\t\\t\\t\\tvoid main() {\\n\\t\\t\\t\\t\\tvec2 invSize = 1.0 / texSize;\\n\\t\\t\\t\\t\\tvec4 uvOffset = vec4(1.0, 0.0, 0.0, 1.0) * vec4(invSize, invSize);\\n\\t\\t\\t\\t\\tvec4 c1 = texture2D( maskTexture, vUv + uvOffset.xy);\\n\\t\\t\\t\\t\\tvec4 c2 = texture2D( maskTexture, vUv - uvOffset.xy);\\n\\t\\t\\t\\t\\tvec4 c3 = texture2D( maskTexture, vUv + uvOffset.yw);\\n\\t\\t\\t\\t\\tvec4 c4 = texture2D( maskTexture, vUv - uvOffset.yw);\\n\\t\\t\\t\\t\\tfloat diff1 = (c1.r - c2.r)*0.5;\\n\\t\\t\\t\\t\\tfloat diff2 = (c3.r - c4.r)*0.5;\\n\\t\\t\\t\\t\\tfloat d = length( vec2(diff1, diff2) );\\n\\t\\t\\t\\t\\tfloat a1 = min(c1.g, c2.g);\\n\\t\\t\\t\\t\\tfloat a2 = min(c3.g, c4.g);\\n\\t\\t\\t\\t\\tfloat visibilityFactor = min(a1, a2);\\n\\t\\t\\t\\t\\tvec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor;\\n\\t\\t\\t\\t\\tgl_FragColor = vec4(edgeColor, 1.0) * vec4(d);\\n\\t\\t\\t\\t}\"})}getSeperableBlurMaterial(t){return new a[\"yb\"]({defines:{MAX_RADIUS:t},uniforms:{colorTexture:{value:null},texSize:{value:new a[\"Mb\"](.5,.5)},direction:{value:new a[\"Mb\"](.5,.5)},kernelRadius:{value:1}},vertexShader:\"varying vec2 vUv;\\n\\n\\t\\t\\t\\tvoid main() {\\n\\t\\t\\t\\t\\tvUv = uv;\\n\\t\\t\\t\\t\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\t\\t\\t\\t}\",fragmentShader:\"#include \\n\\t\\t\\t\\tvarying vec2 vUv;\\n\\t\\t\\t\\tuniform sampler2D colorTexture;\\n\\t\\t\\t\\tuniform vec2 texSize;\\n\\t\\t\\t\\tuniform vec2 direction;\\n\\t\\t\\t\\tuniform float kernelRadius;\\n\\n\\t\\t\\t\\tfloat gaussianPdf(in float x, in float sigma) {\\n\\t\\t\\t\\t\\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvoid main() {\\n\\t\\t\\t\\t\\tvec2 invSize = 1.0 / texSize;\\n\\t\\t\\t\\t\\tfloat sigma = kernelRadius/2.0;\\n\\t\\t\\t\\t\\tfloat weightSum = gaussianPdf(0.0, sigma);\\n\\t\\t\\t\\t\\tvec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum;\\n\\t\\t\\t\\t\\tvec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);\\n\\t\\t\\t\\t\\tvec2 uvOffset = delta;\\n\\t\\t\\t\\t\\tfor( int i = 1; i <= MAX_RADIUS; i ++ ) {\\n\\t\\t\\t\\t\\t\\tfloat x = kernelRadius * float(i) / float(MAX_RADIUS);\\n\\t\\t\\t\\t\\t\\tfloat w = gaussianPdf(x, sigma);\\n\\t\\t\\t\\t\\t\\tvec4 sample1 = texture2D( colorTexture, vUv + uvOffset);\\n\\t\\t\\t\\t\\t\\tvec4 sample2 = texture2D( colorTexture, vUv - uvOffset);\\n\\t\\t\\t\\t\\t\\tdiffuseSum += ((sample1 + sample2) * w);\\n\\t\\t\\t\\t\\t\\tweightSum += (2.0 * w);\\n\\t\\t\\t\\t\\t\\tuvOffset += delta;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tgl_FragColor = diffuseSum/weightSum;\\n\\t\\t\\t\\t}\"})}getOverlayMaterial(){return new a[\"yb\"]({uniforms:{maskTexture:{value:null},edgeTexture1:{value:null},edgeTexture2:{value:null},patternTexture:{value:null},edgeStrength:{value:1},edgeGlow:{value:1},usePatternTexture:{value:0}},vertexShader:\"varying vec2 vUv;\\n\\n\\t\\t\\t\\tvoid main() {\\n\\t\\t\\t\\t\\tvUv = uv;\\n\\t\\t\\t\\t\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\t\\t\\t\\t}\",fragmentShader:\"varying vec2 vUv;\\n\\n\\t\\t\\t\\tuniform sampler2D maskTexture;\\n\\t\\t\\t\\tuniform sampler2D edgeTexture1;\\n\\t\\t\\t\\tuniform sampler2D edgeTexture2;\\n\\t\\t\\t\\tuniform sampler2D patternTexture;\\n\\t\\t\\t\\tuniform float edgeStrength;\\n\\t\\t\\t\\tuniform float edgeGlow;\\n\\t\\t\\t\\tuniform bool usePatternTexture;\\n\\n\\t\\t\\t\\tvoid main() {\\n\\t\\t\\t\\t\\tvec4 edgeValue1 = texture2D(edgeTexture1, vUv);\\n\\t\\t\\t\\t\\tvec4 edgeValue2 = texture2D(edgeTexture2, vUv);\\n\\t\\t\\t\\t\\tvec4 maskColor = texture2D(maskTexture, vUv);\\n\\t\\t\\t\\t\\tvec4 patternColor = texture2D(patternTexture, 6.0 * vUv);\\n\\t\\t\\t\\t\\tfloat visibilityFactor = 1.0 - maskColor.g > 0.0 ? 1.0 : 0.5;\\n\\t\\t\\t\\t\\tvec4 edgeValue = edgeValue1 + edgeValue2 * edgeGlow;\\n\\t\\t\\t\\t\\tvec4 finalColor = edgeStrength * maskColor.r * edgeValue;\\n\\t\\t\\t\\t\\tif(usePatternTexture)\\n\\t\\t\\t\\t\\t\\tfinalColor += + visibilityFactor * (1.0 - maskColor.r) * (1.0 - patternColor.r);\\n\\t\\t\\t\\t\\tgl_FragColor = finalColor;\\n\\t\\t\\t\\t}\",blending:a[\"b\"],depthTest:!1,depthWrite:!1,transparent:!0})}}A.BlurDirectionX=new a[\"Mb\"](1,0),A.BlurDirectionY=new a[\"Mb\"](0,1);const C={name:\"OutputShader\",uniforms:{tDiffuse:{value:null},toneMappingExposure:{value:1}},vertexShader:\"\\n\\t\\tprecision highp float;\\n\\n\\t\\tuniform mat4 modelViewMatrix;\\n\\t\\tuniform mat4 projectionMatrix;\\n\\n\\t\\tattribute vec3 position;\\n\\t\\tattribute vec2 uv;\\n\\n\\t\\tvarying vec2 vUv;\\n\\n\\t\\tvoid main() {\\n\\n\\t\\t\\tvUv = uv;\\n\\t\\t\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\n\\t\\t}\",fragmentShader:\"\\n\\t\\n\\t\\tprecision highp float;\\n\\n\\t\\tuniform sampler2D tDiffuse;\\n\\n\\t\\t#include \\n\\t\\t#include \\n\\n\\t\\tvarying vec2 vUv;\\n\\n\\t\\tvoid main() {\\n\\n\\t\\t\\tgl_FragColor = texture2D( tDiffuse, vUv );\\n\\n\\t\\t\\t// tone mapping\\n\\n\\t\\t\\t#ifdef LINEAR_TONE_MAPPING\\n\\n\\t\\t\\t\\tgl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb );\\n\\n\\t\\t\\t#elif defined( REINHARD_TONE_MAPPING )\\n\\n\\t\\t\\t\\tgl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb );\\n\\n\\t\\t\\t#elif defined( CINEON_TONE_MAPPING )\\n\\n\\t\\t\\t\\tgl_FragColor.rgb = OptimizedCineonToneMapping( gl_FragColor.rgb );\\n\\n\\t\\t\\t#elif defined( ACES_FILMIC_TONE_MAPPING )\\n\\n\\t\\t\\t\\tgl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb );\\n\\n\\t\\t\\t#endif\\n\\n\\t\\t\\t// color space\\n\\n\\t\\t\\t#ifdef SRGB_TRANSFER\\n\\n\\t\\t\\t\\tgl_FragColor = sRGBTransferOETF( gl_FragColor );\\n\\n\\t\\t\\t#endif\\n\\n\\t\\t}\"};class w extends c{constructor(){super();const t=C;this.uniforms=a[\"Lb\"].clone(t.uniforms),this.material=new a[\"qb\"]({name:t.name,uniforms:this.uniforms,vertexShader:t.vertexShader,fragmentShader:t.fragmentShader}),this.fsQuad=new m(this.material),this._outputColorSpace=null,this._toneMapping=null}render(t,e,n){this.uniforms[\"tDiffuse\"].value=n.texture,this.uniforms[\"toneMappingExposure\"].value=t.toneMappingExposure,this._outputColorSpace===t.outputColorSpace&&this._toneMapping===t.toneMapping||(this._outputColorSpace=t.outputColorSpace,this._toneMapping=t.toneMapping,this.material.defines={},a[\"m\"].getTransfer(this._outputColorSpace)===a[\"wb\"]&&(this.material.defines.SRGB_TRANSFER=\"\"),this._toneMapping===a[\"M\"]?this.material.defines.LINEAR_TONE_MAPPING=\"\":this._toneMapping===a[\"tb\"]?this.material.defines.REINHARD_TONE_MAPPING=\"\":this._toneMapping===a[\"i\"]?this.material.defines.CINEON_TONE_MAPPING=\"\":this._toneMapping===a[\"a\"]&&(this.material.defines.ACES_FILMIC_TONE_MAPPING=\"\"),this.material.needsUpdate=!0),!0===this.renderToScreen?(t.setRenderTarget(null),this.fsQuad.render(t)):(t.setRenderTarget(e),this.clear&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),this.fsQuad.render(t))}dispose(){this.material.dispose(),this.fsQuad.dispose()}}const S={name:\"FXAAShader\",uniforms:{tDiffuse:{value:null},resolution:{value:new a[\"Mb\"](1/1024,1/512)}},vertexShader:\"\\n\\n\\t\\tvarying vec2 vUv;\\n\\n\\t\\tvoid main() {\\n\\n\\t\\t\\tvUv = uv;\\n\\t\\t\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n\\n\\t\\t}\",fragmentShader:\"\\n\\tprecision highp float;\\n\\n\\tuniform sampler2D tDiffuse;\\n\\n\\tuniform vec2 resolution;\\n\\n\\tvarying vec2 vUv;\\n\\n\\t// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)\\n\\n\\t//----------------------------------------------------------------------------------\\n\\t// File: es3-keplerFXAAassetsshaders/FXAA_DefaultES.frag\\n\\t// SDK Version: v3.00\\n\\t// Email: gameworks@nvidia.com\\n\\t// Site: http://developer.nvidia.com/\\n\\t//\\n\\t// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.\\n\\t//\\n\\t// Redistribution and use in source and binary forms, with or without\\n\\t// modification, are permitted provided that the following conditions\\n\\t// are met:\\n\\t// * Redistributions of source code must retain the above copyright\\n\\t// notice, this list of conditions and the following disclaimer.\\n\\t// * Redistributions in binary form must reproduce the above copyright\\n\\t// notice, this list of conditions and the following disclaimer in the\\n\\t// documentation and/or other materials provided with the distribution.\\n\\t// * Neither the name of NVIDIA CORPORATION nor the names of its\\n\\t// contributors may be used to endorse or promote products derived\\n\\t// from this software without specific prior written permission.\\n\\t//\\n\\t// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY\\n\\t// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\\n\\t// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\\n\\t// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\\n\\t// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\\n\\t// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\\n\\t// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\\n\\t// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\\n\\t// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\\n\\t// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\\n\\t// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\\n\\t//\\n\\t//----------------------------------------------------------------------------------\\n\\n\\t#ifndef FXAA_DISCARD\\n\\t\\t\\t//\\n\\t\\t\\t// Only valid for PC OpenGL currently.\\n\\t\\t\\t// Probably will not work when FXAA_GREEN_AS_LUMA = 1.\\n\\t\\t\\t//\\n\\t\\t\\t// 1 = Use discard on pixels which don't need AA.\\n\\t\\t\\t// For APIs which enable concurrent TEX+ROP from same surface.\\n\\t\\t\\t// 0 = Return unchanged color on pixels which don't need AA.\\n\\t\\t\\t//\\n\\t\\t\\t#define FXAA_DISCARD 0\\n\\t#endif\\n\\n\\t/*--------------------------------------------------------------------------*/\\n\\t#define FxaaTexTop(t, p) texture2D(t, p, -100.0)\\n\\t#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), -100.0)\\n\\t/*--------------------------------------------------------------------------*/\\n\\n\\t#define NUM_SAMPLES 5\\n\\n\\t// assumes colors have premultipliedAlpha, so that the calculated color contrast is scaled by alpha\\n\\tfloat contrast( vec4 a, vec4 b ) {\\n\\t\\t\\tvec4 diff = abs( a - b );\\n\\t\\t\\treturn max( max( max( diff.r, diff.g ), diff.b ), diff.a );\\n\\t}\\n\\n\\t/*============================================================================\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tFXAA3 QUALITY - PC\\n\\n\\t============================================================================*/\\n\\n\\t/*--------------------------------------------------------------------------*/\\n\\tvec4 FxaaPixelShader(\\n\\t\\t\\tvec2 posM,\\n\\t\\t\\tsampler2D tex,\\n\\t\\t\\tvec2 fxaaQualityRcpFrame,\\n\\t\\t\\tfloat fxaaQualityEdgeThreshold,\\n\\t\\t\\tfloat fxaaQualityinvEdgeThreshold\\n\\t) {\\n\\t\\t\\tvec4 rgbaM = FxaaTexTop(tex, posM);\\n\\t\\t\\tvec4 rgbaS = FxaaTexOff(tex, posM, vec2( 0.0, 1.0), fxaaQualityRcpFrame.xy);\\n\\t\\t\\tvec4 rgbaE = FxaaTexOff(tex, posM, vec2( 1.0, 0.0), fxaaQualityRcpFrame.xy);\\n\\t\\t\\tvec4 rgbaN = FxaaTexOff(tex, posM, vec2( 0.0,-1.0), fxaaQualityRcpFrame.xy);\\n\\t\\t\\tvec4 rgbaW = FxaaTexOff(tex, posM, vec2(-1.0, 0.0), fxaaQualityRcpFrame.xy);\\n\\t\\t\\t// . S .\\n\\t\\t\\t// W M E\\n\\t\\t\\t// . N .\\n\\n\\t\\t\\tbool earlyExit = max( max( max(\\n\\t\\t\\t\\t\\tcontrast( rgbaM, rgbaN ),\\n\\t\\t\\t\\t\\tcontrast( rgbaM, rgbaS ) ),\\n\\t\\t\\t\\t\\tcontrast( rgbaM, rgbaE ) ),\\n\\t\\t\\t\\t\\tcontrast( rgbaM, rgbaW ) )\\n\\t\\t\\t\\t\\t< fxaaQualityEdgeThreshold;\\n\\t\\t\\t// . 0 .\\n\\t\\t\\t// 0 0 0\\n\\t\\t\\t// . 0 .\\n\\n\\t\\t\\t#if (FXAA_DISCARD == 1)\\n\\t\\t\\t\\t\\tif(earlyExit) FxaaDiscard;\\n\\t\\t\\t#else\\n\\t\\t\\t\\t\\tif(earlyExit) return rgbaM;\\n\\t\\t\\t#endif\\n\\n\\t\\t\\tfloat contrastN = contrast( rgbaM, rgbaN );\\n\\t\\t\\tfloat contrastS = contrast( rgbaM, rgbaS );\\n\\t\\t\\tfloat contrastE = contrast( rgbaM, rgbaE );\\n\\t\\t\\tfloat contrastW = contrast( rgbaM, rgbaW );\\n\\n\\t\\t\\tfloat relativeVContrast = ( contrastN + contrastS ) - ( contrastE + contrastW );\\n\\t\\t\\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\\n\\n\\t\\t\\tbool horzSpan = relativeVContrast > 0.;\\n\\t\\t\\t// . 1 .\\n\\t\\t\\t// 0 0 0\\n\\t\\t\\t// . 1 .\\n\\n\\t\\t\\t// 45 deg edge detection and corners of objects, aka V/H contrast is too similar\\n\\t\\t\\tif( abs( relativeVContrast ) < .3 ) {\\n\\t\\t\\t\\t\\t// locate the edge\\n\\t\\t\\t\\t\\tvec2 dirToEdge;\\n\\t\\t\\t\\t\\tdirToEdge.x = contrastE > contrastW ? 1. : -1.;\\n\\t\\t\\t\\t\\tdirToEdge.y = contrastS > contrastN ? 1. : -1.;\\n\\t\\t\\t\\t\\t// . 2 . . 1 .\\n\\t\\t\\t\\t\\t// 1 0 2 ~= 0 0 1\\n\\t\\t\\t\\t\\t// . 1 . . 0 .\\n\\n\\t\\t\\t\\t\\t// tap 2 pixels and see which ones are \\\"outside\\\" the edge, to\\n\\t\\t\\t\\t\\t// determine if the edge is vertical or horizontal\\n\\n\\t\\t\\t\\t\\tvec4 rgbaAlongH = FxaaTexOff(tex, posM, vec2( dirToEdge.x, -dirToEdge.y ), fxaaQualityRcpFrame.xy);\\n\\t\\t\\t\\t\\tfloat matchAlongH = contrast( rgbaM, rgbaAlongH );\\n\\t\\t\\t\\t\\t// . 1 .\\n\\t\\t\\t\\t\\t// 0 0 1\\n\\t\\t\\t\\t\\t// . 0 H\\n\\n\\t\\t\\t\\t\\tvec4 rgbaAlongV = FxaaTexOff(tex, posM, vec2( -dirToEdge.x, dirToEdge.y ), fxaaQualityRcpFrame.xy);\\n\\t\\t\\t\\t\\tfloat matchAlongV = contrast( rgbaM, rgbaAlongV );\\n\\t\\t\\t\\t\\t// V 1 .\\n\\t\\t\\t\\t\\t// 0 0 1\\n\\t\\t\\t\\t\\t// . 0 .\\n\\n\\t\\t\\t\\t\\trelativeVContrast = matchAlongV - matchAlongH;\\n\\t\\t\\t\\t\\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\\n\\n\\t\\t\\t\\t\\tif( abs( relativeVContrast ) < .3 ) { // 45 deg edge\\n\\t\\t\\t\\t\\t\\t\\t// 1 1 .\\n\\t\\t\\t\\t\\t\\t\\t// 0 0 1\\n\\t\\t\\t\\t\\t\\t\\t// . 0 1\\n\\n\\t\\t\\t\\t\\t\\t\\t// do a simple blur\\n\\t\\t\\t\\t\\t\\t\\treturn mix(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\trgbaM,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t(rgbaN + rgbaS + rgbaE + rgbaW) * .25,\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t.4\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\thorzSpan = relativeVContrast > 0.;\\n\\t\\t\\t}\\n\\n\\t\\t\\tif(!horzSpan) rgbaN = rgbaW;\\n\\t\\t\\tif(!horzSpan) rgbaS = rgbaE;\\n\\t\\t\\t// . 0 . 1\\n\\t\\t\\t// 1 0 1 -> 0\\n\\t\\t\\t// . 0 . 1\\n\\n\\t\\t\\tbool pairN = contrast( rgbaM, rgbaN ) > contrast( rgbaM, rgbaS );\\n\\t\\t\\tif(!pairN) rgbaN = rgbaS;\\n\\n\\t\\t\\tvec2 offNP;\\n\\t\\t\\toffNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\\n\\t\\t\\toffNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\\n\\n\\t\\t\\tbool doneN = false;\\n\\t\\t\\tbool doneP = false;\\n\\n\\t\\t\\tfloat nDist = 0.;\\n\\t\\t\\tfloat pDist = 0.;\\n\\n\\t\\t\\tvec2 posN = posM;\\n\\t\\t\\tvec2 posP = posM;\\n\\n\\t\\t\\tint iterationsUsed = 0;\\n\\t\\t\\tint iterationsUsedN = 0;\\n\\t\\t\\tint iterationsUsedP = 0;\\n\\t\\t\\tfor( int i = 0; i < NUM_SAMPLES; i++ ) {\\n\\t\\t\\t\\t\\titerationsUsed = i;\\n\\n\\t\\t\\t\\t\\tfloat increment = float(i + 1);\\n\\n\\t\\t\\t\\t\\tif(!doneN) {\\n\\t\\t\\t\\t\\t\\t\\tnDist += increment;\\n\\t\\t\\t\\t\\t\\t\\tposN = posM + offNP * nDist;\\n\\t\\t\\t\\t\\t\\t\\tvec4 rgbaEndN = FxaaTexTop(tex, posN.xy);\\n\\t\\t\\t\\t\\t\\t\\tdoneN = contrast( rgbaEndN, rgbaM ) > contrast( rgbaEndN, rgbaN );\\n\\t\\t\\t\\t\\t\\t\\titerationsUsedN = i;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif(!doneP) {\\n\\t\\t\\t\\t\\t\\t\\tpDist += increment;\\n\\t\\t\\t\\t\\t\\t\\tposP = posM - offNP * pDist;\\n\\t\\t\\t\\t\\t\\t\\tvec4 rgbaEndP = FxaaTexTop(tex, posP.xy);\\n\\t\\t\\t\\t\\t\\t\\tdoneP = contrast( rgbaEndP, rgbaM ) > contrast( rgbaEndP, rgbaN );\\n\\t\\t\\t\\t\\t\\t\\titerationsUsedP = i;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif(doneN || doneP) break;\\n\\t\\t\\t}\\n\\n\\n\\t\\t\\tif ( !doneP && !doneN ) return rgbaM; // failed to find end of edge\\n\\n\\t\\t\\tfloat dist = min(\\n\\t\\t\\t\\t\\tdoneN ? float( iterationsUsedN ) / float( NUM_SAMPLES - 1 ) : 1.,\\n\\t\\t\\t\\t\\tdoneP ? float( iterationsUsedP ) / float( NUM_SAMPLES - 1 ) : 1.\\n\\t\\t\\t);\\n\\n\\t\\t\\t// hacky way of reduces blurriness of mostly diagonal edges\\n\\t\\t\\t// but reduces AA quality\\n\\t\\t\\tdist = pow(dist, .5);\\n\\n\\t\\t\\tdist = 1. - dist;\\n\\n\\t\\t\\treturn mix(\\n\\t\\t\\t\\t\\trgbaM,\\n\\t\\t\\t\\t\\trgbaN,\\n\\t\\t\\t\\t\\tdist * .5\\n\\t\\t\\t);\\n\\t}\\n\\n\\tvoid main() {\\n\\t\\t\\tconst float edgeDetectionQuality = .2;\\n\\t\\t\\tconst float invEdgeDetectionQuality = 1. / edgeDetectionQuality;\\n\\n\\t\\t\\tgl_FragColor = FxaaPixelShader(\\n\\t\\t\\t\\t\\tvUv,\\n\\t\\t\\t\\t\\ttDiffuse,\\n\\t\\t\\t\\t\\tresolution,\\n\\t\\t\\t\\t\\tedgeDetectionQuality, // [0,1] contrast needed, otherwise early discard\\n\\t\\t\\t\\t\\tinvEdgeDetectionQuality\\n\\t\\t\\t);\\n\\n\\t}\\n\\t\"};var E={name:\"ModelIndex\",data:function(){return{scene:null,camera:null,controls:null,renderer:null,css2Renderer:null,clock:null,mixer:null,stats:null,time:h()().format(\"YYYY-MM-DD HH:mm:ss\"),timer:null,animationId:null,chooseObj:null,tag:null,percent:0,gui:null,composer:null,outlinePass:null,effectFXAA:null}},mounted:function(){var t=this;this.init(),this.animate(),this.timer=setInterval((function(){t.time=h()().format(\"YYYY-MM-DD HH:mm:ss\")}),1e3)},methods:{addComposer:function(){this.composer=new T(this.renderer);var t=new M(this.scene,this.camera);this.composer.addPass(t),this.outlinePass=new A(new a[\"Mb\"](window.innerWidth,window.innerHeight),this.scene,this.camera),this.outlinePass.visibleEdgeColor.set(parseInt(65280)),this.outlinePass.hiddenEdgeColor=new a[\"l\"](0,0,0),this.composer.addPass(this.outlinePass);var e=new w;this.composer.addPass(e),this.effectFXAA=new v(S),this.effectFXAA.uniforms[\"resolution\"].value.set(1/window.innerWidth,1/window.innerHeight),this.composer.addPass(this.effectFXAA)},close:function(){this.chooseObj&&this.chooseObj.remove(this.tag)},loadModel:function(){var t=this,e=new o[\"a\"];e.load(\"/static/3DModel/sfz-lh.gltf\",(function(e){t.percent=100,t.scene.add(e.scene),document.getElementById(\"loading\").style.display=\"none\"}),(function(e){var n=Math.floor(e.loaded/e.total*100);n<96&&(t.percent=n)}),(function(t){}))},GUIControler:function(t){this.gui=new l[\"a\"],this.gui.domElement.style.right=\"0px\",this.gui.domElement.style.top=\"100px\",this.gui.domElement.style.width=\"300px\",this.gui.add(t.position,\"x\",-100,100).name(\"X坐标\").step(.1),this.gui.add(t.position,\"y\",-100,100).name(\"Y坐标\").step(.1),this.gui.add(t.position,\"z\",-100,100).name(\"Z坐标\").step(.1)},init:function(){var t=this,e=this.$refs.threeDBox;this.scene=new a[\"xb\"];var n=new a[\"Hb\"],r=new a[\"Cb\"](1e3,60,60),i=n.load(\"/static/3DModel/img/sky.png\"),o=new a[\"U\"]({map:i});r.scale(1,1,-1);var l=new a[\"T\"](r,o);this.scene.add(l),this.camera=new a[\"hb\"](30,window.innerWidth/window.innerHeight,1,3e3),this.camera.position.set(-87.0511,4.7929,.799),this.camera.lookAt(0,0,0),this.loadModel();var d=new a[\"c\"](16777215,1);this.scene.add(d);var h=new a[\"o\"](16777215,2);h.position.set(80,100,50),this.scene.add(h);var u=[new a[\"U\"]({color:16777215,transparent:!0,opacity:1,side:a[\"t\"]}),new a[\"U\"]({map:(new a[\"Hb\"]).load(\"/static/3DModel/img/video.jpg\"),side:a[\"p\"]}),new a[\"U\"]({map:(new a[\"Hb\"]).load(\"/static/3DModel/img/video.jpg\"),side:a[\"p\"]})],c=new a[\"n\"](.15,.15,.05),f=new a[\"T\"](c,u);f.position.set(8.2,6.9,1.3),f.rotation.set(0,0,Math.PI/2,\"XZY\"),this.scene.add(f),this.GUIControler(f),this.renderer=new a[\"Qb\"]({antialias:!0}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(window.innerWidth,window.innerHeight),this.renderer.outputColorSpace=a[\"vb\"],e.appendChild(this.renderer.domElement),this.controls=new s[\"a\"](this.camera,this.renderer.domElement),this.controls.target=new a[\"Nb\"](-65.1083,4.2508,.851),this.autoRotate=!0,this.controls.update(),window.addEventListener(\"resize\",this.onWindowResize),this.renderer.domElement.addEventListener(\"click\",(function(e){var n=e.offsetX,r=e.offsetY,i=n/window.innerWidth*2-1,s=-r/window.innerHeight*2+1,o=new a[\"sb\"];o.setFromCamera(new a[\"Mb\"](i,s),t.camera);var l=o.intersectObjects([f]);l.length>0?(t.chooseObj=l[0].object,t.pick(l[0].object)):t.drop()})),this.addComposer(),setTimeout((function(){t.state=\"异常\"}),1e4)},drop:function(){this.outlinePass.selectedObjects=[]},pick:function(t){this.outlinePass.selectedObjects=[t]},onWindowResize:function(){var t=window.innerWidth,e=window.innerHeight;this.camera.aspect=t/e,this.renderer.setSize(t,e),this.composer.setSize(t,e),this.camera.updateProjectionMatrix(),this.effectFXAA.uniforms[\"resolution\"].value.set(1/t,1/e)},animate:function(){this.animationId=requestAnimationFrame(this.animate),this.composer.render(this.scene,this.camera)},showData:function(){},removeEventListeners:function(){},destroyThreejs:function(){try{this.renderer.dispose(),this.renderer.forceContextLoss(),this.renderer.content=null;var t=this.renderer.domElement.getContext(\"webgl\");t&&t.getExtension(\"WEBGL_lose_context\")&&t.getExtension(\"WEBGL_lose_context\").loseContext(),this.renderer=null,this.camera=null,this.scene.traverse((function(t){t.material&&t.material.dispose(),t.geometry&&t.geometry.dispose(),t=null})),this.scene=null}catch(e){}}},beforeDestroy:function(){cancelAnimationFrame(this.animationId),clearInterval(this.timer),this.timer=null,this.removeEventListeners(),this.destroyThreejs(),this.gui.domElement.style.display=\"none\"}},B=E,y=(n(\"bbf4\"),n(\"2877\")),D=Object(y[\"a\"])(B,r,i,!1,null,\"2eb924f8\",null);e[\"default\"]=D.exports},ba8b:function(t,e,n){var r=n(\"1aeb\");\"string\"===typeof r&&(r=[[t.i,r,\"\"]]),r.locals&&(t.exports=r.locals);var i=n(\"499e\").default;i(\"f3b4b43e\",r,!0,{sourceMap:!0,shadowMode:!1})},bbf4:function(t,e,n){\"use strict\";n(\"ba8b\")}}]);","extractedComments":[]}