diff --git a/build/three.min.js b/build/three.min.js index 209bbe28c5b498edf451fd2cbf50334c85df85da..a466b12f6a4b6992476e1d1b32456f204450b973 100644 --- a/build/three.min.js +++ b/build/three.min.js @@ -5,9 +5,8 @@ String.prototype.trim=String.prototype.trim||function(){return this.replace(/^\s function(a){window.clearTimeout(a)}})();THREE.FrontSide=0;THREE.BackSide=1;THREE.DoubleSide=2;THREE.NoShading=0;THREE.FlatShading=1;THREE.SmoothShading=2;THREE.NoColors=0;THREE.FaceColors=1;THREE.VertexColors=2;THREE.NoBlending=0;THREE.NormalBlending=1;THREE.AdditiveBlending=2;THREE.SubtractiveBlending=3;THREE.MultiplyBlending=4;THREE.CustomBlending=5;THREE.AddEquation=100;THREE.SubtractEquation=101;THREE.ReverseSubtractEquation=102;THREE.ZeroFactor=200;THREE.OneFactor=201;THREE.SrcColorFactor=202; THREE.OneMinusSrcColorFactor=203;THREE.SrcAlphaFactor=204;THREE.OneMinusSrcAlphaFactor=205;THREE.DstAlphaFactor=206;THREE.OneMinusDstAlphaFactor=207;THREE.DstColorFactor=208;THREE.OneMinusDstColorFactor=209;THREE.SrcAlphaSaturateFactor=210;THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.AddOperation=2;THREE.UVMapping=function(){};THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){}; THREE.RepeatWrapping=1E3;THREE.ClampToEdgeWrapping=1001;THREE.MirroredRepeatWrapping=1002;THREE.NearestFilter=1003;THREE.NearestMipMapNearestFilter=1004;THREE.NearestMipMapLinearFilter=1005;THREE.LinearFilter=1006;THREE.LinearMipMapNearestFilter=1007;THREE.LinearMipMapLinearFilter=1008;THREE.UnsignedByteType=1009;THREE.ByteType=1010;THREE.ShortType=1011;THREE.UnsignedShortType=1012;THREE.IntType=1013;THREE.UnsignedIntType=1014;THREE.FloatType=1015;THREE.UnsignedShort4444Type=1016; -THREE.UnsignedShort5551Type=1017;THREE.UnsignedShort565Type=1018;THREE.AlphaFormat=1019;THREE.RGBFormat=1020;THREE.RGBAFormat=1021;THREE.LuminanceFormat=1022;THREE.LuminanceAlphaFormat=1023;THREE.RGB_S3TC_DXT1_Format=2001;THREE.RGBA_S3TC_DXT1_Format=2002;THREE.RGBA_S3TC_DXT3_Format=2003;THREE.RGBA_S3TC_DXT5_Format=2004;THREE.Clock=function(a){this.autoStart=void 0!==a?a:!0;this.elapsedTime=this.oldTime=this.startTime=0;this.running=!1}; -THREE.Clock.prototype.start=function(){this.oldTime=this.startTime=Date.now();this.running=!0};THREE.Clock.prototype.stop=function(){this.getElapsedTime();this.running=!1};THREE.Clock.prototype.getElapsedTime=function(){this.getDelta();return this.elapsedTime};THREE.Clock.prototype.getDelta=function(){var a=0;this.autoStart&&!this.running&&this.start();if(this.running){var b=Date.now(),a=0.001*(b-this.oldTime);this.oldTime=b;this.elapsedTime+=a}return a}; -THREE.Color=function(a){void 0!==a&&this.setHex(a);return this}; +THREE.UnsignedShort5551Type=1017;THREE.UnsignedShort565Type=1018;THREE.AlphaFormat=1019;THREE.RGBFormat=1020;THREE.RGBAFormat=1021;THREE.LuminanceFormat=1022;THREE.LuminanceAlphaFormat=1023;THREE.RGB_S3TC_DXT1_Format=2001;THREE.RGBA_S3TC_DXT1_Format=2002;THREE.RGBA_S3TC_DXT3_Format=2003;THREE.RGBA_S3TC_DXT5_Format=2004;THREE.Clock=function(a){this.autoStart=void 0!==a?a:!0;this.elapsedTime=this.oldTime=this.startTime=0;this.running=!1};THREE.Clock.prototype.start=function(){this.oldTime=this.startTime=Date.now();this.running=!0};THREE.Clock.prototype.stop=function(){this.getElapsedTime();this.running=!1};THREE.Clock.prototype.getElapsedTime=function(){this.getDelta();return this.elapsedTime}; +THREE.Clock.prototype.getDelta=function(){var a=0;this.autoStart&&!this.running&&this.start();if(this.running){var b=Date.now(),a=0.001*(b-this.oldTime);this.oldTime=b;this.elapsedTime+=a}return a};THREE.Color=function(a){void 0!==a&&this.setHex(a);return this}; THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,copy:function(a){this.r=a.r;this.g=a.g;this.b=a.b;return this},copyGammaToLinear:function(a){this.r=a.r*a.r;this.g=a.g*a.g;this.b=a.b*a.b;return this},copyLinearToGamma:function(a){this.r=Math.sqrt(a.r);this.g=Math.sqrt(a.g);this.b=Math.sqrt(a.b);return this},convertGammaToLinear:function(){var a=this.r,b=this.g,c=this.b;this.r=a*a;this.g=b*b;this.b=c*c;return this},convertLinearToGamma:function(){this.r=Math.sqrt(this.r);this.g=Math.sqrt(this.g); this.b=Math.sqrt(this.b);return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSV:function(a,b,c){var d,e,f;0===c?this.r=this.g=this.b=0:(d=Math.floor(6*a),e=6*a-d,a=c*(1-b),f=c*(1-b*e),b=c*(1-b*(1-e)),0===d?(this.r=c,this.g=b,this.b=a):1===d?(this.r=f,this.g=c,this.b=a):2===d?(this.r=a,this.g=c,this.b=b):3===d?(this.r=a,this.g=f,this.b=c):4===d?(this.r=b,this.g=a,this.b=c):5===d&&(this.r=c,this.g=a,this.b=f));return this},getHex:function(){return 255*this.r<<16^255*this.g<< 8^255*this.b<<0},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getContextStyle:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"},setContextStyle:function(a){a=/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/i.exec(a);this.r=parseInt(a[1],10)/255;this.g=parseInt(a[2],10)/255;this.b=parseInt(a[3],10)/255;return this},getHSV:function(a){var b= @@ -32,18 +31,18 @@ Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return b):h>j?0.01>h?(b=0.707106781,c=0,d=0.707106781):(c=Math.sqrt(h),b=d/c,d=i/c):0.01>j?(c=b=0.707106781,d=0):(d=Math.sqrt(j),b=f/d,c=i/d);this.set(b,c,d,a);return this}a=Math.sqrt((b-i)*(b-i)+(f-c)*(f-c)+(g-d)*(g-d));0.001>Math.abs(a)&&(a=1);this.x=(b-i)/a;this.y=(f-c)/a;this.z=(g-d)/a;this.w=Math.acos((e+h+j-1)/2);return this}};THREE.Matrix3=function(){this.elements=new Float32Array(9)}; THREE.Matrix3.prototype={constructor:THREE.Matrix3,multiplyVector3:function(a){var b=this.elements,c=a.x,d=a.y,e=a.z;a.x=b[0]*c+b[3]*d+b[6]*e;a.y=b[1]*c+b[4]*d+b[7]*e;a.z=b[2]*c+b[5]*d+b[8]*e;return a},multiplyVector3Array:function(a){for(var b=THREE.Matrix3.__v1,c=0,d=a.length;cd;d++)a=b[d],a.divideScalar(Math.sqrt(a.x*a.x+a.y*a.y+a.z*a.z))}; -THREE.Frustum.prototype.contains=function(a){for(var b=0,c=this.planes,b=a.matrixWorld,d=b.elements,a=-a.geometry.boundingSphere.radius*b.getMaxScaleOnAxis(),e=0;6>e;e++)if(b=c[e].x*d[12]+c[e].y*d[13]+c[e].z*d[14]+c[e].w,b<=a)return!1;return!0};THREE.Frustum.__v1=new THREE.Vector3; -(function(a){a.Ray=function(b,c,d,e){this.origin=b||new a.Vector3;this.direction=c||new a.Vector3;this.near=d||0;this.far=e||Infinity};var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3,e=new a.Vector3;new a.Vector3;var f=new a.Vector3,g=new a.Matrix4,h=function(a,b){return a.distance-b.distance},i=new a.Vector3,j=new a.Vector3,l=new a.Vector3,m=function(a,b,c){i.sub(c,a);var d=i.dot(b),a=j.add(a,l.copy(b).multiplyScalar(d));return c.distanceTo(a)},n=function(a,b,c,d){i.sub(d,b);j.sub(c,b);l.sub(a, -b);var a=i.dot(i),b=i.dot(j),c=i.dot(l),e=j.dot(j),d=j.dot(l),f=1/(a*e-b*b),e=(e*c-b*d)*f,a=(a*d-b*c)*f;return 0<=e&&0<=a&&1>e+a},o=function(h,i,j){if(h instanceof a.Particle){var l=m(i.origin,i.direction,h.matrixWorld.getPosition());if(l>h.scale.x)return j;j.push({distance:l,point:h.position,face:null,object:h})}else if(h instanceof a.Mesh){var o=h.geometry.boundingSphere.radius*h.matrixWorld.getMaxScaleOnAxis(),l=m(i.origin,i.direction,h.matrixWorld.getPosition());if(l>o)return j;var o=h.geometry, -p=o.vertices,E=h.material instanceof a.MeshFaceMaterial,z=!0===E?h.material.materials:null,l=h.material.side,u,y,D,A=i.precision;h.matrixRotationWorld.extractRotation(h.matrixWorld);b.copy(i.origin);g.getInverse(h.matrixWorld);c.copy(b);g.multiplyVector3(c);d.copy(i.direction);g.rotateAxis(d).normalize();for(var I=0,J=o.faces.length;I -y)&&(l===a.DoubleSide||(l===a.FrontSide?0>u:0i.far||j.push({distance:l,point:u,face:B,faceIndex:I,object:h}));else if(B instanceof a.Face4&&(l=p[B.a],u=p[B.b],y=p[B.c],D=p[B.d],n(f,l,u,D)||n(f,u,y,D)))u=h.matrixWorld.multiplyVector3(f.clone()),l=b.distanceTo(u),li.far||j.push({distance:l,point:u,face:B,faceIndex:I,object:h})}}}, -p=function(a,b,c){for(var a=a.getDescendants(),d=0,e=a.length;df?d:f,e=e> -g?e:g);a()};this.add3Points=function(f,g,l,m,n,o){!0===h?(h=!1,b=fl?f>n?f:n:l>n?l:n,e=g>m?g>o?g:o:m>o?m:o):(b=fl?f>n?f>d?f:d:n>d?n:d:l>n?l>d?l:d:n>d?n:d,e=g>m?g>o?g>e?g:e:o>e?o:e:m>o?m>e?m:e:o>e?o:e);a()};this.addRectangle=function(f){!0===h?(h=!1,b=f.getLeft(),c=f.getTop(),d=f.getRight(),e=f.getBottom()):(b=bf.getRight()?d:f.getRight(),e=e>f.getBottom()?e:f.getBottom());a()};this.inflate=function(f){b-=f;c-=f;d+=f;e+=f;a()};this.minSelf=function(f){b=b>f.getLeft()?b:f.getLeft();c=c>f.getTop()?c:f.getTop();d=da.getRight()||ea.getBottom()?!1:!0};this.empty=function(){h=!0;e=d=c=b=0;a()};this.isEmpty=function(){return h}}; -THREE.Math={clamp:function(a,b,c){return ac?c:a},clampBottom:function(a,b){return aa?-1:0d;d++)a=b[d],a.divideScalar(Math.sqrt(a.x*a.x+a.y*a.y+a.z*a.z))}; +THREE.Frustum.prototype.contains=function(a){for(var b=0,c=this.planes,b=a.matrixWorld,d=b.elements,a=-a.geometry.boundingSphere.radius*b.getMaxScaleOnAxis(),e=0;6>e;e++)if(b=c[e].x*d[12]+c[e].y*d[13]+c[e].z*d[14]+c[e].w,b<=a)return!1;return!0};THREE.Frustum.__v1=new THREE.Vector3;(function(a){a.Ray=function(b,c,d,e){this.origin=b||new a.Vector3;this.direction=c||new a.Vector3;this.near=d||0;this.far=e||Infinity};var b=new a.Vector3,c=new a.Vector3,d=new a.Vector3,e=new a.Vector3;new a.Vector3;var f=new a.Vector3,g=new a.Matrix4,h=function(a,b){return a.distance-b.distance},i=new a.Vector3,j=new a.Vector3,l=new a.Vector3,m=function(a,b,c){i.sub(c,a);var d=i.dot(b),a=j.add(a,l.copy(b).multiplyScalar(d));return c.distanceTo(a)},n=function(a,b,c,d){i.sub(d,b);j.sub(c,b);l.sub(a, +b);var a=i.dot(i),b=i.dot(j),c=i.dot(l),e=j.dot(j),d=j.dot(l),f=1/(a*e-b*b),e=(e*c-b*d)*f,a=(a*d-b*c)*f;return 0<=e&&0<=a&&1>e+a},p=function(h,i,j){if(h instanceof a.Particle){var l=m(i.origin,i.direction,h.matrixWorld.getPosition());if(l>h.scale.x)return j;j.push({distance:l,point:h.position,face:null,object:h})}else if(h instanceof a.Mesh){var p=h.geometry.boundingSphere.radius*h.matrixWorld.getMaxScaleOnAxis(),l=m(i.origin,i.direction,h.matrixWorld.getPosition());if(l>p)return j;var p=h.geometry, +q=p.vertices,F=h.material instanceof a.MeshFaceMaterial,A=!0===F?h.material.materials:null,l=h.material.side,v,z,E,B=i.precision;h.matrixRotationWorld.extractRotation(h.matrixWorld);b.copy(i.origin);g.getInverse(h.matrixWorld);c.copy(b);g.multiplyVector3(c);d.copy(i.direction);g.rotateAxis(d).normalize();for(var J=0,K=p.faces.length;J +z)&&(l===a.DoubleSide||(l===a.FrontSide?0>v:0i.far||j.push({distance:l,point:v,face:C,faceIndex:J,object:h}));else if(C instanceof a.Face4&&(l=q[C.a],v=q[C.b],z=q[C.c],E=q[C.d],n(f,l,v,E)||n(f,v,z,E)))v=h.matrixWorld.multiplyVector3(f.clone()),l=b.distanceTo(v),li.far||j.push({distance:l,point:v,face:C,faceIndex:J,object:h})}}}, +q=function(a,b,c){for(var a=a.getDescendants(),d=0,e=a.length;df?d:f,e=e> +g?e:g);a()};this.add3Points=function(f,g,l,m,n,p){!0===h?(h=!1,b=fl?f>n?f:n:l>n?l:n,e=g>m?g>p?g:p:m>p?m:p):(b=fl?f>n?f>d?f:d:n>d?n:d:l>n?l>d?l:d:n>d?n:d,e=g>m?g>p?g>e?g:e:p>e?p:e:m>p?m>e?m:e:p>e?p:e);a()};this.addRectangle=function(f){!0===h?(h=!1,b=f.getLeft(),c=f.getTop(),d=f.getRight(),e=f.getBottom()):(b=bf.getRight()?d:f.getRight(),e=e>f.getBottom()?e:f.getBottom());a()};this.inflate=function(f){b-=f;c-=f;d+=f;e+=f;a()};this.minSelf=function(f){b=b>f.getLeft()?b:f.getLeft();c=c>f.getTop()?c:f.getTop();d=da.getRight()||ea.getBottom()?!1:!0};this.empty=function(){h=!0;e=d=c=b=0;a()};this.isEmpty=function(){return h}};THREE.Math={clamp:function(a,b,c){return ac?c:a},clampBottom:function(a,b){return aa?-1:0e&&0>f||0>g&&0>h)return!1;0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f)));0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h)));if(d< -c)return!1;a.lerpSelf(b,c);b.lerpSelf(a,1-d);return!0}var e,f,g=[],h=0,i,j,l=[],m=0,n,o,p=[],q=0,t,r=[],C=0,w,s,E=[],z=0,u,y,D=[],A=0,I={objects:[],sprites:[],lights:[],elements:[]},J=new THREE.Vector3,B=new THREE.Vector4,K=new THREE.Matrix4,H=new THREE.Matrix4,L=new THREE.Matrix3,P=new THREE.Frustum,N=new THREE.Vector4,Q=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);K.multiply(b.projectionMatrix,b.matrixWorldInverse);K.multiplyVector3(a);return a}; -this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);K.multiply(b.matrixWorld,b.projectionMatrixInverse);K.multiplyVector3(a);return a};this.pickingRay=function(a,b){var c;a.z=-1;c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.subSelf(a).normalize();return new THREE.Ray(a,c)};this.projectScene=function(g,h,m,R){var $=h.near,fa=h.far,Ha=!1,G,ba,ha,Y,ia,ca,aa,na,db,La,ya,pa,Ra,eb,ub;y=s=t=o=0;I.elements.length=0;g.updateMatrixWorld(); -void 0===h.parent&&h.updateMatrixWorld();h.matrixWorldInverse.getInverse(h.matrixWorld);K.multiply(h.projectionMatrix,h.matrixWorldInverse);P.setFromMatrix(K);f=0;I.objects.length=0;I.sprites.length=0;I.lights.length=0;var qb=function(b){for(var c=0,d=b.children.length;c$&&i.positionScreen.z(aa.positionScreen.x-Y.positionScreen.x)*(ia.positionScreen.y-Y.positionScreen.y)-(aa.positionScreen.y-Y.positionScreen.y)*(ia.positionScreen.x-Y.positionScreen.x),ca===THREE.DoubleSide||Ha===(ca===THREE.FrontSide))o=== -q?(pa=new THREE.RenderableFace3,p.push(pa),q++,o++,n=pa):n=p[o++],n.v1.copy(Y),n.v2.copy(ia),n.v3.copy(aa);else continue;else continue;else if(ba instanceof THREE.Face4)if(Y=l[ba.a],ia=l[ba.b],aa=l[ba.c],pa=l[ba.d],!0===Y.visible&&!0===ia.visible&&!0===aa.visible&&!0===pa.visible)if(Ha=0>(pa.positionScreen.x-Y.positionScreen.x)*(ia.positionScreen.y-Y.positionScreen.y)-(pa.positionScreen.y-Y.positionScreen.y)*(ia.positionScreen.x-Y.positionScreen.x)||0>(ia.positionScreen.x-aa.positionScreen.x)*(pa.positionScreen.y- -aa.positionScreen.y)-(ia.positionScreen.y-aa.positionScreen.y)*(pa.positionScreen.x-aa.positionScreen.x),ca===THREE.DoubleSide||Ha===(ca===THREE.FrontSide)){if(t===C){var mb=new THREE.RenderableFace4;r.push(mb);C++;t++;n=mb}else n=r[t++];n.v1.copy(Y);n.v2.copy(ia);n.v3.copy(aa);n.v4.copy(pa)}else continue;else continue;n.normalWorld.copy(ba.normal);!1===Ha&&(ca===THREE.BackSide||ca===THREE.DoubleSide)&&n.normalWorld.negate();L.multiplyVector3(n.normalWorld).normalize();n.centroidWorld.copy(ba.centroid); -db.multiplyVector3(n.centroidWorld);n.centroidScreen.copy(n.centroidWorld);K.multiplyVector3(n.centroidScreen);aa=ba.vertexNormals;Y=0;for(ia=aa.length;YB.z&&(y===A?($=new THREE.RenderableParticle,D.push($),A++,y++,u=$):u=D[y++],u.object=na,u.x=B.x/B.w,u.y=B.y/B.w,u.z=B.z,u.rotation=na.rotation.z,u.scale.x=na.scale.x*Math.abs(u.x- -(B.x+h.projectionMatrix.elements[0])/(B.w+h.projectionMatrix.elements[12])),u.scale.y=na.scale.y*Math.abs(u.y-(B.y+h.projectionMatrix.elements[5])/(B.w+h.projectionMatrix.elements[13])),u.material=na.material,I.elements.push(u)));!0===R&&I.elements.sort(c);return I}};THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}; +return a},deallocate:function(){var a=THREE.Object3DLibrary.indexOf(this);-1!==a&&THREE.Object3DLibrary.splice(a,1)}};THREE.Object3D.__m1=new THREE.Matrix4;THREE.Object3D.defaultEulerOrder="XYZ";THREE.Object3DIdCount=0;THREE.Object3DLibrary=[];THREE.Projector=function(){function a(){if(f===h){var a=new THREE.RenderableObject;g.push(a);h++;f++;return a}return g[f++]}function b(){if(j===m){var a=new THREE.RenderableVertex;l.push(a);m++;j++;return a}return l[j++]}function c(a,b){return b.z-a.z}function d(a,b){var c=0,d=1,e=a.z+a.w,f=b.z+b.w,g=-a.z+a.w,h=-b.z+b.w;if(0<=e&&0<=f&&0<=g&&0<=h)return!0;if(0>e&&0>f||0>g&&0>h)return!1;0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f)));0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h)));if(d< +c)return!1;a.lerpSelf(b,c);b.lerpSelf(a,1-d);return!0}var e,f,g=[],h=0,i,j,l=[],m=0,n,p,q=[],r=0,u,s=[],D=0,x,t,F=[],A=0,v,z,E=[],B=0,J={objects:[],sprites:[],lights:[],elements:[]},K=new THREE.Vector3,C=new THREE.Vector4,L=new THREE.Matrix4,I=new THREE.Matrix4,M=new THREE.Matrix3,Q=new THREE.Frustum,O=new THREE.Vector4,R=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);L.multiply(b.projectionMatrix,b.matrixWorldInverse);L.multiplyVector3(a);return a}; +this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);L.multiply(b.matrixWorld,b.projectionMatrixInverse);L.multiplyVector3(a);return a};this.pickingRay=function(a,b){var c;a.z=-1;c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.subSelf(a).normalize();return new THREE.Ray(a,c)};this.projectScene=function(g,h,m,S){var aa=h.near,ga=h.far,Ia=!1,H,ca,ia,Z,ja,da,ba,oa,eb,Ma,za,qa,Sa,fb,vb;z=t=u=p=0;J.elements.length=0;g.updateMatrixWorld(); +void 0===h.parent&&h.updateMatrixWorld();h.matrixWorldInverse.getInverse(h.matrixWorld);L.multiply(h.projectionMatrix,h.matrixWorldInverse);Q.setFromMatrix(L);f=0;J.objects.length=0;J.sprites.length=0;J.lights.length=0;var rb=function(b){for(var c=0,d=b.children.length;caa&&i.positionScreen.z(ba.positionScreen.x-Z.positionScreen.x)*(ja.positionScreen.y-Z.positionScreen.y)-(ba.positionScreen.y-Z.positionScreen.y)*(ja.positionScreen.x-Z.positionScreen.x),da===THREE.DoubleSide||Ia===(da===THREE.FrontSide))p=== +r?(qa=new THREE.RenderableFace3,q.push(qa),r++,p++,n=qa):n=q[p++],n.v1.copy(Z),n.v2.copy(ja),n.v3.copy(ba);else continue;else continue;else if(ca instanceof THREE.Face4)if(Z=l[ca.a],ja=l[ca.b],ba=l[ca.c],qa=l[ca.d],!0===Z.visible&&!0===ja.visible&&!0===ba.visible&&!0===qa.visible)if(Ia=0>(qa.positionScreen.x-Z.positionScreen.x)*(ja.positionScreen.y-Z.positionScreen.y)-(qa.positionScreen.y-Z.positionScreen.y)*(ja.positionScreen.x-Z.positionScreen.x)||0>(ja.positionScreen.x-ba.positionScreen.x)*(qa.positionScreen.y- +ba.positionScreen.y)-(ja.positionScreen.y-ba.positionScreen.y)*(qa.positionScreen.x-ba.positionScreen.x),da===THREE.DoubleSide||Ia===(da===THREE.FrontSide)){if(u===D){var nb=new THREE.RenderableFace4;s.push(nb);D++;u++;n=nb}else n=s[u++];n.v1.copy(Z);n.v2.copy(ja);n.v3.copy(ba);n.v4.copy(qa)}else continue;else continue;n.normalWorld.copy(ca.normal);!1===Ia&&(da===THREE.BackSide||da===THREE.DoubleSide)&&n.normalWorld.negate();M.multiplyVector3(n.normalWorld).normalize();n.centroidWorld.copy(ca.centroid); +eb.multiplyVector3(n.centroidWorld);n.centroidScreen.copy(n.centroidWorld);L.multiplyVector3(n.centroidScreen);ba=ca.vertexNormals;Z=0;for(ja=ba.length;ZC.z&&(z===B?(aa=new THREE.RenderableParticle,E.push(aa),B++,z++,v=aa):v=E[z++],v.object=oa,v.x=C.x/C.w,v.y=C.y/C.w,v.z=C.z,v.rotation=oa.rotation.z,v.scale.x=oa.scale.x*Math.abs(v.x- +(C.x+h.projectionMatrix.elements[0])/(C.w+h.projectionMatrix.elements[12])),v.scale.y=oa.scale.y*Math.abs(v.y-(C.y+h.projectionMatrix.elements[5])/(C.w+h.projectionMatrix.elements[13])),v.material=oa.material,J.elements.push(v)));!0===S&&J.elements.sort(c);return J}};THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}; THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w;return this},setFromEuler:function(a,b){var c=Math.cos(a.x/2),d=Math.cos(a.y/2),e=Math.cos(a.z/2),f=Math.sin(a.x/2),g=Math.sin(a.y/2),h=Math.sin(a.z/2);void 0===b||"XYZ"===b?(this.x=f*d*e+c*g*h,this.y=c*g*e-f*d*h,this.z=c*d*h+f*g*e,this.w=c*d*e-f*g*h):"YXZ"===b?(this.x=f*d*e+c*g*h,this.y=c*g*e-f*d*h,this.z=c*d* h-f*g*e,this.w=c*d*e+f*g*h):"ZXY"===b?(this.x=f*d*e-c*g*h,this.y=c*g*e+f*d*h,this.z=c*d*h+f*g*e,this.w=c*d*e-f*g*h):"ZYX"===b?(this.x=f*d*e-c*g*h,this.y=c*g*e+f*d*h,this.z=c*d*h-f*g*e,this.w=c*d*e+f*g*h):"YZX"===b?(this.x=f*d*e+c*g*h,this.y=c*g*e+f*d*h,this.z=c*d*h-f*g*e,this.w=c*d*e-f*g*h):"XZY"===b&&(this.x=f*d*e-c*g*h,this.y=c*g*e-f*d*h,this.z=c*d*h+f*g*e,this.w=c*d*e+f*g*h);return this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);this.x=a.x*d;this.y=a.y*d;this.z=a.z*d;this.w=Math.cos(c); return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0],a=b[4],d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],i=b[6],b=b[10],j=c+f+b;0f&&c>b?(c=2*Math.sqrt(1+c-f-b),this.w=(i-g)/c,this.x=0.25*c,this.y=(a+e)/c,this.z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this.w=(d-h)/c,this.x=(a+e)/c,this.y=0.25*c,this.z=(g+i)/c):(c=2*Math.sqrt(1+b-c-f),this.w=(e-a)/c,this.x=(d+h)/c,this.y=(g+i)/c,this.z=0.25*c);return this},inverse:function(){this.conjugate().normalize(); return this},conjugate:function(){this.x*=-1;this.y*=-1;this.z*=-1;return this},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=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);0===a?(this.z=this.y=this.x=0,this.w=1):(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a);return this},multiply: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;this.x=c*j+d*i-e*h+f*g;this.y=-c*i+d*j+e*g+f*h;this.z=c*h- d*g+e*j+f*i;this.w=-c*g-d*h-e*i+f*j;return this},multiplySelf:function(a){var b=this.x,c=this.y,d=this.z,e=this.w,f=a.x,g=a.y,h=a.z,a=a.w;this.x=b*a+e*f+c*h-d*g;this.y=c*a+e*g+d*f-b*h;this.z=d*a+e*h+b*g-c*f;this.w=e*a-b*f-c*g-d*h;return this},multiplyVector3:function(a,b){b||(b=a);var c=a.x,d=a.y,e=a.z,f=this.x,g=this.y,h=this.z,i=this.w,j=i*c+g*e-h*d,l=i*d+h*c-f*e,m=i*e+f*d-g*c,c=-f*c-g*d-h*e;b.x=j*i+c*-f+l*-h-m*-g;b.y=l*i+c*-g+m*-f-j*-h;b.z=m*i+c*-h+j*-g-l*-f;return b},slerpSelf:function(a,b){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;0>g?(this.w=-a.w,this.x=-a.x,this.y=-a.y,this.z=-a.z,g=-g):this.copy(a);if(1<=g)return this.w=f,this.x=c,this.y=d,this.z=e,this;var h=Math.acos(g),i=Math.sqrt(1-g*g);if(0.001>Math.abs(i))return this.w=0.5*(f+this.w),this.x=0.5*(c+this.x),this.y=0.5*(d+this.y),this.z=0.5*(e+this.z),this;g=Math.sin((1-b)*h)/i;h=Math.sin(b*h)/i;this.w=f*g+this.w*h;this.x=c*g+this.x*h;this.y=d*g+this.y*h;this.z=e*g+this.z*h;return this},clone:function(){return new THREE.Quaternion(this.x, -this.y,this.z,this.w)}};THREE.Quaternion.slerp=function(a,b,c,d){var e=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;0>e?(c.w=-b.w,c.x=-b.x,c.y=-b.y,c.z=-b.z,e=-e):c.copy(b);if(1<=Math.abs(e))return c.w=a.w,c.x=a.x,c.y=a.y,c.z=a.z,c;var b=Math.acos(e),f=Math.sqrt(1-e*e);if(0.001>Math.abs(f))return c.w=0.5*(a.w+c.w),c.x=0.5*(a.x+c.x),c.y=0.5*(a.y+c.y),c.z=0.5*(a.z+c.z),c;e=Math.sin((1-d)*b)/f;d=Math.sin(d*b)/f;c.w=a.w*e+c.w*d;c.x=a.x*e+c.x*d;c.y=a.y*e+c.y*d;c.z=a.z*e+c.z*d;return c}; -THREE.Vertex=function(a){console.warn("THREE.Vertex has been DEPRECATED. Use THREE.Vector3 instead.");return a};THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=f;this.centroid=new THREE.Vector3}; +this.y,this.z,this.w)}};THREE.Quaternion.slerp=function(a,b,c,d){var e=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;0>e?(c.w=-b.w,c.x=-b.x,c.y=-b.y,c.z=-b.z,e=-e):c.copy(b);if(1<=Math.abs(e))return c.w=a.w,c.x=a.x,c.y=a.y,c.z=a.z,c;var b=Math.acos(e),f=Math.sqrt(1-e*e);if(0.001>Math.abs(f))return c.w=0.5*(a.w+c.w),c.x=0.5*(a.x+c.x),c.y=0.5*(a.y+c.y),c.z=0.5*(a.z+c.z),c;e=Math.sin((1-d)*b)/f;d=Math.sin(d*b)/f;c.w=a.w*e+c.w*d;c.x=a.x*e+c.x*d;c.y=a.y*e+c.y*d;c.z=a.z*e+c.z*d;return c};THREE.Vertex=function(a){console.warn("THREE.Vertex has been DEPRECATED. Use THREE.Vector3 instead.");return a};THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=f;this.centroid=new THREE.Vector3}; THREE.Face3.prototype={constructor:THREE.Face3,clone:function(){var a=new THREE.Face3(this.a,this.b,this.c);a.normal.copy(this.normal);a.color.copy(this.color);a.centroid.copy(this.centroid);a.materialIndex=this.materialIndex;var b,c;b=0;for(c=this.vertexNormals.length;be?-1:1,f.vertexTangents[d]=new THREE.Vector4(B.x,B.y,B.z,e)}this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;cc.x&&(c.x=a.x),a.yc.y&&(c.y=a.y),a.zc.z&&(c.z=a.z)}else this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0)},computeBoundingSphere:function(){var a=0;null===this.boundingSphere&&(this.boundingSphere={radius:0});for(var b= +e.vertexNormals=e.__originalVertexNormals},computeTangents:function(){function a(a,b,c,d,e,f,z){h=a.vertices[b];i=a.vertices[c];j=a.vertices[d];l=g[e];m=g[f];n=g[z];p=i.x-h.x;q=j.x-h.x;r=i.y-h.y;u=j.y-h.y;s=i.z-h.z;D=j.z-h.z;x=m.u-l.u;t=n.u-l.u;F=m.v-l.v;A=n.v-l.v;v=1/(x*A-t*F);J.set((A*p-F*q)*v,(A*r-F*u)*v,(A*s-F*D)*v);K.set((x*q-t*p)*v,(x*u-t*r)*v,(x*D-t*s)*v);E[b].addSelf(J);E[c].addSelf(J);E[d].addSelf(J);B[b].addSelf(K);B[c].addSelf(K);B[d].addSelf(K)}var b,c,d,e,f,g,h,i,j,l,m,n,p,q,r,u,s,D, +x,t,F,A,v,z,E=[],B=[],J=new THREE.Vector3,K=new THREE.Vector3,C=new THREE.Vector3,L=new THREE.Vector3,I=new THREE.Vector3;b=0;for(c=this.vertices.length;be?-1:1,f.vertexTangents[d]=new THREE.Vector4(C.x,C.y,C.z,e)}this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;cc.x&&(c.x=a.x),a.yc.y&&(c.y=a.y),a.zc.z&&(c.z=a.z)}else this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0)},computeBoundingSphere:function(){var a=0;null===this.boundingSphere&&(this.boundingSphere={radius:0});for(var b= 0,c=this.vertices.length;ba&&(a=d)}this.boundingSphere.radius=Math.sqrt(a)},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,g,h,i;f=0;for(g=this.vertices.length;fb.max.x&&(b.max.x=c),db.max.y&&(b.max.y=d),eb.max.z&&(b.max.z=e);if(void 0===a||0===a.length)this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0)},computeBoundingSphere:function(){this.boundingSphere||(this.boundingSphere={radius:0}); +Infinity,Infinity),max:new THREE.Vector3(-Infinity,-Infinity,-Infinity)});var a=this.attributes.position.array;if(a)for(var b=this.boundingBox,c,d,e,f=0,g=a.length;fb.max.x&&(b.max.x=c),db.max.y&&(b.max.y=d),eb.max.z&&(b.max.z=e);if(void 0===a||0===a.length)this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0)},computeBoundingSphere:function(){this.boundingSphere||(this.boundingSphere={radius:0}); var a=this.attributes.position.array;if(a){for(var b,c=0,d,e,f=0,g=a.length;fc&&(c=b);this.boundingSphere.radius=Math.sqrt(c)}},computeVertexNormals:function(){if(this.attributes.position&&this.attributes.index){var a,b,c,d;a=this.attributes.position.array.length;if(void 0===this.attributes.normal)this.attributes.normal={itemSize:3,array:new Float32Array(a),numItems:a};else{a=0;for(b=this.attributes.normal.array.length;a$?-1:1;h[4*a]=N.x;h[4*a+1]=N.y;h[4*a+2]=N.z;h[4*a+3]=O}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var b=this.attributes.index.array,c=this.attributes.position.array,d=this.attributes.normal.array,e=this.attributes.uv.array,f=c.length/3;if(void 0===this.attributes.tangent){var g= -4*f;this.attributes.tangent={itemSize:4,array:new Float32Array(g),numItems:g}}for(var h=this.attributes.tangent.array,i=[],j=[],g=0;gthis.points.length-2?this.points.length-1:f+1;c[3]=f>this.points.length-3?this.points.length-1: +0}var e=this.offsets,f=this.attributes.index.array,g=this.attributes.position.array,h=this.attributes.normal.array,i,j,l,m,n,p,q=new THREE.Vector3,r=new THREE.Vector3,u=new THREE.Vector3,s=new THREE.Vector3,D=new THREE.Vector3;c=0;for(d=e.length;caa?-1:1;h[4*a]=O.x;h[4*a+1]=O.y;h[4*a+2]=O.z;h[4*a+3]=P}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var b=this.attributes.index.array,c=this.attributes.position.array,d=this.attributes.normal.array,e=this.attributes.uv.array,f=c.length/3;if(void 0===this.attributes.tangent){var g= +4*f;this.attributes.tangent={itemSize:4,array:new Float32Array(g),numItems:g}}for(var h=this.attributes.tangent.array,i=[],j=[],g=0;gthis.points.length-2?this.points.length-1:f+1;c[3]=f>this.points.length-3?this.points.length-1: f+2;j=this.points[c[0]];l=this.points[c[1]];m=this.points[c[2]];n=this.points[c[3]];h=g*g;i=g*h;d.x=b(j.x,l.x,m.x,n.x,g,h,i);d.y=b(j.y,l.y,m.y,n.y,g,h,i);d.z=b(j.z,l.z,m.z,n.z,g,h,i);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;aa.length?".":a.join("/"))+"/"},initMaterials:function(a,b){for(var c=[],d=0;da.opacity)i.transparent=a.transparent;void 0!==a.depthTest&&(i.depthTest=a.depthTest);void 0!==a.depthWrite&&(i.depthWrite=a.depthWrite);void 0!==a.visible&&(i.visible=a.visible);void 0!==a.flipSided&&(i.side=THREE.BackSide); +a}function d(a){a=Math.log(a)/Math.LN2;return Math.pow(2,Math.round(a))}function e(a,e,f,h,i,j,u){var s=f.toLowerCase().endsWith(".dds"),D=b+"/"+f;if(s){var x=THREE.ImageUtils.loadCompressedTexture(D);a[e]=x}else x=document.createElement("canvas"),a[e]=new THREE.Texture(x);a[e].sourceFile=f;h&&(a[e].repeat.set(h[0],h[1]),1!==h[0]&&(a[e].wrapS=THREE.RepeatWrapping),1!==h[1]&&(a[e].wrapT=THREE.RepeatWrapping));i&&a[e].offset.set(i[0],i[1]);j&&(f={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping}, +void 0!==f[j[0]]&&(a[e].wrapS=f[j[0]]),void 0!==f[j[1]]&&(a[e].wrapT=f[j[1]]));u&&(a[e].anisotropy=u);if(!s){var t=a[e],a=new Image;a.onload=function(){if(!c(this.width)||!c(this.height)){var a=d(this.width),b=d(this.height);t.image.width=a;t.image.height=b;t.image.getContext("2d").drawImage(this,0,0,a,b)}else t.image=this;t.needsUpdate=!0};a.crossOrigin=g.crossOrigin;a.src=D}}function f(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]}var g=this,h="MeshLambertMaterial",i={color:15658734,opacity:1, +map:null,lightMap:null,normalMap:null,bumpMap:null,wireframe:!1};if(a.shading){var j=a.shading.toLowerCase();"phong"===j?h="MeshPhongMaterial":"basic"===j&&(h="MeshBasicMaterial")}void 0!==a.blending&&void 0!==THREE[a.blending]&&(i.blending=THREE[a.blending]);if(void 0!==a.transparent||1>a.opacity)i.transparent=a.transparent;void 0!==a.depthTest&&(i.depthTest=a.depthTest);void 0!==a.depthWrite&&(i.depthWrite=a.depthWrite);void 0!==a.visible&&(i.visible=a.visible);void 0!==a.flipSided&&(i.side=THREE.BackSide); void 0!==a.doubleSided&&(i.side=THREE.DoubleSide);void 0!==a.wireframe&&(i.wireframe=a.wireframe);void 0!==a.vertexColors&&("face"===a.vertexColors?i.vertexColors=THREE.FaceColors:a.vertexColors&&(i.vertexColors=THREE.VertexColors));a.colorDiffuse?i.color=f(a.colorDiffuse):a.DbgColor&&(i.color=a.DbgColor);a.colorSpecular&&(i.specular=f(a.colorSpecular));a.colorAmbient&&(i.ambient=f(a.colorAmbient));a.transparency&&(i.opacity=a.transparency);a.specularCoef&&(i.shininess=a.specularCoef);a.mapDiffuse&& b&&e(i,"map",a.mapDiffuse,a.mapDiffuseRepeat,a.mapDiffuseOffset,a.mapDiffuseWrap,a.mapDiffuseAnisotropy);a.mapLight&&b&&e(i,"lightMap",a.mapLight,a.mapLightRepeat,a.mapLightOffset,a.mapLightWrap,a.mapLightAnisotropy);a.mapBump&&b&&e(i,"bumpMap",a.mapBump,a.mapBumpRepeat,a.mapBumpOffset,a.mapBumpWrap,a.mapBumpAnisotropy);a.mapNormal&&b&&e(i,"normalMap",a.mapNormal,a.mapNormalRepeat,a.mapNormalOffset,a.mapNormalWrap,a.mapNormalAnisotropy);a.mapSpecular&&b&&e(i,"specularMap",a.mapSpecular,a.mapSpecularRepeat, a.mapSpecularOffset,a.mapSpecularWrap,a.mapSpecularAnisotropy);a.mapBumpScale&&(i.bumpScale=a.mapBumpScale);a.mapNormal?(h=THREE.ShaderUtils.lib.normal,j=THREE.UniformsUtils.clone(h.uniforms),j.tNormal.value=i.normalMap,a.mapNormalFactor&&j.uNormalScale.value.set(a.mapNormalFactor,a.mapNormalFactor),i.map&&(j.tDiffuse.value=i.map,j.enableDiffuse.value=!0),i.specularMap&&(j.tSpecular.value=i.specularMap,j.enableSpecular.value=!0),i.lightMap&&(j.tAO.value=i.lightMap,j.enableAO.value=!0),j.uDiffuseColor.value.setHex(i.color), -j.uSpecularColor.value.setHex(i.specular),j.uAmbientColor.value.setHex(i.ambient),j.uShininess.value=i.shininess,void 0!==i.opacity&&(j.uOpacity.value=i.opacity),i=new THREE.ShaderMaterial({fragmentShader:h.fragmentShader,vertexShader:h.vertexShader,uniforms:j,lights:!0,fog:!0})):i=new THREE[h](i);void 0!==a.DbgName&&(i.name=a.DbgName);return i}};THREE.BinaryLoader=function(a){THREE.Loader.call(this,a)};THREE.BinaryLoader.prototype=Object.create(THREE.Loader.prototype); -THREE.BinaryLoader.prototype.load=function(a,b,c,d){var c=c&&"string"===typeof c?c:this.extractUrlBase(a),d=d&&"string"===typeof d?d:this.extractUrlBase(a),e=this.showProgress?THREE.Loader.prototype.updateProgress:null;this.onLoadStart();this.loadAjaxJSON(this,a,b,c,d,e)}; +j.uSpecularColor.value.setHex(i.specular),j.uAmbientColor.value.setHex(i.ambient),j.uShininess.value=i.shininess,void 0!==i.opacity&&(j.uOpacity.value=i.opacity),i=new THREE.ShaderMaterial({fragmentShader:h.fragmentShader,vertexShader:h.vertexShader,uniforms:j,lights:!0,fog:!0})):i=new THREE[h](i);void 0!==a.DbgName&&(i.name=a.DbgName);return i}};THREE.BinaryLoader=function(a){THREE.Loader.call(this,a)};THREE.BinaryLoader.prototype=Object.create(THREE.Loader.prototype);THREE.BinaryLoader.prototype.load=function(a,b,c,d){var c=c&&"string"===typeof c?c:this.extractUrlBase(a),d=d&&"string"===typeof d?d:this.extractUrlBase(a),e=this.showProgress?THREE.Loader.prototype.updateProgress:null;this.onLoadStart();this.loadAjaxJSON(this,a,b,c,d,e)}; THREE.BinaryLoader.prototype.loadAjaxJSON=function(a,b,c,d,e,f){var g=new XMLHttpRequest;g.onreadystatechange=function(){if(4==g.readyState)if(200==g.status||0==g.status){var h=JSON.parse(g.responseText);a.loadAjaxBuffers(h,c,e,d,f)}else console.error("THREE.BinaryLoader: Couldn't load ["+b+"] ["+g.status+"]")};g.open("GET",b,!0);g.send(null)}; THREE.BinaryLoader.prototype.loadAjaxBuffers=function(a,b,c,d,e){var f=new XMLHttpRequest,g=c+"/"+a.buffers,h=0;f.onreadystatechange=function(){if(4==f.readyState)if(200==f.status||0==f.status){var c=f.response;void 0===c&&(c=(new Uint8Array(f.responseBody)).buffer);THREE.BinaryLoader.prototype.createBinModel(c,b,d,a.materials)}else console.error("THREE.BinaryLoader: Couldn't load ["+g+"] ["+f.status+"]");else 3==f.readyState?e&&(0==h&&(h=f.getResponseHeader("Content-Length")),e({total:h,loaded:f.responseText.length})): 2==f.readyState&&(h=f.getResponseHeader("Content-Length"))};f.open("GET",g,!0);f.responseType="arraybuffer";f.send(null)}; -THREE.BinaryLoader.prototype.createBinModel=function(a,b,c,d){var e=function(){var b,c,d,e,j,l,m,n,o,p,q,t,r,C,w,s;function E(a){return a%4?4-a%4:0}function z(a,b){return(new Uint8Array(a,b,1))[0]}function u(a,b){return(new Uint32Array(a,b,1))[0]}function y(b,c){var d,e,f,g,h,i,l,j=new Uint32Array(a,c,3*b);for(d=0;dr;r++)p+=String.fromCharCode(C[Q+r]);b=z(s,Q+12);z(s,Q+13);z(s,Q+14);z(s,Q+15);c=z(s,Q+16);d=z(s,Q+17);e=z(s,Q+18);j=z(s,Q+19);l=u(s,Q+20);m=u(s,Q+20+4);n=u(s,Q+20+8);o=u(s,Q+20+12);p=u(s,Q+20+16);q=u(s,Q+20+20);t=u(s,Q+20+24);r=u(s,Q+20+28);C=u(s,Q+20+32);w=u(s,Q+20+36);s=u(s,Q+20+40);H+=b;Q=3*c+j;S=4*c+j;N=o*Q;b=p*(Q+3*d);c=q* -(Q+3*e);j=t*(Q+3*d+3*e);Q=r*S;d=C*(S+4*d);e=w*(S+4*e);S=H;var H=new Float32Array(a,H,3*l),M,O,R,$;for(M=0;Ms;s++)q+=String.fromCharCode(D[R+s]);b=A(t,R+12);A(t,R+13);A(t,R+14);A(t,R+15);c=A(t,R+16);d=A(t,R+17);e=A(t,R+18);j=A(t,R+19);l=v(t,R+20);m=v(t,R+20+4);n=v(t,R+20+8);p=v(t,R+20+12);q=v(t,R+20+16);r=v(t,R+20+20);u=v(t,R+20+24);s=v(t,R+20+28);D=v(t,R+20+32);x=v(t,R+20+36);t=v(t,R+20+40);I+=b;R=3*c+j;T=4*c+j;O=p*R;b=q*(R+3*d);c=r* +(R+3*e);j=u*(R+3*d+3*e);R=s*T;d=D*(T+4*d);e=x*(T+4*e);T=I;var I=new Float32Array(a,I,3*l),N,P,S,aa;for(N=0;Nr.parameters.opacity&&(r.parameters.transparent=!0);r.parameters.normalMap?(q=THREE.ShaderUtils.lib.normal,$=THREE.UniformsUtils.clone(q.uniforms),n=r.parameters.color,B=r.parameters.specular,fa=r.parameters.ambient,p=r.parameters.shininess,$.tNormal.value=M.textures[r.parameters.normalMap], -r.parameters.normalScale&&$.uNormalScale.value.set(r.parameters.normalScale[0],r.parameters.normalScale[1]),r.parameters.map&&($.tDiffuse.value=r.parameters.map,$.enableDiffuse.value=!0),r.parameters.envMap&&($.tCube.value=r.parameters.envMap,$.enableReflection.value=!0,$.uReflectivity.value=r.parameters.reflectivity),r.parameters.lightMap&&($.tAO.value=r.parameters.lightMap,$.enableAO.value=!0),r.parameters.specularMap&&($.tSpecular.value=M.textures[r.parameters.specularMap],$.enableSpecular.value= -!0),r.parameters.displacementMap&&($.tDisplacement.value=M.textures[r.parameters.displacementMap],$.enableDisplacement.value=!0,$.uDisplacementBias.value=r.parameters.displacementBias,$.uDisplacementScale.value=r.parameters.displacementScale),$.uDiffuseColor.value.setHex(n),$.uSpecularColor.value.setHex(B),$.uAmbientColor.value.setHex(fa),$.uShininess.value=p,r.parameters.opacity&&($.uOpacity.value=r.parameters.opacity),A=new THREE.ShaderMaterial({fragmentShader:q.fragmentShader,vertexShader:q.vertexShader, -uniforms:$,lights:!0,fog:!0})):A=new THREE[r.type](r.parameters);M.materials[o]=A}for(o in R.materials)if(r=R.materials[o],r.parameters.materials){y=[];for(B=0;Bs.parameters.opacity&&(s.parameters.transparent=!0);s.parameters.normalMap?(r=THREE.ShaderUtils.lib.normal,aa=THREE.UniformsUtils.clone(r.uniforms),n=s.parameters.color,C=s.parameters.specular,ga=s.parameters.ambient,q=s.parameters.shininess,aa.tNormal.value=N.textures[s.parameters.normalMap], +s.parameters.normalScale&&aa.uNormalScale.value.set(s.parameters.normalScale[0],s.parameters.normalScale[1]),s.parameters.map&&(aa.tDiffuse.value=s.parameters.map,aa.enableDiffuse.value=!0),s.parameters.envMap&&(aa.tCube.value=s.parameters.envMap,aa.enableReflection.value=!0,aa.uReflectivity.value=s.parameters.reflectivity),s.parameters.lightMap&&(aa.tAO.value=s.parameters.lightMap,aa.enableAO.value=!0),s.parameters.specularMap&&(aa.tSpecular.value=N.textures[s.parameters.specularMap],aa.enableSpecular.value= +!0),s.parameters.displacementMap&&(aa.tDisplacement.value=N.textures[s.parameters.displacementMap],aa.enableDisplacement.value=!0,aa.uDisplacementBias.value=s.parameters.displacementBias,aa.uDisplacementScale.value=s.parameters.displacementScale),aa.uDiffuseColor.value.setHex(n),aa.uSpecularColor.value.setHex(C),aa.uAmbientColor.value.setHex(ga),aa.uShininess.value=q,s.parameters.opacity&&(aa.uOpacity.value=s.parameters.opacity),B=new THREE.ShaderMaterial({fragmentShader:r.fragmentShader,vertexShader:r.vertexShader, +uniforms:aa,lights:!0,fog:!0})):B=new THREE[s.type](s.parameters);N.materials[p]=B}for(p in S.materials)if(s=S.materials[p],s.parameters.materials){z=[];for(C=0;Ch.end&&(h.end=e);b||(b=g)}}a.firstAnimation=b}; THREE.MorphAnimMesh.prototype.setAnimationLabel=function(a,b,c){this.geometry.animations||(this.geometry.animations={});this.geometry.animations[a]={start:b,end:c}};THREE.MorphAnimMesh.prototype.playAnimation=function(a,b){var c=this.geometry.animations[a];c?(this.setFrameRange(c.start,c.end),this.duration=1E3*((c.end-c.start)/b),this.time=0):console.warn("animation["+a+"] undefined")}; -THREE.MorphAnimMesh.prototype.updateAnimation=function(a){var b=this.duration/this.length;this.time+=this.direction*a;if(this.mirroredLoop){if(this.time>this.duration||0>this.time)if(this.direction*=-1,this.time>this.duration&&(this.time=this.duration,this.directionBackwards=!0),0>this.time)this.time=0,this.directionBackwards=!1}else this.time%=this.duration,0>this.time&&(this.time+=this.duration);a=this.startKeyframe+THREE.Math.clamp(Math.floor(this.time/b),0,this.length-1);a!==this.currentKeyframe&& +THREE.MorphAnimMesh.prototype.updateAnimation=function(a){var b=this.duration/this.length;this.time+=this.direction*a;if(this.mirroredLoop){if(this.time>this.duration||0>this.time)this.direction*=-1,this.time>this.duration&&(this.time=this.duration,this.directionBackwards=!0),0>this.time&&(this.time=0,this.directionBackwards=!1)}else this.time%=this.duration,0>this.time&&(this.time+=this.duration);a=this.startKeyframe+THREE.Math.clamp(Math.floor(this.time/b),0,this.length-1);a!==this.currentKeyframe&& (this.morphTargetInfluences[this.lastKeyframe]=0,this.morphTargetInfluences[this.currentKeyframe]=1,this.morphTargetInfluences[a]=0,this.lastKeyframe=this.currentKeyframe,this.currentKeyframe=a);b=this.time%b/b;this.directionBackwards&&(b=1-b);this.morphTargetInfluences[this.currentKeyframe]=b;this.morphTargetInfluences[this.lastKeyframe]=1-b}; -THREE.MorphAnimMesh.prototype.clone=function(a){void 0===a&&(a=new THREE.MorphAnimMesh(this.geometry,this.material));a.duration=this.duration;a.mirroredLoop=this.mirroredLoop;a.time=this.time;a.lastKeyframe=this.lastKeyframe;a.currentKeyframe=this.currentKeyframe;a.direction=this.direction;a.directionBackwards=this.directionBackwards;THREE.Mesh.prototype.clone.call(this,a);return a};THREE.Ribbon=function(a,b){THREE.Object3D.call(this);this.geometry=a;this.material=b};THREE.Ribbon.prototype=Object.create(THREE.Object3D.prototype); -THREE.Ribbon.prototype.clone=function(a){void 0===a&&(a=new THREE.Ribbon(this.geometry,this.material));THREE.Object3D.prototype.clone.call(this,a);return a};THREE.LOD=function(){THREE.Object3D.call(this);this.LODs=[]};THREE.LOD.prototype=Object.create(THREE.Object3D.prototype);THREE.LOD.prototype.addLevel=function(a,b){void 0===b&&(b=0);for(var b=Math.abs(b),c=0;c=this.LODs[b].visibleAtDistance)this.LODs[b-1].object3D.visible=!1,this.LODs[b].object3D.visible=!0;else break;for(;br&&q.clearRect(Math.floor(Sa.getX()),Math.floor(Sa.getY()),Math.floor(Sa.getWidth()), -Math.floor(Sa.getHeight())),0=k||(k*=f.intensity,c.r+=g.r*k, -c.g+=g.g*k,c.b+=g.b*k)}else f instanceof THREE.PointLight&&(h=f.matrixWorld.getPosition(),k=b.dot(Aa.sub(h,a).normalize()),0>=k||(k*=0==f.distance?1:1-Math.min(a.distanceTo(h)/f.distance,1),0!=k&&(k*=f.intensity,c.r+=g.r*k,c.g+=g.g*k,c.b+=g.b*k)))}}function k(a,d,e,g,h,k,i,j){f.info.render.vertices+=3;f.info.render.faces++;b(j.opacity);c(j.blending);H=a.positionScreen.x;L=a.positionScreen.y;P=d.positionScreen.x;N=d.positionScreen.y;Q=e.positionScreen.x;S=e.positionScreen.y;m(H,L,P,N,Q,S);(j instanceof -THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial)&&null===j.map&&null===j.map?(ca.copy(j.color),aa.copy(j.emissive),j.vertexColors===THREE.FaceColors&&(ca.r*=i.color.r,ca.g*=i.color.g,ca.b*=i.color.b),!0===nb)?!1===j.wireframe&&j.shading==THREE.SmoothShading&&3==i.vertexNormalsLength?(ba.r=ha.r=Y.r=ka.r,ba.g=ha.g=Y.g=ka.g,ba.b=ha.b=Y.b=ka.b,n(i.v1.positionWorld,i.vertexNormalsWorld[0],ba),n(i.v2.positionWorld,i.vertexNormalsWorld[1],ha),n(i.v3.positionWorld,i.vertexNormalsWorld[2], -Y),ba.r=ba.r*ca.r+aa.r,ba.g=ba.g*ca.g+aa.g,ba.b=ba.b*ca.b+aa.b,ha.r=ha.r*ca.r+aa.r,ha.g=ha.g*ca.g+aa.g,ha.b=ha.b*ca.b+aa.b,Y.r=Y.r*ca.r+aa.r,Y.g=Y.g*ca.g+aa.g,Y.b=Y.b*ca.b+aa.b,ia.r=0.5*(ha.r+Y.r),ia.g=0.5*(ha.g+Y.g),ia.b=0.5*(ha.b+Y.b),pa=E(ba,ha,Y,ia),C(H,L,P,N,Q,S,0,0,1,0,0,1,pa)):(G.r=ka.r,G.g=ka.g,G.b=ka.b,n(i.centroidWorld,i.normalWorld,G),G.r=G.r*ca.r+aa.r,G.g=G.g*ca.g+aa.g,G.b=G.b*ca.b+aa.b,!0===j.wireframe?s(G,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):t(G)):!0===j.wireframe? -s(j.color,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):t(j.color):j instanceof THREE.MeshBasicMaterial||j instanceof THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial?null!==j.map?j.map.mapping instanceof THREE.UVMapping&&(Ra=i.uvs[0],w(H,L,P,N,Q,S,Ra[g].u,Ra[g].v,Ra[h].u,Ra[h].v,Ra[k].u,Ra[k].v,j.map)):null!==j.envMap?j.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(a=l.matrixWorldInverse,Aa.copy(i.vertexNormalsWorld[g]),eb=0.5*(Aa.x*a.elements[0]+Aa.y* -a.elements[4]+Aa.z*a.elements[8])+0.5,ub=0.5*(Aa.x*a.elements[1]+Aa.y*a.elements[5]+Aa.z*a.elements[9])+0.5,Aa.copy(i.vertexNormalsWorld[h]),qb=0.5*(Aa.x*a.elements[0]+Aa.y*a.elements[4]+Aa.z*a.elements[8])+0.5,mb=0.5*(Aa.x*a.elements[1]+Aa.y*a.elements[5]+Aa.z*a.elements[9])+0.5,Aa.copy(i.vertexNormalsWorld[k]),lb=0.5*(Aa.x*a.elements[0]+Aa.y*a.elements[4]+Aa.z*a.elements[8])+0.5,$b=0.5*(Aa.x*a.elements[1]+Aa.y*a.elements[5]+Aa.z*a.elements[9])+0.5,w(H,L,P,N,Q,S,eb,ub,qb,mb,lb,$b,j.envMap)):(G.copy(j.color), -j.vertexColors===THREE.FaceColors&&(G.r*=i.color.r,G.g*=i.color.g,G.b*=i.color.b),!0===j.wireframe?s(G,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):t(G)):j instanceof THREE.MeshDepthMaterial?(La=l.near,ya=l.far,ba.r=ba.g=ba.b=1-Xa(a.positionScreen.z,La,ya),ha.r=ha.g=ha.b=1-Xa(d.positionScreen.z,La,ya),Y.r=Y.g=Y.b=1-Xa(e.positionScreen.z,La,ya),ia.r=0.5*(ha.r+Y.r),ia.g=0.5*(ha.g+Y.g),ia.b=0.5*(ha.b+Y.b),pa=E(ba,ha,Y,ia),C(H,L,P,N,Q,S,0,0,1,0,0,1,pa)):j instanceof THREE.MeshNormalMaterial&& -(G.r=gb(i.normalWorld.x),G.g=gb(i.normalWorld.y),G.b=gb(i.normalWorld.z),!0===j.wireframe?s(G,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):t(G))}function m(a,b,c,d,e,f){q.beginPath();q.moveTo(a,b);q.lineTo(c,d);q.lineTo(e,f);q.closePath()}function r(a,b,c,d,e,f,g,h){q.beginPath();q.moveTo(a,b);q.lineTo(c,d);q.lineTo(e,f);q.lineTo(g,h);q.closePath()}function s(a,b,c,e){z!==b&&(z=q.lineWidth=b);u!==c&&(u=q.lineCap=c);y!==e&&(y=q.lineJoin=e);d(a.getContextStyle());q.stroke();qa.inflate(2* -b)}function t(a){e(a.getContextStyle());q.fill()}function w(a,b,c,d,f,g,h,k,i,j,l,gb,n){if(!(n instanceof THREE.DataTexture||void 0===n.image||0==n.image.width)){if(!0===n.needsUpdate){var m=n.wrapS==THREE.RepeatWrapping,hb=n.wrapT==THREE.RepeatWrapping;na[n.id]=q.createPattern(n.image,!0===m&&!0===hb?"repeat":!0===m&&!1===hb?"repeat-x":!1===m&&!0===hb?"repeat-y":"no-repeat");n.needsUpdate=!1}void 0===na[n.id]?e("rgba(0,0,0,1)"):e(na[n.id]);var m=n.offset.x/n.repeat.x,hb=n.offset.y/n.repeat.y,o=n.image.width* -n.repeat.x,p=n.image.height*n.repeat.y,h=(h+m)*o,k=(1-k+hb)*p,c=c-a,d=d-b,f=f-a,g=g-b,i=(i+m)*o-h,j=(1-j+hb)*p-k,l=(l+m)*o-h,gb=(1-gb+hb)*p-k,m=i*gb-l*j;0===m?(void 0===db[n.id]&&(b=document.createElement("canvas"),b.width=n.image.width,b.height=n.image.height,b=b.getContext("2d"),b.drawImage(n.image,0,0),db[n.id]=b.getImageData(0,0,n.image.width,n.image.height).data),b=db[n.id],h=4*(Math.floor(h)+Math.floor(k)*n.image.width),G.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255),t(G)):(m=1/m,n=(gb*c-j*f)*m,j= -(gb*d-j*g)*m,c=(i*f-l*c)*m,d=(i*g-l*d)*m,a=a-n*h-c*k,h=b-j*h-d*k,q.save(),q.transform(n,j,c,d,a,h),q.fill(),q.restore())}}function C(a,b,c,d,e,f,g,h,k,i,j,l,gb){var n,m;n=gb.width-1;m=gb.height-1;g*=n;h*=m;c-=a;d-=b;e-=a;f-=b;k=k*n-g;i=i*m-h;j=j*n-g;l=l*m-h;m=1/(k*l-j*i);n=(l*c-i*e)*m;i=(l*d-i*f)*m;c=(k*e-j*c)*m;d=(k*f-j*d)*m;a=a-n*g-c*h;b=b-i*g-d*h;q.save();q.transform(n,i,c,d,a,b);q.clip();q.drawImage(gb,0,0);q.restore()}function E(a,b,c,d){Wa[0]=255*a.r|0;Wa[1]=255*a.g|0;Wa[2]=255*a.b|0;Wa[4]= -255*b.r|0;Wa[5]=255*b.g|0;Wa[6]=255*b.b|0;Wa[8]=255*c.r|0;Wa[9]=255*c.g|0;Wa[10]=255*c.b|0;Wa[12]=255*d.r|0;Wa[13]=255*d.g|0;Wa[14]=255*d.b|0;Va.putImageData(vb,0,0);bb.drawImage(sb,0,0);return $a}function Xa(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function gb(a){a=0.5*(a+1);return 0>a?0:1>1,Qc=la.height>>1,wb=ab.scale.x*o,xb=ab.scale.y*p,Eb=wb*ic,Fb=xb*Qc,qa.set(ma.x-Eb,ma.y-Fb,ma.x+Eb,ma.y+Fb),!1!==pb.intersects(qa)&&(q.save(),q.translate(ma.x,ma.y),q.rotate(-ab.rotation),q.scale(wb,-xb),q.translate(-ic,-Qc),q.drawImage(la,0,0),q.restore())):da instanceof THREE.ParticleCanvasMaterial&&(Eb=ab.scale.x*o,Fb=ab.scale.y* -p,qa.set(ma.x-Eb,ma.y-Fb,ma.x+Eb,ma.y+Fb),!1!==pb.intersects(qa)&&(d(da.color.getContextStyle()),e(da.color.getContextStyle()),q.save(),q.translate(ma.x,ma.y),q.rotate(-ab.rotation),q.scale(Eb,Fb),da.program(q),q.restore()))}else if(la instanceof THREE.RenderableLine){if(D=la.v1,A=la.v2,D.positionScreen.x*=o,D.positionScreen.y*=p,A.positionScreen.x*=o,A.positionScreen.y*=p,qa.addPoint(D.positionScreen.x,D.positionScreen.y),qa.addPoint(A.positionScreen.x,A.positionScreen.y),!0===pb.intersects(qa)&& -(ma=D,ab=A,b(da.opacity),c(da.blending),q.beginPath(),q.moveTo(ma.positionScreen.x,ma.positionScreen.y),q.lineTo(ab.positionScreen.x,ab.positionScreen.y),da instanceof THREE.LineBasicMaterial))ma=da.linewidth,z!==ma&&(z=q.lineWidth=ma),ma=da.linecap,u!==ma&&(u=q.lineCap=ma),ma=da.linejoin,y!==ma&&(y=q.lineJoin=ma),d(da.color.getContextStyle()),q.stroke(),qa.inflate(2*da.linewidth)}else if(la instanceof THREE.RenderableFace3)D=la.v1,A=la.v2,I=la.v3,D.positionScreen.x*=o,D.positionScreen.y*=p,A.positionScreen.x*= -o,A.positionScreen.y*=p,I.positionScreen.x*=o,I.positionScreen.y*=p,!0===da.overdraw&&(ac(D.positionScreen,A.positionScreen),ac(A.positionScreen,I.positionScreen),ac(I.positionScreen,D.positionScreen)),qa.add3Points(D.positionScreen.x,D.positionScreen.y,A.positionScreen.x,A.positionScreen.y,I.positionScreen.x,I.positionScreen.y),!0===pb.intersects(qa)&&k(D,A,I,0,1,2,la,da,a);else if(la instanceof THREE.RenderableFace4&&(D=la.v1,A=la.v2,I=la.v3,J=la.v4,D.positionScreen.x*=o,D.positionScreen.y*=p,A.positionScreen.x*= -o,A.positionScreen.y*=p,I.positionScreen.x*=o,I.positionScreen.y*=p,J.positionScreen.x*=o,J.positionScreen.y*=p,B.positionScreen.copy(A.positionScreen),K.positionScreen.copy(J.positionScreen),!0===da.overdraw&&(ac(D.positionScreen,A.positionScreen),ac(A.positionScreen,J.positionScreen),ac(J.positionScreen,D.positionScreen),ac(I.positionScreen,B.positionScreen),ac(I.positionScreen,K.positionScreen)),qa.addPoint(D.positionScreen.x,D.positionScreen.y),qa.addPoint(A.positionScreen.x,A.positionScreen.y), -qa.addPoint(I.positionScreen.x,I.positionScreen.y),qa.addPoint(J.positionScreen.x,J.positionScreen.y),!0===pb.intersects(qa)))(ma=D,ab=A,Eb=I,Fb=J,wb=B,xb=K,ic=a,f.info.render.vertices+=4,f.info.render.faces++,b(da.opacity),c(da.blending),void 0!==da.map&&null!==da.map||void 0!==da.envMap&&null!==da.envMap)?(k(ma,ab,Fb,0,1,3,la,da,ic),k(wb,Eb,xb,1,2,3,la,da,ic)):(H=ma.positionScreen.x,L=ma.positionScreen.y,P=ab.positionScreen.x,N=ab.positionScreen.y,Q=Eb.positionScreen.x,S=Eb.positionScreen.y,M=Fb.positionScreen.x, -O=Fb.positionScreen.y,R=wb.positionScreen.x,$=wb.positionScreen.y,fa=xb.positionScreen.x,Ha=xb.positionScreen.y,da instanceof THREE.MeshLambertMaterial||da instanceof THREE.MeshPhongMaterial)?(ca.copy(da.color),aa.copy(da.emissive),da.vertexColors===THREE.FaceColors&&(ca.r*=la.color.r,ca.g*=la.color.g,ca.b*=la.color.b),!0===nb)?!1===da.wireframe&&da.shading==THREE.SmoothShading&&4==la.vertexNormalsLength?(ba.r=ha.r=Y.r=ia.r=ka.r,ba.g=ha.g=Y.g=ia.g=ka.g,ba.b=ha.b=Y.b=ia.b=ka.b,n(la.v1.positionWorld, -la.vertexNormalsWorld[0],ba),n(la.v2.positionWorld,la.vertexNormalsWorld[1],ha),n(la.v4.positionWorld,la.vertexNormalsWorld[3],Y),n(la.v3.positionWorld,la.vertexNormalsWorld[2],ia),ba.r=ba.r*ca.r+aa.r,ba.g=ba.g*ca.g+aa.g,ba.b=ba.b*ca.b+aa.b,ha.r=ha.r*ca.r+aa.r,ha.g=ha.g*ca.g+aa.g,ha.b=ha.b*ca.b+aa.b,Y.r=Y.r*ca.r+aa.r,Y.g=Y.g*ca.g+aa.g,Y.b=Y.b*ca.b+aa.b,ia.r=ia.r*ca.r+aa.r,ia.g=ia.g*ca.g+aa.g,ia.b=ia.b*ca.b+aa.b,pa=E(ba,ha,Y,ia),m(H,L,P,N,M,O),C(H,L,P,N,M,O,0,0,1,0,0,1,pa),m(R,$,Q,S,fa,Ha),C(R,$,Q, -S,fa,Ha,1,0,1,1,0,1,pa)):(G.r=ka.r,G.g=ka.g,G.b=ka.b,n(la.centroidWorld,la.normalWorld,G),G.r=G.r*ca.r+aa.r,G.g=G.g*ca.g+aa.g,G.b=G.b*ca.b+aa.b,r(H,L,P,N,Q,S,M,O),!0===da.wireframe?s(G,da.wireframeLinewidth,da.wireframeLinecap,da.wireframeLinejoin):t(G)):(G.r=ca.r+aa.r,G.g=ca.g+aa.g,G.b=ca.b+aa.b,r(H,L,P,N,Q,S,M,O),!0===da.wireframe?s(G,da.wireframeLinewidth,da.wireframeLinecap,da.wireframeLinejoin):t(G)):da instanceof THREE.MeshBasicMaterial?(G.copy(da.color),da.vertexColors===THREE.FaceColors&& -(G.r*=la.color.r,G.g*=la.color.g,G.b*=la.color.b),r(H,L,P,N,Q,S,M,O),!0===da.wireframe?s(G,da.wireframeLinewidth,da.wireframeLinecap,da.wireframeLinejoin):t(G)):da instanceof THREE.MeshNormalMaterial?(G.r=gb(la.normalWorld.x),G.g=gb(la.normalWorld.y),G.b=gb(la.normalWorld.z),r(H,L,P,N,Q,S,M,O),!0===da.wireframe?s(G,da.wireframeLinewidth,da.wireframeLinecap,da.wireframeLinejoin):t(G)):da instanceof THREE.MeshDepthMaterial&&(La=l.near,ya=l.far,ba.r=ba.g=ba.b=1-Xa(ma.positionScreen.z,La,ya),ha.r=ha.g= -ha.b=1-Xa(ab.positionScreen.z,La,ya),Y.r=Y.g=Y.b=1-Xa(Fb.positionScreen.z,La,ya),ia.r=ia.g=ia.b=1-Xa(Eb.positionScreen.z,La,ya),pa=E(ba,ha,Y,ia),m(H,L,P,N,M,O),C(H,L,P,N,M,O,0,0,1,0,0,1,pa),m(R,$,Q,S,fa,Ha),C(R,$,Q,S,fa,Ha,1,0,1,1,0,1,pa));Sa.addRectangle(qa)}q.setTransform(1,0,0,1,0,0)}}}; -THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform float flipEnvMap;\nuniform int combine;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nuniform bool useRefract;\nuniform float refractionRatio;\n#else\nvarying vec3 vReflect;\n#endif\n#endif", -envmap_fragment:"#ifdef USE_ENVMAP\nvec3 reflectVec;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\nif ( useRefract ) {\nreflectVec = refract( cameraToVertex, normal, refractionRatio );\n} else { \nreflectVec = reflect( cameraToVertex, normal );\n}\n#else\nreflectVec = vReflect;\n#endif\n#ifdef DOUBLE_SIDED\nfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\nvec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#else\nvec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#endif\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\nif ( combine == 1 ) {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularStrength * reflectivity );\n} else if ( combine == 2 ) {\ngl_FragColor.xyz += cubeColor.xyz * specularStrength * reflectivity;\n} else {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * cubeColor.xyz, specularStrength * reflectivity );\n}\n#endif", +THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){var b=this.__lights.indexOf(a);-1!==b&&this.__lights.splice(b,1)}else a instanceof THREE.Camera||(b=this.__objects.indexOf(a),-1!==b&&(this.__objects.splice(b,1),this.__objectsRemoved.push(a),b=this.__objectsAdded.indexOf(a),-1!==b&&this.__objectsAdded.splice(b,1)));for(b=0;bs&&r.clearRect(Math.floor(Ta.getX()),Math.floor(Ta.getY()),Math.floor(Ta.getWidth()), +Math.floor(Ta.getHeight())),0=k||(k*=f.intensity,c.r+=g.r*k, +c.g+=g.g*k,c.b+=g.b*k)}else f instanceof THREE.PointLight&&(h=f.matrixWorld.getPosition(),k=b.dot(Ba.sub(h,a).normalize()),0>=k||(k*=0==f.distance?1:1-Math.min(a.distanceTo(h)/f.distance,1),0!=k&&(k*=f.intensity,c.r+=g.r*k,c.g+=g.g*k,c.b+=g.b*k)))}}function k(a,d,e,g,h,k,i,j){f.info.render.vertices+=3;f.info.render.faces++;b(j.opacity);c(j.blending);I=a.positionScreen.x;M=a.positionScreen.y;Q=d.positionScreen.x;O=d.positionScreen.y;R=e.positionScreen.x;T=e.positionScreen.y;m(I,M,Q,O,R,T);(j instanceof +THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial)&&null===j.map&&null===j.map?(da.copy(j.color),ba.copy(j.emissive),j.vertexColors===THREE.FaceColors&&(da.r*=i.color.r,da.g*=i.color.g,da.b*=i.color.b),!0===ob?!1===j.wireframe&&j.shading==THREE.SmoothShading&&3==i.vertexNormalsLength?(ca.r=ia.r=Z.r=la.r,ca.g=ia.g=Z.g=la.g,ca.b=ia.b=Z.b=la.b,n(i.v1.positionWorld,i.vertexNormalsWorld[0],ca),n(i.v2.positionWorld,i.vertexNormalsWorld[1],ia),n(i.v3.positionWorld,i.vertexNormalsWorld[2],Z), +ca.r=ca.r*da.r+ba.r,ca.g=ca.g*da.g+ba.g,ca.b=ca.b*da.b+ba.b,ia.r=ia.r*da.r+ba.r,ia.g=ia.g*da.g+ba.g,ia.b=ia.b*da.b+ba.b,Z.r=Z.r*da.r+ba.r,Z.g=Z.g*da.g+ba.g,Z.b=Z.b*da.b+ba.b,ja.r=0.5*(ia.r+Z.r),ja.g=0.5*(ia.g+Z.g),ja.b=0.5*(ia.b+Z.b),qa=F(ca,ia,Z,ja),D(I,M,Q,O,R,T,0,0,1,0,0,1,qa)):(H.r=la.r,H.g=la.g,H.b=la.b,n(i.centroidWorld,i.normalWorld,H),H.r=H.r*da.r+ba.r,H.g=H.g*da.g+ba.g,H.b=H.b*da.b+ba.b,!0===j.wireframe?t(H,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(H)):!0===j.wireframe? +t(j.color,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(j.color)):j instanceof THREE.MeshBasicMaterial||j instanceof THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial?null!==j.map?j.map.mapping instanceof THREE.UVMapping&&(Sa=i.uvs[0],x(I,M,Q,O,R,T,Sa[g].u,Sa[g].v,Sa[h].u,Sa[h].v,Sa[k].u,Sa[k].v,j.map)):null!==j.envMap?j.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(a=l.matrixWorldInverse,Ba.copy(i.vertexNormalsWorld[g]),fb=0.5*(Ba.x*a.elements[0]+Ba.y* +a.elements[4]+Ba.z*a.elements[8])+0.5,vb=0.5*(Ba.x*a.elements[1]+Ba.y*a.elements[5]+Ba.z*a.elements[9])+0.5,Ba.copy(i.vertexNormalsWorld[h]),rb=0.5*(Ba.x*a.elements[0]+Ba.y*a.elements[4]+Ba.z*a.elements[8])+0.5,nb=0.5*(Ba.x*a.elements[1]+Ba.y*a.elements[5]+Ba.z*a.elements[9])+0.5,Ba.copy(i.vertexNormalsWorld[k]),mb=0.5*(Ba.x*a.elements[0]+Ba.y*a.elements[4]+Ba.z*a.elements[8])+0.5,ac=0.5*(Ba.x*a.elements[1]+Ba.y*a.elements[5]+Ba.z*a.elements[9])+0.5,x(I,M,Q,O,R,T,fb,vb,rb,nb,mb,ac,j.envMap)):(H.copy(j.color), +j.vertexColors===THREE.FaceColors&&(H.r*=i.color.r,H.g*=i.color.g,H.b*=i.color.b),!0===j.wireframe?t(H,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(H)):j instanceof THREE.MeshDepthMaterial?(Ma=l.near,za=l.far,ca.r=ca.g=ca.b=1-Ya(a.positionScreen.z,Ma,za),ia.r=ia.g=ia.b=1-Ya(d.positionScreen.z,Ma,za),Z.r=Z.g=Z.b=1-Ya(e.positionScreen.z,Ma,za),ja.r=0.5*(ia.r+Z.r),ja.g=0.5*(ia.g+Z.g),ja.b=0.5*(ia.b+Z.b),qa=F(ca,ia,Z,ja),D(I,M,Q,O,R,T,0,0,1,0,0,1,qa)):j instanceof THREE.MeshNormalMaterial&& +(H.r=hb(i.normalWorld.x),H.g=hb(i.normalWorld.y),H.b=hb(i.normalWorld.z),!0===j.wireframe?t(H,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(H))}function m(a,b,c,d,e,f){r.beginPath();r.moveTo(a,b);r.lineTo(c,d);r.lineTo(e,f);r.closePath()}function s(a,b,c,d,e,f,g,h){r.beginPath();r.moveTo(a,b);r.lineTo(c,d);r.lineTo(e,f);r.lineTo(g,h);r.closePath()}function t(a,b,c,e){A!==b&&(A=r.lineWidth=b);v!==c&&(v=r.lineCap=c);z!==e&&(z=r.lineJoin=e);d(a.getContextStyle());r.stroke();ra.inflate(2* +b)}function u(a){e(a.getContextStyle());r.fill()}function x(a,b,c,d,f,g,h,k,i,j,l,hb,n){if(!(n instanceof THREE.DataTexture||void 0===n.image||0==n.image.width)){if(!0===n.needsUpdate){var m=n.wrapS==THREE.RepeatWrapping,ib=n.wrapT==THREE.RepeatWrapping;oa[n.id]=r.createPattern(n.image,!0===m&&!0===ib?"repeat":!0===m&&!1===ib?"repeat-x":!1===m&&!0===ib?"repeat-y":"no-repeat");n.needsUpdate=!1}void 0===oa[n.id]?e("rgba(0,0,0,1)"):e(oa[n.id]);var m=n.offset.x/n.repeat.x,ib=n.offset.y/n.repeat.y,p=n.image.width* +n.repeat.x,q=n.image.height*n.repeat.y,h=(h+m)*p,k=(1-k+ib)*q,c=c-a,d=d-b,f=f-a,g=g-b,i=(i+m)*p-h,j=(1-j+ib)*q-k,l=(l+m)*p-h,hb=(1-hb+ib)*q-k,m=i*hb-l*j;0===m?(void 0===eb[n.id]&&(b=document.createElement("canvas"),b.width=n.image.width,b.height=n.image.height,b=b.getContext("2d"),b.drawImage(n.image,0,0),eb[n.id]=b.getImageData(0,0,n.image.width,n.image.height).data),b=eb[n.id],h=4*(Math.floor(h)+Math.floor(k)*n.image.width),H.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255),u(H)):(m=1/m,n=(hb*c-j*f)*m,j= +(hb*d-j*g)*m,c=(i*f-l*c)*m,d=(i*g-l*d)*m,a=a-n*h-c*k,h=b-j*h-d*k,r.save(),r.transform(n,j,c,d,a,h),r.fill(),r.restore())}}function D(a,b,c,d,e,f,g,h,k,i,j,l,hb){var n,m;n=hb.width-1;m=hb.height-1;g*=n;h*=m;c-=a;d-=b;e-=a;f-=b;k=k*n-g;i=i*m-h;j=j*n-g;l=l*m-h;m=1/(k*l-j*i);n=(l*c-i*e)*m;i=(l*d-i*f)*m;c=(k*e-j*c)*m;d=(k*f-j*d)*m;a=a-n*g-c*h;b=b-i*g-d*h;r.save();r.transform(n,i,c,d,a,b);r.clip();r.drawImage(hb,0,0);r.restore()}function F(a,b,c,d){Xa[0]=255*a.r|0;Xa[1]=255*a.g|0;Xa[2]=255*a.b|0;Xa[4]= +255*b.r|0;Xa[5]=255*b.g|0;Xa[6]=255*b.b|0;Xa[8]=255*c.r|0;Xa[9]=255*c.g|0;Xa[10]=255*c.b|0;Xa[12]=255*d.r|0;Xa[13]=255*d.g|0;Xa[14]=255*d.b|0;Wa.putImageData(wb,0,0);cb.drawImage(tb,0,0);return ab}function Ya(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function hb(a){a=0.5*(a+1);return 0>a?0:1>1,Rc=ma.height>>1,xb=bb.scale.x*p,yb=bb.scale.y*q,Fb=xb*jc,Gb=yb*Rc,ra.set(na.x-Fb,na.y-Gb,na.x+Fb,na.y+Gb),!1!==qb.intersects(ra)&&(r.save(),r.translate(na.x,na.y),r.rotate(-bb.rotation),r.scale(xb,-yb),r.translate(-jc,-Rc),r.drawImage(ma,0,0),r.restore())):ea instanceof THREE.ParticleCanvasMaterial&&(Fb=bb.scale.x*p,Gb=bb.scale.y* +q,ra.set(na.x-Fb,na.y-Gb,na.x+Fb,na.y+Gb),!1!==qb.intersects(ra)&&(d(ea.color.getContextStyle()),e(ea.color.getContextStyle()),r.save(),r.translate(na.x,na.y),r.rotate(-bb.rotation),r.scale(Fb,Gb),ea.program(r),r.restore()))}else ma instanceof THREE.RenderableLine?(E=ma.v1,B=ma.v2,E.positionScreen.x*=p,E.positionScreen.y*=q,B.positionScreen.x*=p,B.positionScreen.y*=q,ra.addPoint(E.positionScreen.x,E.positionScreen.y),ra.addPoint(B.positionScreen.x,B.positionScreen.y),!0===qb.intersects(ra)&&(na=E, +bb=B,b(ea.opacity),c(ea.blending),r.beginPath(),r.moveTo(na.positionScreen.x,na.positionScreen.y),r.lineTo(bb.positionScreen.x,bb.positionScreen.y),ea instanceof THREE.LineBasicMaterial&&(na=ea.linewidth,A!==na&&(A=r.lineWidth=na),na=ea.linecap,v!==na&&(v=r.lineCap=na),na=ea.linejoin,z!==na&&(z=r.lineJoin=na),d(ea.color.getContextStyle()),r.stroke(),ra.inflate(2*ea.linewidth)))):ma instanceof THREE.RenderableFace3?(E=ma.v1,B=ma.v2,J=ma.v3,E.positionScreen.x*=p,E.positionScreen.y*=q,B.positionScreen.x*= +p,B.positionScreen.y*=q,J.positionScreen.x*=p,J.positionScreen.y*=q,!0===ea.overdraw&&(bc(E.positionScreen,B.positionScreen),bc(B.positionScreen,J.positionScreen),bc(J.positionScreen,E.positionScreen)),ra.add3Points(E.positionScreen.x,E.positionScreen.y,B.positionScreen.x,B.positionScreen.y,J.positionScreen.x,J.positionScreen.y),!0===qb.intersects(ra)&&k(E,B,J,0,1,2,ma,ea,a)):ma instanceof THREE.RenderableFace4&&(E=ma.v1,B=ma.v2,J=ma.v3,K=ma.v4,E.positionScreen.x*=p,E.positionScreen.y*=q,B.positionScreen.x*= +p,B.positionScreen.y*=q,J.positionScreen.x*=p,J.positionScreen.y*=q,K.positionScreen.x*=p,K.positionScreen.y*=q,C.positionScreen.copy(B.positionScreen),L.positionScreen.copy(K.positionScreen),!0===ea.overdraw&&(bc(E.positionScreen,B.positionScreen),bc(B.positionScreen,K.positionScreen),bc(K.positionScreen,E.positionScreen),bc(J.positionScreen,C.positionScreen),bc(J.positionScreen,L.positionScreen)),ra.addPoint(E.positionScreen.x,E.positionScreen.y),ra.addPoint(B.positionScreen.x,B.positionScreen.y), +ra.addPoint(J.positionScreen.x,J.positionScreen.y),ra.addPoint(K.positionScreen.x,K.positionScreen.y),!0===qb.intersects(ra)&&(na=E,bb=B,Fb=J,Gb=K,xb=C,yb=L,jc=a,f.info.render.vertices+=4,f.info.render.faces++,b(ea.opacity),c(ea.blending),void 0!==ea.map&&null!==ea.map||void 0!==ea.envMap&&null!==ea.envMap?(k(na,bb,Gb,0,1,3,ma,ea,jc),k(xb,Fb,yb,1,2,3,ma,ea,jc)):(I=na.positionScreen.x,M=na.positionScreen.y,Q=bb.positionScreen.x,O=bb.positionScreen.y,R=Fb.positionScreen.x,T=Fb.positionScreen.y,N=Gb.positionScreen.x, +P=Gb.positionScreen.y,S=xb.positionScreen.x,aa=xb.positionScreen.y,ga=yb.positionScreen.x,Ia=yb.positionScreen.y,ea instanceof THREE.MeshLambertMaterial||ea instanceof THREE.MeshPhongMaterial?(da.copy(ea.color),ba.copy(ea.emissive),ea.vertexColors===THREE.FaceColors&&(da.r*=ma.color.r,da.g*=ma.color.g,da.b*=ma.color.b),!0===ob?!1===ea.wireframe&&ea.shading==THREE.SmoothShading&&4==ma.vertexNormalsLength?(ca.r=ia.r=Z.r=ja.r=la.r,ca.g=ia.g=Z.g=ja.g=la.g,ca.b=ia.b=Z.b=ja.b=la.b,n(ma.v1.positionWorld, +ma.vertexNormalsWorld[0],ca),n(ma.v2.positionWorld,ma.vertexNormalsWorld[1],ia),n(ma.v4.positionWorld,ma.vertexNormalsWorld[3],Z),n(ma.v3.positionWorld,ma.vertexNormalsWorld[2],ja),ca.r=ca.r*da.r+ba.r,ca.g=ca.g*da.g+ba.g,ca.b=ca.b*da.b+ba.b,ia.r=ia.r*da.r+ba.r,ia.g=ia.g*da.g+ba.g,ia.b=ia.b*da.b+ba.b,Z.r=Z.r*da.r+ba.r,Z.g=Z.g*da.g+ba.g,Z.b=Z.b*da.b+ba.b,ja.r=ja.r*da.r+ba.r,ja.g=ja.g*da.g+ba.g,ja.b=ja.b*da.b+ba.b,qa=F(ca,ia,Z,ja),m(I,M,Q,O,N,P),D(I,M,Q,O,N,P,0,0,1,0,0,1,qa),m(S,aa,R,T,ga,Ia),D(S,aa, +R,T,ga,Ia,1,0,1,1,0,1,qa)):(H.r=la.r,H.g=la.g,H.b=la.b,n(ma.centroidWorld,ma.normalWorld,H),H.r=H.r*da.r+ba.r,H.g=H.g*da.g+ba.g,H.b=H.b*da.b+ba.b,s(I,M,Q,O,R,T,N,P),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H)):(H.r=da.r+ba.r,H.g=da.g+ba.g,H.b=da.b+ba.b,s(I,M,Q,O,R,T,N,P),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H))):ea instanceof THREE.MeshBasicMaterial?(H.copy(ea.color),ea.vertexColors===THREE.FaceColors&& +(H.r*=ma.color.r,H.g*=ma.color.g,H.b*=ma.color.b),s(I,M,Q,O,R,T,N,P),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H)):ea instanceof THREE.MeshNormalMaterial?(H.r=hb(ma.normalWorld.x),H.g=hb(ma.normalWorld.y),H.b=hb(ma.normalWorld.z),s(I,M,Q,O,R,T,N,P),!0===ea.wireframe?t(H,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(H)):ea instanceof THREE.MeshDepthMaterial&&(Ma=l.near,za=l.far,ca.r=ca.g=ca.b=1-Ya(na.positionScreen.z,Ma,za),ia.r=ia.g= +ia.b=1-Ya(bb.positionScreen.z,Ma,za),Z.r=Z.g=Z.b=1-Ya(Gb.positionScreen.z,Ma,za),ja.r=ja.g=ja.b=1-Ya(Fb.positionScreen.z,Ma,za),qa=F(ca,ia,Z,ja),m(I,M,Q,O,N,P),D(I,M,Q,O,N,P,0,0,1,0,0,1,qa),m(S,aa,R,T,ga,Ia),D(S,aa,R,T,ga,Ia,1,0,1,1,0,1,qa)))));Ta.addRectangle(ra)}r.setTransform(1,0,0,1,0,0)}}};THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif", +envmap_pars_fragment:"#ifdef USE_ENVMAP\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform float flipEnvMap;\nuniform int combine;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nuniform bool useRefract;\nuniform float refractionRatio;\n#else\nvarying vec3 vReflect;\n#endif\n#endif",envmap_fragment:"#ifdef USE_ENVMAP\nvec3 reflectVec;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\nif ( useRefract ) {\nreflectVec = refract( cameraToVertex, normal, refractionRatio );\n} else { \nreflectVec = reflect( cameraToVertex, normal );\n}\n#else\nreflectVec = vReflect;\n#endif\n#ifdef DOUBLE_SIDED\nfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\nvec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#else\nvec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#endif\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\nif ( combine == 1 ) {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularStrength * reflectivity );\n} else if ( combine == 2 ) {\ngl_FragColor.xyz += cubeColor.xyz * specularStrength * reflectivity;\n} else {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * cubeColor.xyz, specularStrength * reflectivity );\n}\n#endif", envmap_pars_vertex:"#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n#ifdef USE_SKINNING\nvec4 worldPosition = modelMatrix * skinned;\n#endif\n#if defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n#endif\n#if ! defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n#endif\n#endif", envmap_vertex:"#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )\nvec3 worldNormal = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * objectNormal;\nworldNormal = normalize( worldNormal );\nvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\nif ( useRefract ) {\nvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n} else {\nvReflect = reflect( cameraToVertex, worldNormal );\n}\n#endif",map_particle_pars_fragment:"#ifdef USE_MAP\nuniform sampler2D map;\n#endif", map_particle_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) );\n#endif",map_pars_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP )\nvarying vec2 vUv;\nuniform vec4 offsetRepeat;\n#endif",map_pars_fragment:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP )\nvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\nuniform sampler2D map;\n#endif", @@ -339,194 +293,184 @@ THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {",THREE.ShaderChunk.color_ THREE.ShaderChunk.map_particle_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( psColor, opacity );",THREE.ShaderChunk.map_particle_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},dashed:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,{scale:{type:"f",value:1},dashSize:{type:"f", value:1},totalSize:{type:"f",value:2}}]),vertexShader:["uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;",THREE.ShaderChunk.color_pars_vertex,"void main() {",THREE.ShaderChunk.color_vertex,"vLineDistance = scale * lineDistance;\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\ngl_Position = projectionMatrix * mvPosition;\n}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;", THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,"void main() {\nif ( mod( vLineDistance, totalSize ) > dashSize ) {\ndiscard;\n}\ngl_FragColor = vec4( diffuse, opacity );",THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex, -THREE.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:"vec4 pack_depth( const in float depth ) {\nconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\nconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\nvec4 res = fract( depth * bit_shift );\nres -= res.xxyz * bit_mask;\nreturn res;\n}\nvoid main() {\ngl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n}"}}; -THREE.WebGLRenderer=function(a){function b(a){if(a.__webglCustomAttributesList)for(var b in a.__webglCustomAttributesList)k.deleteBuffer(a.__webglCustomAttributesList[b].buffer)}function c(a,b){var c=a.vertices.length,d=b.material;if(d.attributes){void 0===a.__webglCustomAttributesList&&(a.__webglCustomAttributesList=[]);for(var e in d.attributes){var f=d.attributes[e];if(!f.__webglInitialized||f.createUniqueBuffers){f.__webglInitialized=!0;var g=1;"v2"===f.type?g=2:"v3"===f.type?g=3:"v4"===f.type? +THREE.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:"vec4 pack_depth( const in float depth ) {\nconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\nconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\nvec4 res = fract( depth * bit_shift );\nres -= res.xxyz * bit_mask;\nreturn res;\n}\nvoid main() {\ngl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n}"}};THREE.WebGLRenderer=function(a){function b(a){if(a.__webglCustomAttributesList)for(var b in a.__webglCustomAttributesList)k.deleteBuffer(a.__webglCustomAttributesList[b].buffer)}function c(a,b){var c=a.vertices.length,d=b.material;if(d.attributes){void 0===a.__webglCustomAttributesList&&(a.__webglCustomAttributesList=[]);for(var e in d.attributes){var f=d.attributes[e];if(!f.__webglInitialized||f.createUniqueBuffers){f.__webglInitialized=!0;var g=1;"v2"===f.type?g=2:"v3"===f.type?g=3:"v4"===f.type? g=4:"c"===f.type&&(g=3);f.size=g;f.array=new Float32Array(c*g);f.buffer=k.createBuffer();f.buffer.belongsToAttribute=e;f.needsUpdate=!0}a.__webglCustomAttributesList.push(f)}}}function d(a,b){var c=b.geometry,d=a.faces3,h=a.faces4,i=3*d.length+4*h.length,j=1*d.length+2*h.length,h=3*d.length+4*h.length,d=e(b,a),l=g(d),n=f(d),m=d.vertexColors?d.vertexColors:!1;a.__vertexArray=new Float32Array(3*i);n&&(a.__normalArray=new Float32Array(3*i));c.hasTangents&&(a.__tangentArray=new Float32Array(4*i));m&& (a.__colorArray=new Float32Array(3*i));if(l){if(0l;l++)G.autoScaleCubemaps&&!f?(n=j,m=l,r=c.image[l],t=Pc,r.width<=t&&r.height<=t||(w=Math.max(r.width,r.height),s=Math.floor(r.width*t/w),t=Math.floor(r.height*t/w),w=document.createElement("canvas"),w.width=s,w.height=t,w.getContext("2d").drawImage(r,0,0,r.width,r.height,0,0,s,t),r=w),n[m]=r):j[l]=c.image[l];l=j[0];n=0===(l.width&l.width-1)&&0===(l.height&l.height-1);m=P(c.format);r=P(c.type);K(k.TEXTURE_CUBE_MAP, -c,n);for(l=0;6>l;l++)if(f){t=j[l].mipmaps;w=0;for(y=t.length;w=xc&&console.warn("Trying to use "+a+" texture units while this GPU supports only "+ -xc);La+=1;return a}function y(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function D(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function A(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function I(a,b,c){$b!==a&&(a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL),$b=a);if(a&&(pb!==b||Sa!==c))k.polygonOffset(b,c),pb=b,Sa=c}function J(a){for(var a=a.split("\n"),b=0,c=a.length;b< -c;b++)a[b]=b+1+": "+a[b];return a.join("\n")}function B(a,b){var c;"fragment"===a?c=k.createShader(k.FRAGMENT_SHADER):"vertex"===a&&(c=k.createShader(k.VERTEX_SHADER));k.shaderSource(c,b);k.compileShader(c);return!k.getShaderParameter(c,k.COMPILE_STATUS)?(console.error(k.getShaderInfoLog(c)),console.error(J(b)),null):c}function K(a,b,c){c?(k.texParameteri(a,k.TEXTURE_WRAP_S,P(b.wrapS)),k.texParameteri(a,k.TEXTURE_WRAP_T,P(b.wrapT)),k.texParameteri(a,k.TEXTURE_MAG_FILTER,P(b.magFilter)),k.texParameteri(a, -k.TEXTURE_MIN_FILTER,P(b.minFilter))):(k.texParameteri(a,k.TEXTURE_WRAP_S,k.CLAMP_TO_EDGE),k.texParameteri(a,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE),k.texParameteri(a,k.TEXTURE_MAG_FILTER,L(b.magFilter)),k.texParameteri(a,k.TEXTURE_MIN_FILTER,L(b.minFilter)));if(Db&&b.type!==THREE.FloatType&&(1l;l++)H.autoScaleCubemaps&&!f?(n=j,m=l,s=c.image[l],u=Qc,s.width<=u&&s.height<=u||(x=Math.max(s.width,s.height),t=Math.floor(s.width*u/x),u=Math.floor(s.height*u/x),x=document.createElement("canvas"),x.width=t,x.height=u,x.getContext("2d").drawImage(s,0,0,s.width,s.height,0,0,t,u),s=x),n[m]=s):j[l]=c.image[l];l=j[0];n=0===(l.width&l.width-1)&&0===(l.height&l.height-1);m=Q(c.format);s=Q(c.type);L(k.TEXTURE_CUBE_MAP, +c,n);for(l=0;6>l;l++)if(f){u=j[l].mipmaps;x=0;for(z=u.length;x=yc&&console.warn("Trying to use "+a+" texture units while this GPU supports only "+ +yc);Ma+=1;return a}function z(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function E(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function B(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function J(a,b,c){ac!==a&&(a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL),ac=a);if(a&&(qb!==b||Ta!==c))k.polygonOffset(b,c),qb=b,Ta=c}function K(a){for(var a=a.split("\n"),b=0,c=a.length;b< +c;b++)a[b]=b+1+": "+a[b];return a.join("\n")}function C(a,b){var c;"fragment"===a?c=k.createShader(k.FRAGMENT_SHADER):"vertex"===a&&(c=k.createShader(k.VERTEX_SHADER));k.shaderSource(c,b);k.compileShader(c);return!k.getShaderParameter(c,k.COMPILE_STATUS)?(console.error(k.getShaderInfoLog(c)),console.error(K(b)),null):c}function L(a,b,c){c?(k.texParameteri(a,k.TEXTURE_WRAP_S,Q(b.wrapS)),k.texParameteri(a,k.TEXTURE_WRAP_T,Q(b.wrapT)),k.texParameteri(a,k.TEXTURE_MAG_FILTER,Q(b.magFilter)),k.texParameteri(a, +k.TEXTURE_MIN_FILTER,Q(b.minFilter))):(k.texParameteri(a,k.TEXTURE_WRAP_S,k.CLAMP_TO_EDGE),k.texParameteri(a,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE),k.texParameteri(a,k.TEXTURE_MAG_FILTER,M(b.magFilter)),k.texParameteri(a,k.TEXTURE_MIN_FILTER,M(b.minFilter)));if(Eb&&b.type!==THREE.FloatType&&(1b;b++)k.deleteFramebuffer(a.__webglFramebuffer[b]),k.deleteRenderbuffer(a.__webglRenderbuffer[b]);else k.deleteFramebuffer(a.__webglFramebuffer),k.deleteRenderbuffer(a.__webglRenderbuffer)};this.deallocateMaterial=function(a){var b=a.program;if(b){a.program=void 0;var c, -d,e=!1,a=0;for(c=ba.length;ab;b++)k.deleteFramebuffer(a.__webglFramebuffer[b]),k.deleteRenderbuffer(a.__webglRenderbuffer[b]);else k.deleteFramebuffer(a.__webglFramebuffer),k.deleteRenderbuffer(a.__webglRenderbuffer)};this.deallocateMaterial=function(a){var b=a.program;if(b){a.program=void 0;var c, +d,e=!1,a=0;for(c=ca.length;ad.numSupportedMorphTargets?(h.sort(o),h.length=d.numSupportedMorphTargets):h.length>d.numSupportedMorphNormals?h.sort(o):0===h.length&&h.push([0,0]);for(i=0;id.numSupportedMorphTargets?(h.sort(p),h.length=d.numSupportedMorphTargets):h.length>d.numSupportedMorphNormals?h.sort(p):0===h.length&&h.push([0,0]);for(i=0;iua;ua++)bc=bb[ua],zb[Ya]=bc.x,zb[Ya+1]=bc.y,zb[Ya+2]=bc.z,Ya+=3;else for(ua=0;3>ua;ua++)zb[Ya]=Xa.x, -zb[Ya+1]=Xa.y,zb[Ya+2]=Xa.z,Ya+=3;F=0;for(Z=ta.length;Fua;ua++)bc=bb[ua],zb[Ya]=bc.x,zb[Ya+1]=bc.y,zb[Ya+2]=bc.z,Ya+=3;else for(ua=0;4>ua;ua++)zb[Ya]=Xa.x,zb[Ya+1]=Xa.y,zb[Ya+2]=Xa.z,Ya+=3;k.bindBuffer(k.ARRAY_BUFFER,ra.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,zb,za)}if(nc&&Uc&&rb){F=0;for(Z=sa.length;Fua;ua++)jc=lb[ua],oc[Yb]=jc.u,oc[Yb+1]=jc.v,Yb+=2;F=0;for(Z= -ta.length;Fua;ua++)jc=lb[ua],oc[Yb]=jc.u,oc[Yb+1]=jc.v,Yb+=2;0ua;ua++)kc=nb[ua],pc[Zb]=kc.u,pc[Zb+1]=kc.v,Zb+=2;F=0;for(Z=ta.length;Fua;ua++)kc=nb[ua],pc[Zb]=kc.u,pc[Zb+1]=kc.v,Zb+=2;0va;va++)cc=cb[va],Ab[Za]=cc.x,Ab[Za+1]=cc.y,Ab[Za+2]=cc.z,Za+=3;else for(va=0;3>va;va++)Ab[Za]=Ya.x, +Ab[Za+1]=Ya.y,Ab[Za+2]=Ya.z,Za+=3;G=0;for($=ua.length;G<$;G++)if(U=$a[ua[G]],cb=U.vertexNormals,Ya=U.normal,4===cb.length&&gb)for(va=0;4>va;va++)cc=cb[va],Ab[Za]=cc.x,Ab[Za+1]=cc.y,Ab[Za+2]=cc.z,Za+=3;else for(va=0;4>va;va++)Ab[Za]=Ya.x,Ab[Za+1]=Ya.y,Ab[Za+2]=Ya.z,Za+=3;k.bindBuffer(k.ARRAY_BUFFER,sa.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,Ab,Aa)}if(oc&&Vc&&sb){G=0;for($=ta.length;G<$;G++)if(Wa=ta[G],mb=Vc[Wa],void 0!==mb)for(va=0;3>va;va++)kc=mb[va],pc[Zb]=kc.u,pc[Zb+1]=kc.v,Zb+=2;G=0;for($= +ua.length;G<$;G++)if(Wa=ua[G],mb=Vc[Wa],void 0!==mb)for(va=0;4>va;va++)kc=mb[va],pc[Zb]=kc.u,pc[Zb+1]=kc.v,Zb+=2;0va;va++)lc=ob[va],qc[$b]=lc.u,qc[$b+1]=lc.v,$b+=2;G=0;for($=ua.length;G<$;G++)if(Wa=ua[G],ob=Wc[Wa],void 0!==ob)for(va=0;4>va;va++)lc=ob[va],qc[$b]=lc.u,qc[$b+1]=lc.v,$b+=2;0<$b&&(k.bindBuffer(k.ARRAY_BUFFER,sa.__webglUV2Buffer), +k.bufferData(k.ARRAY_BUFFER,qc,Aa))}if(xc){G=0;for($=ta.length;G<$;G++)Xb[zb]=Ja,Xb[zb+1]=Ja+1,Xb[zb+2]=Ja+2,zb+=3,pb[db]=Ja,pb[db+1]=Ja+1,pb[db+2]=Ja,pb[db+3]=Ja+2,pb[db+4]=Ja+1,pb[db+5]=Ja+2,db+=6,Ja+=3;G=0;for($=ua.length;G<$;G++)Xb[zb]=Ja,Xb[zb+1]=Ja+1,Xb[zb+2]=Ja+3,Xb[zb+3]=Ja+1,Xb[zb+4]=Ja+2,Xb[zb+5]=Ja+3,zb+=6,pb[db]=Ja,pb[db+1]=Ja+1,pb[db+2]=Ja,pb[db+3]=Ja+3,pb[db+4]=Ja+1,pb[db+5]=Ja+2,pb[db+6]=Ja+2,pb[db+7]=Ja+3,db+=8,Ja+=4;k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,sa.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER, +Xb,Aa);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,sa.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,pb,Aa)}if(Uc){va=0;for(ac=Uc.length;vaf;f++){a.__webglFramebuffer[f]=k.createFramebuffer();a.__webglRenderbuffer[f]=k.createRenderbuffer();k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=k.TEXTURE_CUBE_MAP_POSITIVE_X+ -f;k.bindFramebuffer(k.FRAMEBUFFER,a.__webglFramebuffer[f]);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,h,g.__webglTexture,0);H(a.__webglRenderbuffer[f],a)}c&&k.generateMipmap(k.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=k.createFramebuffer(),a.__webglRenderbuffer=k.createRenderbuffer(),k.bindTexture(k.TEXTURE_2D,a.__webglTexture),K(k.TEXTURE_2D,a,c),k.texImage2D(k.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=k.TEXTURE_2D,k.bindFramebuffer(k.FRAMEBUFFER,a.__webglFramebuffer),k.framebufferTexture2D(k.FRAMEBUFFER, -k.COLOR_ATTACHMENT0,d,a.__webglTexture,0),H(a.__webglRenderbuffer,a),c&&k.generateMipmap(k.TEXTURE_2D);b?k.bindTexture(k.TEXTURE_CUBE_MAP,null):k.bindTexture(k.TEXTURE_2D,null);k.bindRenderbuffer(k.RENDERBUFFER,null);k.bindFramebuffer(k.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=rb,a=fb,d=nb,e=ka);b!==ia&&(k.bindFramebuffer(k.FRAMEBUFFER,b),k.viewport(d,e,c,a),ia=b);Aa=c;sb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin; -this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)}; -THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format: +void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.__webglTexture=k.createTexture();var c=0===(a.width&a.width-1)&&0===(a.height&a.height-1),d=Q(a.format),e=Q(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];k.bindTexture(k.TEXTURE_CUBE_MAP,a.__webglTexture);L(k.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=k.createFramebuffer();a.__webglRenderbuffer[f]=k.createRenderbuffer();k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=k.TEXTURE_CUBE_MAP_POSITIVE_X+ +f;k.bindFramebuffer(k.FRAMEBUFFER,a.__webglFramebuffer[f]);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,h,g.__webglTexture,0);I(a.__webglRenderbuffer[f],a)}c&&k.generateMipmap(k.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=k.createFramebuffer(),a.__webglRenderbuffer=k.createRenderbuffer(),k.bindTexture(k.TEXTURE_2D,a.__webglTexture),L(k.TEXTURE_2D,a,c),k.texImage2D(k.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=k.TEXTURE_2D,k.bindFramebuffer(k.FRAMEBUFFER,a.__webglFramebuffer),k.framebufferTexture2D(k.FRAMEBUFFER, +k.COLOR_ATTACHMENT0,d,a.__webglTexture,0),I(a.__webglRenderbuffer,a),c&&k.generateMipmap(k.TEXTURE_2D);b?k.bindTexture(k.TEXTURE_CUBE_MAP,null):k.bindTexture(k.TEXTURE_2D,null);k.bindRenderbuffer(k.RENDERBUFFER,null);k.bindFramebuffer(k.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=sb,a=gb,d=ob,e=la);b!==ja&&(k.bindFramebuffer(k.FRAMEBUFFER,b),k.viewport(d,e,c,a),ja=b);Ba=c;tb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin; +this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format: THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0}; -THREE.WebGLRenderTarget.prototype.clone=function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.anisotropy=this.anisotropy;a.minFilter=this.minFilter;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps;return a}; -THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.RenderableVertex=function(){this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.visible=!0};THREE.RenderableVertex.prototype.copy=function(a){this.positionWorld.copy(a.positionWorld);this.positionScreen.copy(a.positionScreen)}; -THREE.RenderableFace3=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.vertexNormalsLength=0;this.material=this.color=null;this.uvs=[[]];this.z=null}; -THREE.RenderableFace4=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.v4=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.vertexNormalsLength=0;this.material=this.color=null;this.uvs=[[]];this.z=null}; -THREE.RenderableObject=function(){this.z=this.object=null};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=this.object=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.material=null}; -THREE.ColorUtils={adjustHSV:function(a,b,c,d){var e=THREE.ColorUtils.__hsv;a.getHSV(e);e.h=THREE.Math.clamp(e.h+b,0,1);e.s=THREE.Math.clamp(e.s+c,0,1);e.v=THREE.Math.clamp(e.v+d,0,1);a.setHSV(e.h,e.s,e.v)}};THREE.ColorUtils.__hsv={h:0,s:0,v:0}; -THREE.GeometryUtils={merge:function(a,b){var c,d,e=a.vertices.length,f=b instanceof THREE.Mesh?b.geometry:b,g=a.vertices,h=f.vertices,i=a.faces,j=f.faces,l=a.faceVertexUvs[0],f=f.faceVertexUvs[0];b instanceof THREE.Mesh&&(b.matrixAutoUpdate&&b.updateMatrix(),c=b.matrix,d=new THREE.Matrix4,d.extractRotation(c,b.scale));for(var m=0,n=h.length;ma?b(c,e-1):j[e]a?b(c,e-1):j[e]b||p>b||n>b){i=a.vertices.length;w=e.clone();s=e.clone();o>=p&&o>=n?(j=j.clone(),j.lerpSelf(l,0.5),w.a=f,w.b=i,w.c=h,s.a=i,s.b=g,s.c=h,3===e.vertexNormals.length&&(f=e.vertexNormals[0].clone(),f.lerpSelf(e.vertexNormals[1],0.5),w.vertexNormals[1].copy(f),s.vertexNormals[0].copy(f)),3===e.vertexColors.length&&(f=e.vertexColors[0].clone(),f.lerpSelf(e.vertexColors[1],0.5),w.vertexColors[1].copy(f),s.vertexColors[0].copy(f)),e=0): -p>=o&&p>=n?(j=l.clone(),j.lerpSelf(m,0.5),w.a=f,w.b=g,w.c=i,s.a=i,s.b=h,s.c=f,3===e.vertexNormals.length&&(f=e.vertexNormals[1].clone(),f.lerpSelf(e.vertexNormals[2],0.5),w.vertexNormals[2].copy(f),s.vertexNormals[0].copy(f),s.vertexNormals[1].copy(e.vertexNormals[2]),s.vertexNormals[2].copy(e.vertexNormals[0])),3===e.vertexColors.length&&(f=e.vertexColors[1].clone(),f.lerpSelf(e.vertexColors[2],0.5),w.vertexColors[2].copy(f),s.vertexColors[0].copy(f),s.vertexColors[1].copy(e.vertexColors[2]),s.vertexColors[2].copy(e.vertexColors[0])), -e=1):(j=j.clone(),j.lerpSelf(m,0.5),w.a=f,w.b=g,w.c=i,s.a=i,s.b=g,s.c=h,3===e.vertexNormals.length&&(f=e.vertexNormals[0].clone(),f.lerpSelf(e.vertexNormals[2],0.5),w.vertexNormals[2].copy(f),s.vertexNormals[0].copy(f)),3===e.vertexColors.length&&(f=e.vertexColors[0].clone(),f.lerpSelf(e.vertexColors[2],0.5),w.vertexColors[2].copy(f),s.vertexColors[0].copy(f)),e=2);E.push(w,s);a.vertices.push(j);f=0;for(g=a.faceVertexUvs.length;fb||p>b||q>b||t>b){r=a.vertices.length;C=a.vertices.length+1;w=e.clone();s=e.clone();o>=p&&o>=q&&o>=t||q>=p&&q>=o&&q>=t?(o=j.clone(),o.lerpSelf(l,0.5),l=m.clone(),l.lerpSelf(n,0.5),w.a=f,w.b=r,w.c=C,w.d=i,s.a=r,s.b=g,s.c=h,s.d=C,4===e.vertexNormals.length&&(f=e.vertexNormals[0].clone(),f.lerpSelf(e.vertexNormals[1],0.5),g=e.vertexNormals[2].clone(),g.lerpSelf(e.vertexNormals[3],0.5),w.vertexNormals[1].copy(f), -w.vertexNormals[2].copy(g),s.vertexNormals[0].copy(f),s.vertexNormals[3].copy(g)),4===e.vertexColors.length&&(f=e.vertexColors[0].clone(),f.lerpSelf(e.vertexColors[1],0.5),g=e.vertexColors[2].clone(),g.lerpSelf(e.vertexColors[3],0.5),w.vertexColors[1].copy(f),w.vertexColors[2].copy(g),s.vertexColors[0].copy(f),s.vertexColors[3].copy(g)),e=0):(o=l.clone(),o.lerpSelf(m,0.5),l=n.clone(),l.lerpSelf(j,0.5),w.a=f,w.b=g,w.c=r,w.d=C,s.a=C,s.b=r,s.c=h,s.d=i,4===e.vertexNormals.length&&(f=e.vertexNormals[1].clone(), -f.lerpSelf(e.vertexNormals[2],0.5),g=e.vertexNormals[3].clone(),g.lerpSelf(e.vertexNormals[0],0.5),w.vertexNormals[2].copy(f),w.vertexNormals[3].copy(g),s.vertexNormals[0].copy(g),s.vertexNormals[1].copy(f)),4===e.vertexColors.length&&(f=e.vertexColors[1].clone(),f.lerpSelf(e.vertexColors[2],0.5),g=e.vertexColors[3].clone(),g.lerpSelf(e.vertexColors[0],0.5),w.vertexColors[2].copy(f),w.vertexColors[3].copy(g),s.vertexColors[0].copy(g),s.vertexColors[1].copy(f)),e=1);E.push(w,s);a.vertices.push(o,l); -f=0;for(g=a.faceVertexUvs.length;fb||q>b||n>b){i=a.vertices.length;x=e.clone();t=e.clone();p>=q&&p>=n?(j=j.clone(),j.lerpSelf(l,0.5),x.a=f,x.b=i,x.c=h,t.a=i,t.b=g,t.c=h,3===e.vertexNormals.length&&(f=e.vertexNormals[0].clone(),f.lerpSelf(e.vertexNormals[1],0.5),x.vertexNormals[1].copy(f),t.vertexNormals[0].copy(f)),3===e.vertexColors.length&&(f=e.vertexColors[0].clone(),f.lerpSelf(e.vertexColors[1],0.5),x.vertexColors[1].copy(f),t.vertexColors[0].copy(f)),e=0): +q>=p&&q>=n?(j=l.clone(),j.lerpSelf(m,0.5),x.a=f,x.b=g,x.c=i,t.a=i,t.b=h,t.c=f,3===e.vertexNormals.length&&(f=e.vertexNormals[1].clone(),f.lerpSelf(e.vertexNormals[2],0.5),x.vertexNormals[2].copy(f),t.vertexNormals[0].copy(f),t.vertexNormals[1].copy(e.vertexNormals[2]),t.vertexNormals[2].copy(e.vertexNormals[0])),3===e.vertexColors.length&&(f=e.vertexColors[1].clone(),f.lerpSelf(e.vertexColors[2],0.5),x.vertexColors[2].copy(f),t.vertexColors[0].copy(f),t.vertexColors[1].copy(e.vertexColors[2]),t.vertexColors[2].copy(e.vertexColors[0])), +e=1):(j=j.clone(),j.lerpSelf(m,0.5),x.a=f,x.b=g,x.c=i,t.a=i,t.b=g,t.c=h,3===e.vertexNormals.length&&(f=e.vertexNormals[0].clone(),f.lerpSelf(e.vertexNormals[2],0.5),x.vertexNormals[2].copy(f),t.vertexNormals[0].copy(f)),3===e.vertexColors.length&&(f=e.vertexColors[0].clone(),f.lerpSelf(e.vertexColors[2],0.5),x.vertexColors[2].copy(f),t.vertexColors[0].copy(f)),e=2);F.push(x,t);a.vertices.push(j);f=0;for(g=a.faceVertexUvs.length;fb||q>b||r>b||u>b){s=a.vertices.length;D=a.vertices.length+1;x=e.clone();t=e.clone();p>=q&&p>=r&&p>=u||r>=q&&r>=p&&r>=u?(p=j.clone(),p.lerpSelf(l,0.5),l=m.clone(),l.lerpSelf(n,0.5),x.a=f,x.b=s,x.c=D,x.d=i,t.a=s,t.b=g,t.c=h,t.d=D,4===e.vertexNormals.length&&(f=e.vertexNormals[0].clone(),f.lerpSelf(e.vertexNormals[1],0.5),g=e.vertexNormals[2].clone(),g.lerpSelf(e.vertexNormals[3],0.5),x.vertexNormals[1].copy(f), +x.vertexNormals[2].copy(g),t.vertexNormals[0].copy(f),t.vertexNormals[3].copy(g)),4===e.vertexColors.length&&(f=e.vertexColors[0].clone(),f.lerpSelf(e.vertexColors[1],0.5),g=e.vertexColors[2].clone(),g.lerpSelf(e.vertexColors[3],0.5),x.vertexColors[1].copy(f),x.vertexColors[2].copy(g),t.vertexColors[0].copy(f),t.vertexColors[3].copy(g)),e=0):(p=l.clone(),p.lerpSelf(m,0.5),l=n.clone(),l.lerpSelf(j,0.5),x.a=f,x.b=g,x.c=s,x.d=D,t.a=D,t.b=s,t.c=h,t.d=i,4===e.vertexNormals.length&&(f=e.vertexNormals[1].clone(), +f.lerpSelf(e.vertexNormals[2],0.5),g=e.vertexNormals[3].clone(),g.lerpSelf(e.vertexNormals[0],0.5),x.vertexNormals[2].copy(f),x.vertexNormals[3].copy(g),t.vertexNormals[0].copy(g),t.vertexNormals[1].copy(f)),4===e.vertexColors.length&&(f=e.vertexColors[1].clone(),f.lerpSelf(e.vertexColors[2],0.5),g=e.vertexColors[3].clone(),g.lerpSelf(e.vertexColors[0],0.5),x.vertexColors[2].copy(f),x.vertexColors[3].copy(g),t.vertexColors[0].copy(g),t.vertexColors[1].copy(f)),e=1);F.push(x,t);a.vertices.push(p,l); +f=0;for(g=a.faceVertexUvs.length;f>8&255,i>>16&255,i>>24&255)),d}d.mipmapCount=1;h[2]&131072&&!1!==b&&(d.mipmapCount=Math.max(1,h[7]));d.width=h[4];d.height=h[3];h=h[1]+4;f=d.width;g=d.height;for(i=0;im-1?0:m-1,o=m+1>e-1?e-1:m+1,p=0>l-1?0:l-1,q=l+1>d-1?d-1:l+1,t=[],r=[0,0,h[4*(m*d+l)]/255*b];t.push([-1,0,h[4*(m*d+p)]/255*b]);t.push([-1,-1,h[4*(n*d+p)]/255*b]);t.push([0,-1,h[4*(n*d+l)]/255*b]);t.push([1,-1,h[4*(n*d+q)]/255*b]);t.push([1,0,h[4*(m*d+q)]/255*b]);t.push([1,1,h[4*(o*d+q)]/255*b]);t.push([0,1,h[4*(o*d+l)]/255*b]);t.push([-1,1,h[4*(o*d+p)]/255*b]);n=[];p=t.length;for(o=0;om-1?0:m-1,p=m+1>e-1?e-1:m+1,q=0>l-1?0:l-1,r=l+1>d-1?d-1:l+1,u=[],s=[0,0,h[4*(m*d+l)]/255*b];u.push([-1,0,h[4*(m*d+q)]/255*b]);u.push([-1,-1,h[4*(n*d+q)]/255*b]);u.push([0,-1,h[4*(n*d+l)]/255*b]);u.push([1,-1,h[4*(n*d+r)]/255*b]);u.push([1,0,h[4*(m*d+r)]/255*b]);u.push([1,1,h[4*(p*d+r)]/255*b]);u.push([0,1,h[4*(p*d+l)]/255*b]);u.push([-1,1,h[4*(p*d+q)]/255*b]);n=[];q=u.length;for(p=0;p 0\nvec3 pointDiffuse = vec3( 0.0 );\nvec3 pointSpecular = vec3( 0.0 );\nfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 pointVector = lPosition.xyz + vViewPosition.xyz;\nfloat pointDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\npointDistance = 1.0 - min( ( length( pointVector ) / pointLightDistance[ i ] ), 1.0 );\npointVector = normalize( pointVector );\n#ifdef WRAP_AROUND\nfloat pointDiffuseWeightFull = max( dot( normal, pointVector ), 0.0 );\nfloat pointDiffuseWeightHalf = max( 0.5 * dot( normal, pointVector ) + 0.5, 0.0 );\nvec3 pointDiffuseWeight = mix( vec3 ( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n#else\nfloat pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );\n#endif\npointDiffuse += pointDistance * pointLightColor[ i ] * uDiffuseColor * pointDiffuseWeight;\nvec3 pointHalfVector = normalize( pointVector + viewPosition );\nfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\nfloat pointSpecularWeight = specularTex.r * max( pow( pointDotNormalHalf, uShininess ), 0.0 );\n#ifdef PHYSICALLY_BASED_SHADING\nfloat specularNormalization = ( uShininess + 2.0001 ) / 8.0;\nvec3 schlick = uSpecularColor + vec3( 1.0 - uSpecularColor ) * pow( 1.0 - dot( pointVector, pointHalfVector ), 5.0 );\npointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * pointDistance * specularNormalization;\n#else\npointSpecular += pointDistance * pointLightColor[ i ] * uSpecularColor * pointSpecularWeight * pointDiffuseWeight;\n#endif\n}\n#endif\n#if MAX_SPOT_LIGHTS > 0\nvec3 spotDiffuse = vec3( 0.0 );\nvec3 spotSpecular = vec3( 0.0 );\nfor ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\nvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\nvec3 spotVector = lPosition.xyz + vViewPosition.xyz;\nfloat spotDistance = 1.0;\nif ( spotLightDistance[ i ] > 0.0 )\nspotDistance = 1.0 - min( ( length( spotVector ) / spotLightDistance[ i ] ), 1.0 );\nspotVector = normalize( spotVector );\nfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\nif ( spotEffect > spotLightAngleCos[ i ] ) {\nspotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );\n#ifdef WRAP_AROUND\nfloat spotDiffuseWeightFull = max( dot( normal, spotVector ), 0.0 );\nfloat spotDiffuseWeightHalf = max( 0.5 * dot( normal, spotVector ) + 0.5, 0.0 );\nvec3 spotDiffuseWeight = mix( vec3 ( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );\n#else\nfloat spotDiffuseWeight = max( dot( normal, spotVector ), 0.0 );\n#endif\nspotDiffuse += spotDistance * spotLightColor[ i ] * uDiffuseColor * spotDiffuseWeight * spotEffect;\nvec3 spotHalfVector = normalize( spotVector + viewPosition );\nfloat spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\nfloat spotSpecularWeight = specularTex.r * max( pow( spotDotNormalHalf, uShininess ), 0.0 );\n#ifdef PHYSICALLY_BASED_SHADING\nfloat specularNormalization = ( uShininess + 2.0001 ) / 8.0;\nvec3 schlick = uSpecularColor + vec3( 1.0 - uSpecularColor ) * pow( 1.0 - dot( spotVector, spotHalfVector ), 5.0 );\nspotSpecular += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * spotDistance * specularNormalization * spotEffect;\n#else\nspotSpecular += spotDistance * spotLightColor[ i ] * uSpecularColor * spotSpecularWeight * spotDiffuseWeight * spotEffect;\n#endif\n}\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nvec3 dirDiffuse = vec3( 0.0 );\nvec3 dirSpecular = vec3( 0.0 );\nfor( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\n#ifdef WRAP_AROUND\nfloat directionalLightWeightingFull = max( dot( normal, dirVector ), 0.0 );\nfloat directionalLightWeightingHalf = max( 0.5 * dot( normal, dirVector ) + 0.5, 0.0 );\nvec3 dirDiffuseWeight = mix( vec3( directionalLightWeightingFull ), vec3( directionalLightWeightingHalf ), wrapRGB );\n#else\nfloat dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );\n#endif\ndirDiffuse += directionalLightColor[ i ] * uDiffuseColor * dirDiffuseWeight;\nvec3 dirHalfVector = normalize( dirVector + viewPosition );\nfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\nfloat dirSpecularWeight = specularTex.r * max( pow( dirDotNormalHalf, uShininess ), 0.0 );\n#ifdef PHYSICALLY_BASED_SHADING\nfloat specularNormalization = ( uShininess + 2.0001 ) / 8.0;\nvec3 schlick = uSpecularColor + vec3( 1.0 - uSpecularColor ) * pow( 1.0 - dot( dirVector, dirHalfVector ), 5.0 );\ndirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\n#else\ndirSpecular += directionalLightColor[ i ] * uSpecularColor * dirSpecularWeight * dirDiffuseWeight;\n#endif\n}\n#endif\n#if MAX_HEMI_LIGHTS > 0\nvec3 hemiDiffuse = vec3( 0.0 );\nvec3 hemiSpecular = vec3( 0.0 );\nfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\nvec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );\nvec3 lVector = normalize( lDirection.xyz );\nfloat dotProduct = dot( normal, lVector );\nfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\nvec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\nhemiDiffuse += uDiffuseColor * hemiColor;\nvec3 hemiHalfVectorSky = normalize( lVector + viewPosition );\nfloat hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;\nfloat hemiSpecularWeightSky = specularTex.r * max( pow( hemiDotNormalHalfSky, uShininess ), 0.0 );\nvec3 lVectorGround = -lVector;\nvec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );\nfloat hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;\nfloat hemiSpecularWeightGround = specularTex.r * max( pow( hemiDotNormalHalfGround, uShininess ), 0.0 );\n#ifdef PHYSICALLY_BASED_SHADING\nfloat dotProductGround = dot( normal, lVectorGround );\nfloat specularNormalization = ( uShininess + 2.0001 ) / 8.0;\nvec3 schlickSky = uSpecularColor + vec3( 1.0 - uSpecularColor ) * pow( 1.0 - dot( lVector, hemiHalfVectorSky ), 5.0 );\nvec3 schlickGround = uSpecularColor + vec3( 1.0 - uSpecularColor ) * pow( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 5.0 );\nhemiSpecular += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );\n#else\nhemiSpecular += uSpecularColor * hemiColor * ( hemiSpecularWeightSky + hemiSpecularWeightGround ) * hemiDiffuseWeight;\n#endif\n}\n#endif\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n#if MAX_DIR_LIGHTS > 0\ntotalDiffuse += dirDiffuse;\ntotalSpecular += dirSpecular;\n#endif\n#if MAX_HEMI_LIGHTS > 0\ntotalDiffuse += hemiDiffuse;\ntotalSpecular += hemiSpecular;\n#endif\n#if MAX_POINT_LIGHTS > 0\ntotalDiffuse += pointDiffuse;\ntotalSpecular += pointSpecular;\n#endif\n#if MAX_SPOT_LIGHTS > 0\ntotalDiffuse += spotDiffuse;\ntotalSpecular += spotSpecular;\n#endif\n#ifdef METAL\ngl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * uAmbientColor + totalSpecular );\n#else\ngl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * uAmbientColor ) + totalSpecular;\n#endif\nif ( enableReflection ) {\nvec3 vReflect;\nvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\nif ( useRefract ) {\nvReflect = refract( cameraToVertex, normal, uRefractionRatio );\n} else {\nvReflect = reflect( cameraToVertex, normal );\n}\nvec4 cubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularTex.r * uReflectivity );\n}", THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n"),vertexShader:["attribute vec4 tangent;\nuniform vec2 uOffset;\nuniform vec2 uRepeat;\nuniform bool enableDisplacement;\n#ifdef VERTEX_TEXTURES\nuniform sampler2D tDisplacement;\nuniform float uDisplacementScale;\nuniform float uDisplacementBias;\n#endif\nvarying vec3 vTangent;\nvarying vec3 vBinormal;\nvarying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vWorldPosition;\nvarying vec3 vViewPosition;", THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.skinnormal_vertex,"#ifdef USE_SKINNING\nvNormal = normalize( normalMatrix * skinnedNormal.xyz );\nvec4 skinnedTangent = skinMatrix * vec4( tangent.xyz, 0.0 );\nvTangent = normalize( normalMatrix * skinnedTangent.xyz );\n#else\nvNormal = normalize( normalMatrix * normal );\nvTangent = normalize( normalMatrix * tangent.xyz );\n#endif\nvBinormal = normalize( cross( vNormal, vTangent ) * tangent.w );\nvUv = uv * uRepeat + uOffset;\nvec3 displacedPosition;\n#ifdef VERTEX_TEXTURES\nif ( enableDisplacement ) {\nvec3 dv = texture2D( tDisplacement, uv ).xyz;\nfloat df = uDisplacementScale * dv.x + uDisplacementBias;\ndisplacedPosition = position + normalize( normal ) * df;\n} else {\n#ifdef USE_SKINNING\nvec4 skinVertex = vec4( position, 1.0 );\nvec4 skinned = boneMatX * skinVertex * skinWeight.x;\nskinned \t += boneMatY * skinVertex * skinWeight.y;\ndisplacedPosition = skinned.xyz;\n#else\ndisplacedPosition = position;\n#endif\n}\n#else\n#ifdef USE_SKINNING\nvec4 skinVertex = vec4( position, 1.0 );\nvec4 skinned = boneMatX * skinVertex * skinWeight.x;\nskinned \t += boneMatY * skinVertex * skinWeight.y;\ndisplacedPosition = skinned.xyz;\n#else\ndisplacedPosition = position;\n#endif\n#endif\nvec4 mvPosition = modelViewMatrix * vec4( displacedPosition, 1.0 );\nvec4 worldPosition = modelMatrix * vec4( displacedPosition, 1.0 );\ngl_Position = projectionMatrix * mvPosition;\nvWorldPosition = worldPosition.xyz;\nvViewPosition = -mvPosition.xyz;\n#ifdef USE_SHADOWMAP\nfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\nvShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition;\n}\n#endif\n}"].join("\n")}, -cube:{uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:"varying vec3 vWorldPosition;\nvoid main() {\nvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\nvWorldPosition = worldPosition.xyz;\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"uniform samplerCube tCube;\nuniform float tFlip;\nvarying vec3 vWorldPosition;\nvoid main() {\ngl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\n}"}}}; -THREE.FontUtils={faces:{},face:"helvetiker",weight:"normal",style:"normal",size:150,divisions:10,getFace:function(){return this.faces[this.face][this.weight][this.style]},loadFace:function(a){var b=a.familyName.toLowerCase();this.faces[b]=this.faces[b]||{};this.faces[b][a.cssFontWeight]=this.faces[b][a.cssFontWeight]||{};this.faces[b][a.cssFontWeight][a.cssFontStyle]=a;return this.faces[b][a.cssFontWeight][a.cssFontStyle]=a},drawText:function(a){for(var b=this.getFace(),c=this.size/b.resolution,d= -0,e=String(a).split(""),f=e.length,g=[],a=0;ae)return null;var f=[],g=[],h=[],i,j,l;if(0=m--){console.log("Warning, unable to triangulate polygon!");break}i=j;e<=i&&(i=0);j=i+1;e<=j&&(j=0);l=j+1;e<=l&&(l=0);var n;a:{n=a;var o=i,p=j,q=l,t=e,r=g,C=void 0,w=void 0,s=void 0,E=void 0,z=void 0, -u=void 0,y=void 0,D=void 0,A=void 0,w=n[r[o]].x,s=n[r[o]].y,E=n[r[p]].x,z=n[r[p]].y,u=n[r[q]].x,y=n[r[q]].y;if(1E-10>(E-w)*(y-s)-(z-s)*(u-w))n=!1;else{for(C=0;Ci)g=d+1;else if(0e)return null;var f=[],g=[],h=[],i,j,l;if(0=m--){console.log("Warning, unable to triangulate polygon!");break}i=j;e<=i&&(i=0);j=i+1;e<=j&&(j=0);l=j+1;e<=l&&(l=0);var n;a:{n=a;var p=i,q=j,r=l,u=e,s=g,D=void 0,x=void 0,t=void 0,F=void 0,A=void 0, +v=void 0,z=void 0,E=void 0,B=void 0,x=n[s[p]].x,t=n[s[p]].y,F=n[s[q]].x,A=n[s[q]].y,v=n[s[r]].x,z=n[s[r]].y;if(1E-10>(F-x)*(z-t)-(A-t)*(v-x))n=!1;else{for(D=0;Di)g=d+1;else if(0b&&(b=0);1Math.abs(d.x-c[0].x)&&1E-10>Math.abs(d.y-c[0].y)&&c.splice(c.length-1,1);b&&c.push(c[0]);return c}; +THREE.Path.prototype.getPoints=function(a,b){if(this.useSpacedPoints)return console.log("tata"),this.getSpacedPoints(a,b);var a=a||12,c=[],d,e,f,g,h,i,j,l,m,n,p,q,r;d=0;for(e=this.actions.length;dMath.abs(d.x-c[0].x)&&1E-10>Math.abs(d.y-c[0].y)&&c.splice(c.length-1,1);b&&c.push(c[0]);return c}; THREE.Path.prototype.toShapes=function(){var a,b,c,d,e=[],f=new THREE.Path;a=0;for(b=this.actions.length;a -h&&(h+=c.length);h%=c.length;0>g&&(g+=j.length);g%=j.length;e=0<=h-1?h-1:c.length-1;f=0<=g-1?g-1:j.length-1;q=[j[g],c[h],c[e]];q=THREE.FontUtils.Triangulate.area(q);t=[j[g],j[f],c[h]];t=THREE.FontUtils.Triangulate.area(t);m+n>q+t&&(h=o,g=l,0>h&&(h+=c.length),h%=c.length,0>g&&(g+=j.length),g%=j.length,e=0<=h-1?h-1:c.length-1,f=0<=g-1?g-1:j.length-1);m=c.slice(0,h);n=c.slice(h);o=j.slice(g);l=j.slice(0,g);f=[j[g],j[f],c[h]];p.push([j[g],c[h],c[e]]);p.push(f);c=m.concat(o).concat(l).concat(n)}return{shape:c, -isolatedPts:p,allpoints:d}},triangulateShape:function(a,b){var c=THREE.Shape.Utils.removeHoles(a,b),d=c.allpoints,e=c.isolatedPts,c=THREE.FontUtils.Triangulate(c.shape,!1),f,g,h,i,j={};f=0;for(g=d.length;fd;d++)i=h[d].x+":"+h[d].y,i=j[i],void 0!==i&&(h[d]=i)}f=0;for(g=e.length;fd;d++)i=h[d].x+":"+h[d].y,i=j[i],void 0!==i&&(h[d]=i)}return c.concat(e)}, +b;a++)f=e[a],THREE.Shape.Utils.isClockWise(f.getPoints())?(g.actions=f.actions,g.curves=f.curves,d.push(g),g=new THREE.Shape):g.holes.push(f)}else{a=0;for(b=e.length;a +h&&(h+=c.length);h%=c.length;0>g&&(g+=j.length);g%=j.length;e=0<=h-1?h-1:c.length-1;f=0<=g-1?g-1:j.length-1;r=[j[g],c[h],c[e]];r=THREE.FontUtils.Triangulate.area(r);u=[j[g],j[f],c[h]];u=THREE.FontUtils.Triangulate.area(u);m+n>r+u&&(h=p,g=l,0>h&&(h+=c.length),h%=c.length,0>g&&(g+=j.length),g%=j.length,e=0<=h-1?h-1:c.length-1,f=0<=g-1?g-1:j.length-1);m=c.slice(0,h);n=c.slice(h);p=j.slice(g);l=j.slice(0,g);f=[j[g],j[f],c[h]];q.push([j[g],c[h],c[e]]);q.push(f);c=m.concat(p).concat(l).concat(n)}return{shape:c, +isolatedPts:q,allpoints:d}},triangulateShape:function(a,b){var c=THREE.Shape.Utils.removeHoles(a,b),d=c.allpoints,e=c.isolatedPts,c=THREE.FontUtils.Triangulate(c.shape,!1),f,g,h,i,j={};f=0;for(g=d.length;fd;d++)i=h[d].x+":"+h[d].y,i=j[i],void 0!==i&&(h[d]=i)}f=0;for(g=e.length;fd;d++)i=h[d].x+":"+h[d].y,i=j[i],void 0!==i&&(h[d]=i)}return c.concat(e)}, isClockWise:function(a){return 0>THREE.FontUtils.Triangulate.area(a)},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){return 3*(1-a)*a*a*b},b3p3:function(a,b){return a*a*a*b},b3:function(a,b,c,d,e){return this.b3p0(a,b)+this.b3p1(a,c)+this.b3p2(a,d)+ -this.b3p3(a,e)}}; -THREE.AnimationHandler=function(){var a=[],b={},c={update:function(b){for(var c=0;ca.hierarchy[c].keys[d].time&& +this.b3p3(a,e)}};THREE.AnimationHandler=function(){var a=[],b={},c={update:function(b){for(var c=0;ca.hierarchy[c].keys[d].time&& (a.hierarchy[c].keys[d].time=0),void 0!==a.hierarchy[c].keys[d].rot&&!(a.hierarchy[c].keys[d].rot instanceof THREE.Quaternion)){var h=a.hierarchy[c].keys[d].rot;a.hierarchy[c].keys[d].rot=new THREE.Quaternion(h[0],h[1],h[2],h[3])}if(a.hierarchy[c].keys.length&&void 0!==a.hierarchy[c].keys[0].morphTargets){h={};for(d=0;do;o++){c=b[o];g=i.prevKey[c];h=i.nextKey[c];if(h.time<=l){if(jp;p++){c=b[p];g=i.prevKey[c];h=i.nextKey[c];if(h.time<=l){if(jd||1d?0:1;if("pos"===c)if(c=a.position,this.interpolationType===THREE.AnimationHandler.LINEAR)c.x=e[0]+(f[0]-e[0])*d,c.y=e[1]+(f[1]-e[1])*d,c.z=e[2]+ (f[2]-e[2])*d;else{if(this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD)this.points[0]=this.getPrevKeyWith("pos",m,g.index-1).pos,this.points[1]=e,this.points[2]=f,this.points[3]=this.getNextKeyWith("pos",m,h.index+1).pos,d=0.33*d+0.33,e=this.interpolateCatmullRom(this.points,d),c.x=e[0],c.y=e[1],c.z=e[2],this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD&&(d=this.interpolateCatmullRom(this.points,1.01*d), this.target.set(d[0],d[1],d[2]),this.target.subSelf(c),this.target.y=0,this.target.normalize(),d=Math.atan2(this.target.x,this.target.z),a.rotation.set(0,d,0))}else"rot"===c?THREE.Quaternion.slerp(e,f,a.quaternion,d):"scl"===c&&(c=a.scale,c.x=e[0]+(f[0]-e[0])*d,c.y=e[1]+(f[1]-e[1])*d,c.z=e[2]+(f[2]-e[2])*d)}}}}; THREE.Animation.prototype.interpolateCatmullRom=function(a,b){var c=[],d=[],e,f,g,h,i,j;e=(a.length-1)*b;f=Math.floor(e);e-=f;c[0]=0===f?f:f-1;c[1]=f;c[2]=f>a.length-2?f:f+1;c[3]=f>a.length-3?f:f+2;f=a[c[0]];h=a[c[1]];i=a[c[2]];j=a[c[3]];c=e*e;g=e*c;d[0]=this.interpolate(f[0],h[0],i[0],j[0],e,c,g);d[1]=this.interpolate(f[1],h[1],i[1],j[1],e,c,g);d[2]=this.interpolate(f[2],h[2],i[2],j[2],e,c,g);return d}; THREE.Animation.prototype.interpolate=function(a,b,c,d,e,f,g){a=0.5*(c-a);d=0.5*(d-b);return(2*(b-c)+a+d)*g+(-3*(b-c)-2*a-d)*f+a*e+b};THREE.Animation.prototype.getNextKeyWith=function(a,b,c){for(var d=this.data.hierarchy[b].keys,c=this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?c=g?b.interpolate(c,g):b.interpolate(c,c.time)}this.data.hierarchy[a].node.updateMatrix();d.matrixWorldNeedsUpdate=!0}}if(this.JITCompile&&void 0===f[0][e]){this.hierarchy[0].updateMatrixWorld(!0);for(a=0;ag?(b=Math.atan2(b.y-a.y,b.x-a.x),a=Math.atan2(c.y-a.y,c.x-a.x),b>a&&(a+=2*Math.PI),c=(b+a)/2,a=-Math.cos(c),c=-Math.sin(c),new THREE.Vector2(a,c)):d.multiplyScalar(g).addSelf(h).subSelf(a).clone()}function e(c,d){var e,f;for(O=c.length;0<=--O;){e=O;f=O-1;0>f&&(f=c.length-1); -for(var g=0,h=n+2*l,g=0;gg?(b=Math.atan2(b.y-a.y,b.x-a.x),a=Math.atan2(c.y-a.y,c.x-a.x),b>a&&(a+=2*Math.PI),c=(b+a)/2,a=-Math.cos(c),c=-Math.sin(c),new THREE.Vector2(a,c)):d.multiplyScalar(g).addSelf(h).subSelf(a).clone()}function e(c,d){var e,f;for(P=c.length;0<=--P;){e=P;f=P-1;0>f&&(f=c.length-1); +for(var g=0,h=n+2*l,g=0;gMath.abs(c-i)?[new THREE.UV(b,1-e),new THREE.UV(d,1-f),new THREE.UV(j,1-g),new THREE.UV(m,1-a)]:[new THREE.UV(c,1-e),new THREE.UV(i,1-f),new THREE.UV(l,1-g),new THREE.UV(n,1-a)]}};THREE.ExtrudeGeometry.__v1=new THREE.Vector2;THREE.ExtrudeGeometry.__v2=new THREE.Vector2;THREE.ExtrudeGeometry.__v3=new THREE.Vector2;THREE.ExtrudeGeometry.__v4=new THREE.Vector2;THREE.ExtrudeGeometry.__v5=new THREE.Vector2; THREE.ExtrudeGeometry.__v6=new THREE.Vector2;THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);!1===a instanceof Array&&(a=[a]);this.shapebb=a[a.length-1].getBoundingBox();this.addShapeList(a,b);this.computeCentroids();this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;cd?(d=new THREE.Face3(a.index,b.index,c.index,[a.clone(),b.clone(),c.clone()]),d.centroid.addSelf(a).addSelf(b).addSelf(c).divideScalar(3),d.normal=d.centroid.clone().normalize(),i.faces.push(d),d=Math.atan2(d.centroid.z,-d.centroid.x), +f[0].cross(e[0],h);g[0].cross(e[0],f[0]);for(j=1;jd?(d=new THREE.Face3(a.index,b.index,c.index,[a.clone(),b.clone(),c.clone()]),d.centroid.addSelf(a).addSelf(b).addSelf(c).divideScalar(3),d.normal=d.centroid.clone().normalize(),i.faces.push(d),d=Math.atan2(d.centroid.z,-d.centroid.x), i.faceVertexUvs[0].push([h(a.uv,a,d),h(b.uv,b,d),h(c.uv,c,d)])):(d-=1,f(a,g(a,b),g(a,c),d),f(g(a,b),b,g(b,c),d),f(g(a,c),g(b,c),c,d),f(g(a,b),g(b,c),g(a,c),d))}function g(a,b){m[a.index]||(m[a.index]=[]);m[b.index]||(m[b.index]=[]);var c=m[a.index][b.index];void 0===c&&(m[a.index][b.index]=m[b.index][a.index]=c=e((new THREE.Vector3).add(a,b).divideScalar(2)));return c}function h(a,b,c){0>c&&1===a.u&&(a=new THREE.UV(a.u-1,a.v));0===b.x&&0===b.z&&(a=new THREE.UV(c/2/Math.PI+0.5,a.v));return a}THREE.Geometry.call(this); -for(var c=c||1,d=d||0,i=this,j=0,l=a.length;j= +for(var c=c||1,d=d||0,i=this,j=0,l=a.length;j= l){for(j=0;3>j;j++){l=[i[j],i[(j+1)%3]];m=!0;for(n=0;nh;h++)void 0===f[g[h]]&&(f[g[h]]=e++,this.vertices.push(a[g[h]])),g[h]=f[g[h]]}for(d=0;dr;r++){q=h[r];o=new THREE.Color;o.setRGB(0,0,0);for(var s=0;s=q&&aA.length&&(C[s]=!0)}for(s in n)if(A=n[s],y=A[0],J=A[1],B=s.split("_"),K=B[0],B=B[1],u=new THREE.Vector3,b(0s;s++){r=h[s];p=new THREE.Color;p.setRGB(0,0,0);for(var t=0;t=r&&aB.length&&(D[t]=!0)}for(t in n)B=n[t],z=B[0],K=B[1],C=t.split("_"),L=C[0],C=C[1],v=new THREE.Vector3,b(0h.end&&(h.end=f);c||(c=i)}}for(i in d)h=d[i],this.createAnimation(i,h.start,h.end,a);this.firstAnimation=c}; THREE.MorphBlendMesh.prototype.setAnimationDirectionForward=function(a){if(a=this.animationsMap[a])a.direction=1,a.directionBackwards=!1};THREE.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(a){if(a=this.animationsMap[a])a.direction=-1,a.directionBackwards=!0};THREE.MorphBlendMesh.prototype.setAnimationFPS=function(a,b){var c=this.animationsMap[a];c&&(c.fps=b,c.duration=(c.end-c.start)/c.fps)}; THREE.MorphBlendMesh.prototype.setAnimationDuration=function(a,b){var c=this.animationsMap[a];c&&(c.duration=b,c.fps=(c.end-c.start)/c.duration)};THREE.MorphBlendMesh.prototype.setAnimationWeight=function(a,b){var c=this.animationsMap[a];c&&(c.weight=b)};THREE.MorphBlendMesh.prototype.setAnimationTime=function(a,b){var c=this.animationsMap[a];c&&(c.time=b)};THREE.MorphBlendMesh.prototype.getAnimationTime=function(a){var b=0;if(a=this.animationsMap[a])b=a.time;return b}; THREE.MorphBlendMesh.prototype.getAnimationDuration=function(a){var b=-1;if(a=this.animationsMap[a])b=a.duration;return b};THREE.MorphBlendMesh.prototype.playAnimation=function(a){var b=this.animationsMap[a];b?(b.time=0,b.active=!0):console.warn("animation["+a+"] undefined")};THREE.MorphBlendMesh.prototype.stopAnimation=function(a){if(a=this.animationsMap[a])a.active=!1}; -THREE.MorphBlendMesh.prototype.update=function(a){for(var b=0,c=this.animationsList.length;bd.duration||0>d.time)if(d.direction*=-1,d.time>d.duration&&(d.time=d.duration,d.directionBackwards=!0),0>d.time)d.time=0,d.directionBackwards=!1}else d.time%=d.duration,0>d.time&&(d.time+=d.duration);var f=d.startFrame+THREE.Math.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);e=d.time%e/e;d.directionBackwards&&(e=1-e);this.morphTargetInfluences[d.currentFrame]=e*g;this.morphTargetInfluences[d.lastFrame]=(1-e)*g}}}; -THREE.LensFlarePlugin=function(){function a(a){var c=b.createProgram(),d=b.createShader(b.FRAGMENT_SHADER),e=b.createShader(b.VERTEX_SHADER);b.shaderSource(d,a.fragmentShader);b.shaderSource(e,a.vertexShader);b.compileShader(d);b.compileShader(e);b.attachShader(c,d);b.attachShader(c,e);b.linkProgram(c);return c}var b,c,d,e,f,g,h,i,j,l,m,n;this.init=function(o){b=o.context;c=o;d=new Float32Array(16);e=new Uint16Array(6);o=0;d[o++]=-1;d[o++]=-1;d[o++]=0;d[o++]=0;d[o++]=1;d[o++]=-1;d[o++]=1;d[o++]=0; -d[o++]=1;d[o++]=1;d[o++]=1;d[o++]=1;d[o++]=-1;d[o++]=1;d[o++]=0;d[o++]=1;o=0;e[o++]=0;e[o++]=1;e[o++]=2;e[o++]=0;e[o++]=2;e[o++]=3;f=b.createBuffer();g=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,f);b.bufferData(b.ARRAY_BUFFER,d,b.STATIC_DRAW);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,g);b.bufferData(b.ELEMENT_ARRAY_BUFFER,e,b.STATIC_DRAW);h=b.createTexture();i=b.createTexture();b.bindTexture(b.TEXTURE_2D,h);b.texImage2D(b.TEXTURE_2D,0,b.RGB,16,16,0,b.RGB,b.UNSIGNED_BYTE,null);b.texParameteri(b.TEXTURE_2D, +THREE.MorphBlendMesh.prototype.update=function(a){for(var b=0,c=this.animationsList.length;bd.duration||0>d.time)d.direction*=-1,d.time>d.duration&&(d.time=d.duration,d.directionBackwards=!0),0>d.time&&(d.time=0,d.directionBackwards=!1)}else d.time%=d.duration,0>d.time&&(d.time+=d.duration);var f=d.startFrame+THREE.Math.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);e=d.time%e/e;d.directionBackwards&&(e=1-e);this.morphTargetInfluences[d.currentFrame]=e*g;this.morphTargetInfluences[d.lastFrame]=(1-e)*g}}};THREE.LensFlarePlugin=function(){function a(a){var c=b.createProgram(),d=b.createShader(b.FRAGMENT_SHADER),e=b.createShader(b.VERTEX_SHADER);b.shaderSource(d,a.fragmentShader);b.shaderSource(e,a.vertexShader);b.compileShader(d);b.compileShader(e);b.attachShader(c,d);b.attachShader(c,e);b.linkProgram(c);return c}var b,c,d,e,f,g,h,i,j,l,m,n;this.init=function(p){b=p.context;c=p;d=new Float32Array(16);e=new Uint16Array(6);p=0;d[p++]=-1;d[p++]=-1;d[p++]=0;d[p++]=0;d[p++]=1;d[p++]=-1;d[p++]=1;d[p++]=0; +d[p++]=1;d[p++]=1;d[p++]=1;d[p++]=1;d[p++]=-1;d[p++]=1;d[p++]=0;d[p++]=1;p=0;e[p++]=0;e[p++]=1;e[p++]=2;e[p++]=0;e[p++]=2;e[p++]=3;f=b.createBuffer();g=b.createBuffer();b.bindBuffer(b.ARRAY_BUFFER,f);b.bufferData(b.ARRAY_BUFFER,d,b.STATIC_DRAW);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,g);b.bufferData(b.ELEMENT_ARRAY_BUFFER,e,b.STATIC_DRAW);h=b.createTexture();i=b.createTexture();b.bindTexture(b.TEXTURE_2D,h);b.texImage2D(b.TEXTURE_2D,0,b.RGB,16,16,0,b.RGB,b.UNSIGNED_BYTE,null);b.texParameteri(b.TEXTURE_2D, b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.NEAREST);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);b.bindTexture(b.TEXTURE_2D,i);b.texImage2D(b.TEXTURE_2D,0,b.RGBA,16,16,0,b.RGBA,b.UNSIGNED_BYTE,null);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,b.CLAMP_TO_EDGE);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.NEAREST); b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.NEAREST);0>=b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)?(j=!1,l=a(THREE.ShaderFlares.lensFlare)):(j=!0,l=a(THREE.ShaderFlares.lensFlareVertexTexture));m={};n={};m.vertex=b.getAttribLocation(l,"position");m.uv=b.getAttribLocation(l,"uv");n.renderType=b.getUniformLocation(l,"renderType");n.map=b.getUniformLocation(l,"map");n.occlusionMap=b.getUniformLocation(l,"occlusionMap");n.opacity=b.getUniformLocation(l,"opacity");n.color=b.getUniformLocation(l, -"color");n.scale=b.getUniformLocation(l,"scale");n.rotation=b.getUniformLocation(l,"rotation");n.screenPosition=b.getUniformLocation(l,"screenPosition")};this.render=function(a,d,e,t){var a=a.__webglFlares,r=a.length;if(r){var C=new THREE.Vector3,w=t/e,s=0.5*e,E=0.5*t,z=16/t,u=new THREE.Vector2(z*w,z),y=new THREE.Vector3(1,1,0),D=new THREE.Vector2(1,1),A=n,z=m;b.useProgram(l);b.enableVertexAttribArray(m.vertex);b.enableVertexAttribArray(m.uv);b.uniform1i(A.occlusionMap,0);b.uniform1i(A.map,1);b.bindBuffer(b.ARRAY_BUFFER, -f);b.vertexAttribPointer(z.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(z.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,g);b.disable(b.CULL_FACE);b.depthMask(!1);var I,J,B,K,H;for(I=0;Iu;u++)w[u]=new THREE.Vector3,r[u]=new THREE.Vector3;w=s.shadowCascadeNearZ[C];s=s.shadowCascadeFarZ[C];r[0].set(-1,-1,w);r[1].set(1,-1,w);r[2].set(-1, -1,w);r[3].set(1,1,w);r[4].set(-1,-1,s);r[5].set(1,-1,s);r[6].set(-1,1,s);r[7].set(1,1,s);z.originalCamera=m;r=new THREE.Gyroscope;r.position=p.shadowCascadeOffset;r.add(z);r.add(z.target);m.add(r);p.shadowCascadeArray[t]=z;console.log("Created virtualLight",z)}C=p;w=t;s=C.shadowCascadeArray[w];s.position.copy(C.position);s.target.position.copy(C.target.position);s.lookAt(s.target);s.shadowCameraVisible=C.shadowCameraVisible;s.shadowDarkness=C.shadowDarkness;s.shadowBias=C.shadowCascadeBias[w];r=C.shadowCascadeNearZ[w]; -C=C.shadowCascadeFarZ[w];s=s.pointsFrustum;s[0].z=r;s[1].z=r;s[2].z=r;s[3].z=r;s[4].z=C;s[5].z=C;s[6].z=C;s[7].z=C;E[q]=z;q++}else E[q]=p,q++;n=0;for(o=E.length;nC;C++)if(w=s[C],w.copy(r[C]),THREE.ShadowMapPlugin.__projector.unprojectVector(w,t),q.matrixWorldInverse.multiplyVector3(w),w.xj.x&&(j.x=w.x),w.yj.y&&(j.y=w.y),w.zj.z)j.z=w.z;q.left=i.x;q.right= -j.x;q.top=j.y;q.bottom=i.y;q.updateProjectionMatrix()}q=p.shadowMap;r=p.shadowMatrix;t=p.shadowCamera;t.position.copy(p.matrixWorld.getPosition());t.lookAt(p.target.matrixWorld.getPosition());t.updateMatrixWorld();t.matrixWorldInverse.getInverse(t.matrixWorld);p.cameraHelper&&(p.cameraHelper.visible=p.shadowCameraVisible);p.shadowCameraVisible&&p.cameraHelper.update();r.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);r.multiplySelf(t.projectionMatrix);r.multiplySelf(t.matrixWorldInverse);t._viewMatrixArray|| -(t._viewMatrixArray=new Float32Array(16));t._projectionMatrixArray||(t._projectionMatrixArray=new Float32Array(16));t.matrixWorldInverse.flattenToArray(t._viewMatrixArray);t.projectionMatrix.flattenToArray(t._projectionMatrixArray);h.multiply(t.projectionMatrix,t.matrixWorldInverse);g.setFromMatrix(h);b.setRenderTarget(q);b.clear();s=l.__webglObjects;p=0;for(q=s.length;pv;v++)x[v]=new THREE.Vector3,s[v]=new THREE.Vector3;x=t.shadowCascadeNearZ[D];t=t.shadowCascadeFarZ[D];s[0].set(-1,-1,x);s[1].set(1,-1,x);s[2].set(-1, +1,x);s[3].set(1,1,x);s[4].set(-1,-1,t);s[5].set(1,-1,t);s[6].set(-1,1,t);s[7].set(1,1,t);A.originalCamera=m;s=new THREE.Gyroscope;s.position=q.shadowCascadeOffset;s.add(A);s.add(A.target);m.add(s);q.shadowCascadeArray[u]=A;console.log("Created virtualLight",A)}D=q;x=u;t=D.shadowCascadeArray[x];t.position.copy(D.position);t.target.position.copy(D.target.position);t.lookAt(t.target);t.shadowCameraVisible=D.shadowCameraVisible;t.shadowDarkness=D.shadowDarkness;t.shadowBias=D.shadowCascadeBias[x];s=D.shadowCascadeNearZ[x]; +D=D.shadowCascadeFarZ[x];t=t.pointsFrustum;t[0].z=s;t[1].z=s;t[2].z=s;t[3].z=s;t[4].z=D;t[5].z=D;t[6].z=D;t[7].z=D;F[r]=A;r++}else F[r]=q,r++;n=0;for(p=F.length;nD;D++)x=t[D],x.copy(s[D]),THREE.ShadowMapPlugin.__projector.unprojectVector(x,u),r.matrixWorldInverse.multiplyVector3(x),x.xj.x&&(j.x=x.x),x.yj.y&&(j.y=x.y),x.zj.z&&(j.z=x.z);r.left=i.x;r.right= +j.x;r.top=j.y;r.bottom=i.y;r.updateProjectionMatrix()}r=q.shadowMap;s=q.shadowMatrix;u=q.shadowCamera;u.position.copy(q.matrixWorld.getPosition());u.lookAt(q.target.matrixWorld.getPosition());u.updateMatrixWorld();u.matrixWorldInverse.getInverse(u.matrixWorld);q.cameraHelper&&(q.cameraHelper.visible=q.shadowCameraVisible);q.shadowCameraVisible&&q.cameraHelper.update();s.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);s.multiplySelf(u.projectionMatrix);s.multiplySelf(u.matrixWorldInverse);u._viewMatrixArray|| +(u._viewMatrixArray=new Float32Array(16));u._projectionMatrixArray||(u._projectionMatrixArray=new Float32Array(16));u.matrixWorldInverse.flattenToArray(u._viewMatrixArray);u.projectionMatrix.flattenToArray(u._projectionMatrixArray);h.multiply(u.projectionMatrix,u.matrixWorldInverse);g.setFromMatrix(h);b.setRenderTarget(r);b.clear();t=l.__webglObjects;q=0;for(r=t.length;q 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"}}; diff --git a/utils/compiler/README b/utils/compiler/README index 77ab89db02635cf5d52dea1095cddf2bacf24e17..270cfc278ca5a318d63c5560bd17dcb38f1707cd 100644 --- a/utils/compiler/README +++ b/utils/compiler/README @@ -171,7 +171,7 @@ lib/args4j.jar Args4j URL: https://args4j.dev.java.net/ -Version: 2.0.12 +Version: 2.0.16 License: MIT Description: @@ -187,7 +187,7 @@ lib/guava.jar Guava Libraries URL: http://code.google.com/p/guava-libraries/ -Version: r08 +Version: 13.0.1 License: Apache License 2.0 Description: Google's core Java libraries. @@ -230,7 +230,7 @@ lib/junit.jar JUnit URL: http://sourceforge.net/projects/junit/ -Version: 4.8.2 +Version: 4.10 License: Common Public License 1.0 Description: A framework for writing and running automated tests in Java. @@ -244,7 +244,7 @@ lib/protobuf-java.jar Protocol Buffers URL: http://code.google.com/p/protobuf/ -Version: 2.3.0 +Version: 2.4.1 License: New BSD License Description: Supporting libraries for protocol buffers, @@ -281,9 +281,9 @@ Local Modifications: None --- Code in: -tools/maven-ant-tasks-2.1.1.jar +tools/maven-ant-tasks-2.1.3.jar URL: http://maven.apache.org -Version 2.1.1 +Version 2.1.3 License: Apache License 2.0 Description: Maven Ant tasks are used to manage dependencies and to install/deploy to diff --git a/utils/compiler/compiler.jar b/utils/compiler/compiler.jar index 52a920f28c74de494f959ca0866aeb247ca96227..e23352ff0bdbf35d7711c9f49520ef13b4ded3e5 100644 Binary files a/utils/compiler/compiler.jar and b/utils/compiler/compiler.jar differ