/** * Created by yuanweihai on 2017/6/20. */ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):b(a.THREE=a.THREE||{})}(this,function(a){"use strict";function b(){}function ub(a,b){this.x=a||0,this.y=b||0}function wb(a,b,c,d,e,f,g,h,i,j){Object.defineProperty(this,"id",{value:vb++}),this.uuid=tb.generateUUID(),this.name="",this.image=void 0!==a?a:wb.DEFAULT_IMAGE,this.mipmaps=[],this.mapping=void 0!==b?b:wb.DEFAULT_MAPPING,this.wrapS=void 0!==c?c:oa,this.wrapT=void 0!==d?d:oa,this.magFilter=void 0!==e?e:ta,this.minFilter=void 0!==f?f:va,this.anisotropy=void 0!==i?i:1,this.format=void 0!==g?g:Ka,this.type=void 0!==h?h:wa,this.offset=new ub(0,0),this.repeat=new ub(1,1),this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=void 0!==j?j:jb,this.version=0,this.onUpdate=null}function xb(a,b,c,d){this.x=a||0,this.y=b||0,this.z=c||0,this.w=void 0!==d?d:1}function yb(a,b,c){this.uuid=tb.generateUUID(),this.width=a,this.height=b,this.scissor=new xb(0,0,a,b),this.scissorTest=!1,this.viewport=new xb(0,0,a,b),c=c||{},void 0===c.minFilter&&(c.minFilter=ta),this.texture=new wb(void 0,void 0,c.wrapS,c.wrapT,c.magFilter,c.minFilter,c.format,c.type,c.anisotropy,c.encoding),this.depthBuffer=void 0===c.depthBuffer||c.depthBuffer,this.stencilBuffer=void 0===c.stencilBuffer||c.stencilBuffer,this.depthTexture=void 0!==c.depthTexture?c.depthTexture:null}function zb(a,b,c){yb.call(this,a,b,c),this.activeCubeFace=0,this.activeMipMapLevel=0}function Ab(a,b,c,d){this._x=a||0,this._y=b||0,this._z=c||0,this._w=void 0!==d?d:1}function Bb(a,b,c){this.x=a||0,this.y=b||0,this.z=c||0}function Cb(){this.elements=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function Db(a,b,c,d,e,f,g,h,i,j){a=void 0!==a?a:[],b=void 0!==b?b:ga,wb.call(this,a,b,c,d,e,f,g,h,i,j),this.flipY=!1}function Gb(){this.seq=[],this.map={}}function Jb(a,b,c){var d=a[0];if(d<=0||d>0)return a;var e=b*c,f=Hb[e];if(void 0===f&&(f=new Float32Array(e),Hb[e]=f),0!==b){d.toArray(f,0);for(var g=1,h=0;g!==b;++g)h+=c,a[g].toArray(f,h)}return f}function Kb(a,b){var c=Ib[b];void 0===c&&(c=new Int32Array(b),Ib[b]=c);for(var d=0;d!==b;++d)c[d]=a.allocTextureUnit();return c}function Lb(a,b){a.uniform1f(this.addr,b)}function Mb(a,b){a.uniform1i(this.addr,b)}function Nb(a,b){void 0===b.x?a.uniform2fv(this.addr,b):a.uniform2f(this.addr,b.x,b.y)}function Ob(a,b){void 0!==b.x?a.uniform3f(this.addr,b.x,b.y,b.z):void 0!==b.r?a.uniform3f(this.addr,b.r,b.g,b.b):a.uniform3fv(this.addr,b)}function Pb(a,b){void 0===b.x?a.uniform4fv(this.addr,b):a.uniform4f(this.addr,b.x,b.y,b.z,b.w)}function Qb(a,b){a.uniformMatrix2fv(this.addr,!1,b.elements||b)}function Rb(a,b){a.uniformMatrix3fv(this.addr,!1,b.elements||b)}function Sb(a,b){a.uniformMatrix4fv(this.addr,!1,b.elements||b)}function Tb(a,b,c){var d=c.allocTextureUnit();a.uniform1i(this.addr,d),c.setTexture2D(b||Eb,d)}function Ub(a,b,c){var d=c.allocTextureUnit();a.uniform1i(this.addr,d),c.setTextureCube(b||Fb,d)}function Vb(a,b){a.uniform2iv(this.addr,b)}function Wb(a,b){a.uniform3iv(this.addr,b)}function Xb(a,b){a.uniform4iv(this.addr,b)}function Yb(a){switch(a){case 5126:return Lb;case 35664:return Nb;case 35665:return Ob;case 35666:return Pb;case 35674:return Qb;case 35675:return Rb;case 35676:return Sb;case 35678:return Tb;case 35680:return Ub;case 5124:case 35670:return Mb;case 35667:case 35671:return Vb;case 35668:case 35672:return Wb;case 35669:case 35673:return Xb}}function Zb(a,b){a.uniform1fv(this.addr,b)}function $b(a,b){a.uniform1iv(this.addr,b)}function _b(a,b){a.uniform2fv(this.addr,Jb(b,this.size,2))}function ac(a,b){a.uniform3fv(this.addr,Jb(b,this.size,3))}function bc(a,b){a.uniform4fv(this.addr,Jb(b,this.size,4))}function cc(a,b){a.uniformMatrix2fv(this.addr,!1,Jb(b,this.size,4))}function dc(a,b){a.uniformMatrix3fv(this.addr,!1,Jb(b,this.size,9))}function ec(a,b){a.uniformMatrix4fv(this.addr,!1,Jb(b,this.size,16))}function fc(a,b,c){var d=b.length,e=Kb(c,d);a.uniform1iv(this.addr,e);for(var f=0;f!==d;++f)c.setTexture2D(b[f]||Eb,e[f])}function gc(a,b,c){var d=b.length,e=Kb(c,d);a.uniform1iv(this.addr,e);for(var f=0;f!==d;++f)c.setTextureCube(b[f]||Fb,e[f])}function hc(a){switch(a){case 5126:return Zb;case 35664:return _b;case 35665:return ac;case 35666:return bc;case 35674:return cc;case 35675:return dc;case 35676:return ec;case 35678:return fc;case 35680:return gc;case 5124:case 35670:return $b;case 35667:case 35671:return Vb;case 35668:case 35672:return Wb;case 35669:case 35673:return Xb}}function ic(a,b,c){this.id=a,this.addr=c,this.setValue=Yb(b.type)}function jc(a,b,c){this.id=a,this.addr=c,this.size=b.size,this.setValue=hc(b.type)}function kc(a){this.id=a,Gb.call(this)}function mc(a,b){a.seq.push(b),a.map[b.id]=b}function nc(a,b,c){var d=a.name,e=d.length;for(lc.lastIndex=0;;){var f=lc.exec(d),g=lc.lastIndex,h=f[1],i="]"===f[2],j=f[3];if(i&&(h|=0),void 0===j||"["===j&&g+2===e){mc(c,void 0===j?new ic(h,a,b):new jc(h,a,b));break}var k=c.map,l=k[h];void 0===l&&(l=new kc(h),mc(c,l)),c=l}}function oc(a,b,c){Gb.call(this),this.renderer=c;for(var d=a.getProgramParameter(b,a.ACTIVE_UNIFORMS),e=0;e.001&&D.scale>.001&&(v.x=D.x,v.y=D.y,v.z=D.z,t=D.size*D.scale/o.w,u.x=t*q,u.y=t,c.uniform3f(j.screenPosition,v.x,v.y,v.z),c.uniform2f(j.scale,u.x,u.y),c.uniform1f(j.rotation,D.rotation),c.uniform1f(j.opacity,D.opacity),c.uniform3f(j.color,D.color.r,D.color.g,D.color.b),d.setBlending(D.blending,D.blendEquation,D.blendSrc,D.blendDst),a.setTexture2D(D.texture,1),c.drawElements(c.TRIANGLES,6,c.UNSIGNED_SHORT,0))}}}d.enable(c.CULL_FACE),d.enable(c.DEPTH_TEST),d.setDepthWrite(!0),a.resetGLState()}}}function ye(a,b){function n(){var a=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),b=new Uint16Array([0,1,2,0,2,3]);e=c.createBuffer(),f=c.createBuffer(),c.bindBuffer(c.ARRAY_BUFFER,e),c.bufferData(c.ARRAY_BUFFER,a,c.STATIC_DRAW),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,f),c.bufferData(c.ELEMENT_ARRAY_BUFFER,b,c.STATIC_DRAW),g=o(),h={position:c.getAttribLocation(g,"position"),uv:c.getAttribLocation(g,"uv")},i={uvOffset:c.getUniformLocation(g,"uvOffset"),uvScale:c.getUniformLocation(g,"uvScale"),rotation:c.getUniformLocation(g,"rotation"),scale:c.getUniformLocation(g,"scale"),color:c.getUniformLocation(g,"color"),map:c.getUniformLocation(g,"map"),opacity:c.getUniformLocation(g,"opacity"),modelViewMatrix:c.getUniformLocation(g,"modelViewMatrix"),projectionMatrix:c.getUniformLocation(g,"projectionMatrix"),fogType:c.getUniformLocation(g,"fogType"),fogDensity:c.getUniformLocation(g,"fogDensity"),fogNear:c.getUniformLocation(g,"fogNear"),fogFar:c.getUniformLocation(g,"fogFar"),fogColor:c.getUniformLocation(g,"fogColor"),alphaTest:c.getUniformLocation(g,"alphaTest")};var d=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");d.width=8,d.height=8;var k=d.getContext("2d");k.fillStyle="white",k.fillRect(0,0,8,8),j=new wb(d),j.needsUpdate=!0}function o(){var b=c.createProgram(),d=c.createShader(c.VERTEX_SHADER),e=c.createShader(c.FRAGMENT_SHADER);return c.shaderSource(d,["precision "+a.getPrecision()+" float;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform float rotation;","uniform vec2 scale;","uniform vec2 uvOffset;","uniform vec2 uvScale;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","void main() {","vUV = uvOffset + uv * uvScale;","vec2 alignedPosition = position * scale;","vec2 rotatedPosition;","rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;","rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;","vec4 finalPosition;","finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );","finalPosition.xy += rotatedPosition;","finalPosition = projectionMatrix * finalPosition;","gl_Position = finalPosition;","}"].join("\n")),c.shaderSource(e,["precision "+a.getPrecision()+" float;","uniform vec3 color;","uniform sampler2D map;","uniform float opacity;","uniform int fogType;","uniform vec3 fogColor;","uniform float fogDensity;","uniform float fogNear;","uniform float fogFar;","uniform float alphaTest;","varying vec2 vUV;","void main() {","vec4 texture = texture2D( map, vUV );","if ( texture.a < alphaTest ) discard;","gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );","if ( fogType > 0 ) {","float depth = gl_FragCoord.z / gl_FragCoord.w;","float fogFactor = 0.0;","if ( fogType == 1 ) {","fogFactor = smoothstep( fogNear, fogFar, depth );","} else {","const float LOG2 = 1.442695;","fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );","fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","}","gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );","}","}"].join("\n")),c.compileShader(d),c.compileShader(e),c.attachShader(b,d),c.attachShader(b,e),c.linkProgram(b),b}function p(a,b){return a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:b.id-a.id}var e,f,g,h,i,j,c=a.context,d=a.state,k=new Bb,l=new Ab,m=new Bb;this.render=function(o,q){if(0!==b.length){void 0===g&&n(),c.useProgram(g),d.initAttributes(),d.enableAttribute(h.position),d.enableAttribute(h.uv),d.disableUnusedAttributes(),d.disable(c.CULL_FACE),d.enable(c.BLEND),c.bindBuffer(c.ARRAY_BUFFER,e),c.vertexAttribPointer(h.position,2,c.FLOAT,!1,16,0),c.vertexAttribPointer(h.uv,2,c.FLOAT,!1,16,8),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,f),c.uniformMatrix4fv(i.projectionMatrix,!1,q.projectionMatrix.elements),d.activeTexture(c.TEXTURE0),c.uniform1i(i.map,0);var r=0,s=0,t=o.fog;t?(c.uniform3f(i.fogColor,t.color.r,t.color.g,t.color.b),t.isFog?(c.uniform1f(i.fogNear,t.near),c.uniform1f(i.fogFar,t.far),c.uniform1i(i.fogType,1),r=1,s=1):t.isFogExp2&&(c.uniform1f(i.fogDensity,t.density),c.uniform1i(i.fogType,2),r=2,s=2)):(c.uniform1i(i.fogType,0),r=0,s=0);for(var u=0,v=b.length;u0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}function Ge(a,b){this.normal=void 0!==a?a:new Bb(1,0,0),this.constant=void 0!==b?b:0}function He(a,b,c,d,e,f){this.planes=[void 0!==a?a:new Ge,void 0!==b?b:new Ge,void 0!==c?c:new Ge,void 0!==d?d:new Ge,void 0!==e?e:new Ge,void 0!==f?f:new Ge]}function Ie(a,b,c,d){function K(b,c,d,e){var f=b.geometry,g=null,h=v,i=b.customDepthMaterial;if(d&&(h=w,i=b.customDistanceMaterial),i)g=i;else{var j=!1;c.morphTargets&&(f&&f.isBufferGeometry?j=f.morphAttributes&&f.morphAttributes.position&&f.morphAttributes.position.length>0:f&&f.isGeometry&&(j=f.morphTargets&&f.morphTargets.length>0));var k=b.isSkinnedMesh&&c.skinning,l=0;j&&(l|=s),k&&(l|=t),g=h[l]}if(a.localClippingEnabled&&c.clipShadows===!0&&0!==c.clippingPlanes.length){var m=g.uuid,q=c.uuid,r=x[m];void 0===r&&(r={},x[m]=r);var u=r[q];void 0===u&&(u=g.clone(),r[q]=u),g=u}g.visible=c.visible,g.wireframe=c.wireframe;var y=c.side;return J.renderSingleSided&&y==p&&(y=n),J.renderReverseSided&&(y===n?y=o:y===o&&(y=n)),g.side=y,g.clipShadows=c.clipShadows,g.clippingPlanes=c.clippingPlanes,g.wireframeLinewidth=c.wireframeLinewidth,g.linewidth=c.linewidth,d&&void 0!==g.uniforms.lightPos&&g.uniforms.lightPos.value.copy(e),g}function L(a,b,c){if(a.visible!==!1){var d=0!==(a.layers.mask&b.layers.mask);if(d&&(a.isMesh||a.isLine||a.isPoints)&&a.castShadow&&(a.frustumCulled===!1||g.intersectsObject(a)===!0)){var e=a.material;e.visible===!0&&(a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld),r.push(a))}for(var f=a.children,h=0,i=f.length;hc&&(c=a[b]);return c}function df(){return cf++}function ef(){Object.defineProperty(this,"id",{value:df()}),this.uuid=tb.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}function ff(){Object.defineProperty(this,"id",{value:df()}),this.uuid=tb.generateUUID(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0}}function gf(a,b){Ne.call(this),this.type="Mesh",this.geometry=void 0!==a?a:new ff,this.material=void 0!==b?b:new Re({color:16777215*Math.random()}),this.drawMode=gb,this.updateMorphTargets()}function hf(a,b,c,d,e,f){ef.call(this),this.type="BoxGeometry",this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f},this.fromBufferGeometry(new jf(a,b,c,d,e,f)),this.mergeVertices()}function jf(a,b,c,d,e,f){function n(a,b,c,d,e,f,n,o,p,q,r){var B,C,s=f/p,t=n/q,u=f/2,v=n/2,w=o/2,x=p+1,y=q+1,z=0,A=0,D=new Bb;for(C=0;C0?1:-1,j.push(D.x,D.y,D.z),k.push(B/p),k.push(1-C/q),z+=1}}for(C=0;C");return Ef(c)}var b=/#include +<([\w\d.]+)>/g;return a.replace(b,c)}function Ff(a){function c(a,b,c,d){for(var e="",f=parseInt(b);f0?a.gammaFactor:1,q=zf(f,d,a.extensions),r=Af(g),s=e.createProgram();c.isRawShaderMaterial?(t=[r,"\n"].filter(Cf).join("\n"),u=[q,r,"\n"].filter(Cf).join("\n")):(t=["precision "+d.precision+" float;","precision "+d.precision+" int;","#define SHADER_NAME "+c.__webglShader.name,r,d.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+p,"#define MAX_BONES "+d.maxBones,d.useFog&&d.fog?"#define USE_FOG":"",d.useFog&&d.fogExp?"#define FOG_EXP2":"",d.map?"#define USE_MAP":"",d.envMap?"#define USE_ENVMAP":"",d.envMap?"#define "+n:"",d.lightMap?"#define USE_LIGHTMAP":"",d.aoMap?"#define USE_AOMAP":"",d.emissiveMap?"#define USE_EMISSIVEMAP":"",d.bumpMap?"#define USE_BUMPMAP":"",d.normalMap?"#define USE_NORMALMAP":"",d.displacementMap&&d.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",d.specularMap?"#define USE_SPECULARMAP":"",d.roughnessMap?"#define USE_ROUGHNESSMAP":"",d.metalnessMap?"#define USE_METALNESSMAP":"",d.alphaMap?"#define USE_ALPHAMAP":"",d.vertexColors?"#define USE_COLOR":"",d.flatShading?"#define FLAT_SHADED":"",d.skinning?"#define USE_SKINNING":"",d.useVertexTexture?"#define BONE_TEXTURE":"",d.morphTargets?"#define USE_MORPHTARGETS":"",d.morphNormals&&d.flatShading===!1?"#define USE_MORPHNORMALS":"",d.doubleSided?"#define DOUBLE_SIDED":"",d.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+d.numClippingPlanes,d.shadowMapEnabled?"#define USE_SHADOWMAP":"",d.shadowMapEnabled?"#define "+j:"",d.sizeAttenuation?"#define USE_SIZEATTENUATION":"",d.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",d.logarithmicDepthBuffer&&a.extensions.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Cf).join("\n"),u=[q,"precision "+d.precision+" float;","precision "+d.precision+" int;","#define SHADER_NAME "+c.__webglShader.name,r,d.alphaTest?"#define ALPHATEST "+d.alphaTest:"","#define GAMMA_FACTOR "+p,d.useFog&&d.fog?"#define USE_FOG":"",d.useFog&&d.fogExp?"#define FOG_EXP2":"",d.map?"#define USE_MAP":"",d.envMap?"#define USE_ENVMAP":"",d.envMap?"#define "+k:"",d.envMap?"#define "+n:"",d.envMap?"#define "+o:"",d.lightMap?"#define USE_LIGHTMAP":"",d.aoMap?"#define USE_AOMAP":"",d.emissiveMap?"#define USE_EMISSIVEMAP":"",d.bumpMap?"#define USE_BUMPMAP":"",d.normalMap?"#define USE_NORMALMAP":"",d.specularMap?"#define USE_SPECULARMAP":"",d.roughnessMap?"#define USE_ROUGHNESSMAP":"",d.metalnessMap?"#define USE_METALNESSMAP":"",d.alphaMap?"#define USE_ALPHAMAP":"",d.vertexColors?"#define USE_COLOR":"",d.gradientMap?"#define USE_GRADIENTMAP":"",d.flatShading?"#define FLAT_SHADED":"",d.doubleSided?"#define DOUBLE_SIDED":"",d.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+d.numClippingPlanes,"#define UNION_CLIPPING_PLANES "+(d.numClippingPlanes-d.numClipIntersection),d.shadowMapEnabled?"#define USE_SHADOWMAP":"",d.shadowMapEnabled?"#define "+j:"",d.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",d.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",d.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",d.logarithmicDepthBuffer&&a.extensions.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"",d.envMap&&a.extensions.get("EXT_shader_texture_lod")?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",d.toneMapping!==aa?"#define TONE_MAPPING":"",d.toneMapping!==aa?qe.tonemapping_pars_fragment:"",d.toneMapping!==aa?yf("toneMapping",d.toneMapping):"",d.outputEncoding||d.mapEncoding||d.envMapEncoding||d.emissiveMapEncoding?qe.encodings_pars_fragment:"",d.mapEncoding?wf("mapTexelToLinear",d.mapEncoding):"",d.envMapEncoding?wf("envMapTexelToLinear",d.envMapEncoding):"",d.emissiveMapEncoding?wf("emissiveMapTexelToLinear",d.emissiveMapEncoding):"",d.outputEncoding?xf("linearToOutputTexel",d.outputEncoding):"",d.depthPacking?"#define DEPTH_PACKING "+c.depthPacking:"","\n"].filter(Cf).join("\n")),h=Ef(h,d),h=Df(h,d),i=Ef(i,d),i=Df(i,d),c.isShaderMaterial||(h=Ff(h),i=Ff(i));var v=t+h,w=u+i,x=tf(e,e.VERTEX_SHADER,v),y=tf(e,e.FRAGMENT_SHADER,w);e.attachShader(s,x),e.attachShader(s,y),void 0!==c.index0AttributeName?e.bindAttribLocation(s,0,c.index0AttributeName):d.morphTargets===!0&&e.bindAttribLocation(s,0,"position"),e.linkProgram(s);var z=e.getProgramInfoLog(s),A=e.getShaderInfoLog(x),B=e.getShaderInfoLog(y),C=!0,D=!0;e.getProgramParameter(s,e.LINK_STATUS)===!1?(C=!1,console.error("THREE.WebGLProgram: shader error: ",e.getError(),"gl.VALIDATE_STATUS",e.getProgramParameter(s,e.VALIDATE_STATUS),"gl.getProgramInfoLog",z,A,B)):""!==z?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",z):""!==A&&""!==B||(D=!1),D&&(this.diagnostics={runnable:C,material:c,programLog:z,vertexShader:{log:A,prefix:t},fragmentShader:{log:B,prefix:u}}),e.deleteShader(x),e.deleteShader(y);var E;this.getUniforms=function(){return void 0===E&&(E=new oc(e,s,a)),E};var F;return this.getAttributes=function(){return void 0===F&&(F=Bf(e,s)),F},this.destroy=function(){e.deleteProgram(s),this.program=void 0},Object.defineProperties(this,{uniforms:{get:function(){return console.warn("THREE.WebGLProgram: .uniforms is now .getUniforms()."),this.getUniforms()}},attributes:{get:function(){return console.warn("THREE.WebGLProgram: .attributes is now .getAttributes()."),this.getAttributes()}}}),this.id=uf++,this.code=b,this.usedTimes=1,this.program=s,this.vertexShader=x,this.fragmentShader=y,this}function Hf(a,b){function f(a){if(b.floatVertexTextures&&a&&a.skeleton&&a.skeleton.useVertexTexture)return 1024;var c=b.maxVertexUniforms,d=Math.floor((c-20)/4),e=d;return void 0!==a&&a&&a.isSkinnedMesh&&(e=Math.min(a.skeleton.bones.length,e),e0,shadowMapType:a.shadowMap.type,toneMapping:a.toneMapping,physicallyCorrectLights:a.physicallyCorrectLights,premultipliedAlpha:c.premultipliedAlpha,alphaTest:c.alphaTest,doubleSided:c.side===p,flipSided:c.side===o,depthPacking:void 0!==c.depthPacking&&c.depthPacking};return s},this.getProgramCode=function(a,b){var c=[];if(b.shaderID?c.push(b.shaderID):(c.push(a.fragmentShader),c.push(a.vertexShader)),void 0!==a.defines)for(var d in a.defines)c.push(d),c.push(a.defines[d]);for(var f=0;f65535?Ze:Xe)(e,1);return f(o,a.ELEMENT_ARRAY_BUFFER),d.wireframe=o,o}var d=new If(a,b,c);return{getAttributeBuffer:i,getAttributeProperties:j,getWireframeAttribute:k,update:e}}function Kf(a,b,c,d,e,f,g){function j(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");d.width=Math.floor(a.width*c),d.height=Math.floor(a.height*c);var e=d.getContext("2d");return e.drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height),console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a),d}return a}function k(a){return tb.isPowerOfTwo(a.width)&&tb.isPowerOfTwo(a.height)}function l(a){if(a instanceof HTMLImageElement||a instanceof HTMLCanvasElement){var b=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");b.width=tb.nearestPowerOfTwo(a.width),b.height=tb.nearestPowerOfTwo(a.height);var c=b.getContext("2d");return c.drawImage(a,0,0,b.width,b.height),console.warn("THREE.WebGLRenderer: image is not power of two ("+a.width+"x"+a.height+"). Resized to "+b.width+"x"+b.height,a),b}return a}function m(a){return a.wrapS!==oa||a.wrapT!==oa||a.minFilter!==qa&&a.minFilter!==ta}function n(b){return b===qa||b===ra||b===sa?a.NEAREST:a.LINEAR}function o(a){var b=a.target;b.removeEventListener("dispose",o),q(b),h.textures--}function p(a){var b=a.target;b.removeEventListener("dispose",p),r(b),h.textures--}function q(b){var c=d.get(b);if(b.image&&c.__image__webglTextureCube)a.deleteTexture(c.__image__webglTextureCube);else{if(void 0===c.__webglInit)return;a.deleteTexture(c.__webglTexture)}d.delete(b)}function r(b){var c=d.get(b),e=d.get(b.texture);if(b){if(void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture),b.depthTexture&&b.depthTexture.dispose(),b.isWebGLRenderTargetCube)for(var f=0;f<6;f++)a.deleteFramebuffer(c.__webglFramebuffer[f]),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[f]);else a.deleteFramebuffer(c.__webglFramebuffer),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);d.delete(b.texture),d.delete(b)}}function s(b,e){var f=d.get(b);if(b.version>0&&f.__version!==b.version){var g=b.image;if(void 0===g)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",b);else{if(g.complete!==!1)return void w(f,b,e);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",b)}}c.activeTexture(a.TEXTURE0+e),c.bindTexture(a.TEXTURE_2D,f.__webglTexture)}function t(b,g){var i=d.get(b);if(6===b.image.length)if(b.version>0&&i.__version!==b.version){i.__image__webglTextureCube||(b.addEventListener("dispose",o),i.__image__webglTextureCube=a.createTexture(),h.textures++),c.activeTexture(a.TEXTURE0+g),c.bindTexture(a.TEXTURE_CUBE_MAP,i.__image__webglTextureCube),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b.flipY);for(var l=b&&b.isCompressedTexture,m=b.image[0]&&b.image[0].isDataTexture,n=[],p=0;p<6;p++)l||m?n[p]=m?b.image[p].image:b.image[p]:n[p]=j(b.image[p],e.maxCubemapSize);var q=n[0],r=k(q),s=f(b.format),t=f(b.type);v(a.TEXTURE_CUBE_MAP,b,r);for(var p=0;p<6;p++)if(l)for(var u,w=n[p].mipmaps,x=0,y=w.length;x-1?c.compressedTexImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+p,x,s,u.width,u.height,0,u.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+p,x,s,u.width,u.height,0,s,t,u.data);else m?c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+p,0,s,n[p].width,n[p].height,0,s,t,n[p].data):c.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X+p,0,s,s,t,n[p]);b.generateMipmaps&&r&&a.generateMipmap(a.TEXTURE_CUBE_MAP),i.__version=b.version,b.onUpdate&&b.onUpdate(b)}else c.activeTexture(a.TEXTURE0+g),c.bindTexture(a.TEXTURE_CUBE_MAP,i.__image__webglTextureCube)}function u(b,e){c.activeTexture(a.TEXTURE0+e),c.bindTexture(a.TEXTURE_CUBE_MAP,d.get(b).__webglTexture)}function v(c,g,h){var i;if(h?(a.texParameteri(c,a.TEXTURE_WRAP_S,f(g.wrapS)),a.texParameteri(c,a.TEXTURE_WRAP_T,f(g.wrapT)),a.texParameteri(c,a.TEXTURE_MAG_FILTER,f(g.magFilter)),a.texParameteri(c,a.TEXTURE_MIN_FILTER,f(g.minFilter))):(a.texParameteri(c,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(c,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),g.wrapS===oa&&g.wrapT===oa||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.",g),a.texParameteri(c,a.TEXTURE_MAG_FILTER,n(g.magFilter)),a.texParameteri(c,a.TEXTURE_MIN_FILTER,n(g.minFilter)),g.minFilter!==qa&&g.minFilter!==ta&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.",g)),i=b.get("EXT_texture_filter_anisotropic")){if(g.type===Ca&&null===b.get("OES_texture_float_linear"))return;if(g.type===Da&&null===b.get("OES_texture_half_float_linear"))return;(g.anisotropy>1||d.get(g).__currentAnisotropy)&&(a.texParameterf(c,i.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(g.anisotropy,e.getMaxAnisotropy())),d.get(g).__currentAnisotropy=g.anisotropy)}}function w(b,d,g){void 0===b.__webglInit&&(b.__webglInit=!0,d.addEventListener("dispose",o),b.__webglTexture=a.createTexture(),h.textures++),c.activeTexture(a.TEXTURE0+g),c.bindTexture(a.TEXTURE_2D,b.__webglTexture),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,d.flipY),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,d.premultiplyAlpha),a.pixelStorei(a.UNPACK_ALIGNMENT,d.unpackAlignment);var n=j(d.image,e.maxTextureSize);m(d)&&k(n)===!1&&(n=l(n));var p=k(n),q=f(d.format),r=f(d.type);v(a.TEXTURE_2D,d,p);var s,t=d.mipmaps;if(d.isDepthTexture){var u=a.DEPTH_COMPONENT;if(d.type===Ca){if(!i)throw new Error("Float Depth Texture only supported in WebGL2.0");u=a.DEPTH_COMPONENT32F}else i&&(u=a.DEPTH_COMPONENT16);d.format===Oa&&u===a.DEPTH_COMPONENT&&d.type!==za&&d.type!==Ba&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),d.type=za,r=f(d.type)),d.format===Pa&&(u=a.DEPTH_STENCIL,d.type!==Ha&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),d.type=Ha,r=f(d.type))),c.texImage2D(a.TEXTURE_2D,0,u,n.width,n.height,0,q,r,null)}else if(d.isDataTexture)if(t.length>0&&p){for(var w=0,x=t.length;w-1?c.compressedTexImage2D(a.TEXTURE_2D,w,q,s.width,s.height,0,s.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):c.texImage2D(a.TEXTURE_2D,w,q,s.width,s.height,0,q,r,s.data);else if(t.length>0&&p){for(var w=0,x=t.length;w=1,P=null,Q={},Z=new xb,$=new xb,aa={};return aa[a.TEXTURE_2D]=_(a.TEXTURE_2D,a.TEXTURE_2D,1),aa[a.TEXTURE_CUBE_MAP]=_(a.TEXTURE_CUBE_MAP,a.TEXTURE_CUBE_MAP_POSITIVE_X,6),{buffers:{color:j,depth:k,stencil:l},init:ba,initAttributes:ca,enableAttribute:da,enableAttributeAndDivisor:ea,disableUnusedAttributes:fa,enable:ga,disable:ha,getCompressedTextureFormats:ia,setBlending:ja,setColorWrite:ka,setDepthTest:la,setDepthWrite:ma,setDepthFunc:na,setStencilTest:oa,setStencilWrite:pa,setStencilFunc:qa,setStencilOp:ra,setFlipSided:sa,setCullFace:ta,setLineWidth:ua,setPolygonOffset:va,getScissorTest:wa,setScissorTest:xa,activeTexture:ya,bindTexture:za,compressedTexImage2D:Aa,texImage2D:Ba,scissor:Ca,viewport:Da,reset:Ea}}function Nf(a,b,c){function e(){if(void 0!==d)return d;var c=b.get("EXT_texture_filter_anisotropic");return d=null!==c?a.getParameter(c.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}function f(b){if("highp"===b){if(a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.HIGH_FLOAT).precision>0&&a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.HIGH_FLOAT).precision>0)return"highp";b="mediump"}return"mediump"===b&&a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.MEDIUM_FLOAT).precision>0&&a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}var d,g=void 0!==c.precision?c.precision:"highp",h=f(g);h!==g&&(console.warn("THREE.WebGLRenderer:",g,"not supported, using",h,"instead."),g=h);var i=c.logarithmicDepthBuffer===!0&&!!b.get("EXT_frag_depth"),j=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),k=a.getParameter(a.MAX_VERTEX_TEXTURE_IMAGE_UNITS),l=a.getParameter(a.MAX_TEXTURE_SIZE),m=a.getParameter(a.MAX_CUBE_MAP_TEXTURE_SIZE),n=a.getParameter(a.MAX_VERTEX_ATTRIBS),o=a.getParameter(a.MAX_VERTEX_UNIFORM_VECTORS),p=a.getParameter(a.MAX_VARYING_VECTORS),q=a.getParameter(a.MAX_FRAGMENT_UNIFORM_VECTORS),r=k>0,s=!!b.get("OES_texture_float"),t=r&&s;return{getMaxAnisotropy:e,getMaxPrecision:f,precision:g,logarithmicDepthBuffer:i,maxTextures:j,maxVertexTextures:k,maxTextureSize:l,maxCubemapSize:m,maxAttributes:n,maxVertexUniforms:o,maxVaryings:p,maxFragmentUniforms:q,vertexTextures:r,floatFragmentTextures:s,floatVertexTextures:t}}function Of(a){var b={};return{get:function(c){if(void 0!==b[c])return b[c];var d;switch(c){case"WEBGL_depth_texture":d=a.getExtension("WEBGL_depth_texture")||a.getExtension("MOZ_WEBGL_depth_texture")||a.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;case"WEBGL_compressed_texture_etc1":d=a.getExtension("WEBGL_compressed_texture_etc1");break;default:d=a.getExtension(c)}return null===d&&console.warn("THREE.WebGLRenderer: "+c+" extension not supported."),b[c]=d,d}}}function Pf(){function i(){h.value!==b&&(h.value=b,h.needsUpdate=c>0),a.numPlanes=c,a.numIntersection=0}function j(b,c,d,e){var i=null!==b?b.length:0,j=null;if(0!==i){if(j=h.value,e!==!0||null===j){var k=d+4*i,l=c.matrixWorldInverse;g.getNormalMatrix(l),(null===j||j.length=0){var k=f[i];if(void 0!==k){var l=k.normalized,m=k.itemSize,n=kb.getAttributeProperties(k),o=n.__webglBuffer,p=n.type,q=n.bytesPerElement;if(k.isInterleavedBufferAttribute){var r=k.data,s=r.stride,t=k.offset;r&&r.isInstancedInterleavedBuffer?(eb.enableAttributeAndDivisor(j,r.meshPerAttribute,e),void 0===c.maxInstancedCount&&(c.maxInstancedCount=r.meshPerAttribute*r.count)):eb.enableAttribute(j),ab.bindBuffer(ab.ARRAY_BUFFER,o),ab.vertexAttribPointer(j,m,p,l,s*q,(d*s+t)*q)}else k.isInstancedBufferAttribute?(eb.enableAttributeAndDivisor(j,k.meshPerAttribute,e),void 0===c.maxInstancedCount&&(c.maxInstancedCount=k.meshPerAttribute*k.count)):eb.enableAttribute(j),ab.bindBuffer(ab.ARRAY_BUFFER,o),ab.vertexAttribPointer(j,m,p,l,0,d*m*q)}else if(void 0!==h){var u=h[i];if(void 0!==u)switch(u.length){case 2:ab.vertexAttrib2fv(j,u);break;case 3:ab.vertexAttrib3fv(j,u);break;case 4:ab.vertexAttrib4fv(j,u);break;default:ab.vertexAttrib1fv(j,u)}}}}eb.disableUnusedAttributes()}function Hb(a,b){return Math.abs(b[0])-Math.abs(a[0])}function Ib(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.material.program&&b.material.program&&a.material.program!==b.material.program?a.material.program.id-b.material.program.id:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function Jb(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function Kb(a,b,c,d,e){var f,g;c.transparent?(f=r,g=++t):(f=m,g=++n);var h=f[g];void 0!==h?(h.id=a.id,h.object=a,h.geometry=b,h.material=c,h.z=ma.z,h.group=e):(h={id:a.id,object:a,geometry:b,material:c,z:ma.z,group:e},f.push(h))}function Lb(a){var b=a.geometry;return null===b.boundingSphere&&b.computeBoundingSphere(),ka.copy(b.boundingSphere).applyMatrix4(a.matrixWorld),Nb(ka)}function Mb(a){return ka.center.set(0,0,0),ka.radius=.7071067811865476,ka.applyMatrix4(a.matrixWorld),Nb(ka)}function Nb(a){if(!ga.intersectsSphere(a))return!1;var b=ha.numPlanes;if(0===b)return!0;var c=y.clippingPlanes,d=a.center,e=-a.radius,f=0;do if(c[f].distanceToPoint(d)=0&&a.numSupportedMorphTargets++}if(a.morphNormals){a.numSupportedMorphNormals=0;for(var k=0;k=0&&a.numSupportedMorphNormals++}var l=d.__webglShader.uniforms;(a.isShaderMaterial||a.isRawShaderMaterial)&&a.clipping!==!0||(d.numClippingPlanes=ha.numPlanes,d.numIntersection=ha.numIntersection,l.clippingPlanes=ha.uniform),d.fog=b,d.lightsHash=$a.hash,a.lights&&(l.ambientLightColor.value=$a.ambient,l.directionalLights.value=$a.directional,l.spotLights.value=$a.spot,l.rectAreaLights.value=$a.rectArea,l.pointLights.value=$a.point,l.hemisphereLights.value=$a.hemi,l.directionalShadowMap.value=$a.directionalShadowMap,l.directionalShadowMatrix.value=$a.directionalShadowMatrix,l.spotShadowMap.value=$a.spotShadowMap,l.spotShadowMatrix.value=$a.spotShadowMatrix,l.pointShadowMap.value=$a.pointShadowMap,l.pointShadowMatrix.value=$a.pointShadowMatrix);var m=d.program.getUniforms(),n=oc.seqWithValue(m.seq,l);d.uniformsList=n}function Rb(a){a.side===p?eb.disable(ab.CULL_FACE):eb.enable(ab.CULL_FACE),eb.setFlipSided(a.side===o),a.transparent===!0?eb.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha,a.premultipliedAlpha):eb.setBlending(v),eb.setDepthFunc(a.depthFunc),eb.setDepthTest(a.depthTest),eb.setDepthWrite(a.depthWrite),eb.setColorWrite(a.colorWrite),eb.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function Sb(a,b,c,d){Y=0;var e=fb.get(c);if(ia&&(ja||a!==U)){var f=a===U&&c.id===S;ha.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,f)}c.needsUpdate===!1&&(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:c.lights&&e.lightsHash!==$a.hash?c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes===ha.numPlanes&&e.numIntersection===ha.numIntersection||(c.needsUpdate=!0)),c.needsUpdate&&(Qb(c,b,d),c.needsUpdate=!1);var g=!1,h=!1,i=!1,j=e.program,k=j.getUniforms(),l=e.__webglShader.uniforms;if(j.id!==z&&(ab.useProgram(j.program),z=j.id,g=!0,h=!0,i=!0),c.id!==S&&(S=c.id,h=!0),g||a!==U){if(k.set(ab,a,"projectionMatrix"),db.logarithmicDepthBuffer&&k.setValue(ab,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2)),a!==U&&(U=a,h=!0,i=!0),c.isShaderMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap){var m=k.map.cameraPosition;void 0!==m&&m.setValue(ab,ma.setFromMatrixPosition(a.matrixWorld))}(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)&&k.setValue(ab,"viewMatrix",a.matrixWorldInverse),k.set(ab,y,"toneMappingExposure"),k.set(ab,y,"toneMappingWhitePoint")}if(c.skinning){k.setOptional(ab,d,"bindMatrix"),k.setOptional(ab,d,"bindMatrixInverse");var n=d.skeleton;n&&(db.floatVertexTextures&&n.useVertexTexture?(k.set(ab,n,"boneTexture"),k.set(ab,n,"boneTextureWidth"),k.set(ab,n,"boneTextureHeight")):k.setOptional(ab,n,"boneMatrices"))}return h&&(c.lights&&cc(l,i),b&&c.fog&&Xb(l,b),(c.isMeshBasicMaterial||c.isMeshLambertMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.isMeshNormalMaterial||c.isMeshDepthMaterial)&&Tb(l,c),c.isLineBasicMaterial?Ub(l,c):c.isLineDashedMaterial?(Ub(l,c),Vb(l,c)):c.isPointsMaterial?Wb(l,c):c.isMeshLambertMaterial?Yb(l,c):c.isMeshToonMaterial?$b(l,c):c.isMeshPhongMaterial?Zb(l,c):c.isMeshPhysicalMaterial?ac(l,c):c.isMeshStandardMaterial?_b(l,c):c.isMeshDepthMaterial?c.displacementMap&&(l.displacementMap.value=c.displacementMap,l.displacementScale.value=c.displacementScale,l.displacementBias.value=c.displacementBias):c.isMeshNormalMaterial&&bc(l,c),void 0!==l.ltcMat&&(l.ltcMat.value=THREE.UniformsLib.LTC_MAT_TEXTURE),void 0!==l.ltcMag&&(l.ltcMag.value=THREE.UniformsLib.LTC_MAG_TEXTURE),oc.upload(ab,e.uniformsList,l,y)),k.set(ab,d,"modelViewMatrix"),k.set(ab,d,"normalMatrix"),k.setValue(ab,"modelMatrix",d.matrixWorld),j}function Tb(a,b){a.opacity.value=b.opacity,a.diffuse.value=b.color,b.emissive&&a.emissive.value.copy(b.emissive).multiplyScalar(b.emissiveIntensity),a.map.value=b.map,a.specularMap.value=b.specularMap,a.alphaMap.value=b.alphaMap,b.lightMap&&(a.lightMap.value=b.lightMap,a.lightMapIntensity.value=b.lightMapIntensity),b.aoMap&&(a.aoMap.value=b.aoMap,a.aoMapIntensity.value=b.aoMapIntensity);var c;if(b.map?c=b.map:b.specularMap?c=b.specularMap:b.displacementMap?c=b.displacementMap:b.normalMap?c=b.normalMap:b.bumpMap?c=b.bumpMap:b.roughnessMap?c=b.roughnessMap:b.metalnessMap?c=b.metalnessMap:b.alphaMap?c=b.alphaMap:b.emissiveMap&&(c=b.emissiveMap),void 0!==c){c.isWebGLRenderTarget&&(c=c.texture);var d=c.offset,e=c.repeat;a.offsetRepeat.value.set(d.x,d.y,e.x,e.y)}a.envMap.value=b.envMap,a.flipEnvMap.value=b.envMap&&b.envMap.isCubeTexture?-1:1,a.reflectivity.value=b.reflectivity,a.refractionRatio.value=b.refractionRatio}function Ub(a,b){a.diffuse.value=b.color,a.opacity.value=b.opacity}function Vb(a,b){a.dashSize.value=b.dashSize,a.totalSize.value=b.dashSize+b.gapSize,a.scale.value=b.scale}function Wb(a,b){if(a.diffuse.value=b.color,a.opacity.value=b.opacity,a.size.value=b.size*ca,a.scale.value=.5*aa,a.map.value=b.map,null!==b.map){var c=b.map.offset,d=b.map.repeat;a.offsetRepeat.value.set(c.x,c.y,d.x,d.y)}}function Xb(a,b){a.fogColor.value=b.color,b.isFog?(a.fogNear.value=b.near,a.fogFar.value=b.far):b.isFogExp2&&(a.fogDensity.value=b.density)}function Yb(a,b){b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap)}function Zb(a,b){a.specular.value=b.specular,a.shininess.value=Math.max(b.shininess,1e-4),b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap),b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale),b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale)),b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function $b(a,b){Zb(a,b),b.gradientMap&&(a.gradientMap.value=b.gradientMap)}function _b(a,b){a.roughness.value=b.roughness,a.metalness.value=b.metalness,b.roughnessMap&&(a.roughnessMap.value=b.roughnessMap),b.metalnessMap&&(a.metalnessMap.value=b.metalnessMap),b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap),b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale),b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale)),b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias),b.envMap&&(a.envMapIntensity.value=b.envMapIntensity)}function ac(a,b){a.clearCoat.value=b.clearCoat,a.clearCoatRoughness.value=b.clearCoatRoughness,_b(a,b)}function bc(a,b){b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale),b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale)),b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function cc(a,b){a.ambientLightColor.needsUpdate=b,a.directionalLights.needsUpdate=b,a.pointLights.needsUpdate=b,a.spotLights.needsUpdate=b,a.rectAreaLights.needsUpdate=b,a.hemisphereLights.needsUpdate=b}function dc(a){for(var b=0,c=0,d=a.length;c=db.maxTextures&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+db.maxTextures),Y+=1,a}function gc(a){var b;if(a===na)return ab.REPEAT;if(a===oa)return ab.CLAMP_TO_EDGE;if(a===pa)return ab.MIRRORED_REPEAT;if(a===qa)return ab.NEAREST;if(a===ra)return ab.NEAREST_MIPMAP_NEAREST;if(a===sa)return ab.NEAREST_MIPMAP_LINEAR;if(a===ta)return ab.LINEAR;if(a===ua)return ab.LINEAR_MIPMAP_NEAREST;if(a===va)return ab.LINEAR_MIPMAP_LINEAR;if(a===wa)return ab.UNSIGNED_BYTE;if(a===Ea)return ab.UNSIGNED_SHORT_4_4_4_4;if(a===Fa)return ab.UNSIGNED_SHORT_5_5_5_1;if(a===Ga)return ab.UNSIGNED_SHORT_5_6_5;if(a===xa)return ab.BYTE;if(a===ya)return ab.SHORT;if(a===za)return ab.UNSIGNED_SHORT;if(a===Aa)return ab.INT;if(a===Ba)return ab.UNSIGNED_INT;if(a===Ca)return ab.FLOAT;if(a===Da&&(b=cb.get("OES_texture_half_float"),null!==b))return b.HALF_FLOAT_OES;if(a===Ia)return ab.ALPHA;if(a===Ja)return ab.RGB;if(a===Ka)return ab.RGBA;if(a===La)return ab.LUMINANCE;if(a===Ma)return ab.LUMINANCE_ALPHA;if(a===Oa)return ab.DEPTH_COMPONENT;if(a===Pa)return ab.DEPTH_STENCIL;if(a===B)return ab.FUNC_ADD;if(a===C)return ab.FUNC_SUBTRACT;if(a===D)return ab.FUNC_REVERSE_SUBTRACT;if(a===G)return ab.ZERO;if(a===H)return ab.ONE;if(a===I)return ab.SRC_COLOR;if(a===J)return ab.ONE_MINUS_SRC_COLOR;if(a===K)return ab.SRC_ALPHA;if(a===L)return ab.ONE_MINUS_SRC_ALPHA;if(a===M)return ab.DST_ALPHA;if(a===N)return ab.ONE_MINUS_DST_ALPHA;if(a===O)return ab.DST_COLOR;if(a===P)return ab.ONE_MINUS_DST_COLOR;if(a===Q)return ab.SRC_ALPHA_SATURATE;if((a===Qa||a===Ra||a===Sa||a===Ta)&&(b=cb.get("WEBGL_compressed_texture_s3tc"),null!==b)){if(a===Qa)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===Ra)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===Sa)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===Ta)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}if((a===Ua||a===Va||a===Wa||a===Xa)&&(b=cb.get("WEBGL_compressed_texture_pvrtc"),null!==b)){if(a===Ua)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===Va)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===Wa)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===Xa)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(a===Ya&&(b=cb.get("WEBGL_compressed_texture_etc1"),null!==b))return b.COMPRESSED_RGB_ETC1_WEBGL;if((a===E||a===F)&&(b=cb.get("EXT_blend_minmax"),null!==b)){if(a===E)return b.MIN_EXT;if(a===F)return b.MAX_EXT}return a===Ha&&(b=cb.get("WEBGL_depth_texture"),null!==b)?b.UNSIGNED_INT_24_8_WEBGL:0}console.log("THREE.WebGLRenderer",c),a=a||{};var b=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),d=void 0!==a.context?a.context:null,e=void 0!==a.alpha&&a.alpha,f=void 0===a.depth||a.depth,g=void 0===a.stencil||a.stencil,h=void 0!==a.antialias&&a.antialias,j=void 0===a.premultipliedAlpha||a.premultipliedAlpha,k=void 0!==a.preserveDrawingBuffer&&a.preserveDrawingBuffer,l=[],m=[],n=-1,r=[],t=-1,u=new Float32Array(8),w=[],x=[];this.domElement=b,this.context=null,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.gammaFactor=2,this.gammaInput=!1,this.gammaOutput=!1,this.physicallyCorrectLights=!1,this.toneMapping=ba,this.toneMappingExposure=1,this.toneMappingWhitePoint=1,this.maxMorphTargets=8,this.maxMorphNormals=4;var y=this,z=null,A=null,R=null,S=-1,T="",U=null,V=new xb,W=null,X=new xb,Y=0,Z=new re(0),$=0,_=b.width,aa=b.height,ca=1,da=new xb(0,0,_,aa),ea=!1,fa=new xb(0,0,_,aa),ga=new He,ha=new Pf,ia=!1,ja=!1,ka=new Ee,la=new Cb,ma=new Bb,Na=new Cb,Za=new Cb,$a={hash:"",ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],shadows:[]},_a={calls:0,vertices:0,faces:0,points:0};this.info={render:_a,memory:{geometries:0,textures:0},programs:null};var ab;try{var bb={alpha:e,depth:f,stencil:g,antialias:h,premultipliedAlpha:j,preserveDrawingBuffer:k};if(ab=d||b.getContext("webgl",bb)||b.getContext("experimental-webgl",bb),null===ab)throw null!==b.getContext("webgl")?"Error creating WebGL context with your selected attributes.":"Error creating WebGL context.";void 0===ab.getShaderPrecisionFormat&&(ab.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}}),b.addEventListener("webglcontextlost",Ab,!1)}catch(a){console.error("THREE.WebGLRenderer: "+a)}var cb=new Of(ab);cb.get("WEBGL_depth_texture"),cb.get("OES_texture_float"),cb.get("OES_texture_float_linear"),cb.get("OES_texture_half_float"),cb.get("OES_texture_half_float_linear"),cb.get("OES_standard_derivatives"),cb.get("ANGLE_instanced_arrays"),cb.get("OES_element_index_uint")&&(ff.MaxIndex=4294967296);var db=new Nf(ab,cb,a),eb=new Mf(ab,cb,gc),fb=new Lf,jb=new Kf(ab,cb,eb,fb,db,gc,this.info),kb=new Jf(ab,fb,this.info),lb=new Hf(this,db),mb=new rf;this.info.programs=lb.programs;var pb,qb,rb,sb,nb=new qf(ab,cb,_a),ob=new pf(ab,cb,_a);ub(),this.context=ab,this.capabilities=db,this.extensions=cb,this.properties=fb,this.state=eb;var wb=new Ie(this,$a,kb,db);this.shadowMap=wb;var yb=new ye(this,w),zb=new xe(this,x);this.getContext=function(){return ab},this.getContextAttributes=function(){return ab.getContextAttributes()},this.forceContextLoss=function(){cb.get("WEBGL_lose_context").loseContext()},this.getMaxAnisotropy=function(){return db.getMaxAnisotropy()},this.getPrecision=function(){return db.precision},this.getPixelRatio=function(){return ca},this.setPixelRatio=function(a){void 0!==a&&(ca=a,this.setSize(fa.z,fa.w,!1))},this.getSize=function(){return{width:_,height:aa}},this.setSize=function(a,c,d){_=a,aa=c,b.width=a*ca,b.height=c*ca,d!==!1&&(b.style.width=a+"px",b.style.height=c+"px"),this.setViewport(0,0,a,c)},this.setViewport=function(a,b,c,d){eb.viewport(fa.set(a,b,c,d))},this.setScissor=function(a,b,c,d){eb.scissor(da.set(a,b,c,d))},this.setScissorTest=function(a){eb.setScissorTest(ea=a)},this.getClearColor=function(){return Z},this.setClearColor=function(a,b){Z.set(a),$=void 0!==b?b:1,eb.buffers.color.setClear(Z.r,Z.g,Z.b,$,j)},this.getClearAlpha=function(){return $},this.setClearAlpha=function(a){$=a,eb.buffers.color.setClear(Z.r,Z.g,Z.b,$,j)},this.clear=function(a,b,c){var d=0;(void 0===a||a)&&(d|=ab.COLOR_BUFFER_BIT),(void 0===b||b)&&(d|=ab.DEPTH_BUFFER_BIT),(void 0===c||c)&&(d|=ab.STENCIL_BUFFER_BIT),ab.clear(d)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.clearTarget=function(a,b,c,d){this.setRenderTarget(a),this.clear(b,c,d)},this.resetGLState=vb,this.dispose=function(){r=[],t=-1,m=[],n=-1,b.removeEventListener("webglcontextlost",Ab,!1)},this.renderBufferImmediate=function(a,b,c){eb.initAttributes();var d=fb.get(a);a.hasPositions&&!d.position&&(d.position=ab.createBuffer()),a.hasNormals&&!d.normal&&(d.normal=ab.createBuffer()),a.hasUvs&&!d.uv&&(d.uv=ab.createBuffer()),a.hasColors&&!d.color&&(d.color=ab.createBuffer());var e=b.getAttributes();if(a.hasPositions&&(ab.bindBuffer(ab.ARRAY_BUFFER,d.position),ab.bufferData(ab.ARRAY_BUFFER,a.positionArray,ab.DYNAMIC_DRAW),eb.enableAttribute(e.position),ab.vertexAttribPointer(e.position,3,ab.FLOAT,!1,0,0)),a.hasNormals){if(ab.bindBuffer(ab.ARRAY_BUFFER,d.normal),!c.isMeshPhongMaterial&&!c.isMeshStandardMaterial&&!c.isMeshNormalMaterial&&c.shading===q)for(var f=0,g=3*a.count;f8&&(k.length=8);for(var o=c.morphAttributes,l=0,m=k.length;l0&&t.renderInstances(c,A,C):t.render(A,C)}},this.render=function(a,b,c,d){if(void 0!==b&&b.isCamera!==!0)return void console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");T="",S=-1,U=null,a.autoUpdate===!0&&a.updateMatrixWorld(),null===b.parent&&b.updateMatrixWorld(),b.matrixWorldInverse.getInverse(b.matrixWorld),la.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse),ga.setFromMatrix(la),l.length=0,n=-1,t=-1,w.length=0,x.length=0,ja=this.localClippingEnabled,ia=ha.init(this.clippingPlanes,ja,b),Ob(a,b),m.length=n+1,r.length=t+1,y.sortObjects===!0&&(m.sort(Ib),r.sort(Jb)),ia&&ha.beginShadows(),dc(l),wb.render(a,b),ec(l,b),ia&&ha.endShadows(),_a.calls=0,_a.vertices=0,_a.faces=0,_a.points=0,void 0===c&&(c=null),this.setRenderTarget(c);var e=a.background;if(null===e?eb.buffers.color.setClear(Z.r,Z.g,Z.b,$,j):e&&e.isColor&&(eb.buffers.color.setClear(e.r,e.g,e.b,1,j),d=!0),(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil), e&&e.isCubeTexture?(void 0===rb&&(rb=new nf,sb=new gf(new jf(5,5,5),new Be({uniforms:ve.cube.uniforms,vertexShader:ve.cube.vertexShader,fragmentShader:ve.cube.fragmentShader,side:o,depthTest:!1,depthWrite:!1,fog:!1}))),rb.projectionMatrix.copy(b.projectionMatrix),rb.matrixWorld.extractRotation(b.matrixWorld),rb.matrixWorldInverse.getInverse(rb.matrixWorld),sb.material.uniforms.tCube.value=e,sb.modelViewMatrix.multiplyMatrices(rb.matrixWorldInverse,sb.matrixWorld),kb.update(sb),y.renderBufferDirect(rb,null,sb.geometry,sb.material,sb,null)):e&&e.isTexture&&(void 0===pb&&(pb=new of(-1,1,1,-1,0,1),qb=new gf(new lf(2,2),new Re({depthTest:!1,depthWrite:!1,fog:!1}))),qb.material.map=e,kb.update(qb),y.renderBufferDirect(pb,null,qb.geometry,qb.material,qb,null)),a.overrideMaterial){var f=a.overrideMaterial;Pb(m,a,b,f),Pb(r,a,b,f)}else eb.setBlending(v),Pb(m,a,b),Pb(r,a,b);yb.render(a,b),zb.render(a,b,X),c&&jb.updateRenderTargetMipmap(c),eb.setDepthTest(!0),eb.setDepthWrite(!0),eb.setColorWrite(!0)},this.setFaceCulling=function(a,b){eb.setCullFace(a),eb.setFlipSided(b===i)},this.allocTextureUnit=fc,this.setTexture2D=function(){var a=!1;return function(c,d){c&&c.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),c=c.texture),jb.setTexture2D(c,d)}}(),this.setTexture=function(){var a=!1;return function(c,d){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0),jb.setTexture2D(c,d)}}(),this.setTextureCube=function(){var a=!1;return function(c,d){c&&c.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),c=c.texture),c&&c.isCubeTexture||Array.isArray(c.image)&&6===c.image.length?jb.setTextureCube(c,d):jb.setTextureCubeDynamic(c,d)}}(),this.getCurrentRenderTarget=function(){return A},this.setRenderTarget=function(a){A=a,a&&void 0===fb.get(a).__webglFramebuffer&&jb.setupRenderTarget(a);var c,b=a&&a.isWebGLRenderTargetCube;if(a){var d=fb.get(a);c=b?d.__webglFramebuffer[a.activeCubeFace]:d.__webglFramebuffer,V.copy(a.scissor),W=a.scissorTest,X.copy(a.viewport)}else c=null,V.copy(da).multiplyScalar(ca),W=ea,X.copy(fa).multiplyScalar(ca);if(R!==c&&(ab.bindFramebuffer(ab.FRAMEBUFFER,c),R=c),eb.scissor(V),eb.setScissorTest(W),eb.viewport(X),b){var e=fb.get(a.texture);ab.framebufferTexture2D(ab.FRAMEBUFFER,ab.COLOR_ATTACHMENT0,ab.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,e.__webglTexture,a.activeMipMapLevel)}},this.readRenderTargetPixels=function(a,b,c,d,e,f){if((a&&a.isWebGLRenderTarget)===!1)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");var g=fb.get(a).__webglFramebuffer;if(g){var h=!1;g!==R&&(ab.bindFramebuffer(ab.FRAMEBUFFER,g),h=!0);try{var i=a.texture,j=i.format,k=i.type;if(j!==Ka&&gc(j)!==ab.getParameter(ab.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!(k===wa||gc(k)===ab.getParameter(ab.IMPLEMENTATION_COLOR_READ_TYPE)||k===Ca&&(cb.get("OES_texture_float")||cb.get("WEBGL_color_buffer_float"))||k===Da&&cb.get("EXT_color_buffer_half_float")))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");ab.checkFramebufferStatus(ab.FRAMEBUFFER)===ab.FRAMEBUFFER_COMPLETE?b>=0&&b<=a.width-d&&c>=0&&c<=a.height-e&&ab.readPixels(b,c,d,e,gc(j),gc(k),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{h&&ab.bindFramebuffer(ab.FRAMEBUFFER,R)}}}}function Rf(a,b){this.name="",this.color=new re(a),this.density=void 0!==b?b:25e-5}function Sf(a,b,c){this.name="",this.color=new re(a),this.near=void 0!==b?b:1,this.far=void 0!==c?c:1e3}function Tf(){Ne.call(this),this.type="Scene",this.background=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0}function Uf(a,b,c,d,e){Ne.call(this),this.lensFlares=[],this.positionScreen=new Bb,this.customUpdateCallback=void 0,void 0!==a&&this.add(a,b,c,d,e)}function Vf(a){Ae.call(this),this.type="SpriteMaterial",this.color=new re(16777215),this.map=null,this.rotation=0,this.fog=!1,this.lights=!1,this.setValues(a)}function Wf(a){Ne.call(this),this.type="Sprite",this.material=void 0!==a?a:new Vf}function Xf(){Ne.call(this),this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function Yf(a,b,c){if(this.useVertexTexture=void 0===c||c,this.identityMatrix=new Cb,a=a||[],this.bones=a.slice(0),this.useVertexTexture){var d=Math.sqrt(4*this.bones.length);d=tb.nextPowerOfTwo(Math.ceil(d)),d=Math.max(d,4),this.boneTextureWidth=d,this.boneTextureHeight=d,this.boneMatrices=new Float32Array(this.boneTextureWidth*this.boneTextureHeight*4),this.boneTexture=new te(this.boneMatrices,this.boneTextureWidth,this.boneTextureHeight,Ka,Ca)}else this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else{console.warn("THREE.Skeleton bonInverses is the wrong length."),this.boneInverses=[];for(var e=0,f=this.bones.length;e=a.HAVE_CURRENT_DATA&&(j.needsUpdate=!0)}wb.call(this,a,b,c,d,e,f,g,h,i),this.generateMipmaps=!1;var j=this;k()}function gg(a,b,c,d,e,f,g,h,i,j,k,l){wb.call(this,null,f,g,h,i,j,d,e,k,l),this.image={width:b,height:c},this.mipmaps=a,this.flipY=!1,this.generateMipmaps=!1}function hg(a,b,c,d,e,f,g,h,i){wb.call(this,a,b,c,d,e,f,g,h,i),this.needsUpdate=!0}function ig(a,b,c,d,e,f,g,h,i,j){if(j=void 0!==j?j:Oa,j!==Oa&&j!==Pa)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===c&&j===Oa&&(c=za),void 0===c&&j===Pa&&(c=Ha),wb.call(this,null,d,e,f,g,h,j,c,i),this.image={width:a,height:b},this.magFilter=void 0!==g?g:qa,this.minFilter=void 0!==h?h:qa,this.flipY=!1,this.generateMipmaps=!1}function jg(a){function x(a,b){return a-b}ff.call(this),this.type="WireframeGeometry";var c,d,e,f,g,j,k,m,b=[],h=[0,0],i={},l=["a","b","c"];if(a&&a.isGeometry){var n=a.faces;for(c=0,e=n.length;c.9&&g<.1&&(b<.2&&(f[a+0]+=1),c<.2&&(f[a+2]+=1),d<.2&&(f[a+4]+=1))}}function l(a){e.push(a.x,a.y,a.z)}function m(b,c){var d=3*b;c.x=a[d+0],c.y=a[d+1],c.z=a[d+2]}function n(){for(var a=new Bb,b=new Bb,c=new Bb,d=new Bb,g=new ub,h=new ub,i=new ub,j=0,k=0;j0)&&o.push(v,w,y),(j!==c-1||h0&&t(!0),b>0&&t(!1)),this.setIndex(j),this.addAttribute("position",new $e(k,3)),this.addAttribute("normal",new $e(l,3)),this.addAttribute("uv",new $e(m,2))}function Qg(a,b,c,d,e,f,g){Og.call(this,0,a,b,c,d,e,f,g),this.type="ConeGeometry",this.parameters={radius:a,height:b,radialSegments:c,heightSegments:d,openEnded:e,thetaStart:f,thetaLength:g}}function Rg(a,b,c,d,e,f,g){Pg.call(this,0,a,b,c,d,e,f,g),this.type="ConeBufferGeometry",this.parameters={radius:a,height:b,radialSegments:c,heightSegments:d,openEnded:e,thetaStart:f,thetaLength:g}}function Sg(a,b,c,d){ef.call(this),this.type="CircleGeometry",this.parameters={radius:a,segments:b,thetaStart:c,thetaLength:d},this.fromBufferGeometry(new Tg(a,b,c,d))}function Tg(a,b,c,d){ff.call(this),this.type="CircleBufferGeometry",this.parameters={radius:a,segments:b,thetaStart:c,thetaLength:d},a=a||50,b=void 0!==b?Math.max(3,b):8,c=void 0!==c?c:0,d=void 0!==d?d:2*Math.PI;var i,j,e=[],f=[],g=[],h=[],k=new Bb,l=new ub;for(f.push(0,0,0),g.push(0,0,1),h.push(.5,.5),j=0,i=3;j<=b;j++,i+=3){var m=c+j/b*d;k.x=a*Math.cos(m),k.y=a*Math.sin(m),f.push(k.x,k.y,k.z),g.push(0,0,1),l.x=(f[i]/a+1)/2,l.y=(f[i+1]/a+1)/2,h.push(l.x,l.y)}for(i=1;i<=b;i++)e.push(i,i+1,0);this.setIndex(e),this.addAttribute("position",new $e(f,3)),this.addAttribute("normal",new $e(g,3)),this.addAttribute("uv",new $e(h,2))}function Vg(){Be.call(this,{uniforms:pc.merge([ue.lights,{opacity:{value:1}}]),vertexShader:qe.shadow_vert,fragmentShader:qe.shadow_frag}),this.lights=!0,this.transparent=!0,Object.defineProperties(this,{opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(a){this.uniforms.opacity.value=a}}})}function Wg(a){Be.call(this,a),this.type="RawShaderMaterial"}function Xg(a){this.uuid=tb.generateUUID(),this.type="MultiMaterial",this.materials=Array.isArray(a)?a:[],this.visible=!0}function Yg(a){Ae.call(this),this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new re(16777215),this.roughness=.5,this.metalness=.5,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new re(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalScale=new ub(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(a)}function Zg(a){Yg.call(this),this.defines={PHYSICAL:""},this.type="MeshPhysicalMaterial",this.reflectivity=.5,this.clearCoat=0,this.clearCoatRoughness=0,this.setValues(a)}function $g(a){Ae.call(this),this.type="MeshPhongMaterial",this.color=new re(16777215),this.specular=new re(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new re(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalScale=new ub(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Z,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(a)}function _g(a){$g.call(this),this.defines={TOON:""},this.type="MeshToonMaterial",this.gradientMap=null,this.setValues(a)}function ah(a){Ae.call(this,a),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalScale=new ub(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(a)}function bh(a){Ae.call(this),this.type="MeshLambertMaterial",this.color=new re(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new re(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Z,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(a)}function ch(a){Ae.call(this),this.type="LineDashedMaterial",this.color=new re(16777215),this.linewidth=1,this.scale=1,this.dashSize=3,this.gapSize=1,this.lights=!1,this.setValues(a)}function fh(a,b,c){var d=this,e=!1,f=0,g=0;this.onStart=void 0,this.onLoad=a,this.onProgress=b,this.onError=c,this.itemStart=function(a){g++,e===!1&&void 0!==d.onStart&&d.onStart(a,f,g),e=!0},this.itemEnd=function(a){f++,void 0!==d.onProgress&&d.onProgress(a,f,g),f===g&&(e=!1,void 0!==d.onLoad&&d.onLoad())},this.itemError=function(a){void 0!==d.onError&&d.onError(a)}}function hh(a){this.manager=void 0!==a?a:gh}function ih(a){this.manager=void 0!==a?a:gh,this._parser=null}function jh(a){this.manager=void 0!==a?a:gh,this._parser=null}function kh(a){this.manager=void 0!==a?a:gh}function lh(a){this.manager=void 0!==a?a:gh}function mh(a){this.manager=void 0!==a?a:gh}function nh(a,b){Ne.call(this),this.type="Light",this.color=new re(a),this.intensity=void 0!==b?b:1,this.receiveShadow=void 0}function oh(a,b,c){nh.call(this,a,c),this.type="HemisphereLight",this.castShadow=void 0,this.position.copy(Ne.DefaultUp),this.updateMatrix(),this.groundColor=new re(b)}function ph(a){this.camera=a,this.bias=0,this.radius=1,this.mapSize=new ub(512,512),this.map=null,this.matrix=new Cb}function qh(){ph.call(this,new nf(50,1,.5,500))}function rh(a,b,c,d,e,f){nh.call(this,a,b),this.type="SpotLight",this.position.copy(Ne.DefaultUp),this.updateMatrix(),this.target=new Ne,Object.defineProperty(this,"power",{get:function(){return this.intensity*Math.PI},set:function(a){this.intensity=a/Math.PI}}),this.distance=void 0!==c?c:0,this.angle=void 0!==d?d:Math.PI/3,this.penumbra=void 0!==e?e:0,this.decay=void 0!==f?f:1,this.shadow=new qh}function sh(a,b,c,d){nh.call(this,a,b),this.type="PointLight",Object.defineProperty(this,"power",{get:function(){return 4*this.intensity*Math.PI},set:function(a){this.intensity=a/(4*Math.PI)}}),this.distance=void 0!==c?c:0,this.decay=void 0!==d?d:1,this.shadow=new ph(new nf(90,1,.5,500))}function th(){ph.call(this,new of(-5,5,5,-5,.5,500))}function uh(a,b){nh.call(this,a,b),this.type="DirectionalLight",this.position.copy(Ne.DefaultUp),this.updateMatrix(),this.target=new Ne,this.shadow=new th}function vh(a,b){nh.call(this,a,b),this.type="AmbientLight",this.castShadow=void 0}function xh(a,b,c,d){this.parameterPositions=a,this._cachedIndex=0,this.resultBuffer=void 0!==d?d:new b.constructor(c),this.sampleValues=b,this.valueSize=c}function yh(a,b,c,d){xh.call(this,a,b,c,d),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0; }function zh(a,b,c,d){xh.call(this,a,b,c,d)}function Ah(a,b,c,d){xh.call(this,a,b,c,d)}function Ch(a,b,c,d){if(void 0===a)throw new Error("track name is undefined");if(void 0===b||0===b.length)throw new Error("no keyframes in track named "+a);this.name=a,this.times=wh.convertArray(b,this.TimeBufferType),this.values=wh.convertArray(c,this.ValueBufferType),this.setInterpolation(d||this.DefaultInterpolation),this.validate(),this.optimize()}function Dh(a,b,c,d){Ch.call(this,a,b,c,d)}function Eh(a,b,c,d){xh.call(this,a,b,c,d)}function Fh(a,b,c,d){Ch.call(this,a,b,c,d)}function Gh(a,b,c,d){Ch.call(this,a,b,c,d)}function Hh(a,b,c,d){Ch.call(this,a,b,c,d)}function Ih(a,b,c){Ch.call(this,a,b,c)}function Jh(a,b,c,d){Ch.call(this,a,b,c,d)}function Kh(a,b,c,d){Ch.apply(this,arguments)}function Lh(a,b,c){this.name=a,this.tracks=c,this.duration=void 0!==b?b:-1,this.uuid=tb.generateUUID(),this.duration<0&&this.resetDuration(),this.optimize()}function Mh(a){this.manager=void 0!==a?a:gh,this.textures={}}function Nh(a){this.manager=void 0!==a?a:gh}function Oh(){this.onLoadStart=function(){},this.onLoadProgress=function(){},this.onLoadComplete=function(){}}function Ph(a){"boolean"==typeof a&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),a=void 0),this.manager=void 0!==a?a:gh,this.withCredentials=!1}function Qh(a){this.manager=void 0!==a?a:gh,this.texturePath=""}function Rh(a,b,c,d,e){var f=.5*(d-b),g=.5*(e-c),h=a*a,i=a*h;return(2*c-2*d+f+g)*i+(-3*c+3*d-2*f-g)*h+f*a+c}function Sh(a,b){var c=1-a;return c*c*b}function Th(a,b){return 2*(1-a)*a*b}function Uh(a,b){return a*a*b}function Vh(a,b,c,d){return Sh(a,b)+Th(a,c)+Uh(a,d)}function Wh(a,b){var c=1-a;return c*c*c*b}function Xh(a,b){var c=1-a;return 3*c*c*a*b}function Yh(a,b){return 3*(1-a)*a*a*b}function Zh(a,b){return a*a*a*b}function $h(a,b,c,d,e){return Wh(a,b)+Xh(a,c)+Yh(a,d)+Zh(a,e)}function _h(){}function ai(a,b){this.v1=a,this.v2=b}function bi(){this.curves=[],this.autoClose=!1}function ci(a,b,c,d,e,f,g,h){this.aX=a,this.aY=b,this.xRadius=c,this.yRadius=d,this.aStartAngle=e,this.aEndAngle=f,this.aClockwise=g,this.aRotation=h||0}function di(a){this.points=void 0===a?[]:a}function ei(a,b,c,d){this.v0=a,this.v1=b,this.v2=c,this.v3=d}function fi(a,b,c){this.v0=a,this.v1=b,this.v2=c}function hi(a){bi.call(this),this.currentPoint=new ub,a&&this.fromPoints(a)}function ii(){hi.apply(this,arguments),this.holes=[]}function ji(){this.subPaths=[],this.currentPath=null}function ki(a){this.data=a}function li(a){this.manager=void 0!==a?a:gh}function oi(a){this.manager=void 0!==a?a:gh}function pi(a,b,c,d){nh.call(this,a,b),this.type="RectAreaLight",this.position.set(0,1,0),this.updateMatrix(),this.width=void 0!==c?c:10,this.height=void 0!==d?d:10}function qi(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new nf,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new nf,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1}function ri(a,b,c){Ne.call(this),this.type="CubeCamera";var d=90,e=1,f=new nf(d,e,a,b);f.up.set(0,-1,0),f.lookAt(new Bb(1,0,0)),this.add(f);var g=new nf(d,e,a,b);g.up.set(0,-1,0),g.lookAt(new Bb(-1,0,0)),this.add(g);var h=new nf(d,e,a,b);h.up.set(0,0,1),h.lookAt(new Bb(0,1,0)),this.add(h);var i=new nf(d,e,a,b);i.up.set(0,0,-1),i.lookAt(new Bb(0,-1,0)),this.add(i);var j=new nf(d,e,a,b);j.up.set(0,-1,0),j.lookAt(new Bb(0,0,1)),this.add(j);var k=new nf(d,e,a,b);k.up.set(0,-1,0),k.lookAt(new Bb(0,0,-1)),this.add(k);var l={format:Ja,magFilter:ta,minFilter:ta};this.renderTarget=new zb(c,c,l),this.updateCubeMap=function(a,b){null===this.parent&&this.updateMatrixWorld();var c=this.renderTarget,d=c.texture.generateMipmaps;c.texture.generateMipmaps=!1,c.activeCubeFace=0,a.render(b,f,c),c.activeCubeFace=1,a.render(b,g,c),c.activeCubeFace=2,a.render(b,h,c),c.activeCubeFace=3,a.render(b,i,c),c.activeCubeFace=4,a.render(b,j,c),c.texture.generateMipmaps=d,c.activeCubeFace=5,a.render(b,k,c),a.setRenderTarget(null)}}function si(){Ne.call(this),this.type="AudioListener",this.context=ni.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null}function ti(a){Ne.call(this),this.type="Audio",this.context=a.context,this.gain=this.context.createGain(),this.gain.connect(a.getInput()),this.autoplay=!1,this.buffer=null,this.loop=!1,this.startTime=0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.sourceType="empty",this.filters=[]}function ui(a){ti.call(this,a),this.panner=this.context.createPanner(),this.panner.connect(this.gain)}function vi(a,b){this.analyser=a.context.createAnalyser(),this.analyser.fftSize=void 0!==b?b:2048,this.data=new Uint8Array(this.analyser.frequencyBinCount),a.getOutput().connect(this.analyser)}function wi(a,b,c){this.binding=a,this.valueSize=c;var e,d=Float64Array;switch(b){case"quaternion":e=this._slerp;break;case"string":case"bool":d=Array,e=this._select;break;default:e=this._lerp}this.buffer=new d(4*c),this._mixBufferRegion=e,this.cumulativeWeight=0,this.useCount=0,this.referenceCount=0}function xi(a,b,c){this.path=b,this.parsedPath=c||xi.parseTrackName(b),this.node=xi.findNode(a,this.parsedPath.nodeName)||a,this.rootNode=a}function yi(a){this.uuid=tb.generateUUID(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;var b={};this._indicesByUUID=b;for(var c=0,d=arguments.length;c!==d;++c)b[arguments[c].uuid]=c;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};var e=this;this.stats={objects:{get total(){return e._objects.length},get inUse(){return this.total-e.nCachedObjects_}},get bindingsPerObject(){return e._bindings.length}}}function zi(a,b,c){this._mixer=a,this._clip=b,this._localRoot=c||null;for(var d=b.tracks,e=d.length,f=new Array(e),g={endingStart:db,endingEnd:db},h=0;h!==e;++h){var i=d[h].createInterpolant(null);f[h]=i,i.settings=g}this._interpolantSettings=g,this._interpolants=f,this._propertyBindings=new Array(e),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=$a,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}function Ai(a){this._root=a,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}function Bi(a){"string"==typeof a&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),a=arguments[1]),this.value=a}function Ci(){ff.call(this),this.type="InstancedBufferGeometry",this.maxInstancedCount=void 0}function Di(a,b,c,d){this.uuid=tb.generateUUID(),this.data=a,this.itemSize=b,this.offset=c,this.normalized=d===!0}function Ei(a,b){this.uuid=tb.generateUUID(),this.array=a,this.stride=b,this.count=void 0!==a?a.length/b:0,this.dynamic=!1,this.updateRange={offset:0,count:-1},this.onUploadCallback=function(){},this.version=0}function Fi(a,b,c){Ei.call(this,a,b),this.meshPerAttribute=c||1}function Gi(a,b,c){Se.call(this,a,b),this.meshPerAttribute=c||1}function Hi(a,b,c,d){this.ray=new Je(a,b),this.near=c||0,this.far=d||1/0,this.params={Mesh:{},Line:{},LOD:{},Points:{threshold:1},Sprite:{}},Object.defineProperties(this.params,{PointCloud:{get:function(){return console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points."),this.Points}}})}function Ii(a,b){return a.distance-b.distance}function Ji(a,b,c,d){if(a.visible!==!1&&(a.raycast(b,c),d===!0))for(var e=a.children,f=0,g=e.length;f0?1:+a}),void 0===Function.prototype.name&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&!function(){Object.assign=function(a){if(void 0===a||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1;c>=4,b[f]=a[19===f?3&d|8:d]);return b.join("")}}(),clamp:function(a,b,c){return Math.max(b,Math.min(c,a))},euclideanModulo:function(a,b){return(a%b+b)%b},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},lerp:function(a,b,c){return(1-c)*a+c*b},smoothstep:function(a,b,c){return a<=b?0:a>=c?1:(a=(a-b)/(c-b),a*a*(3-2*a))},smootherstep:function(a,b,c){return a<=b?0:a>=c?1:(a=(a-b)/(c-b),a*a*a*(a*(6*a-15)+10))},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},degToRad:function(a){return a*tb.DEG2RAD},radToDeg:function(a){return a*tb.RAD2DEG},isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},nearestPowerOfTwo:function(a){return Math.pow(2,Math.round(Math.log(a)/Math.LN2))},nextPowerOfTwo:function(a){return a--,a|=a>>1,a|=a>>2,a|=a>>4,a|=a>>8,a|=a>>16,a++,a}};ub.prototype={constructor:ub,isVector2:!0,get width(){return this.x},set width(a){this.x=a},get height(){return this.y},set height(a){this.y=a},set:function(a,b){return this.x=a,this.y=b,this},setScalar:function(a){return this.x=a,this.y=a,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw new Error("index is out of range: "+a)}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+a)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(a){return this.x=a.x,this.y=a.y,this},add:function(a,b){return void 0!==b?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b)):(this.x+=a.x,this.y+=a.y,this)},addScalar:function(a){return this.x+=a,this.y+=a,this},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this},addScaledVector:function(a,b){return this.x+=a.x*b,this.y+=a.y*b,this},sub:function(a,b){return void 0!==b?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b)):(this.x-=a.x,this.y-=a.y,this)},subScalar:function(a){return this.x-=a,this.y-=a,this},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this},multiply:function(a){return this.x*=a.x,this.y*=a.y,this},multiplyScalar:function(a){return isFinite(a)?(this.x*=a,this.y*=a):(this.x=0,this.y=0),this},divide:function(a){return this.x/=a.x,this.y/=a.y,this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){return this.x=Math.min(this.x,a.x),this.y=Math.min(this.y,a.y),this},max:function(a){return this.x=Math.max(this.x,a.x),this.y=Math.max(this.y,a.y),this},clamp:function(a,b){return this.x=Math.max(a.x,Math.min(b.x,this.x)),this.y=Math.max(a.y,Math.min(b.y,this.y)),this},clampScalar:function(){var a,b;return function(d,e){return void 0===a&&(a=new ub,b=new ub),a.set(d,d),b.set(e,e),this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.multiplyScalar(Math.max(a,Math.min(b,c))/c)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length())},angle:function(){var a=Math.atan2(this.y,this.x);return a<0&&(a+=2*Math.PI),a},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;return b*b+c*c},distanceToManhattan:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)},setLength:function(a){return this.multiplyScalar(a/this.length())},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){return void 0===b&&(b=0),this.x=a[b],this.y=a[b+1],this},toArray:function(a,b){return void 0===a&&(a=[]),void 0===b&&(b=0),a[b]=this.x,a[b+1]=this.y,a},fromBufferAttribute:function(a,b,c){return void 0!==c&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=a.getX(b),this.y=a.getY(b),this},rotateAround:function(a,b){var c=Math.cos(b),d=Math.sin(b),e=this.x-a.x,f=this.y-a.y;return this.x=e*c-f*d+a.x,this.y=e*d+f*c+a.y,this}};var vb=0;wb.DEFAULT_IMAGE=void 0,wb.DEFAULT_MAPPING=fa,wb.prototype={constructor:wb,isTexture:!0,set needsUpdate(a){a===!0&&this.version++},clone:function(){return(new this.constructor).copy(this)},copy:function(a){return this.image=a.image,this.mipmaps=a.mipmaps.slice(0),this.mapping=a.mapping,this.wrapS=a.wrapS,this.wrapT=a.wrapT,this.magFilter=a.magFilter,this.minFilter=a.minFilter,this.anisotropy=a.anisotropy,this.format=a.format,this.type=a.type,this.offset.copy(a.offset),this.repeat.copy(a.repeat),this.generateMipmaps=a.generateMipmaps,this.premultiplyAlpha=a.premultiplyAlpha,this.flipY=a.flipY,this.unpackAlignment=a.unpackAlignment,this.encoding=a.encoding,this},toJSON:function(a){function b(a){var b;return void 0!==a.toDataURL?b=a:(b=document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),b.width=a.width,b.height=a.height,b.getContext("2d").drawImage(a,0,0,a.width,a.height)),b.width>2048||b.height>2048?b.toDataURL("image/jpeg",.6):b.toDataURL("image/png")}if(void 0!==a.textures[this.uuid])return a.textures[this.uuid];var c={metadata:{version:4.4,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],wrap:[this.wrapS,this.wrapT],minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY};if(void 0!==this.image){var d=this.image;void 0===d.uuid&&(d.uuid=tb.generateUUID()),void 0===a.images[d.uuid]&&(a.images[d.uuid]={uuid:d.uuid,url:b(d)}),c.image=d.uuid}return a.textures[this.uuid]=c,c},dispose:function(){this.dispatchEvent({type:"dispose"})},transformUv:function(a){if(this.mapping===fa){if(a.multiply(this.repeat),a.add(this.offset),a.x<0||a.x>1)switch(this.wrapS){case na:a.x=a.x-Math.floor(a.x);break;case oa:a.x=a.x<0?0:1;break;case pa:1===Math.abs(Math.floor(a.x)%2)?a.x=Math.ceil(a.x)-a.x:a.x=a.x-Math.floor(a.x)}if(a.y<0||a.y>1)switch(this.wrapT){case na:a.y=a.y-Math.floor(a.y);break;case oa:a.y=a.y<0?0:1;break;case pa:1===Math.abs(Math.floor(a.y)%2)?a.y=Math.ceil(a.y)-a.y:a.y=a.y-Math.floor(a.y)}this.flipY&&(a.y=1-a.y)}}},Object.assign(wb.prototype,b.prototype),xb.prototype={constructor:xb,isVector4:!0,set:function(a,b,c,d){return this.x=a,this.y=b,this.z=c,this.w=d,this},setScalar:function(a){return this.x=a,this.y=a,this.z=a,this.w=a,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setZ:function(a){return this.z=a,this},setW:function(a){return this.w=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w=b;break;default:throw new Error("index is out of range: "+a)}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+a)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this.w=void 0!==a.w?a.w:1,this},add:function(a,b){return void 0!==b?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b)):(this.x+=a.x,this.y+=a.y,this.z+=a.z,this.w+=a.w,this)},addScalar:function(a){return this.x+=a,this.y+=a,this.z+=a,this.w+=a,this},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this.w=a.w+b.w,this},addScaledVector:function(a,b){return this.x+=a.x*b,this.y+=a.y*b,this.z+=a.z*b,this.w+=a.w*b,this},sub:function(a,b){return void 0!==b?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b)):(this.x-=a.x,this.y-=a.y,this.z-=a.z,this.w-=a.w,this)},subScalar:function(a){return this.x-=a,this.y-=a,this.z-=a,this.w-=a,this},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this.w=a.w-b.w,this},multiplyScalar:function(a){return isFinite(a)?(this.x*=a,this.y*=a,this.z*=a,this.w*=a):(this.x=0,this.y=0,this.z=0,this.w=0),this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w,f=a.elements;return this.x=f[0]*b+f[4]*c+f[8]*d+f[12]*e,this.y=f[1]*b+f[5]*c+f[9]*d+f[13]*e,this.z=f[2]*b+f[6]*c+f[10]*d+f[14]*e,this.w=f[3]*b+f[7]*c+f[11]*d+f[15]*e,this},divideScalar:function(a){return this.multiplyScalar(1/a)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);return b<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b),this},setAxisAngleFromRotationMatrix:function(a){var b,c,d,e,f=.01,g=.1,h=a.elements,i=h[0],j=h[4],k=h[8],l=h[1],m=h[5],n=h[9],o=h[2],p=h[6],q=h[10];if(Math.abs(j-l)s&&r>t?rt?s0?(m=.5/Math.sqrt(l+1),this._w=.25/m,this._x=(j-h)*m,this._y=(e-i)*m,this._z=(f-d)*m):c>g&&c>k?(m=2*Math.sqrt(1+c-g-k),this._w=(j-h)/m,this._x=.25*m,this._y=(d+f)/m,this._z=(e+i)/m):g>k?(m=2*Math.sqrt(1+g-c-k),this._w=(e-i)/m,this._x=(d+f)/m,this._y=.25*m,this._z=(h+j)/m):(m=2*Math.sqrt(1+k-c-g),this._w=(f-d)/m,this._x=(e+i)/m,this._y=(h+j)/m,this._z=.25*m),this.onChangeCallback(),this},setFromUnitVectors:function(){var a,b,c=1e-6;return function(e,f){return void 0===a&&(a=new Bb),b=e.dot(f)+1,bMath.abs(e.z)?a.set(-e.y,e.x,0):a.set(0,-e.z,e.y)):a.crossVectors(e,f),this._x=a.x,this._y=a.y,this._z=a.z,this._w=b,this.normalize()}}(),inverse:function(){return this.conjugate().normalize()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(a){return this._x*a._x+this._y*a._y+this._z*a._z+this._w*a._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();return 0===a?(this._x=0,this._y=0,this._z=0,this._w=1):(a=1/a,this._x=this._x*a,this._y=this._y*a,this._z=this._z*a,this._w=this._w*a),this.onChangeCallback(),this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},premultiply:function(a){return this.multiplyQuaternions(a,this)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z,f=a._w,g=b._x,h=b._y,i=b._z,j=b._w;return this._x=c*j+f*g+d*i-e*h,this._y=d*j+f*h+e*g-c*i,this._z=e*j+f*i+c*h-d*g,this._w=f*j-c*g-d*h-e*i,this.onChangeCallback(),this},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z;if(g<0?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a),g>=1)return this._w=f,this._x=c,this._y=d,this._z=e,this;var h=Math.sqrt(1-g*g);if(Math.abs(h)<.001)return this._w=.5*(f+this._w),this._x=.5*(c+this._x),this._y=.5*(d+this._y),this._z=.5*(e+this._z),this;var i=Math.atan2(h,g),j=Math.sin((1-b)*i)/h,k=Math.sin(b*i)/h;return this._w=f*j+this._w*k,this._x=c*j+this._x*k,this._y=d*j+this._y*k,this._z=e*j+this._z*k,this.onChangeCallback(),this},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a,b){return void 0===b&&(b=0),this._x=a[b],this._y=a[b+1],this._z=a[b+2],this._w=a[b+3],this.onChangeCallback(),this},toArray:function(a,b){return void 0===a&&(a=[]),void 0===b&&(b=0),a[b]=this._x,a[b+1]=this._y,a[b+2]=this._z,a[b+3]=this._w,a},onChange:function(a){return this.onChangeCallback=a,this},onChangeCallback:function(){}},Object.assign(Ab,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h=c[d+0],i=c[d+1],j=c[d+2],k=c[d+3],l=e[f+0],m=e[f+1],n=e[f+2],o=e[f+3];if(k!==o||h!==l||i!==m||j!==n){var p=1-g,q=h*l+i*m+j*n+k*o,r=q>=0?1:-1,s=1-q*q;if(s>Number.EPSILON){var t=Math.sqrt(s),u=Math.atan2(t,q*r);p=Math.sin(p*u)/t,g=Math.sin(g*u)/t}var v=g*r;if(h=h*p+l*v,i=i*p+m*v,j=j*p+n*v,k=k*p+o*v,p===1-g){var w=1/Math.sqrt(h*h+i*i+j*j+k*k);h*=w,i*=w,j*=w,k*=w}}a[b]=h,a[b+1]=i,a[b+2]=j,a[b+3]=k}}),Bb.prototype={constructor:Bb,isVector3:!0,set:function(a,b,c){return this.x=a,this.y=b,this.z=c,this},setScalar:function(a){return this.x=a,this.y=a,this.z=a,this},setX:function(a){return this.x=a,this},setY:function(a){return this.y=a,this},setZ:function(a){return this.z=a,this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw new Error("index is out of range: "+a)}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+a)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this},add:function(a,b){return void 0!==b?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b)):(this.x+=a.x,this.y+=a.y,this.z+=a.z,this)},addScalar:function(a){return this.x+=a,this.y+=a,this.z+=a,this},addVectors:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this},addScaledVector:function(a,b){return this.x+=a.x*b,this.y+=a.y*b,this.z+=a.z*b,this},sub:function(a,b){return void 0!==b?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b)):(this.x-=a.x,this.y-=a.y,this.z-=a.z,this)},subScalar:function(a){return this.x-=a,this.y-=a,this.z-=a,this},subVectors:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a,b)):(this.x*=a.x,this.y*=a.y,this.z*=a.z,this)},multiplyScalar:function(a){return isFinite(a)?(this.x*=a,this.y*=a,this.z*=a):(this.x=0,this.y=0,this.z=0),this},multiplyVectors:function(a,b){return this.x=a.x*b.x,this.y=a.y*b.y,this.z=a.z*b.z,this},applyEuler:function(){var a;return function(c){return(c&&c.isEuler)===!1&&console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),void 0===a&&(a=new Ab),this.applyQuaternion(a.setFromEuler(c))}}(),applyAxisAngle:function(){var a;return function(c,d){return void 0===a&&(a=new Ab),this.applyQuaternion(a.setFromAxisAngle(c,d))}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[3]*c+e[6]*d,this.y=e[1]*b+e[4]*c+e[7]*d,this.z=e[2]*b+e[5]*c+e[8]*d,this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;this.x=e[0]*b+e[4]*c+e[8]*d+e[12],this.y=e[1]*b+e[5]*c+e[9]*d+e[13],this.z=e[2]*b+e[6]*c+e[10]*d+e[14];var f=e[3]*b+e[7]*c+e[11]*d+e[15];return this.divideScalar(f)},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z,h=a.w,i=h*b+f*d-g*c,j=h*c+g*b-e*d,k=h*d+e*c-f*b,l=-e*b-f*c-g*d;return this.x=i*h+l*-e+j*-g-k*-f,this.y=j*h+l*-f+k*-e-i*-g,this.z=k*h+l*-g+i*-f-j*-e,this},project:function(){var a;return function(c){return void 0===a&&(a=new Cb),a.multiplyMatrices(c.projectionMatrix,a.getInverse(c.matrixWorld)),this.applyMatrix4(a)}}(),unproject:function(){var a;return function(c){return void 0===a&&(a=new Cb),a.multiplyMatrices(c.matrixWorld,a.getInverse(c.projectionMatrix)),this.applyMatrix4(a)}}(),transformDirection:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[4]*c+e[8]*d,this.y=e[1]*b+e[5]*c+e[9]*d,this.z=e[2]*b+e[6]*c+e[10]*d,this.normalize()},divide:function(a){return this.x/=a.x,this.y/=a.y,this.z/=a.z,this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){return this.x=Math.min(this.x,a.x),this.y=Math.min(this.y,a.y),this.z=Math.min(this.z,a.z),this},max:function(a){return this.x=Math.max(this.x,a.x),this.y=Math.max(this.y,a.y),this.z=Math.max(this.z,a.z),this},clamp:function(a,b){return this.x=Math.max(a.x,Math.min(b.x,this.x)),this.y=Math.max(a.y,Math.min(b.y,this.y)),this.z=Math.max(a.z,Math.min(b.z,this.z)),this},clampScalar:function(){var a,b;return function(d,e){return void 0===a&&(a=new Bb,b=new Bb),a.set(d,d,d),b.set(e,e,e),this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.multiplyScalar(Math.max(a,Math.min(b,c))/c)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.multiplyScalar(a/this.length())},lerp:function(a,b){return this.x+=(a.x-this.x)*b,this.y+=(a.y-this.y)*b,this.z+=(a.z-this.z)*b,this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},cross:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;return this.x=d*a.z-e*a.y,this.y=e*a.x-c*a.z,this.z=c*a.y-d*a.x,this},crossVectors:function(a,b){var c=a.x,d=a.y,e=a.z,f=b.x,g=b.y,h=b.z;return this.x=d*h-e*g,this.y=e*f-c*h,this.z=c*g-d*f,this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(){var a;return function(c){return void 0===a&&(a=new Bb),a.copy(this).projectOnVector(c),this.sub(a)}}(),reflect:function(){var a;return function(c){return void 0===a&&(a=new Bb),this.sub(a.copy(c).multiplyScalar(2*this.dot(c)))}}(),angleTo:function(a){var b=this.dot(a)/Math.sqrt(this.lengthSq()*a.lengthSq());return Math.acos(tb.clamp(b,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y,d=this.z-a.z;return b*b+c*c+d*d},distanceToManhattan:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)+Math.abs(this.z-a.z)},setFromSpherical:function(a){var b=Math.sin(a.phi)*a.radius;return this.x=b*Math.sin(a.theta),this.y=Math.cos(a.phi)*a.radius,this.z=b*Math.cos(a.theta),this},setFromCylindrical:function(a){return this.x=a.radius*Math.sin(a.theta),this.y=a.y,this.z=a.radius*Math.cos(a.theta),this},setFromMatrixPosition:function(a){return this.setFromMatrixColumn(a,3)},setFromMatrixScale:function(a){var b=this.setFromMatrixColumn(a,0).length(),c=this.setFromMatrixColumn(a,1).length(),d=this.setFromMatrixColumn(a,2).length();return this.x=b,this.y=c,this.z=d,this},setFromMatrixColumn:function(a,b){if("number"==typeof a){console.warn("THREE.Vector3: setFromMatrixColumn now expects ( matrix, index ).");var c=a;a=b,b=c}return this.fromArray(a.elements,4*b)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){return void 0===b&&(b=0),this.x=a[b],this.y=a[b+1],this.z=a[b+2],this},toArray:function(a,b){return void 0===a&&(a=[]),void 0===b&&(b=0),a[b]=this.x,a[b+1]=this.y,a[b+2]=this.z,a},fromBufferAttribute:function(a,b,c){return void 0!==c&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=a.getX(b),this.y=a.getY(b),this.z=a.getZ(b),this}},Cb.prototype={constructor:Cb,isMatrix4:!0,set:function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){var q=this.elements;return q[0]=a,q[4]=b,q[8]=c,q[12]=d,q[1]=e,q[5]=f,q[9]=g,q[13]=h,q[2]=i,q[6]=j,q[10]=k,q[14]=l,q[3]=m,q[7]=n,q[11]=o,q[15]=p,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new Cb).fromArray(this.elements)},copy:function(a){return this.elements.set(a.elements),this},copyPosition:function(a){var b=this.elements,c=a.elements;return b[12]=c[12],b[13]=c[13],b[14]=c[14],this},extractBasis:function(a,b,c){return a.setFromMatrixColumn(this,0),b.setFromMatrixColumn(this,1),c.setFromMatrixColumn(this,2),this},makeBasis:function(a,b,c){return this.set(a.x,b.x,c.x,0,a.y,b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1),this},extractRotation:function(){var a;return function(c){void 0===a&&(a=new Bb);var d=this.elements,e=c.elements,f=1/a.setFromMatrixColumn(c,0).length(),g=1/a.setFromMatrixColumn(c,1).length(),h=1/a.setFromMatrixColumn(c,2).length();return d[0]=e[0]*f,d[1]=e[1]*f,d[2]=e[2]*f,d[4]=e[4]*g,d[5]=e[5]*g,d[6]=e[6]*g,d[8]=e[8]*h,d[9]=e[9]*h,d[10]=e[10]*h,this}}(),makeRotationFromEuler:function(a){(a&&a.isEuler)===!1&&console.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c),g=Math.sin(c),h=Math.cos(d),i=Math.sin(d),j=Math.cos(e),k=Math.sin(e);if("XYZ"===a.order){var l=f*j,m=f*k,n=g*j,o=g*k;b[0]=h*j,b[4]=-h*k,b[8]=i,b[1]=m+n*i,b[5]=l-o*i,b[9]=-g*h,b[2]=o-l*i,b[6]=n+m*i,b[10]=f*h}else if("YXZ"===a.order){var p=h*j,q=h*k,r=i*j,s=i*k;b[0]=p+s*g,b[4]=r*g-q,b[8]=f*i,b[1]=f*k,b[5]=f*j,b[9]=-g,b[2]=q*g-r,b[6]=s+p*g,b[10]=f*h}else if("ZXY"===a.order){var p=h*j,q=h*k,r=i*j,s=i*k;b[0]=p-s*g,b[4]=-f*k,b[8]=r+q*g,b[1]=q+r*g,b[5]=f*j,b[9]=s-p*g,b[2]=-f*i,b[6]=g,b[10]=f*h}else if("ZYX"===a.order){var l=f*j,m=f*k,n=g*j,o=g*k;b[0]=h*j,b[4]=n*i-m,b[8]=l*i+o,b[1]=h*k,b[5]=o*i+l,b[9]=m*i-n,b[2]=-i,b[6]=g*h,b[10]=f*h}else if("YZX"===a.order){var t=f*h,u=f*i,v=g*h,w=g*i;b[0]=h*j,b[4]=w-t*k,b[8]=v*k+u,b[1]=k,b[5]=f*j,b[9]=-g*j,b[2]=-i*j,b[6]=u*k+v,b[10]=t-w*k}else if("XZY"===a.order){var t=f*h,u=f*i,v=g*h,w=g*i;b[0]=h*j,b[4]=-k,b[8]=i*j,b[1]=t*k+w,b[5]=f*j,b[9]=u*k-v,b[2]=v*k-u,b[6]=g*j,b[10]=w*k+t}return b[3]=0,b[7]=0,b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,this},makeRotationFromQuaternion:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z,f=a.w,g=c+c,h=d+d,i=e+e,j=c*g,k=c*h,l=c*i,m=d*h,n=d*i,o=e*i,p=f*g,q=f*h,r=f*i;return b[0]=1-(m+o),b[4]=k-r,b[8]=l+q,b[1]=k+r,b[5]=1-(j+o),b[9]=n-p,b[2]=l-q,b[6]=n+p,b[10]=1-(j+m),b[3]=0,b[7]=0,b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,this},lookAt:function(){var a,b,c;return function(e,f,g){void 0===a&&(a=new Bb,b=new Bb,c=new Bb);var h=this.elements;return c.subVectors(e,f).normalize(),0===c.lengthSq()&&(c.z=1),a.crossVectors(g,c).normalize(),0===a.lengthSq()&&(c.z+=1e-4,a.crossVectors(g,c).normalize()),b.crossVectors(c,a),h[0]=a.x,h[4]=b.x,h[8]=c.x,h[1]=a.y,h[5]=b.y,h[9]=c.y,h[2]=a.z,h[6]=b.z,h[10]=c.z,this}}(),multiply:function(a,b){return void 0!==b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements,e=this.elements,f=c[0],g=c[4],h=c[8],i=c[12],j=c[1],k=c[5],l=c[9],m=c[13],n=c[2],o=c[6],p=c[10],q=c[14],r=c[3],s=c[7],t=c[11],u=c[15],v=d[0],w=d[4],x=d[8],y=d[12],z=d[1],A=d[5],B=d[9],C=d[13],D=d[2],E=d[6],F=d[10],G=d[14],H=d[3],I=d[7],J=d[11],K=d[15];return e[0]=f*v+g*z+h*D+i*H,e[4]=f*w+g*A+h*E+i*I,e[8]=f*x+g*B+h*F+i*J,e[12]=f*y+g*C+h*G+i*K,e[1]=j*v+k*z+l*D+m*H,e[5]=j*w+k*A+l*E+m*I,e[9]=j*x+k*B+l*F+m*J,e[13]=j*y+k*C+l*G+m*K,e[2]=n*v+o*z+p*D+q*H,e[6]=n*w+o*A+p*E+q*I,e[10]=n*x+o*B+p*F+q*J,e[14]=n*y+o*C+p*G+q*K,e[3]=r*v+s*z+t*D+u*H,e[7]=r*w+s*A+t*E+u*I,e[11]=r*x+s*B+t*F+u*J,e[15]=r*y+s*C+t*G+u*K,this},multiplyToArray:function(a,b,c){var d=this.elements;return this.multiplyMatrices(a,b),c[0]=d[0],c[1]=d[1],c[2]=d[2],c[3]=d[3],c[4]=d[4],c[5]=d[5],c[6]=d[6],c[7]=d[7],c[8]=d[8],c[9]=d[9],c[10]=d[10],c[11]=d[11],c[12]=d[12],c[13]=d[13],c[14]=d[14],c[15]=d[15],this},multiplyScalar:function(a){var b=this.elements;return b[0]*=a,b[4]*=a,b[8]*=a,b[12]*=a,b[1]*=a,b[5]*=a,b[9]*=a,b[13]*=a,b[2]*=a,b[6]*=a,b[10]*=a,b[14]*=a,b[3]*=a,b[7]*=a,b[11]*=a,b[15]*=a,this},applyToBufferAttribute:function(){var a;return function(c){void 0===a&&(a=new Bb);for(var d=0,e=c.count;d>16&255)/255,this.g=(a>>8&255)/255,this.b=(255&a)/255,this},setRGB:function(a,b,c){return this.r=a,this.g=b,this.b=c,this},setHSL:function(){function a(a,b,c){return c<0&&(c+=1),c>1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+6*(b-a)*(2/3-c):a}return function(c,d,e){if(c=tb.euclideanModulo(c,1),d=tb.clamp(d,0,1),e=tb.clamp(e,0,1),0===d)this.r=this.g=this.b=e;else{var f=e<=.5?e*(1+d):e+d-e*d,g=2*e-f;this.r=a(g,f,c+1/3),this.g=a(g,f,c),this.b=a(g,f,c-1/3)}return this}}(),setStyle:function(a){function b(b){void 0!==b&&parseFloat(b)<1&&console.warn("THREE.Color: Alpha component of "+a+" will be ignored.")}var c;if(c=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(a)){var d,e=c[1],f=c[2];switch(e){case"rgb":case"rgba":if(d=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(f))return this.r=Math.min(255,parseInt(d[1],10))/255,this.g=Math.min(255,parseInt(d[2],10))/255,this.b=Math.min(255,parseInt(d[3],10))/255,b(d[5]),this;if(d=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(f))return this.r=Math.min(100,parseInt(d[1],10))/100,this.g=Math.min(100,parseInt(d[2],10))/100,this.b=Math.min(100,parseInt(d[3],10))/100,b(d[5]),this;break;case"hsl":case"hsla":if(d=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(f)){var g=parseFloat(d[1])/360,h=parseInt(d[2],10)/100,i=parseInt(d[3],10)/100;return b(d[5]),this.setHSL(g,h,i)}}}else if(c=/^\#([A-Fa-f0-9]+)$/.exec(a)){var j=c[1],k=j.length;if(3===k)return this.r=parseInt(j.charAt(0)+j.charAt(0),16)/255,this.g=parseInt(j.charAt(1)+j.charAt(1),16)/255,this.b=parseInt(j.charAt(2)+j.charAt(2),16)/255,this;if(6===k)return this.r=parseInt(j.charAt(0)+j.charAt(1),16)/255,this.g=parseInt(j.charAt(2)+j.charAt(3),16)/255,this.b=parseInt(j.charAt(4)+j.charAt(5),16)/255,this}if(a&&a.length>0){var j=se[a];void 0!==j?this.setHex(j):console.warn("THREE.Color: Unknown color "+a)}return this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(a){return this.r=a.r,this.g=a.g,this.b=a.b,this},copyGammaToLinear:function(a,b){return void 0===b&&(b=2),this.r=Math.pow(a.r,b),this.g=Math.pow(a.g,b),this.b=Math.pow(a.b,b),this},copyLinearToGamma:function(a,b){void 0===b&&(b=2);var c=b>0?1/b:1;return this.r=Math.pow(a.r,c),this.g=Math.pow(a.g,c),this.b=Math.pow(a.b,c),this},convertGammaToLinear:function(){var a=this.r,b=this.g,c=this.b;return this.r=a*a,this.g=b*b,this.b=c*c,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(a){var h,i,b=a||{h:0,s:0,l:0},c=this.r,d=this.g,e=this.b,f=Math.max(c,d,e),g=Math.min(c,d,e),j=(g+f)/2;if(g===f)h=0,i=0;else{var k=f-g;switch(i=j<=.5?k/(f+g):k/(2-f-g),f){case c:h=(d-e)/k+(dthis.max.x||a.ythis.max.y)},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y},getParameter:function(a,b){var c=b||new ub;return c.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(a){return!(a.max.xthis.max.x||a.max.ythis.max.y)},clampPoint:function(a,b){var c=b||new ub;return c.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new ub;return function(c){var d=a.copy(c).clamp(this.min,this.max);return d.sub(c).length()}}(),intersect:function(a){return this.min.max(a.min),this.max.min(a.max),this},union:function(a){return this.min.min(a.min),this.max.max(a.max),this},translate:function(a){return this.min.add(a),this.max.add(a),this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}};var ze=0;Ae.prototype={constructor:Ae,isMaterial:!0,get needsUpdate(){return this._needsUpdate},set needsUpdate(a){a===!0&&this.update(),this._needsUpdate=a},setValues:function(a){if(void 0!==a)for(var b in a){var c=a[b];if(void 0!==c){var d=this[b];void 0!==d?d&&d.isColor?d.set(c):d&&d.isVector3&&c&&c.isVector3?d.copy(c):"overdraw"===b?this[b]=Number(c):this[b]=c:console.warn("THREE."+this.type+": '"+b+"' is not a property of this material.")}else console.warn("THREE.Material: '"+b+"' parameter is undefined.")}},toJSON:function(a){function d(a){var b=[];for(var c in a){var d=a[c];delete d.metadata,b.push(d)}return b}var b=void 0===a;b&&(a={textures:{},images:{}});var c={metadata:{version:4.4,type:"Material",generator:"Material.toJSON"}};if(c.uuid=this.uuid,c.type=this.type,""!==this.name&&(c.name=this.name),this.color&&this.color.isColor&&(c.color=this.color.getHex()),void 0!==this.roughness&&(c.roughness=this.roughness),void 0!==this.metalness&&(c.metalness=this.metalness),this.emissive&&this.emissive.isColor&&(c.emissive=this.emissive.getHex()),this.specular&&this.specular.isColor&&(c.specular=this.specular.getHex()),void 0!==this.shininess&&(c.shininess=this.shininess),void 0!==this.clearCoat&&(c.clearCoat=this.clearCoat),void 0!==this.clearCoatRoughness&&(c.clearCoatRoughness=this.clearCoatRoughness),this.map&&this.map.isTexture&&(c.map=this.map.toJSON(a).uuid),this.alphaMap&&this.alphaMap.isTexture&&(c.alphaMap=this.alphaMap.toJSON(a).uuid),this.lightMap&&this.lightMap.isTexture&&(c.lightMap=this.lightMap.toJSON(a).uuid),this.bumpMap&&this.bumpMap.isTexture&&(c.bumpMap=this.bumpMap.toJSON(a).uuid,c.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(c.normalMap=this.normalMap.toJSON(a).uuid,c.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(c.displacementMap=this.displacementMap.toJSON(a).uuid,c.displacementScale=this.displacementScale,c.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(c.roughnessMap=this.roughnessMap.toJSON(a).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(c.metalnessMap=this.metalnessMap.toJSON(a).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(c.emissiveMap=this.emissiveMap.toJSON(a).uuid),this.specularMap&&this.specularMap.isTexture&&(c.specularMap=this.specularMap.toJSON(a).uuid),this.envMap&&this.envMap.isTexture&&(c.envMap=this.envMap.toJSON(a).uuid,c.reflectivity=this.reflectivity),this.gradientMap&&this.gradientMap.isTexture&&(c.gradientMap=this.gradientMap.toJSON(a).uuid),void 0!==this.size&&(c.size=this.size),void 0!==this.sizeAttenuation&&(c.sizeAttenuation=this.sizeAttenuation),this.blending!==w&&(c.blending=this.blending),this.shading!==r&&(c.shading=this.shading),this.side!==n&&(c.side=this.side),this.vertexColors!==s&&(c.vertexColors=this.vertexColors),this.opacity<1&&(c.opacity=this.opacity),this.transparent===!0&&(c.transparent=this.transparent),c.depthFunc=this.depthFunc,c.depthTest=this.depthTest,c.depthWrite=this.depthWrite,this.alphaTest>0&&(c.alphaTest=this.alphaTest),this.premultipliedAlpha===!0&&(c.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(c.wireframe=this.wireframe),this.wireframeLinewidth>1&&(c.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(c.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(c.wireframeLinejoin=this.wireframeLinejoin),c.skinning=this.skinning,c.morphTargets=this.morphTargets,b){var e=d(a.textures),f=d(a.images);e.length>0&&(c.textures=e),f.length>0&&(c.images=f)}return c},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.name=a.name,this.fog=a.fog,this.lights=a.lights,this.blending=a.blending,this.side=a.side,this.shading=a.shading,this.vertexColors=a.vertexColors,this.opacity=a.opacity,this.transparent=a.transparent,this.blendSrc=a.blendSrc,this.blendDst=a.blendDst,this.blendEquation=a.blendEquation,this.blendSrcAlpha=a.blendSrcAlpha,this.blendDstAlpha=a.blendDstAlpha,this.blendEquationAlpha=a.blendEquationAlpha,this.depthFunc=a.depthFunc,this.depthTest=a.depthTest,this.depthWrite=a.depthWrite,this.colorWrite=a.colorWrite,this.precision=a.precision,this.polygonOffset=a.polygonOffset,this.polygonOffsetFactor=a.polygonOffsetFactor,this.polygonOffsetUnits=a.polygonOffsetUnits,this.alphaTest=a.alphaTest,this.premultipliedAlpha=a.premultipliedAlpha,this.overdraw=a.overdraw,this.visible=a.visible,this.clipShadows=a.clipShadows,this.clipIntersection=a.clipIntersection;var b=a.clippingPlanes,c=null;if(null!==b){var d=b.length;c=new Array(d);for(var e=0;e!==d;++e)c[e]=b[e].clone()}return this.clippingPlanes=c,this},update:function(){this.dispatchEvent({type:"update"})},dispose:function(){this.dispatchEvent({type:"dispose"})}},Object.assign(Ae.prototype,b.prototype),Be.prototype=Object.create(Ae.prototype),Be.prototype.constructor=Be,Be.prototype.isShaderMaterial=!0,Be.prototype.copy=function(a){return Ae.prototype.copy.call(this,a),this.fragmentShader=a.fragmentShader,this.vertexShader=a.vertexShader,this.uniforms=pc.clone(a.uniforms),this.defines=a.defines,this.wireframe=a.wireframe,this.wireframeLinewidth=a.wireframeLinewidth,this.lights=a.lights,this.clipping=a.clipping,this.skinning=a.skinning,this.morphTargets=a.morphTargets,this.morphNormals=a.morphNormals,this.extensions=a.extensions,this},Be.prototype.toJSON=function(a){var b=Ae.prototype.toJSON.call(this,a);return b.uniforms=this.uniforms,b.vertexShader=this.vertexShader,b.fragmentShader=this.fragmentShader,b},Ce.prototype=Object.create(Ae.prototype),Ce.prototype.constructor=Ce,Ce.prototype.isMeshDepthMaterial=!0,Ce.prototype.copy=function(a){return Ae.prototype.copy.call(this,a),this.depthPacking=a.depthPacking,this.skinning=a.skinning,this.morphTargets=a.morphTargets,this.map=a.map,this.alphaMap=a.alphaMap,this.displacementMap=a.displacementMap,this.displacementScale=a.displacementScale,this.displacementBias=a.displacementBias,this.wireframe=a.wireframe,this.wireframeLinewidth=a.wireframeLinewidth,this},De.prototype={constructor:De,isBox3:!0,set:function(a,b){return this.min.copy(a),this.max.copy(b),this},setFromArray:function(a){for(var b=+(1/0),c=+(1/0),d=+(1/0),e=-(1/0),f=-(1/0),g=-(1/0),h=0,i=a.length;he&&(e=j),k>f&&(f=k),l>g&&(g=l)}return this.min.set(b,c,d),this.max.set(e,f,g),this},setFromBufferAttribute:function(a){for(var b=+(1/0),c=+(1/0),d=+(1/0),e=-(1/0),f=-(1/0),g=-(1/0),h=0,i=a.count;he&&(e=j),k>f&&(f=k),l>g&&(g=l)}return this.min.set(b,c,d),this.max.set(e,f,g),this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;bthis.max.x||a.ythis.max.y||a.zthis.max.z)},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<=this.max.z},getParameter:function(a,b){var c=b||new Bb;return c.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(a){return!(a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z)},intersectsSphere:function(){var a;return function(c){return void 0===a&&(a=new Bb),this.clampPoint(c.center,a),a.distanceToSquared(c.center)<=c.radius*c.radius}}(),intersectsPlane:function(a){var b,c;return a.normal.x>0?(b=a.normal.x*this.min.x,c=a.normal.x*this.max.x):(b=a.normal.x*this.max.x,c=a.normal.x*this.min.x),a.normal.y>0?(b+=a.normal.y*this.min.y,c+=a.normal.y*this.max.y):(b+=a.normal.y*this.max.y,c+=a.normal.y*this.min.y),a.normal.z>0?(b+=a.normal.z*this.min.z,c+=a.normal.z*this.max.z):(b+=a.normal.z*this.max.z,c+=a.normal.z*this.min.z),b<=a.constant&&c>=a.constant},clampPoint:function(a,b){var c=b||new Bb;return c.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new Bb;return function(c){var d=a.copy(c).clamp(this.min,this.max);return d.sub(c).length()}}(),getBoundingSphere:function(){var a=new Bb;return function(c){var d=c||new Ee;return this.getCenter(d.center),d.radius=.5*this.getSize(a).length(),d}}(),intersect:function(a){return this.min.max(a.min),this.max.min(a.max),this.isEmpty()&&this.makeEmpty(),this},union:function(a){return this.min.min(a.min),this.max.max(a.max),this},applyMatrix4:function(){var a=[new Bb,new Bb,new Bb,new Bb,new Bb,new Bb,new Bb,new Bb];return function(c){return this.isEmpty()?this:(a[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(c),a[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(c),a[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(c),a[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(c),a[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(c),a[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(c),a[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(c),a[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(c),this.setFromPoints(a),this)}}(),translate:function(a){return this.min.add(a),this.max.add(a),this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}},Ee.prototype={constructor:Ee,set:function(a,b){return this.center.copy(a),this.radius=b,this},setFromPoints:function(){var a;return function(c,d){void 0===a&&(a=new De);var e=this.center;void 0!==d?e.copy(d):a.setFromPoints(c).getCenter(e);for(var f=0,g=0,h=c.length;gthis.radius*this.radius&&(d.sub(this.center).normalize(),d.multiplyScalar(this.radius).add(this.center)),d},getBoundingBox:function(a){var b=a||new De;return b.set(this.center,this.center),b.expandByScalar(this.radius),b},applyMatrix4:function(a){return this.center.applyMatrix4(a),this.radius=this.radius*a.getMaxScaleOnAxis(),this},translate:function(a){return this.center.add(a),this},equals:function(a){return a.center.equals(this.center)&&a.radius===this.radius}},Fe.prototype={constructor:Fe,isMatrix3:!0,set:function(a,b,c,d,e,f,g,h,i){var j=this.elements;return j[0]=a,j[1]=d,j[2]=g,j[3]=b,j[4]=e,j[5]=h,j[6]=c,j[7]=f,j[8]=i,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(a){var b=a.elements;return this.set(b[0],b[3],b[6],b[1],b[4],b[7],b[2],b[5],b[8]),this},setFromMatrix4:function(a){var b=a.elements;return this.set(b[0],b[4],b[8],b[1],b[5],b[9],b[2],b[6],b[10]),this},applyToBufferAttribute:function(){var a;return function(c){void 0===a&&(a=new Bb);for(var d=0,e=c.count;d1))return e.copy(f).multiplyScalar(h).add(c.start)}else if(0===this.distanceToPoint(c.start))return e.copy(c.start)}}(),intersectsLine:function(a){var b=this.distanceToPoint(a.start),c=this.distanceToPoint(a.end);return b<0&&c>0||c<0&&b>0},intersectsBox:function(a){return a.intersectsPlane(this)},intersectsSphere:function(a){return a.intersectsPlane(this)},coplanarPoint:function(a){var b=a||new Bb;return b.copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var a=new Bb,b=new Fe;return function(d,e){var f=this.coplanarPoint(a).applyMatrix4(d),g=e||b.getNormalMatrix(d),h=this.normal.applyMatrix3(g).normalize();return this.constant=-f.dot(h), this}}(),translate:function(a){return this.constant=this.constant-a.dot(this.normal),this},equals:function(a){return a.normal.equals(this.normal)&&a.constant===this.constant}},He.prototype={constructor:He,set:function(a,b,c,d,e,f){var g=this.planes;return g[0].copy(a),g[1].copy(b),g[2].copy(c),g[3].copy(d),g[4].copy(e),g[5].copy(f),this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){for(var b=this.planes,c=0;c<6;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements,d=c[0],e=c[1],f=c[2],g=c[3],h=c[4],i=c[5],j=c[6],k=c[7],l=c[8],m=c[9],n=c[10],o=c[11],p=c[12],q=c[13],r=c[14],s=c[15];return b[0].setComponents(g-d,k-h,o-l,s-p).normalize(),b[1].setComponents(g+d,k+h,o+l,s+p).normalize(),b[2].setComponents(g+e,k+i,o+m,s+q).normalize(),b[3].setComponents(g-e,k-i,o-m,s-q).normalize(),b[4].setComponents(g-f,k-j,o-n,s-r).normalize(),b[5].setComponents(g+f,k+j,o+n,s+r).normalize(),this},intersectsObject:function(){var a=new Ee;return function(c){var d=c.geometry;return null===d.boundingSphere&&d.computeBoundingSphere(),a.copy(d.boundingSphere).applyMatrix4(c.matrixWorld),this.intersectsSphere(a)}}(),intersectsSprite:function(){var a=new Ee;return function(c){return a.center.set(0,0,0),a.radius=.7071067811865476,a.applyMatrix4(c.matrixWorld),this.intersectsSphere(a)}}(),intersectsSphere:function(a){for(var b=this.planes,c=a.center,d=-a.radius,e=0;e<6;e++){var f=b[e].distanceToPoint(c);if(f0?d.min.x:d.max.x,b.x=g.normal.x>0?d.max.x:d.min.x,a.y=g.normal.y>0?d.min.y:d.max.y,b.y=g.normal.y>0?d.max.y:d.min.y,a.z=g.normal.z>0?d.min.z:d.max.z,b.z=g.normal.z>0?d.max.z:d.min.z;var h=g.distanceToPoint(a),i=g.distanceToPoint(b);if(h<0&&i<0)return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;c<6;c++)if(b[c].distanceToPoint(a)<0)return!1;return!0}},Je.prototype={constructor:Je,set:function(a,b){return this.origin.copy(a),this.direction.copy(b),this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){return this.origin.copy(a.origin),this.direction.copy(a.direction),this},at:function(a,b){var c=b||new Bb;return c.copy(this.direction).multiplyScalar(a).add(this.origin)},lookAt:function(a){return this.direction.copy(a).sub(this.origin).normalize(),this},recast:function(){var a=new Bb;return function(c){return this.origin.copy(this.at(c,a)),this}}(),closestPointToPoint:function(a,b){var c=b||new Bb;c.subVectors(a,this.origin);var d=c.dot(this.direction);return d<0?c.copy(this.origin):c.copy(this.direction).multiplyScalar(d).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new Bb;return function(c){var d=a.subVectors(c,this.origin).dot(this.direction);return d<0?this.origin.distanceToSquared(c):(a.copy(this.direction).multiplyScalar(d).add(this.origin),a.distanceToSquared(c))}}(),distanceSqToSegment:function(){var a=new Bb,b=new Bb,c=new Bb;return function(e,f,g,h){a.copy(e).add(f).multiplyScalar(.5),b.copy(f).sub(e).normalize(),c.copy(this.origin).sub(a);var o,p,q,r,i=.5*e.distanceTo(f),j=-this.direction.dot(b),k=c.dot(this.direction),l=-c.dot(b),m=c.lengthSq(),n=Math.abs(1-j*j);if(n>0)if(o=j*l-k,p=j*k-l,r=i*n,o>=0)if(p>=-r)if(p<=r){var s=1/n;o*=s,p*=s,q=o*(o+j*p+2*k)+p*(j*o+p+2*l)+m}else p=i,o=Math.max(0,-(j*p+k)),q=-o*o+p*(p+2*l)+m;else p=-i,o=Math.max(0,-(j*p+k)),q=-o*o+p*(p+2*l)+m;else p<=-r?(o=Math.max(0,-(-j*i+k)),p=o>0?-i:Math.min(Math.max(-i,-l),i),q=-o*o+p*(p+2*l)+m):p<=r?(o=0,p=Math.min(Math.max(-i,-l),i),q=p*(p+2*l)+m):(o=Math.max(0,-(j*i+k)),p=o>0?i:Math.min(Math.max(-i,-l),i),q=-o*o+p*(p+2*l)+m);else p=j>0?-i:i,o=Math.max(0,-(j*p+k)),q=-o*o+p*(p+2*l)+m;return g&&g.copy(this.direction).multiplyScalar(o).add(this.origin),h&&h.copy(b).multiplyScalar(p).add(a),q}}(),intersectSphere:function(){var a=new Bb;return function(c,d){a.subVectors(c.center,this.origin);var e=a.dot(this.direction),f=a.dot(a)-e*e,g=c.radius*c.radius;if(f>g)return null;var h=Math.sqrt(g-f),i=e-h,j=e+h;return i<0&&j<0?null:i<0?this.at(j,d):this.at(i,d)}}(),intersectsSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0===b)return 0===a.distanceToPoint(this.origin)?0:null;var c=-(this.origin.dot(a.normal)+a.constant)/b;return c>=0?c:null},intersectPlane:function(a,b){var c=this.distanceToPlane(a);return null===c?null:this.at(c,b)},intersectsPlane:function(a){var b=a.distanceToPoint(this.origin);if(0===b)return!0;var c=a.normal.dot(this.direction);return c*b<0},intersectBox:function(a,b){var c,d,e,f,g,h,i=1/this.direction.x,j=1/this.direction.y,k=1/this.direction.z,l=this.origin;return i>=0?(c=(a.min.x-l.x)*i,d=(a.max.x-l.x)*i):(c=(a.max.x-l.x)*i,d=(a.min.x-l.x)*i),j>=0?(e=(a.min.y-l.y)*j,f=(a.max.y-l.y)*j):(e=(a.max.y-l.y)*j,f=(a.min.y-l.y)*j),c>f||e>d?null:((e>c||c!==c)&&(c=e),(f=0?(g=(a.min.z-l.z)*k,h=(a.max.z-l.z)*k):(g=(a.max.z-l.z)*k,h=(a.min.z-l.z)*k),c>h||g>d?null:((g>c||c!==c)&&(c=g),(h=0?c:d,b)))},intersectsBox:function(){var a=new Bb;return function(c){return null!==this.intersectBox(c,a)}}(),intersectTriangle:function(){var a=new Bb,b=new Bb,c=new Bb,d=new Bb;return function(f,g,h,i,j){b.subVectors(g,f),c.subVectors(h,f),d.crossVectors(b,c);var l,k=this.direction.dot(d);if(k>0){if(i)return null;l=1}else{if(!(k<0))return null;l=-1,k=-k}a.subVectors(this.origin,f);var m=l*this.direction.dot(c.crossVectors(a,c));if(m<0)return null;var n=l*this.direction.dot(b.cross(a));if(n<0)return null;if(m+n>k)return null;var o=-l*a.dot(d);return o<0?null:this.at(o/k,j)}}(),applyMatrix4:function(a){return this.direction.add(this.origin).applyMatrix4(a),this.origin.applyMatrix4(a),this.direction.sub(this.origin),this.direction.normalize(),this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}},Ke.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],Ke.DefaultOrder="XYZ",Ke.prototype={constructor:Ke,isEuler:!0,get x(){return this._x},set x(a){this._x=a,this.onChangeCallback()},get y(){return this._y},set y(a){this._y=a,this.onChangeCallback()},get z(){return this._z},set z(a){this._z=a,this.onChangeCallback()},get order(){return this._order},set order(a){this._order=a,this.onChangeCallback()},set:function(a,b,c,d){return this._x=a,this._y=b,this._z=c,this._order=d||this._order,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(a){return this._x=a._x,this._y=a._y,this._z=a._z,this._order=a._order,this.onChangeCallback(),this},setFromRotationMatrix:function(a,b,c){var d=tb.clamp,e=a.elements,f=e[0],g=e[4],h=e[8],i=e[1],j=e[5],k=e[9],l=e[2],m=e[6],n=e[10];return b=b||this._order,"XYZ"===b?(this._y=Math.asin(d(h,-1,1)),Math.abs(h)<.99999?(this._x=Math.atan2(-k,n),this._z=Math.atan2(-g,f)):(this._x=Math.atan2(m,j),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(k,-1,1)),Math.abs(k)<.99999?(this._y=Math.atan2(h,n),this._z=Math.atan2(i,j)):(this._y=Math.atan2(-l,f),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(m,-1,1)),Math.abs(m)<.99999?(this._y=Math.atan2(-l,n),this._z=Math.atan2(-g,j)):(this._y=0,this._z=Math.atan2(i,f))):"ZYX"===b?(this._y=Math.asin(-d(l,-1,1)),Math.abs(l)<.99999?(this._x=Math.atan2(m,n),this._z=Math.atan2(i,f)):(this._x=0,this._z=Math.atan2(-g,j))):"YZX"===b?(this._z=Math.asin(d(i,-1,1)),Math.abs(i)<.99999?(this._x=Math.atan2(-k,j),this._y=Math.atan2(-l,f)):(this._x=0,this._y=Math.atan2(h,n))):"XZY"===b?(this._z=Math.asin(-d(g,-1,1)),Math.abs(g)<.99999?(this._x=Math.atan2(m,j),this._y=Math.atan2(h,f)):(this._x=Math.atan2(-k,n),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b),this._order=b,c!==!1&&this.onChangeCallback(),this},setFromQuaternion:function(){var a;return function(c,d,e){return void 0===a&&(a=new Cb),a.makeRotationFromQuaternion(c),this.setFromRotationMatrix(a,d,e)}}(),setFromVector3:function(a,b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(){var a=new Ab;return function(c){return a.setFromEuler(this),this.setFromQuaternion(a,c)}}(),equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){return this._x=a[0],this._y=a[1],this._z=a[2],void 0!==a[3]&&(this._order=a[3]),this.onChangeCallback(),this},toArray:function(a,b){return void 0===a&&(a=[]),void 0===b&&(b=0),a[b]=this._x,a[b+1]=this._y,a[b+2]=this._z,a[b+3]=this._order,a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new Bb(this._x,this._y,this._z)},onChange:function(a){return this.onChangeCallback=a,this},onChangeCallback:function(){}},Le.prototype={constructor:Le,set:function(a){this.mask=1<1){for(var b=0;b1)for(var b=0;b0){d.children=[];for(var e=0;e0&&(c.geometries=f),g.length>0&&(c.materials=g),h.length>0&&(c.textures=h),i.length>0&&(c.images=i)}return c.object=d,c},clone:function(a){return(new this.constructor).copy(this,a)},copy:function(a,b){if(void 0===b&&(b=!0),this.name=a.name,this.up.copy(a.up),this.position.copy(a.position),this.quaternion.copy(a.quaternion),this.scale.copy(a.scale),this.matrix.copy(a.matrix),this.matrixWorld.copy(a.matrixWorld),this.matrixAutoUpdate=a.matrixAutoUpdate,this.matrixWorldNeedsUpdate=a.matrixWorldNeedsUpdate,this.layers.mask=a.layers.mask,this.visible=a.visible,this.castShadow=a.castShadow,this.receiveShadow=a.receiveShadow,this.frustumCulled=a.frustumCulled,this.renderOrder=a.renderOrder,this.userData=JSON.parse(JSON.stringify(a.userData)),b===!0)for(var c=0;c0?g.multiplyScalar(1/Math.sqrt(h)):g.set(0,0,0)}}(),Pe.barycoordFromPoint=function(){var a=new Bb,b=new Bb,c=new Bb;return function(e,f,g,h,i){a.subVectors(h,f),b.subVectors(g,f),c.subVectors(e,f);var j=a.dot(a),k=a.dot(b),l=a.dot(c),m=b.dot(b),n=b.dot(c),o=j*m-k*k,p=i||new Bb;if(0===o)return p.set(-2,-1,-1);var q=1/o,r=(m*l-k*n)*q,s=(j*n-k*l)*q;return p.set(1-r-s,s,r)}}(),Pe.containsPoint=function(){var a=new Bb;return function(c,d,e,f){var g=Pe.barycoordFromPoint(c,d,e,f,a);return g.x>=0&&g.y>=0&&g.x+g.y<=1}}(),Pe.prototype={constructor:Pe,set:function(a,b,c){return this.a.copy(a),this.b.copy(b),this.c.copy(c),this},setFromPointsAndIndices:function(a,b,c,d){return this.a.copy(a[b]),this.b.copy(a[c]),this.c.copy(a[d]),this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){return this.a.copy(a.a),this.b.copy(a.b),this.c.copy(a.c),this},area:function(){var a=new Bb,b=new Bb;return function(){return a.subVectors(this.c,this.b),b.subVectors(this.a,this.b),.5*a.cross(b).length()}}(),midpoint:function(a){var b=a||new Bb;return b.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(a){return Pe.normal(this.a,this.b,this.c,a)},plane:function(a){var b=a||new Ge;return b.setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(a,b){return Pe.barycoordFromPoint(a,this.a,this.b,this.c,b)},containsPoint:function(a){return Pe.containsPoint(a,this.a,this.b,this.c)},closestPointToPoint:function(){var a,b,c,d;return function(f,g){void 0===a&&(a=new Ge,b=[new Oe,new Oe,new Oe],c=new Bb,d=new Bb);var h=g||new Bb,i=1/0;if(a.setFromCoplanarPoints(this.a,this.b,this.c),a.projectPoint(f,c),this.containsPoint(c)===!0)h.copy(c);else{b[0].set(this.a,this.b),b[1].set(this.b,this.c),b[2].set(this.c,this.a);for(var j=0;j0,f=d[1]&&d[1].length>0,g=a.morphTargets,h=g.length;if(h>0){i=[];for(var j=0;j0){m=[];for(var j=0;j0)for(var m=0;m0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var a,b,c;for(this.computeFaceNormals(),a=0,b=this.faces.length;a0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){var a,b,c,d,e;for(c=0,d=this.faces.length;c0&&(a+=b[c].distanceTo(b[c-1])),this.lineDistances[c]=a},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new De),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new Ee),this.boundingSphere.setFromPoints(this.vertices)},merge:function(a,b,c){if((a&&a.isGeometry)===!1)return void console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",a);var d,e=this.vertices.length,f=this.vertices,g=a.vertices,h=this.faces,i=a.faces,j=this.faceVertexUvs[0],k=a.faceVertexUvs[0],l=this.colors,m=a.colors;void 0===c&&(c=0),void 0!==b&&(d=(new Fe).getNormalMatrix(b));for(var n=0,o=g.length;n=0;h--){var p=n[h];for(this.faces.splice(p,1),l=0,m=this.faceVertexUvs.length;l0,s=n.vertexNormals.length>0,t=1!==n.color.r||1!==n.color.g||1!==n.color.b,u=n.vertexColors.length>0,v=0;if(v=z(v,0,0),v=z(v,1,o),v=z(v,2,p),v=z(v,3,q),v=z(v,4,r),v=z(v,5,s),v=z(v,6,t),v=z(v,7,u),g.push(v),g.push(n.a,n.b,n.c),g.push(n.materialIndex),q){var w=this.faceVertexUvs[0][e];g.push(C(w[0]),C(w[1]),C(w[2]))}if(r&&g.push(A(n.normal)),s){var x=n.vertexNormals;g.push(A(x[0]),A(x[1]),A(x[2]))}if(t&&g.push(B(n.color)),u){var y=n.vertexColors;g.push(B(y[0]),B(y[1]),B(y[2]))}}return a.data={},a.data.vertices=d,a.data.normals=h,j.length>0&&(a.data.colors=j),l.length>0&&(a.data.uvs=[l]),a.data.faces=g,a},clone:function(){return(new ef).copy(this)},copy:function(a){var b,c,d,e,f,g;this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=a.name;var h=a.vertices;for(b=0,c=h.length;b65535?Ze:Xe)(a,1):this.index=a},addAttribute:function(a,b){return(b&&b.isBufferAttribute)===!1&&(b&&b.isInterleavedBufferAttribute)===!1?(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),void this.addAttribute(a,new Se(arguments[1],arguments[2]))):"index"===a?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),void this.setIndex(b)):(this.attributes[a]=b,this)},getAttribute:function(a){return this.attributes[a]},removeAttribute:function(a){return delete this.attributes[a],this},addGroup:function(a,b,c){this.groups.push({start:a,count:b,materialIndex:void 0!==c?c:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(a,b){this.drawRange.start=a,this.drawRange.count=b},applyMatrix:function(a){var b=this.attributes.position;void 0!==b&&(a.applyToBufferAttribute(b),b.needsUpdate=!0);var c=this.attributes.normal;if(void 0!==c){var d=(new Fe).getNormalMatrix(a);d.applyToBufferAttribute(c),c.needsUpdate=!0}return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(){var a;return function(c){return void 0===a&&(a=new Cb),a.makeRotationX(c),this.applyMatrix(a),this}}(),rotateY:function(){var a;return function(c){return void 0===a&&(a=new Cb),a.makeRotationY(c),this.applyMatrix(a),this}}(),rotateZ:function(){var a;return function(c){return void 0===a&&(a=new Cb),a.makeRotationZ(c),this.applyMatrix(a),this}}(),translate:function(){var a;return function(c,d,e){return void 0===a&&(a=new Cb),a.makeTranslation(c,d,e),this.applyMatrix(a),this}}(),scale:function(){var a;return function(c,d,e){return void 0===a&&(a=new Cb),a.makeScale(c,d,e),this.applyMatrix(a),this}}(),lookAt:function(){var a;return function(c){void 0===a&&(a=new Ne),a.lookAt(c),a.updateMatrix(),this.applyMatrix(a.matrix)}}(),center:function(){this.computeBoundingBox();var a=this.boundingBox.getCenter().negate();return this.translate(a.x,a.y,a.z),a},setFromObject:function(a){var b=a.geometry;if(a.isPoints||a.isLine){var c=new $e(3*b.vertices.length,3),d=new $e(3*b.colors.length,3);if(this.addAttribute("position",c.copyVector3sArray(b.vertices)),this.addAttribute("color",d.copyColorsArray(b.colors)),b.lineDistances&&b.lineDistances.length===b.vertices.length){var e=new $e(b.lineDistances.length,1);this.addAttribute("lineDistance",e.copyArray(b.lineDistances))}null!==b.boundingSphere&&(this.boundingSphere=b.boundingSphere.clone()),null!==b.boundingBox&&(this.boundingBox=b.boundingBox.clone())}else a.isMesh&&b&&b.isGeometry&&this.fromGeometry(b);return this},updateFromObject:function(a){var b=a.geometry;if(a.isMesh){var c=b.__directGeometry;if(b.elementsNeedUpdate===!0&&(c=void 0,b.elementsNeedUpdate=!1),void 0===c)return this.fromGeometry(b);c.verticesNeedUpdate=b.verticesNeedUpdate,c.normalsNeedUpdate=b.normalsNeedUpdate,c.colorsNeedUpdate=b.colorsNeedUpdate,c.uvsNeedUpdate=b.uvsNeedUpdate,c.groupsNeedUpdate=b.groupsNeedUpdate,b.verticesNeedUpdate=!1,b.normalsNeedUpdate=!1,b.colorsNeedUpdate=!1,b.uvsNeedUpdate=!1,b.groupsNeedUpdate=!1,b=c}var d;return b.verticesNeedUpdate===!0&&(d=this.attributes.position,void 0!==d&&(d.copyVector3sArray(b.vertices),d.needsUpdate=!0),b.verticesNeedUpdate=!1),b.normalsNeedUpdate===!0&&(d=this.attributes.normal,void 0!==d&&(d.copyVector3sArray(b.normals),d.needsUpdate=!0),b.normalsNeedUpdate=!1),b.colorsNeedUpdate===!0&&(d=this.attributes.color,void 0!==d&&(d.copyColorsArray(b.colors),d.needsUpdate=!0),b.colorsNeedUpdate=!1),b.uvsNeedUpdate&&(d=this.attributes.uv,void 0!==d&&(d.copyVector2sArray(b.uvs),d.needsUpdate=!0),b.uvsNeedUpdate=!1),b.lineDistancesNeedUpdate&&(d=this.attributes.lineDistance,void 0!==d&&(d.copyArray(b.lineDistances),d.needsUpdate=!0),b.lineDistancesNeedUpdate=!1),b.groupsNeedUpdate&&(b.computeGroups(a.geometry),this.groups=b.groups,b.groupsNeedUpdate=!1),this},fromGeometry:function(a){return a.__directGeometry=(new af).fromGeometry(a),this.fromDirectGeometry(a.__directGeometry)},fromDirectGeometry:function(a){var b=new Float32Array(3*a.vertices.length);if(this.addAttribute("position",new Se(b,3).copyVector3sArray(a.vertices)),a.normals.length>0){var c=new Float32Array(3*a.normals.length);this.addAttribute("normal",new Se(c,3).copyVector3sArray(a.normals))}if(a.colors.length>0){var d=new Float32Array(3*a.colors.length);this.addAttribute("color",new Se(d,3).copyColorsArray(a.colors))}if(a.uvs.length>0){var e=new Float32Array(2*a.uvs.length);this.addAttribute("uv",new Se(e,2).copyVector2sArray(a.uvs))}if(a.uvs2.length>0){var f=new Float32Array(2*a.uvs2.length);this.addAttribute("uv2",new Se(f,2).copyVector2sArray(a.uvs2))}if(a.indices.length>0){var g=bf(a.indices)>65535?Uint32Array:Uint16Array,h=new g(3*a.indices.length);this.setIndex(new Se(h,1).copyIndicesArray(a.indices))}this.groups=a.groups;for(var i in a.morphTargets){for(var j=[],k=a.morphTargets[i],l=0,m=k.length;l0){var p=new $e(4*a.skinIndices.length,4);this.addAttribute("skinIndex",p.copyVector4sArray(a.skinIndices))}if(a.skinWeights.length>0){var q=new $e(4*a.skinWeights.length,4);this.addAttribute("skinWeight",q.copyVector4sArray(a.skinWeights))}return null!==a.boundingSphere&&(this.boundingSphere=a.boundingSphere.clone()),null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new De);var a=this.attributes.position;void 0!==a?this.boundingBox.setFromBufferAttribute(a):this.boundingBox.makeEmpty(),(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)},computeBoundingSphere:function(){var a=new De,b=new Bb;return function(){null===this.boundingSphere&&(this.boundingSphere=new Ee);var d=this.attributes.position;if(d){var e=this.boundingSphere.center;a.setFromBufferAttribute(d),a.getCenter(e);for(var f=0,g=0,h=d.count;g0&&(a.data.groups=JSON.parse(JSON.stringify(h)));var i=this.boundingSphere;return null!==i&&(a.data.boundingSphere={center:i.center.toArray(),radius:i.radius}),a},clone:function(){return(new ff).copy(this)},copy:function(a){var b,c,d;this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.name=a.name;var e=a.index;null!==e&&this.setIndex(e.clone());var f=a.attributes;for(b in f){var g=f[b];this.addAttribute(b,g.clone())}var h=a.morphAttributes;for(b in h){var i=[],j=h[b];for(c=0,d=j.length;c0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var b=0,c=a.length;bb.far?null:{distance:j,point:q.clone(),object:a}}function t(a,b,c,g,h,i,m,o){d.fromBufferAttribute(g,i),e.fromBufferAttribute(g,m),f.fromBufferAttribute(g,o);var p=s(a,b,c,d,e,f,n);return p&&(h&&(j.fromBufferAttribute(h,i),k.fromBufferAttribute(h,m),l.fromBufferAttribute(h,o),p.uv=r(n,d,e,f,j,k,l)),p.face=new Qe(i,m,o,Pe.normal(d,e,f)),p.faceIndex=i),p}var a=new Cb,b=new Je,c=new Ee,d=new Bb,e=new Bb,f=new Bb,g=new Bb,h=new Bb,i=new Bb,j=new ub,k=new ub,l=new ub,m=new Bb,n=new Bb,q=new Bb;return function(o,p){var q=this.geometry,u=this.material,v=this.matrixWorld;if(void 0!==u&&(null===q.boundingSphere&&q.computeBoundingSphere(),c.copy(q.boundingSphere),c.applyMatrix4(v),o.ray.intersectsSphere(c)!==!1&&(a.getInverse(v),b.copy(o.ray).applyMatrix4(a),null===q.boundingBox||b.intersectsBox(q.boundingBox)!==!1))){var w;if(q.isBufferGeometry){var x,y,z,D,E,A=q.index,B=q.attributes.position,C=q.attributes.uv;if(null!==A)for(D=0,E=A.count;D0&&(M=N);for(var O=0,P=L.length;Of||d.push({distance:Math.sqrt(e),point:this.position,face:null,object:this})}}(),clone:function(){return new this.constructor(this.material).copy(this)}}),Xf.prototype=Object.assign(Object.create(Ne.prototype),{constructor:Xf,copy:function(a){Ne.prototype.copy.call(this,a,!1);for(var b=a.levels,c=0,d=b.length;c1){a.setFromMatrixPosition(d.matrixWorld),b.setFromMatrixPosition(this.matrixWorld);var f=a.distanceTo(b);e[0].object.visible=!0;for(var g=1,h=e.length;g=e[g].distance;g++)e[g-1].object.visible=!1,e[g].object.visible=!0;for(;gh)){n.applyMatrix4(this.matrixWorld);var y=e.ray.origin.distanceTo(n);ye.far||f.push({distance:y,point:m.clone().applyMatrix4(this.matrixWorld),index:t,face:null,faceIndex:null,object:this})}}else for(var t=0,u=r.length/3-1;th)){n.applyMatrix4(this.matrixWorld);var y=e.ray.origin.distanceTo(n);ye.far||f.push({distance:y,point:m.clone().applyMatrix4(this.matrixWorld),index:t,face:null,faceIndex:null,object:this})}}}else if(i.isGeometry)for(var z=i.vertices,A=z.length,t=0;th)){n.applyMatrix4(this.matrixWorld);var y=e.ray.origin.distanceTo(n);ye.far||f.push({distance:y,point:m.clone().applyMatrix4(this.matrixWorld),index:t,face:null,faceIndex:null,object:this})}}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),bg.prototype=Object.assign(Object.create(ag.prototype),{constructor:bg,isLineSegments:!0}),cg.prototype=Object.create(Ae.prototype),cg.prototype.constructor=cg,cg.prototype.isPointsMaterial=!0,cg.prototype.copy=function(a){return Ae.prototype.copy.call(this,a),this.color.copy(a.color),this.map=a.map,this.size=a.size,this.sizeAttenuation=a.sizeAttenuation,this},dg.prototype=Object.assign(Object.create(Ne.prototype),{constructor:dg,isPoints:!0,raycast:function(){var a=new Cb,b=new Je,c=new Ee;return function(e,f){function n(a,c){var d=b.distanceSqToPoint(a);if(de.far)return;f.push({distance:j,distanceToRay:Math.sqrt(d),point:h.clone(),index:c,face:null,object:g})}}var g=this,h=this.geometry,i=this.matrixWorld,j=e.params.Points.threshold;if(null===h.boundingSphere&&h.computeBoundingSphere(),c.copy(h.boundingSphere),c.applyMatrix4(i),e.ray.intersectsSphere(c)!==!1){a.getInverse(i),b.copy(e.ray).applyMatrix4(a);var k=j/((this.scale.x+this.scale.y+this.scale.z)/3),l=k*k,m=new Bb;if(h.isBufferGeometry){var o=h.index,p=h.attributes,q=p.position.array;if(null!==o)for(var r=o.array,s=0,t=r.length;s=-Number.EPSILON&&C>=-Number.EPSILON&&B>=-Number.EPSILON))return!1;return!0}return function(c,d){var e=c.length;if(e<3)return null;var i,j,k,f=[],g=[],h=[];if(Cg.area(c)>0)for(j=0;j2;){if(m--<=0)return console.warn("THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()"),d?h:f;if(i=j,l<=i&&(i=0),j=i+1,l<=j&&(j=0),k=j+1,l<=k&&(k=0),a(c,i,j,k,l,g)){var n,o,p,q,r;for(n=g[i],o=g[j],p=g[k],f.push([c[n],c[o],c[p]]),h.push([g[i],g[j],g[k]]),q=j,r=j+1;r2&&a[b-1].equals(a[0])&&a.pop()}function d(a,b,c){return a.x!==b.x?a.xNumber.EPSILON){var o;if(m>0){if(n<0||n>m)return[];if(o=j*k-i*l,o<0||o>m)return[]}else{if(n>0||n0||oz?[]:u===z?f?[]:[s]:v<=z?[s,t]:[s,x]}function f(a,b,c,d){var e=b.x-a.x,f=b.y-a.y,g=c.x-a.x,h=c.y-a.y,i=d.x-a.x,j=d.y-a.y,k=e*h-f*g,l=e*j-f*i;if(Math.abs(k)>Number.EPSILON){var m=i*h-j*g;return k>0?l>=0&&m>=0:l>=0||m>=0}return l>0}function g(a,b){function g(a,b){var e=c.length-1,g=a-1;g<0&&(g=e);var h=a+1;h>e&&(h=0);var i=f(c[a],c[g],c[h],d[b]);if(!i)return!1;var j=d.length-1,k=b-1;k<0&&(k=j);var l=b+1;return l>j&&(l=0),i=f(d[b],d[k],d[l],c[a]),!!i}function h(a,b){var d,f,g;for(d=0;d0)return!0;return!1}function j(a,c){var d,f,g,h,j;for(d=0;d0)return!0;return!1}for(var d,k,l,m,n,o,p,r,s,t,u,c=a.concat(),i=[],q=[],v=0,w=b.length;v0;){if(y--,y<0){console.log("Infinite Loop! Holes left:"+i.length+", Probably Hole outside Shape!");break}for(l=x;l=0)break;q[p]=!0}if(k>=0)break}}return c}c(a),b.forEach(c);for(var h,i,j,k,l,m,n={},o=a.concat(),p=0,q=b.length;pNumber.EPSILON){var m=Math.sqrt(k),n=Math.sqrt(i*i+j*j),o=b.x-h/m,p=b.y+g/m,q=c.x-j/n,r=c.y+i/n,s=((q-o)*j-(r-p)*i)/(g*j-h*i);d=o+g*s-a.x,e=p+h*s-a.y;var t=d*d+e*e;if(t<=2)return new ub(d,e);f=Math.sqrt(t/2)}else{var u=!1;g>Number.EPSILON?i>Number.EPSILON&&(u=!0):g<-Number.EPSILON?i<-Number.EPSILON&&(u=!0):Math.sign(h)===Math.sign(j)&&(u=!0),u?(d=-h,e=g,f=Math.sqrt(k)):(d=g,e=h,f=Math.sqrt(k/2))}return new ub(d/f,e/f)}function V(){if(g){var a=0,b=I*a;for(N=0;N=0;){c=N,d=N-1,d<0&&(d=a.length-1);var e=0,g=i+2*f;for(e=0;e=0;D--){for(F=D/f,G=d*Math.cos(F*Math.PI/2),E=e*Math.sin(F*Math.PI/2),N=0,O=B.length;N0||0===a.search(/^data\:image\/jpeg/);e.format=d?Ja:Ka,e.image=c,e.needsUpdate=!0,void 0!==b&&b(e)},c,d),e},setCrossOrigin:function(a){return this.crossOrigin=a,this},setPath:function(a){return this.path=a,this}}),nh.prototype=Object.assign(Object.create(Ne.prototype),{constructor:nh,isLight:!0,copy:function(a){return Ne.prototype.copy.call(this,a),this.color.copy(a.color),this.intensity=a.intensity,this},toJSON:function(a){var b=Ne.prototype.toJSON.call(this,a);return b.object.color=this.color.getHex(),b.object.intensity=this.intensity,void 0!==this.groundColor&&(b.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(b.object.distance=this.distance),void 0!==this.angle&&(b.object.angle=this.angle),void 0!==this.decay&&(b.object.decay=this.decay),void 0!==this.penumbra&&(b.object.penumbra=this.penumbra),void 0!==this.shadow&&(b.object.shadow=this.shadow.toJSON()),b}}),oh.prototype=Object.assign(Object.create(nh.prototype),{constructor:oh,isHemisphereLight:!0,copy:function(a){return nh.prototype.copy.call(this,a),this.groundColor.copy(a.groundColor),this}}),Object.assign(ph.prototype,{copy:function(a){return this.camera=a.camera.clone(),this.bias=a.bias,this.radius=a.radius,this.mapSize.copy(a.mapSize),this},clone:function(){return(new this.constructor).copy(this)},toJSON:function(){var a={};return 0!==this.bias&&(a.bias=this.bias),1!==this.radius&&(a.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(a.mapSize=this.mapSize.toArray()),a.camera=this.camera.toJSON(!1).object,delete a.camera.matrix,a}}),qh.prototype=Object.assign(Object.create(ph.prototype),{constructor:qh,isSpotLightShadow:!0,update:function(a){var b=2*tb.RAD2DEG*a.angle,c=this.mapSize.width/this.mapSize.height,d=a.distance||500,e=this.camera;b===e.fov&&c===e.aspect&&d===e.far||(e.fov=b,e.aspect=c,e.far=d,e.updateProjectionMatrix())}}),rh.prototype=Object.assign(Object.create(nh.prototype),{constructor:rh,isSpotLight:!0,copy:function(a){return nh.prototype.copy.call(this,a),this.distance=a.distance,this.angle=a.angle,this.penumbra=a.penumbra,this.decay=a.decay,this.target=a.target.clone(),this.shadow=a.shadow.clone(),this}}),sh.prototype=Object.assign(Object.create(nh.prototype),{constructor:sh,isPointLight:!0,copy:function(a){return nh.prototype.copy.call(this,a),this.distance=a.distance,this.decay=a.decay,this.shadow=a.shadow.clone(),this}}),th.prototype=Object.assign(Object.create(ph.prototype),{constructor:th}),uh.prototype=Object.assign(Object.create(nh.prototype),{constructor:uh,isDirectionalLight:!0,copy:function(a){return nh.prototype.copy.call(this,a),this.target=a.target.clone(),this.shadow=a.shadow.clone(),this}}),vh.prototype=Object.assign(Object.create(nh.prototype),{constructor:vh,isAmbientLight:!0});var wh={arraySlice:function(a,b,c){return wh.isTypedArray(a)?new a.constructor(a.subarray(b,c)):a.slice(b,c)},convertArray:function(a,b,c){return!a||!c&&a.constructor===b?a:"number"==typeof b.BYTES_PER_ELEMENT?new b(a):Array.prototype.slice.call(a)},isTypedArray:function(a){return ArrayBuffer.isView(a)&&!(a instanceof DataView)},getKeyframeOrder:function(a){function b(b,c){return a[b]-a[c]}for(var c=a.length,d=new Array(c),e=0;e!==c;++e)d[e]=e;return d.sort(b),d},sortedArray:function(a,b,c){for(var d=a.length,e=new a.constructor(d),f=0,g=0;g!==d;++f)for(var h=c[f]*b,i=0;i!==b;++i)e[g++]=a[h+i];return e},flattenJSON:function(a,b,c,d){for(var e=1,f=a[0];void 0!==f&&void 0===f[d];)f=a[e++];if(void 0!==f){var g=f[d];if(void 0!==g)if(Array.isArray(g)){do g=f[d],void 0!==g&&(b.push(f.time),c.push.apply(c,g)),f=a[e++];while(void 0!==f)}else if(void 0!==g.toArray){do g=f[d],void 0!==g&&(b.push(f.time),g.toArray(c,c.length)),f=a[e++];while(void 0!==f)}else do g=f[d],void 0!==g&&(b.push(f.time),c.push(g)),f=a[e++];while(void 0!==f)}}};xh.prototype={constructor:xh,evaluate:function(a){var b=this.parameterPositions,c=this._cachedIndex,d=b[c],e=b[c-1];a:{b:{var f;c:{d:if(!(a=e)break a;var h=b[1];a=e)break b}f=c,c=0}}for(;c>>1;ab;)--f;if(++f,0!==e||f!==d){e>=f&&(f=Math.max(f,1),e=f-1);var g=this.getValueSize();this.times=wh.arraySlice(c,e,f),this.values=wh.arraySlice(this.values,e*g,f*g)}return this},validate:function(){var a=!0,b=this.getValueSize();b-Math.floor(b)!==0&&(console.error("invalid value size in track",this),a=!1);var c=this.times,d=this.values,e=c.length;0===e&&(console.error("track is empty",this),a=!1);for(var f=null,g=0;g!==e;g++){var h=c[g];if("number"==typeof h&&isNaN(h)){console.error("time is not a valid number",this,g,h),a=!1;break}if(null!==f&&f>h){console.error("out of order keys",this,g,h,f),a=!1;break}f=h}if(void 0!==d&&wh.isTypedArray(d))for(var g=0,i=d.length;g!==i;++g){var j=d[g];if(isNaN(j)){console.error("value is not a valid number",this,g,j),a=!1;break}}return a},optimize:function(){for(var a=this.times,b=this.values,c=this.getValueSize(),d=this.getInterpolation()===cb,e=1,f=a.length-1,g=1;g0){a[e]=a[f];for(var p=f*c,q=e*c,n=0;n!==c;++n)b[q+n]=b[p+n];++e}return e!==a.length&&(this.times=wh.arraySlice(a,0,e),this.values=wh.arraySlice(b,0,e*c)),this}},Dh.prototype=Object.assign(Object.create(Bh),{constructor:Dh,ValueTypeName:"vector"}),Eh.prototype=Object.assign(Object.create(xh.prototype),{constructor:Eh,interpolate_:function(a,b,c,d){for(var e=this.resultBuffer,f=this.sampleValues,g=this.valueSize,h=a*g,i=(c-b)/(d-b),j=h+g;h!==j;h+=4)Ab.slerpFlat(e,0,f,h-g,f,h,i); return e}}),Fh.prototype=Object.assign(Object.create(Bh),{constructor:Fh,ValueTypeName:"quaternion",DefaultInterpolation:bb,InterpolantFactoryMethodLinear:function(a){return new Eh(this.times,this.values,this.getValueSize(),a)},InterpolantFactoryMethodSmooth:void 0}),Gh.prototype=Object.assign(Object.create(Bh),{constructor:Gh,ValueTypeName:"number"}),Hh.prototype=Object.assign(Object.create(Bh),{constructor:Hh,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:ab,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Ih.prototype=Object.assign(Object.create(Bh),{constructor:Ih,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:ab,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Jh.prototype=Object.assign(Object.create(Bh),{constructor:Jh,ValueTypeName:"color"}),Kh.prototype=Bh,Bh.constructor=Kh,Object.assign(Kh,{parse:function(a){if(void 0===a.type)throw new Error("track type undefined, can not parse");var b=Kh._getTrackTypeForValueTypeName(a.type);if(void 0===a.times){var c=[],d=[];wh.flattenJSON(a.keys,c,d,"value"),a.times=c,a.values=d}return void 0!==b.parse?b.parse(a):new b(a.name,a.times,a.values,a.interpolation)},toJSON:function(a){var c,b=a.constructor;if(void 0!==b.toJSON)c=b.toJSON(a);else{c={name:a.name,times:wh.convertArray(a.times,Array),values:wh.convertArray(a.values,Array)};var d=a.getInterpolation();d!==a.DefaultInterpolation&&(c.interpolation=d)}return c.type=a.ValueTypeName,c},_getTrackTypeForValueTypeName:function(a){switch(a.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return Gh;case"vector":case"vector2":case"vector3":case"vector4":return Dh;case"color":return Jh;case"quaternion":return Fh;case"bool":case"boolean":return Ih;case"string":return Hh}throw new Error("Unsupported typeName: "+a)}}),Lh.prototype={constructor:Lh,resetDuration:function(){for(var a=this.tracks,b=0,c=0,d=a.length;c!==d;++c){var e=this.tracks[c];b=Math.max(b,e.times[e.times.length-1])}this.duration=b},trim:function(){for(var a=0;a1){var j=i[1],k=d[j];k||(d[j]=k=[]),k.push(h)}}var l=[];for(var j in d)l.push(Lh.CreateFromMorphTargetSequence(j,d[j],b,c));return l},parseAnimation:function(a,b){if(!a)return console.error(" no animation in JSONLoader data"),null;for(var c=function(a,b,c,d,e){if(0!==c.length){var f=[],g=[];wh.flattenJSON(c,f,g,d),0!==f.length&&e.push(new a(b,f,g))}},d=[],e=a.name||"default",f=a.length||-1,g=a.fps||30,h=a.hierarchy||[],i=0;i1?a.skinWeights[d+1]:0,h=b>2?a.skinWeights[d+2]:0,i=b>3?a.skinWeights[d+3]:0;c.skinWeights.push(new xb(f,g,h,i))}if(a.skinIndices)for(var d=0,e=a.skinIndices.length;d1?a.skinIndices[d+1]:0,l=b>2?a.skinIndices[d+2]:0,m=b>3?a.skinIndices[d+3]:0;c.skinIndices.push(new xb(j,k,l,m))}c.bones=a.bones,c.bones&&c.bones.length>0&&(c.skinWeights.length!==c.skinIndices.length||c.skinIndices.length!==c.vertices.length)&&console.warn("When skinning, number of vertices ("+c.vertices.length+"), skinIndices ("+c.skinIndices.length+"), and skinWeights ("+c.skinWeights.length+") should match.")}function g(b){if(void 0!==a.morphTargets)for(var d=0,e=a.morphTargets.length;d0){console.warn('THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.');for(var k=c.faces,l=a.morphColors[0].colors,d=0,e=k.length;d0&&(c.animations=b)}var c=new ef,d=void 0!==a.scale?1/a.scale:1;if(e(d),f(),g(d),h(),c.computeFaceNormals(),c.computeBoundingSphere(),void 0===a.materials||0===a.materials.length)return{geometry:c};var i=Oh.prototype.initMaterials(a.materials,b,this.crossOrigin);return{geometry:c,materials:i}}}),Object.assign(Qh.prototype,{load:function(a,b,c,d){""===this.texturePath&&(this.texturePath=a.substring(0,a.lastIndexOf("/")+1));var e=this,f=new hh(e.manager);f.load(a,function(c){var f=null;try{f=JSON.parse(c)}catch(b){return void 0!==d&&d(b),void console.error("THREE:ObjectLoader: Can't parse "+a+".",b.message)}var g=f.metadata;return void 0===g||void 0===g.type||"geometry"===g.type.toLowerCase()?void console.error("THREE.ObjectLoader: Can't load "+a+". Use THREE.JSONLoader instead."):void e.parse(f,b)},c,d)},setTexturePath:function(a){this.texturePath=a},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a,b){var c=this.parseGeometries(a.geometries),d=this.parseImages(a.images,function(){void 0!==b&&b(g)}),e=this.parseTextures(a.textures,d),f=this.parseMaterials(a.materials,e),g=this.parseObject(a.object,c,f);return a.animations&&(g.animations=this.parseAnimations(a.animations)),void 0!==a.images&&0!==a.images.length||void 0!==b&&b(g),g},parseGeometries:function(a){var b={};if(void 0!==a)for(var c=new Ph,d=new Nh,e=0,f=a.length;e0){var f=new fh(b),g=new kh(f);g.setCrossOrigin(this.crossOrigin);for(var h=0,i=a.length;h0?new $f(i,j):new gf(i,j);break;case"LOD":f=new Xf;break;case"Line":f=new ag(g(c.geometry),h(c.material),c.mode);break;case"LineSegments":f=new bg(g(c.geometry),h(c.material));break;case"PointCloud":case"Points":f=new dg(g(c.geometry),h(c.material));break;case"Sprite":f=new Wf(h(c.material));break;case"Group":f=new eg;break;case"SkinnedMesh":console.warn("THREE.ObjectLoader.parseObject() does not support SkinnedMesh type. Instantiates Object3D instead.");default:f=new Ne}if(f.uuid=c.uuid,void 0!==c.name&&(f.name=c.name),void 0!==c.matrix?(a.fromArray(c.matrix),a.decompose(f.position,f.quaternion,f.scale)):(void 0!==c.position&&f.position.fromArray(c.position),void 0!==c.rotation&&f.rotation.fromArray(c.rotation),void 0!==c.quaternion&&f.quaternion.fromArray(c.quaternion),void 0!==c.scale&&f.scale.fromArray(c.scale)),void 0!==c.castShadow&&(f.castShadow=c.castShadow),void 0!==c.receiveShadow&&(f.receiveShadow=c.receiveShadow),c.shadow&&(void 0!==c.shadow.bias&&(f.shadow.bias=c.shadow.bias),void 0!==c.shadow.radius&&(f.shadow.radius=c.shadow.radius),void 0!==c.shadow.mapSize&&f.shadow.mapSize.fromArray(c.shadow.mapSize),void 0!==c.shadow.camera&&(f.shadow.camera=this.parseObject(c.shadow.camera))),void 0!==c.visible&&(f.visible=c.visible),void 0!==c.userData&&(f.userData=c.userData),void 0!==c.children)for(var k in c.children)f.add(this.parseObject(c.children[k],d,e));if("LOD"===c.type)for(var l=c.levels,m=0;m0)){h=d;break}h=d-1}if(d=h,c[d]===f){var j=d/(e-1);return j}var k=c[d],l=c[d+1],m=l-k,n=(f-k)/m,j=(d+n)/(e-1);return j},getTangent:function(a){var b=1e-4,c=a-b,d=a+b;c<0&&(c=0),d>1&&(d=1);var e=this.getPoint(c),f=this.getPoint(d),g=f.clone().sub(e);return g.normalize()},getTangentAt:function(a){var b=this.getUtoTmapping(a);return this.getTangent(b)},computeFrenetFrames:function(a,b){var i,j,k,c=new Bb,d=[],e=[],f=[],g=new Bb,h=new Cb;for(i=0;i<=a;i++)j=i/a,d[i]=this.getTangentAt(j),d[i].normalize();e[0]=new Bb,f[0]=new Bb;var l=Number.MAX_VALUE,m=Math.abs(d[0].x),n=Math.abs(d[0].y),o=Math.abs(d[0].z);for(m<=l&&(l=m,c.set(1,0,0)),n<=l&&(l=n,c.set(0,1,0)),o<=l&&c.set(0,0,1),g.crossVectors(d[0],c).normalize(),e[0].crossVectors(d[0],g),f[0].crossVectors(d[0],e[0]),i=1;i<=a;i++)e[i]=e[i-1].clone(),f[i]=f[i-1].clone(),g.crossVectors(d[i-1],d[i]),g.length()>Number.EPSILON&&(g.normalize(),k=Math.acos(tb.clamp(d[i-1].dot(d[i]),-1,1)),e[i].applyMatrix4(h.makeRotationAxis(g,k))),f[i].crossVectors(d[i],e[i]);if(b===!0)for(k=Math.acos(tb.clamp(e[0].dot(e[a]),-1,1)),k/=a,d[0].dot(g.crossVectors(e[0],e[a]))>0&&(k=-k),i=1;i<=a;i++)e[i].applyMatrix4(h.makeRotationAxis(d[i],k*i)),f[i].crossVectors(d[i],e[i]);return{tangents:d,normals:e,binormals:f}}},ai.prototype=Object.create(_h.prototype),ai.prototype.constructor=ai,ai.prototype.isLineCurve=!0,ai.prototype.getPoint=function(a){if(1===a)return this.v2.clone();var b=this.v2.clone().sub(this.v1);return b.multiplyScalar(a).add(this.v1),b},ai.prototype.getPointAt=function(a){return this.getPoint(a)},ai.prototype.getTangent=function(a){var b=this.v2.clone().sub(this.v1);return b.normalize()},bi.prototype=Object.assign(Object.create(_h.prototype),{constructor:bi,add:function(a){this.curves.push(a)},closePath:function(){var a=this.curves[0].getPoint(0),b=this.curves[this.curves.length-1].getPoint(1);a.equals(b)||this.curves.push(new ai(b,a))},getPoint:function(a){for(var b=a*this.getLength(),c=this.getCurveLengths(),d=0;d=b){var e=c[d]-b,f=this.curves[d],g=f.getLength(),h=0===g?0:1-e/g;return f.getPointAt(h)}d++}return null},getLength:function(){var a=this.getCurveLengths();return a[a.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var a=[],b=0,c=0,d=this.curves.length;c1&&!b[b.length-1].equals(b[0])&&b.push(b[0]),b},createPointsGeometry:function(a){var b=this.getPoints(a);return this.createGeometry(b)},createSpacedPointsGeometry:function(a){var b=this.getSpacedPoints(a);return this.createGeometry(b)},createGeometry:function(a){for(var b=new ef,c=0,d=a.length;cb;)c-=b;cb.length-2?b.length-1:d+1],i=b[d>b.length-3?b.length-1:d+2];return new ub(Rh(e,f.x,g.x,h.x,i.x),Rh(e,f.y,g.y,h.y,i.y))},ei.prototype=Object.create(_h.prototype),ei.prototype.constructor=ei,ei.prototype.getPoint=function(a){var b=this.v0,c=this.v1,d=this.v2,e=this.v3;return new ub($h(a,b.x,c.x,d.x,e.x),$h(a,b.y,c.y,d.y,e.y))},fi.prototype=Object.create(_h.prototype),fi.prototype.constructor=fi,fi.prototype.getPoint=function(a){var b=this.v0,c=this.v1,d=this.v2;return new ub(Vh(a,b.x,c.x,d.x),Vh(a,b.y,c.y,d.y))};var gi=Object.assign(Object.create(bi.prototype),{fromPoints:function(a){this.moveTo(a[0].x,a[0].y);for(var b=1,c=a.length;b0){var j=i.getPoint(0);j.equals(this.currentPoint)||this.lineTo(j.x,j.y)}this.curves.push(i);var k=i.getPoint(1);this.currentPoint.copy(k)}});hi.prototype=gi,gi.constructor=hi,ii.prototype=Object.assign(Object.create(gi),{constructor:ii,getPointsHoles:function(a){for(var b=[],c=0,d=this.holes.length;cNumber.EPSILON){if(j<0&&(g=b[f],i=-i,h=b[e],j=-j),a.yh.y)continue;if(a.y===g.y){if(a.x===g.x)return!0}else{var k=j*(a.x-g.x)-i*(a.y-g.y);if(0===k)return!0;if(k<0)continue;d=!d}}else{if(a.y!==g.y)continue;if(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x)return!0}}return d}var e=Cg.isClockWise,f=this.subPaths;if(0===f.length)return[];if(b===!0)return c(f);var g,h,i,j=[];if(1===f.length)return h=f[0],i=new ii,i.curves=h.curves,j.push(i),j;var k=!e(f[0].getPoints());k=a?!k:k;var p,l=[],m=[],n=[],o=0;m[o]=void 0,n[o]=[];for(var q=0,r=f.length;q1){for(var s=!1,t=[],u=0,v=m.length;u0&&(s||(n=l))}for(var B,q=0,C=m.length;q0){this.source.connect(this.filters[0]);for(var a=1,b=this.filters.length;a0){this.source.disconnect(this.filters[0]);for(var a=1,b=this.filters.length;a=.5)for(var f=0;f!==e;++f)a[b+f]=a[c+f]},_slerp:function(a,b,c,d,e){Ab.slerpFlat(a,b,a,b,a,c,d)},_lerp:function(a,b,c,d,e){for(var f=1-d,g=0;g!==e;++g){var h=b+g;a[h]=a[h]*f+a[c+g]*d}}},xi.prototype={constructor:xi,getValue:function(b,c){this.bind(),this.getValue(b,c)},setValue:function(b,c){this.bind(),this.setValue(b,c)},bind:function(){var a=this.node,b=this.parsedPath,c=b.objectName,d=b.propertyName,e=b.propertyIndex;if(a||(a=xi.findNode(this.rootNode,b.nodeName)||this.rootNode,this.node=a),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!a)return void console.error(" trying to update node for track: "+this.path+" but it wasn't found.");if(c){var f=b.objectIndex;switch(c){case"materials":if(!a.material)return void console.error(" can not bind to material as node does not have a material",this);if(!a.material.materials)return void console.error(" can not bind to material.materials as node.material does not have a materials array",this);a=a.material.materials;break;case"bones":if(!a.skeleton)return void console.error(" can not bind to bones as node does not have a skeleton",this);a=a.skeleton.bones;for(var g=0;g=c){var l=c++,m=b[l];d[m.uuid]=k,b[k]=m,d[j]=l,b[l]=i;for(var n=0,o=f;n!==o;++n){var p=e[n],q=p[l],r=p[k];p[k]=q,p[l]=r}}}this.nCachedObjects_=c},uncache:function(a){for(var b=this._objects,c=b.length,d=this.nCachedObjects_,e=this._indicesByUUID,f=this._bindings,g=f.length,h=0,i=arguments.length;h!==i;++h){var j=arguments[h],k=j.uuid,l=e[k];if(void 0!==l)if(delete e[k],l0)for(var i=this._interpolants,j=this._propertyBindings,k=0,l=i.length;k!==l;++k)i[k].evaluate(g),j[k].accumulate(d,h)},_updateWeight:function(a){var b=0;if(this.enabled){b=this.weight;var c=this._weightInterpolant;if(null!==c){var d=c.evaluate(a)[0];b*=d,a>c.parameterPositions[1]&&(this.stopFading(),0===d&&(this.enabled=!1))}}return this._effectiveWeight=b,b},_updateTimeScale:function(a){var b=0;if(!this.paused){b=this.timeScale;var c=this._timeScaleInterpolant;if(null!==c){var d=c.evaluate(a)[0];b*=d,a>c.parameterPositions[1]&&(this.stopWarping(),0===b?this.paused=!0:this.timeScale=b)}}return this._effectiveTimeScale=b,b},_updateTime:function(a){var b=this.time+a;if(0===a)return b;var c=this._clip.duration,d=this.loop,e=this._loopCount;if(d===Za){e===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));a:{if(b>=c)b=c;else{if(!(b<0))break a;b=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this._mixer.dispatchEvent({type:"finished",action:this,direction:a<0?-1:1})}}else{var f=d===_a;if(e===-1&&(a>=0?(e=0,this._setEndings(!0,0===this.repetitions,f)):this._setEndings(0===this.repetitions,!0,f)),b>=c||b<0){var g=Math.floor(b/c);b-=c*g,e+=Math.abs(g);var h=this.repetitions-e;if(h<0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,b=a>0?c:0,this._mixer.dispatchEvent({type:"finished",action:this,direction:a>0?1:-1});else{if(0===h){var i=a<0;this._setEndings(i,!i,f)}else this._setEndings(!1,!1,f);this._loopCount=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:g})}}if(f&&1===(1&e))return this.time=b,c-b}return this.time=b,b},_setEndings:function(a,b,c){var d=this._interpolantSettings;c?(d.endingStart=eb,d.endingEnd=eb):(a?d.endingStart=this.zeroSlopeAtStart?eb:db:d.endingStart=fb,b?d.endingEnd=this.zeroSlopeAtEnd?eb:db:d.endingEnd=fb)},_scheduleFading:function(a,b,c){var d=this._mixer,e=d.time,f=this._weightInterpolant;null===f&&(f=d._lendControlInterpolant(),this._weightInterpolant=f);var g=f.parameterPositions,h=f.sampleValues;return g[0]=e,h[0]=b,g[1]=e+a,h[1]=c,this}},Ai.prototype={constructor:Ai,clipAction:function(a,b){var c=b||this._root,d=c.uuid,e="string"==typeof a?Lh.findByName(c,a):a,f=null!==e?e.uuid:a,g=this._actionsByClip[f],h=null;if(void 0!==g){var i=g.actionByRoot[d];if(void 0!==i)return i;h=g.knownActions[0],null===e&&(e=h._clip)}if(null===e)return null;var j=new zi(this,e,b);return this._bindAction(j,h),this._addInactiveAction(j,f,d),j},existingAction:function(a,b){var c=b||this._root,d=c.uuid,e="string"==typeof a?Lh.findByName(c,a):a,f=e?e.uuid:a,g=this._actionsByClip[f];return void 0!==g?g.actionByRoot[d]||null:null},stopAllAction:function(){var a=this._actions,b=this._nActiveActions,c=this._bindings,d=this._nActiveBindings;this._nActiveActions=0,this._nActiveBindings=0;for(var e=0;e!==b;++e)a[e].reset();for(var e=0;e!==d;++e)c[e].useCount=0;return this},update:function(a){a*=this.timeScale;for(var b=this._actions,c=this._nActiveActions,d=this.time+=a,e=Math.sign(a),f=this._accuIndex^=1,g=0;g!==c;++g){var h=b[g];h.enabled&&h._update(d,a,e,f)}for(var i=this._bindings,j=this._nActiveBindings,g=0;g!==j;++g)i[g].apply(f);return this},getRoot:function(){return this._root},uncacheClip:function(a){var b=this._actions,c=a.uuid,d=this._actionsByClip,e=d[c];if(void 0!==e){for(var f=e.knownActions,g=0,h=f.length;g!==h;++g){var i=f[g];this._deactivateAction(i);var j=i._cacheIndex,k=b[b.length-1];i._cacheIndex=null,i._byClipCacheIndex=null,k._cacheIndex=j,b[j]=k,b.pop(),this._removeInactiveBindingsForAction(i)}delete d[c]}},uncacheRoot:function(a){var b=a.uuid,c=this._actionsByClip;for(var d in c){var e=c[d].actionByRoot,f=e[b];void 0!==f&&(this._deactivateAction(f),this._removeInactiveAction(f))}var g=this._bindingsByRootAndName,h=g[b];if(void 0!==h)for(var i in h){var j=h[i];j.restoreOriginalState(),this._removeInactiveBinding(j)}},uncacheAction:function(a,b){var c=this.existingAction(a,b);null!==c&&(this._deactivateAction(c),this._removeInactiveAction(c))}},Object.assign(Ai.prototype,{_bindAction:function(a,b){var c=a._localRoot||this._root,d=a._clip.tracks,e=d.length,f=a._propertyBindings,g=a._interpolants,h=c.uuid,i=this._bindingsByRootAndName,j=i[h];void 0===j&&(j={},i[h]=j);for(var k=0;k!==e;++k){var l=d[k],m=l.name,n=j[m];if(void 0!==n)f[k]=n;else{if(n=f[k],void 0!==n){null===n._cacheIndex&&(++n.referenceCount,this._addInactiveBinding(n,h,m));continue}var o=b&&b._propertyBindings[k].binding.parsedPath;n=new wi(xi.create(c,m,o),l.ValueTypeName,l.getValueSize()),++n.referenceCount,this._addInactiveBinding(n,h,m),f[k]=n}g[k].resultBuffer=n.buffer}},_activateAction:function(a){if(!this._isActiveAction(a)){if(null===a._cacheIndex){var b=(a._localRoot||this._root).uuid,c=a._clip.uuid,d=this._actionsByClip[c];this._bindAction(a,d&&d.knownActions[0]),this._addInactiveAction(a,c,b)}for(var e=a._propertyBindings,f=0,g=e.length;f!==g;++f){var h=e[f];0===h.useCount++&&(this._lendBinding(h),h.saveOriginalState())}this._lendAction(a)}},_deactivateAction:function(a){if(this._isActiveAction(a)){for(var b=a._propertyBindings,c=0,d=b.length;c!==d;++c){var e=b[c];0===--e.useCount&&(e.restoreOriginalState(),this._takeBackBinding(e))}this._takeBackAction(a)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var a=this;this.stats={actions:{get total(){return a._actions.length},get inUse(){return a._nActiveActions}},bindings:{get total(){return a._bindings.length},get inUse(){return a._nActiveBindings}},controlInterpolants:{get total(){return a._controlInterpolants.length},get inUse(){return a._nActiveControlInterpolants}}}},_isActiveAction:function(a){var b=a._cacheIndex;return null!==b&&b1){var j=i[1];d[j]||(d[j]={start:1/0,end:-(1/0)});var k=d[j];fk.end&&(k.end=f),c||(c=j)}}for(var j in d){var k=d[j];this.createAnimation(j,k.start,k.end,a)}this.firstAnimation=c},Ni.prototype.setAnimationDirectionForward=function(a){var b=this.animationsMap[a];b&&(b.direction=1,b.directionBackwards=!1)},Ni.prototype.setAnimationDirectionBackward=function(a){var b=this.animationsMap[a];b&&(b.direction=-1,b.directionBackwards=!0)},Ni.prototype.setAnimationFPS=function(a,b){var c=this.animationsMap[a];c&&(c.fps=b,c.duration=(c.end-c.start)/c.fps)},Ni.prototype.setAnimationDuration=function(a,b){var c=this.animationsMap[a];c&&(c.duration=b,c.fps=(c.end-c.start)/c.duration)},Ni.prototype.setAnimationWeight=function(a,b){var c=this.animationsMap[a];c&&(c.weight=b)},Ni.prototype.setAnimationTime=function(a,b){var c=this.animationsMap[a];c&&(c.time=b)},Ni.prototype.getAnimationTime=function(a){var b=0,c=this.animationsMap[a];return c&&(b=c.time),b},Ni.prototype.getAnimationDuration=function(a){var b=-1,c=this.animationsMap[a];return c&&(b=c.duration),b},Ni.prototype.playAnimation=function(a){var b=this.animationsMap[a];b?(b.time=0,b.active=!0):console.warn("THREE.MorphBlendMesh: animation["+a+"] undefined in .playAnimation()")},Ni.prototype.stopAnimation=function(a){var b=this.animationsMap[a];b&&(b.active=!1)},Ni.prototype.update=function(a){for(var b=0,c=this.animationsList.length;bd.duration||d.time<0)&&(d.direction*=-1,d.time>d.duration&&(d.time=d.duration,d.directionBackwards=!0),d.time<0&&(d.time=0,d.directionBackwards=!1)):(d.time=d.time%d.duration,d.time<0&&(d.time+=d.duration));var f=d.start+tb.clamp(Math.floor(d.time/e),0,d.length-1),g=d.weight;f!==d.currentFrame&&(this.morphTargetInfluences[d.lastFrame]=0,this.morphTargetInfluences[d.currentFrame]=1*g,this.morphTargetInfluences[f]=0,d.lastFrame=d.currentFrame,d.currentFrame=f);var h=d.time%e/e;d.directionBackwards&&(h=1-h),d.currentFrame!==d.lastFrame?(this.morphTargetInfluences[d.currentFrame]=h*g,this.morphTargetInfluences[d.lastFrame]=(1-h)*g):this.morphTargetInfluences[d.currentFrame]=g}}},Oi.prototype=Object.create(Ne.prototype),Oi.prototype.constructor=Oi,Oi.prototype.isImmediateRenderObject=!0,Pi.prototype=Object.create(bg.prototype),Pi.prototype.constructor=Pi,Pi.prototype.update=function(){var a=new Bb,b=new Bb,c=new Fe;return function(){var e=["a","b","c"];this.object.updateMatrixWorld(!0),c.getNormalMatrix(this.object.matrixWorld);var f=this.object.matrixWorld,g=this.geometry.attributes.position,h=this.object.geometry;if(h&&h.isGeometry)for(var i=h.vertices,j=h.faces,k=0,l=0,m=j.length;l.99999?this.quaternion.set(0,0,0,1):d.y<-.99999?this.quaternion.set(1,0,0,0):(a.set(d.z,0,-d.x).normalize(),b=Math.acos(d.y),this.quaternion.setFromAxisAngle(a,b))}}(),bj.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a),void 0===c&&(c=.2*b),this.line.scale.set(1,Math.max(0,a-b),1),this.line.updateMatrix(),this.cone.scale.set(c,b,c),this.cone.position.y=a,this.cone.updateMatrix()},bj.prototype.setColor=function(a){this.line.material.color.copy(a),this.cone.material.color.copy(a)},cj.prototype=Object.create(bg.prototype),cj.prototype.constructor=cj;var ej=new Bb,fj=new dj,gj=new dj,hj=new dj;ij.prototype=Object.create(_h.prototype),ij.prototype.constructor=ij,ij.prototype.getPoint=function(a){var b=this.points,c=b.length;c<2&&console.log("duh, you need at least 2 points");var d=(c-(this.closed?0:1))*a,e=Math.floor(d),f=d-e;this.closed?e+=e>0?0:(Math.floor(Math.abs(e)/b.length)+1)*b.length:0===f&&e===c-1&&(e=c-2,f=1);var g,h,i,j;if(this.closed||e>0?g=b[(e-1)%c]:(ej.subVectors(b[0],b[1]).add(b[0]),g=ej),h=b[e%c],i=b[(e+1)%c],this.closed||e+2=0&&f>=0&&g>=0&&h>=0||!(e<0&&f<0||g<0&&h<0)&&(e<0?c=Math.max(c,e/(e-f)):f<0&&(d=Math.min(d,e/(e-f))),g<0?c=Math.max(c,g/(g-h)):h<0&&(d=Math.min(d,g/(g-h))),!(d=-1&&d.x<=1&&d.y>=-1&&d.y<=1&&d.z>=-1&&d.z<=1}function k(a,b,c){e=M(),e.position.set(a,b,c),j(e)}function l(b,c,d){a.push(b,c,d)}function n(a,c){b.push(a,c)}function o(a,b,c){return a.visible===!0||b.visible===!0||c.visible===!0||(z[0]=a.positionScreen,z[1]=b.positionScreen,z[2]=c.positionScreen,x.intersectsBox(y.setFromPoints(z)))}function p(a,b,c){return(c.positionScreen.x-a.positionScreen.x)*(b.positionScreen.y-a.positionScreen.y)-(c.positionScreen.y-a.positionScreen.y)*(b.positionScreen.x-a.positionScreen.x)<0}function q(a,b){var d=g[a],e=g[b];m=O(),m.id=c.id,m.v1.copy(d),m.v2.copy(e),m.z=(d.positionScreen.z+e.positionScreen.z)/2,m.renderOrder=c.renderOrder,m.material=c.material,u.elements.push(m)}function r(e,h,j){var k=g[e],l=g[h],m=g[j];if(o(k,l,m)!==!1&&(d.side===THREE.DoubleSide||p(k,l,m)===!0)){i=N(),i.id=c.id,i.v1.copy(k),i.v2.copy(l),i.v3.copy(m),i.z=(k.positionScreen.z+l.positionScreen.z+m.positionScreen.z)/3,i.renderOrder=c.renderOrder,i.normalModel.fromArray(a,3*e),i.normalModel.applyMatrix3(f).normalize();for(var n=0;n<3;n++){var q=i.vertexNormalsModel[n];q.fromArray(a,3*arguments[n]),q.applyMatrix3(f).normalize();var r=i.uvs[n];r.fromArray(b,2*arguments[n])}i.vertexNormalsLength=3,i.material=c.material,u.elements.push(i)}}var a=[],b=[],c=null,d=null,f=new THREE.Matrix3;return{setObject:h,projectVertex:j,checkTriangleVisibility:o,checkBackfaceCulling:p,pushVertex:k,pushNormal:l,pushUv:n,pushLine:q,pushTriangle:r}},K=new J;this.projectScene=function(c,d,e,h){function k(b){a=L(),a.id=b.id,a.object=b,v.setFromMatrixPosition(b.matrixWorld),v.applyMatrix4(C),a.z=v.z,a.renderOrder=b.renderOrder,u.objects.push(a)}j=0,n=0,r=0,u.elements.length=0,c.autoUpdate===!0&&c.updateMatrixWorld(),null===d.parent&&d.updateMatrixWorld(),B.copy(d.matrixWorldInverse.getInverse(d.matrixWorld)),C.multiplyMatrices(d.projectionMatrix,B),G.setFromMatrix(C),b=0,u.objects.length=0,u.lights.length=0,c.traverseVisible(function(a){if(a instanceof THREE.Light)u.lights.push(a);else if(a instanceof THREE.Mesh||a instanceof THREE.Line){if(a.material.visible===!1)return;if(a.frustumCulled===!0&&G.intersectsObject(a)===!1)return;k(a)}else if(a instanceof THREE.Sprite){if(a.material.visible===!1)return;if(a.frustumCulled===!0&&G.intersectsSprite(a)===!1)return;k(a)}}),e===!0&&u.objects.sort(Q);for(var l=0,o=u.objects.length;l0)for(var U=0;U0||(pa=g[f-2],H.copy(oa.positionScreen),I.copy(pa.positionScreen),R(H,I)===!0&&(H.multiplyScalar(1/H.w),I.multiplyScalar(1/I.w),m=O(),m.id=p.id,m.v1.positionScreen.copy(H),m.v2.positionScreen.copy(I),m.z=Math.max(H.z,I.z),m.renderOrder=p.renderOrder,m.material=p.material,p.material.vertexColors===THREE.VertexColors&&(m.vertexColors[0].copy(p.geometry.colors[aa]),m.vertexColors[1].copy(p.geometry.colors[aa-1])),u.elements.push(m)))}}else if(p instanceof THREE.Sprite){w.set(D.elements[12],D.elements[13],D.elements[14],1),w.applyMatrix4(C);var za=1/w.w;w.z*=za,w.z>=-1&&w.z<=1&&(q=P(),q.id=p.id,q.x=w.x*za,q.y=w.y*za,q.z=w.z,q.renderOrder=p.renderOrder,q.object=p,q.rotation=p.rotation,q.scale.x=p.scale.x*Math.abs(q.x-(w.x+d.projectionMatrix.elements[0])/(w.w+d.projectionMatrix.elements[12])),q.scale.y=p.scale.y*Math.abs(q.y-(w.y+d.projectionMatrix.elements[5])/(w.w+d.projectionMatrix.elements[13])),q.material=p.material,u.elements.push(q))}}return h===!0&&u.elements.sort(Q),u}},THREE.SpriteCanvasMaterial=function(a){THREE.Material.call(this),this.type="SpriteCanvasMaterial",this.color=new THREE.Color(16777215),this.program=function(a,b){},this.setValues(a)},THREE.SpriteCanvasMaterial.prototype=Object.create(THREE.Material.prototype),THREE.SpriteCanvasMaterial.prototype.constructor=THREE.SpriteCanvasMaterial,THREE.SpriteCanvasMaterial.prototype.clone=function(){var a=new THREE.SpriteCanvasMaterial;return a.copy(this),a.color.copy(this.color),a.program=this.program,a},THREE.CanvasRenderer=function(a){function ta(){ma.setRGB(0,0,0),na.setRGB(0,0,0),oa.setRGB(0,0,0);for(var a=0,b=e.length;a0&&(Ga(THREE.NormalBlending),Fa(1),La("rgba("+Math.floor(255*r.r)+","+Math.floor(255*r.g)+","+Math.floor(255*r.b)+","+s+")"),q.fillRect(0|ka.min.x,0|ka.max.y,ka.max.x-ka.min.x|0,ka.min.y-ka.max.y|0)),ka.makeEmpty())},this.clearColor=function(){},this.clearDepth=function(){},this.clearStencil=function(){},this.render=function(a,g){if(g instanceof THREE.Camera==!1)return void console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");var p=a.background;p&&p.isColor?(La("rgb("+Math.floor(255*p.r)+","+Math.floor(255*p.g)+","+Math.floor(255*p.b)+")"),q.fillRect(0,0,h,i)):this.autoClear===!0&&this.clear(),b.info.render.vertices=0,b.info.render.faces=0,q.setTransform(n/h,0,0,-o/i,l,i-m),q.translate(j,k),c=f.projectScene(a,g,this.sortObjects,this.sortElements),d=c.elements,e=c.lights,B=g,sa.getNormalMatrix(g.matrixWorldInverse),ta();for(var r=0,s=d.length;r1)continue;if(D.positionScreen.z<-1||D.positionScreen.z>1)continue;if(E.positionScreen.z<-1||E.positionScreen.z>1)continue;C.positionScreen.x*=j,C.positionScreen.y*=k,D.positionScreen.x*=j,D.positionScreen.y*=k,E.positionScreen.x*=j,E.positionScreen.y*=k,u.overdraw>0&&(Ea(C.positionScreen,D.positionScreen,u.overdraw),Ea(D.positionScreen,E.positionScreen,u.overdraw),Ea(E.positionScreen,C.positionScreen,u.overdraw)),la.setFromPoints([C.positionScreen,D.positionScreen,E.positionScreen]),ja.intersectsBox(la)===!0&&xa(C,D,E,0,1,2,t,u)}ka.union(la)}}q.setTransform(1,0,0,1,0,0)}}; var SEPARATION = 100, AMOUNTX = 50, AMOUNTY = 50; var container; var camera, scene, renderer; var particles, particle, count = 0; var mouseX = 0, mouseY = 0; /*璁ヽanvas鐨勫楂樹粠鐖跺鍣ㄥ彇鍒?/ var canvasBox = $('.canvas-box'); var canW = canvasBox.width(); var canH = canvasBox.height(); var windowHalfX = canW / 2; var windowHalfY = canH / 2; if($(window).width() > 800 && canvasBox.length>0){ init(); animate(); } function init() { container = document.createElement('div'); canvasBox.append(container); camera = new THREE.PerspectiveCamera(100, window.innerWidth / window.innerHeight, 1, 10000); camera.position.z = 1000; scene = new THREE.Scene(); scene.background = new THREE.Color(0xffffff); particles = new Array(); var PI2 = Math.PI * 2; var color = new THREE.Color("rgb(183, 183, 183)"); //var color = new THREE.Color("rgb(183, 183, 183)"); var material = new THREE.SpriteCanvasMaterial({ color: color, program: function(context) { context.beginPath(); context.arc(0, 0, 0.5, 0, PI2, true); context.fill(); } }); var i = 0; for (var ix = 0; ix < AMOUNTX; ix++) { for (var iy = 0; iy < AMOUNTY; iy++) { particle = particles[i++] = new THREE.Sprite(material); particle.position.x = ix * SEPARATION - ((AMOUNTX * SEPARATION) / 2); particle.position.z = iy * SEPARATION - ((AMOUNTY * SEPARATION) / 2); scene.add(particle); } } renderer = new THREE.CanvasRenderer(); renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(canW,canH); container.appendChild(renderer.domElement); document.addEventListener('mousemove', onDocumentMouseMove, false); //document.addEventListener( 'touchstart', onDocumentTouchStart, false ); //document.addEventListener( 'touchmove', onDocumentTouchMove, false ); // window.addEventListener('resize', onWindowResize, false); } function onWindowResize() { windowHalfX = window.innerWidth / 2; windowHalfY = window.innerHeight / 2; var canW = canvasBox.width(); var canH = canvasBox.height(); camera.aspect = canW / canH; camera.updateProjectionMatrix(); renderer.setSize(canW,canH); } // function onDocumentMouseMove(event) { mouseX = event.clientX - windowHalfX; mouseY = event.clientY - windowHalfY; } function onDocumentTouchStart(event) { if (event.touches.length === 1) { event.preventDefault(); mouseX = event.touches[0].pageX - windowHalfX; mouseY = event.touches[0].pageY - windowHalfY; } } function onDocumentTouchMove(event) { if (event.touches.length === 1) { event.preventDefault(); mouseX = event.touches[0].pageX - windowHalfX; mouseY = event.touches[0].pageY - windowHalfY; } } // function animate() { requestAnimationFrame(animate); render(); } function render() { camera.position.x += (900 - camera.position.x) * .05; camera.position.y += (500 - camera.position.y) * .1; camera.lookAt(scene.position); var i = 0; for (var ix = 0; ix < AMOUNTX; ix++) { for (var iy = 0; iy < AMOUNTY; iy++) { particle = particles[i++]; particle.position.y = (Math.sin((ix + count) * 0.3) * 50) + (Math.sin((iy + count) * 0.5) * 50); particle.scale.x = particle.scale.y = (Math.sin((ix + count) * 0.3) + 1) * 4 + (Math.sin((iy + count) * 0.5) + 1) * 4; } } renderer.render(scene, camera); count += 0.1; }