diff --git a/build/Three.js b/build/Three.js index ae425921a56ab284e66d16d4c3a78b39cb907ee9..057cd3c0e0b4b4deda27a795e7b0d096c32f9576 100644 --- a/build/Three.js +++ b/build/Three.js @@ -19,66 +19,66 @@ b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this}};THREE.Frustum=function(){this.planes=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4]}; THREE.Frustum.prototype.setFromMatrix=function(a){var b,c=this.planes;c[0].set(a.n41-a.n11,a.n42-a.n12,a.n43-a.n13,a.n44-a.n14);c[1].set(a.n41+a.n11,a.n42+a.n12,a.n43+a.n13,a.n44+a.n14);c[2].set(a.n41+a.n21,a.n42+a.n22,a.n43+a.n23,a.n44+a.n24);c[3].set(a.n41-a.n21,a.n42-a.n22,a.n43-a.n23,a.n44-a.n24);c[4].set(a.n41-a.n31,a.n42-a.n32,a.n43-a.n33,a.n44-a.n34);c[5].set(a.n41+a.n31,a.n42+a.n32,a.n43+a.n33,a.n44+a.n34);for(a=0;6>a;a++)b=c[a],b.divideScalar(Math.sqrt(b.x*b.x+b.y*b.y+b.z*b.z))}; THREE.Frustum.prototype.contains=function(a){for(var b=this.planes,c=a.matrixWorld,d=THREE.Frustum.__v1.set(c.getColumnX().length(),c.getColumnY().length(),c.getColumnZ().length()),d=-a.geometry.boundingSphere.radius*Math.max(d.x,Math.max(d.y,d.z)),e=0;6>e;e++)if(a=b[e].x*c.n14+b[e].y*c.n24+b[e].z*c.n34+b[e].w,a<=d)return!1;return!0};THREE.Frustum.__v1=new THREE.Vector3; -THREE.Ray=function(a,b){function c(a,b,c){o.sub(c,a);r=o.dot(b);s=p.add(a,m.copy(b).multiplyScalar(r));return t=c.distanceTo(s)}function d(a,b,c,d){o.sub(d,b);p.sub(c,b);m.sub(a,b);u=o.dot(o);v=o.dot(p);x=o.dot(m);B=p.dot(p);D=p.dot(m);C=1/(u*B-v*v);A=(B*x-v*D)*C;F=(u*D-v*x)*C;return 0<=A&&0<=F&&1>A+F}this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3;this.intersectScene=function(a){return this.intersectObjects(a.children)};this.intersectObjects=function(a){var b,c,d=[];for(b=0, -c=a.length;ba.scale.x)return[];b={distance:o,point:a.position,face:null,object:a};m.push(b)}else if(a instanceof THREE.Mesh){o=c(this.origin,this.direction,a.matrixWorld.getPosition());if(o>a.geometry.boundingSphere.radius*Math.max(a.scale.x,Math.max(a.scale.y,a.scale.z)))return m;var r,s,j=a.geometry,t=j.vertices,y;a.matrixRotationWorld.extractRotation(a.matrixWorld);for(o=0,p=j.faces.length;oMath.abs(r))&&(s=n.dot(l)/r,!(0>s)&&(a.doubleSided||(a.flipSided?0r))))if(q.add(k,i.multiplyScalar(s)),b instanceof THREE.Face3)e=y.multiplyVector3(e.copy(t[b.a].position)),f=y.multiplyVector3(f.copy(t[b.b].position)),g=y.multiplyVector3(g.copy(t[b.c].position)),d(q,e,f,g)&&(b={distance:k.distanceTo(q),point:q.clone(),face:b,object:a},m.push(b));else if(b instanceof -THREE.Face4&&(e=y.multiplyVector3(e.copy(t[b.a].position)),f=y.multiplyVector3(f.copy(t[b.b].position)),g=y.multiplyVector3(g.copy(t[b.c].position)),h=y.multiplyVector3(h.copy(t[b.d].position)),d(q,e,f,h)||d(q,f,g,h)))b={distance:k.distanceTo(q),point:q.clone(),face:b,object:a},m.push(b)}return m};var o=new THREE.Vector3,p=new THREE.Vector3,m=new THREE.Vector3,r,s,t,u,v,x,B,D,C,A,F}; -THREE.Rectangle=function(){function a(){f=d-b;g=e-c}var b,c,d,e,f,g,h=!0;this.getX=function(){return b};this.getY=function(){return c};this.getWidth=function(){return f};this.getHeight=function(){return g};this.getLeft=function(){return b};this.getTop=function(){return c};this.getRight=function(){return d};this.getBottom=function(){return e};this.set=function(f,g,l,n){h=!1;b=f;c=g;d=l;e=n;a()};this.addPoint=function(f,g){h?(h=!1,b=f,c=g,d=f,e=g):(b=bf?d:f,e=e>g?e:g);a()};this.add3Points= -function(f,g,l,n,q,o){h?(h=!1,b=fl?f>q?f:q:l>q?l:q,e=g>n?g>o?g:o:n>o?n:o):(b=fl?f>q?f>d?f:d:q>d?q:d:l>q?l>d?l:d:q>d?q:d,e=g>n?g>o?g>e?g:e:o>e?o:e:n>o?n>e?n:e:o>e?o:e);a()};this.addRectangle=function(f){h?(h=!1,b=f.getLeft(),c=f.getTop(),d=f.getRight(),e=f.getBottom()):(b=bf.getRight()?d:f.getRight(),e=e> +THREE.Ray=function(a,b){function c(a,b,c){o.sub(c,a);r=o.dot(b);s=p.add(a,m.copy(b).multiplyScalar(r));return t=c.distanceTo(s)}function d(a,b,c,d){o.sub(d,b);p.sub(c,b);m.sub(a,b);u=o.dot(o);v=o.dot(p);x=o.dot(m);B=p.dot(p);D=p.dot(m);C=1/(u*B-v*v);A=(B*x-v*D)*C;H=(u*D-v*x)*C;return 0<=A&&0<=H&&1>A+H}this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3;this.intersectScene=function(a){return this.intersectObjects(a.children)};this.intersectObjects=function(a){var b,c,d=[];for(b=0, +c=a.length;ba.scale.x)return[];b={distance:o,point:a.position,face:null,object:a};m.push(b)}else if(a instanceof THREE.Mesh){o=c(this.origin,this.direction,a.matrixWorld.getPosition());if(o>a.geometry.boundingSphere.radius*Math.max(a.scale.x,Math.max(a.scale.y,a.scale.z)))return m;var r,s,j=a.geometry,t=j.vertices,y;a.matrixRotationWorld.extractRotation(a.matrixWorld);for(o=0,p=j.faces.length;oMath.abs(r))&&(s=n.dot(k)/r,!(0>s)&&(a.doubleSided||(a.flipSided?0r))))if(q.add(i,l.multiplyScalar(s)),b instanceof THREE.Face3)e=y.multiplyVector3(e.copy(t[b.a].position)),f=y.multiplyVector3(f.copy(t[b.b].position)),g=y.multiplyVector3(g.copy(t[b.c].position)),d(q,e,f,g)&&(b={distance:i.distanceTo(q),point:q.clone(),face:b,object:a},m.push(b));else if(b instanceof +THREE.Face4&&(e=y.multiplyVector3(e.copy(t[b.a].position)),f=y.multiplyVector3(f.copy(t[b.b].position)),g=y.multiplyVector3(g.copy(t[b.c].position)),h=y.multiplyVector3(h.copy(t[b.d].position)),d(q,e,f,h)||d(q,f,g,h)))b={distance:i.distanceTo(q),point:q.clone(),face:b,object:a},m.push(b)}return m};var o=new THREE.Vector3,p=new THREE.Vector3,m=new THREE.Vector3,r,s,t,u,v,x,B,D,C,A,H}; +THREE.Rectangle=function(){function a(){f=d-b;g=e-c}var b,c,d,e,f,g,h=!0;this.getX=function(){return b};this.getY=function(){return c};this.getWidth=function(){return f};this.getHeight=function(){return g};this.getLeft=function(){return b};this.getTop=function(){return c};this.getRight=function(){return d};this.getBottom=function(){return e};this.set=function(f,g,k,n){h=!1;b=f;c=g;d=k;e=n;a()};this.addPoint=function(f,g){h?(h=!1,b=f,c=g,d=f,e=g):(b=bf?d:f,e=e>g?e:g);a()};this.add3Points= +function(f,g,k,n,q,o){h?(h=!1,b=fk?f>q?f:q:k>q?k:q,e=g>n?g>o?g:o:n>o?n:o):(b=fk?f>q?f>d?f:d:q>d?q:d:k>q?k>d?k:d:q>d?q:d,e=g>n?g>o?g>e?g:e:o>e?o:e:n>o?n>e?n:e:o>e?o:e);a()};this.addRectangle=function(f){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 ae&&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(dg&&h.positionScreen.z(aa.positionScreen.x-Q.positionScreen.x)*(S.positionScreen.y-Q.positionScreen.y)-(aa.positionScreen.y-Q.positionScreen.y)*(S.positionScreen.x- -Q.positionScreen.x)))ja=q[n]=q[n]||new THREE.RenderableFace3,n++,l=ja,l.v1.copy(Q),l.v2.copy(S),l.v3.copy(aa);else continue;else if(y instanceof THREE.Face4)if(Q=i[y.a],S=i[y.b],aa=i[y.c],ja=i[y.d],Q.visible&&S.visible&&aa.visible&&ja.visible&&(ga.doubleSided||ga.flipSided!=(0>(ja.positionScreen.x-Q.positionScreen.x)*(S.positionScreen.y-Q.positionScreen.y)-(ja.positionScreen.y-Q.positionScreen.y)*(S.positionScreen.x-Q.positionScreen.x)||0>(S.positionScreen.x-aa.positionScreen.x)*(ja.positionScreen.y- -aa.positionScreen.y)-(S.positionScreen.y-aa.positionScreen.y)*(ja.positionScreen.x-aa.positionScreen.x))))ka=p[o]=p[o]||new THREE.RenderableFace4,o++,l=ka,l.v1.copy(Q),l.v2.copy(S),l.v3.copy(aa),l.v4.copy(ja);else continue;l.normalWorld.copy(y.normal);ba.multiplyVector3(l.normalWorld);l.centroidWorld.copy(y.centroid);T.multiplyVector3(l.centroidWorld);l.centroidScreen.copy(l.centroidWorld);C.multiplyVector3(l.centroidScreen);aa=y.vertexNormals;for(Q=0,S=aa.length;QD.z))g=v[u]=v[u]||new THREE.RenderableParticle,u++,t=g, -t.x=D.x/D.w,t.y=D.y/D.w,t.z=D.z,t.rotation=ga.rotation.z,t.scale.x=ga.scale.x*Math.abs(t.x-(D.x+e.projectionMatrix.n11)/(D.w+e.projectionMatrix.n14)),t.scale.y=ga.scale.y*Math.abs(t.y-(D.y+e.projectionMatrix.n22)/(D.w+e.projectionMatrix.n24)),t.material=ga.material,x.elements.push(t);f&&x.elements.sort(c);return x}};THREE.Quaternion=function(a,b,c,d){this.set(a||0,b||0,c||0,void 0!==d?d:1)}; +THREE.Projector=function(){function a(){var a=g[f]=g[f]||new THREE.RenderableObject;f++;return a}function b(){var a=l[i]=l[i]||new THREE.RenderableVertex;i++;return a}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(dg&&h.positionScreen.z(R.positionScreen.x-S.positionScreen.x)*(T.positionScreen.y-S.positionScreen.y)-(R.positionScreen.y-S.positionScreen.y)*(T.positionScreen.x- +S.positionScreen.x)))ka=q[n]=q[n]||new THREE.RenderableFace3,n++,k=ka,k.v1.copy(S),k.v2.copy(T),k.v3.copy(R);else continue;else if(y instanceof THREE.Face4)if(S=l[y.a],T=l[y.b],R=l[y.c],ka=l[y.d],S.visible&&T.visible&&R.visible&&ka.visible&&(ga.doubleSided||ga.flipSided!=(0>(ka.positionScreen.x-S.positionScreen.x)*(T.positionScreen.y-S.positionScreen.y)-(ka.positionScreen.y-S.positionScreen.y)*(T.positionScreen.x-S.positionScreen.x)||0>(T.positionScreen.x-R.positionScreen.x)*(ka.positionScreen.y- +R.positionScreen.y)-(T.positionScreen.y-R.positionScreen.y)*(ka.positionScreen.x-R.positionScreen.x))))la=p[o]=p[o]||new THREE.RenderableFace4,o++,k=la,k.v1.copy(S),k.v2.copy(T),k.v3.copy(R),k.v4.copy(ka);else continue;k.normalWorld.copy(y.normal);ba.multiplyVector3(k.normalWorld);k.centroidWorld.copy(y.centroid);V.multiplyVector3(k.centroidWorld);k.centroidScreen.copy(k.centroidWorld);C.multiplyVector3(k.centroidScreen);R=y.vertexNormals;for(S=0,T=R.length;SD.z))g=v[u]=v[u]||new THREE.RenderableParticle,u++,t=g,t.x= +D.x/D.w,t.y=D.y/D.w,t.z=D.z,t.rotation=ga.rotation.z,t.scale.x=ga.scale.x*Math.abs(t.x-(D.x+e.projectionMatrix.n11)/(D.w+e.projectionMatrix.n14)),t.scale.y=ga.scale.y*Math.abs(t.y-(D.y+e.projectionMatrix.n22)/(D.w+e.projectionMatrix.n24)),t.material=ga.material,x.elements.push(t);f&&x.elements.sort(c);return x}};THREE.Quaternion=function(a,b,c,d){this.set(a||0,b||0,c||0,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){var b=Math.PI/360,c=a.x*b,d=a.y*b,e=a.z*b,a=Math.cos(d),d=Math.sin(d),b=Math.cos(-e),e=Math.sin(-e),f=Math.cos(c),c=Math.sin(c),g=a*b,h=d*e;this.w=g*f-h*c;this.x=g*c+h*f;this.y=d*b*f+a*e*c;this.z=a*e*f-d*b*c;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=Math.pow(a.determinant(),1/3);this.w=Math.sqrt(Math.max(0,b+a.n11+a.n22+a.n33))/2;this.x=Math.sqrt(Math.max(0,b+a.n11-a.n22-a.n33))/2;this.y=Math.sqrt(Math.max(0,b-a.n11+a.n22-a.n33))/2;this.z=Math.sqrt(Math.max(0,b-a.n11-a.n22+a.n33))/2;this.x=0>a.n32-a.n23?-Math.abs(this.x):Math.abs(this.x);this.y=0>a.n13-a.n31?-Math.abs(this.y):Math.abs(this.y);this.z=0>a.n21-a.n12?-Math.abs(this.z):Math.abs(this.z); this.normalize();return this},calculateW:function(){this.w=-Math.sqrt(Math.abs(1-this.x*this.x-this.y*this.y-this.z*this.z));return this},inverse: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.w=this.z=this.y=this.x=0:(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a);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},multiply:function(a,b){this.x=a.x*b.w+a.y*b.z-a.z*b.y+a.w*b.x;this.y=-a.x*b.z+a.y*b.w+a.z*b.x+a.w*b.y;this.z=a.x*b.y-a.y*b.x+a.z*b.w+a.w*b.z;this.w=-a.x*b.x-a.y*b.y-a.z*b.z+a.w*b.w;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,k=this.w,i=k*c+g*e-h*d,l=k*d+h*c-f*e,n=k*e+f*d-g*c,c=-f* -c-g*d-h*e;b.x=i*k+c*-f+l*-h-n*-g;b.y=l*k+c*-g+n*-f-i*-h;b.z=n*k+c*-h+i*-g-l*-f;return 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},multiply:function(a,b){this.x=a.x*b.w+a.y*b.z-a.z*b.y+a.w*b.x;this.y=-a.x*b.z+a.y*b.w+a.z*b.x+a.w*b.y;this.z=a.x*b.y-a.y*b.x+a.z*b.w+a.w*b.z;this.w=-a.x*b.x-a.y*b.y-a.z*b.z+a.w*b.w;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,l=i*c+g*e-h*d,k=i*d+h*c-f*e,n=i*e+f*d-g*c,c=-f* +c-g*d-h*e;b.x=l*i+c*-f+k*-h-n*-g;b.y=k*i+c*-g+n*-f-l*-h;b.z=n*i+c*-h+l*-g-k*-f;return b}}; 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 f=Math.acos(e),e=Math.sqrt(1-e*e);if(0.0010>Math.abs(e))return c.w=0.5*(a.w+b.w),c.x=0.5*(a.x+b.x),c.y=0.5*(a.y+b.y),c.z=0.5*(a.z+b.z),c;b=Math.sin((1-d)*f)/e;d=Math.sin(d*f)/e;c.w=a.w*b+c.w*d;c.x=a.x*b+c.x*d;c.y=a.y*b+c.y*d;c.z=a.z*b+c.z*d;return c};THREE.Vertex=function(a){this.position=a||new THREE.Vector3}; 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.Face4=function(a,b,c,d,e,f,g){this.a=a;this.b=b;this.c=c;this.d=d;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=f instanceof THREE.Color?f:new THREE.Color;this.vertexColors=f instanceof Array?f:[];this.vertexTangents=[];this.materialIndex=g;this.centroid=new THREE.Vector3};THREE.UV=function(a,b){this.u=a||0;this.v=b||0}; @@ -89,14 +89,14 @@ b;a++)c=this.faces[a],c.centroid.set(0,0,0),c instanceof THREE.Face3?(c.centroid b,c,d,e,f,g=new THREE.Vector3,h=new THREE.Vector3;for(a=0,b=this.faces.length;ae?-1:1,f.vertexTangents[d]=new THREE.Vector4(Z.x,Z.y,Z.z,e)}this.hasTangents=!0},computeBoundingBox:function(){if(0e?-1:1,f.vertexTangents[d]=new THREE.Vector4($.x,$.y,$.z,e)}this.hasTangents=!0},computeBoundingBox:function(){if(0c.x)c.x=a.x;if(a.yc.y)c.y=a.y;if(a.zc.z)c.z=a.z}}},computeBoundingSphere:function(){for(var a,b=0,c=0,d=this.vertices.length;cb&&(b=a);this.boundingSphere={radius:b}},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,g;for(f=0,g=this.vertices.length;fthis.points.length-2?f:f+1;c[3]=f>this.points.length-3?f:f+2;i=this.points[c[0]];l=this.points[c[1]]; -n=this.points[c[2]];q=this.points[c[3]];h=g*g;k=g*h;d.x=b(i.x,l.x,n.x,q.x,g,h,k);d.y=b(i.y,l.y,n.y,q.y,g,h,k);d.z=b(i.z,l.z,n.z,q.z,g,h,k);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;athis.points.length-2?f:f+1;c[3]=f>this.points.length-3?f:f+2;l=this.points[c[0]];k=this.points[c[1]]; +n=this.points[c[2]];q=this.points[c[3]];h=g*g;i=g*h;d.x=b(l.x,k.x,n.x,q.x,g,h,i);d.y=b(l.y,k.y,n.y,q.y,g,h,i);d.z=b(l.z,k.z,n.z,q.z,g,h,i);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;as&&m.clearRect(Math.floor(ya.getX()),Math.floor(ya.getY()),Math.floor(ya.getWidth()),Math.floor(ya.getHeight())),0=h||(h*=g.intensity,d.r+=j.r*h,d.g+=j.g*h,d.b+=j.b*h)):g instanceof THREE.PointLight&&(ca=g.matrixWorld.getPosition(),h=c.dot(Ka.sub(ca,b).normalize()),0>=h||(h*=0==g.distance?1:1-Math.min(b.distanceTo(ca)/g.distance,1),0!=h&&(h*=g.intensity,d.r+=j.r*h,d.g+=j.g*h,d.b+=j.b*h)))}function r(a,f,g){b(g.opacity);c(g.blending);var j,ca,h,k,i,P;if(g instanceof THREE.ParticleBasicMaterial){if(g.map)k= -g.map.image,i=k.width>>1,P=k.height>>1,g=f.scale.x*o,h=f.scale.y*p,j=g*i,ca=h*P,la.set(a.x-j,a.y-ca,a.x+j,a.y+ca),Ca.intersects(la)&&(m.save(),m.translate(a.x,a.y),m.rotate(-f.rotation),m.scale(g,-h),m.translate(-i,-P),m.drawImage(k,0,0),m.restore())}else g instanceof THREE.ParticleCanvasMaterial&&(j=f.scale.x*o,ca=f.scale.y*p,la.set(a.x-j,a.y-ca,a.x+j,a.y+ca),Ca.intersects(la)&&(d(g.color.getContextStyle()),e(g.color.getContextStyle()),m.save(),m.translate(a.x,a.y),m.rotate(-f.rotation),m.scale(j, -ca),g.program(m),m.restore()))}function s(a,e,f,g){b(g.opacity);c(g.blending);m.beginPath();m.moveTo(a.positionScreen.x,a.positionScreen.y);m.lineTo(e.positionScreen.x,e.positionScreen.y);m.closePath();if(g instanceof THREE.LineBasicMaterial){a=g.linewidth;if(B!=a)m.lineWidth=B=a;a=g.linecap;if(D!=a)m.lineCap=D=a;a=g.linejoin;if(C!=a)m.lineJoin=C=a;d(g.color.getContextStyle());m.stroke();la.inflate(2*g.linewidth)}}function t(a,d,e,g,h,i,P,R){f.info.render.vertices+=3;f.info.render.faces++;b(R.opacity); -c(R.blending);O=a.positionScreen.x;M=a.positionScreen.y;H=d.positionScreen.x;j=d.positionScreen.y;V=e.positionScreen.x;y=e.positionScreen.y;v(O,M,H,j,V,y);if(R instanceof THREE.MeshBasicMaterial)if(R.map)R.map.mapping instanceof THREE.UVMapping&&(za=P.uvs[0],Mc(O,M,H,j,V,y,za[g].u,za[g].v,za[h].u,za[h].v,za[i].u,za[i].v,R.map));else if(R.envMap){if(R.envMap.mapping instanceof THREE.SphericalReflectionMapping)a=l.matrixWorldInverse,Ka.copy(P.vertexNormalsWorld[g]),Ua=0.5*(Ka.x*a.n11+Ka.y*a.n12+Ka.z* -a.n13)+0.5,jb=0.5*-(Ka.x*a.n21+Ka.y*a.n22+Ka.z*a.n23)+0.5,Ka.copy(P.vertexNormalsWorld[h]),cb=0.5*(Ka.x*a.n11+Ka.y*a.n12+Ka.z*a.n13)+0.5,Sa=0.5*-(Ka.x*a.n21+Ka.y*a.n22+Ka.z*a.n23)+0.5,Ka.copy(P.vertexNormalsWorld[i]),Va=0.5*(Ka.x*a.n11+Ka.y*a.n12+Ka.z*a.n13)+0.5,Ya=0.5*-(Ka.x*a.n21+Ka.y*a.n22+Ka.z*a.n23)+0.5,Mc(O,M,H,j,V,y,Ua,jb,cb,Sa,Va,Ya,R.envMap)}else R.wireframe?Eb(R.color,R.wireframeLinewidth,R.wireframeLinecap,R.wireframeLinejoin):zb(R.color);else if(R instanceof THREE.MeshLambertMaterial)R.map&& -!R.wireframe&&(R.map.mapping instanceof THREE.UVMapping&&(za=P.uvs[0],Mc(O,M,H,j,V,y,za[g].u,za[g].v,za[h].u,za[h].v,za[i].u,za[i].v,R.map)),c(THREE.SubtractiveBlending)),Sb?!R.wireframe&&R.shading==THREE.SmoothShading&&3==P.vertexNormalsWorld.length?(ba.r=$.r=da.r=ca.r,ba.g=$.g=da.g=ca.g,ba.b=$.b=da.b=ca.b,n(k,P.v1.positionWorld,P.vertexNormalsWorld[0],ba),n(k,P.v2.positionWorld,P.vertexNormalsWorld[1],$),n(k,P.v3.positionWorld,P.vertexNormalsWorld[2],da),ba.r=Math.max(0,Math.min(R.color.r*ba.r, -1)),ba.g=Math.max(0,Math.min(R.color.g*ba.g,1)),ba.b=Math.max(0,Math.min(R.color.b*ba.b,1)),$.r=Math.max(0,Math.min(R.color.r*$.r,1)),$.g=Math.max(0,Math.min(R.color.g*$.g,1)),$.b=Math.max(0,Math.min(R.color.b*$.b,1)),da.r=Math.max(0,Math.min(R.color.r*da.r,1)),da.g=Math.max(0,Math.min(R.color.g*da.g,1)),da.b=Math.max(0,Math.min(R.color.b*da.b,1)),ha.r=0.5*($.r+da.r),ha.g=0.5*($.g+da.g),ha.b=0.5*($.b+da.b),Ia=vc(ba,$,da,ha),Yb(O,M,H,j,V,y,0,0,1,0,0,1,Ia)):(T.r=ca.r,T.g=ca.g,T.b=ca.b,n(k,P.centroidWorld, -P.normalWorld,T),T.r=Math.max(0,Math.min(R.color.r*T.r,1)),T.g=Math.max(0,Math.min(R.color.g*T.g,1)),T.b=Math.max(0,Math.min(R.color.b*T.b,1)),R.wireframe?Eb(T,R.wireframeLinewidth,R.wireframeLinecap,R.wireframeLinejoin):zb(T)):R.wireframe?Eb(R.color,R.wireframeLinewidth,R.wireframeLinecap,R.wireframeLinejoin):zb(R.color);else if(R instanceof THREE.MeshDepthMaterial)Ba=l.near,Ga=l.far,ba.r=ba.g=ba.b=1-Tb(a.positionScreen.z,Ba,Ga),$.r=$.g=$.b=1-Tb(d.positionScreen.z,Ba,Ga),da.r=da.g=da.b=1-Tb(e.positionScreen.z, -Ba,Ga),ha.r=0.5*($.r+da.r),ha.g=0.5*($.g+da.g),ha.b=0.5*($.b+da.b),Ia=vc(ba,$,da,ha),Yb(O,M,H,j,V,y,0,0,1,0,0,1,Ia);else if(R instanceof THREE.MeshNormalMaterial)T.r=Zb(P.normalWorld.x),T.g=Zb(P.normalWorld.y),T.b=Zb(P.normalWorld.z),R.wireframe?Eb(T,R.wireframeLinewidth,R.wireframeLinecap,R.wireframeLinejoin):zb(T)}function u(a,d,e,g,h,R,P,i,m){f.info.render.vertices+=4;f.info.render.faces++;b(i.opacity);c(i.blending);if(i.map||i.envMap)t(a,d,g,0,1,3,P,i,m),t(h,e,R,1,2,3,P,i,m);else if(O=a.positionScreen.x, -M=a.positionScreen.y,H=d.positionScreen.x,j=d.positionScreen.y,V=e.positionScreen.x,y=e.positionScreen.y,E=g.positionScreen.x,Q=g.positionScreen.y,S=h.positionScreen.x,aa=h.positionScreen.y,ja=R.positionScreen.x,ga=R.positionScreen.y,i instanceof THREE.MeshBasicMaterial)x(O,M,H,j,V,y,E,Q),i.wireframe?Eb(i.color,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):zb(i.color);else if(i instanceof THREE.MeshLambertMaterial)Sb?!i.wireframe&&i.shading==THREE.SmoothShading&&4==P.vertexNormalsWorld.length? -(ba.r=$.r=da.r=ha.r=ca.r,ba.g=$.g=da.g=ha.g=ca.g,ba.b=$.b=da.b=ha.b=ca.b,n(k,P.v1.positionWorld,P.vertexNormalsWorld[0],ba),n(k,P.v2.positionWorld,P.vertexNormalsWorld[1],$),n(k,P.v4.positionWorld,P.vertexNormalsWorld[3],da),n(k,P.v3.positionWorld,P.vertexNormalsWorld[2],ha),ba.r=Math.max(0,Math.min(i.color.r*ba.r,1)),ba.g=Math.max(0,Math.min(i.color.g*ba.g,1)),ba.b=Math.max(0,Math.min(i.color.b*ba.b,1)),$.r=Math.max(0,Math.min(i.color.r*$.r,1)),$.g=Math.max(0,Math.min(i.color.g*$.g,1)),$.b=Math.max(0, -Math.min(i.color.b*$.b,1)),da.r=Math.max(0,Math.min(i.color.r*da.r,1)),da.g=Math.max(0,Math.min(i.color.g*da.g,1)),da.b=Math.max(0,Math.min(i.color.b*da.b,1)),ha.r=Math.max(0,Math.min(i.color.r*ha.r,1)),ha.g=Math.max(0,Math.min(i.color.g*ha.g,1)),ha.b=Math.max(0,Math.min(i.color.b*ha.b,1)),Ia=vc(ba,$,da,ha),v(O,M,H,j,E,Q),Yb(O,M,H,j,E,Q,0,0,1,0,0,1,Ia),v(S,aa,V,y,ja,ga),Yb(S,aa,V,y,ja,ga,1,0,1,1,0,1,Ia)):(T.r=ca.r,T.g=ca.g,T.b=ca.b,n(k,P.centroidWorld,P.normalWorld,T),T.r=Math.max(0,Math.min(i.color.r* -T.r,1)),T.g=Math.max(0,Math.min(i.color.g*T.g,1)),T.b=Math.max(0,Math.min(i.color.b*T.b,1)),x(O,M,H,j,V,y,E,Q),i.wireframe?Eb(T,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):zb(T)):(x(O,M,H,j,V,y,E,Q),i.wireframe?Eb(i.color,i.wireframeLinewidth,i.wireframeLinecap,i.wireframeLinejoin):zb(i.color));else if(i instanceof THREE.MeshNormalMaterial)T.r=Zb(P.normalWorld.x),T.g=Zb(P.normalWorld.y),T.b=Zb(P.normalWorld.z),x(O,M,H,j,V,y,E,Q),i.wireframe?Eb(T,i.wireframeLinewidth,i.wireframeLinecap, -i.wireframeLinejoin):zb(T);else if(i instanceof THREE.MeshDepthMaterial)Ba=l.near,Ga=l.far,ba.r=ba.g=ba.b=1-Tb(a.positionScreen.z,Ba,Ga),$.r=$.g=$.b=1-Tb(d.positionScreen.z,Ba,Ga),da.r=da.g=da.b=1-Tb(g.positionScreen.z,Ba,Ga),ha.r=ha.g=ha.b=1-Tb(e.positionScreen.z,Ba,Ga),Ia=vc(ba,$,da,ha),v(O,M,H,j,E,Q),Yb(O,M,H,j,E,Q,0,0,1,0,0,1,Ia),v(S,aa,V,y,ja,ga),Yb(S,aa,V,y,ja,ga,1,0,1,1,0,1,Ia)}function v(a,b,c,d,e,f){m.beginPath();m.moveTo(a,b);m.lineTo(c,d);m.lineTo(e,f);m.lineTo(a,b);m.closePath()}function x(a, -b,c,d,e,f,g,j){m.beginPath();m.moveTo(a,b);m.lineTo(c,d);m.lineTo(e,f);m.lineTo(g,j);m.lineTo(a,b);m.closePath()}function Eb(a,b,c,e){if(B!=b)m.lineWidth=B=b;if(D!=c)m.lineCap=D=c;if(C!=e)m.lineJoin=C=e;d(a.getContextStyle());m.stroke();la.inflate(2*b)}function zb(a){e(a.getContextStyle());m.fill()}function Mc(a,b,c,d,f,g,j,ca,h,i,R,k,P){if(0!=P.image.width){if(!0==P.needsUpdate||void 0==Qa[P.id]){var l=P.wrapS==THREE.RepeatWrapping,n=P.wrapT==THREE.RepeatWrapping;Qa[P.id]=m.createPattern(P.image, -l&&n?"repeat":l&&!n?"repeat-x":!l&&n?"repeat-y":"no-repeat");P.needsUpdate=!1}e(Qa[P.id]);var l=P.offset.x/P.repeat.x,n=P.offset.y/P.repeat.y,q=P.image.width*P.repeat.x,o=P.image.height*P.repeat.y,j=(j+l)*q,ca=(ca+n)*o,c=c-a,d=d-b,f=f-a,g=g-b,h=(h+l)*q-j,i=(i+n)*o-ca,R=(R+l)*q-j,k=(k+n)*o-ca,l=h*k-R*i;if(0==l){if(void 0===ka[P.id])b=document.createElement("canvas"),b.width=P.image.width,b.height=P.image.height,b=b.getContext("2d"),b.drawImage(P.image,0,0),ka[P.id]=b.getImageData(0,0,P.image.width, -P.image.height).data;b=ka[P.id];j=4*(Math.floor(j)+Math.floor(ca)*P.image.width);T.setRGB(b[j]/255,b[j+1]/255,b[j+2]/255);zb(T)}else l=1/l,P=(k*c-i*f)*l,i=(k*d-i*g)*l,c=(h*f-R*c)*l,d=(h*g-R*d)*l,a=a-P*j-c*ca,j=b-i*j-d*ca,m.save(),m.transform(P,i,c,d,a,j),m.fill(),m.restore()}}function Yb(a,b,c,d,e,f,g,j,ca,h,P,i,R){var k,l;k=R.width-1;l=R.height-1;g*=k;j*=l;c-=a;d-=b;e-=a;f-=b;ca=ca*k-g;h=h*l-j;P=P*k-g;i=i*l-j;l=1/(ca*i-P*h);k=(i*c-h*e)*l;h=(i*d-h*f)*l;c=(ca*e-P*c)*l;d=(ca*f-P*d)*l;a=a-k*g-c*j;b= -b-h*g-d*j;m.save();m.transform(k,h,c,d,a,b);m.clip();m.drawImage(R,0,0);m.restore()}function vc(a,b,c,d){var e=~~(255*a.r),f=~~(255*a.g),a=~~(255*a.b),g=~~(255*b.r),j=~~(255*b.g),b=~~(255*b.b),ca=~~(255*c.r),h=~~(255*c.g),c=~~(255*c.b),P=~~(255*d.r),i=~~(255*d.g),d=~~(255*d.b);db[0]=0>e?0:255f?0:255a?0:255g?0:255j?0:255b?0:255ca?0:255h?0:255c?0:255P?0:255i?0:255d?0:255a?0:1=k||(k*=g.intensity,d.r+=h.r*k,d.g+=h.g*k,d.b+=h.b*k)):g instanceof THREE.PointLight&&(i=g.matrixWorld.getPosition(),k=c.dot(A.sub(i,b).normalize()),0>=k||(k*=0==g.distance?1:1-Math.min(b.distanceTo(i)/g.distance,1),0!=k&&(k*=g.intensity,d.r+=h.r*k,d.g+=h.g*k,d.b+=h.b*k)))}function b(a){null==F[a]&&(F[a]=document.createElementNS("http://www.w3.org/2000/svg", -"path"),0==O&&F[a].setAttribute("shape-rendering","crispEdges"));return F[a]}function c(a){a=0.5*(a+1);return 0>a?0:1s&&m.clearRect(Math.floor(Ba.getX()),Math.floor(Ba.getY()),Math.floor(Ba.getWidth()),Math.floor(Ba.getHeight())),0=h||(h*=g.intensity,d.r+=aa.r*h,d.g+=aa.g*h,d.b+=aa.b*h)):g instanceof THREE.PointLight&&(j=g.matrixWorld.getPosition(),h=c.dot(Ea.sub(j,b).normalize()),0>=h||(h*=0==g.distance?1:1-Math.min(b.distanceTo(j)/g.distance,1),0!=h&&(h*=g.intensity,d.r+=aa.r*h,d.g+=aa.g*h,d.b+=aa.b*h)))}function r(a,f,g){b(g.opacity);c(g.blending);var aa,j,h,i,l,k;if(g instanceof THREE.ParticleBasicMaterial){if(g.map)i= +g.map.image,l=i.width>>1,k=i.height>>1,g=f.scale.x*o,h=f.scale.y*p,aa=g*l,j=h*k,ja.set(a.x-aa,a.y-j,a.x+aa,a.y+j),ra.intersects(ja)&&(m.save(),m.translate(a.x,a.y),m.rotate(-f.rotation),m.scale(g,-h),m.translate(-l,-k),m.drawImage(i,0,0),m.restore())}else g instanceof THREE.ParticleCanvasMaterial&&(aa=f.scale.x*o,j=f.scale.y*p,ja.set(a.x-aa,a.y-j,a.x+aa,a.y+j),ra.intersects(ja)&&(d(g.color.getContextStyle()),e(g.color.getContextStyle()),m.save(),m.translate(a.x,a.y),m.rotate(-f.rotation),m.scale(aa, +j),g.program(m),m.restore()))}function s(a,e,f,g){b(g.opacity);c(g.blending);m.beginPath();m.moveTo(a.positionScreen.x,a.positionScreen.y);m.lineTo(e.positionScreen.x,e.positionScreen.y);m.closePath();if(g instanceof THREE.LineBasicMaterial){a=g.linewidth;if(B!=a)m.lineWidth=B=a;a=g.linecap;if(D!=a)m.lineCap=D=a;a=g.linejoin;if(C!=a)m.lineJoin=C=a;d(g.color.getContextStyle());m.stroke();ja.inflate(2*g.linewidth)}}function t(a,d,e,g,h,l,P,O){f.info.render.vertices+=3;f.info.render.faces++;b(O.opacity); +c(O.blending);Q=a.positionScreen.x;L=a.positionScreen.y;G=d.positionScreen.x;j=d.positionScreen.y;W=e.positionScreen.x;y=e.positionScreen.y;v(Q,L,G,j,W,y);if(O instanceof THREE.MeshBasicMaterial)if(O.map)O.map.mapping instanceof THREE.UVMapping&&(Da=P.uvs[0],Lc(Q,L,G,j,W,y,Da[g].u,Da[g].v,Da[h].u,Da[h].v,Da[l].u,Da[l].v,O.map));else if(O.envMap){if(O.envMap.mapping instanceof THREE.SphericalReflectionMapping)a=k.matrixWorldInverse,Ea.copy(P.vertexNormalsWorld[g]),$a=0.5*(Ea.x*a.n11+Ea.y*a.n12+Ea.z* +a.n13)+0.5,Ta=0.5*-(Ea.x*a.n21+Ea.y*a.n22+Ea.z*a.n23)+0.5,Ea.copy(P.vertexNormalsWorld[h]),ib=0.5*(Ea.x*a.n11+Ea.y*a.n12+Ea.z*a.n13)+0.5,db=0.5*-(Ea.x*a.n21+Ea.y*a.n22+Ea.z*a.n23)+0.5,Ea.copy(P.vertexNormalsWorld[l]),Wa=0.5*(Ea.x*a.n11+Ea.y*a.n12+Ea.z*a.n13)+0.5,Xa=0.5*-(Ea.x*a.n21+Ea.y*a.n22+Ea.z*a.n23)+0.5,Lc(Q,L,G,j,W,y,$a,Ta,ib,db,Wa,Xa,O.envMap)}else O.wireframe?Fb(O.color,O.wireframeLinewidth,O.wireframeLinecap,O.wireframeLinejoin):Ab(O.color);else if(O instanceof THREE.MeshLambertMaterial)O.map&& +!O.wireframe&&(O.map.mapping instanceof THREE.UVMapping&&(Da=P.uvs[0],Lc(Q,L,G,j,W,y,Da[g].u,Da[g].v,Da[h].u,Da[h].v,Da[l].u,Da[l].v,O.map)),c(THREE.SubtractiveBlending)),ab?!O.wireframe&&O.shading==THREE.SmoothShading&&3==P.vertexNormalsWorld.length?(ba.r=ca.r=da.r=aa.r,ba.g=ca.g=da.g=aa.g,ba.b=ca.b=da.b=aa.b,n(i,P.v1.positionWorld,P.vertexNormalsWorld[0],ba),n(i,P.v2.positionWorld,P.vertexNormalsWorld[1],ca),n(i,P.v3.positionWorld,P.vertexNormalsWorld[2],da),ba.r=Math.max(0,Math.min(O.color.r*ba.r, +1)),ba.g=Math.max(0,Math.min(O.color.g*ba.g,1)),ba.b=Math.max(0,Math.min(O.color.b*ba.b,1)),ca.r=Math.max(0,Math.min(O.color.r*ca.r,1)),ca.g=Math.max(0,Math.min(O.color.g*ca.g,1)),ca.b=Math.max(0,Math.min(O.color.b*ca.b,1)),da.r=Math.max(0,Math.min(O.color.r*da.r,1)),da.g=Math.max(0,Math.min(O.color.g*da.g,1)),da.b=Math.max(0,Math.min(O.color.b*da.b,1)),ha.r=0.5*(ca.r+da.r),ha.g=0.5*(ca.g+da.g),ha.b=0.5*(ca.b+da.b),Ja=vc(ba,ca,da,ha),Yb(Q,L,G,j,W,y,0,0,1,0,0,1,Ja)):(V.r=aa.r,V.g=aa.g,V.b=aa.b,n(i, +P.centroidWorld,P.normalWorld,V),V.r=Math.max(0,Math.min(O.color.r*V.r,1)),V.g=Math.max(0,Math.min(O.color.g*V.g,1)),V.b=Math.max(0,Math.min(O.color.b*V.b,1)),O.wireframe?Fb(V,O.wireframeLinewidth,O.wireframeLinecap,O.wireframeLinejoin):Ab(V)):O.wireframe?Fb(O.color,O.wireframeLinewidth,O.wireframeLinecap,O.wireframeLinejoin):Ab(O.color);else if(O instanceof THREE.MeshDepthMaterial)za=k.near,Aa=k.far,ba.r=ba.g=ba.b=1-Tb(a.positionScreen.z,za,Aa),ca.r=ca.g=ca.b=1-Tb(d.positionScreen.z,za,Aa),da.r= +da.g=da.b=1-Tb(e.positionScreen.z,za,Aa),ha.r=0.5*(ca.r+da.r),ha.g=0.5*(ca.g+da.g),ha.b=0.5*(ca.b+da.b),Ja=vc(ba,ca,da,ha),Yb(Q,L,G,j,W,y,0,0,1,0,0,1,Ja);else if(O instanceof THREE.MeshNormalMaterial)V.r=Zb(P.normalWorld.x),V.g=Zb(P.normalWorld.y),V.b=Zb(P.normalWorld.z),O.wireframe?Fb(V,O.wireframeLinewidth,O.wireframeLinecap,O.wireframeLinejoin):Ab(V)}function u(a,d,e,g,h,O,l,P,m){f.info.render.vertices+=4;f.info.render.faces++;b(P.opacity);c(P.blending);if(P.map||P.envMap)t(a,d,g,0,1,3,l,P,m), +t(h,e,O,1,2,3,l,P,m);else if(Q=a.positionScreen.x,L=a.positionScreen.y,G=d.positionScreen.x,j=d.positionScreen.y,W=e.positionScreen.x,y=e.positionScreen.y,E=g.positionScreen.x,S=g.positionScreen.y,T=h.positionScreen.x,R=h.positionScreen.y,ka=O.positionScreen.x,ga=O.positionScreen.y,P instanceof THREE.MeshBasicMaterial)x(Q,L,G,j,W,y,E,S),P.wireframe?Fb(P.color,P.wireframeLinewidth,P.wireframeLinecap,P.wireframeLinejoin):Ab(P.color);else if(P instanceof THREE.MeshLambertMaterial)ab?!P.wireframe&&P.shading== +THREE.SmoothShading&&4==l.vertexNormalsWorld.length?(ba.r=ca.r=da.r=ha.r=aa.r,ba.g=ca.g=da.g=ha.g=aa.g,ba.b=ca.b=da.b=ha.b=aa.b,n(i,l.v1.positionWorld,l.vertexNormalsWorld[0],ba),n(i,l.v2.positionWorld,l.vertexNormalsWorld[1],ca),n(i,l.v4.positionWorld,l.vertexNormalsWorld[3],da),n(i,l.v3.positionWorld,l.vertexNormalsWorld[2],ha),ba.r=Math.max(0,Math.min(P.color.r*ba.r,1)),ba.g=Math.max(0,Math.min(P.color.g*ba.g,1)),ba.b=Math.max(0,Math.min(P.color.b*ba.b,1)),ca.r=Math.max(0,Math.min(P.color.r*ca.r, +1)),ca.g=Math.max(0,Math.min(P.color.g*ca.g,1)),ca.b=Math.max(0,Math.min(P.color.b*ca.b,1)),da.r=Math.max(0,Math.min(P.color.r*da.r,1)),da.g=Math.max(0,Math.min(P.color.g*da.g,1)),da.b=Math.max(0,Math.min(P.color.b*da.b,1)),ha.r=Math.max(0,Math.min(P.color.r*ha.r,1)),ha.g=Math.max(0,Math.min(P.color.g*ha.g,1)),ha.b=Math.max(0,Math.min(P.color.b*ha.b,1)),Ja=vc(ba,ca,da,ha),v(Q,L,G,j,E,S),Yb(Q,L,G,j,E,S,0,0,1,0,0,1,Ja),v(T,R,W,y,ka,ga),Yb(T,R,W,y,ka,ga,1,0,1,1,0,1,Ja)):(V.r=aa.r,V.g=aa.g,V.b=aa.b,n(i, +l.centroidWorld,l.normalWorld,V),V.r=Math.max(0,Math.min(P.color.r*V.r,1)),V.g=Math.max(0,Math.min(P.color.g*V.g,1)),V.b=Math.max(0,Math.min(P.color.b*V.b,1)),x(Q,L,G,j,W,y,E,S),P.wireframe?Fb(V,P.wireframeLinewidth,P.wireframeLinecap,P.wireframeLinejoin):Ab(V)):(x(Q,L,G,j,W,y,E,S),P.wireframe?Fb(P.color,P.wireframeLinewidth,P.wireframeLinecap,P.wireframeLinejoin):Ab(P.color));else if(P instanceof THREE.MeshNormalMaterial)V.r=Zb(l.normalWorld.x),V.g=Zb(l.normalWorld.y),V.b=Zb(l.normalWorld.z),x(Q, +L,G,j,W,y,E,S),P.wireframe?Fb(V,P.wireframeLinewidth,P.wireframeLinecap,P.wireframeLinejoin):Ab(V);else if(P instanceof THREE.MeshDepthMaterial)za=k.near,Aa=k.far,ba.r=ba.g=ba.b=1-Tb(a.positionScreen.z,za,Aa),ca.r=ca.g=ca.b=1-Tb(d.positionScreen.z,za,Aa),da.r=da.g=da.b=1-Tb(g.positionScreen.z,za,Aa),ha.r=ha.g=ha.b=1-Tb(e.positionScreen.z,za,Aa),Ja=vc(ba,ca,da,ha),v(Q,L,G,j,E,S),Yb(Q,L,G,j,E,S,0,0,1,0,0,1,Ja),v(T,R,W,y,ka,ga),Yb(T,R,W,y,ka,ga,1,0,1,1,0,1,Ja)}function v(a,b,c,d,e,f){m.beginPath();m.moveTo(a, +b);m.lineTo(c,d);m.lineTo(e,f);m.lineTo(a,b);m.closePath()}function x(a,b,c,d,e,f,g,aa){m.beginPath();m.moveTo(a,b);m.lineTo(c,d);m.lineTo(e,f);m.lineTo(g,aa);m.lineTo(a,b);m.closePath()}function Fb(a,b,c,e){if(B!=b)m.lineWidth=B=b;if(D!=c)m.lineCap=D=c;if(C!=e)m.lineJoin=C=e;d(a.getContextStyle());m.stroke();ja.inflate(2*b)}function Ab(a){e(a.getContextStyle());m.fill()}function Lc(a,b,c,d,f,g,aa,j,h,P,i,l,O){if(0!=O.image.width){if(!0==O.needsUpdate||void 0==Qa[O.id]){var k=O.wrapS==THREE.RepeatWrapping, +n=O.wrapT==THREE.RepeatWrapping;Qa[O.id]=m.createPattern(O.image,k&&n?"repeat":k&&!n?"repeat-x":!k&&n?"repeat-y":"no-repeat");O.needsUpdate=!1}e(Qa[O.id]);var k=O.offset.x/O.repeat.x,n=O.offset.y/O.repeat.y,q=O.image.width*O.repeat.x,Ea=O.image.height*O.repeat.y,aa=(aa+k)*q,j=(j+n)*Ea,c=c-a,d=d-b,f=f-a,g=g-b,h=(h+k)*q-aa,P=(P+n)*Ea-j,i=(i+k)*q-aa,l=(l+n)*Ea-j,k=h*l-i*P;if(0==k){if(void 0===la[O.id])b=document.createElement("canvas"),b.width=O.image.width,b.height=O.image.height,b=b.getContext("2d"), +b.drawImage(O.image,0,0),la[O.id]=b.getImageData(0,0,O.image.width,O.image.height).data;b=la[O.id];aa=4*(Math.floor(aa)+Math.floor(j)*O.image.width);V.setRGB(b[aa]/255,b[aa+1]/255,b[aa+2]/255);Ab(V)}else k=1/k,O=(l*c-P*f)*k,P=(l*d-P*g)*k,c=(h*f-i*c)*k,d=(h*g-i*d)*k,a=a-O*aa-c*j,aa=b-P*aa-d*j,m.save(),m.transform(O,P,c,d,a,aa),m.fill(),m.restore()}}function Yb(a,b,c,d,e,f,g,aa,j,h,P,i,O){var l,k;l=O.width-1;k=O.height-1;g*=l;aa*=k;c-=a;d-=b;e-=a;f-=b;j=j*l-g;h=h*k-aa;P=P*l-g;i=i*k-aa;k=1/(j*i-P*h); +l=(i*c-h*e)*k;h=(i*d-h*f)*k;c=(j*e-P*c)*k;d=(j*f-P*d)*k;a=a-l*g-c*aa;b=b-h*g-d*aa;m.save();m.transform(l,h,c,d,a,b);m.clip();m.drawImage(O,0,0);m.restore()}function vc(a,b,c,d){var e=~~(255*a.r),f=~~(255*a.g),a=~~(255*a.b),g=~~(255*b.r),aa=~~(255*b.g),b=~~(255*b.b),j=~~(255*c.r),h=~~(255*c.g),c=~~(255*c.b),P=~~(255*d.r),i=~~(255*d.g),d=~~(255*d.b);eb[0]=0>e?0:255f?0:255a?0:255g?0:255aa?0:255b?0:255j?0:255h?0:255c?0:255P?0:255i?0:255d?0:255a?0:1=l||(l*=g.intensity,d.r+=h.r*l,d.g+=h.g*l,d.b+=h.b*l)):g instanceof THREE.PointLight&&(i=g.matrixWorld.getPosition(),l=c.dot(A.sub(i,b).normalize()),0>=l||(l*=0==g.distance?1:1-Math.min(b.distanceTo(i)/g.distance,1),0!=l&&(l*=g.intensity,d.r+=h.r*l,d.g+=h.g*l,d.b+=h.b*l)))}function b(a){null==H[a]&&(H[a]=document.createElementNS("http://www.w3.org/2000/svg", +"path"),0==Q&&H[a].setAttribute("shape-rendering","crispEdges"));return H[a]}function c(a){a=0.5*(a+1);return 0>a?0:1n;n++){m=l;r=n;if(H.autoScaleCubemaps){if(s=h.image[n],E=la,!(s.width<=E&&s.height<=E))v=Math.max(s.width,s.height),t=Math.floor(s.width* -E/v),E=Math.floor(s.height*E/v),v=document.createElement("canvas"),v.width=t,v.height=E,v.getContext("2d").drawImage(s,0,0,s.width,s.height,0,0,t,E),s=v}else s=h.image[n];m[r]=s}n=l[0];m=0===(n.width&n.width-1)&&0===(n.height&n.height-1);r=B(h.format);s=B(h.type);u(j.TEXTURE_CUBE_MAP,h,m);for(n=0;6>n;n++)j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+n,0,r,r,s,l[n]);h.generateMipmaps&&m&&j.generateMipmap(j.TEXTURE_CUBE_MAP);h.needsUpdate=!1;if(h.onUpdated)h.onUpdated()}else j.activeTexture(j.TEXTURE0+ -l),j.bindTexture(j.TEXTURE_CUBE_MAP,h.image.__webglTextureCube)}else n instanceof THREE.WebGLRenderTargetCube?(h=n,j.activeTexture(j.TEXTURE0+l),j.bindTexture(j.TEXTURE_CUBE_MAP,h.__webglTexture)):H.setTexture(n,l)}else if("tv"===m){if(!h._array){h._array=[];for(m=0,r=h.texture.length;mn;n++){m=k;r=n;if(G.autoScaleCubemaps){if(s=h.image[n],E=ab,!(s.width<=E&&s.height<=E))v=Math.max(s.width,s.height),t=Math.floor(s.width* +E/v),E=Math.floor(s.height*E/v),v=document.createElement("canvas"),v.width=t,v.height=E,v.getContext("2d").drawImage(s,0,0,s.width,s.height,0,0,t,E),s=v}else s=h.image[n];m[r]=s}n=k[0];m=0===(n.width&n.width-1)&&0===(n.height&n.height-1);r=B(h.format);s=B(h.type);u(j.TEXTURE_CUBE_MAP,h,m);for(n=0;6>n;n++)j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+n,0,r,r,s,k[n]);h.generateMipmaps&&m&&j.generateMipmap(j.TEXTURE_CUBE_MAP);h.needsUpdate=!1;if(h.onUpdated)h.onUpdated()}else j.activeTexture(j.TEXTURE0+ +k),j.bindTexture(j.TEXTURE_CUBE_MAP,h.image.__webglTextureCube)}else n instanceof THREE.WebGLRenderTargetCube?(h=n,j.activeTexture(j.TEXTURE0+k),j.bindTexture(j.TEXTURE_CUBE_MAP,h.__webglTexture)):G.setTexture(n,k)}else if("tv"===m){if(!h._array){h._array=[];for(m=0,r=h.texture.length;mk&&(l=n,k=h[l]);j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[l]);j.vertexAttribPointer(c["morphTarget"+g],3,j.FLOAT,!1,0,0);f.__webglMorphTargetInfluences[g]=k;i[l]= -1;k=-1;g++}}null!==d.program.uniforms.morphTargetInfluences&&j.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList)for(g=0,h=e.__webglCustomAttributesList.length;gma;ma++)Nb=ac[ma],gb[Pa]=Nb.x,gb[Pa+1]=Nb.y,gb[Pa+2]=Nb.z,Pa+=3;else for(ma=0;3>ma;ma++)gb[Pa]=Gb.x,gb[Pa+1]=Gb.y,gb[Pa+2]=Gb.z,Pa+=3;for(G=0,U=oa.length;Gma;ma++)Nb=ac[ma],gb[Pa]=Nb.x,gb[Pa+1]=Nb.y,gb[Pa+2]=Nb.z,Pa+=3;else for(ma=0;4>ma;ma++)gb[Pa]=Gb.x,gb[Pa+1]=Gb.y,gb[Pa+2]=Gb.z,Pa+=3;j.bindBuffer(j.ARRAY_BUFFER,ea.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,gb,ab)}if(bd&&Sc&&Yc){for(G=0,U=na.length;Gma;ma++)dc=bc[ma],oc[Bb]=dc.u,oc[Bb+1]=dc.v,Bb+=2;for(G=0,U=oa.length;Gma;ma++)dc=bc[ma],oc[Bb]=dc.u,oc[Bb+1]=dc.v,Bb+=2;0ma;ma++)ec=cc[ma],pc[Cb]=ec.u,pc[Cb+1]=ec.v,Cb+=2;for(G=0,U=oa.length;Gma;ma++)ec=cc[ma],pc[Cb]=ec.u,pc[Cb+1]=ec.v,Cb+=2;0 +l&&(k=n,l=h[k]);j.bindBuffer(j.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[k]);j.vertexAttribPointer(c["morphTarget"+g],3,j.FLOAT,!1,0,0);f.__webglMorphTargetInfluences[g]=l;i[k]=1;l=-1;g++}}null!==d.program.uniforms.morphTargetInfluences&&j.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList)for(g=0,h=e.__webglCustomAttributesList.length;gma;ma++)Ob=ac[ma],hb[Pa]=Ob.x,hb[Pa+1]=Ob.y,hb[Pa+2]=Ob.z,Pa+=3;else for(ma=0;3>ma;ma++)hb[Pa]=Hb.x,hb[Pa+1]=Hb.y,hb[Pa+2]=Hb.z,Pa+=3;for(F=0,U=oa.length;Fma;ma++)Ob=ac[ma],hb[Pa]=Ob.x,hb[Pa+1]=Ob.y,hb[Pa+ +2]=Ob.z,Pa+=3;else for(ma=0;4>ma;ma++)hb[Pa]=Hb.x,hb[Pa+1]=Hb.y,hb[Pa+2]=Hb.z,Pa+=3;j.bindBuffer(j.ARRAY_BUFFER,ea.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,hb,bb)}if(ad&&Rc&&Xc){for(F=0,U=na.length;Fma;ma++)dc=bc[ma],oc[Cb]=dc.u,oc[Cb+1]=dc.v,Cb+=2;for(F=0,U=oa.length;Fma;ma++)dc=bc[ma],oc[Cb]=dc.u,oc[Cb+1]=dc.v,Cb+=2;0ma;ma++)ec=cc[ma],pc[Db]=ec.u,pc[Db+1]=ec.v,Db+=2;for(F=0,U=oa.length;Fma;ma++)ec=cc[ma],pc[Db]=ec.u,pc[Db+1]=ec.v,Db+=2;0c;c++){a.__webglFramebuffer[c]=j.createFramebuffer();a.__webglRenderbuffer[c]=j.createRenderbuffer();j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,d,a.width,a.height,0,d,e,null);var f=a,g=j.TEXTURE_CUBE_MAP_POSITIVE_X+c;j.bindFramebuffer(j.FRAMEBUFFER,a.__webglFramebuffer[c]);j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,g,f.__webglTexture,0);v(a.__webglRenderbuffer[c],a)}}else a.__webglFramebuffer=j.createFramebuffer(),a.__webglRenderbuffer= -j.createRenderbuffer(),j.bindTexture(j.TEXTURE_2D,a.__webglTexture),u(j.TEXTURE_2D,a,c),j.texImage2D(j.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=j.TEXTURE_2D,j.bindFramebuffer(j.FRAMEBUFFER,a.__webglFramebuffer),j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,d,a.__webglTexture,0),v(a.__webglRenderbuffer,a);b?j.bindTexture(j.TEXTURE_CUBE_MAP,null):j.bindTexture(j.TEXTURE_2D,null);j.bindRenderbuffer(j.RENDERBUFFER,null);j.bindFramebuffer(j.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]: -a.__webglFramebuffer,d=a.width,a=a.height,c=e=0):(b=null,d=Ia,a=za,e=Ba,c=Ga);b!==E&&(j.bindFramebuffer(j.FRAMEBUFFER,b),j.viewport(e,c,d,a),E=b);Ua=d;jb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)}; +"ccw"===b?j.frontFace(j.CCW):j.frontFace(j.CW),"back"===a?j.cullFace(j.BACK):"front"===a?j.cullFace(j.FRONT):j.cullFace(j.FRONT_AND_BACK),j.enable(j.CULL_FACE)):j.disable(j.CULL_FACE)};this.setObjectFaces=function(a){if(ga!==a.doubleSided)a.doubleSided?j.disable(j.CULL_FACE):j.enable(j.CULL_FACE),ga=a.doubleSided;if(V!==a.flipSided)a.flipSided?j.frontFace(j.CW):j.frontFace(j.CCW),V=a.flipSided};this.setDepthTest=function(a){ca!==a&&(a?j.enable(j.DEPTH_TEST):j.disable(j.DEPTH_TEST),ca=a)};this.setDepthWrite= +function(a){da!==a&&(j.depthMask(a),da=a)};this.setBlending=function(a){if(a!==ba){switch(a){case THREE.AdditiveBlending:j.blendEquation(j.FUNC_ADD);j.blendFunc(j.SRC_ALPHA,j.ONE);break;case THREE.SubtractiveBlending:j.blendEquation(j.FUNC_ADD);j.blendFunc(j.ZERO,j.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:j.blendEquation(j.FUNC_ADD);j.blendFunc(j.ZERO,j.SRC_COLOR);break;default:j.blendEquationSeparate(j.FUNC_ADD,j.FUNC_ADD),j.blendFuncSeparate(j.SRC_ALPHA,j.ONE_MINUS_SRC_ALPHA,j.ONE, +j.ONE_MINUS_SRC_ALPHA)}ba=a}};this.setTexture=function(a,b){if(a.needsUpdate){if(!a.__webglInit)a.__webglInit=!0,a.__webglTexture=j.createTexture(),G.info.memory.textures++;j.activeTexture(j.TEXTURE0+b);j.bindTexture(j.TEXTURE_2D,a.__webglTexture);var c=a.image,d=0===(c.width&c.width-1)&&0===(c.height&c.height-1),e=B(a.format),f=B(a.type);u(j.TEXTURE_2D,a,d);a instanceof THREE.DataTexture?j.texImage2D(j.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data):j.texImage2D(j.TEXTURE_2D,0,e,e,f,a.image);a.generateMipmaps&& +d&&j.generateMipmap(j.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdated)a.onUpdated()}else j.activeTexture(j.TEXTURE0+b),j.bindTexture(j.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){if(void 0===a.depthBuffer)a.depthBuffer=!0;if(void 0===a.stencilBuffer)a.stencilBuffer=!0;a.__webglTexture=j.createTexture();var c=0===(a.width&a.width-1)&&0===(a.height&a.height-1),d=B(a.format),e=B(a.type);if(b){a.__webglFramebuffer= +[];a.__webglRenderbuffer=[];j.bindTexture(j.TEXTURE_CUBE_MAP,a.__webglTexture);u(j.TEXTURE_CUBE_MAP,a,c);for(c=0;6>c;c++){a.__webglFramebuffer[c]=j.createFramebuffer();a.__webglRenderbuffer[c]=j.createRenderbuffer();j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,d,a.width,a.height,0,d,e,null);var f=a,g=j.TEXTURE_CUBE_MAP_POSITIVE_X+c;j.bindFramebuffer(j.FRAMEBUFFER,a.__webglFramebuffer[c]);j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,g,f.__webglTexture,0);v(a.__webglRenderbuffer[c],a)}}else a.__webglFramebuffer= +j.createFramebuffer(),a.__webglRenderbuffer=j.createRenderbuffer(),j.bindTexture(j.TEXTURE_2D,a.__webglTexture),u(j.TEXTURE_2D,a,c),j.texImage2D(j.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=j.TEXTURE_2D,j.bindFramebuffer(j.FRAMEBUFFER,a.__webglFramebuffer),j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,d,a.__webglTexture,0),v(a.__webglRenderbuffer,a);b?j.bindTexture(j.TEXTURE_CUBE_MAP,null):j.bindTexture(j.TEXTURE_2D,null);j.bindRenderbuffer(j.RENDERBUFFER,null);j.bindFramebuffer(j.FRAMEBUFFER, +null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,d=a.width,a=a.height,c=e=0):(b=null,d=Da,a=$a,e=Aa,c=Ja);b!==E&&(j.bindFramebuffer(j.FRAMEBUFFER,b),j.viewport(e,c,d,a),E=b);Ta=d;ib=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.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.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;return a};THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0}; @@ -356,20 +357,20 @@ THREE.RenderableFace4=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=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;THREE.ColorUtils.rgbToHsv(a,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)},rgbToHsv:function(a,b){var c=a.r,d=a.g,e=a.b,f=Math.max(Math.max(c,d),e),g=Math.min(Math.min(c,d),e);if(g===f)g=c=0;else{var h=f-g,g=h/f,c=(c===f?(d-e)/h:d===f?2+(e-c)/h:4+(c-d)/h)/6;0>c&&(c+=1);1a?b(c,e-1):i[e]a?b(c,e-1):l[e]n-1?e-1:n-1,o=(n+1)%e,p=0>l-1?d-1:l-1,m=(l+1)%d,r=[],s=[0,0,h[4*(n*d+l)]/255*b];r.push([-1,0,h[4*(n*d+p)]/255*b]);r.push([-1,-1,h[4*(q*d+p)]/255*b]);r.push([0,-1,h[4*(q*d+l)]/255*b]);r.push([1, --1,h[4*(q*d+m)]/255*b]);r.push([1,0,h[4*(n*d+m)]/255*b]);r.push([1,1,h[4*(o*d+m)]/255*b]);r.push([0,1,h[4*(o*d+l)]/255*b]);r.push([-1,1,h[4*(o*d+p)]/255*b]);q=[];p=r.length;for(o=0;on-1?e-1:n-1,o=(n+1)%e,p=0>k-1?d-1:k-1,m=(k+1)%d,r=[],s=[0,0,h[4*(n*d+k)]/255*b];r.push([-1,0,h[4*(n*d+p)]/255*b]);r.push([-1,-1,h[4*(q*d+p)]/255*b]);r.push([0,-1,h[4*(q*d+k)]/255*b]);r.push([1, +-1,h[4*(q*d+m)]/255*b]);r.push([1,0,h[4*(n*d+m)]/255*b]);r.push([1,1,h[4*(o*d+m)]/255*b]);r.push([0,1,h[4*(o*d+k)]/255*b]);r.push([-1,1,h[4*(o*d+p)]/255*b]);q=[];p=r.length;for(o=0;ok)g=d+1;else if(0i)g=d+1;else if(0b&&(b=0);1=b)return b=c[a]-b,a=this.curves[a],b=1-b/a.getLength(),a.getPointAt(b);a++}return null};THREE.CurvePath.prototype.getLength=function(){var a=this.getCurveLengths();return a[a.length-1]}; THREE.CurvePath.prototype.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;var a=[],b=0,c,d=this.curves.length;for(c=0;cb)b=f.x;else if(f.xc)c=f.y;else if(f.yb)b=f.x;else if(f.xc)c=f.y;else if(f.y -h&&(h+=c.length);h%=c.length;0>g&&(g+=i.length);g%=i.length;e=0<=h-1?h-1:c.length-1;f=0<=g-1?g-1:i.length-1;m=[i[g],c[h],c[e]];m=THREE.FontUtils.Triangulate.area(m);r=[i[g],i[f],c[h]];r=THREE.FontUtils.Triangulate.area(r);n+q>m+r&&(h=o,g=l,0>h&&(h+=c.length),h%=c.length,0>g&&(g+=i.length),g%=i.length,e=0<=h-1?h-1:c.length-1,f=0<=g-1?g-1:i.length-1);n=c.slice(0,h);q=c.slice(h);o=i.slice(g);l=i.slice(0,g);f=[i[g],i[f],c[h]];p.push([i[g],c[h],c[e]]);p.push(f);c=n.concat(o).concat(l).concat(q)}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,k,i={};for(f=0,g=d.length;fd;d++)k=h[d].x+":"+h[d].y,k=i[k],void 0!==k&&(h[d]=k)}for(f=0,g=e.length;fd;d++)k=h[d].x+":"+h[d].y,k=i[k],void 0!==k&&(h[d]=k)}return c.concat(e)}, +THREE.Shape.Utils={removeHoles:function(a,b){var c=a.concat(),d=c.concat(),e,f,g,h,i,l,k,n,q,o,p=[];for(i=0;i +h&&(h+=c.length);h%=c.length;0>g&&(g+=l.length);g%=l.length;e=0<=h-1?h-1:c.length-1;f=0<=g-1?g-1:l.length-1;m=[l[g],c[h],c[e]];m=THREE.FontUtils.Triangulate.area(m);r=[l[g],l[f],c[h]];r=THREE.FontUtils.Triangulate.area(r);n+q>m+r&&(h=o,g=k,0>h&&(h+=c.length),h%=c.length,0>g&&(g+=l.length),g%=l.length,e=0<=h-1?h-1:c.length-1,f=0<=g-1?g-1:l.length-1);n=c.slice(0,h);q=c.slice(h);o=l.slice(g);k=l.slice(0,g);f=[l[g],l[f],c[h]];p.push([l[g],c[h],c[e]]);p.push(f);c=n.concat(o).concat(k).concat(q)}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,l={};for(f=0,g=d.length;fd;d++)i=h[d].x+":"+h[d].y,i=l[i],void 0!==i&&(h[d]=i)}for(f=0,g=e.length;fd;d++)i=h[d].x+":"+h[d].y,i=l[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.TextPath=function(a,b){THREE.Path.call(this);this.parameters=b||{};this.set(a)};THREE.TextPath.prototype.set=function(a,b){b=b||this.parameters;this.text=a;var c=void 0!==b.curveSegments?b.curveSegments:4,d=void 0!==b.font?b.font:"helvetiker",e=void 0!==b.weight?b.weight:"normal",f=void 0!==b.style?b.style:"normal";THREE.FontUtils.size=void 0!==b.size?b.size:100;THREE.FontUtils.divisions=c;THREE.FontUtils.face=d;THREE.FontUtils.weight=e;THREE.FontUtils.style=f}; THREE.TextPath.prototype.toShapes=function(){for(var a=THREE.FontUtils.drawText(this.text).paths,b=[],c=0,d=a.length;ca.hierarchy[c].keys[d].time)a.hierarchy[c].keys[d].time= -0;if(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;dm;m++){c=b[m];g=k.prevKey[c];h=k.nextKey[c];if(h.time<=q){if(nd||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)if(this.points[0]= +THREE.Animation.prototype.update=function(a){if(this.isPlaying){var b=["pos","rot","scl"],c,d,e,f,g,h,i,l,k=this.data.JIT.hierarchy,n,q;q=this.currentTime+=a*this.timeScale;n=this.currentTime%=this.data.length;l=parseInt(Math.min(n*this.data.fps,this.data.length*this.data.fps),10);for(var o=0,p=this.hierarchy.length;om;m++){c=b[m];g=i.prevKey[c];h=i.nextKey[c];if(h.time<=q){if(nd||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)if(this.points[0]= this.getPrevKeyWith("pos",o,g.index-1).pos,this.points[1]=e,this.points[2]=f,this.points[3]=this.getNextKeyWith("pos",o,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 if("rot"=== -c)THREE.Quaternion.slerp(e,f,a.quaternion,d);else if("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}}if(this.JITCompile&&void 0===l[0][i]){this.hierarchy[0].updateMatrixWorld(!0);for(o=0;oa.length-2?f:f+1;c[3]=f>a.length-3?f:f+2;f=a[c[0]];h=a[c[1]];k=a[c[2]];i=a[c[3]];c=e*e;g=e*c;d[0]=this.interpolate(f[0],h[0],k[0],i[0],e,c,g);d[1]=this.interpolate(f[1],h[1],k[1],i[1],e,c,g);d[2]=this.interpolate(f[2],h[2],k[2],i[2],e,c,g);return d}; +c)THREE.Quaternion.slerp(e,f,a.quaternion,d);else if("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}}if(this.JITCompile&&void 0===k[0][l]){this.hierarchy[0].updateMatrixWorld(!0);for(o=0;oa.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]];l=a[c[3]];c=e*e;g=e*c;d[0]=this.interpolate(f[0],h[0],i[0],l[0],e,c,g);d[1]=this.interpolate(f[1],h[1],i[1],l[1],e,c,g);d[2]=this.interpolate(f[2],h[2],i[2],l[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?ck)?1:k));this.object.translateX(b*i);this.object.translateY(b*l);g&&(this.roll+=this.rollSpeed*a*h);if(this.forward.y>this.constrainVertical[1])this.forward.y=this.constrainVertical[1],this.forward.normalize();else if(this.forward.yi)?1:i));this.object.translateX(b*l);this.object.translateY(b*k);g&&(this.roll+=this.rollSpeed*a*h);if(this.forward.y>this.constrainVertical[1])this.forward.y=this.constrainVertical[1],this.forward.normalize();else if(this.forward.yc.maxDistance*c.maxDistance&&c.object.position.setLength(c.maxDistance),f.lengthSq()c.maxDistance*c.maxDistance&&c.object.position.setLength(c.maxDistance),f.lengthSq()o;o++)this.materials.push(g)}o=0;r=1;p=2;s= -3;m=4;t=5}else this.materials=[];this.sides={px:!0,nx:!0,py:!0,ny:!0,pz:!0,nz:!0};if(void 0!=h)for(var u in h)void 0!==this.sides[u]&&(this.sides[u]=h[u]);this.sides.px&&k("z","y",-1,-1,c,b,l,o);this.sides.nx&&k("z","y",1,-1,c,b,-l,r);this.sides.py&&k("x","z",1,1,a,c,n,p);this.sides.ny&&k("x","z",1,-1,a,c,-n,s);this.sides.pz&&k("x","y",1,-1,a,b,q,m);this.sides.nz&&k("x","y",-1,-1,a,b,-q,t);this.computeCentroids();this.mergeVertices()};THREE.CubeGeometry.prototype=new THREE.Geometry; +THREE.CubeGeometry=function(a,b,c,d,e,f,g,h){function i(a,b,c,g,h,i,k,n){var m,o=d||1,q=e||1,p=h/2,r=i/2,s=l.vertices.length;if("x"===a&&"y"===b||"y"===a&&"x"===b)m="z";else if("x"===a&&"z"===b||"z"===a&&"x"===b)m="y",q=f||1;else if("z"===a&&"y"===b||"y"===a&&"z"===b)m="x",o=f||1;var j=o+1,t=q+1,y=h/o,E=i/q,S=new THREE.Vector3;S[m]=0o;o++)this.materials.push(g)}o=0;r=1;p=2;s= +3;m=4;t=5}else this.materials=[];this.sides={px:!0,nx:!0,py:!0,ny:!0,pz:!0,nz:!0};if(void 0!=h)for(var u in h)void 0!==this.sides[u]&&(this.sides[u]=h[u]);this.sides.px&&i("z","y",-1,-1,c,b,k,o);this.sides.nx&&i("z","y",1,-1,c,b,-k,r);this.sides.py&&i("x","z",1,1,a,c,n,p);this.sides.ny&&i("x","z",1,-1,a,c,-n,s);this.sides.pz&&i("x","y",1,-1,a,b,q,m);this.sides.nz&&i("x","y",-1,-1,a,b,-q,t);this.computeCentroids();this.mergeVertices()};THREE.CubeGeometry.prototype=new THREE.Geometry; THREE.CubeGeometry.prototype.constructor=THREE.CubeGeometry; -THREE.CylinderGeometry=function(a,b,c,d,e,f){THREE.Geometry.call(this);var a=void 0!==a?a:20,b=void 0!==b?b:20,c=void 0!==c?c:100,g=c/2,d=d||8,e=e||1,h,k,i=[],l=[];for(k=0;k<=e;k++){var n=[],q=[],o=k/e,p=o*(b-a)+a;for(h=0;h<=d;h++){var m=h/d,r=p*Math.sin(2*m*Math.PI),s=-o*c+g,t=p*Math.cos(2*m*Math.PI);this.vertices.push(new THREE.Vertex(new THREE.Vector3(r,s,t)));n.push(this.vertices.length-1);q.push(new THREE.UV(m,o))}i.push(n);l.push(q)}for(k=0;kg?(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(a){for(j=a.length;0<=--j;){y=j;E=j-1;0>E&&(E=a.length-1);for(var b= -0,c=o+2*l,b=0;bh?(h=new THREE.Face3(a.index,b.index,c.index,[a.position,b.position,c.position]),h.centroid.addSelf(a.position).addSelf(b.position).addSelf(c.position).divideScalar(3),h.normal=h.centroid.clone().normalize(), g.faces.push(h),h=Math.atan2(h.centroid.z,-h.centroid.x),g.faceVertexUvs[0].push([f(a.uv,a.position,h),f(b.uv,b.position,h),f(c.uv,c.position,h)])):(h-=1,d(a,e(a,b),e(a,c),h),d(e(a,b),b,e(b,c),h),d(e(a,c),e(b,c),c,h),d(e(a,b),e(b,c),e(a,c),h))}function e(a,b){h[a.index]||(h[a.index]=[]);h[b.index]||(h[b.index]=[]);var d=h[a.index][b.index];void 0===d&&(h[a.index][b.index]=h[b.index][a.index]=d=c((new THREE.Vector3).add(a.position,b.position).divideScalar(2)));return d}function f(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);var b=b||0,g=this;c(new THREE.Vector3(1,0,0));c(new THREE.Vector3(-1,0,0));c(new THREE.Vector3(0,1,0));c(new THREE.Vector3(0,-1,0));c(new THREE.Vector3(0,0,1));c(new THREE.Vector3(0,0,-1));var h=[],k=this.vertices;d(k[0],k[2],k[4],b);d(k[0],k[4],k[3],b);d(k[0],k[3],k[5],b);d(k[0],k[5],k[2],b);d(k[1],k[2],k[5],b);d(k[1],k[5],k[3],b);d(k[1],k[3],k[4],b);d(k[1],k[4],k[2],b);this.boundingSphere= +(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);var b=b||0,g=this;c(new THREE.Vector3(1,0,0));c(new THREE.Vector3(-1,0,0));c(new THREE.Vector3(0,1,0));c(new THREE.Vector3(0,-1,0));c(new THREE.Vector3(0,0,1));c(new THREE.Vector3(0,0,-1));var h=[],i=this.vertices;d(i[0],i[2],i[4],b);d(i[0],i[4],i[3],b);d(i[0],i[3],i[5],b);d(i[0],i[5],i[2],b);d(i[1],i[2],i[5],b);d(i[1],i[5],i[3],b);d(i[1],i[3],i[4],b);d(i[1],i[4],i[2],b);this.boundingSphere= {radius:a}};THREE.OctahedronGeometry.prototype=new THREE.Geometry;THREE.OctahedronGeometry.prototype.constructor=THREE.OctahedronGeometry; -THREE.PlaneGeometry=function(a,b,c,d){THREE.Geometry.call(this);for(var e=a/2,f=b/2,c=c||1,d=d||1,g=c+1,h=d+1,k=a/c,i=b/d,l=new THREE.Vector3(0,0,1),a=0;ae)return null;var f=[],g=[],h=[],k,i,l;if(0=n--){console.log("Warning, unable to triangulate polygon!");break}k=i;e<=k&&(k=0);i=k+1;e<=i&&(i=0);l=i+1;e<=l&&(l=0);var q;a:{q=a;var o=k,p=i,m=l,r=e,s=g,t=void 0,u=void 0,v=void 0,x=void 0,B=void 0, -D=void 0,C=void 0,A=void 0,F=void 0,u=q[s[o]].x,v=q[s[o]].y,x=q[s[p]].x,B=q[s[p]].y,D=q[s[m]].x,C=q[s[m]].y;if(1.0E-10>(x-u)*(C-v)-(B-v)*(D-u))q=!1;else{for(t=0;te)return null;var f=[],g=[],h=[],i,l,k;if(0=n--){console.log("Warning, unable to triangulate polygon!");break}i=l;e<=i&&(i=0);l=i+1;e<=l&&(l=0);k=l+1;e<=k&&(k=0);var q;a:{q=a;var o=i,p=l,m=k,r=e,s=g,t=void 0,u=void 0,v=void 0,x=void 0,B=void 0, +D=void 0,C=void 0,A=void 0,H=void 0,u=q[s[o]].x,v=q[s[o]].y,x=q[s[p]].x,B=q[s[p]].y,D=q[s[m]].x,C=q[s[m]].y;if(1.0E-10>(x-u)*(C-v)-(B-v)*(D-u))q=!1;else{for(t=0;to;o++){n=k[o];l=new THREE.Color;l.setRGB(0,0,0);for(var p=0;po;o++){n=i[o];k=new THREE.Color;k.setRGB(0,0,0);for(var p=0;pu.length&&(n[o]=!0)}for(o in p)if(u=p[o],s=u[0],u=u[1],x=o.split("_"),B=x[0],x=x[1],r=new THREE.Vector3,n[o]?(r.addSelf(h[B].position),r.addSelf(h[x].position),r.multiplyScalar(0.5)):(r.addSelf(i[s]),r.addSelf(i[u]),r.addSelf(h[B].position),r.addSelf(h[x].position),r.multiplyScalar(0.25)), -l[o]=t+d.length+v,k.push(new THREE.Vertex(r)),v++,g.supportUVs&&0!=q.length)u=new THREE.UV,u.u=q[B].u+q[x].u,u.v=q[B].v+q[x].v,u.u/=2,u.v/=2,q.push(u);var J,K;x=["123","12","2","23"];r=["123","23","3","31"];var A=["123","31","1","12"],F=["1234","12","2","23"],Z=["1234","23","3","34"],L=["1234","34","4","41"],O=["1234","41","1","12"];for(o=0,p=i.length;ou.length&&(n[o]=!0)}for(o in p)if(u=p[o],s=u[0],u=u[1],x=o.split("_"),B=x[0],x=x[1],r=new THREE.Vector3,n[o]?(r.addSelf(h[B].position),r.addSelf(h[x].position),r.multiplyScalar(0.5)):(r.addSelf(l[s]),r.addSelf(l[u]),r.addSelf(h[B].position),r.addSelf(h[x].position),r.multiplyScalar(0.25)), +k[o]=t+d.length+v,i.push(new THREE.Vertex(r)),v++,g.supportUVs&&0!=q.length)u=new THREE.UV,u.u=q[B].u+q[x].u,u.v=q[B].v+q[x].v,u.u/=2,u.v/=2,q.push(u);var I,N;x=["123","12","2","23"];r=["123","23","3","31"];var A=["123","31","1","12"],H=["1234","12","2","23"],$=["1234","23","3","34"],K=["1234","34","4","41"],Q=["1234","41","1","12"];for(o=0,p=l.length;oa.length?"":a.join("/")+"/"},initMaterials:function(a,b,c){a.materials=[];for(var d=0;da.opacity)i.transparent=a.transparent;if(void 0!==a.depthTest)i.depthTest=a.depthTest;if(void 0!==a.vertexColors)if("face"==a.vertexColors)i.vertexColors=THREE.FaceColors;else if(a.vertexColors)i.vertexColors= -THREE.VertexColors;if(a.colorDiffuse)i.color=g(a.colorDiffuse);else if(a.DbgColor)i.color=a.DbgColor;if(a.colorSpecular)i.specular=g(a.colorSpecular);if(a.colorAmbient)i.ambient=g(a.colorAmbient);if(a.transparency)i.opacity=a.transparency;if(a.specularCoef)i.shininess=a.specularCoef;a.mapDiffuse&&b&&f(i,"map",a.mapDiffuse,a.mapDiffuseRepeat,a.mapDiffuseOffset,a.mapDiffuseWrap);a.mapLight&&b&&f(i,"lightMap",a.mapLight,a.mapLightRepeat,a.mapLightOffset,a.mapLightWrap);a.mapNormal&&b&&f(i,"normalMap", -a.mapNormal,a.mapNormalRepeat,a.mapNormalOffset,a.mapNormalWrap);a.mapSpecular&&b&&f(i,"specularMap",a.mapSpecular,a.mapSpecularRepeat,a.mapSpecularOffset,a.mapSpecularWrap);if(a.mapNormal){var k=THREE.ShaderUtils.lib.normal,l=THREE.UniformsUtils.clone(k.uniforms);l.tNormal.texture=i.normalMap;if(a.mapNormalFactor)l.uNormalScale.value=a.mapNormalFactor;if(i.map)l.tDiffuse.texture=i.map,l.enableDiffuse.value=!0;if(i.specularMap)l.tSpecular.texture=i.specularMap,l.enableSpecular.value=!0;if(i.lightMap)l.tAO.texture= -i.lightMap,l.enableAO.value=!0;l.uDiffuseColor.value.setHex(i.color);l.uSpecularColor.value.setHex(i.specular);l.uAmbientColor.value.setHex(i.ambient);l.uShininess.value=i.shininess;if(void 0!==i.opacity)l.uOpacity.value=i.opacity;i=new THREE.ShaderMaterial({fragmentShader:k.fragmentShader,vertexShader:k.vertexShader,uniforms:l,lights:!0,fog:!0})}else i=new THREE[k](i);if(void 0!==a.DbgName)i.name=a.DbgName;return i}};THREE.BinaryLoader=function(a){THREE.Loader.call(this,a)}; +f[1]);if(1!=f[0])a[c].wrapS=THREE.RepeatWrapping;if(1!=f[1])a[c].wrapT=THREE.RepeatWrapping}g&&a[c].offset.set(g[0],g[1]);if(h){f={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping};if(void 0!==f[h[0]])a[c].wrapS=f[h[0]];if(void 0!==f[h[1]])a[c].wrapT=f[h[1]]}e(a[c],b+"/"+d)}function g(a){return(255*a[0]<<16)+(255*a[1]<<8)+255*a[2]}var h=this,i="MeshLambertMaterial",l={color:15658734,opacity:1,map:null,lightMap:null,normalMap:null,wireframe:a.wireframe};a.shading&&("Phong"==a.shading? +i="MeshPhongMaterial":"Basic"==a.shading&&(i="MeshBasicMaterial"));if(a.blending)if("Additive"==a.blending)l.blending=THREE.AdditiveBlending;else if("Subtractive"==a.blending)l.blending=THREE.SubtractiveBlending;else if("Multiply"==a.blending)l.blending=THREE.MultiplyBlending;if(void 0!==a.transparent||1>a.opacity)l.transparent=a.transparent;if(void 0!==a.depthTest)l.depthTest=a.depthTest;if(void 0!==a.vertexColors)if("face"==a.vertexColors)l.vertexColors=THREE.FaceColors;else if(a.vertexColors)l.vertexColors= +THREE.VertexColors;if(a.colorDiffuse)l.color=g(a.colorDiffuse);else if(a.DbgColor)l.color=a.DbgColor;if(a.colorSpecular)l.specular=g(a.colorSpecular);if(a.colorAmbient)l.ambient=g(a.colorAmbient);if(a.transparency)l.opacity=a.transparency;if(a.specularCoef)l.shininess=a.specularCoef;a.mapDiffuse&&b&&f(l,"map",a.mapDiffuse,a.mapDiffuseRepeat,a.mapDiffuseOffset,a.mapDiffuseWrap);a.mapLight&&b&&f(l,"lightMap",a.mapLight,a.mapLightRepeat,a.mapLightOffset,a.mapLightWrap);a.mapNormal&&b&&f(l,"normalMap", +a.mapNormal,a.mapNormalRepeat,a.mapNormalOffset,a.mapNormalWrap);a.mapSpecular&&b&&f(l,"specularMap",a.mapSpecular,a.mapSpecularRepeat,a.mapSpecularOffset,a.mapSpecularWrap);if(a.mapNormal){var i=THREE.ShaderUtils.lib.normal,k=THREE.UniformsUtils.clone(i.uniforms);k.tNormal.texture=l.normalMap;if(a.mapNormalFactor)k.uNormalScale.value=a.mapNormalFactor;if(l.map)k.tDiffuse.texture=l.map,k.enableDiffuse.value=!0;if(l.specularMap)k.tSpecular.texture=l.specularMap,k.enableSpecular.value=!0;if(l.lightMap)k.tAO.texture= +l.lightMap,k.enableAO.value=!0;k.uDiffuseColor.value.setHex(l.color);k.uSpecularColor.value.setHex(l.specular);k.uAmbientColor.value.setHex(l.ambient);k.uShininess.value=l.shininess;if(void 0!==l.opacity)k.uOpacity.value=l.opacity;l=new THREE.ShaderMaterial({fragmentShader:i.fragmentShader,vertexShader:i.vertexShader,uniforms:k,lights:!0,fog:!0})}else l=new THREE[i](l);if(void 0!==a.DbgName)l.name=a.DbgName;return l}};THREE.BinaryLoader=function(a){THREE.Loader.call(this,a)}; THREE.BinaryLoader.prototype=new THREE.Loader;THREE.BinaryLoader.prototype.constructor=THREE.BinaryLoader;THREE.BinaryLoader.prototype.supr=THREE.Loader.prototype; THREE.BinaryLoader.prototype.load=function(a,b,c,d){if(a instanceof Object)console.warn("DEPRECATED: BinaryLoader( parameters ) is now BinaryLoader( url, callback, texturePath, binaryPath )."),d=a,a=d.model,b=d.callback,c=d.texture_path,d=d.bin_path;var c=c?c:this.extractUrlbase(a),d=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)try{var h=JSON.parse(g.responseText);void 0===h.metadata||void 0===h.metadata.formatVersion||3!==h.metadata.formatVersion?console.error("Deprecated file format."):a.loadAjaxBuffers(h,c,e,d,f)}catch(k){console.error(k),console.warn("DEPRECATED: ["+b+"] seems to be using old model format")}else console.error("Couldn't load ["+b+"] ["+ +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)try{var h=JSON.parse(g.responseText);void 0===h.metadata||void 0===h.metadata.formatVersion||3!==h.metadata.formatVersion?console.error("Deprecated file format."):a.loadAjaxBuffers(h,c,e,d,f)}catch(i){console.error(i),console.warn("DEPRECATED: ["+b+"] seems to be using old model format")}else console.error("Couldn't load ["+b+"] ["+ g.status+"]")};g.open("GET",b,!0);g.overrideMimeType&&g.overrideMimeType("text/plain; charset=x-user-defined");g.setRequestHeader("Content-Type","text/plain");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(){4==f.readyState?200==f.status||0==f.status?THREE.BinaryLoader.prototype.createBinModel(f.response,b,d,a.materials):console.error("Couldn't load ["+g+"] ["+f.status+"]"):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(b){var c,e,k,i,l,n,q,o,p,m,r,s,t,u,v,x;function B(a){return a%4?4-a%4:0}function D(a,b){return(new Uint8Array(a,b,1))[0]}function C(a,b){return(new Uint32Array(a,b,1))[0]}function A(b,c){var d,e,f,g,h,i,k,l,m=new Uint32Array(a,c,3*b);for(d=0;da.length?"":a.join("/")+"/");if((a=T.evaluate("//dae:asset",T,V,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null).iterateNext())&&a.childNodes)for(e=0;ea.length?"":a.join("/")+"/");if((a=V.evaluate("//dae:asset",V,W,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null).iterateNext())&&a.childNodes)for(e=0;ep)break}if(!s){s=new j(p);t=-1;u=0;for(v=d.length;u=p&&(t=u);p=t;d.splice(-1==p?d.length:p,0,s)}s.addTarget(f,k,g,r)}}else console.log('Could not find transform "'+b.sid+'" in node '+ -this.id)}for(c=0;cp)break}if(!s){s=new j(p);t=-1;u=0;for(v=d.length;u=p&&(t=u);p=t;d.splice(-1==p?d.length:p,0,s)}s.addTarget(f,l,g,r)}}else console.log('Could not find transform "'+b.sid+'" in node '+ +this.id)}for(c=0;cthis.set)this.set=0;return this};D.prototype.parse=function(a){this.id=a.getAttribute("id");for(var b=0;bthis.set)this.set=0;return this};D.prototype.parse=function(a){this.id=a.getAttribute("id");for(var b=0;bthis.transparency,c;for(c in this)switch(c){case "ambient":case "emission":case "diffuse":case "specular":var d=this[c];if(d instanceof A)if(d.isTexture()){if(this.effect.sampler&&this.effect.surface&&this.effect.sampler.source==this.effect.surface.sid){var e=Qa[this.effect.surface.init_from];if(e)e=THREE.ImageUtils.loadTexture(cb+e.init_from),e.wrapS=d.texOpts.wrapU?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping, -e.wrapT=d.texOpts.wrapV?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,e.offset.x=d.texOpts.offsetU,e.offset.y=d.texOpts.offsetV,e.repeat.x=d.texOpts.repeatU,e.repeat.y=d.texOpts.repeatV,a.map=e}}else"diffuse"==c?a.color=d.color.getHex():b||(a[c]=d.color.getHex());break;case "shininess":case "reflectivity":a[c]=this[c];break;case "transparency":if(b)a.transparent=!0,a.opacity=this[c],b=!0}a.shading=Ya;return this.material=new THREE.MeshLambertMaterial(a)};J.prototype.parse=function(a){for(var b=0;b< -a.childNodes.length;b++){var c=a.childNodes[b];if(1==c.nodeType)switch(c.nodeName){case "init_from":this.init_from=c.textContent;break;case "format":this.format=c.textContent;break;default:console.log("unhandled Surface prop: "+c.nodeName)}}return this};K.prototype.parse=function(a){for(var b=0;bthis.transparency,c;for(c in this)switch(c){case "ambient":case "emission":case "diffuse":case "specular":var d=this[c];if(d instanceof A)if(d.isTexture()){if(this.effect.sampler&&this.effect.surface&&this.effect.sampler.source==this.effect.surface.sid){var e=Qa[this.effect.surface.init_from];if(e)e=THREE.ImageUtils.loadTexture(ib+e.init_from),e.wrapS=d.texOpts.wrapU?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping, +e.wrapT=d.texOpts.wrapV?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,e.offset.x=d.texOpts.offsetU,e.offset.y=d.texOpts.offsetV,e.repeat.x=d.texOpts.repeatU,e.repeat.y=d.texOpts.repeatV,a.map=e}}else"diffuse"==c?a.color=d.color.getHex():b||(a[c]=d.color.getHex());break;case "shininess":case "reflectivity":a[c]=this[c];break;case "transparency":if(b)a.transparent=!0,a.opacity=this[c],b=!0}a.shading=Xa;return this.material=new THREE.MeshLambertMaterial(a)};I.prototype.parse=function(a){for(var b=0;b< +a.childNodes.length;b++){var c=a.childNodes[b];if(1==c.nodeType)switch(c.nodeName){case "init_from":this.init_from=c.textContent;break;case "format":this.format=c.textContent;break;default:console.log("unhandled Surface prop: "+c.nodeName)}}return this};N.prototype.parse=function(a){for(var b=0;bf||1f?0:1;if(h.length)for(var e=[],i=0;ir.parameters.opacity)r.parameters.transparent=!0;if(r.parameters.normalMap){l=THREE.ShaderUtils.lib.normal;a=THREE.UniformsUtils.clone(l.uniforms);m=r.parameters.color;K=r.parameters.specular;c=r.parameters.ambient;O=r.parameters.shininess;a.tNormal.texture=y.textures[r.parameters.normalMap];if(r.parameters.normalMapFactor)a.uNormalScale.value= -r.parameters.normalMapFactor;if(r.parameters.map)a.tDiffuse.texture=r.parameters.map,a.enableDiffuse.value=!0;if(r.parameters.lightMap)a.tAO.texture=r.parameters.lightMap,a.enableAO.value=!0;if(r.parameters.specularMap)a.tSpecular.texture=y.textures[r.parameters.specularMap],a.enableSpecular.value=!0;a.uDiffuseColor.value.setHex(m);a.uSpecularColor.value.setHex(K);a.uAmbientColor.value.setHex(c);a.uShininess.value=O;if(r.parameters.opacity)a.uOpacity.value=r.parameters.opacity;r=new THREE.ShaderMaterial({fragmentShader:l.fragmentShader, -vertexShader:l.vertexShader,uniforms:a,lights:!0,fog:!0})}else r=new THREE[r.type](r.parameters);y.materials[n]=r}e();k.callbackSync(y);h()};THREE.UTF8Loader=function(){};THREE.UTF8Loader.prototype=new THREE.UTF8Loader;THREE.UTF8Loader.prototype.constructor=THREE.UTF8Loader; +b;e();L-=1;i.onLoadComplete();h()}}function g(a){return function(b){y.geometries[a]=b}}function h(){i.callbackProgress({totalModels:j,totalTextures:W,loadedModels:j-L,loadedTextures:W-G},y);i.onLoadProgress();0==L&&0==G&&b(y)}var i=this,l=THREE.Loader.prototype.extractUrlbase(c),k,n,q,o,p,m,r,s,t,u,v,x,B,D,C,A,H,I,N,$,K,Q,L,G,j,W,y;K=a;c=new THREE.BinaryLoader;Q=new THREE.JSONLoader;G=L=0;y={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},triggers:{}, +empties:{}};a=!1;for(q in K.objects)if(s=K.objects[q],s.meshCollider){a=!0;break}if(a)y.scene.collisions=new THREE.CollisionSystem;if(K.transform)a=K.transform.position,t=K.transform.rotation,C=K.transform.scale,a&&y.scene.position.set(a[0],a[1],a[2]),t&&y.scene.rotation.set(t[0],t[1],t[2]),C&&y.scene.scale.set(C[0],C[1],C[2]),(a||t||C)&&y.scene.updateMatrix();a=function(){G-=1;h();i.onLoadComplete()};for(p in K.cameras)C=K.cameras[p],"perspective"==C.type?I=new THREE.PerspectiveCamera(C.fov,C.aspect, +C.near,C.far):"ortho"==C.type&&(I=new THREE.OrthographicCamera(C.left,C.right,C.top,C.bottom,C.near,C.far)),v=C.position,t=C.target,C=C.up,I.position.set(v[0],v[1],v[2]),I.target=new THREE.Vector3(t[0],t[1],t[2]),C&&I.up.set(C[0],C[1],C[2]),y.cameras[p]=I;for(o in K.lights)t=K.lights[o],p=void 0!==t.color?t.color:16777215,I=void 0!==t.intensity?t.intensity:1,"directional"==t.type?(v=t.direction,u=new THREE.DirectionalLight(p,I),u.position.set(v[0],v[1],v[2]),u.position.normalize()):"point"==t.type? +(v=t.position,u=t.distance,u=new THREE.PointLight(p,I,u),u.position.set(v[0],v[1],v[2])):"ambient"==t.type&&(u=new THREE.AmbientLight(p)),y.scene.add(u),y.lights[o]=u;for(m in K.fogs)o=K.fogs[m],"linear"==o.type?N=new THREE.Fog(0,o.near,o.far):"exp2"==o.type&&(N=new THREE.FogExp2(0,o.density)),C=o.color,N.color.setRGB(C[0],C[1],C[2]),y.fogs[m]=N;if(y.cameras&&K.defaults.camera)y.currentCamera=y.cameras[K.defaults.camera];if(y.fogs&&K.defaults.fog)y.scene.fog=y.fogs[K.defaults.fog];C=K.defaults.bgcolor; +y.bgColor=new THREE.Color;y.bgColor.setRGB(C[0],C[1],C[2]);y.bgColorAlpha=K.defaults.bgalpha;for(k in K.geometries)if(m=K.geometries[k],"bin_mesh"==m.type||"ascii_mesh"==m.type)L+=1,i.onLoadStart();j=L;for(k in K.geometries)m=K.geometries[k],"cube"==m.type?(H=new THREE.CubeGeometry(m.width,m.height,m.depth,m.segmentsWidth,m.segmentsHeight,m.segmentsDepth,null,m.flipped,m.sides),y.geometries[k]=H):"plane"==m.type?(H=new THREE.PlaneGeometry(m.width,m.height,m.segmentsWidth,m.segmentsHeight),y.geometries[k]= +H):"sphere"==m.type?(H=new THREE.SphereGeometry(m.radius,m.segmentsWidth,m.segmentsHeight),y.geometries[k]=H):"cylinder"==m.type?(H=new THREE.CylinderGeometry(m.topRad,m.botRad,m.height,m.radSegs,m.heightSegs),y.geometries[k]=H):"torus"==m.type?(H=new THREE.TorusGeometry(m.radius,m.tube,m.segmentsR,m.segmentsT),y.geometries[k]=H):"icosahedron"==m.type?(H=new THREE.IcosahedronGeometry(m.subdivisions),y.geometries[k]=H):"bin_mesh"==m.type?c.load(d(m.url,K.urlBaseType),f(k)):"ascii_mesh"==m.type?Q.load(d(m.url, +K.urlBaseType),f(k)):"embedded_mesh"==m.type&&(m=K.embeds[m.id])&&Q.createModel(m,g(k),"");for(r in K.textures)if(k=K.textures[r],k.url instanceof Array){G+=k.url.length;for(m=0;mr.parameters.opacity)r.parameters.transparent=!0;if(r.parameters.normalMap){k=THREE.ShaderUtils.lib.normal;a=THREE.UniformsUtils.clone(k.uniforms);m=r.parameters.color;N=r.parameters.specular;c=r.parameters.ambient;Q=r.parameters.shininess;a.tNormal.texture=y.textures[r.parameters.normalMap];if(r.parameters.normalMapFactor)a.uNormalScale.value= +r.parameters.normalMapFactor;if(r.parameters.map)a.tDiffuse.texture=r.parameters.map,a.enableDiffuse.value=!0;if(r.parameters.lightMap)a.tAO.texture=r.parameters.lightMap,a.enableAO.value=!0;if(r.parameters.specularMap)a.tSpecular.texture=y.textures[r.parameters.specularMap],a.enableSpecular.value=!0;a.uDiffuseColor.value.setHex(m);a.uSpecularColor.value.setHex(N);a.uAmbientColor.value.setHex(c);a.uShininess.value=Q;if(r.parameters.opacity)a.uOpacity.value=r.parameters.opacity;r=new THREE.ShaderMaterial({fragmentShader:k.fragmentShader, +vertexShader:k.vertexShader,uniforms:a,lights:!0,fog:!0})}else r=new THREE[r.type](r.parameters);y.materials[n]=r}e();i.callbackSync(y);h()};THREE.UTF8Loader=function(){};THREE.UTF8Loader.prototype=new THREE.UTF8Loader;THREE.UTF8Loader.prototype.constructor=THREE.UTF8Loader; THREE.UTF8Loader.prototype.load=function(a,b,c){if(a instanceof Object)console.warn("DEPRECATED: UTF8Loader( parameters ) is now UTF8Loader( url, callback, metaData )."),c=a,a=c.model,b=c.callback,c={scale:c.scale,offsetX:c.offsetX,offsetY:c.offsetY,offsetZ:c.offsetZ};var d=new XMLHttpRequest,e=void 0!==c.scale?c.scale:1,f=void 0!==c.offsetX?c.offsetX:0,g=void 0!==c.offsetY?c.offsetY:0,h=void 0!==c.offsetZ?c.offsetZ:0;d.onreadystatechange=function(){4==d.readyState?200==d.status||0==d.status?THREE.UTF8Loader.prototype.createModel(d.responseText, b,e,f,g,h):alert("Couldn't load ["+a+"] ["+d.status+"]"):3!=d.readyState&&2==d.readyState&&d.getResponseHeader("Content-Length")};d.open("GET",a,!0);d.send(null)};THREE.UTF8Loader.prototype.decompressMesh=function(a){var b=a.charCodeAt(0);57344<=b&&(b-=2048);b++;for(var c=new Float32Array(8*b),d=1,e=0;8>e;e++){for(var f=0,g=0;g>1^-(h&1));c[8*g+e]=f}d+=b}b=a.length-d;f=new Uint16Array(b);for(e=g=0;e=this.maxCount-3&&h(this)};this.begin=function(){this.count=0; -this.hasNormal=this.hasPos=!1};this.end=function(a){if(0!==this.count){for(var b=3*this.count;bn&&(n=1);k=Math.floor(k+h);k>this.size-1&&(k=this.size-1);var q=Math.floor(i-h);1>q&&(q=1);i=Math.floor(i+h);i>this.size-1&&(i=this.size-1);var o=Math.floor(l-h);1>o&&(o=1);h=Math.floor(l+h);h>this.size-1&&(h=this.size- -1);for(var p,m,r,s,t,u,v,l=n;li&&(o=i);for(e=0;el&&(p=l);for(f=0;fl&&(p=l);for(g=0;g=this.maxCount-3&&h(this)};this.begin=function(){this.count=0; +this.hasNormal=this.hasPos=!1};this.end=function(a){if(0!==this.count){for(var b=3*this.count;bn&&(n=1);i=Math.floor(i+h);i>this.size-1&&(i=this.size-1);var q=Math.floor(l-h);1>q&&(q=1);l=Math.floor(l+h);l>this.size-1&&(l=this.size-1);var o=Math.floor(k-h);1>o&&(o=1);h=Math.floor(k+h);h>this.size-1&&(h=this.size- +1);for(var p,m,r,s,t,u,v,k=n;kl&&(o=l);for(e=0;ek&&(p=k);for(f=0;fk&&(p=k);for(g=0;g=b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)?(i=!1,l=a(THREE.ShaderFlares.lensFlare)):(i=!0,l=a(THREE.ShaderFlares.lensFlareVertexTexture));n={};q={};n.vertex=b.getAttribLocation(l,"position");n.uv=b.getAttribLocation(l,"uv");q.renderType=b.getUniformLocation(l,"renderType");q.map=b.getUniformLocation(l,"map");q.occlusionMap=b.getUniformLocation(l,"occlusionMap");q.opacity=b.getUniformLocation(l,"opacity");q.color=b.getUniformLocation(l, -"color");q.scale=b.getUniformLocation(l,"scale");q.rotation=b.getUniformLocation(l,"rotation");q.screenPosition=b.getUniformLocation(l,"screenPosition");o=!1};this.render=function(a,d,e,s){var a=a.__webglFlares,t=a.length;if(t){var u=new THREE.Vector3,v=s/e,x=0.5*e,B=0.5*s,D=16/s,C=new THREE.Vector2(D*v,D),A=new THREE.Vector3(1,1,0),F=new THREE.Vector2(1,1),J=q,D=n;b.useProgram(l);o||(b.enableVertexAttribArray(n.vertex),b.enableVertexAttribArray(n.uv),o=!0);b.uniform1i(J.occlusionMap,0);b.uniform1i(J.map, -1);b.bindBuffer(b.ARRAY_BUFFER,f);b.vertexAttribPointer(D.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(D.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,g);b.disable(b.CULL_FACE);b.depthMask(!1);var K,Z,L,O,M;for(K=0;K=b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)?(l=!1,k=a(THREE.ShaderFlares.lensFlare)):(l=!0,k=a(THREE.ShaderFlares.lensFlareVertexTexture));n={};q={};n.vertex=b.getAttribLocation(k,"position");n.uv=b.getAttribLocation(k,"uv");q.renderType=b.getUniformLocation(k,"renderType");q.map=b.getUniformLocation(k,"map");q.occlusionMap=b.getUniformLocation(k,"occlusionMap");q.opacity=b.getUniformLocation(k,"opacity");q.color=b.getUniformLocation(k, +"color");q.scale=b.getUniformLocation(k,"scale");q.rotation=b.getUniformLocation(k,"rotation");q.screenPosition=b.getUniformLocation(k,"screenPosition");o=!1};this.render=function(a,d,e,s){var a=a.__webglFlares,t=a.length;if(t){var u=new THREE.Vector3,v=s/e,x=0.5*e,B=0.5*s,D=16/s,C=new THREE.Vector2(D*v,D),A=new THREE.Vector3(1,1,0),H=new THREE.Vector2(1,1),I=q,D=n;b.useProgram(k);o||(b.enableVertexAttribArray(n.vertex),b.enableVertexAttribArray(n.uv),o=!0);b.uniform1i(I.occlusionMap,0);b.uniform1i(I.map, +1);b.bindBuffer(b.ARRAY_BUFFER,f);b.vertexAttribPointer(D.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(D.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,g);b.disable(b.CULL_FACE);b.depthMask(!1);var N,$,K,Q,L;for(N=0;Ne&&0>g||0>f&&0>h)return!1;0>e?c=Math.max(c,e/(e-g)):0>g&&(d=Math.min(d,e/(e-g)));0>f?c=Math.max(c,f/(f-h)):0>h&&(d=Math.min(d,f/(f-h)));if(dh&&i.positionScreen.z(qa.positionScreen.x-Q.positionScreen.x)*(L.positionScreen.y-Q.positionScreen.y)-(qa.positionScreen.y- -Q.positionScreen.y)*(L.positionScreen.x-Q.positionScreen.x)))va=p[n]=p[n]||new THREE.RenderableFace3,n++,j=va,j.v1.copy(Q),j.v2.copy(L),j.v3.copy(qa);else continue;else if(Z instanceof THREE.Face4)if(Q=l[Z.a],L=l[Z.b],qa=l[Z.c],va=l[Z.d],Q.visible&&L.visible&&qa.visible&&va.visible&&(ba.doubleSided||ba.flipSided!=(0>(va.positionScreen.x-Q.positionScreen.x)*(L.positionScreen.y-Q.positionScreen.y)-(va.positionScreen.y-Q.positionScreen.y)*(L.positionScreen.x-Q.positionScreen.x)||0>(L.positionScreen.x- -qa.positionScreen.x)*(va.positionScreen.y-qa.positionScreen.y)-(L.positionScreen.y-qa.positionScreen.y)*(va.positionScreen.x-qa.positionScreen.x))))Na=m[o]=m[o]||new THREE.RenderableFace4,o++,j=Na,j.v1.copy(Q),j.v2.copy(L),j.v3.copy(qa),j.v4.copy(va);else continue;j.normalWorld.copy(Z.normal);Ca.multiplyVector3(j.normalWorld);j.centroidWorld.copy(Z.centroid);ya.multiplyVector3(j.centroidWorld);j.centroidScreen.copy(j.centroidWorld);A.multiplyVector3(j.centroidScreen);qa=Z.vertexNormals;for(Q=0,L= -qa.length;QH.z))h= -K[J]=K[J]||new THREE.RenderableParticle,J++,y=h,y.x=H.x/H.w,y.y=H.y/H.w,y.z=H.z,y.rotation=ba.rotation.z,y.scale.x=ba.scale.x*Math.abs(y.x-(H.x+e.projectionMatrix.n11)/(H.w+e.projectionMatrix.n14)),y.scale.y=ba.scale.y*Math.abs(y.y-(H.y+e.projectionMatrix.n22)/(H.w+e.projectionMatrix.n24)),y.material=ba.material,u.elements.push(y);f&&u.elements.sort(c);return u}};THREE.Quaternion=function(a,b,c,d){this.set(a||0,b||0,c||0,void 0!==d?d:1)}; +b,e.z=B.z,u.objects.push(e)):b instanceof THREE.Sprite||b instanceof THREE.Particle?(A.multiplyVector3(B.copy(b.position)),e=a(),e.object=b,e.z=B.z,u.sprites.push(e)):b instanceof THREE.Light&&u.lights.push(b);for(var c=0,g=b.children.length;ch&&i.positionScreen.z(W.positionScreen.x-Q.positionScreen.x)*(L.positionScreen.y-Q.positionScreen.y)-(W.positionScreen.y- +Q.positionScreen.y)*(L.positionScreen.x-Q.positionScreen.x)))ya=p[n]=p[n]||new THREE.RenderableFace3,n++,j=ya,j.v1.copy(Q),j.v2.copy(L),j.v3.copy(W);else continue;else if(ba instanceof THREE.Face4)if(Q=l[ba.a],L=l[ba.b],W=l[ba.c],ya=l[ba.d],Q.visible&&L.visible&&W.visible&&ya.visible&&(ca.doubleSided||ca.flipSided!=(0>(ya.positionScreen.x-Q.positionScreen.x)*(L.positionScreen.y-Q.positionScreen.y)-(ya.positionScreen.y-Q.positionScreen.y)*(L.positionScreen.x-Q.positionScreen.x)||0>(L.positionScreen.x- +W.positionScreen.x)*(ya.positionScreen.y-W.positionScreen.y)-(L.positionScreen.y-W.positionScreen.y)*(ya.positionScreen.x-W.positionScreen.x))))Ua=m[o]=m[o]||new THREE.RenderableFace4,o++,j=Ua,j.v1.copy(Q),j.v2.copy(L),j.v3.copy(W),j.v4.copy(ya);else continue;j.normalWorld.copy(ba.normal);Ba.multiplyVector3(j.normalWorld);j.centroidWorld.copy(ba.centroid);Ea.multiplyVector3(j.centroidWorld);j.centroidScreen.copy(j.centroidWorld);A.multiplyVector3(j.centroidScreen);W=ba.vertexNormals;for(Q=0,L=W.length;Q< +L;Q++)ya=j.vertexNormalsWorld[Q],ya.copy(W[Q]),Ba.multiplyVector3(ya);for(Q=0,L=Ta.length;QH.z))h=K[J]=K[J]|| +new THREE.RenderableParticle,J++,y=h,y.x=H.x/H.w,y.y=H.y/H.w,y.z=H.z,y.rotation=ca.rotation.z,y.scale.x=ca.scale.x*Math.abs(y.x-(H.x+e.projectionMatrix.n11)/(H.w+e.projectionMatrix.n14)),y.scale.y=ca.scale.y*Math.abs(y.y-(H.y+e.projectionMatrix.n22)/(H.w+e.projectionMatrix.n24)),y.material=ca.material,u.elements.push(y);f&&u.elements.sort(c);return u}};THREE.Quaternion=function(a,b,c,d){this.set(a||0,b||0,c||0,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){var b=Math.PI/360,c=a.x*b,d=a.y*b,e=a.z*b,a=Math.cos(d),d=Math.sin(d),b=Math.cos(-e),e=Math.sin(-e),f=Math.cos(c),c=Math.sin(c),h=a*b,i=d*e;this.w=h*f-i*c;this.x=h*c+i*f;this.y=d*b*f+a*e*c;this.z=a*e*f-d*b*c;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=Math.pow(a.determinant(),1/3);this.w=Math.sqrt(Math.max(0,b+a.n11+a.n22+a.n33))/2;this.x=Math.sqrt(Math.max(0,b+a.n11-a.n22-a.n33))/2;this.y=Math.sqrt(Math.max(0,b-a.n11+a.n22-a.n33))/2;this.z=Math.sqrt(Math.max(0,b-a.n11-a.n22+a.n33))/2;this.x=0>a.n32-a.n23?-Math.abs(this.x):Math.abs(this.x);this.y=0>a.n13-a.n31?-Math.abs(this.y):Math.abs(this.y);this.z=0>a.n21-a.n12?-Math.abs(this.z):Math.abs(this.z); this.normalize();return this},calculateW:function(){this.w=-Math.sqrt(Math.abs(1-this.x*this.x-this.y*this.y-this.z*this.z));return this},inverse: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.w=this.z=this.y=this.x=0:(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a);return this},multiplySelf:function(a){var b= @@ -88,11 +88,11 @@ b;a++)c=this.faces[a],c.centroid.set(0,0,0),c instanceof THREE.Face3?(c.centroid b,c,d,e,f,h=new THREE.Vector3,i=new THREE.Vector3;for(a=0,b=this.faces.length;ae?-1:1,f.vertexTangents[d]=new THREE.Vector4(ua.x,ua.y,ua.z,e)}this.hasTangents=!0},computeBoundingBox:function(){if(0c.x)c.x=a.x;if(a.yc.y)c.y=a.y;if(a.zc.z)c.z=a.z}}},computeBoundingSphere:function(){for(var a,b=0,c=0,d=this.vertices.length;cb&&(b=a);this.boundingSphere={radius:b}},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,h;for(f=0,h=this.vertices.length;fe?-1:1,f.vertexTangents[d]=new THREE.Vector4(ua.x,ua.y,ua.z,e)}this.hasTangents=!0},computeBoundingBox:function(){if(0c.x)c.x=a.x;if(a.yc.y)c.y=a.y;if(a.zc.z)c.z=a.z}}},computeBoundingSphere:function(){for(var a,b=0,c=0,d=this.vertices.length;cb&&(b=a);this.boundingSphere={radius:b}},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,h;for(f=0,h=this.vertices.length;fthis.points.length-2?f:f+1;c[3]=f>this.points.length-3?f:f+2;l=this.points[c[0]];j=this.points[c[1]]; n=this.points[c[2]];p=this.points[c[3]];i=h*h;k=h*i;d.x=b(l.x,j.x,n.x,p.x,h,i,k);d.y=b(l.y,j.y,n.y,p.y,h,i,k);d.z=b(l.z,j.z,n.z,p.z,h,i,k);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;am;m++){k=n;t=m;if(D.autoScaleCubemaps){if(u=i.image[m],y=tc,!(u.width<=y&&u.height<=y))A=Math.max(u.width,u.height),z=Math.floor(u.width* +16*k);g.uniformMatrix4fv(m,!1,i._array)}else if("t"===k){if(g.uniform1i(m,n),m=i.texture)if(m.image instanceof Array&&6===m.image.length){if(i=m,6===i.image.length)if(i.needsUpdate){if(!i.image.__webglTextureCube)i.image.__webglTextureCube=g.createTexture();g.activeTexture(g.TEXTURE0+n);g.bindTexture(g.TEXTURE_CUBE_MAP,i.image.__webglTextureCube);n=[];for(m=0;6>m;m++){k=n;t=m;if(D.autoScaleCubemaps){if(u=i.image[m],y=uc,!(u.width<=y&&u.height<=y))A=Math.max(u.width,u.height),z=Math.floor(u.width* y/A),y=Math.floor(u.height*y/A),A=document.createElement("canvas"),A.width=z,A.height=y,A.getContext("2d").drawImage(u,0,0,u.width,u.height,0,0,z,y),u=A}else u=i.image[m];k[t]=u}m=n[0];k=0===(m.width&m.width-1)&&0===(m.height&m.height-1);t=B(i.format);u=B(i.type);J(g.TEXTURE_CUBE_MAP,i,k);for(m=0;6>m;m++)g.texImage2D(g.TEXTURE_CUBE_MAP_POSITIVE_X+m,0,t,t,u,n[m]);i.generateMipmaps&&k&&g.generateMipmap(g.TEXTURE_CUBE_MAP);i.needsUpdate=!1;if(i.onUpdated)i.onUpdated()}else g.activeTexture(g.TEXTURE0+ n),g.bindTexture(g.TEXTURE_CUBE_MAP,i.image.__webglTextureCube)}else m instanceof THREE.WebGLRenderTargetCube?(i=m,g.activeTexture(g.TEXTURE0+n),g.bindTexture(g.TEXTURE_CUBE_MAP,i.__webglTexture)):D.setTexture(m,n)}else if("tv"===k){if(!i._array){i._array=[];for(k=0,t=i.texture.length;kT;T++)ub=Jb[T],La[wa]=ub.x,La[wa+1]=ub.y,La[wa+2]=ub.z,wa+=3;else for(T=0;3>T;T++)La[wa]=nb.x,La[wa+1]=nb.y,La[wa+2]=nb.z,wa+=3;for(v=0,C=V.length;vT;T++)ub=Jb[T],La[wa]=ub.x,La[wa+1]=ub.y,La[wa+2]=ub.z,wa+=3;else for(T=0;4>T;T++)La[wa]=nb.x,La[wa+1]=nb.y,La[wa+2]=nb.z,wa+=3; -g.bindBuffer(g.ARRAY_BUFFER,O.__webglNormalBuffer);g.bufferData(g.ARRAY_BUFFER,La,Ga)}if(Jc&&Ac&&Fc){for(v=0,C=U.length;vT;T++)Mb=Kb[T],Wb[ib]=Mb.u,Wb[ib+1]=Mb.v,ib+=2;for(v=0,C=V.length;vT;T++)Mb=Kb[T],Wb[ib]=Mb.u,Wb[ib+1]=Mb.v,ib+=2;0T;T++)Nb=Lb[T],Xb[jb]=Nb.u,Xb[jb+1]=Nb.v,jb+=2;for(v=0,C=V.length;vT;T++)Nb=Lb[T],Xb[jb]=Nb.u,Xb[jb+1]=Nb.v,jb+=2;0T;T++)vb=Jb[T],La[va]=vb.x,La[va+1]=vb.y,La[va+2]=vb.z,va+=3;else for(T=0;3>T;T++)La[va]=ob.x,La[va+1]=ob.y,La[va+2]=ob.z,va+=3;for(v=0,C=V.length;vT;T++)vb=Jb[T],La[va]=vb.x,La[va+1]=vb.y,La[va+2]=vb.z,va+=3;else for(T=0;4>T;T++)La[va]=ob.x,La[va+1]=ob.y,La[va+2]=ob.z,va+=3; +g.bindBuffer(g.ARRAY_BUFFER,O.__webglNormalBuffer);g.bufferData(g.ARRAY_BUFFER,La,Ga)}if(Kc&&Bc&&Gc){for(v=0,C=U.length;vT;T++)Mb=Kb[T],Xb[kb]=Mb.u,Xb[kb+1]=Mb.v,kb+=2;for(v=0,C=V.length;vT;T++)Mb=Kb[T],Xb[kb]=Mb.u,Xb[kb+1]=Mb.v,kb+=2;0T;T++)Nb=Lb[T],Yb[lb]=Nb.u,Yb[lb+1]=Nb.v,lb+=2;for(v=0,C=V.length;vT;T++)Nb=Lb[T],Yb[lb]=Nb.u,Yb[lb+1]=Nb.v,lb+=2;0c;c++){a.__webglFramebuffer[c]=g.createFramebuffer();a.__webglRenderbuffer[c]=g.createRenderbuffer();g.texImage2D(g.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,d,a.width,a.height,0,d,e,null);var f=a,h=g.TEXTURE_CUBE_MAP_POSITIVE_X+c;g.bindFramebuffer(g.FRAMEBUFFER,a.__webglFramebuffer[c]);g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,h,f.__webglTexture,0);K(a.__webglRenderbuffer[c],a)}}else a.__webglFramebuffer= g.createFramebuffer(),a.__webglRenderbuffer=g.createRenderbuffer(),g.bindTexture(g.TEXTURE_2D,a.__webglTexture),J(g.TEXTURE_2D,a,c),g.texImage2D(g.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=g.TEXTURE_2D,g.bindFramebuffer(g.FRAMEBUFFER,a.__webglFramebuffer),g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,d,a.__webglTexture,0),K(a.__webglRenderbuffer,a);b?g.bindTexture(g.TEXTURE_CUBE_MAP,null):g.bindTexture(g.TEXTURE_2D,null);g.bindRenderbuffer(g.RENDERBUFFER,null);g.bindFramebuffer(g.FRAMEBUFFER, -null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,d=a.width,a=a.height,c=e=0):(b=null,d=Pb,a=Ab,e=zb,c=Fb);b!==oa&&(g.bindFramebuffer(g.FRAMEBUFFER,b),g.viewport(e,c,d,a),oa=b);bc=d;cc=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)}; +null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,d=a.width,a=a.height,c=e=0):(b=null,d=Ab,a=Gb,e=Fb,c=Pb);b!==pa&&(g.bindFramebuffer(g.FRAMEBUFFER,b),g.viewport(e,c,d,a),pa=b);cc=d;dc=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.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.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;return a};THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0}; @@ -359,10 +359,10 @@ THREE.LensFlarePlugin=function(){function a(a){var c=b.createProgram(),d=b.creat 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,k);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)?(l=!1,j=a(THREE.ShaderFlares.lensFlare)):(l=!0,j=a(THREE.ShaderFlares.lensFlareVertexTexture));n={};p={};n.vertex=b.getAttribLocation(j,"position");n.uv=b.getAttribLocation(j,"uv");p.renderType=b.getUniformLocation(j,"renderType");p.map=b.getUniformLocation(j,"map");p.occlusionMap=b.getUniformLocation(j,"occlusionMap");p.opacity=b.getUniformLocation(j,"opacity");p.color=b.getUniformLocation(j, "color");p.scale=b.getUniformLocation(j,"scale");p.rotation=b.getUniformLocation(j,"rotation");p.screenPosition=b.getUniformLocation(j,"screenPosition");o=!1};this.render=function(a,d,e,z){var a=a.__webglFlares,y=a.length;if(y){var J=new THREE.Vector3,K=z/e,u=0.5*e,B=0.5*z,H=16/z,A=new THREE.Vector2(H*K,H),M=new THREE.Vector3(1,1,0),N=new THREE.Vector2(1,1),I=p,H=n;b.useProgram(j);o||(b.enableVertexAttribArray(n.vertex),b.enableVertexAttribArray(n.uv),o=!0);b.uniform1i(I.occlusionMap,0);b.uniform1i(I.map, -1);b.bindBuffer(b.ARRAY_BUFFER,f);b.vertexAttribPointer(H.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(H.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,h);b.disable(b.CULL_FACE);b.depthMask(!1);var ia,ua,S,$,Y;for(ia=0;ia