|
@@ -15,8 +15,8 @@ b.x;this.y-=b.y;this.z-=b.z;this.w-=b.w;return this},multiplyScalar:function(b){
|
|
|
setLength:function(b){return this.normalize().multiplyScalar(b)},lerpSelf:function(b,c){this.x+=(b.x-this.x)*c;this.y+=(b.y-this.y)*c;this.z+=(b.z-this.z)*c;this.w+=(b.w-this.w)*c;return this}};THREE.Ray=function(b,c){this.origin=b||new THREE.Vector3;this.direction=c||new THREE.Vector3};
|
|
|
THREE.Ray.prototype={intersectScene:function(b){return this.intersectObjects(b.objects)},intersectObjects:function(b){var c,e,f=[];c=0;for(e=b.length;c<e;c++)f=f.concat(this.intersectObject(b[c]));f.sort(function(b,e){return b.distance-e.distance});return f},intersectObject:function(b){function c(b,e,c){var f,c=c.matrixWorld.getPosition();f=c.clone().subSelf(b).dot(e);b=b.clone().addSelf(e.clone().multiplyScalar(f));return c.distanceTo(b)}function e(b,e,c,f){var f=f.clone().subSelf(e),c=c.clone().subSelf(e),
|
|
|
g=b.clone().subSelf(e),b=f.dot(f),e=f.dot(c),f=f.dot(g),h=c.dot(c),c=c.dot(g),g=1/(b*h-e*e),h=(h*f-e*c)*g,b=(b*c-e*f)*g;return h>0&&b>0&&h+b<1}if(b instanceof THREE.Particle){var f=c(this.origin,this.direction,b);if(!f||f>b.scale.x)return[];return[{distance:f,point:b.position,face:null,object:b}]}else if(b instanceof THREE.Mesh){f=c(this.origin,this.direction,b);if(!f||f>b.geometry.boundingSphere.radius*Math.max(b.scale.x,Math.max(b.scale.y,b.scale.z)))return[];var g,j,h,m,n,p,o,t,u,v,x=b.geometry,
|
|
|
-w=x.vertices,B=[],f=0;for(g=x.faces.length;f<g;f++)if(j=x.faces[f],u=this.origin.clone(),v=this.direction.clone(),p=b.matrixWorld,h=p.multiplyVector3(w[j.a].position.clone()),m=p.multiplyVector3(w[j.b].position.clone()),n=p.multiplyVector3(w[j.c].position.clone()),p=j instanceof THREE.Face4?p.multiplyVector3(w[j.d].position.clone()):null,o=b.matrixRotationWorld.multiplyVector3(j.normal.clone()),t=v.dot(o),b.doubleSided||(b.flipSided?t>0:t<0))if(o=o.dot((new THREE.Vector3).sub(h,u))/t,u=u.addSelf(v.multiplyScalar(o)),
|
|
|
-j instanceof THREE.Face3)e(u,h,m,n)&&(j={distance:this.origin.distanceTo(u),point:u,face:j,object:b},B.push(j));else if(j instanceof THREE.Face4&&(e(u,h,m,p)||e(u,m,n,p)))j={distance:this.origin.distanceTo(u),point:u,face:j,object:b},B.push(j);return B}else return[]}};
|
|
|
+w=x.vertices,y=[],f=0;for(g=x.faces.length;f<g;f++)if(j=x.faces[f],u=this.origin.clone(),v=this.direction.clone(),p=b.matrixWorld,h=p.multiplyVector3(w[j.a].position.clone()),m=p.multiplyVector3(w[j.b].position.clone()),n=p.multiplyVector3(w[j.c].position.clone()),p=j instanceof THREE.Face4?p.multiplyVector3(w[j.d].position.clone()):null,o=b.matrixRotationWorld.multiplyVector3(j.normal.clone()),t=v.dot(o),b.doubleSided||(b.flipSided?t>0:t<0))if(o=o.dot((new THREE.Vector3).sub(h,u))/t,u=u.addSelf(v.multiplyScalar(o)),
|
|
|
+j instanceof THREE.Face3)e(u,h,m,n)&&(j={distance:this.origin.distanceTo(u),point:u,face:j,object:b},y.push(j));else if(j instanceof THREE.Face4&&(e(u,h,m,p)||e(u,m,n,p)))j={distance:this.origin.distanceTo(u),point:u,face:j,object:b},y.push(j);return y}else return[]}};
|
|
|
THREE.Rectangle=function(){function b(){j=f-c;h=g-e}var c,e,f,g,j,h,m=!0;this.getX=function(){return c};this.getY=function(){return e};this.getWidth=function(){return j};this.getHeight=function(){return h};this.getLeft=function(){return c};this.getTop=function(){return e};this.getRight=function(){return f};this.getBottom=function(){return g};this.set=function(h,j,o,t){m=!1;c=h;e=j;f=o;g=t;b()};this.addPoint=function(h,j){m?(m=!1,c=h,e=j,f=h,g=j):(c=c<h?c:h,e=e<j?e:j,f=f>h?f:h,g=g>j?g:j);b()};this.add3Points=
|
|
|
function(h,j,o,t,u,v){m?(m=!1,c=h<o?h<u?h:u:o<u?o:u,e=j<t?j<v?j:v:t<v?t:v,f=h>o?h>u?h:u:o>u?o:u,g=j>t?j>v?j:v:t>v?t:v):(c=h<o?h<u?h<c?h:c:u<c?u:c:o<u?o<c?o:c:u<c?u:c,e=j<t?j<v?j<e?j:e:v<e?v:e:t<v?t<e?t:e:v<e?v:e,f=h>o?h>u?h>f?h:f:u>f?u:f:o>u?o>f?o:f:u>f?u:f,g=j>t?j>v?j>g?j:g:v>g?v:g:t>v?t>g?t:g:v>g?v:g);b()};this.addRectangle=function(h){m?(m=!1,c=h.getLeft(),e=h.getTop(),f=h.getRight(),g=h.getBottom()):(c=c<h.getLeft()?c:h.getLeft(),e=e<h.getTop()?e:h.getTop(),f=f>h.getRight()?f:h.getRight(),g=g>
|
|
|
h.getBottom()?g:h.getBottom());b()};this.inflate=function(h){c-=h;e-=h;f+=h;g+=h;b()};this.minSelf=function(h){c=c>h.getLeft()?c:h.getLeft();e=e>h.getTop()?e:h.getTop();f=f<h.getRight()?f:h.getRight();g=g<h.getBottom()?g:h.getBottom();b()};this.instersects=function(b){return Math.min(f,b.getRight())-Math.max(c,b.getLeft())>=0&&Math.min(g,b.getBottom())-Math.max(e,b.getTop())>=0};this.empty=function(){m=!0;g=f=e=c=0;b()};this.isEmpty=function(){return m}};THREE.Matrix3=function(){this.m=[]};
|
|
@@ -24,8 +24,8 @@ THREE.Matrix3.prototype={transpose:function(){var b,c=this.m;b=c[1];c[1]=c[3];c[
|
|
|
THREE.Matrix4.prototype={set:function(b,c,e,f,g,j,h,m,n,p,o,t,u,v,x,w){this.n11=b;this.n12=c;this.n13=e;this.n14=f;this.n21=g;this.n22=j;this.n23=h;this.n24=m;this.n31=n;this.n32=p;this.n33=o;this.n34=t;this.n41=u;this.n42=v;this.n43=x;this.n44=w;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},copy:function(b){this.set(b.n11,b.n12,b.n13,b.n14,b.n21,b.n22,b.n23,b.n24,b.n31,b.n32,b.n33,b.n34,b.n41,b.n42,b.n43,b.n44);return this},lookAt:function(b,c,e){var f=THREE.Matrix4.__v1,
|
|
|
g=THREE.Matrix4.__v2,j=THREE.Matrix4.__v3;j.sub(b,c).normalize();if(j.length()===0)j.z=1;f.cross(e,j).normalize();f.length()===0&&(j.x+=1.0E-4,f.cross(e,j).normalize());g.cross(j,f).normalize();this.n11=f.x;this.n12=g.x;this.n13=j.x;this.n21=f.y;this.n22=g.y;this.n23=j.y;this.n31=f.z;this.n32=g.z;this.n33=j.z;return this},multiplyVector3:function(b){var c=b.x,e=b.y,f=b.z,g=1/(this.n41*c+this.n42*e+this.n43*f+this.n44);b.x=(this.n11*c+this.n12*e+this.n13*f+this.n14)*g;b.y=(this.n21*c+this.n22*e+this.n23*
|
|
|
f+this.n24)*g;b.z=(this.n31*c+this.n32*e+this.n33*f+this.n34)*g;return b},multiplyVector4:function(b){var c=b.x,e=b.y,f=b.z,g=b.w;b.x=this.n11*c+this.n12*e+this.n13*f+this.n14*g;b.y=this.n21*c+this.n22*e+this.n23*f+this.n24*g;b.z=this.n31*c+this.n32*e+this.n33*f+this.n34*g;b.w=this.n41*c+this.n42*e+this.n43*f+this.n44*g;return b},rotateAxis:function(b){var c=b.x,e=b.y,f=b.z;b.x=c*this.n11+e*this.n12+f*this.n13;b.y=c*this.n21+e*this.n22+f*this.n23;b.z=c*this.n31+e*this.n32+f*this.n33;b.normalize();
|
|
|
-return b},crossVector:function(b){var c=new THREE.Vector4;c.x=this.n11*b.x+this.n12*b.y+this.n13*b.z+this.n14*b.w;c.y=this.n21*b.x+this.n22*b.y+this.n23*b.z+this.n24*b.w;c.z=this.n31*b.x+this.n32*b.y+this.n33*b.z+this.n34*b.w;c.w=b.w?this.n41*b.x+this.n42*b.y+this.n43*b.z+this.n44*b.w:1;return c},multiply:function(b,c){var e=b.n11,f=b.n12,g=b.n13,j=b.n14,h=b.n21,m=b.n22,n=b.n23,p=b.n24,o=b.n31,t=b.n32,u=b.n33,v=b.n34,x=b.n41,w=b.n42,B=b.n43,y=b.n44,F=c.n11,C=c.n12,E=c.n13,G=c.n14,A=c.n21,P=c.n22,
|
|
|
-I=c.n23,H=c.n24,T=c.n31,U=c.n32,J=c.n33,Y=c.n34,K=c.n41,S=c.n42,k=c.n43,V=c.n44;this.n11=e*F+f*A+g*T+j*K;this.n12=e*C+f*P+g*U+j*S;this.n13=e*E+f*I+g*J+j*k;this.n14=e*G+f*H+g*Y+j*V;this.n21=h*F+m*A+n*T+p*K;this.n22=h*C+m*P+n*U+p*S;this.n23=h*E+m*I+n*J+p*k;this.n24=h*G+m*H+n*Y+p*V;this.n31=o*F+t*A+u*T+v*K;this.n32=o*C+t*P+u*U+v*S;this.n33=o*E+t*I+u*J+v*k;this.n34=o*G+t*H+u*Y+v*V;this.n41=x*F+w*A+B*T+y*K;this.n42=x*C+w*P+B*U+y*S;this.n43=x*E+w*I+B*J+y*k;this.n44=x*G+w*H+B*Y+y*V;return this},multiplyToArray:function(b,
|
|
|
+return b},crossVector:function(b){var c=new THREE.Vector4;c.x=this.n11*b.x+this.n12*b.y+this.n13*b.z+this.n14*b.w;c.y=this.n21*b.x+this.n22*b.y+this.n23*b.z+this.n24*b.w;c.z=this.n31*b.x+this.n32*b.y+this.n33*b.z+this.n34*b.w;c.w=b.w?this.n41*b.x+this.n42*b.y+this.n43*b.z+this.n44*b.w:1;return c},multiply:function(b,c){var e=b.n11,f=b.n12,g=b.n13,j=b.n14,h=b.n21,m=b.n22,n=b.n23,p=b.n24,o=b.n31,t=b.n32,u=b.n33,v=b.n34,x=b.n41,w=b.n42,y=b.n43,C=b.n44,E=c.n11,B=c.n12,I=c.n13,F=c.n14,A=c.n21,P=c.n22,
|
|
|
+H=c.n23,G=c.n24,U=c.n31,V=c.n32,J=c.n33,Z=c.n34,K=c.n41,S=c.n42,k=c.n43,W=c.n44;this.n11=e*E+f*A+g*U+j*K;this.n12=e*B+f*P+g*V+j*S;this.n13=e*I+f*H+g*J+j*k;this.n14=e*F+f*G+g*Z+j*W;this.n21=h*E+m*A+n*U+p*K;this.n22=h*B+m*P+n*V+p*S;this.n23=h*I+m*H+n*J+p*k;this.n24=h*F+m*G+n*Z+p*W;this.n31=o*E+t*A+u*U+v*K;this.n32=o*B+t*P+u*V+v*S;this.n33=o*I+t*H+u*J+v*k;this.n34=o*F+t*G+u*Z+v*W;this.n41=x*E+w*A+y*U+C*K;this.n42=x*B+w*P+y*V+C*S;this.n43=x*I+w*H+y*J+C*k;this.n44=x*F+w*G+y*Z+C*W;return this},multiplyToArray:function(b,
|
|
|
c,e){this.multiply(b,c);e[0]=this.n11;e[1]=this.n21;e[2]=this.n31;e[3]=this.n41;e[4]=this.n12;e[5]=this.n22;e[6]=this.n32;e[7]=this.n42;e[8]=this.n13;e[9]=this.n23;e[10]=this.n33;e[11]=this.n43;e[12]=this.n14;e[13]=this.n24;e[14]=this.n34;e[15]=this.n44;return this},multiplySelf:function(b){this.multiply(this,b);return this},multiplyScalar:function(b){this.n11*=b;this.n12*=b;this.n13*=b;this.n14*=b;this.n21*=b;this.n22*=b;this.n23*=b;this.n24*=b;this.n31*=b;this.n32*=b;this.n33*=b;this.n34*=b;this.n41*=
|
|
|
b;this.n42*=b;this.n43*=b;this.n44*=b;return this},determinant:function(){var b=this.n11,c=this.n12,e=this.n13,f=this.n14,g=this.n21,j=this.n22,h=this.n23,m=this.n24,n=this.n31,p=this.n32,o=this.n33,t=this.n34,u=this.n41,v=this.n42,x=this.n43,w=this.n44;return f*h*p*u-e*m*p*u-f*j*o*u+c*m*o*u+e*j*t*u-c*h*t*u-f*h*n*v+e*m*n*v+f*g*o*v-b*m*o*v-e*g*t*v+b*h*t*v+f*j*n*x-c*m*n*x-f*g*p*x+b*m*p*x+c*g*t*x-b*j*t*x-e*j*n*w+c*h*n*w+e*g*p*w-b*h*p*w-c*g*o*w+b*j*o*w},transpose:function(){var b;b=this.n21;this.n21=
|
|
|
this.n12;this.n12=b;b=this.n31;this.n31=this.n13;this.n13=b;b=this.n32;this.n32=this.n23;this.n23=b;b=this.n41;this.n41=this.n14;this.n14=b;b=this.n42;this.n42=this.n24;this.n24=b;b=this.n43;this.n43=this.n34;this.n43=b;return this},clone:function(){var b=new THREE.Matrix4;b.n11=this.n11;b.n12=this.n12;b.n13=this.n13;b.n14=this.n14;b.n21=this.n21;b.n22=this.n22;b.n23=this.n23;b.n24=this.n24;b.n31=this.n31;b.n32=this.n32;b.n33=this.n33;b.n34=this.n34;b.n41=this.n41;b.n42=this.n42;b.n43=this.n43;b.n44=
|
|
@@ -38,8 +38,8 @@ o*e-p;this.n13=j*f;this.n21=j*g;this.n22=j*m;this.n23=-e;this.n31=p*e-o;this.n32
|
|
|
o*g+p;this.n21=g;this.n22=j*m;this.n23=-e*m;this.n31=-f*m;this.n32=p*g+o;this.n33=n-t*g;break;case "XZY":n=j*h;p=j*f;o=e*h;t=e*f;this.n11=h*m;this.n12=-g;this.n13=f*m;this.n21=n*g+t;this.n22=j*m;this.n23=p*g-o;this.n31=o*g-p;this.n32=e*m;this.n33=t*g+n;break;default:n=j*m,p=j*g,o=e*m,t=e*g,this.n11=h*m,this.n12=-h*g,this.n13=f,this.n21=p+o*f,this.n22=n-t*f,this.n23=-e*h,this.n31=t-n*f,this.n32=o+p*f,this.n33=j*h}return this},setRotationFromQuaternion:function(b){var c=b.x,e=b.y,f=b.z,g=b.w,j=c+c,
|
|
|
h=e+e,m=f+f,b=c*j,n=c*h;c*=m;var p=e*h;e*=m;f*=m;j*=g;h*=g;g*=m;this.n11=1-(p+f);this.n12=n-g;this.n13=c+h;this.n21=n+g;this.n22=1-(b+f);this.n23=e-j;this.n31=c-h;this.n32=e+j;this.n33=1-(b+p);return this},scale:function(b){var c=b.x,e=b.y,b=b.z;this.n11*=c;this.n12*=e;this.n13*=b;this.n21*=c;this.n22*=e;this.n23*=b;this.n31*=c;this.n32*=e;this.n33*=b;this.n41*=c;this.n42*=e;this.n43*=b;return this},extractPosition:function(b){this.n14=b.n14;this.n24=b.n24;this.n34=b.n34},extractRotation:function(b,
|
|
|
c){var e=1/c.x,f=1/c.y,g=1/c.z;this.n11=b.n11*e;this.n21=b.n21*e;this.n31=b.n31*e;this.n12=b.n12*f;this.n22=b.n22*f;this.n32=b.n32*f;this.n13=b.n13*g;this.n23=b.n23*g;this.n33=b.n33*g}};
|
|
|
-THREE.Matrix4.makeInvert=function(b,c){var e=b.n11,f=b.n12,g=b.n13,j=b.n14,h=b.n21,m=b.n22,n=b.n23,p=b.n24,o=b.n31,t=b.n32,u=b.n33,v=b.n34,x=b.n41,w=b.n42,B=b.n43,y=b.n44;c===void 0&&(c=new THREE.Matrix4);c.n11=n*v*w-p*u*w+p*t*B-m*v*B-n*t*y+m*u*y;c.n12=j*u*w-g*v*w-j*t*B+f*v*B+g*t*y-f*u*y;c.n13=g*p*w-j*n*w+j*m*B-f*p*B-g*m*y+f*n*y;c.n14=j*n*t-g*p*t-j*m*u+f*p*u+g*m*v-f*n*v;c.n21=p*u*x-n*v*x-p*o*B+h*v*B+n*o*y-h*u*y;c.n22=g*v*x-j*u*x+j*o*B-e*v*B-g*o*y+e*u*y;c.n23=j*n*x-g*p*x-j*h*B+e*p*B+g*h*y-e*n*y;c.n24=
|
|
|
-g*p*o-j*n*o+j*h*u-e*p*u-g*h*v+e*n*v;c.n31=m*v*x-p*t*x+p*o*w-h*v*w-m*o*y+h*t*y;c.n32=j*t*x-f*v*x-j*o*w+e*v*w+f*o*y-e*t*y;c.n33=g*p*x-j*m*x+j*h*w-e*p*w-f*h*y+e*m*y;c.n34=j*m*o-f*p*o-j*h*t+e*p*t+f*h*v-e*m*v;c.n41=n*t*x-m*u*x-n*o*w+h*u*w+m*o*B-h*t*B;c.n42=f*u*x-g*t*x+g*o*w-e*u*w-f*o*B+e*t*B;c.n43=g*m*x-f*n*x-g*h*w+e*n*w+f*h*B-e*m*B;c.n44=f*n*o-g*m*o+g*h*t-e*n*t-f*h*u+e*m*u;c.multiplyScalar(1/b.determinant());return c};
|
|
|
+THREE.Matrix4.makeInvert=function(b,c){var e=b.n11,f=b.n12,g=b.n13,j=b.n14,h=b.n21,m=b.n22,n=b.n23,p=b.n24,o=b.n31,t=b.n32,u=b.n33,v=b.n34,x=b.n41,w=b.n42,y=b.n43,C=b.n44;c===void 0&&(c=new THREE.Matrix4);c.n11=n*v*w-p*u*w+p*t*y-m*v*y-n*t*C+m*u*C;c.n12=j*u*w-g*v*w-j*t*y+f*v*y+g*t*C-f*u*C;c.n13=g*p*w-j*n*w+j*m*y-f*p*y-g*m*C+f*n*C;c.n14=j*n*t-g*p*t-j*m*u+f*p*u+g*m*v-f*n*v;c.n21=p*u*x-n*v*x-p*o*y+h*v*y+n*o*C-h*u*C;c.n22=g*v*x-j*u*x+j*o*y-e*v*y-g*o*C+e*u*C;c.n23=j*n*x-g*p*x-j*h*y+e*p*y+g*h*C-e*n*C;c.n24=
|
|
|
+g*p*o-j*n*o+j*h*u-e*p*u-g*h*v+e*n*v;c.n31=m*v*x-p*t*x+p*o*w-h*v*w-m*o*C+h*t*C;c.n32=j*t*x-f*v*x-j*o*w+e*v*w+f*o*C-e*t*C;c.n33=g*p*x-j*m*x+j*h*w-e*p*w-f*h*C+e*m*C;c.n34=j*m*o-f*p*o-j*h*t+e*p*t+f*h*v-e*m*v;c.n41=n*t*x-m*u*x-n*o*w+h*u*w+m*o*y-h*t*y;c.n42=f*u*x-g*t*x+g*o*w-e*u*w-f*o*y+e*t*y;c.n43=g*m*x-f*n*x-g*h*w+e*n*w+f*h*y-e*m*y;c.n44=f*n*o-g*m*o+g*h*t-e*n*t-f*h*u+e*m*u;c.multiplyScalar(1/b.determinant());return c};
|
|
|
THREE.Matrix4.makeInvert3x3=function(b){var c=b.m33,e=c.m,f=b.n33*b.n22-b.n32*b.n23,g=-b.n33*b.n21+b.n31*b.n23,j=b.n32*b.n21-b.n31*b.n22,h=-b.n33*b.n12+b.n32*b.n13,m=b.n33*b.n11-b.n31*b.n13,n=-b.n32*b.n11+b.n31*b.n12,p=b.n23*b.n12-b.n22*b.n13,o=-b.n23*b.n11+b.n21*b.n13,t=b.n22*b.n11-b.n21*b.n12,b=b.n11*f+b.n21*h+b.n31*p;b==0&&console.error("THREE.Matrix4.makeInvert3x3: Matrix not invertible.");b=1/b;e[0]=b*f;e[1]=b*g;e[2]=b*j;e[3]=b*h;e[4]=b*m;e[5]=b*n;e[6]=b*p;e[7]=b*o;e[8]=b*t;return c};
|
|
|
THREE.Matrix4.makeFrustum=function(b,c,e,f,g,j){var h;h=new THREE.Matrix4;h.n11=2*g/(c-b);h.n12=0;h.n13=(c+b)/(c-b);h.n14=0;h.n21=0;h.n22=2*g/(f-e);h.n23=(f+e)/(f-e);h.n24=0;h.n31=0;h.n32=0;h.n33=-(j+g)/(j-g);h.n34=-2*j*g/(j-g);h.n41=0;h.n42=0;h.n43=-1;h.n44=0;return h};THREE.Matrix4.makePerspective=function(b,c,e,f){var g,b=e*Math.tan(b*Math.PI/360);g=-b;return THREE.Matrix4.makeFrustum(g*c,b*c,g,b,e,f)};
|
|
|
THREE.Matrix4.makeOrtho=function(b,c,e,f,g,j){var h,m,n,p;h=new THREE.Matrix4;m=c-b;n=e-f;p=j-g;h.n11=2/m;h.n12=0;h.n13=0;h.n14=-((c+b)/m);h.n21=0;h.n22=2/n;h.n23=0;h.n24=-((e+f)/n);h.n31=0;h.n32=0;h.n33=-2/p;h.n34=-((j+g)/p);h.n41=0;h.n42=0;h.n43=0;h.n44=1;return h};THREE.Matrix4.__v1=new THREE.Vector3;THREE.Matrix4.__v2=new THREE.Vector3;THREE.Matrix4.__v3=new THREE.Vector3;
|
|
@@ -61,9 +61,9 @@ THREE.Geometry.prototype={computeCentroids:function(){var b,c,e;b=0;for(c=this.f
|
|
|
e.centroid.addSelf(this.vertices[e.d].position),e.centroid.divideScalar(4))},computeFaceNormals:function(b){var c,e,f,g,j,h,m=new THREE.Vector3,n=new THREE.Vector3;f=0;for(g=this.faces.length;f<g;f++){j=this.faces[f];if(b&&j.vertexNormals.length){m.set(0,0,0);c=0;for(e=j.vertexNormals.length;c<e;c++)m.addSelf(j.vertexNormals[c]);m.divideScalar(3)}else c=this.vertices[j.a],e=this.vertices[j.b],h=this.vertices[j.c],m.sub(h.position,e.position),n.sub(c.position,e.position),m.crossSelf(n);m.isZero()||
|
|
|
m.normalize();j.normal.copy(m)}},computeVertexNormals:function(){var b,c,e,f;if(this.__tmpVertices==void 0){f=this.__tmpVertices=Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)f[b]=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)if(e=this.faces[b],e instanceof THREE.Face3)e.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];else if(e instanceof THREE.Face4)e.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]}else{f=
|
|
|
this.__tmpVertices;b=0;for(c=this.vertices.length;b<c;b++)f[b].set(0,0,0)}b=0;for(c=this.faces.length;b<c;b++)e=this.faces[b],e instanceof THREE.Face3?(f[e.a].addSelf(e.normal),f[e.b].addSelf(e.normal),f[e.c].addSelf(e.normal)):e instanceof THREE.Face4&&(f[e.a].addSelf(e.normal),f[e.b].addSelf(e.normal),f[e.c].addSelf(e.normal),f[e.d].addSelf(e.normal));b=0;for(c=this.vertices.length;b<c;b++)f[b].normalize();b=0;for(c=this.faces.length;b<c;b++)e=this.faces[b],e instanceof THREE.Face3?(e.vertexNormals[0].copy(f[e.a]),
|
|
|
-e.vertexNormals[1].copy(f[e.b]),e.vertexNormals[2].copy(f[e.c])):e instanceof THREE.Face4&&(e.vertexNormals[0].copy(f[e.a]),e.vertexNormals[1].copy(f[e.b]),e.vertexNormals[2].copy(f[e.c]),e.vertexNormals[3].copy(f[e.d]))},computeTangents:function(){function b(b,e,c,f,g,k,j){m=b.vertices[e].position;n=b.vertices[c].position;p=b.vertices[f].position;o=h[g];t=h[k];u=h[j];v=n.x-m.x;x=p.x-m.x;w=n.y-m.y;B=p.y-m.y;y=n.z-m.z;F=p.z-m.z;C=t.u-o.u;E=u.u-o.u;G=t.v-o.v;A=u.v-o.v;P=1/(C*A-E*G);U.set((A*v-G*x)*
|
|
|
-P,(A*w-G*B)*P,(A*y-G*F)*P);J.set((C*x-E*v)*P,(C*B-E*w)*P,(C*F-E*y)*P);H[e].addSelf(U);H[c].addSelf(U);H[f].addSelf(U);T[e].addSelf(J);T[c].addSelf(J);T[f].addSelf(J)}var c,e,f,g,j,h,m,n,p,o,t,u,v,x,w,B,y,F,C,E,G,A,P,I,H=[],T=[],U=new THREE.Vector3,J=new THREE.Vector3,Y=new THREE.Vector3,K=new THREE.Vector3,S=new THREE.Vector3;c=0;for(e=this.vertices.length;c<e;c++)H[c]=new THREE.Vector3,T[c]=new THREE.Vector3;c=0;for(e=this.faces.length;c<e;c++)j=this.faces[c],h=this.faceVertexUvs[0][c],j instanceof
|
|
|
-THREE.Face3?b(this,j.a,j.b,j.c,0,1,2):j instanceof THREE.Face4&&(b(this,j.a,j.b,j.c,0,1,2),b(this,j.a,j.b,j.d,0,1,3));var k=["a","b","c","d"];c=0;for(e=this.faces.length;c<e;c++){j=this.faces[c];for(f=0;f<j.vertexNormals.length;f++)S.copy(j.vertexNormals[f]),g=j[k[f]],I=H[g],Y.copy(I),Y.subSelf(S.multiplyScalar(S.dot(I))).normalize(),K.cross(j.vertexNormals[f],I),g=K.dot(T[g]),g=g<0?-1:1,j.vertexTangents[f]=new THREE.Vector4(Y.x,Y.y,Y.z,g)}this.hasTangents=!0},computeBoundingBox:function(){var b;
|
|
|
+e.vertexNormals[1].copy(f[e.b]),e.vertexNormals[2].copy(f[e.c])):e instanceof THREE.Face4&&(e.vertexNormals[0].copy(f[e.a]),e.vertexNormals[1].copy(f[e.b]),e.vertexNormals[2].copy(f[e.c]),e.vertexNormals[3].copy(f[e.d]))},computeTangents:function(){function b(b,e,c,f,g,k,j){m=b.vertices[e].position;n=b.vertices[c].position;p=b.vertices[f].position;o=h[g];t=h[k];u=h[j];v=n.x-m.x;x=p.x-m.x;w=n.y-m.y;y=p.y-m.y;C=n.z-m.z;E=p.z-m.z;B=t.u-o.u;I=u.u-o.u;F=t.v-o.v;A=u.v-o.v;P=1/(B*A-I*F);V.set((A*v-F*x)*
|
|
|
+P,(A*w-F*y)*P,(A*C-F*E)*P);J.set((B*x-I*v)*P,(B*y-I*w)*P,(B*E-I*C)*P);G[e].addSelf(V);G[c].addSelf(V);G[f].addSelf(V);U[e].addSelf(J);U[c].addSelf(J);U[f].addSelf(J)}var c,e,f,g,j,h,m,n,p,o,t,u,v,x,w,y,C,E,B,I,F,A,P,H,G=[],U=[],V=new THREE.Vector3,J=new THREE.Vector3,Z=new THREE.Vector3,K=new THREE.Vector3,S=new THREE.Vector3;c=0;for(e=this.vertices.length;c<e;c++)G[c]=new THREE.Vector3,U[c]=new THREE.Vector3;c=0;for(e=this.faces.length;c<e;c++)j=this.faces[c],h=this.faceVertexUvs[0][c],j instanceof
|
|
|
+THREE.Face3?b(this,j.a,j.b,j.c,0,1,2):j instanceof THREE.Face4&&(b(this,j.a,j.b,j.c,0,1,2),b(this,j.a,j.b,j.d,0,1,3));var k=["a","b","c","d"];c=0;for(e=this.faces.length;c<e;c++){j=this.faces[c];for(f=0;f<j.vertexNormals.length;f++)S.copy(j.vertexNormals[f]),g=j[k[f]],H=G[g],Z.copy(H),Z.subSelf(S.multiplyScalar(S.dot(H))).normalize(),K.cross(j.vertexNormals[f],H),g=K.dot(U[g]),g=g<0?-1:1,j.vertexTangents[f]=new THREE.Vector4(Z.x,Z.y,Z.z,g)}this.hasTangents=!0},computeBoundingBox:function(){var b;
|
|
|
if(this.vertices.length>0){this.boundingBox={x:[this.vertices[0].position.x,this.vertices[0].position.x],y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var c=1,e=this.vertices.length;c<e;c++){b=this.vertices[c];if(b.position.x<this.boundingBox.x[0])this.boundingBox.x[0]=b.position.x;else if(b.position.x>this.boundingBox.x[1])this.boundingBox.x[1]=b.position.x;if(b.position.y<this.boundingBox.y[0])this.boundingBox.y[0]=b.position.y;
|
|
|
else if(b.position.y>this.boundingBox.y[1])this.boundingBox.y[1]=b.position.y;if(b.position.z<this.boundingBox.z[0])this.boundingBox.z[0]=b.position.z;else if(b.position.z>this.boundingBox.z[1])this.boundingBox.z[1]=b.position.z}}},computeBoundingSphere:function(){for(var b=0,c=0,e=this.vertices.length;c<e;c++)b=Math.max(b,this.vertices[c].position.length());this.boundingSphere={radius:b}},computeEdgeFaces:function(){function b(b,e){return Math.min(b,e)+"_"+Math.max(b,e)}function c(b,e,c){b[e]===
|
|
|
void 0?(b[e]={set:{},array:[]},b[e].set[c]=1,b[e].array.push(c)):b[e].set[c]===void 0&&(b[e].set[c]=1,b[e].array.push(c))}var e,f,g,j,h,m={};e=0;for(f=this.faces.length;e<f;e++)h=this.faces[e],h instanceof THREE.Face3?(g=b(h.a,h.b),c(m,g,e),g=b(h.b,h.c),c(m,g,e),g=b(h.a,h.c),c(m,g,e)):h instanceof THREE.Face4&&(g=b(h.b,h.d),c(m,g,e),g=b(h.a,h.b),c(m,g,e),g=b(h.a,h.d),c(m,g,e),g=b(h.b,h.c),c(m,g,e),g=b(h.c,h.d),c(m,g,e));e=0;for(f=this.edges.length;e<f;e++){h=this.edges[e];g=h.vertexIndices[0];j=h.vertexIndices[1];
|
|
@@ -123,12 +123,12 @@ THREE.Ribbon.prototype=new THREE.Object3D;THREE.Ribbon.prototype.constructor=THR
|
|
|
THREE.LOD.prototype.update=function(b,c,e){this.matrixAutoUpdate&&(c|=this.updateMatrix());if(c||this.matrixWorldNeedsUpdate)b?this.matrixWorld.multiply(b,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,c=!0;if(this.LODs.length>1){b=e.matrixWorldInverse;b=-(b.n31*this.position.x+b.n32*this.position.y+b.n33*this.position.z+b.n34);this.LODs[0].object3D.visible=!0;for(var f=1;f<this.LODs.length;f++)if(b>=this.LODs[f].visibleAtDistance)this.LODs[f-1].object3D.visible=!1,
|
|
|
this.LODs[f].object3D.visible=!0;else break;for(;f<this.LODs.length;f++)this.LODs[f].object3D.visible=!1}for(b=0;b<this.children.length;b++)this.children[b].update(this.matrixWorld,c,e)};THREE.ShadowVolume=function(b,c){b instanceof THREE.Mesh?(THREE.Mesh.call(this,b.geometry,c?[new THREE.ShadowVolumeDynamicMaterial]:[new THREE.ShadowVolumeDynamicMaterial]),b.addChild(this)):THREE.Mesh.call(this,b,c?[new THREE.ShadowVolumeDynamicMaterial]:[new THREE.ShadowVolumeDynamicMaterial]);this.calculateShadowVolumeGeometry()};
|
|
|
THREE.ShadowVolume.prototype=new THREE.Mesh;THREE.ShadowVolume.prototype.constructor=THREE.ShadowVolume;THREE.ShadowVolume.prototype.supr=THREE.Mesh.prototype;
|
|
|
-THREE.ShadowVolume.prototype.calculateShadowVolumeGeometry=function(){if(this.geometry.edges&&this.geometry.edges.length){var b,c,e,f,g,j,h,m,n,p,o,t,u,v,x=new THREE.Geometry;x.vertices=this.geometry.vertices;f=x.faces=this.geometry.faces;var w=x.egdes=this.geometry.edges,B=x.edgeFaces=[];g=0;var y=[];b=0;for(c=f.length;b<c;b++)if(e=f[b],y.push(g),g+=e instanceof THREE.Face3?3:4,e.vertexNormals[0]=e.normal,e.vertexNormals[1]=e.normal,e.vertexNormals[2]=e.normal,e instanceof THREE.Face4)e.vertexNormals[3]=
|
|
|
-e.normal;b=0;for(c=w.length;b<c;b++)m=w[b],e=m.faces[0],f=m.faces[1],g=m.faceIndices[0],j=m.faceIndices[1],h=m.vertexIndices[0],m=m.vertexIndices[1],e.a===h?(n="a",o=y[g]+0):e.b===h?(n="b",o=y[g]+1):e.c===h?(n="c",o=y[g]+2):e.d===h&&(n="d",o=y[g]+3),e.a===m?(n+="a",t=y[g]+0):e.b===m?(n+="b",t=y[g]+1):e.c===m?(n+="c",t=y[g]+2):e.d===m&&(n+="d",t=y[g]+3),f.a===h?(p="a",u=y[j]+0):f.b===h?(p="b",u=y[j]+1):f.c===h?(p="c",u=y[j]+2):f.d===h&&(p="d",u=y[j]+3),f.a===m?(p+="a",v=y[j]+0):f.b===m?(p+="b",v=y[j]+
|
|
|
-1):f.c===m?(p+="c",v=y[j]+2):f.d===m&&(p+="d",v=y[j]+3),n==="ac"||n==="ad"||n==="ca"||n==="da"?o>t&&(e=o,o=t,t=e):o<t&&(e=o,o=t,t=e),p==="ac"||p==="ad"||p==="ca"||p==="da"?u>v&&(e=u,u=v,v=e):u<v&&(e=u,u=v,v=e),e=new THREE.Face4(o,t,u,v),e.normal.set(1,0,0),B.push(e);this.geometry=x}else this.calculateShadowVolumeGeometryWithoutEdgeInfo(this.geometry)};
|
|
|
+THREE.ShadowVolume.prototype.calculateShadowVolumeGeometry=function(){if(this.geometry.edges&&this.geometry.edges.length){var b,c,e,f,g,j,h,m,n,p,o,t,u,v,x=new THREE.Geometry;x.vertices=this.geometry.vertices;f=x.faces=this.geometry.faces;var w=x.egdes=this.geometry.edges,y=x.edgeFaces=[];g=0;var C=[];b=0;for(c=f.length;b<c;b++)if(e=f[b],C.push(g),g+=e instanceof THREE.Face3?3:4,e.vertexNormals[0]=e.normal,e.vertexNormals[1]=e.normal,e.vertexNormals[2]=e.normal,e instanceof THREE.Face4)e.vertexNormals[3]=
|
|
|
+e.normal;b=0;for(c=w.length;b<c;b++)m=w[b],e=m.faces[0],f=m.faces[1],g=m.faceIndices[0],j=m.faceIndices[1],h=m.vertexIndices[0],m=m.vertexIndices[1],e.a===h?(n="a",o=C[g]+0):e.b===h?(n="b",o=C[g]+1):e.c===h?(n="c",o=C[g]+2):e.d===h&&(n="d",o=C[g]+3),e.a===m?(n+="a",t=C[g]+0):e.b===m?(n+="b",t=C[g]+1):e.c===m?(n+="c",t=C[g]+2):e.d===m&&(n+="d",t=C[g]+3),f.a===h?(p="a",u=C[j]+0):f.b===h?(p="b",u=C[j]+1):f.c===h?(p="c",u=C[j]+2):f.d===h&&(p="d",u=C[j]+3),f.a===m?(p+="a",v=C[j]+0):f.b===m?(p+="b",v=C[j]+
|
|
|
+1):f.c===m?(p+="c",v=C[j]+2):f.d===m&&(p+="d",v=C[j]+3),n==="ac"||n==="ad"||n==="ca"||n==="da"?o>t&&(e=o,o=t,t=e):o<t&&(e=o,o=t,t=e),p==="ac"||p==="ad"||p==="ca"||p==="da"?u>v&&(e=u,u=v,v=e):u<v&&(e=u,u=v,v=e),e=new THREE.Face4(o,t,u,v),e.normal.set(1,0,0),y.push(e);this.geometry=x}else this.calculateShadowVolumeGeometryWithoutEdgeInfo(this.geometry)};
|
|
|
THREE.ShadowVolume.prototype.calculateShadowVolumeGeometryWithoutEdgeInfo=function(b){this.geometry=new THREE.Geometry;this.geometry.boundingSphere=b.boundingSphere;this.geometry.edgeFaces=[];var c=this.geometry.vertices,e=this.geometry.faces,f=this.geometry.edgeFaces,g=b.faces,b=b.vertices,j=g.length,h,m,n,p,o,t=["a","b","c","d"];for(n=0;n<j;n++){m=c.length;h=g[n];h instanceof THREE.Face4?(p=4,m=new THREE.Face4(m,m+1,m+2,m+3)):(p=3,m=new THREE.Face3(m,m+1,m+2));m.normal.copy(h.normal);e.push(m);
|
|
|
for(m=0;m<p;m++)o=b[h[t[m]]],c.push(new THREE.Vertex(o.position.clone()))}for(j=0;j<g.length-1;j++){b=e[j];for(h=j+1;h<g.length;h++)m=e[h],m=this.facesShareEdge(c,b,m),m!==void 0&&(m=new THREE.Face4(m.indices[0],m.indices[3],m.indices[2],m.indices[1]),m.normal.set(1,0,0),f.push(m))}};
|
|
|
-THREE.ShadowVolume.prototype.facesShareEdge=function(b,c,e){var f,g,j,h,m,n,p,o,t,u,v,x,w,B=0,y=["a","b","c","d"];f=c instanceof THREE.Face4?4:3;g=e instanceof THREE.Face4?4:3;for(x=0;x<f;x++){j=c[y[x]];m=b[j];for(w=0;w<g;w++)if(h=e[y[w]],n=b[h],Math.abs(m.position.x-n.position.x)<1.0E-4&&Math.abs(m.position.y-n.position.y)<1.0E-4&&Math.abs(m.position.z-n.position.z)<1.0E-4&&(B++,B===1&&(p=m,o=n,t=j,u=h,v=y[x]),B===2))return v+=y[x],v==="ad"||v==="ac"?{faces:[c,e],vertices:[p,o,n,m],indices:[t,u,
|
|
|
+THREE.ShadowVolume.prototype.facesShareEdge=function(b,c,e){var f,g,j,h,m,n,p,o,t,u,v,x,w,y=0,C=["a","b","c","d"];f=c instanceof THREE.Face4?4:3;g=e instanceof THREE.Face4?4:3;for(x=0;x<f;x++){j=c[C[x]];m=b[j];for(w=0;w<g;w++)if(h=e[C[w]],n=b[h],Math.abs(m.position.x-n.position.x)<1.0E-4&&Math.abs(m.position.y-n.position.y)<1.0E-4&&Math.abs(m.position.z-n.position.z)<1.0E-4&&(y++,y===1&&(p=m,o=n,t=j,u=h,v=C[x]),y===2))return v+=C[x],v==="ad"||v==="ac"?{faces:[c,e],vertices:[p,o,n,m],indices:[t,u,
|
|
|
h,j],vertexTypes:[1,2,2,1],extrudable:!0}:{faces:[c,e],vertices:[p,m,n,o],indices:[t,j,h,u],vertexTypes:[1,1,2,2],extrudable:!0}}};
|
|
|
THREE.Sprite=function(b){THREE.Object3D.call(this);if(b.material!==void 0)this.material=b.material,this.map=void 0,this.blending=material.blending;else if(b.map!==void 0)this.map=b.map instanceof THREE.Texture?b.map:THREE.ImageUtils.loadTexture(b.map),this.material=void 0,this.blending=b.blending!==void 0?b.blending:THREE.NormalBlending;this.useScreenCoordinates=b.useScreenCoordinates!==void 0?b.useScreenCoordinates:!0;this.mergeWith3D=b.mergeWith3D!==void 0?b.mergeWith3D:!this.useScreenCoordinates;
|
|
|
this.affectedByDistance=b.affectedByDistance!==void 0?b.affectedByDistance:!this.useScreenCoordinates;this.scaleByViewport=b.scaleByViewport!==void 0?b.scaleByViewport:!this.affectedByDistance;this.alignment=b.alignment instanceof THREE.Vector2?b.alignment:THREE.SpriteAlignment.center;this.rotation3d=this.rotation;this.rotation=0;this.opacity=1;this.uvOffset=new THREE.Vector2(0,0);this.uvScale=new THREE.Vector2(1,1)};THREE.Sprite.prototype=new THREE.Object3D;THREE.Sprite.prototype.constructor=THREE.Sprite;
|
|
@@ -138,56 +138,56 @@ THREE.Scene=function(){THREE.Object3D.call(this);this.matrixAutoUpdate=!1;this.c
|
|
|
THREE.Scene.prototype.addChildRecurse=function(b){if(b instanceof THREE.Light)this.lights.indexOf(b)===-1&&this.lights.push(b);else if(!(b instanceof THREE.Camera||b instanceof THREE.Bone)&&this.objects.indexOf(b)===-1)this.objects.push(b),this.__objectsAdded.push(b);for(var c=0;c<b.children.length;c++)this.addChildRecurse(b.children[c])};THREE.Scene.prototype.removeChild=function(b){this.supr.removeChild.call(this,b);this.removeChildRecurse(b)};
|
|
|
THREE.Scene.prototype.removeChildRecurse=function(b){if(b instanceof THREE.Light){var c=this.lights.indexOf(b);c!==-1&&this.lights.splice(c,1)}else b instanceof THREE.Camera||(c=this.objects.indexOf(b),c!==-1&&(this.objects.splice(c,1),this.__objectsRemoved.push(b)));for(c=0;c<b.children.length;c++)this.removeChildRecurse(b.children[c])};THREE.Scene.prototype.addObject=THREE.Scene.prototype.addChild;THREE.Scene.prototype.removeObject=THREE.Scene.prototype.removeChild;
|
|
|
THREE.Scene.prototype.addLight=THREE.Scene.prototype.addChild;THREE.Scene.prototype.removeLight=THREE.Scene.prototype.removeChild;THREE.Fog=function(b,c,e){this.color=new THREE.Color(b);this.near=c||1;this.far=e||1E3};THREE.FogExp2=function(b,c){this.color=new THREE.Color(b);this.density=c!==void 0?c:2.5E-4};
|
|
|
-THREE.Projector=function(){function b(){var b=n[m]=n[m]||new THREE.RenderableVertex;m++;return b}function c(b,e){return e.z-b.z}function e(b,e){var c=0,f=1,h=b.z+b.w,g=e.z+e.w,j=-b.z+b.w,m=-e.z+e.w;return h>=0&&g>=0&&j>=0&&m>=0?!0:h<0&&g<0||j<0&&m<0?!1:(h<0?c=Math.max(c,h/(h-g)):g<0&&(f=Math.min(f,h/(h-g))),j<0?c=Math.max(c,j/(j-m)):m<0&&(f=Math.min(f,j/(j-m))),f<c?!1:(b.lerpSelf(e,c),e.lerpSelf(b,1-f),!0))}var f,g,j=[],h,m,n=[],p,o,t=[],u,v=[],x,w,B=[],y,F,C=[],E=new THREE.Vector4,G=new THREE.Vector4,
|
|
|
-A=new THREE.Matrix4,P=new THREE.Matrix4,I=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],H=new THREE.Vector4,T=new THREE.Vector4;this.projectVector=function(b,e){A.multiply(e.projectionMatrix,e.matrixWorldInverse);A.multiplyVector3(b);return b};this.unprojectVector=function(b,e){A.multiply(e.matrixWorld,THREE.Matrix4.makeInvert(e.projectionMatrix));A.multiplyVector3(b);return b};this.projectObjects=function(b,e,h){var e=[],m,n,k;g=0;n=
|
|
|
-b.objects;b=0;for(m=n.length;b<m;b++){k=n[b];var p;if(!(p=!k.visible))if(p=k instanceof THREE.Mesh){a:{p=void 0;for(var o=k.matrixWorld,t=-k.geometry.boundingSphere.radius*Math.max(k.scale.x,Math.max(k.scale.y,k.scale.z)),u=0;u<6;u++)if(p=I[u].x*o.n14+I[u].y*o.n24+I[u].z*o.n34+I[u].w,p<=t){p=!1;break a}p=!0}p=!p}if(!p)p=j[g]=j[g]||new THREE.RenderableObject,g++,f=p,E.copy(k.position),A.multiplyVector3(E),f.object=k,f.z=E.z,e.push(f)}h&&e.sort(c);return e};this.projectScene=function(f,g,j){var E=[],
|
|
|
-S=g.near,k=g.far,V,O,fa,ea,W,da,ga,ka,pa,R,ha,$,ma,aa,ia,X,na;F=w=u=o=0;g.matrixAutoUpdate&&g.update(void 0,!0);f.update(void 0,!1,g);A.multiply(g.projectionMatrix,g.matrixWorldInverse);I[0].set(A.n41-A.n11,A.n42-A.n12,A.n43-A.n13,A.n44-A.n14);I[1].set(A.n41+A.n11,A.n42+A.n12,A.n43+A.n13,A.n44+A.n14);I[2].set(A.n41+A.n21,A.n42+A.n22,A.n43+A.n23,A.n44+A.n24);I[3].set(A.n41-A.n21,A.n42-A.n22,A.n43-A.n23,A.n44-A.n24);I[4].set(A.n41-A.n31,A.n42-A.n32,A.n43-A.n33,A.n44-A.n34);I[5].set(A.n41+A.n31,A.n42+
|
|
|
-A.n32,A.n43+A.n33,A.n44+A.n34);for(V=0;V<6;V++)pa=I[V],pa.divideScalar(Math.sqrt(pa.x*pa.x+pa.y*pa.y+pa.z*pa.z));pa=this.projectObjects(f,g,!0);f=0;for(V=pa.length;f<V;f++)if(R=pa[f].object,R.visible)if(ha=R.matrixWorld,$=R.matrixRotationWorld,ma=R.materials,aa=R.overdraw,m=0,R instanceof THREE.Mesh){ia=R.geometry;ea=ia.vertices;X=ia.faces;ia=ia.faceVertexUvs;O=0;for(fa=ea.length;O<fa;O++)h=b(),h.positionWorld.copy(ea[O].position),ha.multiplyVector3(h.positionWorld),h.positionScreen.copy(h.positionWorld),
|
|
|
-A.multiplyVector4(h.positionScreen),h.positionScreen.x/=h.positionScreen.w,h.positionScreen.y/=h.positionScreen.w,h.visible=h.positionScreen.z>S&&h.positionScreen.z<k;ea=0;for(O=X.length;ea<O;ea++){fa=X[ea];if(fa instanceof THREE.Face3)if(W=n[fa.a],da=n[fa.b],ga=n[fa.c],W.visible&&da.visible&&ga.visible&&(R.doubleSided||R.flipSided!=(ga.positionScreen.x-W.positionScreen.x)*(da.positionScreen.y-W.positionScreen.y)-(ga.positionScreen.y-W.positionScreen.y)*(da.positionScreen.x-W.positionScreen.x)<0))ka=
|
|
|
-t[o]=t[o]||new THREE.RenderableFace3,o++,p=ka,p.v1.copy(W),p.v2.copy(da),p.v3.copy(ga);else continue;else if(fa instanceof THREE.Face4)if(W=n[fa.a],da=n[fa.b],ga=n[fa.c],ka=n[fa.d],W.visible&&da.visible&&ga.visible&&ka.visible&&(R.doubleSided||R.flipSided!=((ka.positionScreen.x-W.positionScreen.x)*(da.positionScreen.y-W.positionScreen.y)-(ka.positionScreen.y-W.positionScreen.y)*(da.positionScreen.x-W.positionScreen.x)<0||(da.positionScreen.x-ga.positionScreen.x)*(ka.positionScreen.y-ga.positionScreen.y)-
|
|
|
-(da.positionScreen.y-ga.positionScreen.y)*(ka.positionScreen.x-ga.positionScreen.x)<0)))na=v[u]=v[u]||new THREE.RenderableFace4,u++,p=na,p.v1.copy(W),p.v2.copy(da),p.v3.copy(ga),p.v4.copy(ka);else continue;p.normalWorld.copy(fa.normal);$.multiplyVector3(p.normalWorld);p.centroidWorld.copy(fa.centroid);ha.multiplyVector3(p.centroidWorld);p.centroidScreen.copy(p.centroidWorld);A.multiplyVector3(p.centroidScreen);ga=fa.vertexNormals;W=0;for(da=ga.length;W<da;W++)ka=p.vertexNormalsWorld[W],ka.copy(ga[W]),
|
|
|
-$.multiplyVector3(ka);W=0;for(da=ia.length;W<da;W++)if(na=ia[W][ea]){ga=0;for(ka=na.length;ga<ka;ga++)p.uvs[W][ga]=na[ga]}p.meshMaterials=ma;p.faceMaterials=fa.materials;p.overdraw=aa;p.z=p.centroidScreen.z;E.push(p)}}else if(R instanceof THREE.Line){P.multiply(A,ha);ea=R.geometry.vertices;W=b();W.positionScreen.copy(ea[0].position);P.multiplyVector4(W.positionScreen);O=1;for(fa=ea.length;O<fa;O++)if(W=b(),W.positionScreen.copy(ea[O].position),P.multiplyVector4(W.positionScreen),da=n[m-2],H.copy(W.positionScreen),
|
|
|
-T.copy(da.positionScreen),e(H,T))H.multiplyScalar(1/H.w),T.multiplyScalar(1/T.w),ha=B[w]=B[w]||new THREE.RenderableLine,w++,x=ha,x.v1.positionScreen.copy(H),x.v2.positionScreen.copy(T),x.z=Math.max(H.z,T.z),x.materials=R.materials,E.push(x)}else if(R instanceof THREE.Particle&&(G.set(R.matrixWorld.n14,R.matrixWorld.n24,R.matrixWorld.n34,1),A.multiplyVector4(G),G.z/=G.w,G.z>0&&G.z<1))ha=C[F]=C[F]||new THREE.RenderableParticle,F++,y=ha,y.x=G.x/G.w,y.y=G.y/G.w,y.z=G.z,y.rotation=R.rotation.z,y.scale.x=
|
|
|
-R.scale.x*Math.abs(y.x-(G.x+g.projectionMatrix.n11)/(G.w+g.projectionMatrix.n14)),y.scale.y=R.scale.y*Math.abs(y.y-(G.y+g.projectionMatrix.n22)/(G.w+g.projectionMatrix.n24)),y.materials=R.materials,E.push(y);j&&E.sort(c);return E}};
|
|
|
+THREE.Projector=function(){function b(){var b=n[m]=n[m]||new THREE.RenderableVertex;m++;return b}function c(b,e){return e.z-b.z}function e(b,e){var c=0,f=1,h=b.z+b.w,g=e.z+e.w,j=-b.z+b.w,m=-e.z+e.w;return h>=0&&g>=0&&j>=0&&m>=0?!0:h<0&&g<0||j<0&&m<0?!1:(h<0?c=Math.max(c,h/(h-g)):g<0&&(f=Math.min(f,h/(h-g))),j<0?c=Math.max(c,j/(j-m)):m<0&&(f=Math.min(f,j/(j-m))),f<c?!1:(b.lerpSelf(e,c),e.lerpSelf(b,1-f),!0))}var f,g,j=[],h,m,n=[],p,o,t=[],u,v=[],x,w,y=[],C,E,B=[],I=new THREE.Vector4,F=new THREE.Vector4,
|
|
|
+A=new THREE.Matrix4,P=new THREE.Matrix4,H=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],G=new THREE.Vector4,U=new THREE.Vector4;this.projectVector=function(b,e){A.multiply(e.projectionMatrix,e.matrixWorldInverse);A.multiplyVector3(b);return b};this.unprojectVector=function(b,e){A.multiply(e.matrixWorld,THREE.Matrix4.makeInvert(e.projectionMatrix));A.multiplyVector3(b);return b};this.projectObjects=function(b,e,h){var e=[],m,n,k;g=0;n=
|
|
|
+b.objects;b=0;for(m=n.length;b<m;b++){k=n[b];var p;if(!(p=!k.visible))if(p=k instanceof THREE.Mesh){a:{p=void 0;for(var o=k.matrixWorld,t=-k.geometry.boundingSphere.radius*Math.max(k.scale.x,Math.max(k.scale.y,k.scale.z)),u=0;u<6;u++)if(p=H[u].x*o.n14+H[u].y*o.n24+H[u].z*o.n34+H[u].w,p<=t){p=!1;break a}p=!0}p=!p}if(!p)p=j[g]=j[g]||new THREE.RenderableObject,g++,f=p,I.copy(k.position),A.multiplyVector3(I),f.object=k,f.z=I.z,e.push(f)}h&&e.sort(c);return e};this.projectScene=function(f,g,j){var I=[],
|
|
|
+S=g.near,k=g.far,W,O,ga,fa,X,ea,ha,ka,pa,R,ia,aa,ma,ca,T,Y,na;E=w=u=o=0;g.matrixAutoUpdate&&g.update(void 0,!0);f.update(void 0,!1,g);A.multiply(g.projectionMatrix,g.matrixWorldInverse);H[0].set(A.n41-A.n11,A.n42-A.n12,A.n43-A.n13,A.n44-A.n14);H[1].set(A.n41+A.n11,A.n42+A.n12,A.n43+A.n13,A.n44+A.n14);H[2].set(A.n41+A.n21,A.n42+A.n22,A.n43+A.n23,A.n44+A.n24);H[3].set(A.n41-A.n21,A.n42-A.n22,A.n43-A.n23,A.n44-A.n24);H[4].set(A.n41-A.n31,A.n42-A.n32,A.n43-A.n33,A.n44-A.n34);H[5].set(A.n41+A.n31,A.n42+
|
|
|
+A.n32,A.n43+A.n33,A.n44+A.n34);for(W=0;W<6;W++)pa=H[W],pa.divideScalar(Math.sqrt(pa.x*pa.x+pa.y*pa.y+pa.z*pa.z));pa=this.projectObjects(f,g,!0);f=0;for(W=pa.length;f<W;f++)if(R=pa[f].object,R.visible)if(ia=R.matrixWorld,aa=R.matrixRotationWorld,ma=R.materials,ca=R.overdraw,m=0,R instanceof THREE.Mesh){T=R.geometry;fa=T.vertices;Y=T.faces;T=T.faceVertexUvs;O=0;for(ga=fa.length;O<ga;O++)h=b(),h.positionWorld.copy(fa[O].position),ia.multiplyVector3(h.positionWorld),h.positionScreen.copy(h.positionWorld),
|
|
|
+A.multiplyVector4(h.positionScreen),h.positionScreen.x/=h.positionScreen.w,h.positionScreen.y/=h.positionScreen.w,h.visible=h.positionScreen.z>S&&h.positionScreen.z<k;fa=0;for(O=Y.length;fa<O;fa++){ga=Y[fa];if(ga instanceof THREE.Face3)if(X=n[ga.a],ea=n[ga.b],ha=n[ga.c],X.visible&&ea.visible&&ha.visible&&(R.doubleSided||R.flipSided!=(ha.positionScreen.x-X.positionScreen.x)*(ea.positionScreen.y-X.positionScreen.y)-(ha.positionScreen.y-X.positionScreen.y)*(ea.positionScreen.x-X.positionScreen.x)<0))ka=
|
|
|
+t[o]=t[o]||new THREE.RenderableFace3,o++,p=ka,p.v1.copy(X),p.v2.copy(ea),p.v3.copy(ha);else continue;else if(ga instanceof THREE.Face4)if(X=n[ga.a],ea=n[ga.b],ha=n[ga.c],ka=n[ga.d],X.visible&&ea.visible&&ha.visible&&ka.visible&&(R.doubleSided||R.flipSided!=((ka.positionScreen.x-X.positionScreen.x)*(ea.positionScreen.y-X.positionScreen.y)-(ka.positionScreen.y-X.positionScreen.y)*(ea.positionScreen.x-X.positionScreen.x)<0||(ea.positionScreen.x-ha.positionScreen.x)*(ka.positionScreen.y-ha.positionScreen.y)-
|
|
|
+(ea.positionScreen.y-ha.positionScreen.y)*(ka.positionScreen.x-ha.positionScreen.x)<0)))na=v[u]=v[u]||new THREE.RenderableFace4,u++,p=na,p.v1.copy(X),p.v2.copy(ea),p.v3.copy(ha),p.v4.copy(ka);else continue;p.normalWorld.copy(ga.normal);aa.multiplyVector3(p.normalWorld);p.centroidWorld.copy(ga.centroid);ia.multiplyVector3(p.centroidWorld);p.centroidScreen.copy(p.centroidWorld);A.multiplyVector3(p.centroidScreen);ha=ga.vertexNormals;X=0;for(ea=ha.length;X<ea;X++)ka=p.vertexNormalsWorld[X],ka.copy(ha[X]),
|
|
|
+aa.multiplyVector3(ka);X=0;for(ea=T.length;X<ea;X++)if(na=T[X][fa]){ha=0;for(ka=na.length;ha<ka;ha++)p.uvs[X][ha]=na[ha]}p.meshMaterials=ma;p.faceMaterials=ga.materials;p.overdraw=ca;p.z=p.centroidScreen.z;I.push(p)}}else if(R instanceof THREE.Line){P.multiply(A,ia);fa=R.geometry.vertices;X=b();X.positionScreen.copy(fa[0].position);P.multiplyVector4(X.positionScreen);O=1;for(ga=fa.length;O<ga;O++)if(X=b(),X.positionScreen.copy(fa[O].position),P.multiplyVector4(X.positionScreen),ea=n[m-2],G.copy(X.positionScreen),
|
|
|
+U.copy(ea.positionScreen),e(G,U))G.multiplyScalar(1/G.w),U.multiplyScalar(1/U.w),ia=y[w]=y[w]||new THREE.RenderableLine,w++,x=ia,x.v1.positionScreen.copy(G),x.v2.positionScreen.copy(U),x.z=Math.max(G.z,U.z),x.materials=R.materials,I.push(x)}else if(R instanceof THREE.Particle&&(F.set(R.matrixWorld.n14,R.matrixWorld.n24,R.matrixWorld.n34,1),A.multiplyVector4(F),F.z/=F.w,F.z>0&&F.z<1))ia=B[E]=B[E]||new THREE.RenderableParticle,E++,C=ia,C.x=F.x/F.w,C.y=F.y/F.w,C.z=F.z,C.rotation=R.rotation.z,C.scale.x=
|
|
|
+R.scale.x*Math.abs(C.x-(F.x+g.projectionMatrix.n11)/(F.w+g.projectionMatrix.n14)),C.scale.y=R.scale.y*Math.abs(C.y-(F.y+g.projectionMatrix.n22)/(F.w+g.projectionMatrix.n24)),C.materials=R.materials,I.push(C);j&&I.sort(c);return I}};
|
|
|
THREE.DOMRenderer=function(){THREE.Renderer.call(this);var b=null,c=new THREE.Projector,e,f,g,j;this.domElement=document.createElement("div");this.setSize=function(b,c){e=b;f=c;g=e/2;j=f/2};this.render=function(e,f){var n,p,o,t,u,v,x,w;b=c.projectScene(e,f);n=0;for(p=b.length;n<p;n++)if(u=b[n],u instanceof THREE.RenderableParticle){x=u.x*g+g;w=u.y*j+j;o=0;for(t=u.material.length;o<t;o++)if(v=u.material[o],v instanceof THREE.ParticleDOMMaterial)v=v.domElement,v.style.left=x+"px",v.style.top=w+"px"}}};
|
|
|
-THREE.CanvasRenderer=function(b){function c(b){if(y!=b)x.globalAlpha=y=b}function e(b){if(F!=b){switch(b){case THREE.NormalBlending:x.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:x.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:x.globalCompositeOperation="darker"}F=b}}function f(b){if(C!=b.hex)C=b.hex,x.strokeStyle="#"+j(C.toString(16))}function g(b){if(E!=b.hex)E=b.hex,x.fillStyle="#"+j(E.toString(16))}function j(b){for(;b.length<6;)b="0"+b;return b}
|
|
|
-var h=this,m=null,n=new THREE.Projector,b=b||{},p=b.canvas!==void 0?b.canvas:document.createElement("canvas"),o,t,u,v,x=p.getContext("2d"),w=new THREE.Color(0),B=0,y=1,F=0,C=null,E=null,G=null,A=null,P=null,I,H,T,U,J=new THREE.RenderableVertex,Y=new THREE.RenderableVertex,K,S,k,V,O,fa,ea,W,da,ga,ka,pa,R=new THREE.Color(0),ha=new THREE.Color(0),$=new THREE.Color(0),ma=new THREE.Color(0),aa=new THREE.Color(0),ia,X,na,la,oa,wa,Aa,va,ya,Ma,sa=new THREE.Rectangle,ra=new THREE.Rectangle,qa=new THREE.Rectangle,
|
|
|
-Ba=!1,ca=new THREE.Color,M=new THREE.Color,ua=new THREE.Color,Q=new THREE.Color,ja=new THREE.Vector3,Z,Pa,Va,xa,Qa,Ra,b=16;Z=document.createElement("canvas");Z.width=Z.height=2;Pa=Z.getContext("2d");Pa.fillStyle="rgba(0,0,0,1)";Pa.fillRect(0,0,2,2);Va=Pa.getImageData(0,0,2,2);xa=Va.data;Qa=document.createElement("canvas");Qa.width=Qa.height=b;Ra=Qa.getContext("2d");Ra.translate(-b/2,-b/2);Ra.scale(b,b);b--;this.domElement=p;this.sortElements=this.sortObjects=this.autoClear=!0;this.data={vertices:0,
|
|
|
-faces:0};this.setSize=function(b,e){o=b;t=e;u=o/2;v=t/2;p.width=o;p.height=t;sa.set(-u,-v,u,v);ra.set(-u,-v,u,v);y=1;F=0;P=A=G=E=C=null};this.setClearColor=function(b,e){w=b;B=e;ra.set(-u,-v,u,v)};this.setClearColorHex=function(b,e){w.setHex(b);B=e;ra.set(-u,-v,u,v)};this.clear=function(){x.setTransform(1,0,0,-1,u,v);if(!ra.isEmpty())ra.inflate(1),ra.minSelf(sa),w.hex==0&&B==0?x.clearRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight()):(e(THREE.NormalBlending),c(1),x.fillStyle="rgba("+Math.floor(w.r*
|
|
|
-255)+","+Math.floor(w.g*255)+","+Math.floor(w.b*255)+","+B+")",x.fillRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight())),ra.empty()};this.render=function(b,j){function p(b){var e,c,f,h=b.lights;M.setRGB(0,0,0);ua.setRGB(0,0,0);Q.setRGB(0,0,0);b=0;for(e=h.length;b<e;b++)c=h[b],f=c.color,c instanceof THREE.AmbientLight?(M.r+=f.r,M.g+=f.g,M.b+=f.b):c instanceof THREE.DirectionalLight?(ua.r+=f.r,ua.g+=f.g,ua.b+=f.b):c instanceof THREE.PointLight&&(Q.r+=f.r,Q.g+=f.g,Q.b+=f.b)}function o(b,e,c,f){var h,
|
|
|
-g,j,k,m=b.lights,b=0;for(h=m.length;b<h;b++)g=m[b],j=g.color,g instanceof THREE.DirectionalLight?(k=c.dot(g.position),k<=0||(k*=g.intensity,f.r+=j.r*k,f.g+=j.g*k,f.b+=j.b*k)):g instanceof THREE.PointLight&&(k=c.dot(ja.sub(g.position,e).normalize()),k<=0||(k*=g.distance==0?1:1-Math.min(e.distanceTo(g.position)/g.distance,1),k!=0&&(k*=g.intensity,f.r+=j.r*k,f.g+=j.g*k,f.b+=j.b*k)))}function t(b,h,j){c(j.opacity);e(j.blending);var k,m,n,p,o,Z;if(j instanceof THREE.ParticleBasicMaterial){if(j.map)p=j.map.image,
|
|
|
-o=p.width>>1,Z=p.height>>1,j=h.scale.x*u,n=h.scale.y*v,k=j*o,m=n*Z,qa.set(b.x-k,b.y-m,b.x+k,b.y+m),sa.instersects(qa)&&(x.save(),x.translate(b.x,b.y),x.rotate(-h.rotation),x.scale(j,-n),x.translate(-o,-Z),x.drawImage(p,0,0),x.restore())}else j instanceof THREE.ParticleCanvasMaterial&&(k=h.scale.x*u,m=h.scale.y*v,qa.set(b.x-k,b.y-m,b.x+k,b.y+m),sa.instersects(qa)&&(f(j.color),g(j.color),x.save(),x.translate(b.x,b.y),x.rotate(-h.rotation),x.scale(k,m),j.program(x),x.restore()))}function w(b,h,g,j){c(j.opacity);
|
|
|
-e(j.blending);x.beginPath();x.moveTo(b.positionScreen.x,b.positionScreen.y);x.lineTo(h.positionScreen.x,h.positionScreen.y);x.closePath();if(j instanceof THREE.LineBasicMaterial){b=j.linewidth;if(G!=b)x.lineWidth=G=b;b=j.linecap;if(A!=b)x.lineCap=A=b;b=j.linejoin;if(P!=b)x.lineJoin=P=b;f(j.color);x.stroke();qa.inflate(j.linewidth*2)}}function y(b,f,g,m,n,p,Z,t,u){h.data.vertices+=3;h.data.faces++;c(t.opacity);e(t.blending);K=b.positionScreen.x;S=b.positionScreen.y;k=f.positionScreen.x;V=f.positionScreen.y;
|
|
|
-O=g.positionScreen.x;fa=g.positionScreen.y;C(K,S,k,V,O,fa);if(t instanceof THREE.MeshBasicMaterial)if(t.map)t.map.mapping instanceof THREE.UVMapping&&(la=Z.uvs[0],Ca(K,S,k,V,O,fa,t.map.image,la[m].u,la[m].v,la[n].u,la[n].v,la[p].u,la[p].v));else if(t.envMap){if(t.envMap.mapping instanceof THREE.SphericalReflectionMapping)b=j.matrixWorldInverse,ja.copy(Z.vertexNormalsWorld[0]),oa=(ja.x*b.n11+ja.y*b.n12+ja.z*b.n13)*0.5+0.5,wa=-(ja.x*b.n21+ja.y*b.n22+ja.z*b.n23)*0.5+0.5,ja.copy(Z.vertexNormalsWorld[1]),
|
|
|
-Aa=(ja.x*b.n11+ja.y*b.n12+ja.z*b.n13)*0.5+0.5,va=-(ja.x*b.n21+ja.y*b.n22+ja.z*b.n23)*0.5+0.5,ja.copy(Z.vertexNormalsWorld[2]),ya=(ja.x*b.n11+ja.y*b.n12+ja.z*b.n13)*0.5+0.5,Ma=-(ja.x*b.n21+ja.y*b.n22+ja.z*b.n23)*0.5+0.5,Ca(K,S,k,V,O,fa,t.envMap.image,oa,wa,Aa,va,ya,Ma)}else t.wireframe?E(t.color,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(t.color);else if(t instanceof THREE.MeshLambertMaterial)t.map&&!t.wireframe&&(t.map.mapping instanceof THREE.UVMapping&&(la=Z.uvs[0],Ca(K,S,k,
|
|
|
-V,O,fa,t.map.image,la[m].u,la[m].v,la[n].u,la[n].v,la[p].u,la[p].v)),e(THREE.SubtractiveBlending)),Ba?!t.wireframe&&t.shading==THREE.SmoothShading&&Z.vertexNormalsWorld.length==3?(ha.r=$.r=ma.r=M.r,ha.g=$.g=ma.g=M.g,ha.b=$.b=ma.b=M.b,o(u,Z.v1.positionWorld,Z.vertexNormalsWorld[0],ha),o(u,Z.v2.positionWorld,Z.vertexNormalsWorld[1],$),o(u,Z.v3.positionWorld,Z.vertexNormalsWorld[2],ma),aa.r=($.r+ma.r)*0.5,aa.g=($.g+ma.g)*0.5,aa.b=($.b+ma.b)*0.5,na=Sa(ha,$,ma,aa),Ca(K,S,k,V,O,fa,na,0,0,1,0,0,1)):(ca.r=
|
|
|
-M.r,ca.g=M.g,ca.b=M.b,o(u,Z.centroidWorld,Z.normalWorld,ca),R.r=Math.max(0,Math.min(t.color.r*ca.r,1)),R.g=Math.max(0,Math.min(t.color.g*ca.g,1)),R.b=Math.max(0,Math.min(t.color.b*ca.b,1)),R.updateHex(),t.wireframe?E(R,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(R)):t.wireframe?E(t.color,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(t.color);else if(t instanceof THREE.MeshDepthMaterial)ia=j.near,X=j.far,ha.r=ha.g=ha.b=1-Ia(b.positionScreen.z,ia,X),$.r=$.g=$.b=
|
|
|
-1-Ia(f.positionScreen.z,ia,X),ma.r=ma.g=ma.b=1-Ia(g.positionScreen.z,ia,X),aa.r=($.r+ma.r)*0.5,aa.g=($.g+ma.g)*0.5,aa.b=($.b+ma.b)*0.5,na=Sa(ha,$,ma,aa),Ca(K,S,k,V,O,fa,na,0,0,1,0,0,1);else if(t instanceof THREE.MeshNormalMaterial)R.r=Na(Z.normalWorld.x),R.g=Na(Z.normalWorld.y),R.b=Na(Z.normalWorld.z),R.updateHex(),t.wireframe?E(R,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(R)}function B(b,f,g,m,n,p,t,Z,u){h.data.vertices+=4;h.data.faces++;c(Z.opacity);e(Z.blending);if(Z.map||
|
|
|
-Z.envMap)y(b,f,m,0,1,3,t,Z,u),y(n,g,p,1,2,3,t,Z,u);else if(K=b.positionScreen.x,S=b.positionScreen.y,k=f.positionScreen.x,V=f.positionScreen.y,O=g.positionScreen.x,fa=g.positionScreen.y,ea=m.positionScreen.x,W=m.positionScreen.y,da=n.positionScreen.x,ga=n.positionScreen.y,ka=p.positionScreen.x,pa=p.positionScreen.y,Z instanceof THREE.MeshBasicMaterial)F(K,S,k,V,O,fa,ea,W),Z.wireframe?E(Z.color,Z.wireframeLinewidth,Z.wireframeLinecap,Z.wireframeLinejoin):Ea(Z.color);else if(Z instanceof THREE.MeshLambertMaterial)Ba?
|
|
|
-!Z.wireframe&&Z.shading==THREE.SmoothShading&&t.vertexNormalsWorld.length==4?(ha.r=$.r=ma.r=aa.r=M.r,ha.g=$.g=ma.g=aa.g=M.g,ha.b=$.b=ma.b=aa.b=M.b,o(u,t.v1.positionWorld,t.vertexNormalsWorld[0],ha),o(u,t.v2.positionWorld,t.vertexNormalsWorld[1],$),o(u,t.v4.positionWorld,t.vertexNormalsWorld[3],ma),o(u,t.v3.positionWorld,t.vertexNormalsWorld[2],aa),na=Sa(ha,$,ma,aa),C(K,S,k,V,ea,W),Ca(K,S,k,V,ea,W,na,0,0,1,0,0,1),C(da,ga,O,fa,ka,pa),Ca(da,ga,O,fa,ka,pa,na,1,0,1,1,0,1)):(ca.r=M.r,ca.g=M.g,ca.b=M.b,
|
|
|
-o(u,t.centroidWorld,t.normalWorld,ca),R.r=Math.max(0,Math.min(Z.color.r*ca.r,1)),R.g=Math.max(0,Math.min(Z.color.g*ca.g,1)),R.b=Math.max(0,Math.min(Z.color.b*ca.b,1)),R.updateHex(),F(K,S,k,V,O,fa,ea,W),Z.wireframe?E(R,Z.wireframeLinewidth,Z.wireframeLinecap,Z.wireframeLinejoin):Ea(R)):(F(K,S,k,V,O,fa,ea,W),Z.wireframe?E(Z.color,Z.wireframeLinewidth,Z.wireframeLinecap,Z.wireframeLinejoin):Ea(Z.color));else if(Z instanceof THREE.MeshNormalMaterial)R.r=Na(t.normalWorld.x),R.g=Na(t.normalWorld.y),R.b=
|
|
|
-Na(t.normalWorld.z),R.updateHex(),F(K,S,k,V,O,fa,ea,W),Z.wireframe?E(R,Z.wireframeLinewidth,Z.wireframeLinecap,Z.wireframeLinejoin):Ea(R);else if(Z instanceof THREE.MeshDepthMaterial)ia=j.near,X=j.far,ha.r=ha.g=ha.b=1-Ia(b.positionScreen.z,ia,X),$.r=$.g=$.b=1-Ia(f.positionScreen.z,ia,X),ma.r=ma.g=ma.b=1-Ia(m.positionScreen.z,ia,X),aa.r=aa.g=aa.b=1-Ia(g.positionScreen.z,ia,X),na=Sa(ha,$,ma,aa),C(K,S,k,V,ea,W),Ca(K,S,k,V,ea,W,na,0,0,1,0,0,1),C(da,ga,O,fa,ka,pa),Ca(da,ga,O,fa,ka,pa,na,1,0,1,1,0,1)}function C(b,
|
|
|
-e,c,f,h,g){x.beginPath();x.moveTo(b,e);x.lineTo(c,f);x.lineTo(h,g);x.lineTo(b,e);x.closePath()}function F(b,e,c,f,h,g,j,k){x.beginPath();x.moveTo(b,e);x.lineTo(c,f);x.lineTo(h,g);x.lineTo(j,k);x.lineTo(b,e);x.closePath()}function E(b,e,c,h){if(G!=e)x.lineWidth=G=e;if(A!=c)x.lineCap=A=c;if(P!=h)x.lineJoin=P=h;f(b);x.stroke();qa.inflate(e*2)}function Ea(b){g(b);x.fill()}function Ca(b,e,c,f,h,g,j,k,m,n,p,Z,t){var o,u;o=j.width-1;u=j.height-1;k*=o;m*=u;n*=o;p*=u;Z*=o;t*=u;c-=b;f-=e;h-=b;g-=e;n-=k;p-=
|
|
|
-m;Z-=k;t-=m;o=n*t-Z*p;if(!((o<0?-o:o)<1))u=1/o,o=(t*c-p*h)*u,p=(t*f-p*g)*u,c=(n*h-Z*c)*u,f=(n*g-Z*f)*u,b=b-o*k-c*m,e=e-p*k-f*m,x.save(),x.transform(o,p,c,f,b,e),x.clip(),x.drawImage(j,0,0),x.restore()}function Sa(b,e,c,f){var h=~~(b.r*255),g=~~(b.g*255),b=~~(b.b*255),j=~~(e.r*255),k=~~(e.g*255),e=~~(e.b*255),m=~~(c.r*255),n=~~(c.g*255),c=~~(c.b*255),p=~~(f.r*255),t=~~(f.g*255),f=~~(f.b*255);xa[0]=h<0?0:h>255?255:h;xa[1]=g<0?0:g>255?255:g;xa[2]=b<0?0:b>255?255:b;xa[4]=j<0?0:j>255?255:j;xa[5]=k<0?0:
|
|
|
-k>255?255:k;xa[6]=e<0?0:e>255?255:e;xa[8]=m<0?0:m>255?255:m;xa[9]=n<0?0:n>255?255:n;xa[10]=c<0?0:c>255?255:c;xa[12]=p<0?0:p>255?255:p;xa[13]=t<0?0:t>255?255:t;xa[14]=f<0?0:f>255?255:f;Pa.putImageData(Va,0,0);Ra.drawImage(Z,0,0);return Qa}function Ia(b,e,c){b=(b-e)/(c-e);return b*b*(3-2*b)}function Na(b){b=(b+1)*0.5;return b<0?0:b>1?1:b}function Fa(b,e){var c=e.x-b.x,f=e.y-b.y,h=c*c+f*f;h!=0&&(h=1/Math.sqrt(h),c*=h,f*=h,e.x+=c,e.y+=f,b.x-=c,b.y-=f)}var Ta,D,L,z,Ga,Oa,Ua,ta;this.autoClear?this.clear():
|
|
|
-x.setTransform(1,0,0,-1,u,v);h.data.vertices=0;h.data.faces=0;m=n.projectScene(b,j,this.sortElements);(Ba=b.lights.length>0)&&p(b);Ta=0;for(D=m.length;Ta<D;Ta++){L=m[Ta];qa.empty();if(L instanceof THREE.RenderableParticle){I=L;I.x*=u;I.y*=v;z=0;for(Ga=L.materials.length;z<Ga;)ta=L.materials[z++],ta.opacity!=0&&t(I,L,ta,b)}else if(L instanceof THREE.RenderableLine){if(I=L.v1,H=L.v2,I.positionScreen.x*=u,I.positionScreen.y*=v,H.positionScreen.x*=u,H.positionScreen.y*=v,qa.addPoint(I.positionScreen.x,
|
|
|
-I.positionScreen.y),qa.addPoint(H.positionScreen.x,H.positionScreen.y),sa.instersects(qa)){z=0;for(Ga=L.materials.length;z<Ga;)ta=L.materials[z++],ta.opacity!=0&&w(I,H,L,ta,b)}}else if(L instanceof THREE.RenderableFace3){if(I=L.v1,H=L.v2,T=L.v3,I.positionScreen.x*=u,I.positionScreen.y*=v,H.positionScreen.x*=u,H.positionScreen.y*=v,T.positionScreen.x*=u,T.positionScreen.y*=v,L.overdraw&&(Fa(I.positionScreen,H.positionScreen),Fa(H.positionScreen,T.positionScreen),Fa(T.positionScreen,I.positionScreen)),
|
|
|
-qa.add3Points(I.positionScreen.x,I.positionScreen.y,H.positionScreen.x,H.positionScreen.y,T.positionScreen.x,T.positionScreen.y),sa.instersects(qa)){z=0;for(Ga=L.meshMaterials.length;z<Ga;)if(ta=L.meshMaterials[z++],ta instanceof THREE.MeshFaceMaterial){Oa=0;for(Ua=L.faceMaterials.length;Oa<Ua;)(ta=L.faceMaterials[Oa++])&&ta.opacity!=0&&y(I,H,T,0,1,2,L,ta,b)}else ta.opacity!=0&&y(I,H,T,0,1,2,L,ta,b)}}else if(L instanceof THREE.RenderableFace4&&(I=L.v1,H=L.v2,T=L.v3,U=L.v4,I.positionScreen.x*=u,I.positionScreen.y*=
|
|
|
-v,H.positionScreen.x*=u,H.positionScreen.y*=v,T.positionScreen.x*=u,T.positionScreen.y*=v,U.positionScreen.x*=u,U.positionScreen.y*=v,J.positionScreen.copy(H.positionScreen),Y.positionScreen.copy(U.positionScreen),L.overdraw&&(Fa(I.positionScreen,H.positionScreen),Fa(H.positionScreen,U.positionScreen),Fa(U.positionScreen,I.positionScreen),Fa(T.positionScreen,J.positionScreen),Fa(T.positionScreen,Y.positionScreen)),qa.addPoint(I.positionScreen.x,I.positionScreen.y),qa.addPoint(H.positionScreen.x,H.positionScreen.y),
|
|
|
-qa.addPoint(T.positionScreen.x,T.positionScreen.y),qa.addPoint(U.positionScreen.x,U.positionScreen.y),sa.instersects(qa))){z=0;for(Ga=L.meshMaterials.length;z<Ga;)if(ta=L.meshMaterials[z++],ta instanceof THREE.MeshFaceMaterial){Oa=0;for(Ua=L.faceMaterials.length;Oa<Ua;)(ta=L.faceMaterials[Oa++])&&ta.opacity!=0&&B(I,H,T,U,J,Y,L,ta,b)}else ta.opacity!=0&&B(I,H,T,U,J,Y,L,ta,b)}ra.addRectangle(qa)}x.setTransform(1,0,0,1,0,0)}};
|
|
|
-THREE.SVGRenderer=function(){function b(b,e,c){var f,h,g,j;f=0;for(h=b.lights.length;f<h;f++)g=b.lights[f],g instanceof THREE.DirectionalLight?(j=e.normalWorld.dot(g.position)*g.intensity,j>0&&(c.r+=g.color.r*j,c.g+=g.color.g*j,c.b+=g.color.b*j)):g instanceof THREE.PointLight&&(U.sub(g.position,e.centroidWorld),U.normalize(),j=e.normalWorld.dot(U)*g.intensity,j>0&&(c.r+=g.color.r*j,c.g+=g.color.g*j,c.b+=g.color.b*j))}function c(e,c,k,m,n,t){h.data.vertices+=3;h.data.faces++;K=f(S++);K.setAttribute("d",
|
|
|
-"M "+e.positionScreen.x+" "+e.positionScreen.y+" L "+c.positionScreen.x+" "+c.positionScreen.y+" L "+k.positionScreen.x+","+k.positionScreen.y+"z");n instanceof THREE.MeshBasicMaterial?G.hex=n.color.hex:n instanceof THREE.MeshLambertMaterial?E?(A.r=P.r,A.g=P.g,A.b=P.b,b(t,m,A),G.r=Math.max(0,Math.min(n.color.r*A.r,1)),G.g=Math.max(0,Math.min(n.color.g*A.g,1)),G.b=Math.max(0,Math.min(n.color.b*A.b,1)),G.updateHex()):G.hex=n.color.hex:n instanceof THREE.MeshDepthMaterial?(T=1-n.__2near/(n.__farPlusNear-
|
|
|
-m.z*n.__farMinusNear),G.setRGB(T,T,T)):n instanceof THREE.MeshNormalMaterial&&G.setRGB(g(m.normalWorld.x),g(m.normalWorld.y),g(m.normalWorld.z));n.wireframe?K.setAttribute("style","fill: none; stroke: #"+j(G.hex.toString(16))+"; stroke-width: "+n.wireframeLinewidth+"; stroke-opacity: "+n.opacity+"; stroke-linecap: "+n.wireframeLinecap+"; stroke-linejoin: "+n.wireframeLinejoin):K.setAttribute("style","fill: #"+j(G.hex.toString(16))+"; fill-opacity: "+n.opacity);p.appendChild(K)}function e(e,c,k,m,
|
|
|
-n,t,o){h.data.vertices+=4;h.data.faces++;K=f(S++);K.setAttribute("d","M "+e.positionScreen.x+" "+e.positionScreen.y+" L "+c.positionScreen.x+" "+c.positionScreen.y+" L "+k.positionScreen.x+","+k.positionScreen.y+" L "+m.positionScreen.x+","+m.positionScreen.y+"z");t instanceof THREE.MeshBasicMaterial?G.hex=t.color.hex:t instanceof THREE.MeshLambertMaterial?E?(A.r=P.r,A.g=P.g,A.b=P.b,b(o,n,A),G.r=Math.max(0,Math.min(t.color.r*A.r,1)),G.g=Math.max(0,Math.min(t.color.g*A.g,1)),G.b=Math.max(0,Math.min(t.color.b*
|
|
|
-A.b,1)),G.updateHex()):G.hex=t.color.hex:t instanceof THREE.MeshDepthMaterial?(T=1-t.__2near/(t.__farPlusNear-n.z*t.__farMinusNear),G.setRGB(T,T,T)):t instanceof THREE.MeshNormalMaterial&&G.setRGB(g(n.normalWorld.x),g(n.normalWorld.y),g(n.normalWorld.z));t.wireframe?K.setAttribute("style","fill: none; stroke: #"+j(G.hex.toString(16))+"; stroke-width: "+t.wireframeLinewidth+"; stroke-opacity: "+t.opacity+"; stroke-linecap: "+t.wireframeLinecap+"; stroke-linejoin: "+t.wireframeLinejoin):K.setAttribute("style",
|
|
|
-"fill: #"+j(G.hex.toString(16))+"; fill-opacity: "+t.opacity);p.appendChild(K)}function f(b){J[b]==null&&(J[b]=document.createElementNS("http://www.w3.org/2000/svg","path"),V==0&&J[b].setAttribute("shape-rendering","crispEdges"));return J[b]}function g(b){b=(b+1)*0.5;return b<0?0:b>1?1:b}function j(b){for(;b.length<6;)b="0"+b;return b}var h=this,m=null,n=new THREE.Projector,p=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,t,u,v,x,w,B,y,F=new THREE.Rectangle,C=new THREE.Rectangle,E=
|
|
|
-!1,G=new THREE.Color(16777215),A=new THREE.Color(16777215),P=new THREE.Color(0),I=new THREE.Color(0),H=new THREE.Color(0),T,U=new THREE.Vector3,J=[],Y=[],K,S,k,V=1;this.domElement=p;this.sortElements=this.sortObjects=this.autoClear=!0;this.data={vertices:0,faces:0};this.setQuality=function(b){switch(b){case "high":V=1;break;case "low":V=0}};this.setSize=function(b,e){o=b;t=e;u=o/2;v=t/2;p.setAttribute("viewBox",-u+" "+-v+" "+o+" "+t);p.setAttribute("width",o);p.setAttribute("height",t);F.set(-u,-v,
|
|
|
-u,v)};this.clear=function(){for(;p.childNodes.length>0;)p.removeChild(p.childNodes[0])};this.render=function(b,f){var g,t,o,A,G,T,R,J;this.autoClear&&this.clear();h.data.vertices=0;h.data.faces=0;m=n.projectScene(b,f,this.sortElements);k=S=0;if(E=b.lights.length>0){R=b.lights;P.setRGB(0,0,0);I.setRGB(0,0,0);H.setRGB(0,0,0);g=0;for(t=R.length;g<t;g++)o=R[g],A=o.color,o instanceof THREE.AmbientLight?(P.r+=A.r,P.g+=A.g,P.b+=A.b):o instanceof THREE.DirectionalLight?(I.r+=A.r,I.g+=A.g,I.b+=A.b):o instanceof
|
|
|
-THREE.PointLight&&(H.r+=A.r,H.g+=A.g,H.b+=A.b)}g=0;for(t=m.length;g<t;g++)if(R=m[g],C.empty(),R instanceof THREE.RenderableParticle){x=R;x.x*=u;x.y*=-v;o=0;for(A=R.materials.length;o<A;)o++}else if(R instanceof THREE.RenderableLine){if(x=R.v1,w=R.v2,x.positionScreen.x*=u,x.positionScreen.y*=-v,w.positionScreen.x*=u,w.positionScreen.y*=-v,C.addPoint(x.positionScreen.x,x.positionScreen.y),C.addPoint(w.positionScreen.x,w.positionScreen.y),F.instersects(C)){o=0;for(A=R.materials.length;o<A;)if((J=R.materials[o++])&&
|
|
|
-J.opacity!=0){G=x;T=w;var U=k++;Y[U]==null&&(Y[U]=document.createElementNS("http://www.w3.org/2000/svg","line"),V==0&&Y[U].setAttribute("shape-rendering","crispEdges"));K=Y[U];K.setAttribute("x1",G.positionScreen.x);K.setAttribute("y1",G.positionScreen.y);K.setAttribute("x2",T.positionScreen.x);K.setAttribute("y2",T.positionScreen.y);J instanceof THREE.LineBasicMaterial&&(K.setAttribute("style","fill: none; stroke: ##"+j(J.color.hex.toString(16))+"; stroke-width: "+J.linewidth+"; stroke-opacity: "+
|
|
|
-J.opacity+"; stroke-linecap: "+J.linecap+"; stroke-linejoin: "+J.linejoin),p.appendChild(K))}}}else if(R instanceof THREE.RenderableFace3){if(x=R.v1,w=R.v2,B=R.v3,x.positionScreen.x*=u,x.positionScreen.y*=-v,w.positionScreen.x*=u,w.positionScreen.y*=-v,B.positionScreen.x*=u,B.positionScreen.y*=-v,C.addPoint(x.positionScreen.x,x.positionScreen.y),C.addPoint(w.positionScreen.x,w.positionScreen.y),C.addPoint(B.positionScreen.x,B.positionScreen.y),F.instersects(C)){o=0;for(A=R.meshMaterials.length;o<
|
|
|
-A;)if(J=R.meshMaterials[o++],J instanceof THREE.MeshFaceMaterial){G=0;for(T=R.faceMaterials.length;G<T;)(J=R.faceMaterials[G++])&&J.opacity!=0&&c(x,w,B,R,J,b)}else J&&J.opacity!=0&&c(x,w,B,R,J,b)}}else if(R instanceof THREE.RenderableFace4&&(x=R.v1,w=R.v2,B=R.v3,y=R.v4,x.positionScreen.x*=u,x.positionScreen.y*=-v,w.positionScreen.x*=u,w.positionScreen.y*=-v,B.positionScreen.x*=u,B.positionScreen.y*=-v,y.positionScreen.x*=u,y.positionScreen.y*=-v,C.addPoint(x.positionScreen.x,x.positionScreen.y),C.addPoint(w.positionScreen.x,
|
|
|
-w.positionScreen.y),C.addPoint(B.positionScreen.x,B.positionScreen.y),C.addPoint(y.positionScreen.x,y.positionScreen.y),F.instersects(C))){o=0;for(A=R.meshMaterials.length;o<A;)if(J=R.meshMaterials[o++],J instanceof THREE.MeshFaceMaterial){G=0;for(T=R.faceMaterials.length;G<T;)(J=R.faceMaterials[G++])&&J.opacity!=0&&e(x,w,B,y,R,J,b)}else J&&J.opacity!=0&&e(x,w,B,y,R,J,b)}}};
|
|
|
+THREE.CanvasRenderer=function(b){function c(b){if(C!=b)x.globalAlpha=C=b}function e(b){if(E!=b){switch(b){case THREE.NormalBlending:x.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:x.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:x.globalCompositeOperation="darker"}E=b}}function f(b){if(B!=b.hex)B=b.hex,x.strokeStyle="#"+j(B.toString(16))}function g(b){if(I!=b.hex)I=b.hex,x.fillStyle="#"+j(I.toString(16))}function j(b){for(;b.length<6;)b="0"+b;return b}
|
|
|
+var h=this,m=null,n=new THREE.Projector,b=b||{},p=b.canvas!==void 0?b.canvas:document.createElement("canvas"),o,t,u,v,x=p.getContext("2d"),w=new THREE.Color(0),y=0,C=1,E=0,B=null,I=null,F=null,A=null,P=null,H,G,U,V,J=new THREE.RenderableVertex,Z=new THREE.RenderableVertex,K,S,k,W,O,ga,fa,X,ea,ha,ka,pa,R=new THREE.Color(0),ia=new THREE.Color(0),aa=new THREE.Color(0),ma=new THREE.Color(0),ca=new THREE.Color(0),T,Y,na,la,oa,wa,Aa,va,ya,Ma,sa=new THREE.Rectangle,ra=new THREE.Rectangle,qa=new THREE.Rectangle,
|
|
|
+Ba=!1,da=new THREE.Color,M=new THREE.Color,ua=new THREE.Color,Q=new THREE.Color,ja=new THREE.Vector3,$,Pa,Va,xa,Qa,Ra,b=16;$=document.createElement("canvas");$.width=$.height=2;Pa=$.getContext("2d");Pa.fillStyle="rgba(0,0,0,1)";Pa.fillRect(0,0,2,2);Va=Pa.getImageData(0,0,2,2);xa=Va.data;Qa=document.createElement("canvas");Qa.width=Qa.height=b;Ra=Qa.getContext("2d");Ra.translate(-b/2,-b/2);Ra.scale(b,b);b--;this.domElement=p;this.sortElements=this.sortObjects=this.autoClear=!0;this.data={vertices:0,
|
|
|
+faces:0};this.setSize=function(b,e){o=b;t=e;u=o/2;v=t/2;p.width=o;p.height=t;sa.set(-u,-v,u,v);ra.set(-u,-v,u,v);C=1;E=0;P=A=F=I=B=null};this.setClearColor=function(b,e){w=b;y=e;ra.set(-u,-v,u,v)};this.setClearColorHex=function(b,e){w.setHex(b);y=e;ra.set(-u,-v,u,v)};this.clear=function(){x.setTransform(1,0,0,-1,u,v);if(!ra.isEmpty())ra.inflate(1),ra.minSelf(sa),y==0?x.clearRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight()):(e(THREE.NormalBlending),c(1),I="rgba("+Math.floor(w.r*255)+","+Math.floor(w.g*
|
|
|
+255)+","+Math.floor(w.b*255)+","+y+")",x.fillStyle=I,x.fillRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight())),ra.empty()};this.render=function(b,j){function p(b){var e,c,f,h=b.lights;M.setRGB(0,0,0);ua.setRGB(0,0,0);Q.setRGB(0,0,0);b=0;for(e=h.length;b<e;b++)c=h[b],f=c.color,c instanceof THREE.AmbientLight?(M.r+=f.r,M.g+=f.g,M.b+=f.b):c instanceof THREE.DirectionalLight?(ua.r+=f.r,ua.g+=f.g,ua.b+=f.b):c instanceof THREE.PointLight&&(Q.r+=f.r,Q.g+=f.g,Q.b+=f.b)}function o(b,e,c,f){var h,g,j,k,
|
|
|
+m=b.lights,b=0;for(h=m.length;b<h;b++)g=m[b],j=g.color,g instanceof THREE.DirectionalLight?(k=c.dot(g.position),k<=0||(k*=g.intensity,f.r+=j.r*k,f.g+=j.g*k,f.b+=j.b*k)):g instanceof THREE.PointLight&&(k=c.dot(ja.sub(g.position,e).normalize()),k<=0||(k*=g.distance==0?1:1-Math.min(e.distanceTo(g.position)/g.distance,1),k!=0&&(k*=g.intensity,f.r+=j.r*k,f.g+=j.g*k,f.b+=j.b*k)))}function t(b,h,j){c(j.opacity);e(j.blending);var k,m,n,p,o,$;if(j instanceof THREE.ParticleBasicMaterial){if(j.map)p=j.map.image,
|
|
|
+o=p.width>>1,$=p.height>>1,j=h.scale.x*u,n=h.scale.y*v,k=j*o,m=n*$,qa.set(b.x-k,b.y-m,b.x+k,b.y+m),sa.instersects(qa)&&(x.save(),x.translate(b.x,b.y),x.rotate(-h.rotation),x.scale(j,-n),x.translate(-o,-$),x.drawImage(p,0,0),x.restore())}else j instanceof THREE.ParticleCanvasMaterial&&(k=h.scale.x*u,m=h.scale.y*v,qa.set(b.x-k,b.y-m,b.x+k,b.y+m),sa.instersects(qa)&&(f(j.color),g(j.color),x.save(),x.translate(b.x,b.y),x.rotate(-h.rotation),x.scale(k,m),j.program(x),x.restore()))}function C(b,h,g,j){c(j.opacity);
|
|
|
+e(j.blending);x.beginPath();x.moveTo(b.positionScreen.x,b.positionScreen.y);x.lineTo(h.positionScreen.x,h.positionScreen.y);x.closePath();if(j instanceof THREE.LineBasicMaterial){b=j.linewidth;if(F!=b)x.lineWidth=F=b;b=j.linecap;if(A!=b)x.lineCap=A=b;b=j.linejoin;if(P!=b)x.lineJoin=P=b;f(j.color);x.stroke();qa.inflate(j.linewidth*2)}}function w(b,f,g,m,n,p,$,t,u){h.data.vertices+=3;h.data.faces++;c(t.opacity);e(t.blending);K=b.positionScreen.x;S=b.positionScreen.y;k=f.positionScreen.x;W=f.positionScreen.y;
|
|
|
+O=g.positionScreen.x;ga=g.positionScreen.y;B(K,S,k,W,O,ga);if(t instanceof THREE.MeshBasicMaterial)if(t.map)t.map.mapping instanceof THREE.UVMapping&&(la=$.uvs[0],Ca(K,S,k,W,O,ga,t.map.image,la[m].u,la[m].v,la[n].u,la[n].v,la[p].u,la[p].v));else if(t.envMap){if(t.envMap.mapping instanceof THREE.SphericalReflectionMapping)b=j.matrixWorldInverse,ja.copy($.vertexNormalsWorld[0]),oa=(ja.x*b.n11+ja.y*b.n12+ja.z*b.n13)*0.5+0.5,wa=-(ja.x*b.n21+ja.y*b.n22+ja.z*b.n23)*0.5+0.5,ja.copy($.vertexNormalsWorld[1]),
|
|
|
+Aa=(ja.x*b.n11+ja.y*b.n12+ja.z*b.n13)*0.5+0.5,va=-(ja.x*b.n21+ja.y*b.n22+ja.z*b.n23)*0.5+0.5,ja.copy($.vertexNormalsWorld[2]),ya=(ja.x*b.n11+ja.y*b.n12+ja.z*b.n13)*0.5+0.5,Ma=-(ja.x*b.n21+ja.y*b.n22+ja.z*b.n23)*0.5+0.5,Ca(K,S,k,W,O,ga,t.envMap.image,oa,wa,Aa,va,ya,Ma)}else t.wireframe?I(t.color,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(t.color);else if(t instanceof THREE.MeshLambertMaterial)t.map&&!t.wireframe&&(t.map.mapping instanceof THREE.UVMapping&&(la=$.uvs[0],Ca(K,S,k,
|
|
|
+W,O,ga,t.map.image,la[m].u,la[m].v,la[n].u,la[n].v,la[p].u,la[p].v)),e(THREE.SubtractiveBlending)),Ba?!t.wireframe&&t.shading==THREE.SmoothShading&&$.vertexNormalsWorld.length==3?(ia.r=aa.r=ma.r=M.r,ia.g=aa.g=ma.g=M.g,ia.b=aa.b=ma.b=M.b,o(u,$.v1.positionWorld,$.vertexNormalsWorld[0],ia),o(u,$.v2.positionWorld,$.vertexNormalsWorld[1],aa),o(u,$.v3.positionWorld,$.vertexNormalsWorld[2],ma),ca.r=(aa.r+ma.r)*0.5,ca.g=(aa.g+ma.g)*0.5,ca.b=(aa.b+ma.b)*0.5,na=Sa(ia,aa,ma,ca),Ca(K,S,k,W,O,ga,na,0,0,1,0,0,
|
|
|
+1)):(da.r=M.r,da.g=M.g,da.b=M.b,o(u,$.centroidWorld,$.normalWorld,da),R.r=Math.max(0,Math.min(t.color.r*da.r,1)),R.g=Math.max(0,Math.min(t.color.g*da.g,1)),R.b=Math.max(0,Math.min(t.color.b*da.b,1)),R.updateHex(),t.wireframe?I(R,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(R)):t.wireframe?I(t.color,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(t.color);else if(t instanceof THREE.MeshDepthMaterial)T=j.near,Y=j.far,ia.r=ia.g=ia.b=1-Ia(b.positionScreen.z,T,Y),aa.r=
|
|
|
+aa.g=aa.b=1-Ia(f.positionScreen.z,T,Y),ma.r=ma.g=ma.b=1-Ia(g.positionScreen.z,T,Y),ca.r=(aa.r+ma.r)*0.5,ca.g=(aa.g+ma.g)*0.5,ca.b=(aa.b+ma.b)*0.5,na=Sa(ia,aa,ma,ca),Ca(K,S,k,W,O,ga,na,0,0,1,0,0,1);else if(t instanceof THREE.MeshNormalMaterial)R.r=Na($.normalWorld.x),R.g=Na($.normalWorld.y),R.b=Na($.normalWorld.z),R.updateHex(),t.wireframe?I(R,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(R)}function y(b,f,g,m,n,p,t,$,u){h.data.vertices+=4;h.data.faces++;c($.opacity);e($.blending);
|
|
|
+if($.map||$.envMap)w(b,f,m,0,1,3,t,$,u),w(n,g,p,1,2,3,t,$,u);else if(K=b.positionScreen.x,S=b.positionScreen.y,k=f.positionScreen.x,W=f.positionScreen.y,O=g.positionScreen.x,ga=g.positionScreen.y,fa=m.positionScreen.x,X=m.positionScreen.y,ea=n.positionScreen.x,ha=n.positionScreen.y,ka=p.positionScreen.x,pa=p.positionScreen.y,$ instanceof THREE.MeshBasicMaterial)E(K,S,k,W,O,ga,fa,X),$.wireframe?I($.color,$.wireframeLinewidth,$.wireframeLinecap,$.wireframeLinejoin):Ea($.color);else if($ instanceof THREE.MeshLambertMaterial)Ba?
|
|
|
+!$.wireframe&&$.shading==THREE.SmoothShading&&t.vertexNormalsWorld.length==4?(ia.r=aa.r=ma.r=ca.r=M.r,ia.g=aa.g=ma.g=ca.g=M.g,ia.b=aa.b=ma.b=ca.b=M.b,o(u,t.v1.positionWorld,t.vertexNormalsWorld[0],ia),o(u,t.v2.positionWorld,t.vertexNormalsWorld[1],aa),o(u,t.v4.positionWorld,t.vertexNormalsWorld[3],ma),o(u,t.v3.positionWorld,t.vertexNormalsWorld[2],ca),na=Sa(ia,aa,ma,ca),B(K,S,k,W,fa,X),Ca(K,S,k,W,fa,X,na,0,0,1,0,0,1),B(ea,ha,O,ga,ka,pa),Ca(ea,ha,O,ga,ka,pa,na,1,0,1,1,0,1)):(da.r=M.r,da.g=M.g,da.b=
|
|
|
+M.b,o(u,t.centroidWorld,t.normalWorld,da),R.r=Math.max(0,Math.min($.color.r*da.r,1)),R.g=Math.max(0,Math.min($.color.g*da.g,1)),R.b=Math.max(0,Math.min($.color.b*da.b,1)),R.updateHex(),E(K,S,k,W,O,ga,fa,X),$.wireframe?I(R,$.wireframeLinewidth,$.wireframeLinecap,$.wireframeLinejoin):Ea(R)):(E(K,S,k,W,O,ga,fa,X),$.wireframe?I($.color,$.wireframeLinewidth,$.wireframeLinecap,$.wireframeLinejoin):Ea($.color));else if($ instanceof THREE.MeshNormalMaterial)R.r=Na(t.normalWorld.x),R.g=Na(t.normalWorld.y),
|
|
|
+R.b=Na(t.normalWorld.z),R.updateHex(),E(K,S,k,W,O,ga,fa,X),$.wireframe?I(R,$.wireframeLinewidth,$.wireframeLinecap,$.wireframeLinejoin):Ea(R);else if($ instanceof THREE.MeshDepthMaterial)T=j.near,Y=j.far,ia.r=ia.g=ia.b=1-Ia(b.positionScreen.z,T,Y),aa.r=aa.g=aa.b=1-Ia(f.positionScreen.z,T,Y),ma.r=ma.g=ma.b=1-Ia(m.positionScreen.z,T,Y),ca.r=ca.g=ca.b=1-Ia(g.positionScreen.z,T,Y),na=Sa(ia,aa,ma,ca),B(K,S,k,W,fa,X),Ca(K,S,k,W,fa,X,na,0,0,1,0,0,1),B(ea,ha,O,ga,ka,pa),Ca(ea,ha,O,ga,ka,pa,na,1,0,1,1,0,1)}
|
|
|
+function B(b,e,c,f,h,g){x.beginPath();x.moveTo(b,e);x.lineTo(c,f);x.lineTo(h,g);x.lineTo(b,e);x.closePath()}function E(b,e,c,f,h,g,j,k){x.beginPath();x.moveTo(b,e);x.lineTo(c,f);x.lineTo(h,g);x.lineTo(j,k);x.lineTo(b,e);x.closePath()}function I(b,e,c,h){if(F!=e)x.lineWidth=F=e;if(A!=c)x.lineCap=A=c;if(P!=h)x.lineJoin=P=h;f(b);x.stroke();qa.inflate(e*2)}function Ea(b){g(b);x.fill()}function Ca(b,e,c,f,h,g,j,k,m,n,p,$,t){var o,u;o=j.width-1;u=j.height-1;k*=o;m*=u;n*=o;p*=u;$*=o;t*=u;c-=b;f-=e;h-=b;
|
|
|
+g-=e;n-=k;p-=m;$-=k;t-=m;o=n*t-$*p;if(!((o<0?-o:o)<1))u=1/o,o=(t*c-p*h)*u,p=(t*f-p*g)*u,c=(n*h-$*c)*u,f=(n*g-$*f)*u,b=b-o*k-c*m,e=e-p*k-f*m,x.save(),x.transform(o,p,c,f,b,e),x.clip(),x.drawImage(j,0,0),x.restore()}function Sa(b,e,c,f){var h=~~(b.r*255),g=~~(b.g*255),b=~~(b.b*255),j=~~(e.r*255),k=~~(e.g*255),e=~~(e.b*255),m=~~(c.r*255),n=~~(c.g*255),c=~~(c.b*255),p=~~(f.r*255),t=~~(f.g*255),f=~~(f.b*255);xa[0]=h<0?0:h>255?255:h;xa[1]=g<0?0:g>255?255:g;xa[2]=b<0?0:b>255?255:b;xa[4]=j<0?0:j>255?255:
|
|
|
+j;xa[5]=k<0?0:k>255?255:k;xa[6]=e<0?0:e>255?255:e;xa[8]=m<0?0:m>255?255:m;xa[9]=n<0?0:n>255?255:n;xa[10]=c<0?0:c>255?255:c;xa[12]=p<0?0:p>255?255:p;xa[13]=t<0?0:t>255?255:t;xa[14]=f<0?0:f>255?255:f;Pa.putImageData(Va,0,0);Ra.drawImage($,0,0);return Qa}function Ia(b,e,c){b=(b-e)/(c-e);return b*b*(3-2*b)}function Na(b){b=(b+1)*0.5;return b<0?0:b>1?1:b}function Fa(b,e){var c=e.x-b.x,f=e.y-b.y,h=c*c+f*f;h!=0&&(h=1/Math.sqrt(h),c*=h,f*=h,e.x+=c,e.y+=f,b.x-=c,b.y-=f)}var Ta,D,L,z,Ga,Oa,Ua,ta;this.autoClear?
|
|
|
+this.clear():x.setTransform(1,0,0,-1,u,v);h.data.vertices=0;h.data.faces=0;m=n.projectScene(b,j,this.sortElements);(Ba=b.lights.length>0)&&p(b);Ta=0;for(D=m.length;Ta<D;Ta++){L=m[Ta];qa.empty();if(L instanceof THREE.RenderableParticle){H=L;H.x*=u;H.y*=v;z=0;for(Ga=L.materials.length;z<Ga;)ta=L.materials[z++],ta.opacity!=0&&t(H,L,ta,b)}else if(L instanceof THREE.RenderableLine){if(H=L.v1,G=L.v2,H.positionScreen.x*=u,H.positionScreen.y*=v,G.positionScreen.x*=u,G.positionScreen.y*=v,qa.addPoint(H.positionScreen.x,
|
|
|
+H.positionScreen.y),qa.addPoint(G.positionScreen.x,G.positionScreen.y),sa.instersects(qa)){z=0;for(Ga=L.materials.length;z<Ga;)ta=L.materials[z++],ta.opacity!=0&&C(H,G,L,ta,b)}}else if(L instanceof THREE.RenderableFace3){if(H=L.v1,G=L.v2,U=L.v3,H.positionScreen.x*=u,H.positionScreen.y*=v,G.positionScreen.x*=u,G.positionScreen.y*=v,U.positionScreen.x*=u,U.positionScreen.y*=v,L.overdraw&&(Fa(H.positionScreen,G.positionScreen),Fa(G.positionScreen,U.positionScreen),Fa(U.positionScreen,H.positionScreen)),
|
|
|
+qa.add3Points(H.positionScreen.x,H.positionScreen.y,G.positionScreen.x,G.positionScreen.y,U.positionScreen.x,U.positionScreen.y),sa.instersects(qa)){z=0;for(Ga=L.meshMaterials.length;z<Ga;)if(ta=L.meshMaterials[z++],ta instanceof THREE.MeshFaceMaterial){Oa=0;for(Ua=L.faceMaterials.length;Oa<Ua;)(ta=L.faceMaterials[Oa++])&&ta.opacity!=0&&w(H,G,U,0,1,2,L,ta,b)}else ta.opacity!=0&&w(H,G,U,0,1,2,L,ta,b)}}else if(L instanceof THREE.RenderableFace4&&(H=L.v1,G=L.v2,U=L.v3,V=L.v4,H.positionScreen.x*=u,H.positionScreen.y*=
|
|
|
+v,G.positionScreen.x*=u,G.positionScreen.y*=v,U.positionScreen.x*=u,U.positionScreen.y*=v,V.positionScreen.x*=u,V.positionScreen.y*=v,J.positionScreen.copy(G.positionScreen),Z.positionScreen.copy(V.positionScreen),L.overdraw&&(Fa(H.positionScreen,G.positionScreen),Fa(G.positionScreen,V.positionScreen),Fa(V.positionScreen,H.positionScreen),Fa(U.positionScreen,J.positionScreen),Fa(U.positionScreen,Z.positionScreen)),qa.addPoint(H.positionScreen.x,H.positionScreen.y),qa.addPoint(G.positionScreen.x,G.positionScreen.y),
|
|
|
+qa.addPoint(U.positionScreen.x,U.positionScreen.y),qa.addPoint(V.positionScreen.x,V.positionScreen.y),sa.instersects(qa))){z=0;for(Ga=L.meshMaterials.length;z<Ga;)if(ta=L.meshMaterials[z++],ta instanceof THREE.MeshFaceMaterial){Oa=0;for(Ua=L.faceMaterials.length;Oa<Ua;)(ta=L.faceMaterials[Oa++])&&ta.opacity!=0&&y(H,G,U,V,J,Z,L,ta,b)}else ta.opacity!=0&&y(H,G,U,V,J,Z,L,ta,b)}ra.addRectangle(qa)}x.setTransform(1,0,0,1,0,0)}};
|
|
|
+THREE.SVGRenderer=function(){function b(b,e,c){var f,h,g,j;f=0;for(h=b.lights.length;f<h;f++)g=b.lights[f],g instanceof THREE.DirectionalLight?(j=e.normalWorld.dot(g.position)*g.intensity,j>0&&(c.r+=g.color.r*j,c.g+=g.color.g*j,c.b+=g.color.b*j)):g instanceof THREE.PointLight&&(V.sub(g.position,e.centroidWorld),V.normalize(),j=e.normalWorld.dot(V)*g.intensity,j>0&&(c.r+=g.color.r*j,c.g+=g.color.g*j,c.b+=g.color.b*j))}function c(e,c,k,m,n,t){h.data.vertices+=3;h.data.faces++;K=f(S++);K.setAttribute("d",
|
|
|
+"M "+e.positionScreen.x+" "+e.positionScreen.y+" L "+c.positionScreen.x+" "+c.positionScreen.y+" L "+k.positionScreen.x+","+k.positionScreen.y+"z");n instanceof THREE.MeshBasicMaterial?F.hex=n.color.hex:n instanceof THREE.MeshLambertMaterial?I?(A.r=P.r,A.g=P.g,A.b=P.b,b(t,m,A),F.r=Math.max(0,Math.min(n.color.r*A.r,1)),F.g=Math.max(0,Math.min(n.color.g*A.g,1)),F.b=Math.max(0,Math.min(n.color.b*A.b,1)),F.updateHex()):F.hex=n.color.hex:n instanceof THREE.MeshDepthMaterial?(U=1-n.__2near/(n.__farPlusNear-
|
|
|
+m.z*n.__farMinusNear),F.setRGB(U,U,U)):n instanceof THREE.MeshNormalMaterial&&F.setRGB(g(m.normalWorld.x),g(m.normalWorld.y),g(m.normalWorld.z));n.wireframe?K.setAttribute("style","fill: none; stroke: #"+j(F.hex.toString(16))+"; stroke-width: "+n.wireframeLinewidth+"; stroke-opacity: "+n.opacity+"; stroke-linecap: "+n.wireframeLinecap+"; stroke-linejoin: "+n.wireframeLinejoin):K.setAttribute("style","fill: #"+j(F.hex.toString(16))+"; fill-opacity: "+n.opacity);p.appendChild(K)}function e(e,c,k,m,
|
|
|
+n,t,o){h.data.vertices+=4;h.data.faces++;K=f(S++);K.setAttribute("d","M "+e.positionScreen.x+" "+e.positionScreen.y+" L "+c.positionScreen.x+" "+c.positionScreen.y+" L "+k.positionScreen.x+","+k.positionScreen.y+" L "+m.positionScreen.x+","+m.positionScreen.y+"z");t instanceof THREE.MeshBasicMaterial?F.hex=t.color.hex:t instanceof THREE.MeshLambertMaterial?I?(A.r=P.r,A.g=P.g,A.b=P.b,b(o,n,A),F.r=Math.max(0,Math.min(t.color.r*A.r,1)),F.g=Math.max(0,Math.min(t.color.g*A.g,1)),F.b=Math.max(0,Math.min(t.color.b*
|
|
|
+A.b,1)),F.updateHex()):F.hex=t.color.hex:t instanceof THREE.MeshDepthMaterial?(U=1-t.__2near/(t.__farPlusNear-n.z*t.__farMinusNear),F.setRGB(U,U,U)):t instanceof THREE.MeshNormalMaterial&&F.setRGB(g(n.normalWorld.x),g(n.normalWorld.y),g(n.normalWorld.z));t.wireframe?K.setAttribute("style","fill: none; stroke: #"+j(F.hex.toString(16))+"; stroke-width: "+t.wireframeLinewidth+"; stroke-opacity: "+t.opacity+"; stroke-linecap: "+t.wireframeLinecap+"; stroke-linejoin: "+t.wireframeLinejoin):K.setAttribute("style",
|
|
|
+"fill: #"+j(F.hex.toString(16))+"; fill-opacity: "+t.opacity);p.appendChild(K)}function f(b){J[b]==null&&(J[b]=document.createElementNS("http://www.w3.org/2000/svg","path"),W==0&&J[b].setAttribute("shape-rendering","crispEdges"));return J[b]}function g(b){b=(b+1)*0.5;return b<0?0:b>1?1:b}function j(b){for(;b.length<6;)b="0"+b;return b}var h=this,m=null,n=new THREE.Projector,p=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,t,u,v,x,w,y,C,E=new THREE.Rectangle,B=new THREE.Rectangle,I=
|
|
|
+!1,F=new THREE.Color(16777215),A=new THREE.Color(16777215),P=new THREE.Color(0),H=new THREE.Color(0),G=new THREE.Color(0),U,V=new THREE.Vector3,J=[],Z=[],K,S,k,W=1;this.domElement=p;this.sortElements=this.sortObjects=this.autoClear=!0;this.data={vertices:0,faces:0};this.setQuality=function(b){switch(b){case "high":W=1;break;case "low":W=0}};this.setSize=function(b,e){o=b;t=e;u=o/2;v=t/2;p.setAttribute("viewBox",-u+" "+-v+" "+o+" "+t);p.setAttribute("width",o);p.setAttribute("height",t);E.set(-u,-v,
|
|
|
+u,v)};this.clear=function(){for(;p.childNodes.length>0;)p.removeChild(p.childNodes[0])};this.render=function(b,f){var g,t,o,A,F,U,R,J;this.autoClear&&this.clear();h.data.vertices=0;h.data.faces=0;m=n.projectScene(b,f,this.sortElements);k=S=0;if(I=b.lights.length>0){R=b.lights;P.setRGB(0,0,0);H.setRGB(0,0,0);G.setRGB(0,0,0);g=0;for(t=R.length;g<t;g++)o=R[g],A=o.color,o instanceof THREE.AmbientLight?(P.r+=A.r,P.g+=A.g,P.b+=A.b):o instanceof THREE.DirectionalLight?(H.r+=A.r,H.g+=A.g,H.b+=A.b):o instanceof
|
|
|
+THREE.PointLight&&(G.r+=A.r,G.g+=A.g,G.b+=A.b)}g=0;for(t=m.length;g<t;g++)if(R=m[g],B.empty(),R instanceof THREE.RenderableParticle){x=R;x.x*=u;x.y*=-v;o=0;for(A=R.materials.length;o<A;)o++}else if(R instanceof THREE.RenderableLine){if(x=R.v1,w=R.v2,x.positionScreen.x*=u,x.positionScreen.y*=-v,w.positionScreen.x*=u,w.positionScreen.y*=-v,B.addPoint(x.positionScreen.x,x.positionScreen.y),B.addPoint(w.positionScreen.x,w.positionScreen.y),E.instersects(B)){o=0;for(A=R.materials.length;o<A;)if((J=R.materials[o++])&&
|
|
|
+J.opacity!=0){F=x;U=w;var V=k++;Z[V]==null&&(Z[V]=document.createElementNS("http://www.w3.org/2000/svg","line"),W==0&&Z[V].setAttribute("shape-rendering","crispEdges"));K=Z[V];K.setAttribute("x1",F.positionScreen.x);K.setAttribute("y1",F.positionScreen.y);K.setAttribute("x2",U.positionScreen.x);K.setAttribute("y2",U.positionScreen.y);J instanceof THREE.LineBasicMaterial&&(K.setAttribute("style","fill: none; stroke: ##"+j(J.color.hex.toString(16))+"; stroke-width: "+J.linewidth+"; stroke-opacity: "+
|
|
|
+J.opacity+"; stroke-linecap: "+J.linecap+"; stroke-linejoin: "+J.linejoin),p.appendChild(K))}}}else if(R instanceof THREE.RenderableFace3){if(x=R.v1,w=R.v2,y=R.v3,x.positionScreen.x*=u,x.positionScreen.y*=-v,w.positionScreen.x*=u,w.positionScreen.y*=-v,y.positionScreen.x*=u,y.positionScreen.y*=-v,B.addPoint(x.positionScreen.x,x.positionScreen.y),B.addPoint(w.positionScreen.x,w.positionScreen.y),B.addPoint(y.positionScreen.x,y.positionScreen.y),E.instersects(B)){o=0;for(A=R.meshMaterials.length;o<
|
|
|
+A;)if(J=R.meshMaterials[o++],J instanceof THREE.MeshFaceMaterial){F=0;for(U=R.faceMaterials.length;F<U;)(J=R.faceMaterials[F++])&&J.opacity!=0&&c(x,w,y,R,J,b)}else J&&J.opacity!=0&&c(x,w,y,R,J,b)}}else if(R instanceof THREE.RenderableFace4&&(x=R.v1,w=R.v2,y=R.v3,C=R.v4,x.positionScreen.x*=u,x.positionScreen.y*=-v,w.positionScreen.x*=u,w.positionScreen.y*=-v,y.positionScreen.x*=u,y.positionScreen.y*=-v,C.positionScreen.x*=u,C.positionScreen.y*=-v,B.addPoint(x.positionScreen.x,x.positionScreen.y),B.addPoint(w.positionScreen.x,
|
|
|
+w.positionScreen.y),B.addPoint(y.positionScreen.x,y.positionScreen.y),B.addPoint(C.positionScreen.x,C.positionScreen.y),E.instersects(B))){o=0;for(A=R.meshMaterials.length;o<A;)if(J=R.meshMaterials[o++],J instanceof THREE.MeshFaceMaterial){F=0;for(U=R.faceMaterials.length;F<U;)(J=R.faceMaterials[F++])&&J.opacity!=0&&e(x,w,y,C,R,J,b)}else J&&J.opacity!=0&&e(x,w,y,C,R,J,b)}}};
|
|
|
THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",
|
|
|
envmap_pars_fragment:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform int combine;\n#endif",envmap_fragment:"#ifdef USE_ENVMAP\nvec4 cubeColor = textureCube( envMap, vec3( -vReflect.x, vReflect.yz ) );\nif ( combine == 1 ) {\ngl_FragColor = vec4( mix( gl_FragColor.xyz, cubeColor.xyz, reflectivity ), opacity );\n} else {\ngl_FragColor = gl_FragColor * cubeColor;\n}\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",
|
|
|
envmap_vertex:"#ifdef USE_ENVMAP\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvec3 nWorld = mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal;\nif ( useRefract ) {\nvReflect = refract( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ), refractionRatio );\n} else {\nvReflect = reflect( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ) );\n}\n#endif",map_particle_pars_fragment:"#ifdef USE_MAP\nuniform sampler2D map;\n#endif",
|
|
@@ -219,18 +219,18 @@ THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.lightmap_fragment,THREE.ShaderC
|
|
|
THREE.ShaderChunk.morphtarget_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.color_vertex,"#ifndef USE_ENVMAP\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\n#endif\nvViewPosition = cameraPosition - mPosition.xyz;\nvec3 transformedNormal = normalize( normalMatrix * normal );\nvNormal = transformedNormal;",THREE.ShaderChunk.lights_vertex,
|
|
|
THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,"}"].join("\n")},particle_basic:{uniforms:THREE.UniformsLib.particle,fragmentShader:["uniform vec3 psColor;\nuniform float opacity;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_particle_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,"void main() {\ngl_FragColor = vec4( psColor, opacity );",THREE.ShaderChunk.map_particle_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.fog_fragment,
|
|
|
"}"].join("\n"),vertexShader:["uniform float size;\nuniform float scale;",THREE.ShaderChunk.color_pars_vertex,"void main() {",THREE.ShaderChunk.color_vertex,"vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n#ifdef USE_SIZEATTENUATION\ngl_PointSize = size * ( scale / length( mvPosition.xyz ) );\n#else\ngl_PointSize = size;\n#endif\ngl_Position = projectionMatrix * mvPosition;\n}"].join("\n")}};
|
|
|
-THREE.WebGLRenderer=function(b){function c(b,e,c){var f,h,g,j=b.vertices,m=j.length,n=b.colors,t=n.length,p=b.__vertexArray,o=b.__colorArray,u=b.__sortArray,v=b.__dirtyVertices,x=b.__dirtyColors,y=b.__webglCustomAttributes,w,B;if(y)for(w in y)y[w].offset=0;if(c.sortParticles){na.multiplySelf(c.matrixWorld);for(f=0;f<m;f++)h=j[f].position,wa.copy(h),na.multiplyVector3(wa),u[f]=[wa.z,f];u.sort(function(b,e){return e[0]-b[0]});for(f=0;f<m;f++)h=j[u[f][1]].position,g=f*3,p[g]=h.x,p[g+1]=h.y,p[g+2]=h.z;
|
|
|
-for(f=0;f<t;f++)g=f*3,color=n[u[f][1]],o[g]=color.r,o[g+1]=color.g,o[g+2]=color.b;if(y)for(w in y){f=y[w];n=f.value.length;for(g=0;g<n;g++){index=u[g][1];t=f.offset;if(f.size===1){if(f.boundTo===void 0||f.boundTo==="vertices")f.array[t]=f.value[index]}else{if(f.boundTo===void 0||f.boundTo==="vertices")B=f.value[index];f.size===2?(f.array[t]=B.x,f.array[t+1]=B.y):f.size===3?f.type==="c"?(f.array[t]=B.r,f.array[t+1]=B.g,f.array[t+2]=B.b):(f.array[t]=B.x,f.array[t+1]=B.y,f.array[t+2]=B.z):(f.array[t]=
|
|
|
-B.x,f.array[t+1]=B.y,f.array[t+2]=B.z,f.array[t+3]=B.w)}f.offset+=f.size}}}else{if(v)for(f=0;f<m;f++)h=j[f].position,g=f*3,p[g]=h.x,p[g+1]=h.y,p[g+2]=h.z;if(x)for(f=0;f<t;f++)color=n[f],g=f*3,o[g]=color.r,o[g+1]=color.g,o[g+2]=color.b;if(y)for(w in y)if(f=y[w],f.__original.needsUpdate){n=f.value.length;for(g=0;g<n;g++){t=f.offset;if(f.size===1){if(f.boundTo===void 0||f.boundTo==="vertices")f.array[t]=f.value[g]}else{if(f.boundTo===void 0||f.boundTo==="vertices")B=f.value[g];f.size===2?(f.array[t]=
|
|
|
-B.x,f.array[t+1]=B.y):f.size===3?f.type==="c"?(f.array[t]=B.r,f.array[t+1]=B.g,f.array[t+2]=B.b):(f.array[t]=B.x,f.array[t+1]=B.y,f.array[t+2]=B.z):(f.array[t]=B.x,f.array[t+1]=B.y,f.array[t+2]=B.z,f.array[t+3]=B.w)}f.offset+=f.size}}}if(v||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,b.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,p,e);if(x||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,b.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,o,e);if(y)for(w in y)if(f=y[w],f.__original.needsUpdate||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
+THREE.WebGLRenderer=function(b){function c(b,e,c){var f,h,g,j=b.vertices,m=j.length,n=b.colors,t=n.length,p=b.__vertexArray,o=b.__colorArray,u=b.__sortArray,v=b.__dirtyVertices,x=b.__dirtyColors,w=b.__webglCustomAttributes,C,y;if(w)for(C in w)w[C].offset=0;if(c.sortParticles){na.multiplySelf(c.matrixWorld);for(f=0;f<m;f++)h=j[f].position,wa.copy(h),na.multiplyVector3(wa),u[f]=[wa.z,f];u.sort(function(b,e){return e[0]-b[0]});for(f=0;f<m;f++)h=j[u[f][1]].position,g=f*3,p[g]=h.x,p[g+1]=h.y,p[g+2]=h.z;
|
|
|
+for(f=0;f<t;f++)g=f*3,color=n[u[f][1]],o[g]=color.r,o[g+1]=color.g,o[g+2]=color.b;if(w)for(C in w){f=w[C];n=f.value.length;for(g=0;g<n;g++){index=u[g][1];t=f.offset;if(f.size===1){if(f.boundTo===void 0||f.boundTo==="vertices")f.array[t]=f.value[index]}else{if(f.boundTo===void 0||f.boundTo==="vertices")y=f.value[index];f.size===2?(f.array[t]=y.x,f.array[t+1]=y.y):f.size===3?f.type==="c"?(f.array[t]=y.r,f.array[t+1]=y.g,f.array[t+2]=y.b):(f.array[t]=y.x,f.array[t+1]=y.y,f.array[t+2]=y.z):(f.array[t]=
|
|
|
+y.x,f.array[t+1]=y.y,f.array[t+2]=y.z,f.array[t+3]=y.w)}f.offset+=f.size}}}else{if(v)for(f=0;f<m;f++)h=j[f].position,g=f*3,p[g]=h.x,p[g+1]=h.y,p[g+2]=h.z;if(x)for(f=0;f<t;f++)color=n[f],g=f*3,o[g]=color.r,o[g+1]=color.g,o[g+2]=color.b;if(w)for(C in w)if(f=w[C],f.__original.needsUpdate){n=f.value.length;for(g=0;g<n;g++){t=f.offset;if(f.size===1){if(f.boundTo===void 0||f.boundTo==="vertices")f.array[t]=f.value[g]}else{if(f.boundTo===void 0||f.boundTo==="vertices")y=f.value[g];f.size===2?(f.array[t]=
|
|
|
+y.x,f.array[t+1]=y.y):f.size===3?f.type==="c"?(f.array[t]=y.r,f.array[t+1]=y.g,f.array[t+2]=y.b):(f.array[t]=y.x,f.array[t+1]=y.y,f.array[t+2]=y.z):(f.array[t]=y.x,f.array[t+1]=y.y,f.array[t+2]=y.z,f.array[t+3]=y.w)}f.offset+=f.size}}}if(v||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,b.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,p,e);if(x||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,b.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,o,e);if(w)for(C in w)if(f=w[C],f.__original.needsUpdate||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
f.buffer),k.bufferData(k.ARRAY_BUFFER,f.array,e)}function e(b,e,c,f,g){f.program||S.initMaterial(f,e,c,g);var h=f.program,j=h.uniforms,m=f.uniforms;h!=O&&(k.useProgram(h),O=h);k.uniformMatrix4fv(j.projectionMatrix,!1,la);if(c&&(f instanceof THREE.MeshBasicMaterial||f instanceof THREE.MeshLambertMaterial||f instanceof THREE.MeshPhongMaterial||f instanceof THREE.LineBasicMaterial||f instanceof THREE.ParticleBasicMaterial||f.fog))if(m.fogColor.value=c.color,c instanceof THREE.Fog)m.fogNear.value=c.near,
|
|
|
-m.fogFar.value=c.far;else if(c instanceof THREE.FogExp2)m.fogDensity.value=c.density;if(f instanceof THREE.MeshPhongMaterial||f instanceof THREE.MeshLambertMaterial||f.lights){var t,n,p=0,o=0,u=0,v,x,y,w,B=Aa,C=B.directional.colors,A=B.directional.positions,F=B.point.colors,G=B.point.positions,E=B.point.distances,ia=0,D=0,c=n=w=0;for(t=e.length;c<t;c++)if(n=e[c],v=n.color,x=n.position,y=n.intensity,w=n.distance,n instanceof THREE.AmbientLight)p+=v.r,o+=v.g,u+=v.b;else if(n instanceof THREE.DirectionalLight)w=
|
|
|
-ia*3,C[w]=v.r*y,C[w+1]=v.g*y,C[w+2]=v.b*y,A[w]=x.x,A[w+1]=x.y,A[w+2]=x.z,ia+=1;else if(n instanceof THREE.PointLight)n=D*3,F[n]=v.r*y,F[n+1]=v.g*y,F[n+2]=v.b*y,G[n]=x.x,G[n+1]=x.y,G[n+2]=x.z,E[D]=w,D+=1;for(c=ia*3;c<C.length;c++)C[c]=0;for(c=D*3;c<F.length;c++)F[c]=0;B.point.length=D;B.directional.length=ia;B.ambient[0]=p;B.ambient[1]=o;B.ambient[2]=u;c=Aa;m.enableLighting.value=c.directional.length+c.point.length;m.ambientLightColor.value=c.ambient;m.directionalLightColor.value=c.directional.colors;
|
|
|
+m.fogFar.value=c.far;else if(c instanceof THREE.FogExp2)m.fogDensity.value=c.density;if(f instanceof THREE.MeshPhongMaterial||f instanceof THREE.MeshLambertMaterial||f.lights){var t,n,p=0,o=0,u=0,v,x,w,y,C=Aa,B=C.directional.colors,A=C.directional.positions,E=C.point.colors,F=C.point.positions,I=C.point.distances,T=0,D=0,c=n=y=0;for(t=e.length;c<t;c++)if(n=e[c],v=n.color,x=n.position,w=n.intensity,y=n.distance,n instanceof THREE.AmbientLight)p+=v.r,o+=v.g,u+=v.b;else if(n instanceof THREE.DirectionalLight)y=
|
|
|
+T*3,B[y]=v.r*w,B[y+1]=v.g*w,B[y+2]=v.b*w,A[y]=x.x,A[y+1]=x.y,A[y+2]=x.z,T+=1;else if(n instanceof THREE.PointLight)n=D*3,E[n]=v.r*w,E[n+1]=v.g*w,E[n+2]=v.b*w,F[n]=x.x,F[n+1]=x.y,F[n+2]=x.z,I[D]=y,D+=1;for(c=T*3;c<B.length;c++)B[c]=0;for(c=D*3;c<E.length;c++)E[c]=0;C.point.length=D;C.directional.length=T;C.ambient[0]=p;C.ambient[1]=o;C.ambient[2]=u;c=Aa;m.enableLighting.value=c.directional.length+c.point.length;m.ambientLightColor.value=c.ambient;m.directionalLightColor.value=c.directional.colors;
|
|
|
m.directionalLightDirection.value=c.directional.positions;m.pointLightColor.value=c.point.colors;m.pointLightPosition.value=c.point.positions;m.pointLightDistance.value=c.point.distances}if(f instanceof THREE.MeshBasicMaterial||f instanceof THREE.MeshLambertMaterial||f instanceof THREE.MeshPhongMaterial)m.diffuse.value=f.color,m.opacity.value=f.opacity,(m.map.texture=f.map)&&m.offsetRepeat.value.set(f.map.offset.x,f.map.offset.y,f.map.repeat.x,f.map.repeat.y),m.lightMap.texture=f.lightMap,m.envMap.texture=
|
|
|
f.envMap,m.reflectivity.value=f.reflectivity,m.refractionRatio.value=f.refractionRatio,m.combine.value=f.combine,m.useRefract.value=f.envMap&&f.envMap.mapping instanceof THREE.CubeRefractionMapping;if(f instanceof THREE.LineBasicMaterial)m.diffuse.value=f.color,m.opacity.value=f.opacity;else if(f instanceof THREE.ParticleBasicMaterial)m.psColor.value=f.color,m.opacity.value=f.opacity,m.size.value=f.size,m.scale.value=va.height/2,m.map.texture=f.map;else if(f instanceof THREE.MeshPhongMaterial)m.ambient.value=
|
|
|
f.ambient,m.specular.value=f.specular,m.shininess.value=f.shininess;else if(f instanceof THREE.MeshDepthMaterial)m.mNear.value=b.near,m.mFar.value=b.far,m.opacity.value=f.opacity;else if(f instanceof THREE.MeshNormalMaterial)m.opacity.value=f.opacity;for(var L in m)if(o=h.uniforms[L])if(t=m[L],p=t.type,c=t.value,p=="i")k.uniform1i(o,c);else if(p=="f")k.uniform1f(o,c);else if(p=="fv1")k.uniform1fv(o,c);else if(p=="fv")k.uniform3fv(o,c);else if(p=="v2")k.uniform2f(o,c.x,c.y);else if(p=="v3")k.uniform3f(o,
|
|
|
c.x,c.y,c.z);else if(p=="v4")k.uniform4f(o,c.x,c.y,c.z,c.w);else if(p=="m4"){if(!t._array)t._array=new Float32Array(16);c.flattenToArray(t._array);k.uniformMatrix4fv(o,!1,t._array)}else if(p=="c")k.uniform3f(o,c.r,c.g,c.b);else if(p=="t"&&(k.uniform1i(o,c),t=t.texture))if(t.image instanceof Array&&t.image.length==6){if(t.image.length==6){if(t.needsUpdate){if(t.__webglInit){k.bindTexture(k.TEXTURE_CUBE_MAP,t.image.__webglTextureCube);for(p=0;p<6;++p)k.texSubImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+p,
|
|
|
-0,0,0,k.RGBA,k.UNSIGNED_BYTE,t.image[p])}else{t.image.__webglTextureCube=k.createTexture();k.bindTexture(k.TEXTURE_CUBE_MAP,t.image.__webglTextureCube);for(p=0;p<6;++p)k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+p,0,k.RGBA,k.RGBA,k.UNSIGNED_BYTE,t.image[p]);t.__webglInit=!0}H(k.TEXTURE_CUBE_MAP,t,t.image[0]);k.bindTexture(k.TEXTURE_CUBE_MAP,null);t.needsUpdate=!1}k.activeTexture(k.TEXTURE0+c);k.bindTexture(k.TEXTURE_CUBE_MAP,t.image.__webglTextureCube)}}else T(t,c);k.uniformMatrix4fv(j.modelViewMatrix,
|
|
|
+0,0,0,k.RGBA,k.UNSIGNED_BYTE,t.image[p])}else{t.image.__webglTextureCube=k.createTexture();k.bindTexture(k.TEXTURE_CUBE_MAP,t.image.__webglTextureCube);for(p=0;p<6;++p)k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+p,0,k.RGBA,k.RGBA,k.UNSIGNED_BYTE,t.image[p]);t.__webglInit=!0}G(k.TEXTURE_CUBE_MAP,t,t.image[0]);k.bindTexture(k.TEXTURE_CUBE_MAP,null);t.needsUpdate=!1}k.activeTexture(k.TEXTURE0+c);k.bindTexture(k.TEXTURE_CUBE_MAP,t.image.__webglTextureCube)}}else U(t,c);k.uniformMatrix4fv(j.modelViewMatrix,
|
|
|
!1,g._modelViewMatrixArray);k.uniformMatrix3fv(j.normalMatrix,!1,g._normalMatrixArray);(f instanceof THREE.MeshShaderMaterial||f instanceof THREE.MeshPhongMaterial||f.envMap)&&j.cameraPosition!==null&&k.uniform3f(j.cameraPosition,b.position.x,b.position.y,b.position.z);(f instanceof THREE.MeshShaderMaterial||f.envMap||f.skinning)&&j.objectMatrix!==null&&k.uniformMatrix4fv(j.objectMatrix,!1,g._objectMatrixArray);(f instanceof THREE.MeshPhongMaterial||f instanceof THREE.MeshLambertMaterial||f instanceof
|
|
|
THREE.MeshShaderMaterial||f.skinning)&&j.viewMatrix!==null&&k.uniformMatrix4fv(j.viewMatrix,!1,oa);if(f instanceof THREE.ShadowVolumeDynamicMaterial)b=m.directionalLightDirection.value,b[0]=-e[1].position.x,b[1]=-e[1].position.y,b[2]=-e[1].position.z,k.uniform3fv(j.directionalLightDirection,b),k.uniformMatrix4fv(j.objectMatrix,!1,g._objectMatrixArray),k.uniformMatrix4fv(j.viewMatrix,!1,oa);f.skinning&&(k.uniformMatrix4fv(j.cameraInverseMatrix,!1,oa),k.uniformMatrix4fv(j.boneGlobalMatrices,!1,g.boneMatrices));
|
|
|
return h}function f(b,c,f,g,h,j){if(g.opacity!=0){var m,b=e(b,c,f,g,j).attributes;if(!g.morphTargets&&b.position>=0)k.bindBuffer(k.ARRAY_BUFFER,h.__webglVertexBuffer),k.vertexAttribPointer(b.position,3,k.FLOAT,!1,0,0);else if(j.morphTargetBase){c=g.program.attributes;j.morphTargetBase!==-1?(k.bindBuffer(k.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[j.morphTargetBase]),k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0)):c.position>=0&&(k.bindBuffer(k.ARRAY_BUFFER,h.__webglVertexBuffer),k.vertexAttribPointer(c.position,
|
|
@@ -241,64 +241,64 @@ k.disableVertexAttribArray(b.uv));b.uv2>=0&&(h.__webglUV2Buffer?(k.bindBuffer(k.
|
|
|
4,k.FLOAT,!1,0,0),k.bindBuffer(k.ARRAY_BUFFER,h.__webglSkinIndicesBuffer),k.vertexAttribPointer(b.skinIndex,4,k.FLOAT,!1,0,0),k.bindBuffer(k.ARRAY_BUFFER,h.__webglSkinWeightsBuffer),k.vertexAttribPointer(b.skinWeight,4,k.FLOAT,!1,0,0));j instanceof THREE.Mesh?(g.wireframe?(k.lineWidth(g.wireframeLinewidth),k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,h.__webglLineBuffer),k.drawElements(k.LINES,h.__webglLineCount,k.UNSIGNED_SHORT,0)):(k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,h.__webglFaceBuffer),k.drawElements(k.TRIANGLES,
|
|
|
h.__webglFaceCount,k.UNSIGNED_SHORT,0)),S.data.vertices+=h.__webglFaceCount,S.data.faces+=h.__webglFaceCount/3,S.data.drawCalls++):j instanceof THREE.Line?(j=j.type==THREE.LineStrip?k.LINE_STRIP:k.LINES,k.lineWidth(g.linewidth),k.drawArrays(j,0,h.__webglLineCount),S.data.drawCalls++):j instanceof THREE.ParticleSystem?(k.drawArrays(k.POINTS,0,h.__webglParticleCount),S.data.drawCalls++):j instanceof THREE.Ribbon&&(k.drawArrays(k.TRIANGLE_STRIP,0,h.__webglVertexCount),S.data.drawCalls++)}}function g(b,
|
|
|
e,c){if(!b.__webglVertexBuffer)b.__webglVertexBuffer=k.createBuffer();if(!b.__webglNormalBuffer)b.__webglNormalBuffer=k.createBuffer();b.hasPos&&(k.bindBuffer(k.ARRAY_BUFFER,b.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,b.positionArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(e.attributes.position),k.vertexAttribPointer(e.attributes.position,3,k.FLOAT,!1,0,0));if(b.hasNormal){k.bindBuffer(k.ARRAY_BUFFER,b.__webglNormalBuffer);if(c==THREE.FlatShading){var f,h,g,j,m,t,n,p,o,u,v=b.count*3;for(u=
|
|
|
-0;u<v;u+=9)c=b.normalArray,f=c[u],h=c[u+1],g=c[u+2],j=c[u+3],t=c[u+4],p=c[u+5],m=c[u+6],n=c[u+7],o=c[u+8],f=(f+j+m)/3,h=(h+t+n)/3,g=(g+p+o)/3,c[u]=f,c[u+1]=h,c[u+2]=g,c[u+3]=f,c[u+4]=h,c[u+5]=g,c[u+6]=f,c[u+7]=h,c[u+8]=g}k.bufferData(k.ARRAY_BUFFER,b.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(e.attributes.normal);k.vertexAttribPointer(e.attributes.normal,3,k.FLOAT,!1,0,0)}k.drawArrays(k.TRIANGLES,0,b.count);b.count=0}function j(b){if(W!=b.doubleSided)b.doubleSided?k.disable(k.CULL_FACE):
|
|
|
-k.enable(k.CULL_FACE),W=b.doubleSided;if(da!=b.flipSided)b.flipSided?k.frontFace(k.CW):k.frontFace(k.CCW),da=b.flipSided}function h(b){ka!=b&&(b?k.enable(k.DEPTH_TEST):k.disable(k.DEPTH_TEST),ka=b)}function m(b,e,c){pa!=b&&(b?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL),pa=b);if(b&&(R!=e||ha!=c))k.polygonOffset(e,c),R=e,ha=c}function n(b){X[0].set(b.n41-b.n11,b.n42-b.n12,b.n43-b.n13,b.n44-b.n14);X[1].set(b.n41+b.n11,b.n42+b.n12,b.n43+b.n13,b.n44+b.n14);X[2].set(b.n41+b.n21,b.n42+
|
|
|
-b.n22,b.n43+b.n23,b.n44+b.n24);X[3].set(b.n41-b.n21,b.n42-b.n22,b.n43-b.n23,b.n44-b.n24);X[4].set(b.n41-b.n31,b.n42-b.n32,b.n43-b.n33,b.n44-b.n34);X[5].set(b.n41+b.n31,b.n42+b.n32,b.n43+b.n33,b.n44+b.n34);for(var e,b=0;b<6;b++)e=X[b],e.divideScalar(Math.sqrt(e.x*e.x+e.y*e.y+e.z*e.z))}function p(b){for(var e=b.matrixWorld,c=-b.geometry.boundingSphere.radius*Math.max(b.scale.x,Math.max(b.scale.y,b.scale.z)),f=0;f<6;f++)if(b=X[f].x*e.n14+X[f].y*e.n24+X[f].z*e.n34+X[f].w,b<=c)return!1;return!0}function o(b,
|
|
|
+0;u<v;u+=9)c=b.normalArray,f=c[u],h=c[u+1],g=c[u+2],j=c[u+3],t=c[u+4],p=c[u+5],m=c[u+6],n=c[u+7],o=c[u+8],f=(f+j+m)/3,h=(h+t+n)/3,g=(g+p+o)/3,c[u]=f,c[u+1]=h,c[u+2]=g,c[u+3]=f,c[u+4]=h,c[u+5]=g,c[u+6]=f,c[u+7]=h,c[u+8]=g}k.bufferData(k.ARRAY_BUFFER,b.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(e.attributes.normal);k.vertexAttribPointer(e.attributes.normal,3,k.FLOAT,!1,0,0)}k.drawArrays(k.TRIANGLES,0,b.count);b.count=0}function j(b){if(X!=b.doubleSided)b.doubleSided?k.disable(k.CULL_FACE):
|
|
|
+k.enable(k.CULL_FACE),X=b.doubleSided;if(ea!=b.flipSided)b.flipSided?k.frontFace(k.CW):k.frontFace(k.CCW),ea=b.flipSided}function h(b){ka!=b&&(b?k.enable(k.DEPTH_TEST):k.disable(k.DEPTH_TEST),ka=b)}function m(b,e,c){pa!=b&&(b?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL),pa=b);if(b&&(R!=e||ia!=c))k.polygonOffset(e,c),R=e,ia=c}function n(b){Y[0].set(b.n41-b.n11,b.n42-b.n12,b.n43-b.n13,b.n44-b.n14);Y[1].set(b.n41+b.n11,b.n42+b.n12,b.n43+b.n13,b.n44+b.n14);Y[2].set(b.n41+b.n21,b.n42+
|
|
|
+b.n22,b.n43+b.n23,b.n44+b.n24);Y[3].set(b.n41-b.n21,b.n42-b.n22,b.n43-b.n23,b.n44-b.n24);Y[4].set(b.n41-b.n31,b.n42-b.n32,b.n43-b.n33,b.n44-b.n34);Y[5].set(b.n41+b.n31,b.n42+b.n32,b.n43+b.n33,b.n44+b.n34);for(var e,b=0;b<6;b++)e=Y[b],e.divideScalar(Math.sqrt(e.x*e.x+e.y*e.y+e.z*e.z))}function p(b){for(var e=b.matrixWorld,c=-b.geometry.boundingSphere.radius*Math.max(b.scale.x,Math.max(b.scale.y,b.scale.z)),f=0;f<6;f++)if(b=Y[f].x*e.n14+Y[f].y*e.n24+Y[f].z*e.n34+Y[f].w,b<=c)return!1;return!0}function o(b,
|
|
|
e){b.list[b.count]=e;b.count+=1}function t(b){var e,c,f=b.object,h=b.opaque,g=b.transparent;g.count=0;b=h.count=0;for(e=f.materials.length;b<e;b++)c=f.materials[b],c.transparent?o(g,c):o(h,c)}function u(b){var e,c,f,h,g=b.object,j=b.buffer,k=b.opaque,m=b.transparent;m.count=0;b=k.count=0;for(f=g.materials.length;b<f;b++)if(e=g.materials[b],e instanceof THREE.MeshFaceMaterial){e=0;for(c=j.materials.length;e<c;e++)(h=j.materials[e])&&(h.transparent?o(m,h):o(k,h))}else(h=e)&&(h.transparent?o(m,h):o(k,
|
|
|
h))}function v(b,e){return e.z-b.z}function x(b){k.enable(k.POLYGON_OFFSET_FILL);k.polygonOffset(0.1,1);k.enable(k.STENCIL_TEST);k.enable(k.DEPTH_TEST);k.depthMask(!1);k.colorMask(!1,!1,!1,!1);k.stencilFunc(k.ALWAYS,1,255);k.stencilOpSeparate(k.BACK,k.KEEP,k.INCR,k.KEEP);k.stencilOpSeparate(k.FRONT,k.KEEP,k.DECR,k.KEEP);var e,c=b.lights.length,f,h=b.lights,g=[],j,m,t,n,p,o=b.__webglShadowVolumes.length;for(e=0;e<c;e++)if(f=b.lights[e],f instanceof THREE.DirectionalLight&&f.castShadow){g[0]=-f.position.x;
|
|
|
g[1]=-f.position.y;g[2]=-f.position.z;for(p=0;p<o;p++)f=b.__webglShadowVolumes[p].object,j=b.__webglShadowVolumes[p].buffer,m=f.materials[0],m.program||S.initMaterial(m,h,void 0,f),m=m.program,t=m.uniforms,n=m.attributes,O!==m&&(k.useProgram(m),O=m,k.uniformMatrix4fv(t.projectionMatrix,!1,la),k.uniformMatrix4fv(t.viewMatrix,!1,oa),k.uniform3fv(t.directionalLightDirection,g)),f.matrixWorld.flattenToArray(f._objectMatrixArray),k.uniformMatrix4fv(t.objectMatrix,!1,f._objectMatrixArray),k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
j.__webglVertexBuffer),k.vertexAttribPointer(n.position,3,k.FLOAT,!1,0,0),k.bindBuffer(k.ARRAY_BUFFER,j.__webglNormalBuffer),k.vertexAttribPointer(n.normal,3,k.FLOAT,!1,0,0),k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,j.__webglFaceBuffer),k.cullFace(k.FRONT),k.drawElements(k.TRIANGLES,j.__webglFaceCount,k.UNSIGNED_SHORT,0),k.cullFace(k.BACK),k.drawElements(k.TRIANGLES,j.__webglFaceCount,k.UNSIGNED_SHORT,0)}k.disable(k.POLYGON_OFFSET_FILL);k.colorMask(!0,!0,!0,!0);k.stencilFunc(k.NOTEQUAL,0,255);k.stencilOp(k.KEEP,
|
|
|
-k.KEEP,k.KEEP);k.disable(k.DEPTH_TEST);ka=ga=-1;O=ca.program;k.useProgram(ca.program);k.uniformMatrix4fv(ca.projectionLocation,!1,la);k.uniform1f(ca.darknessLocation,ca.darkness);k.bindBuffer(k.ARRAY_BUFFER,ca.vertexBuffer);k.vertexAttribPointer(ca.vertexLocation,3,k.FLOAT,!1,0,0);k.enableVertexAttribArray(ca.vertexLocation);k.blendFunc(k.ONE,k.ONE_MINUS_SRC_ALPHA);k.blendEquation(k.FUNC_ADD);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,ca.elementBuffer);k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0);k.disable(k.STENCIL_TEST);
|
|
|
-k.enable(k.DEPTH_TEST);k.depthMask(ea)}function w(b,e){var c,f,h;c=Q.attributes;var g=Q.uniforms,j=ia/aa,m,t=[],n=aa*0.5,p=ia*0.5,o=!0;k.useProgram(Q.program);O=Q.program;ka=ga=-1;ja||(k.enableVertexAttribArray(Q.attributes.position),k.enableVertexAttribArray(Q.attributes.uv),ja=!0);k.disable(k.CULL_FACE);k.enable(k.BLEND);k.depthMask(!0);k.bindBuffer(k.ARRAY_BUFFER,Q.vertexBuffer);k.vertexAttribPointer(c.position,2,k.FLOAT,!1,16,0);k.vertexAttribPointer(c.uv,2,k.FLOAT,!1,16,8);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,
|
|
|
+k.KEEP,k.KEEP);k.disable(k.DEPTH_TEST);ka=ha=-1;O=da.program;k.useProgram(da.program);k.uniformMatrix4fv(da.projectionLocation,!1,la);k.uniform1f(da.darknessLocation,da.darkness);k.bindBuffer(k.ARRAY_BUFFER,da.vertexBuffer);k.vertexAttribPointer(da.vertexLocation,3,k.FLOAT,!1,0,0);k.enableVertexAttribArray(da.vertexLocation);k.blendFunc(k.ONE,k.ONE_MINUS_SRC_ALPHA);k.blendEquation(k.FUNC_ADD);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,da.elementBuffer);k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0);k.disable(k.STENCIL_TEST);
|
|
|
+k.enable(k.DEPTH_TEST);k.depthMask(fa)}function w(b,e){var c,f,h;c=Q.attributes;var g=Q.uniforms,j=T/ca,m,t=[],n=ca*0.5,p=T*0.5,o=!0;k.useProgram(Q.program);O=Q.program;ka=ha=-1;ja||(k.enableVertexAttribArray(Q.attributes.position),k.enableVertexAttribArray(Q.attributes.uv),ja=!0);k.disable(k.CULL_FACE);k.enable(k.BLEND);k.depthMask(!0);k.bindBuffer(k.ARRAY_BUFFER,Q.vertexBuffer);k.vertexAttribPointer(c.position,2,k.FLOAT,!1,16,0);k.vertexAttribPointer(c.uv,2,k.FLOAT,!1,16,8);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,
|
|
|
Q.elementBuffer);k.uniformMatrix4fv(g.projectionMatrix,!1,la);k.activeTexture(k.TEXTURE0);k.uniform1i(g.map,0);c=0;for(f=b.__webglSprites.length;c<f;c++)h=b.__webglSprites[c],h.useScreenCoordinates?h.z=-h.position.z:(h._modelViewMatrix.multiplyToArray(e.matrixWorldInverse,h.matrixWorld,h._modelViewMatrixArray),h.z=-h._modelViewMatrix.n34);b.__webglSprites.sort(v);c=0;for(f=b.__webglSprites.length;c<f;c++)h=b.__webglSprites[c],h.material===void 0&&h.map&&h.map.image&&h.map.image.width&&(h.useScreenCoordinates?
|
|
|
-(k.uniform1i(g.useScreenCoordinates,1),k.uniform3f(g.screenPosition,(h.position.x-n)/n,(p-h.position.y)/p,Math.max(0,Math.min(1,h.position.z)))):(k.uniform1i(g.useScreenCoordinates,0),k.uniform1i(g.affectedByDistance,h.affectedByDistance?1:0),k.uniformMatrix4fv(g.modelViewMatrix,!1,h._modelViewMatrixArray)),m=h.map.image.width/(h.scaleByViewport?ia:1),t[0]=m*j*h.scale.x,t[1]=m*h.scale.y,k.uniform2f(g.uvScale,h.uvScale.x,h.uvScale.y),k.uniform2f(g.uvOffset,h.uvOffset.x,h.uvOffset.y),k.uniform2f(g.alignment,
|
|
|
-h.alignment.x,h.alignment.y),k.uniform1f(g.opacity,h.opacity),k.uniform1f(g.rotation,h.rotation),k.uniform2fv(g.scale,t),h.mergeWith3D&&!o?(k.enable(k.DEPTH_TEST),o=!0):!h.mergeWith3D&&o&&(k.disable(k.DEPTH_TEST),o=!1),I(h.blending),T(h.map,0),k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0));k.enable(k.CULL_FACE);k.enable(k.DEPTH_TEST);k.depthMask(ea)}function B(b,e){var c,f,h=b.__webglLensFlares.length,g,j,m,t=new THREE.Vector3,n=ia/aa,p=aa*0.5,o=ia*0.5,u=16/ia,v=[u*n,u],x=[1,1,0],y=[1,1],w=M.uniforms;
|
|
|
-c=M.attributes;k.useProgram(M.program);O=M.program;ka=ga=-1;ua||(k.enableVertexAttribArray(M.attributes.vertex),k.enableVertexAttribArray(M.attributes.uv),ua=!0);k.uniform1i(w.occlusionMap,0);k.uniform1i(w.map,1);k.bindBuffer(k.ARRAY_BUFFER,M.vertexBuffer);k.vertexAttribPointer(c.vertex,2,k.FLOAT,!1,16,0);k.vertexAttribPointer(c.uv,2,k.FLOAT,!1,16,8);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,M.elementBuffer);k.disable(k.CULL_FACE);k.depthMask(!1);k.activeTexture(k.TEXTURE0);k.bindTexture(k.TEXTURE_2D,M.occlusionTexture);
|
|
|
-k.activeTexture(k.TEXTURE1);for(f=0;f<h;f++)if(c=b.__webglLensFlares[f].object,t.set(c.matrixWorld.n14,c.matrixWorld.n24,c.matrixWorld.n34),e.matrixWorldInverse.multiplyVector3(t),e.projectionMatrix.multiplyVector3(t),x[0]=t.x,x[1]=t.y,x[2]=t.z,y[0]=x[0]*p+p,y[1]=x[1]*o+o,M.hasVertexTexture||y[0]>0&&y[0]<aa&&y[1]>0&&y[1]<ia){k.bindTexture(k.TEXTURE_2D,M.tempTexture);k.copyTexImage2D(k.TEXTURE_2D,0,k.RGB,y[0]-8,y[1]-8,16,16,0);k.uniform1i(w.renderType,0);k.uniform2fv(w.scale,v);k.uniform3fv(w.screenPosition,
|
|
|
-x);k.disable(k.BLEND);k.enable(k.DEPTH_TEST);k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0);k.bindTexture(k.TEXTURE_2D,M.occlusionTexture);k.copyTexImage2D(k.TEXTURE_2D,0,k.RGBA,y[0]-8,y[1]-8,16,16,0);k.uniform1i(w.renderType,1);k.disable(k.DEPTH_TEST);k.bindTexture(k.TEXTURE_2D,M.tempTexture);k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0);c.positionScreen.x=x[0];c.positionScreen.y=x[1];c.positionScreen.z=x[2];c.customUpdateCallback?c.customUpdateCallback(c):c.updateLensFlares();k.uniform1i(w.renderType,
|
|
|
-2);k.enable(k.BLEND);g=0;for(j=c.lensFlares.length;g<j;g++)if(m=c.lensFlares[g],m.opacity>0.0010&&m.scale>0.0010)x[0]=m.x,x[1]=m.y,x[2]=m.z,u=m.size*m.scale/ia,v[0]=u*n,v[1]=u,k.uniform3fv(w.screenPosition,x),k.uniform2fv(w.scale,v),k.uniform1f(w.rotation,m.rotation),k.uniform1f(w.opacity,m.opacity),I(m.blending),T(m.texture,1),k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0)}k.enable(k.CULL_FACE);k.enable(k.DEPTH_TEST);k.depthMask(ea)}function y(b,e){b._modelViewMatrix.multiplyToArray(e.matrixWorldInverse,
|
|
|
-b.matrixWorld,b._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(b._modelViewMatrix).transposeIntoArray(b._normalMatrixArray)}function F(b){var e,c,f,h;h=b.__materials;b=0;for(c=h.length;b<c;b++)if(f=h[b],f.attributes)for(e in f.attributes)if(f.attributes[e].needsUpdate)return!0;return!1}function C(b){var e,c,f,h;h=b.__materials;b=0;for(c=h.length;b<c;b++)if(f=h[b],f.attributes)for(e in f.attributes)f.attributes[e].needsUpdate=!1}function E(b){var e,f,h,g;if(b instanceof THREE.Mesh){f=b.geometry;
|
|
|
-for(e in f.geometryGroups)if(h=f.geometryGroups[e],g=F(h),f.__dirtyVertices||f.__dirtyMorphTargets||f.__dirtyElements||f.__dirtyUvs||f.__dirtyNormals||f.__dirtyColors||f.__dirtyTangents||g){g=h;var j=b,m=k.DYNAMIC_DRAW;if(g.__inittedArrays){var t=void 0,n=void 0,p=void 0,o=void 0,u=p=void 0,v=void 0,x=void 0,y=void 0,w=void 0,B=void 0,A=void 0,G=void 0,ia=void 0,E=void 0,X=void 0,I=void 0,H=void 0,D=o=y=o=x=v=void 0,L=void 0,z=L=D=v=void 0,J=void 0,O=z=L=D=p=p=u=y=o=z=L=D=J=z=L=D=J=z=L=D=void 0,K=
|
|
|
-0,M=0,T=0,R=0,P=0,na=0,W=0,S=0,Q=0,N=0,la=0,L=D=0,U=g.__vertexArray,fa=g.__uvArray,ca=g.__uv2Array,ea=g.__normalArray,V=g.__tangentArray,Y=g.__colorArray,da=g.__skinVertexAArray,oa=g.__skinVertexBArray,$=g.__skinIndexArray,aa=g.__skinWeightArray,ma=g.__morphTargetsArrays,ha=g.__webglCustomAttributes,z=void 0,ga=g.__faceArray,ka=g.__lineArray,pa=g.__needsSmoothNormals,B=g.__vertexColorType,w=g.__uvType,A=g.__normalType,ja=j.geometry,wa=ja.__dirtyVertices,ra=ja.__dirtyElements,qa=ja.__dirtyUvs,sa=ja.__dirtyNormals,
|
|
|
-Aa=ja.__dirtyTangents,va=ja.__dirtyColors,ya=ja.__dirtyMorphTargets,ua=ja.vertices,Ba=g.faces,Ma=ja.faces,Wa=ja.faceVertexUvs[0],Xa=ja.faceVertexUvs[1],Ja=ja.skinVerticesA,Ka=ja.skinVerticesB,La=ja.skinIndices,Da=ja.skinWeights,Ha=j instanceof THREE.ShadowVolume?ja.edgeFaces:void 0,za=ja.morphTargets;if(ha)for(O in ha)ha[O].offset=0,ha[O].offsetSrc=0;t=0;for(n=Ba.length;t<n;t++)if(p=Ba[t],o=Ma[p],Wa&&(G=Wa[p]),Xa&&(ia=Xa[p]),p=o.vertexNormals,u=o.normal,v=o.vertexColors,x=o.color,y=o.vertexTangents,
|
|
|
-o instanceof THREE.Face3){if(wa)E=ua[o.a].position,X=ua[o.b].position,I=ua[o.c].position,U[M]=E.x,U[M+1]=E.y,U[M+2]=E.z,U[M+3]=X.x,U[M+4]=X.y,U[M+5]=X.z,U[M+6]=I.x,U[M+7]=I.y,U[M+8]=I.z,M+=9;if(ha)for(O in ha)if(z=ha[O],z.__original.needsUpdate)D=z.offset,L=z.offsetSrc,z.size===1?(z.boundTo===void 0||z.boundTo==="vertices"?(z.array[D+0]=z.value[o.a],z.array[D+1]=z.value[o.b],z.array[D+2]=z.value[o.c]):z.boundTo==="faces"?(z.array[D+0]=z.value[L],z.array[D+1]=z.value[L],z.array[D+2]=z.value[L],z.offsetSrc++):
|
|
|
-z.boundTo==="faceVertices"&&(z.array[D+0]=z.value[L+0],z.array[D+1]=z.value[L+1],z.array[D+2]=z.value[L+2],z.offsetSrc+=3),z.offset+=3):(z.boundTo===void 0||z.boundTo==="vertices"?(E=z.value[o.a],X=z.value[o.b],I=z.value[o.c]):z.boundTo==="faces"?(E=z.value[L],X=z.value[L],I=z.value[L],z.offsetSrc++):z.boundTo==="faceVertices"&&(E=z.value[L+0],X=z.value[L+1],I=z.value[L+2],z.offsetSrc+=3),z.size===2?(z.array[D+0]=E.x,z.array[D+1]=E.y,z.array[D+2]=X.x,z.array[D+3]=X.y,z.array[D+4]=I.x,z.array[D+5]=
|
|
|
-I.y,z.offset+=6):z.size===3?(z.type==="c"?(z.array[D+0]=E.r,z.array[D+1]=E.g,z.array[D+2]=E.b,z.array[D+3]=X.r,z.array[D+4]=X.g,z.array[D+5]=X.b,z.array[D+6]=I.r,z.array[D+7]=I.g,z.array[D+8]=I.b):(z.array[D+0]=E.x,z.array[D+1]=E.y,z.array[D+2]=E.z,z.array[D+3]=X.x,z.array[D+4]=X.y,z.array[D+5]=X.z,z.array[D+6]=I.x,z.array[D+7]=I.y,z.array[D+8]=I.z),z.offset+=9):(z.array[D+0]=E.x,z.array[D+1]=E.y,z.array[D+2]=E.z,z.array[D+3]=E.w,z.array[D+4]=X.x,z.array[D+5]=X.y,z.array[D+6]=X.z,z.array[D+7]=X.w,
|
|
|
-z.array[D+8]=I.x,z.array[D+9]=I.y,z.array[D+10]=I.z,z.array[D+11]=I.w,z.offset+=12));if(ya){D=0;for(L=za.length;D<L;D++)E=za[D].vertices[o.a].position,X=za[D].vertices[o.b].position,I=za[D].vertices[o.c].position,z=ma[D],z[la+0]=E.x,z[la+1]=E.y,z[la+2]=E.z,z[la+3]=X.x,z[la+4]=X.y,z[la+5]=X.z,z[la+6]=I.x,z[la+7]=I.y,z[la+8]=I.z;la+=9}if(Da.length)D=Da[o.a],L=Da[o.b],z=Da[o.c],aa[N]=D.x,aa[N+1]=D.y,aa[N+2]=D.z,aa[N+3]=D.w,aa[N+4]=L.x,aa[N+5]=L.y,aa[N+6]=L.z,aa[N+7]=L.w,aa[N+8]=z.x,aa[N+9]=z.y,aa[N+
|
|
|
-10]=z.z,aa[N+11]=z.w,D=La[o.a],L=La[o.b],z=La[o.c],$[N]=D.x,$[N+1]=D.y,$[N+2]=D.z,$[N+3]=D.w,$[N+4]=L.x,$[N+5]=L.y,$[N+6]=L.z,$[N+7]=L.w,$[N+8]=z.x,$[N+9]=z.y,$[N+10]=z.z,$[N+11]=z.w,D=Ja[o.a],L=Ja[o.b],z=Ja[o.c],da[N]=D.x,da[N+1]=D.y,da[N+2]=D.z,da[N+3]=1,da[N+4]=L.x,da[N+5]=L.y,da[N+6]=L.z,da[N+7]=1,da[N+8]=z.x,da[N+9]=z.y,da[N+10]=z.z,da[N+11]=1,D=Ka[o.a],L=Ka[o.b],z=Ka[o.c],oa[N]=D.x,oa[N+1]=D.y,oa[N+2]=D.z,oa[N+3]=1,oa[N+4]=L.x,oa[N+5]=L.y,oa[N+6]=L.z,oa[N+7]=1,oa[N+8]=z.x,oa[N+9]=z.y,oa[N+10]=
|
|
|
-z.z,oa[N+11]=1,N+=12;if(va&&B)v.length==3&&B==THREE.VertexColors?(o=v[0],D=v[1],L=v[2]):L=D=o=x,Y[Q]=o.r,Y[Q+1]=o.g,Y[Q+2]=o.b,Y[Q+3]=D.r,Y[Q+4]=D.g,Y[Q+5]=D.b,Y[Q+6]=L.r,Y[Q+7]=L.g,Y[Q+8]=L.b,Q+=9;if(Aa&&ja.hasTangents)v=y[0],x=y[1],o=y[2],V[W]=v.x,V[W+1]=v.y,V[W+2]=v.z,V[W+3]=v.w,V[W+4]=x.x,V[W+5]=x.y,V[W+6]=x.z,V[W+7]=x.w,V[W+8]=o.x,V[W+9]=o.y,V[W+10]=o.z,V[W+11]=o.w,W+=12;if(sa&&A)if(p.length==3&&pa)for(y=0;y<3;y++)u=p[y],ea[na]=u.x,ea[na+1]=u.y,ea[na+2]=u.z,na+=3;else for(y=0;y<3;y++)ea[na]=
|
|
|
-u.x,ea[na+1]=u.y,ea[na+2]=u.z,na+=3;if(qa&&G!==void 0&&w)for(y=0;y<3;y++)p=G[y],fa[T]=p.u,fa[T+1]=p.v,T+=2;if(qa&&ia!==void 0&&w)for(y=0;y<3;y++)p=ia[y],ca[R]=p.u,ca[R+1]=p.v,R+=2;ra&&(ga[P]=K,ga[P+1]=K+1,ga[P+2]=K+2,P+=3,ka[S]=K,ka[S+1]=K+1,ka[S+2]=K,ka[S+3]=K+2,ka[S+4]=K+1,ka[S+5]=K+2,S+=6,K+=3)}else if(o instanceof THREE.Face4){if(wa)E=ua[o.a].position,X=ua[o.b].position,I=ua[o.c].position,H=ua[o.d].position,U[M]=E.x,U[M+1]=E.y,U[M+2]=E.z,U[M+3]=X.x,U[M+4]=X.y,U[M+5]=X.z,U[M+6]=I.x,U[M+7]=I.y,
|
|
|
-U[M+8]=I.z,U[M+9]=H.x,U[M+10]=H.y,U[M+11]=H.z,M+=12;if(ha)for(O in ha)if(z=ha[O],z.__original.needsUpdate)D=z.offset,L=z.offsetSrc,z.size===1?(z.boundTo===void 0||z.boundTo==="vertices"?(z.array[D+0]=z.value[o.a],z.array[D+1]=z.value[o.b],z.array[D+2]=z.value[o.c],z.array[D+3]=z.value[o.d]):z.boundTo==="faces"?(z.array[D+0]=z.value[L],z.array[D+1]=z.value[L],z.array[D+2]=z.value[L],z.array[D+3]=z.value[L],z.offsetSrc++):z.boundTo==="faceVertices"&&(z.array[D+0]=z.value[L+0],z.array[D+1]=z.value[L+
|
|
|
-1],z.array[D+2]=z.value[L+2],z.array[D+3]=z.value[L+3],z.offsetSrc+=4),z.offset+=4):(z.boundTo===void 0||z.boundTo==="vertices"?(E=z.value[o.a],X=z.value[o.b],I=z.value[o.c],H=z.value[o.d]):z.boundTo==="faces"?(E=z.value[L],X=z.value[L],I=z.value[L],H=z.value[L],z.offsetSrc++):z.boundTo==="faceVertices"&&(E=z.value[L+0],X=z.value[L+1],I=z.value[L+2],H=z.value[L+3],z.offsetSrc+=4),z.size===2?(z.array[D+0]=E.x,z.array[D+1]=E.y,z.array[D+2]=X.x,z.array[D+3]=X.y,z.array[D+4]=I.x,z.array[D+5]=I.y,z.array[D+
|
|
|
-6]=H.x,z.array[D+7]=H.y,z.offset+=8):z.size===3?(z.type==="c"?(z.array[D+0]=E.r,z.array[D+1]=E.g,z.array[D+2]=E.b,z.array[D+3]=X.r,z.array[D+4]=X.g,z.array[D+5]=X.b,z.array[D+6]=I.r,z.array[D+7]=I.g,z.array[D+8]=I.b,z.array[D+9]=H.r,z.array[D+10]=H.g,z.array[D+11]=H.b):(z.array[D+0]=E.x,z.array[D+1]=E.y,z.array[D+2]=E.z,z.array[D+3]=X.x,z.array[D+4]=X.y,z.array[D+5]=X.z,z.array[D+6]=I.x,z.array[D+7]=I.y,z.array[D+8]=I.z,z.array[D+9]=H.x,z.array[D+10]=H.y,z.array[D+11]=H.z),z.offset+=12):(z.array[D+
|
|
|
-0]=E.x,z.array[D+1]=E.y,z.array[D+2]=E.z,z.array[D+3]=E.w,z.array[D+4]=X.x,z.array[D+5]=X.y,z.array[D+6]=X.z,z.array[D+7]=X.w,z.array[D+8]=I.x,z.array[D+9]=I.y,z.array[D+10]=I.z,z.array[D+11]=I.w,z.array[D+12]=H.x,z.array[D+13]=H.y,z.array[D+14]=H.z,z.array[D+15]=H.w,z.offset+=16));if(ya){D=0;for(L=za.length;D<L;D++)E=za[D].vertices[o.a].position,X=za[D].vertices[o.b].position,I=za[D].vertices[o.c].position,H=za[D].vertices[o.d].position,z=ma[D],z[la+0]=E.x,z[la+1]=E.y,z[la+2]=E.z,z[la+3]=X.x,z[la+
|
|
|
-4]=X.y,z[la+5]=X.z,z[la+6]=I.x,z[la+7]=I.y,z[la+8]=I.z,z[la+9]=H.x,z[la+10]=H.y,z[la+11]=H.z;la+=12}if(Da.length)D=Da[o.a],L=Da[o.b],z=Da[o.c],J=Da[o.d],aa[N]=D.x,aa[N+1]=D.y,aa[N+2]=D.z,aa[N+3]=D.w,aa[N+4]=L.x,aa[N+5]=L.y,aa[N+6]=L.z,aa[N+7]=L.w,aa[N+8]=z.x,aa[N+9]=z.y,aa[N+10]=z.z,aa[N+11]=z.w,aa[N+12]=J.x,aa[N+13]=J.y,aa[N+14]=J.z,aa[N+15]=J.w,D=La[o.a],L=La[o.b],z=La[o.c],J=La[o.d],$[N]=D.x,$[N+1]=D.y,$[N+2]=D.z,$[N+3]=D.w,$[N+4]=L.x,$[N+5]=L.y,$[N+6]=L.z,$[N+7]=L.w,$[N+8]=z.x,$[N+9]=z.y,$[N+
|
|
|
-10]=z.z,$[N+11]=z.w,$[N+12]=J.x,$[N+13]=J.y,$[N+14]=J.z,$[N+15]=J.w,D=Ja[o.a],L=Ja[o.b],z=Ja[o.c],J=Ja[o.d],da[N]=D.x,da[N+1]=D.y,da[N+2]=D.z,da[N+3]=1,da[N+4]=L.x,da[N+5]=L.y,da[N+6]=L.z,da[N+7]=1,da[N+8]=z.x,da[N+9]=z.y,da[N+10]=z.z,da[N+11]=1,da[N+12]=J.x,da[N+13]=J.y,da[N+14]=J.z,da[N+15]=1,D=Ka[o.a],L=Ka[o.b],z=Ka[o.c],o=Ka[o.d],oa[N]=D.x,oa[N+1]=D.y,oa[N+2]=D.z,oa[N+3]=1,oa[N+4]=L.x,oa[N+5]=L.y,oa[N+6]=L.z,oa[N+7]=1,oa[N+8]=z.x,oa[N+9]=z.y,oa[N+10]=z.z,oa[N+11]=1,oa[N+12]=o.x,oa[N+13]=o.y,oa[N+
|
|
|
-14]=o.z,oa[N+15]=1,N+=16;if(va&&B)v.length==4&&B==THREE.VertexColors?(o=v[0],D=v[1],L=v[2],v=v[3]):v=L=D=o=x,Y[Q]=o.r,Y[Q+1]=o.g,Y[Q+2]=o.b,Y[Q+3]=D.r,Y[Q+4]=D.g,Y[Q+5]=D.b,Y[Q+6]=L.r,Y[Q+7]=L.g,Y[Q+8]=L.b,Y[Q+9]=v.r,Y[Q+10]=v.g,Y[Q+11]=v.b,Q+=12;if(Aa&&ja.hasTangents)v=y[0],x=y[1],o=y[2],y=y[3],V[W]=v.x,V[W+1]=v.y,V[W+2]=v.z,V[W+3]=v.w,V[W+4]=x.x,V[W+5]=x.y,V[W+6]=x.z,V[W+7]=x.w,V[W+8]=o.x,V[W+9]=o.y,V[W+10]=o.z,V[W+11]=o.w,V[W+12]=y.x,V[W+13]=y.y,V[W+14]=y.z,V[W+15]=y.w,W+=16;if(sa&&A)if(p.length==
|
|
|
-4&&pa)for(y=0;y<4;y++)u=p[y],ea[na]=u.x,ea[na+1]=u.y,ea[na+2]=u.z,na+=3;else for(y=0;y<4;y++)ea[na]=u.x,ea[na+1]=u.y,ea[na+2]=u.z,na+=3;if(qa&&G!==void 0&&w)for(y=0;y<4;y++)p=G[y],fa[T]=p.u,fa[T+1]=p.v,T+=2;if(qa&&ia!==void 0&&w)for(y=0;y<4;y++)p=ia[y],ca[R]=p.u,ca[R+1]=p.v,R+=2;ra&&(ga[P]=K,ga[P+1]=K+1,ga[P+2]=K+3,ga[P+3]=K+1,ga[P+4]=K+2,ga[P+5]=K+3,P+=6,ka[S]=K,ka[S+1]=K+1,ka[S+2]=K,ka[S+3]=K+3,ka[S+4]=K+1,ka[S+5]=K+2,ka[S+6]=K+2,ka[S+7]=K+3,S+=8,K+=4)}if(Ha){t=0;for(n=Ha.length;t<n;t++)ga[P]=Ha[t].a,
|
|
|
-ga[P+1]=Ha[t].b,ga[P+2]=Ha[t].c,ga[P+3]=Ha[t].a,ga[P+4]=Ha[t].c,ga[P+5]=Ha[t].d,P+=6}wa&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,U,m));if(ha)for(O in ha)z=ha[O],z.__original.needsUpdate&&(k.bindBuffer(k.ARRAY_BUFFER,z.buffer),k.bufferData(k.ARRAY_BUFFER,z.array,m));if(ya){D=0;for(L=za.length;D<L;D++)k.bindBuffer(k.ARRAY_BUFFER,g.__webglMorphTargetsBuffers[D]),k.bufferData(k.ARRAY_BUFFER,ma[D],m)}va&&Q>0&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,
|
|
|
-Y,m));sa&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglNormalBuffer),k.bufferData(k.ARRAY_BUFFER,ea,m));Aa&&ja.hasTangents&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglTangentBuffer),k.bufferData(k.ARRAY_BUFFER,V,m));qa&&T>0&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglUVBuffer),k.bufferData(k.ARRAY_BUFFER,fa,m));qa&&R>0&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglUV2Buffer),k.bufferData(k.ARRAY_BUFFER,ca,m));ra&&(k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,g.__webglFaceBuffer),k.bufferData(k.ELEMENT_ARRAY_BUFFER,ga,m),k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,
|
|
|
-g.__webglLineBuffer),k.bufferData(k.ELEMENT_ARRAY_BUFFER,ka,m));N>0&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglSkinVertexABuffer),k.bufferData(k.ARRAY_BUFFER,da,m),k.bindBuffer(k.ARRAY_BUFFER,g.__webglSkinVertexBBuffer),k.bufferData(k.ARRAY_BUFFER,oa,m),k.bindBuffer(k.ARRAY_BUFFER,g.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,$,m),k.bindBuffer(k.ARRAY_BUFFER,g.__webglSkinWeightsBuffer),k.bufferData(k.ARRAY_BUFFER,aa,m));j.dynamic||(delete g.__inittedArrays,delete g.__colorArray,delete g.__normalArray,
|
|
|
-delete g.__tangentArray,delete g.__uvArray,delete g.__uv2Array,delete g.__faceArray,delete g.__vertexArray,delete g.__lineArray,delete g.__skinVertexAArray,delete g.__skinVertexBArray,delete g.__skinIndexArray,delete g.__skinWeightArray)}}f.__dirtyVertices=!1;f.__dirtyMorphTargets=!1;f.__dirtyElements=!1;f.__dirtyUvs=!1;f.__dirtyNormals=!1;f.__dirtyTangents=!1;f.__dirtyColors=!1;C(h)}else if(b instanceof THREE.Ribbon){f=b.geometry;if(f.__dirtyVertices||f.__dirtyColors){b=f;e=k.DYNAMIC_DRAW;w=b.vertices;
|
|
|
-g=b.colors;B=w.length;j=g.length;A=b.__vertexArray;m=b.__colorArray;G=b.__dirtyColors;if(b.__dirtyVertices){for(t=0;t<B;t++)n=w[t].position,h=t*3,A[h]=n.x,A[h+1]=n.y,A[h+2]=n.z;k.bindBuffer(k.ARRAY_BUFFER,b.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,A,e)}if(G){for(t=0;t<j;t++)color=g[t],h=t*3,m[h]=color.r,m[h+1]=color.g,m[h+2]=color.b;k.bindBuffer(k.ARRAY_BUFFER,b.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,m,e)}}f.__dirtyVertices=!1;f.__dirtyColors=!1}else if(b instanceof THREE.Line){f=
|
|
|
-b.geometry;if(f.__dirtyVertices||f.__dirtyColors){b=f;e=k.DYNAMIC_DRAW;w=b.vertices;g=b.colors;B=w.length;j=g.length;A=b.__vertexArray;m=b.__colorArray;G=b.__dirtyColors;if(b.__dirtyVertices){for(t=0;t<B;t++)n=w[t].position,h=t*3,A[h]=n.x,A[h+1]=n.y,A[h+2]=n.z;k.bindBuffer(k.ARRAY_BUFFER,b.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,A,e)}if(G){for(t=0;t<j;t++)color=g[t],h=t*3,m[h]=color.r,m[h+1]=color.g,m[h+2]=color.b;k.bindBuffer(k.ARRAY_BUFFER,b.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
-m,e)}}f.__dirtyVertices=!1;f.__dirtyColors=!1}else if(b instanceof THREE.ParticleSystem)f=b.geometry,g=F(f),(f.__dirtyVertices||f.__dirtyColors||b.sortParticles||g)&&c(f,k.DYNAMIC_DRAW,b),f.__dirtyVertices=!1,f.__dirtyColors=!1,C(f)}function G(b,e){var c;for(c=b.length-1;c>=0;c--)b[c].object==e&&b.splice(c,1)}function A(b){function e(b){var h=[];c=0;for(f=b.length;c<f;c++)b[c]==void 0?h.push("undefined"):h.push(b[c].id);return h.join("_")}var c,f,h,g,j,k,m,t,o={},n=b.morphTargets!==void 0?b.morphTargets.length:
|
|
|
-0;b.geometryGroups={};h=0;for(g=b.faces.length;h<g;h++)j=b.faces[h],k=j.materials,m=e(k),o[m]==void 0&&(o[m]={hash:m,counter:0}),t=o[m].hash+"_"+o[m].counter,b.geometryGroups[t]==void 0&&(b.geometryGroups[t]={faces:[],materials:k,vertices:0,numMorphTargets:n}),j=j instanceof THREE.Face3?3:4,b.geometryGroups[t].vertices+j>65535&&(o[m].counter+=1,t=o[m].hash+"_"+o[m].counter,b.geometryGroups[t]==void 0&&(b.geometryGroups[t]={faces:[],materials:k,vertices:0,numMorphTargets:n})),b.geometryGroups[t].faces.push(h),
|
|
|
-b.geometryGroups[t].vertices+=j}function P(b,e,c){b.push({buffer:e,object:c,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function I(b){if(b!=ga){switch(b){case THREE.AdditiveBlending:k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE);break;case THREE.SubtractiveBlending:k.blendEquation(k.FUNC_ADD);k.blendFunc(k.ZERO,k.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:k.blendEquation(k.FUNC_ADD);k.blendFunc(k.ZERO,k.SRC_COLOR);break;default:k.blendEquationSeparate(k.FUNC_ADD,
|
|
|
-k.FUNC_ADD),k.blendFuncSeparate(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA,k.ONE,k.ONE_MINUS_SRC_ALPHA)}ga=b}}function H(b,e,c){(c.width&c.width-1)==0&&(c.height&c.height-1)==0?(k.texParameteri(b,k.TEXTURE_WRAP_S,K(e.wrapS)),k.texParameteri(b,k.TEXTURE_WRAP_T,K(e.wrapT)),k.texParameteri(b,k.TEXTURE_MAG_FILTER,K(e.magFilter)),k.texParameteri(b,k.TEXTURE_MIN_FILTER,K(e.minFilter)),k.generateMipmap(b)):(k.texParameteri(b,k.TEXTURE_WRAP_S,k.CLAMP_TO_EDGE),k.texParameteri(b,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE),k.texParameteri(b,
|
|
|
-k.TEXTURE_MAG_FILTER,Y(e.magFilter)),k.texParameteri(b,k.TEXTURE_MIN_FILTER,Y(e.minFilter)))}function T(b,e){if(b.needsUpdate)b.__webglInit?(k.bindTexture(k.TEXTURE_2D,b.__webglTexture),k.texImage2D(k.TEXTURE_2D,0,k.RGBA,k.RGBA,k.UNSIGNED_BYTE,b.image)):(b.__webglTexture=k.createTexture(),k.bindTexture(k.TEXTURE_2D,b.__webglTexture),k.texImage2D(k.TEXTURE_2D,0,k.RGBA,k.RGBA,k.UNSIGNED_BYTE,b.image),b.__webglInit=!0),H(k.TEXTURE_2D,b,b.image),k.bindTexture(k.TEXTURE_2D,null),b.needsUpdate=!1;k.activeTexture(k.TEXTURE0+
|
|
|
-e);k.bindTexture(k.TEXTURE_2D,b.__webglTexture)}function U(b){if(b&&!b.__webglFramebuffer){if(b.depthBuffer===void 0)b.depthBuffer=!0;if(b.stencilBuffer===void 0)b.stencilBuffer=!0;b.__webglFramebuffer=k.createFramebuffer();b.__webglRenderbuffer=k.createRenderbuffer();b.__webglTexture=k.createTexture();k.bindTexture(k.TEXTURE_2D,b.__webglTexture);k.texParameteri(k.TEXTURE_2D,k.TEXTURE_WRAP_S,K(b.wrapS));k.texParameteri(k.TEXTURE_2D,k.TEXTURE_WRAP_T,K(b.wrapT));k.texParameteri(k.TEXTURE_2D,k.TEXTURE_MAG_FILTER,
|
|
|
-K(b.magFilter));k.texParameteri(k.TEXTURE_2D,k.TEXTURE_MIN_FILTER,K(b.minFilter));k.texImage2D(k.TEXTURE_2D,0,K(b.format),b.width,b.height,0,K(b.format),K(b.type),null);k.bindRenderbuffer(k.RENDERBUFFER,b.__webglRenderbuffer);k.bindFramebuffer(k.FRAMEBUFFER,b.__webglFramebuffer);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,b.__webglTexture,0);b.depthBuffer&&!b.stencilBuffer?(k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_COMPONENT16,b.width,b.height),k.framebufferRenderbuffer(k.FRAMEBUFFER,
|
|
|
-k.DEPTH_ATTACHMENT,k.RENDERBUFFER,b.__webglRenderbuffer)):b.depthBuffer&&b.stencilBuffer?(k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_STENCIL,b.width,b.height),k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_STENCIL_ATTACHMENT,k.RENDERBUFFER,b.__webglRenderbuffer)):k.renderbufferStorage(k.RENDERBUFFER,k.RGBA4,b.width,b.height);k.bindTexture(k.TEXTURE_2D,null);k.bindRenderbuffer(k.RENDERBUFFER,null);k.bindFramebuffer(k.FRAMEBUFFER,null)}var e,c;b?(e=b.__webglFramebuffer,c=b.width,b=b.height):(e=null,
|
|
|
-c=aa,b=ia);e!=fa&&(k.bindFramebuffer(k.FRAMEBUFFER,e),k.viewport($,ma,c,b),fa=e)}function J(b,e){var c;b=="fragment"?c=k.createShader(k.FRAGMENT_SHADER):b=="vertex"&&(c=k.createShader(k.VERTEX_SHADER));k.shaderSource(c,e);k.compileShader(c);if(!k.getShaderParameter(c,k.COMPILE_STATUS))return console.error(k.getShaderInfoLog(c)),console.error(e),null;return c}function Y(b){switch(b){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return k.NEAREST;
|
|
|
+(k.uniform1i(g.useScreenCoordinates,1),k.uniform3f(g.screenPosition,(h.position.x-n)/n,(p-h.position.y)/p,Math.max(0,Math.min(1,h.position.z)))):(k.uniform1i(g.useScreenCoordinates,0),k.uniform1i(g.affectedByDistance,h.affectedByDistance?1:0),k.uniformMatrix4fv(g.modelViewMatrix,!1,h._modelViewMatrixArray)),m=h.map.image.width/(h.scaleByViewport?T:1),t[0]=m*j*h.scale.x,t[1]=m*h.scale.y,k.uniform2f(g.uvScale,h.uvScale.x,h.uvScale.y),k.uniform2f(g.uvOffset,h.uvOffset.x,h.uvOffset.y),k.uniform2f(g.alignment,
|
|
|
+h.alignment.x,h.alignment.y),k.uniform1f(g.opacity,h.opacity),k.uniform1f(g.rotation,h.rotation),k.uniform2fv(g.scale,t),h.mergeWith3D&&!o?(k.enable(k.DEPTH_TEST),o=!0):!h.mergeWith3D&&o&&(k.disable(k.DEPTH_TEST),o=!1),H(h.blending),U(h.map,0),k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0));k.enable(k.CULL_FACE);k.enable(k.DEPTH_TEST);k.depthMask(fa)}function y(b,e){var c,f,h=b.__webglLensFlares.length,g,j,m,t=new THREE.Vector3,n=T/ca,p=ca*0.5,o=T*0.5,u=16/T,v=[u*n,u],x=[1,1,0],w=[1,1],y=M.uniforms;
|
|
|
+c=M.attributes;k.useProgram(M.program);O=M.program;ka=ha=-1;ua||(k.enableVertexAttribArray(M.attributes.vertex),k.enableVertexAttribArray(M.attributes.uv),ua=!0);k.uniform1i(y.occlusionMap,0);k.uniform1i(y.map,1);k.bindBuffer(k.ARRAY_BUFFER,M.vertexBuffer);k.vertexAttribPointer(c.vertex,2,k.FLOAT,!1,16,0);k.vertexAttribPointer(c.uv,2,k.FLOAT,!1,16,8);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,M.elementBuffer);k.disable(k.CULL_FACE);k.depthMask(!1);k.activeTexture(k.TEXTURE0);k.bindTexture(k.TEXTURE_2D,M.occlusionTexture);
|
|
|
+k.activeTexture(k.TEXTURE1);for(f=0;f<h;f++)if(c=b.__webglLensFlares[f].object,t.set(c.matrixWorld.n14,c.matrixWorld.n24,c.matrixWorld.n34),e.matrixWorldInverse.multiplyVector3(t),e.projectionMatrix.multiplyVector3(t),x[0]=t.x,x[1]=t.y,x[2]=t.z,w[0]=x[0]*p+p,w[1]=x[1]*o+o,M.hasVertexTexture||w[0]>0&&w[0]<ca&&w[1]>0&&w[1]<T){k.bindTexture(k.TEXTURE_2D,M.tempTexture);k.copyTexImage2D(k.TEXTURE_2D,0,k.RGB,w[0]-8,w[1]-8,16,16,0);k.uniform1i(y.renderType,0);k.uniform2fv(y.scale,v);k.uniform3fv(y.screenPosition,
|
|
|
+x);k.disable(k.BLEND);k.enable(k.DEPTH_TEST);k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0);k.bindTexture(k.TEXTURE_2D,M.occlusionTexture);k.copyTexImage2D(k.TEXTURE_2D,0,k.RGBA,w[0]-8,w[1]-8,16,16,0);k.uniform1i(y.renderType,1);k.disable(k.DEPTH_TEST);k.bindTexture(k.TEXTURE_2D,M.tempTexture);k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0);c.positionScreen.x=x[0];c.positionScreen.y=x[1];c.positionScreen.z=x[2];c.customUpdateCallback?c.customUpdateCallback(c):c.updateLensFlares();k.uniform1i(y.renderType,
|
|
|
+2);k.enable(k.BLEND);g=0;for(j=c.lensFlares.length;g<j;g++)if(m=c.lensFlares[g],m.opacity>0.0010&&m.scale>0.0010)x[0]=m.x,x[1]=m.y,x[2]=m.z,u=m.size*m.scale/T,v[0]=u*n,v[1]=u,k.uniform3fv(y.screenPosition,x),k.uniform2fv(y.scale,v),k.uniform1f(y.rotation,m.rotation),k.uniform1f(y.opacity,m.opacity),H(m.blending),U(m.texture,1),k.drawElements(k.TRIANGLES,6,k.UNSIGNED_SHORT,0)}k.enable(k.CULL_FACE);k.enable(k.DEPTH_TEST);k.depthMask(fa)}function C(b,e){b._modelViewMatrix.multiplyToArray(e.matrixWorldInverse,
|
|
|
+b.matrixWorld,b._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(b._modelViewMatrix).transposeIntoArray(b._normalMatrixArray)}function E(b){var e,c,f,h;h=b.__materials;b=0;for(c=h.length;b<c;b++)if(f=h[b],f.attributes)for(e in f.attributes)if(f.attributes[e].needsUpdate)return!0;return!1}function B(b){var e,c,f,h;h=b.__materials;b=0;for(c=h.length;b<c;b++)if(f=h[b],f.attributes)for(e in f.attributes)f.attributes[e].needsUpdate=!1}function I(b){var e,f,h,g;if(b instanceof THREE.Mesh){f=b.geometry;
|
|
|
+for(e in f.geometryGroups)if(h=f.geometryGroups[e],g=E(h),f.__dirtyVertices||f.__dirtyMorphTargets||f.__dirtyElements||f.__dirtyUvs||f.__dirtyNormals||f.__dirtyColors||f.__dirtyTangents||g){g=h;var j=b,m=k.DYNAMIC_DRAW;if(g.__inittedArrays){var t=void 0,n=void 0,p=void 0,o=void 0,u=p=void 0,v=void 0,x=void 0,w=void 0,y=void 0,C=void 0,A=void 0,F=void 0,I=void 0,T=void 0,Y=void 0,H=void 0,G=void 0,D=o=w=o=x=v=void 0,L=void 0,z=L=D=v=void 0,J=void 0,O=z=L=D=p=p=u=w=o=z=L=D=J=z=L=D=J=z=L=D=void 0,K=
|
|
|
+0,M=0,U=0,R=0,P=0,na=0,X=0,S=0,Q=0,N=0,la=0,L=D=0,V=g.__vertexArray,ga=g.__uvArray,da=g.__uv2Array,fa=g.__normalArray,W=g.__tangentArray,Z=g.__colorArray,ea=g.__skinVertexAArray,oa=g.__skinVertexBArray,aa=g.__skinIndexArray,ca=g.__skinWeightArray,ma=g.__morphTargetsArrays,ia=g.__webglCustomAttributes,z=void 0,ha=g.__faceArray,ka=g.__lineArray,pa=g.__needsSmoothNormals,C=g.__vertexColorType,y=g.__uvType,A=g.__normalType,ja=j.geometry,wa=ja.__dirtyVertices,ra=ja.__dirtyElements,qa=ja.__dirtyUvs,sa=
|
|
|
+ja.__dirtyNormals,Aa=ja.__dirtyTangents,va=ja.__dirtyColors,ya=ja.__dirtyMorphTargets,ua=ja.vertices,Ba=g.faces,Ma=ja.faces,Wa=ja.faceVertexUvs[0],Xa=ja.faceVertexUvs[1],Ja=ja.skinVerticesA,Ka=ja.skinVerticesB,La=ja.skinIndices,Da=ja.skinWeights,Ha=j instanceof THREE.ShadowVolume?ja.edgeFaces:void 0,za=ja.morphTargets;if(ia)for(O in ia)ia[O].offset=0,ia[O].offsetSrc=0;t=0;for(n=Ba.length;t<n;t++)if(p=Ba[t],o=Ma[p],Wa&&(F=Wa[p]),Xa&&(I=Xa[p]),p=o.vertexNormals,u=o.normal,v=o.vertexColors,x=o.color,
|
|
|
+w=o.vertexTangents,o instanceof THREE.Face3){if(wa)T=ua[o.a].position,Y=ua[o.b].position,H=ua[o.c].position,V[M]=T.x,V[M+1]=T.y,V[M+2]=T.z,V[M+3]=Y.x,V[M+4]=Y.y,V[M+5]=Y.z,V[M+6]=H.x,V[M+7]=H.y,V[M+8]=H.z,M+=9;if(ia)for(O in ia)if(z=ia[O],z.__original.needsUpdate)D=z.offset,L=z.offsetSrc,z.size===1?(z.boundTo===void 0||z.boundTo==="vertices"?(z.array[D+0]=z.value[o.a],z.array[D+1]=z.value[o.b],z.array[D+2]=z.value[o.c]):z.boundTo==="faces"?(z.array[D+0]=z.value[L],z.array[D+1]=z.value[L],z.array[D+
|
|
|
+2]=z.value[L],z.offsetSrc++):z.boundTo==="faceVertices"&&(z.array[D+0]=z.value[L+0],z.array[D+1]=z.value[L+1],z.array[D+2]=z.value[L+2],z.offsetSrc+=3),z.offset+=3):(z.boundTo===void 0||z.boundTo==="vertices"?(T=z.value[o.a],Y=z.value[o.b],H=z.value[o.c]):z.boundTo==="faces"?(T=z.value[L],Y=z.value[L],H=z.value[L],z.offsetSrc++):z.boundTo==="faceVertices"&&(T=z.value[L+0],Y=z.value[L+1],H=z.value[L+2],z.offsetSrc+=3),z.size===2?(z.array[D+0]=T.x,z.array[D+1]=T.y,z.array[D+2]=Y.x,z.array[D+3]=Y.y,
|
|
|
+z.array[D+4]=H.x,z.array[D+5]=H.y,z.offset+=6):z.size===3?(z.type==="c"?(z.array[D+0]=T.r,z.array[D+1]=T.g,z.array[D+2]=T.b,z.array[D+3]=Y.r,z.array[D+4]=Y.g,z.array[D+5]=Y.b,z.array[D+6]=H.r,z.array[D+7]=H.g,z.array[D+8]=H.b):(z.array[D+0]=T.x,z.array[D+1]=T.y,z.array[D+2]=T.z,z.array[D+3]=Y.x,z.array[D+4]=Y.y,z.array[D+5]=Y.z,z.array[D+6]=H.x,z.array[D+7]=H.y,z.array[D+8]=H.z),z.offset+=9):(z.array[D+0]=T.x,z.array[D+1]=T.y,z.array[D+2]=T.z,z.array[D+3]=T.w,z.array[D+4]=Y.x,z.array[D+5]=Y.y,z.array[D+
|
|
|
+6]=Y.z,z.array[D+7]=Y.w,z.array[D+8]=H.x,z.array[D+9]=H.y,z.array[D+10]=H.z,z.array[D+11]=H.w,z.offset+=12));if(ya){D=0;for(L=za.length;D<L;D++)T=za[D].vertices[o.a].position,Y=za[D].vertices[o.b].position,H=za[D].vertices[o.c].position,z=ma[D],z[la+0]=T.x,z[la+1]=T.y,z[la+2]=T.z,z[la+3]=Y.x,z[la+4]=Y.y,z[la+5]=Y.z,z[la+6]=H.x,z[la+7]=H.y,z[la+8]=H.z;la+=9}if(Da.length)D=Da[o.a],L=Da[o.b],z=Da[o.c],ca[N]=D.x,ca[N+1]=D.y,ca[N+2]=D.z,ca[N+3]=D.w,ca[N+4]=L.x,ca[N+5]=L.y,ca[N+6]=L.z,ca[N+7]=L.w,ca[N+
|
|
|
+8]=z.x,ca[N+9]=z.y,ca[N+10]=z.z,ca[N+11]=z.w,D=La[o.a],L=La[o.b],z=La[o.c],aa[N]=D.x,aa[N+1]=D.y,aa[N+2]=D.z,aa[N+3]=D.w,aa[N+4]=L.x,aa[N+5]=L.y,aa[N+6]=L.z,aa[N+7]=L.w,aa[N+8]=z.x,aa[N+9]=z.y,aa[N+10]=z.z,aa[N+11]=z.w,D=Ja[o.a],L=Ja[o.b],z=Ja[o.c],ea[N]=D.x,ea[N+1]=D.y,ea[N+2]=D.z,ea[N+3]=1,ea[N+4]=L.x,ea[N+5]=L.y,ea[N+6]=L.z,ea[N+7]=1,ea[N+8]=z.x,ea[N+9]=z.y,ea[N+10]=z.z,ea[N+11]=1,D=Ka[o.a],L=Ka[o.b],z=Ka[o.c],oa[N]=D.x,oa[N+1]=D.y,oa[N+2]=D.z,oa[N+3]=1,oa[N+4]=L.x,oa[N+5]=L.y,oa[N+6]=L.z,oa[N+
|
|
|
+7]=1,oa[N+8]=z.x,oa[N+9]=z.y,oa[N+10]=z.z,oa[N+11]=1,N+=12;if(va&&C)v.length==3&&C==THREE.VertexColors?(o=v[0],D=v[1],L=v[2]):L=D=o=x,Z[Q]=o.r,Z[Q+1]=o.g,Z[Q+2]=o.b,Z[Q+3]=D.r,Z[Q+4]=D.g,Z[Q+5]=D.b,Z[Q+6]=L.r,Z[Q+7]=L.g,Z[Q+8]=L.b,Q+=9;if(Aa&&ja.hasTangents)v=w[0],x=w[1],o=w[2],W[X]=v.x,W[X+1]=v.y,W[X+2]=v.z,W[X+3]=v.w,W[X+4]=x.x,W[X+5]=x.y,W[X+6]=x.z,W[X+7]=x.w,W[X+8]=o.x,W[X+9]=o.y,W[X+10]=o.z,W[X+11]=o.w,X+=12;if(sa&&A)if(p.length==3&&pa)for(w=0;w<3;w++)u=p[w],fa[na]=u.x,fa[na+1]=u.y,fa[na+2]=
|
|
|
+u.z,na+=3;else for(w=0;w<3;w++)fa[na]=u.x,fa[na+1]=u.y,fa[na+2]=u.z,na+=3;if(qa&&F!==void 0&&y)for(w=0;w<3;w++)p=F[w],ga[U]=p.u,ga[U+1]=p.v,U+=2;if(qa&&I!==void 0&&y)for(w=0;w<3;w++)p=I[w],da[R]=p.u,da[R+1]=p.v,R+=2;ra&&(ha[P]=K,ha[P+1]=K+1,ha[P+2]=K+2,P+=3,ka[S]=K,ka[S+1]=K+1,ka[S+2]=K,ka[S+3]=K+2,ka[S+4]=K+1,ka[S+5]=K+2,S+=6,K+=3)}else if(o instanceof THREE.Face4){if(wa)T=ua[o.a].position,Y=ua[o.b].position,H=ua[o.c].position,G=ua[o.d].position,V[M]=T.x,V[M+1]=T.y,V[M+2]=T.z,V[M+3]=Y.x,V[M+4]=Y.y,
|
|
|
+V[M+5]=Y.z,V[M+6]=H.x,V[M+7]=H.y,V[M+8]=H.z,V[M+9]=G.x,V[M+10]=G.y,V[M+11]=G.z,M+=12;if(ia)for(O in ia)if(z=ia[O],z.__original.needsUpdate)D=z.offset,L=z.offsetSrc,z.size===1?(z.boundTo===void 0||z.boundTo==="vertices"?(z.array[D+0]=z.value[o.a],z.array[D+1]=z.value[o.b],z.array[D+2]=z.value[o.c],z.array[D+3]=z.value[o.d]):z.boundTo==="faces"?(z.array[D+0]=z.value[L],z.array[D+1]=z.value[L],z.array[D+2]=z.value[L],z.array[D+3]=z.value[L],z.offsetSrc++):z.boundTo==="faceVertices"&&(z.array[D+0]=z.value[L+
|
|
|
+0],z.array[D+1]=z.value[L+1],z.array[D+2]=z.value[L+2],z.array[D+3]=z.value[L+3],z.offsetSrc+=4),z.offset+=4):(z.boundTo===void 0||z.boundTo==="vertices"?(T=z.value[o.a],Y=z.value[o.b],H=z.value[o.c],G=z.value[o.d]):z.boundTo==="faces"?(T=z.value[L],Y=z.value[L],H=z.value[L],G=z.value[L],z.offsetSrc++):z.boundTo==="faceVertices"&&(T=z.value[L+0],Y=z.value[L+1],H=z.value[L+2],G=z.value[L+3],z.offsetSrc+=4),z.size===2?(z.array[D+0]=T.x,z.array[D+1]=T.y,z.array[D+2]=Y.x,z.array[D+3]=Y.y,z.array[D+4]=
|
|
|
+H.x,z.array[D+5]=H.y,z.array[D+6]=G.x,z.array[D+7]=G.y,z.offset+=8):z.size===3?(z.type==="c"?(z.array[D+0]=T.r,z.array[D+1]=T.g,z.array[D+2]=T.b,z.array[D+3]=Y.r,z.array[D+4]=Y.g,z.array[D+5]=Y.b,z.array[D+6]=H.r,z.array[D+7]=H.g,z.array[D+8]=H.b,z.array[D+9]=G.r,z.array[D+10]=G.g,z.array[D+11]=G.b):(z.array[D+0]=T.x,z.array[D+1]=T.y,z.array[D+2]=T.z,z.array[D+3]=Y.x,z.array[D+4]=Y.y,z.array[D+5]=Y.z,z.array[D+6]=H.x,z.array[D+7]=H.y,z.array[D+8]=H.z,z.array[D+9]=G.x,z.array[D+10]=G.y,z.array[D+11]=
|
|
|
+G.z),z.offset+=12):(z.array[D+0]=T.x,z.array[D+1]=T.y,z.array[D+2]=T.z,z.array[D+3]=T.w,z.array[D+4]=Y.x,z.array[D+5]=Y.y,z.array[D+6]=Y.z,z.array[D+7]=Y.w,z.array[D+8]=H.x,z.array[D+9]=H.y,z.array[D+10]=H.z,z.array[D+11]=H.w,z.array[D+12]=G.x,z.array[D+13]=G.y,z.array[D+14]=G.z,z.array[D+15]=G.w,z.offset+=16));if(ya){D=0;for(L=za.length;D<L;D++)T=za[D].vertices[o.a].position,Y=za[D].vertices[o.b].position,H=za[D].vertices[o.c].position,G=za[D].vertices[o.d].position,z=ma[D],z[la+0]=T.x,z[la+1]=T.y,
|
|
|
+z[la+2]=T.z,z[la+3]=Y.x,z[la+4]=Y.y,z[la+5]=Y.z,z[la+6]=H.x,z[la+7]=H.y,z[la+8]=H.z,z[la+9]=G.x,z[la+10]=G.y,z[la+11]=G.z;la+=12}if(Da.length)D=Da[o.a],L=Da[o.b],z=Da[o.c],J=Da[o.d],ca[N]=D.x,ca[N+1]=D.y,ca[N+2]=D.z,ca[N+3]=D.w,ca[N+4]=L.x,ca[N+5]=L.y,ca[N+6]=L.z,ca[N+7]=L.w,ca[N+8]=z.x,ca[N+9]=z.y,ca[N+10]=z.z,ca[N+11]=z.w,ca[N+12]=J.x,ca[N+13]=J.y,ca[N+14]=J.z,ca[N+15]=J.w,D=La[o.a],L=La[o.b],z=La[o.c],J=La[o.d],aa[N]=D.x,aa[N+1]=D.y,aa[N+2]=D.z,aa[N+3]=D.w,aa[N+4]=L.x,aa[N+5]=L.y,aa[N+6]=L.z,aa[N+
|
|
|
+7]=L.w,aa[N+8]=z.x,aa[N+9]=z.y,aa[N+10]=z.z,aa[N+11]=z.w,aa[N+12]=J.x,aa[N+13]=J.y,aa[N+14]=J.z,aa[N+15]=J.w,D=Ja[o.a],L=Ja[o.b],z=Ja[o.c],J=Ja[o.d],ea[N]=D.x,ea[N+1]=D.y,ea[N+2]=D.z,ea[N+3]=1,ea[N+4]=L.x,ea[N+5]=L.y,ea[N+6]=L.z,ea[N+7]=1,ea[N+8]=z.x,ea[N+9]=z.y,ea[N+10]=z.z,ea[N+11]=1,ea[N+12]=J.x,ea[N+13]=J.y,ea[N+14]=J.z,ea[N+15]=1,D=Ka[o.a],L=Ka[o.b],z=Ka[o.c],o=Ka[o.d],oa[N]=D.x,oa[N+1]=D.y,oa[N+2]=D.z,oa[N+3]=1,oa[N+4]=L.x,oa[N+5]=L.y,oa[N+6]=L.z,oa[N+7]=1,oa[N+8]=z.x,oa[N+9]=z.y,oa[N+10]=z.z,
|
|
|
+oa[N+11]=1,oa[N+12]=o.x,oa[N+13]=o.y,oa[N+14]=o.z,oa[N+15]=1,N+=16;if(va&&C)v.length==4&&C==THREE.VertexColors?(o=v[0],D=v[1],L=v[2],v=v[3]):v=L=D=o=x,Z[Q]=o.r,Z[Q+1]=o.g,Z[Q+2]=o.b,Z[Q+3]=D.r,Z[Q+4]=D.g,Z[Q+5]=D.b,Z[Q+6]=L.r,Z[Q+7]=L.g,Z[Q+8]=L.b,Z[Q+9]=v.r,Z[Q+10]=v.g,Z[Q+11]=v.b,Q+=12;if(Aa&&ja.hasTangents)v=w[0],x=w[1],o=w[2],w=w[3],W[X]=v.x,W[X+1]=v.y,W[X+2]=v.z,W[X+3]=v.w,W[X+4]=x.x,W[X+5]=x.y,W[X+6]=x.z,W[X+7]=x.w,W[X+8]=o.x,W[X+9]=o.y,W[X+10]=o.z,W[X+11]=o.w,W[X+12]=w.x,W[X+13]=w.y,W[X+14]=
|
|
|
+w.z,W[X+15]=w.w,X+=16;if(sa&&A)if(p.length==4&&pa)for(w=0;w<4;w++)u=p[w],fa[na]=u.x,fa[na+1]=u.y,fa[na+2]=u.z,na+=3;else for(w=0;w<4;w++)fa[na]=u.x,fa[na+1]=u.y,fa[na+2]=u.z,na+=3;if(qa&&F!==void 0&&y)for(w=0;w<4;w++)p=F[w],ga[U]=p.u,ga[U+1]=p.v,U+=2;if(qa&&I!==void 0&&y)for(w=0;w<4;w++)p=I[w],da[R]=p.u,da[R+1]=p.v,R+=2;ra&&(ha[P]=K,ha[P+1]=K+1,ha[P+2]=K+3,ha[P+3]=K+1,ha[P+4]=K+2,ha[P+5]=K+3,P+=6,ka[S]=K,ka[S+1]=K+1,ka[S+2]=K,ka[S+3]=K+3,ka[S+4]=K+1,ka[S+5]=K+2,ka[S+6]=K+2,ka[S+7]=K+3,S+=8,K+=4)}if(Ha){t=
|
|
|
+0;for(n=Ha.length;t<n;t++)ha[P]=Ha[t].a,ha[P+1]=Ha[t].b,ha[P+2]=Ha[t].c,ha[P+3]=Ha[t].a,ha[P+4]=Ha[t].c,ha[P+5]=Ha[t].d,P+=6}wa&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,V,m));if(ia)for(O in ia)z=ia[O],z.__original.needsUpdate&&(k.bindBuffer(k.ARRAY_BUFFER,z.buffer),k.bufferData(k.ARRAY_BUFFER,z.array,m));if(ya){D=0;for(L=za.length;D<L;D++)k.bindBuffer(k.ARRAY_BUFFER,g.__webglMorphTargetsBuffers[D]),k.bufferData(k.ARRAY_BUFFER,ma[D],m)}va&&Q>0&&(k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
+g.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,Z,m));sa&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglNormalBuffer),k.bufferData(k.ARRAY_BUFFER,fa,m));Aa&&ja.hasTangents&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglTangentBuffer),k.bufferData(k.ARRAY_BUFFER,W,m));qa&&U>0&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglUVBuffer),k.bufferData(k.ARRAY_BUFFER,ga,m));qa&&R>0&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglUV2Buffer),k.bufferData(k.ARRAY_BUFFER,da,m));ra&&(k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,g.__webglFaceBuffer),
|
|
|
+k.bufferData(k.ELEMENT_ARRAY_BUFFER,ha,m),k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,g.__webglLineBuffer),k.bufferData(k.ELEMENT_ARRAY_BUFFER,ka,m));N>0&&(k.bindBuffer(k.ARRAY_BUFFER,g.__webglSkinVertexABuffer),k.bufferData(k.ARRAY_BUFFER,ea,m),k.bindBuffer(k.ARRAY_BUFFER,g.__webglSkinVertexBBuffer),k.bufferData(k.ARRAY_BUFFER,oa,m),k.bindBuffer(k.ARRAY_BUFFER,g.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,aa,m),k.bindBuffer(k.ARRAY_BUFFER,g.__webglSkinWeightsBuffer),k.bufferData(k.ARRAY_BUFFER,
|
|
|
+ca,m));j.dynamic||(delete g.__inittedArrays,delete g.__colorArray,delete g.__normalArray,delete g.__tangentArray,delete g.__uvArray,delete g.__uv2Array,delete g.__faceArray,delete g.__vertexArray,delete g.__lineArray,delete g.__skinVertexAArray,delete g.__skinVertexBArray,delete g.__skinIndexArray,delete g.__skinWeightArray)}}f.__dirtyVertices=!1;f.__dirtyMorphTargets=!1;f.__dirtyElements=!1;f.__dirtyUvs=!1;f.__dirtyNormals=!1;f.__dirtyTangents=!1;f.__dirtyColors=!1;B(h)}else if(b instanceof THREE.Ribbon){f=
|
|
|
+b.geometry;if(f.__dirtyVertices||f.__dirtyColors){b=f;e=k.DYNAMIC_DRAW;y=b.vertices;g=b.colors;C=y.length;j=g.length;A=b.__vertexArray;m=b.__colorArray;F=b.__dirtyColors;if(b.__dirtyVertices){for(t=0;t<C;t++)n=y[t].position,h=t*3,A[h]=n.x,A[h+1]=n.y,A[h+2]=n.z;k.bindBuffer(k.ARRAY_BUFFER,b.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,A,e)}if(F){for(t=0;t<j;t++)color=g[t],h=t*3,m[h]=color.r,m[h+1]=color.g,m[h+2]=color.b;k.bindBuffer(k.ARRAY_BUFFER,b.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
+m,e)}}f.__dirtyVertices=!1;f.__dirtyColors=!1}else if(b instanceof THREE.Line){f=b.geometry;if(f.__dirtyVertices||f.__dirtyColors){b=f;e=k.DYNAMIC_DRAW;y=b.vertices;g=b.colors;C=y.length;j=g.length;A=b.__vertexArray;m=b.__colorArray;F=b.__dirtyColors;if(b.__dirtyVertices){for(t=0;t<C;t++)n=y[t].position,h=t*3,A[h]=n.x,A[h+1]=n.y,A[h+2]=n.z;k.bindBuffer(k.ARRAY_BUFFER,b.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,A,e)}if(F){for(t=0;t<j;t++)color=g[t],h=t*3,m[h]=color.r,m[h+1]=color.g,m[h+2]=color.b;
|
|
|
+k.bindBuffer(k.ARRAY_BUFFER,b.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,m,e)}}f.__dirtyVertices=!1;f.__dirtyColors=!1}else if(b instanceof THREE.ParticleSystem)f=b.geometry,g=E(f),(f.__dirtyVertices||f.__dirtyColors||b.sortParticles||g)&&c(f,k.DYNAMIC_DRAW,b),f.__dirtyVertices=!1,f.__dirtyColors=!1,B(f)}function F(b,e){var c;for(c=b.length-1;c>=0;c--)b[c].object==e&&b.splice(c,1)}function A(b){function e(b){var h=[];c=0;for(f=b.length;c<f;c++)b[c]==void 0?h.push("undefined"):h.push(b[c].id);
|
|
|
+return h.join("_")}var c,f,h,g,j,k,m,t,o={},n=b.morphTargets!==void 0?b.morphTargets.length:0;b.geometryGroups={};h=0;for(g=b.faces.length;h<g;h++)j=b.faces[h],k=j.materials,m=e(k),o[m]==void 0&&(o[m]={hash:m,counter:0}),t=o[m].hash+"_"+o[m].counter,b.geometryGroups[t]==void 0&&(b.geometryGroups[t]={faces:[],materials:k,vertices:0,numMorphTargets:n}),j=j instanceof THREE.Face3?3:4,b.geometryGroups[t].vertices+j>65535&&(o[m].counter+=1,t=o[m].hash+"_"+o[m].counter,b.geometryGroups[t]==void 0&&(b.geometryGroups[t]=
|
|
|
+{faces:[],materials:k,vertices:0,numMorphTargets:n})),b.geometryGroups[t].faces.push(h),b.geometryGroups[t].vertices+=j}function P(b,e,c){b.push({buffer:e,object:c,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function H(b){if(b!=ha){switch(b){case THREE.AdditiveBlending:k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE);break;case THREE.SubtractiveBlending:k.blendEquation(k.FUNC_ADD);k.blendFunc(k.ZERO,k.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:k.blendEquation(k.FUNC_ADD);
|
|
|
+k.blendFunc(k.ZERO,k.SRC_COLOR);break;default:k.blendEquationSeparate(k.FUNC_ADD,k.FUNC_ADD),k.blendFuncSeparate(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA,k.ONE,k.ONE_MINUS_SRC_ALPHA)}ha=b}}function G(b,e,c){(c.width&c.width-1)==0&&(c.height&c.height-1)==0?(k.texParameteri(b,k.TEXTURE_WRAP_S,K(e.wrapS)),k.texParameteri(b,k.TEXTURE_WRAP_T,K(e.wrapT)),k.texParameteri(b,k.TEXTURE_MAG_FILTER,K(e.magFilter)),k.texParameteri(b,k.TEXTURE_MIN_FILTER,K(e.minFilter)),k.generateMipmap(b)):(k.texParameteri(b,k.TEXTURE_WRAP_S,
|
|
|
+k.CLAMP_TO_EDGE),k.texParameteri(b,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE),k.texParameteri(b,k.TEXTURE_MAG_FILTER,Z(e.magFilter)),k.texParameteri(b,k.TEXTURE_MIN_FILTER,Z(e.minFilter)))}function U(b,e){if(b.needsUpdate)b.__webglInit?(k.bindTexture(k.TEXTURE_2D,b.__webglTexture),k.texImage2D(k.TEXTURE_2D,0,k.RGBA,k.RGBA,k.UNSIGNED_BYTE,b.image)):(b.__webglTexture=k.createTexture(),k.bindTexture(k.TEXTURE_2D,b.__webglTexture),k.texImage2D(k.TEXTURE_2D,0,k.RGBA,k.RGBA,k.UNSIGNED_BYTE,b.image),b.__webglInit=
|
|
|
+!0),G(k.TEXTURE_2D,b,b.image),k.bindTexture(k.TEXTURE_2D,null),b.needsUpdate=!1;k.activeTexture(k.TEXTURE0+e);k.bindTexture(k.TEXTURE_2D,b.__webglTexture)}function V(b){if(b&&!b.__webglFramebuffer){if(b.depthBuffer===void 0)b.depthBuffer=!0;if(b.stencilBuffer===void 0)b.stencilBuffer=!0;b.__webglFramebuffer=k.createFramebuffer();b.__webglRenderbuffer=k.createRenderbuffer();b.__webglTexture=k.createTexture();k.bindTexture(k.TEXTURE_2D,b.__webglTexture);k.texParameteri(k.TEXTURE_2D,k.TEXTURE_WRAP_S,
|
|
|
+K(b.wrapS));k.texParameteri(k.TEXTURE_2D,k.TEXTURE_WRAP_T,K(b.wrapT));k.texParameteri(k.TEXTURE_2D,k.TEXTURE_MAG_FILTER,K(b.magFilter));k.texParameteri(k.TEXTURE_2D,k.TEXTURE_MIN_FILTER,K(b.minFilter));k.texImage2D(k.TEXTURE_2D,0,K(b.format),b.width,b.height,0,K(b.format),K(b.type),null);k.bindRenderbuffer(k.RENDERBUFFER,b.__webglRenderbuffer);k.bindFramebuffer(k.FRAMEBUFFER,b.__webglFramebuffer);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,k.TEXTURE_2D,b.__webglTexture,0);b.depthBuffer&&
|
|
|
+!b.stencilBuffer?(k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_COMPONENT16,b.width,b.height),k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_ATTACHMENT,k.RENDERBUFFER,b.__webglRenderbuffer)):b.depthBuffer&&b.stencilBuffer?(k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_STENCIL,b.width,b.height),k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_STENCIL_ATTACHMENT,k.RENDERBUFFER,b.__webglRenderbuffer)):k.renderbufferStorage(k.RENDERBUFFER,k.RGBA4,b.width,b.height);k.bindTexture(k.TEXTURE_2D,null);k.bindRenderbuffer(k.RENDERBUFFER,
|
|
|
+null);k.bindFramebuffer(k.FRAMEBUFFER,null)}var e,c;b?(e=b.__webglFramebuffer,c=b.width,b=b.height):(e=null,c=ca,b=T);e!=ga&&(k.bindFramebuffer(k.FRAMEBUFFER,e),k.viewport(aa,ma,c,b),ga=e)}function J(b,e){var c;b=="fragment"?c=k.createShader(k.FRAGMENT_SHADER):b=="vertex"&&(c=k.createShader(k.VERTEX_SHADER));k.shaderSource(c,e);k.compileShader(c);if(!k.getShaderParameter(c,k.COMPILE_STATUS))return console.error(k.getShaderInfoLog(c)),console.error(e),null;return c}function Z(b){switch(b){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return k.NEAREST;
|
|
|
default:return k.LINEAR}}function K(b){switch(b){case THREE.RepeatWrapping:return k.REPEAT;case THREE.ClampToEdgeWrapping:return k.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return k.MIRRORED_REPEAT;case THREE.NearestFilter:return k.NEAREST;case THREE.NearestMipMapNearestFilter:return k.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return k.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return k.LINEAR;case THREE.LinearMipMapNearestFilter:return k.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return k.LINEAR_MIPMAP_LINEAR;
|
|
|
case THREE.ByteType:return k.BYTE;case THREE.UnsignedByteType:return k.UNSIGNED_BYTE;case THREE.ShortType:return k.SHORT;case THREE.UnsignedShortType:return k.UNSIGNED_SHORT;case THREE.IntType:return k.INT;case THREE.UnsignedShortType:return k.UNSIGNED_INT;case THREE.FloatType:return k.FLOAT;case THREE.AlphaFormat:return k.ALPHA;case THREE.RGBFormat:return k.RGB;case THREE.RGBAFormat:return k.RGBA;case THREE.LuminanceFormat:return k.LUMINANCE;case THREE.LuminanceAlphaFormat:return k.LUMINANCE_ALPHA}return 0}
|
|
|
-var S=this,k,V=[],O=null,fa=null,ea=!0,W=null,da=null,ga=null,ka=null,pa=null,R=null,ha=null,$=0,ma=0,aa=0,ia=0,X=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],na=new THREE.Matrix4,la=new Float32Array(16),oa=new Float32Array(16),wa=new THREE.Vector4,Aa={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},b=b||{},va=b.canvas!==void 0?b.canvas:document.createElement("canvas"),
|
|
|
+var S=this,k,W=[],O=null,ga=null,fa=!0,X=null,ea=null,ha=null,ka=null,pa=null,R=null,ia=null,aa=0,ma=0,ca=0,T=0,Y=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],na=new THREE.Matrix4,la=new Float32Array(16),oa=new Float32Array(16),wa=new THREE.Vector4,Aa={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},b=b||{},va=b.canvas!==void 0?b.canvas:document.createElement("canvas"),
|
|
|
ya=b.stencil!==void 0?b.stencil:!0,Ma=b.antialias!==void 0?b.antialias:!1,sa=b.clearColor!==void 0?new THREE.Color(b.clearColor):new THREE.Color(0),ra=b.clearAlpha!==void 0?b.clearAlpha:0;this.data={vertices:0,faces:0,drawCalls:0};this.maxMorphTargets=8;this.domElement=va;this.sortObjects=this.autoClear=!0;try{if(!(k=va.getContext("experimental-webgl",{antialias:Ma,stencil:ya})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+k.getParameter(k.VERSION)+" | "+k.getParameter(k.VENDOR)+
|
|
|
-" | "+k.getParameter(k.RENDERER)+" | "+k.getParameter(k.SHADING_LANGUAGE_VERSION))}catch(qa){console.error(qa)}k.clearColor(0,0,0,1);k.clearDepth(1);k.enable(k.DEPTH_TEST);k.depthFunc(k.LEQUAL);k.frontFace(k.CCW);k.cullFace(k.BACK);k.enable(k.CULL_FACE);k.enable(k.BLEND);k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA);k.clearColor(sa.r,sa.g,sa.b,ra);this.context=k;var Ba=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0;if(ya){var ca={};ca.vertices=new Float32Array(12);
|
|
|
-ca.faces=new Uint16Array(6);ca.darkness=0.5;ca.vertices[0]=-20;ca.vertices[1]=-20;ca.vertices[2]=-1;ca.vertices[3]=20;ca.vertices[4]=-20;ca.vertices[5]=-1;ca.vertices[6]=20;ca.vertices[7]=20;ca.vertices[8]=-1;ca.vertices[9]=-20;ca.vertices[10]=20;ca.vertices[11]=-1;ca.faces[0]=0;ca.faces[1]=1;ca.faces[2]=2;ca.faces[3]=0;ca.faces[4]=2;ca.faces[5]=3;ca.vertexBuffer=k.createBuffer();ca.elementBuffer=k.createBuffer();k.bindBuffer(k.ARRAY_BUFFER,ca.vertexBuffer);k.bufferData(k.ARRAY_BUFFER,ca.vertices,
|
|
|
-k.STATIC_DRAW);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,ca.elementBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,ca.faces,k.STATIC_DRAW);ca.program=k.createProgram();k.attachShader(ca.program,J("fragment",THREE.ShaderLib.shadowPost.fragmentShader));k.attachShader(ca.program,J("vertex",THREE.ShaderLib.shadowPost.vertexShader));k.linkProgram(ca.program);ca.vertexLocation=k.getAttribLocation(ca.program,"position");ca.projectionLocation=k.getUniformLocation(ca.program,"projectionMatrix");ca.darknessLocation=
|
|
|
-k.getUniformLocation(ca.program,"darkness")}var M={};M.vertices=new Float32Array(16);M.faces=new Uint16Array(6);b=0;M.vertices[b++]=-1;M.vertices[b++]=-1;M.vertices[b++]=0;M.vertices[b++]=0;M.vertices[b++]=1;M.vertices[b++]=-1;M.vertices[b++]=1;M.vertices[b++]=0;M.vertices[b++]=1;M.vertices[b++]=1;M.vertices[b++]=1;M.vertices[b++]=1;M.vertices[b++]=-1;M.vertices[b++]=1;M.vertices[b++]=0;M.vertices[b++]=1;b=0;M.faces[b++]=0;M.faces[b++]=1;M.faces[b++]=2;M.faces[b++]=0;M.faces[b++]=2;M.faces[b++]=3;
|
|
|
+" | "+k.getParameter(k.RENDERER)+" | "+k.getParameter(k.SHADING_LANGUAGE_VERSION))}catch(qa){console.error(qa)}k.clearColor(0,0,0,1);k.clearDepth(1);k.enable(k.DEPTH_TEST);k.depthFunc(k.LEQUAL);k.frontFace(k.CCW);k.cullFace(k.BACK);k.enable(k.CULL_FACE);k.enable(k.BLEND);k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA);k.clearColor(sa.r,sa.g,sa.b,ra);this.context=k;var Ba=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0;if(ya){var da={};da.vertices=new Float32Array(12);
|
|
|
+da.faces=new Uint16Array(6);da.darkness=0.5;da.vertices[0]=-20;da.vertices[1]=-20;da.vertices[2]=-1;da.vertices[3]=20;da.vertices[4]=-20;da.vertices[5]=-1;da.vertices[6]=20;da.vertices[7]=20;da.vertices[8]=-1;da.vertices[9]=-20;da.vertices[10]=20;da.vertices[11]=-1;da.faces[0]=0;da.faces[1]=1;da.faces[2]=2;da.faces[3]=0;da.faces[4]=2;da.faces[5]=3;da.vertexBuffer=k.createBuffer();da.elementBuffer=k.createBuffer();k.bindBuffer(k.ARRAY_BUFFER,da.vertexBuffer);k.bufferData(k.ARRAY_BUFFER,da.vertices,
|
|
|
+k.STATIC_DRAW);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,da.elementBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,da.faces,k.STATIC_DRAW);da.program=k.createProgram();k.attachShader(da.program,J("fragment",THREE.ShaderLib.shadowPost.fragmentShader));k.attachShader(da.program,J("vertex",THREE.ShaderLib.shadowPost.vertexShader));k.linkProgram(da.program);da.vertexLocation=k.getAttribLocation(da.program,"position");da.projectionLocation=k.getUniformLocation(da.program,"projectionMatrix");da.darknessLocation=
|
|
|
+k.getUniformLocation(da.program,"darkness")}var M={};M.vertices=new Float32Array(16);M.faces=new Uint16Array(6);b=0;M.vertices[b++]=-1;M.vertices[b++]=-1;M.vertices[b++]=0;M.vertices[b++]=0;M.vertices[b++]=1;M.vertices[b++]=-1;M.vertices[b++]=1;M.vertices[b++]=0;M.vertices[b++]=1;M.vertices[b++]=1;M.vertices[b++]=1;M.vertices[b++]=1;M.vertices[b++]=-1;M.vertices[b++]=1;M.vertices[b++]=0;M.vertices[b++]=1;b=0;M.faces[b++]=0;M.faces[b++]=1;M.faces[b++]=2;M.faces[b++]=0;M.faces[b++]=2;M.faces[b++]=3;
|
|
|
M.vertexBuffer=k.createBuffer();M.elementBuffer=k.createBuffer();M.tempTexture=k.createTexture();M.occlusionTexture=k.createTexture();k.bindBuffer(k.ARRAY_BUFFER,M.vertexBuffer);k.bufferData(k.ARRAY_BUFFER,M.vertices,k.STATIC_DRAW);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,M.elementBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,M.faces,k.STATIC_DRAW);k.bindTexture(k.TEXTURE_2D,M.tempTexture);k.texImage2D(k.TEXTURE_2D,0,k.RGB,16,16,0,k.RGB,k.UNSIGNED_BYTE,null);k.texParameteri(k.TEXTURE_2D,k.TEXTURE_WRAP_S,
|
|
|
k.CLAMP_TO_EDGE);k.texParameteri(k.TEXTURE_2D,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE);k.texParameteri(k.TEXTURE_2D,k.TEXTURE_MAG_FILTER,k.NEAREST);k.texParameteri(k.TEXTURE_2D,k.TEXTURE_MIN_FILTER,k.NEAREST);k.bindTexture(k.TEXTURE_2D,M.occlusionTexture);k.texImage2D(k.TEXTURE_2D,0,k.RGBA,16,16,0,k.RGBA,k.UNSIGNED_BYTE,null);k.texParameteri(k.TEXTURE_2D,k.TEXTURE_WRAP_S,k.CLAMP_TO_EDGE);k.texParameteri(k.TEXTURE_2D,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE);k.texParameteri(k.TEXTURE_2D,k.TEXTURE_MAG_FILTER,k.NEAREST);
|
|
|
k.texParameteri(k.TEXTURE_2D,k.TEXTURE_MIN_FILTER,k.NEAREST);k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS)<=0?(M.hasVertexTexture=!1,M.program=k.createProgram(),k.attachShader(M.program,J("fragment",THREE.ShaderLib.lensFlare.fragmentShader)),k.attachShader(M.program,J("vertex",THREE.ShaderLib.lensFlare.vertexShader))):(M.hasVertexTexture=!0,M.program=k.createProgram(),k.attachShader(M.program,J("fragment",THREE.ShaderLib.lensFlareVertexTexture.fragmentShader)),k.attachShader(M.program,J("vertex",
|
|
@@ -307,37 +307,37 @@ THREE.ShaderLib.lensFlareVertexTexture.vertexShader)));k.linkProgram(M.program);
|
|
|
Q.vertices[b++]=0;Q.faces[b++]=0;Q.faces[b++]=1;Q.faces[b++]=2;Q.faces[b++]=0;Q.faces[b++]=2;Q.faces[b++]=3;Q.vertexBuffer=k.createBuffer();Q.elementBuffer=k.createBuffer();k.bindBuffer(k.ARRAY_BUFFER,Q.vertexBuffer);k.bufferData(k.ARRAY_BUFFER,Q.vertices,k.STATIC_DRAW);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,Q.elementBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Q.faces,k.STATIC_DRAW);Q.program=k.createProgram();k.attachShader(Q.program,J("fragment",THREE.ShaderLib.sprite.fragmentShader));k.attachShader(Q.program,
|
|
|
J("vertex",THREE.ShaderLib.sprite.vertexShader));k.linkProgram(Q.program);Q.attributes={};Q.uniforms={};Q.attributes.position=k.getAttribLocation(Q.program,"position");Q.attributes.uv=k.getAttribLocation(Q.program,"uv");Q.uniforms.uvOffset=k.getUniformLocation(Q.program,"uvOffset");Q.uniforms.uvScale=k.getUniformLocation(Q.program,"uvScale");Q.uniforms.rotation=k.getUniformLocation(Q.program,"rotation");Q.uniforms.scale=k.getUniformLocation(Q.program,"scale");Q.uniforms.alignment=k.getUniformLocation(Q.program,
|
|
|
"alignment");Q.uniforms.map=k.getUniformLocation(Q.program,"map");Q.uniforms.opacity=k.getUniformLocation(Q.program,"opacity");Q.uniforms.useScreenCoordinates=k.getUniformLocation(Q.program,"useScreenCoordinates");Q.uniforms.affectedByDistance=k.getUniformLocation(Q.program,"affectedByDistance");Q.uniforms.screenPosition=k.getUniformLocation(Q.program,"screenPosition");Q.uniforms.modelViewMatrix=k.getUniformLocation(Q.program,"modelViewMatrix");Q.uniforms.projectionMatrix=k.getUniformLocation(Q.program,
|
|
|
-"projectionMatrix");var ja=!1;this.setSize=function(b,e){va.width=b;va.height=e;this.setViewport(0,0,va.width,va.height)};this.setViewport=function(b,e,c,f){$=b;ma=e;aa=c;ia=f;k.viewport($,ma,aa,ia)};this.setScissor=function(b,e,c,f){k.scissor(b,e,c,f)};this.enableScissorTest=function(b){b?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};this.enableDepthBufferWrite=function(b){ea=b;k.depthMask(b)};this.setClearColorHex=function(b,e){sa.setHex(b);ra=e;k.clearColor(sa.r,sa.g,sa.b,ra)};this.setClearColor=
|
|
|
-function(b,e){sa.copy(b);ra=e;k.clearColor(sa.r,sa.g,sa.b,ra)};this.clear=function(){k.clear(k.COLOR_BUFFER_BIT|k.DEPTH_BUFFER_BIT|k.STENCIL_BUFFER_BIT)};this.setStencilShadowDarkness=function(b){ca.darkness=b};this.getContext=function(){return k};this.initMaterial=function(b,e,c,f){var h,g,j;b instanceof THREE.MeshDepthMaterial?j="depth":b instanceof THREE.ShadowVolumeDynamicMaterial?j="shadowVolumeDynamic":b instanceof THREE.MeshNormalMaterial?j="normal":b instanceof THREE.MeshBasicMaterial?j="basic":
|
|
|
+"projectionMatrix");var ja=!1;this.setSize=function(b,e){va.width=b;va.height=e;this.setViewport(0,0,va.width,va.height)};this.setViewport=function(b,e,c,f){aa=b;ma=e;ca=c;T=f;k.viewport(aa,ma,ca,T)};this.setScissor=function(b,e,c,f){k.scissor(b,e,c,f)};this.enableScissorTest=function(b){b?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};this.enableDepthBufferWrite=function(b){fa=b;k.depthMask(b)};this.setClearColorHex=function(b,e){sa.setHex(b);ra=e;k.clearColor(sa.r,sa.g,sa.b,ra)};this.setClearColor=
|
|
|
+function(b,e){sa.copy(b);ra=e;k.clearColor(sa.r,sa.g,sa.b,ra)};this.clear=function(){k.clear(k.COLOR_BUFFER_BIT|k.DEPTH_BUFFER_BIT|k.STENCIL_BUFFER_BIT)};this.setStencilShadowDarkness=function(b){da.darkness=b};this.getContext=function(){return k};this.initMaterial=function(b,e,c,f){var h,g,j;b instanceof THREE.MeshDepthMaterial?j="depth":b instanceof THREE.ShadowVolumeDynamicMaterial?j="shadowVolumeDynamic":b instanceof THREE.MeshNormalMaterial?j="normal":b instanceof THREE.MeshBasicMaterial?j="basic":
|
|
|
b instanceof THREE.MeshLambertMaterial?j="lambert":b instanceof THREE.MeshPhongMaterial?j="phong":b instanceof THREE.LineBasicMaterial?j="basic":b instanceof THREE.ParticleBasicMaterial&&(j="particle_basic");if(j){var m=THREE.ShaderLib[j];b.uniforms=THREE.UniformsUtils.clone(m.uniforms);b.vertexShader=m.vertexShader;b.fragmentShader=m.fragmentShader}var t,o,n;t=n=m=0;for(o=e.length;t<o;t++)g=e[t],g instanceof THREE.DirectionalLight&&n++,g instanceof THREE.PointLight&&m++;m+n<=4?e=n:(e=Math.ceil(4*
|
|
|
n/(m+n)),m=4-e);g={directional:e,point:m};n=50;if(f!==void 0&&f instanceof THREE.SkinnedMesh)n=f.bones.length;var p;a:{t=b.fragmentShader;o=b.vertexShader;var m=b.uniforms,e=b.attributes,c={map:!!b.map,envMap:!!b.envMap,lightMap:!!b.lightMap,vertexColors:b.vertexColors,fog:c,sizeAttenuation:b.sizeAttenuation,skinning:b.skinning,morphTargets:b.morphTargets,maxMorphTargets:this.maxMorphTargets,maxDirLights:g.directional,maxPointLights:g.point,maxBones:n},u;g=[];j?g.push(j):(g.push(t),g.push(o));for(u in c)g.push(u),
|
|
|
-g.push(c[u]);j=g.join();u=0;for(g=V.length;u<g;u++)if(V[u].code==j){p=V[u].program;break a}u=k.createProgram();g=[Ba?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":
|
|
|
+g.push(c[u]);j=g.join();u=0;for(g=W.length;u<g;u++)if(W[u].code==j){p=W[u].program;break a}u=k.createProgram();g=[Ba?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":
|
|
|
"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
n=["#ifdef GL_ES\nprecision highp float;\n#endif","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,c.fog?"#define USE_FOG":"",c.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.vertexColors?"#define USE_COLOR":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");k.attachShader(u,J("fragment",n+t));k.attachShader(u,J("vertex",g+o));k.linkProgram(u);
|
|
|
k.getProgramParameter(u,k.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+k.getProgramParameter(u,k.VALIDATE_STATUS)+", gl error ["+k.getError()+"]");u.uniforms={};u.attributes={};var v;t=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(v in m)t.push(v);v=t;m=0;for(t=v.length;m<t;m++)o=v[m],u.uniforms[o]=k.getUniformLocation(u,o);t=["position","normal",
|
|
|
-"uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(v=0;v<c.maxMorphTargets;v++)t.push("morphTarget"+v);for(p in e)t.push(p);p=t;v=0;for(e=p.length;v<e;v++)c=p[v],u.attributes[c]=k.getAttribLocation(u,c);V.push({program:u,code:j});p=u}b.program=p;p=b.program.attributes;p.position>=0&&k.enableVertexAttribArray(p.position);p.color>=0&&k.enableVertexAttribArray(p.color);p.normal>=0&&k.enableVertexAttribArray(p.normal);p.tangent>=0&&k.enableVertexAttribArray(p.tangent);
|
|
|
+"uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(v=0;v<c.maxMorphTargets;v++)t.push("morphTarget"+v);for(p in e)t.push(p);p=t;v=0;for(e=p.length;v<e;v++)c=p[v],u.attributes[c]=k.getAttribLocation(u,c);W.push({program:u,code:j});p=u}b.program=p;p=b.program.attributes;p.position>=0&&k.enableVertexAttribArray(p.position);p.color>=0&&k.enableVertexAttribArray(p.color);p.normal>=0&&k.enableVertexAttribArray(p.normal);p.tangent>=0&&k.enableVertexAttribArray(p.tangent);
|
|
|
b.skinning&&p.skinVertexA>=0&&p.skinVertexB>=0&&p.skinIndex>=0&&p.skinWeight>=0&&(k.enableVertexAttribArray(p.skinVertexA),k.enableVertexAttribArray(p.skinVertexB),k.enableVertexAttribArray(p.skinIndex),k.enableVertexAttribArray(p.skinWeight));if(b.attributes)for(h in b.attributes)p[h]!==void 0&&p[h]>=0&&k.enableVertexAttribArray(p[h]);if(b.morphTargets){b.numSupportedMorphTargets=0;p.morphTarget0>=0&&(k.enableVertexAttribArray(p.morphTarget0),b.numSupportedMorphTargets++);p.morphTarget1>=0&&(k.enableVertexAttribArray(p.morphTarget1),
|
|
|
b.numSupportedMorphTargets++);p.morphTarget2>=0&&(k.enableVertexAttribArray(p.morphTarget2),b.numSupportedMorphTargets++);p.morphTarget3>=0&&(k.enableVertexAttribArray(p.morphTarget3),b.numSupportedMorphTargets++);p.morphTarget4>=0&&(k.enableVertexAttribArray(p.morphTarget4),b.numSupportedMorphTargets++);p.morphTarget5>=0&&(k.enableVertexAttribArray(p.morphTarget5),b.numSupportedMorphTargets++);p.morphTarget6>=0&&(k.enableVertexAttribArray(p.morphTarget6),b.numSupportedMorphTargets++);p.morphTarget7>=
|
|
|
-0&&(k.enableVertexAttribArray(p.morphTarget7),b.numSupportedMorphTargets++);f.__webglMorphTargetInfluences=new Float32Array(this.maxMorphTargets);b=0;for(h=this.maxMorphTargets;b<h;b++)f.__webglMorphTargetInfluences[b]=0}};this.render=function(b,c,o,C){var A,E,G,F,X,ia,H,J,K=b.lights,M=b.fog;S.data.vertices=0;S.data.faces=0;S.data.drawCalls=0;c.matrixAutoUpdate&&c.update(void 0,!0);b.update(void 0,!1,c);c.matrixWorldInverse.flattenToArray(oa);c.projectionMatrix.flattenToArray(la);na.multiply(c.projectionMatrix,
|
|
|
-c.matrixWorldInverse);n(na);this.initWebGLObjects(b);U(o);(this.autoClear||C)&&this.clear();X=b.__webglObjects.length;for(C=0;C<X;C++)if(A=b.__webglObjects[C],H=A.object,H.visible)if(!(H instanceof THREE.Mesh)||p(H)){if(H.matrixWorld.flattenToArray(H._objectMatrixArray),y(H,c),u(A),A.render=!0,this.sortObjects)A.object.renderDepth?A.z=A.object.renderDepth:(wa.copy(H.position),na.multiplyVector3(wa),A.z=wa.z)}else A.render=!1;else A.render=!1;this.sortObjects&&b.__webglObjects.sort(v);ia=b.__webglObjectsImmediate.length;
|
|
|
-for(C=0;C<ia;C++)A=b.__webglObjectsImmediate[C],H=A.object,H.visible&&(H.matrixAutoUpdate&&H.matrixWorld.flattenToArray(H._objectMatrixArray),y(H,c),t(A));if(b.overrideMaterial){h(b.overrideMaterial.depthTest);I(b.overrideMaterial.blending);for(C=0;C<X;C++)if(A=b.__webglObjects[C],A.render)H=A.object,J=A.buffer,j(H),f(c,K,M,b.overrideMaterial,J,H);for(C=0;C<ia;C++)A=b.__webglObjectsImmediate[C],H=A.object,H.visible&&(j(H),E=e(c,K,M,b.overrideMaterial,H),H.render(function(e){g(e,E,b.overrideMaterial.shading)}))}else{I(THREE.NormalBlending);
|
|
|
-for(C=0;C<X;C++)if(A=b.__webglObjects[C],A.render){H=A.object;J=A.buffer;G=A.opaque;j(H);for(A=0;A<G.count;A++)F=G.list[A],h(F.depthTest),m(F.polygonOffset,F.polygonOffsetFactor,F.polygonOffsetUnits),f(c,K,M,F,J,H)}for(C=0;C<ia;C++)if(A=b.__webglObjectsImmediate[C],H=A.object,H.visible){G=A.opaque;j(H);for(A=0;A<G.count;A++)F=G.list[A],h(F.depthTest),m(F.polygonOffset,F.polygonOffsetFactor,F.polygonOffsetUnits),E=e(c,K,M,F,H),H.render(function(b){g(b,E,F.shading)})}for(C=0;C<X;C++)if(A=b.__webglObjects[C],
|
|
|
-A.render){H=A.object;J=A.buffer;G=A.transparent;j(H);for(A=0;A<G.count;A++)F=G.list[A],I(F.blending),h(F.depthTest),m(F.polygonOffset,F.polygonOffsetFactor,F.polygonOffsetUnits),f(c,K,M,F,J,H)}for(C=0;C<ia;C++)if(A=b.__webglObjectsImmediate[C],H=A.object,H.visible){G=A.transparent;j(H);for(A=0;A<G.count;A++)F=G.list[A],I(F.blending),h(F.depthTest),m(F.polygonOffset,F.polygonOffsetFactor,F.polygonOffsetUnits),E=e(c,K,M,F,H),H.render(function(b){g(b,E,F.shading)})}}b.__webglSprites.length&&w(b,c);ya&&
|
|
|
-b.__webglShadowVolumes.length&&b.lights.length&&x(b);b.__webglLensFlares.length&&B(b,c);o&&o.minFilter!==THREE.NearestFilter&&o.minFilter!==THREE.LinearFilter&&(k.bindTexture(k.TEXTURE_2D,o.__webglTexture),k.generateMipmap(k.TEXTURE_2D),k.bindTexture(k.TEXTURE_2D,null))};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],b.__webglObjectsImmediate=[],b.__webglShadowVolumes=[],b.__webglLensFlares=[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var e=b.__objectsAdded[0],
|
|
|
+0&&(k.enableVertexAttribArray(p.morphTarget7),b.numSupportedMorphTargets++);f.__webglMorphTargetInfluences=new Float32Array(this.maxMorphTargets);b=0;for(h=this.maxMorphTargets;b<h;b++)f.__webglMorphTargetInfluences[b]=0}};this.render=function(b,c,o,B){var A,T,F,E,I,Y,G,J,K=b.lights,M=b.fog;S.data.vertices=0;S.data.faces=0;S.data.drawCalls=0;c.matrixAutoUpdate&&c.update(void 0,!0);b.update(void 0,!1,c);c.matrixWorldInverse.flattenToArray(oa);c.projectionMatrix.flattenToArray(la);na.multiply(c.projectionMatrix,
|
|
|
+c.matrixWorldInverse);n(na);this.initWebGLObjects(b);V(o);(this.autoClear||B)&&this.clear();I=b.__webglObjects.length;for(B=0;B<I;B++)if(A=b.__webglObjects[B],G=A.object,G.visible)if(!(G instanceof THREE.Mesh)||p(G)){if(G.matrixWorld.flattenToArray(G._objectMatrixArray),C(G,c),u(A),A.render=!0,this.sortObjects)A.object.renderDepth?A.z=A.object.renderDepth:(wa.copy(G.position),na.multiplyVector3(wa),A.z=wa.z)}else A.render=!1;else A.render=!1;this.sortObjects&&b.__webglObjects.sort(v);Y=b.__webglObjectsImmediate.length;
|
|
|
+for(B=0;B<Y;B++)A=b.__webglObjectsImmediate[B],G=A.object,G.visible&&(G.matrixAutoUpdate&&G.matrixWorld.flattenToArray(G._objectMatrixArray),C(G,c),t(A));if(b.overrideMaterial){h(b.overrideMaterial.depthTest);H(b.overrideMaterial.blending);for(B=0;B<I;B++)if(A=b.__webglObjects[B],A.render)G=A.object,J=A.buffer,j(G),f(c,K,M,b.overrideMaterial,J,G);for(B=0;B<Y;B++)A=b.__webglObjectsImmediate[B],G=A.object,G.visible&&(j(G),T=e(c,K,M,b.overrideMaterial,G),G.render(function(e){g(e,T,b.overrideMaterial.shading)}))}else{H(THREE.NormalBlending);
|
|
|
+for(B=0;B<I;B++)if(A=b.__webglObjects[B],A.render){G=A.object;J=A.buffer;F=A.opaque;j(G);for(A=0;A<F.count;A++)E=F.list[A],h(E.depthTest),m(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),f(c,K,M,E,J,G)}for(B=0;B<Y;B++)if(A=b.__webglObjectsImmediate[B],G=A.object,G.visible){F=A.opaque;j(G);for(A=0;A<F.count;A++)E=F.list[A],h(E.depthTest),m(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),T=e(c,K,M,E,G),G.render(function(b){g(b,T,E.shading)})}for(B=0;B<I;B++)if(A=b.__webglObjects[B],
|
|
|
+A.render){G=A.object;J=A.buffer;F=A.transparent;j(G);for(A=0;A<F.count;A++)E=F.list[A],H(E.blending),h(E.depthTest),m(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),f(c,K,M,E,J,G)}for(B=0;B<Y;B++)if(A=b.__webglObjectsImmediate[B],G=A.object,G.visible){F=A.transparent;j(G);for(A=0;A<F.count;A++)E=F.list[A],H(E.blending),h(E.depthTest),m(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),T=e(c,K,M,E,G),G.render(function(b){g(b,T,E.shading)})}}b.__webglSprites.length&&w(b,c);ya&&
|
|
|
+b.__webglShadowVolumes.length&&b.lights.length&&x(b);b.__webglLensFlares.length&&y(b,c);o&&o.minFilter!==THREE.NearestFilter&&o.minFilter!==THREE.LinearFilter&&(k.bindTexture(k.TEXTURE_2D,o.__webglTexture),k.generateMipmap(k.TEXTURE_2D),k.bindTexture(k.TEXTURE_2D,null))};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],b.__webglObjectsImmediate=[],b.__webglShadowVolumes=[],b.__webglLensFlares=[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var e=b.__objectsAdded[0],
|
|
|
c=b,f=void 0,h=void 0,g=void 0;if(e._modelViewMatrix==void 0)e._modelViewMatrix=new THREE.Matrix4,e._normalMatrixArray=new Float32Array(9),e._modelViewMatrixArray=new Float32Array(16),e._objectMatrixArray=new Float32Array(16),e.matrixWorld.flattenToArray(e._objectMatrixArray);if(e instanceof THREE.Mesh)for(f in h=e.geometry,h.geometryGroups==void 0&&A(h),h.geometryGroups){g=h.geometryGroups[f];if(!g.__webglVertexBuffer){var j=g;j.__webglVertexBuffer=k.createBuffer();j.__webglNormalBuffer=k.createBuffer();
|
|
|
j.__webglTangentBuffer=k.createBuffer();j.__webglColorBuffer=k.createBuffer();j.__webglUVBuffer=k.createBuffer();j.__webglUV2Buffer=k.createBuffer();j.__webglSkinVertexABuffer=k.createBuffer();j.__webglSkinVertexBBuffer=k.createBuffer();j.__webglSkinIndicesBuffer=k.createBuffer();j.__webglSkinWeightsBuffer=k.createBuffer();j.__webglFaceBuffer=k.createBuffer();j.__webglLineBuffer=k.createBuffer();if(j.numMorphTargets){var m=void 0,t=void 0;j.__webglMorphTargetsBuffers=[];m=0;for(t=j.numMorphTargets;m<
|
|
|
-t;m++)j.__webglMorphTargetsBuffers.push(k.createBuffer())}for(var j=g,m=e,o=void 0,p=void 0,n=void 0,u=n=void 0,v=void 0,x=void 0,y=x=t=0,w=n=p=void 0,B=w=p=o=void 0,n=void 0,u=m.geometry,v=u.faces,w=j.faces,o=0,p=w.length;o<p;o++)n=w[o],n=v[n],n instanceof THREE.Face3?(t+=3,x+=1,y+=3):n instanceof THREE.Face4&&(t+=4,x+=2,y+=4);for(var o=j,p=m,C=w=v=void 0,F=void 0,C=void 0,n=[],v=0,w=p.materials.length;v<w;v++)if(C=p.materials[v],C instanceof THREE.MeshFaceMaterial){C=0;for(l=o.materials.length;C<
|
|
|
-l;C++)(F=o.materials[C])&&n.push(F)}else(F=C)&&n.push(F);o=n;j.__materials=o;a:{v=p=void 0;w=o.length;for(p=0;p<w;p++)if(v=o[p],v.map||v.lightMap||v instanceof THREE.MeshShaderMaterial){p=!0;break a}p=!1}a:{w=v=void 0;n=o.length;for(v=0;v<n;v++)if(w=o[v],!(w instanceof THREE.MeshBasicMaterial&&!w.envMap||w instanceof THREE.MeshDepthMaterial)){w=w&&w.shading!=void 0&&w.shading==THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;break a}w=!1}a:{n=v=void 0;C=o.length;for(v=0;v<C;v++)if(n=o[v],
|
|
|
-n.vertexColors){n=n.vertexColors;break a}n=!1}j.__vertexArray=new Float32Array(t*3);if(w)j.__normalArray=new Float32Array(t*3);if(u.hasTangents)j.__tangentArray=new Float32Array(t*4);if(n)j.__colorArray=new Float32Array(t*3);if(p){if(u.faceUvs.length>0||u.faceVertexUvs.length>0)j.__uvArray=new Float32Array(t*2);if(u.faceUvs.length>1||u.faceVertexUvs.length>1)j.__uv2Array=new Float32Array(t*2)}if(m.geometry.skinWeights.length&&m.geometry.skinIndices.length)j.__skinVertexAArray=new Float32Array(t*4),
|
|
|
-j.__skinVertexBArray=new Float32Array(t*4),j.__skinIndexArray=new Float32Array(t*4),j.__skinWeightArray=new Float32Array(t*4);j.__faceArray=new Uint16Array(x*3+(m.geometry.edgeFaces?m.geometry.edgeFaces.length*6:0));j.__lineArray=new Uint16Array(y*2);if(j.numMorphTargets){j.__morphTargetsArrays=[];u=0;for(v=j.numMorphTargets;u<v;u++)j.__morphTargetsArrays.push(new Float32Array(t*3))}j.__needsSmoothNormals=w==THREE.SmoothShading;j.__uvType=p;j.__vertexColorType=n;j.__normalType=w;j.__webglFaceCount=
|
|
|
-x*3+(m.geometry.edgeFaces?m.geometry.edgeFaces.length*6:0);j.__webglLineCount=y*2;u=0;for(v=o.length;u<v;u++)if(p=o[u],p.attributes){if(j.__webglCustomAttributes===void 0)j.__webglCustomAttributes={};for(a in p.attributes){n=p.attributes[a];w={};for(B in n)w[B]=n[B];if(!w.__webglInitialized||w.createUniqueBuffers)w.__webglInitialized=!0,x=1,w.type==="v2"?x=2:w.type==="v3"?x=3:w.type==="v4"?x=4:w.type==="c"&&(x=3),w.size=x,w.array=new Float32Array(t*x),w.buffer=k.createBuffer(),w.buffer.belongsToAttribute=
|
|
|
-a,n.needsUpdate=!0,w.__original=n;j.__webglCustomAttributes[a]=w}}j.__inittedArrays=!0;h.__dirtyVertices=!0;h.__dirtyMorphTargets=!0;h.__dirtyElements=!0;h.__dirtyUvs=!0;h.__dirtyNormals=!0;h.__dirtyTangents=!0;h.__dirtyColors=!0}e instanceof THREE.ShadowVolume?P(c.__webglShadowVolumes,g,e):P(c.__webglObjects,g,e)}else if(e instanceof THREE.LensFlare)P(c.__webglLensFlares,void 0,e);else if(e instanceof THREE.Ribbon){h=e.geometry;if(!h.__webglVertexBuffer)f=h,f.__webglVertexBuffer=k.createBuffer(),
|
|
|
+t;m++)j.__webglMorphTargetsBuffers.push(k.createBuffer())}for(var j=g,m=e,o=void 0,p=void 0,n=void 0,u=n=void 0,v=void 0,x=void 0,w=x=t=0,y=n=p=void 0,C=y=p=o=void 0,n=void 0,u=m.geometry,v=u.faces,y=j.faces,o=0,p=y.length;o<p;o++)n=y[o],n=v[n],n instanceof THREE.Face3?(t+=3,x+=1,w+=3):n instanceof THREE.Face4&&(t+=4,x+=2,w+=4);for(var o=j,p=m,B=y=v=void 0,T=void 0,B=void 0,n=[],v=0,y=p.materials.length;v<y;v++)if(B=p.materials[v],B instanceof THREE.MeshFaceMaterial){B=0;for(l=o.materials.length;B<
|
|
|
+l;B++)(T=o.materials[B])&&n.push(T)}else(T=B)&&n.push(T);o=n;j.__materials=o;a:{v=p=void 0;y=o.length;for(p=0;p<y;p++)if(v=o[p],v.map||v.lightMap||v instanceof THREE.MeshShaderMaterial){p=!0;break a}p=!1}a:{y=v=void 0;n=o.length;for(v=0;v<n;v++)if(y=o[v],!(y instanceof THREE.MeshBasicMaterial&&!y.envMap||y instanceof THREE.MeshDepthMaterial)){y=y&&y.shading!=void 0&&y.shading==THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;break a}y=!1}a:{n=v=void 0;B=o.length;for(v=0;v<B;v++)if(n=o[v],
|
|
|
+n.vertexColors){n=n.vertexColors;break a}n=!1}j.__vertexArray=new Float32Array(t*3);if(y)j.__normalArray=new Float32Array(t*3);if(u.hasTangents)j.__tangentArray=new Float32Array(t*4);if(n)j.__colorArray=new Float32Array(t*3);if(p){if(u.faceUvs.length>0||u.faceVertexUvs.length>0)j.__uvArray=new Float32Array(t*2);if(u.faceUvs.length>1||u.faceVertexUvs.length>1)j.__uv2Array=new Float32Array(t*2)}if(m.geometry.skinWeights.length&&m.geometry.skinIndices.length)j.__skinVertexAArray=new Float32Array(t*4),
|
|
|
+j.__skinVertexBArray=new Float32Array(t*4),j.__skinIndexArray=new Float32Array(t*4),j.__skinWeightArray=new Float32Array(t*4);j.__faceArray=new Uint16Array(x*3+(m.geometry.edgeFaces?m.geometry.edgeFaces.length*6:0));j.__lineArray=new Uint16Array(w*2);if(j.numMorphTargets){j.__morphTargetsArrays=[];u=0;for(v=j.numMorphTargets;u<v;u++)j.__morphTargetsArrays.push(new Float32Array(t*3))}j.__needsSmoothNormals=y==THREE.SmoothShading;j.__uvType=p;j.__vertexColorType=n;j.__normalType=y;j.__webglFaceCount=
|
|
|
+x*3+(m.geometry.edgeFaces?m.geometry.edgeFaces.length*6:0);j.__webglLineCount=w*2;u=0;for(v=o.length;u<v;u++)if(p=o[u],p.attributes){if(j.__webglCustomAttributes===void 0)j.__webglCustomAttributes={};for(a in p.attributes){n=p.attributes[a];y={};for(C in n)y[C]=n[C];if(!y.__webglInitialized||y.createUniqueBuffers)y.__webglInitialized=!0,x=1,y.type==="v2"?x=2:y.type==="v3"?x=3:y.type==="v4"?x=4:y.type==="c"&&(x=3),y.size=x,y.array=new Float32Array(t*x),y.buffer=k.createBuffer(),y.buffer.belongsToAttribute=
|
|
|
+a,n.needsUpdate=!0,y.__original=n;j.__webglCustomAttributes[a]=y}}j.__inittedArrays=!0;h.__dirtyVertices=!0;h.__dirtyMorphTargets=!0;h.__dirtyElements=!0;h.__dirtyUvs=!0;h.__dirtyNormals=!0;h.__dirtyTangents=!0;h.__dirtyColors=!0}e instanceof THREE.ShadowVolume?P(c.__webglShadowVolumes,g,e):P(c.__webglObjects,g,e)}else if(e instanceof THREE.LensFlare)P(c.__webglLensFlares,void 0,e);else if(e instanceof THREE.Ribbon){h=e.geometry;if(!h.__webglVertexBuffer)f=h,f.__webglVertexBuffer=k.createBuffer(),
|
|
|
f.__webglColorBuffer=k.createBuffer(),f=h,g=f.vertices.length,f.__vertexArray=new Float32Array(g*3),f.__colorArray=new Float32Array(g*3),f.__webglVertexCount=g,h.__dirtyVertices=!0,h.__dirtyColors=!0;P(c.__webglObjects,h,e)}else if(e instanceof THREE.Line){h=e.geometry;if(!h.__webglVertexBuffer)f=h,f.__webglVertexBuffer=k.createBuffer(),f.__webglColorBuffer=k.createBuffer(),f=h,g=f.vertices.length,f.__vertexArray=new Float32Array(g*3),f.__colorArray=new Float32Array(g*3),f.__webglLineCount=g,h.__dirtyVertices=
|
|
|
-!0,h.__dirtyColors=!0;P(c.__webglObjects,h,e)}else if(e instanceof THREE.ParticleSystem){h=e.geometry;if(!h.__webglVertexBuffer){f=h;f.__webglVertexBuffer=k.createBuffer();f.__webglColorBuffer=k.createBuffer();f=h;g=e;j=f.vertices.length;f.__vertexArray=new Float32Array(j*3);f.__colorArray=new Float32Array(j*3);f.__sortArray=[];f.__webglParticleCount=j;f.__materials=g.materials;B=t=m=void 0;m=0;for(t=g.materials.length;m<t;m++)if(B=g.materials[m],B.attributes){if(f.__webglCustomAttributes===void 0)f.__webglCustomAttributes=
|
|
|
-{};for(a in B.attributes){originalAttribute=B.attributes[a];attribute={};for(property in originalAttribute)attribute[property]=originalAttribute[property];if(!attribute.__webglInitialized||attribute.createUniqueBuffers)attribute.__webglInitialized=!0,size=1,attribute.type==="v2"?size=2:attribute.type==="v3"?size=3:attribute.type==="v4"?size=4:attribute.type==="c"&&(size=3),attribute.size=size,attribute.array=new Float32Array(j*size),attribute.buffer=k.createBuffer(),attribute.buffer.belongsToAttribute=
|
|
|
+!0,h.__dirtyColors=!0;P(c.__webglObjects,h,e)}else if(e instanceof THREE.ParticleSystem){h=e.geometry;if(!h.__webglVertexBuffer){f=h;f.__webglVertexBuffer=k.createBuffer();f.__webglColorBuffer=k.createBuffer();f=h;g=e;j=f.vertices.length;f.__vertexArray=new Float32Array(j*3);f.__colorArray=new Float32Array(j*3);f.__sortArray=[];f.__webglParticleCount=j;f.__materials=g.materials;C=t=m=void 0;m=0;for(t=g.materials.length;m<t;m++)if(C=g.materials[m],C.attributes){if(f.__webglCustomAttributes===void 0)f.__webglCustomAttributes=
|
|
|
+{};for(a in C.attributes){originalAttribute=C.attributes[a];attribute={};for(property in originalAttribute)attribute[property]=originalAttribute[property];if(!attribute.__webglInitialized||attribute.createUniqueBuffers)attribute.__webglInitialized=!0,size=1,attribute.type==="v2"?size=2:attribute.type==="v3"?size=3:attribute.type==="v4"?size=4:attribute.type==="c"&&(size=3),attribute.size=size,attribute.array=new Float32Array(j*size),attribute.buffer=k.createBuffer(),attribute.buffer.belongsToAttribute=
|
|
|
a,originalAttribute.needsUpdate=!0,attribute.__original=originalAttribute;f.__webglCustomAttributes[a]=attribute}}h.__dirtyVertices=!0;h.__dirtyColors=!0}P(c.__webglObjects,h,e)}else THREE.MarchingCubes!==void 0&&e instanceof THREE.MarchingCubes?c.__webglObjectsImmediate.push({object:e,opaque:{list:[],count:0},transparent:{list:[],count:0}}):e instanceof THREE.Sprite&&c.__webglSprites.push(e);b.__objectsAdded.splice(0,1)}for(;b.__objectsRemoved.length;){c=b.__objectsRemoved[0];e=b;if(c instanceof
|
|
|
-THREE.ShadowVolume)G(e.__webglShadowVolumes,c);else if(c instanceof THREE.Mesh||c instanceof THREE.ParticleSystem||c instanceof THREE.Ribbon||c instanceof THREE.Line)G(e.__webglObjects,c);else if(c instanceof THREE.Sprite){e=e.__webglSprites;h=void 0;for(h=e.length-1;h>=0;h--)e[h]==c&&e.splice(h,1)}else c instanceof THREE.LensFlare?G(e.__webglLensFlares,c):c instanceof THREE.MarchingCubes&&G(e.__webglObjectsImmediate,c);b.__objectsRemoved.splice(0,1)}e=0;for(c=b.__webglObjects.length;e<c;e++)E(b.__webglObjects[e].object,
|
|
|
-b);e=0;for(c=b.__webglShadowVolumes.length;e<c;e++)E(b.__webglShadowVolumes[e].object,b);e=0;for(c=b.__webglLensFlares.length;e<c;e++)E(b.__webglLensFlares[e].object,b)};this.setFaceCulling=function(b,e){b?(!e||e=="ccw"?k.frontFace(k.CCW):k.frontFace(k.CW),b=="back"?k.cullFace(k.BACK):b=="front"?k.cullFace(k.FRONT):k.cullFace(k.FRONT_AND_BACK),k.enable(k.CULL_FACE)):k.disable(k.CULL_FACE)};this.supportsVertexTextures=function(){return Ba}};
|
|
|
+THREE.ShadowVolume)F(e.__webglShadowVolumes,c);else if(c instanceof THREE.Mesh||c instanceof THREE.ParticleSystem||c instanceof THREE.Ribbon||c instanceof THREE.Line)F(e.__webglObjects,c);else if(c instanceof THREE.Sprite){e=e.__webglSprites;h=void 0;for(h=e.length-1;h>=0;h--)e[h]==c&&e.splice(h,1)}else c instanceof THREE.LensFlare?F(e.__webglLensFlares,c):c instanceof THREE.MarchingCubes&&F(e.__webglObjectsImmediate,c);b.__objectsRemoved.splice(0,1)}e=0;for(c=b.__webglObjects.length;e<c;e++)I(b.__webglObjects[e].object,
|
|
|
+b);e=0;for(c=b.__webglShadowVolumes.length;e<c;e++)I(b.__webglShadowVolumes[e].object,b);e=0;for(c=b.__webglLensFlares.length;e<c;e++)I(b.__webglLensFlares[e].object,b)};this.setFaceCulling=function(b,e){b?(!e||e=="ccw"?k.frontFace(k.CCW):k.frontFace(k.CW),b=="back"?k.cullFace(k.BACK):b=="front"?k.cullFace(k.FRONT):k.cullFace(k.FRONT_AND_BACK),k.enable(k.CULL_FACE)):k.disable(k.CULL_FACE)};this.supportsVertexTextures=function(){return Ba}};
|
|
|
THREE.WebGLRenderTarget=function(b,c,e){this.width=b;this.height=c;e=e||{};this.wrapS=e.wrapS!==void 0?e.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=e.wrapT!==void 0?e.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=e.magFilter!==void 0?e.magFilter:THREE.LinearFilter;this.minFilter=e.minFilter!==void 0?e.minFilter:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=e.format!==void 0?e.format:THREE.RGBAFormat;this.type=e.type!==void 0?e.type:
|
|
|
THREE.UnsignedByteType;this.depthBuffer=e.depthBuffer!==void 0?e.depthBuffer:!0;this.stencilBuffer=e.stencilBuffer!==void 0?e.stencilBuffer:!0};THREE.RenderableVertex=function(){this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.visible=!0};THREE.RenderableVertex.prototype.copy=function(b){this.positionWorld.copy(b.positionWorld);this.positionScreen.copy(b.positionScreen)};
|
|
|
THREE.RenderableFace3=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.faceMaterials=this.meshMaterials=null;this.overdraw=!1;this.uvs=[[]];this.z=null};
|
|
@@ -388,7 +388,7 @@ this.heightSpeed?this.tdiff*((this.position.y<this.heightMin?this.heightMin:this
|
|
|
(this.phi-0)*(this.verticalMax-this.verticalMin)/3.14+this.verticalMin;b=this.target.position;g=this.position;b.x=g.x+100*Math.sin(this.phi)*Math.cos(this.theta);b.y=g.y+100*Math.cos(this.phi);b.z=g.z+100*Math.sin(this.phi)*Math.sin(this.theta);this.supr.update.call(this)};this.domElement.addEventListener("contextmenu",function(b){b.preventDefault()},!1);this.domElement.addEventListener("mousemove",c(this,this.onMouseMove),!1);this.domElement.addEventListener("mousedown",c(this,this.onMouseDown),
|
|
|
!1);this.domElement.addEventListener("mouseup",c(this,this.onMouseUp),!1);this.domElement.addEventListener("keydown",c(this,this.onKeyDown),!1);this.domElement.addEventListener("keyup",c(this,this.onKeyUp),!1)};THREE.FirstPersonCamera.prototype=new THREE.Camera;THREE.FirstPersonCamera.prototype.constructor=THREE.FirstPersonCamera;THREE.FirstPersonCamera.prototype.supr=THREE.Camera.prototype;
|
|
|
THREE.FirstPersonCamera.prototype.translate=function(b,c){this.matrix.rotateAxis(c);if(this.noFly)c.y=0;this.position.addSelf(c.multiplyScalar(b));this.target.position.addSelf(c.multiplyScalar(b))};
|
|
|
-THREE.PathCamera=function(b){function c(b,e,c,f){var h={name:c,fps:0.6,length:f,hierarchy:[]},g,j=e.getControlPointsArray(),m=e.getLength(),n=j.length,F=0;g=n-1;e={parent:-1,keys:[]};e.keys[0]={time:0,pos:j[0],rot:[0,0,0,1],scl:[1,1,1]};e.keys[g]={time:f,pos:j[g],rot:[0,0,0,1],scl:[1,1,1]};for(g=1;g<n-1;g++)F=f*m.chunks[g]/m.total,e.keys[g]={time:F,pos:j[g]};h.hierarchy[0]=e;THREE.AnimationHandler.add(h);return new THREE.Animation(b,c,THREE.AnimationHandler.CATMULLROM_FORWARD,!1)}function e(b,e){var c,
|
|
|
+THREE.PathCamera=function(b){function c(b,e,c,f){var h={name:c,fps:0.6,length:f,hierarchy:[]},g,j=e.getControlPointsArray(),m=e.getLength(),n=j.length,E=0;g=n-1;e={parent:-1,keys:[]};e.keys[0]={time:0,pos:j[0],rot:[0,0,0,1],scl:[1,1,1]};e.keys[g]={time:f,pos:j[g],rot:[0,0,0,1],scl:[1,1,1]};for(g=1;g<n-1;g++)E=f*m.chunks[g]/m.total,e.keys[g]={time:E,pos:j[g]};h.hierarchy[0]=e;THREE.AnimationHandler.add(h);return new THREE.Animation(b,c,THREE.AnimationHandler.CATMULLROM_FORWARD,!1)}function e(b,e){var c,
|
|
|
f,h=new THREE.Geometry;for(c=0;c<b.points.length*e;c++)f=c/(b.points.length*e),f=b.getPoint(f),h.vertices[c]=new THREE.Vertex(new THREE.Vector3(f.x,f.y,f.z));return h}function f(b,c){var f=e(c,10),h=e(c,10),g=new THREE.LineBasicMaterial({color:16711680,linewidth:3});lineObj=new THREE.Line(f,g);particleObj=new THREE.ParticleSystem(h,new THREE.ParticleBasicMaterial({color:16755200,size:3}));lineObj.scale.set(1,1,1);b.addChild(lineObj);particleObj.scale.set(1,1,1);b.addChild(particleObj);h=new THREE.SphereGeometry(1,
|
|
|
16,8);g=new THREE.MeshBasicMaterial({color:65280});for(i=0;i<c.points.length;i++)f=new THREE.Mesh(h,g),f.position.copy(c.points[i]),f.updateMatrix(),b.addChild(f)}THREE.Camera.call(this,b.fov,b.aspect,b.near,b.far,b.target);this.id="PathCamera"+THREE.PathCameraIdCounter++;this.duration=1E4;this.waypoints=[];this.useConstantSpeed=!0;this.resamplingCoef=50;this.debugPath=new THREE.Object3D;this.debugDummy=new THREE.Object3D;this.animationParent=new THREE.Object3D;this.lookSpeed=0.0050;this.lookHorizontal=
|
|
|
this.lookVertical=!0;this.verticalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.horizontalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.domElement=document;if(b){if(b.duration!==void 0)this.duration=b.duration*1E3;if(b.waypoints!==void 0)this.waypoints=b.waypoints;if(b.useConstantSpeed!==void 0)this.useConstantSpeed=b.useConstantSpeed;if(b.resamplingCoef!==void 0)this.resamplingCoef=b.resamplingCoef;if(b.createDebugPath!==void 0)this.createDebugPath=b.createDebugPath;if(b.createDebugDummy!==
|
|
@@ -408,12 +408,12 @@ this.rollSpeed;this.translateX(this.moveVector.x*b);this.translateY(this.moveVec
|
|
|
this.autoForward&&!this.moveState.back?1:0;this.moveVector.x=-this.moveState.left+this.moveState.right;this.moveVector.y=-this.moveState.down+this.moveState.up;this.moveVector.z=-b+this.moveState.back};this.updateRotationVector=function(){this.rotationVector.x=-this.moveState.pitchDown+this.moveState.pitchUp;this.rotationVector.y=-this.moveState.yawRight+this.moveState.yawLeft;this.rotationVector.z=-this.moveState.rollRight+this.moveState.rollLeft};this.getContainerDimensions=function(){return this.domElement!=
|
|
|
document?{size:[this.domElement.offsetWidth,this.domElement.offsetHeight],offset:[this.domElement.offsetLeft,this.domElement.offsetTop]}:{size:[window.innerWidth,window.innerHeight],offset:[0,0]}};this.domElement.addEventListener("mousemove",c(this,this.mousemove),!1);this.domElement.addEventListener("mousedown",c(this,this.mousedown),!1);this.domElement.addEventListener("mouseup",c(this,this.mouseup),!1);window.addEventListener("keydown",c(this,this.keydown),!1);window.addEventListener("keyup",c(this,
|
|
|
this.keyup),!1);this.updateMovementVector();this.updateRotationVector()};THREE.FlyCamera.prototype=new THREE.Camera;THREE.FlyCamera.prototype.constructor=THREE.FlyCamera;THREE.FlyCamera.prototype.supr=THREE.Camera.prototype;
|
|
|
-THREE.RollCamera=function(b,c,e,f){THREE.Camera.call(this,b,c,e,f);this.mouseLook=!0;this.autoForward=!1;this.rollSpeed=this.movementSpeed=this.lookSpeed=1;this.constrainVertical=[-0.9,0.9];this.domElement=document;this.matrixAutoUpdate=this.useTarget=!1;this.forward=new THREE.Vector3(0,0,1);this.roll=0;this.lastUpdate=-1;this.delta=0;var g=new THREE.Vector3,j=new THREE.Vector3,h=new THREE.Vector3,m=new THREE.Matrix4,n=!1,p=1,o=0,t=0,u=0,v=0,x=0,w=window.innerWidth/2,B=window.innerHeight/2;this.update=
|
|
|
+THREE.RollCamera=function(b,c,e,f){THREE.Camera.call(this,b,c,e,f);this.mouseLook=!0;this.autoForward=!1;this.rollSpeed=this.movementSpeed=this.lookSpeed=1;this.constrainVertical=[-0.9,0.9];this.domElement=document;this.matrixAutoUpdate=this.useTarget=!1;this.forward=new THREE.Vector3(0,0,1);this.roll=0;this.lastUpdate=-1;this.delta=0;var g=new THREE.Vector3,j=new THREE.Vector3,h=new THREE.Vector3,m=new THREE.Matrix4,n=!1,p=1,o=0,t=0,u=0,v=0,x=0,w=window.innerWidth/2,y=window.innerHeight/2;this.update=
|
|
|
function(){var b=(new Date).getTime();if(this.lastUpdate==-1)this.lastUpdate=b;this.delta=(b-this.lastUpdate)/1E3;this.lastUpdate=b;this.mouseLook&&(b=this.delta*this.lookSpeed,this.rotateHorizontally(b*v),this.rotateVertically(b*x));b=this.delta*this.movementSpeed;this.translateZ(b*(o>0||this.autoForward&&!(o<0)?1:o));this.translateX(b*t);this.translateY(b*u);n&&(this.roll+=this.rollSpeed*this.delta*p);if(this.forward.y>this.constrainVertical[1])this.forward.y=this.constrainVertical[1],this.forward.normalize();
|
|
|
else if(this.forward.y<this.constrainVertical[0])this.forward.y=this.constrainVertical[0],this.forward.normalize();h.copy(this.forward);j.set(0,1,0);g.cross(j,h).normalize();j.cross(h,g).normalize();this.matrix.n11=g.x;this.matrix.n12=j.x;this.matrix.n13=h.x;this.matrix.n21=g.y;this.matrix.n22=j.y;this.matrix.n23=h.y;this.matrix.n31=g.z;this.matrix.n32=j.z;this.matrix.n33=h.z;m.identity();m.n11=Math.cos(this.roll);m.n12=-Math.sin(this.roll);m.n21=Math.sin(this.roll);m.n22=Math.cos(this.roll);this.matrix.multiplySelf(m);
|
|
|
this.matrixWorldNeedsUpdate=!0;this.matrix.n14=this.position.x;this.matrix.n24=this.position.y;this.matrix.n34=this.position.z;this.supr.update.call(this)};this.translateX=function(b){this.position.x+=this.matrix.n11*b;this.position.y+=this.matrix.n21*b;this.position.z+=this.matrix.n31*b};this.translateY=function(b){this.position.x+=this.matrix.n12*b;this.position.y+=this.matrix.n22*b;this.position.z+=this.matrix.n32*b};this.translateZ=function(b){this.position.x-=this.matrix.n13*b;this.position.y-=
|
|
|
this.matrix.n23*b;this.position.z-=this.matrix.n33*b};this.rotateHorizontally=function(b){g.set(this.matrix.n11,this.matrix.n21,this.matrix.n31);g.multiplyScalar(b);this.forward.subSelf(g);this.forward.normalize()};this.rotateVertically=function(b){j.set(this.matrix.n12,this.matrix.n22,this.matrix.n32);j.multiplyScalar(b);this.forward.addSelf(j);this.forward.normalize()};this.domElement.addEventListener("contextmenu",function(b){b.preventDefault()},!1);this.domElement.addEventListener("mousemove",
|
|
|
-function(b){v=(b.clientX-w)/window.innerWidth;x=(b.clientY-B)/window.innerHeight},!1);this.domElement.addEventListener("mousedown",function(b){b.preventDefault();b.stopPropagation();switch(b.button){case 0:o=1;break;case 2:o=-1}},!1);this.domElement.addEventListener("mouseup",function(b){b.preventDefault();b.stopPropagation();switch(b.button){case 0:o=0;break;case 2:o=0}},!1);this.domElement.addEventListener("keydown",function(b){switch(b.keyCode){case 38:case 87:o=1;break;case 37:case 65:t=-1;break;
|
|
|
+function(b){v=(b.clientX-w)/window.innerWidth;x=(b.clientY-y)/window.innerHeight},!1);this.domElement.addEventListener("mousedown",function(b){b.preventDefault();b.stopPropagation();switch(b.button){case 0:o=1;break;case 2:o=-1}},!1);this.domElement.addEventListener("mouseup",function(b){b.preventDefault();b.stopPropagation();switch(b.button){case 0:o=0;break;case 2:o=0}},!1);this.domElement.addEventListener("keydown",function(b){switch(b.keyCode){case 38:case 87:o=1;break;case 37:case 65:t=-1;break;
|
|
|
case 40:case 83:o=-1;break;case 39:case 68:t=1;break;case 81:n=!0;p=1;break;case 69:n=!0;p=-1;break;case 82:u=1;break;case 70:u=-1}},!1);this.domElement.addEventListener("keyup",function(b){switch(b.keyCode){case 38:case 87:o=0;break;case 37:case 65:t=0;break;case 40:case 83:o=0;break;case 39:case 68:t=0;break;case 81:n=!1;break;case 69:n=!1;break;case 82:u=0;break;case 70:u=0}},!1)};THREE.RollCamera.prototype=new THREE.Camera;THREE.RollCamera.prototype.constructor=THREE.RollCamera;
|
|
|
THREE.RollCamera.prototype.supr=THREE.Camera.prototype;
|
|
|
THREE.TrackballCamera=function(b){function c(b,e){return function(){e.apply(b,arguments)}}b=b||{};THREE.Camera.call(this,b.fov,b.aspect,b.near,b.far,b.target);this.domElement=b.domElement||document;this.screen=b.screen||{width:window.innerWidth,height:window.innerHeight,offsetLeft:0,offsetTop:0};this.radius=b.radius||(this.screen.width+this.screen.height)/4;this.rotateSpeed=b.rotateSpeed||1;this.zoomSpeed=b.zoomSpeed||1.2;this.panSpeed=b.panSpeed||0.3;this.noZoom=b.noZoom||!1;this.noPan=b.noPan||
|
|
@@ -442,7 +442,7 @@ THREE.Path.prototype.splineThru=function(b){var c=Array.prototype.slice.call(arg
|
|
|
THREE.Path.prototype.arc=function(b,c,e,f,g,j){var h=Array.prototype.slice.call(arguments);this.curves.push(new THREE.ArcCurve(b,c,e,f,g,j));this.actions.push({action:THREE.PathActions.ARC,args:h})};THREE.Path.prototype.getSpacedPoints=function(b,c){b||(b=40);for(var e=[],f=0;f<b;f++)e.push(this.getPoint(f/b));c&&e.push(e[0]);return e};
|
|
|
THREE.Path.prototype.getPoints=function(b,c){var b=b||12,e=[],f,g,j,h,m,n,p,o,t,u,v,x,w;f=0;for(g=this.actions.length;f<g;f++)switch(j=this.actions[f],h=j.action,j=j.args,h){case THREE.PathActions.LINE_TO:e.push(new THREE.Vector2(j[0],j[1]));break;case THREE.PathActions.QUADRATIC_CURVE_TO:m=j[2];n=j[3];t=j[0];u=j[1];e.length>0?(h=e[e.length-1],v=h.x,x=h.y):(h=this.actions[f-1].args,v=h[h.length-2],x=h[h.length-1]);for(h=1;h<=b;h++)w=h/b,j=THREE.FontUtils.b2(w,v,t,m),w=THREE.FontUtils.b2(w,x,u,n),
|
|
|
e.push(new THREE.Vector2(j,w));break;case THREE.PathActions.BEZIER_CURVE_TO:m=j[4];n=j[5];t=j[0];u=j[1];p=j[2];o=j[3];e.length>0?(h=e[e.length-1],v=h.x,x=h.y):(h=this.actions[f-1].args,v=h[h.length-2],x=h[h.length-1]);for(h=1;h<=b;h++)w=h/b,j=THREE.FontUtils.b3(w,v,t,p,m),w=THREE.FontUtils.b3(w,x,u,o,n),e.push(new THREE.Vector2(j,w));break;case THREE.PathActions.CSPLINE_THRU:h=this.actions[f-1].args;h=[new THREE.Vector2(h[h.length-2],h[h.length-1])];w=b*j[0].length;h=h.concat(j[0]);j=new THREE.SplineCurve(h);
|
|
|
-for(h=1;h<=w;h++)e.push(j.getPointAt(h/w));break;case THREE.PathActions.ARC:h=this.actions[f-1].args;m=j[0];n=j[1];p=j[2];t=j[3];w=j[4];u=!!j[5];o=h[h.length-2];v=h[h.length-1];h.length==0&&(o=v=0);x=w-t;var B=b*2;for(h=1;h<=B;h++)w=h/B,u||(w=1-w),w=t+w*x,j=o+m+p*Math.cos(w),w=v+n+p*Math.sin(w),e.push(new THREE.Vector2(j,w))}c&&e.push(e[0]);return e};
|
|
|
+for(h=1;h<=w;h++)e.push(j.getPointAt(h/w));break;case THREE.PathActions.ARC:h=this.actions[f-1].args;m=j[0];n=j[1];p=j[2];t=j[3];w=j[4];u=!!j[5];o=h[h.length-2];v=h[h.length-1];h.length==0&&(o=v=0);x=w-t;var y=b*2;for(h=1;h<=y;h++)w=h/y,u||(w=1-w),w=t+w*x,j=o+m+p*Math.cos(w),w=v+n+p*Math.sin(w),e.push(new THREE.Vector2(j,w))}c&&e.push(e[0]);return e};
|
|
|
THREE.Path.prototype.getMinAndMax=function(){var b=this.getPoints(),c,e,f,g;c=e=Number.NEGATIVE_INFINITY;f=g=Number.POSITIVE_INFINITY;var j,h,m;h=0;for(m=b.length;h<m;h++){j=b[h];if(j.x>c)c=j.x;else if(j.x<f)f=j.x;if(j.y>e)e=j.y;else if(j.y<e)g=j.y}return{minX:f,minY:g,maxX:c,maxY:e}};THREE.Path.prototype.getPoint=function(b){for(var c=b*this.getLength(),e=this.sums,b=0;b<e.length;){if(e[b]>=c)return c=e[b]-c,b=this.curves[b],c=1-c/b.getLength(),b.getPointAt(c);b++}return null};
|
|
|
THREE.Path.prototype.getLength=function(){var b=[],c=0,e,f=this.curves.length;for(e=0;e<f;e++)c+=this.curves[e].getLength(),b.push(c);this.sums=b;return c};THREE.Path.prototype.createPointsGeometry=function(b){return this.createGeometry(this.getPoints(b,!0))};THREE.Path.prototype.createSpacedPointsGeometry=function(b){return this.createGeometry(this.getSpacedPoints(b,!0))};
|
|
|
THREE.Path.prototype.createGeometry=function(b){for(var c=new THREE.Geometry,e=0;e<b.length;e++)c.vertices.push(new THREE.Vertex(new THREE.Vector3(b[e].x,b[e].y,0)));return c};
|
|
@@ -451,21 +451,21 @@ THREE.Path.prototype.nltransform=function(b,c,e,f,g,j){var h=this.getPoints(),m,
|
|
|
THREE.Path.prototype.debug=function(b){var c=this.getMinAndMax();b||(b=document.createElement("canvas"),b.setAttribute("width",c.maxX+100),b.setAttribute("height",c.maxY+100),document.body.appendChild(b));c=b.getContext("2d");c.fillStyle="white";c.fillRect(0,0,b.width,b.height);c.strokeStyle="black";c.beginPath();var e,f,g,b=0;for(e=this.actions.length;b<e;b++)f=this.actions[b],g=f.args,f=f.action,f!=THREE.PathActions.CSPLINE_THRU&&c[f].apply(c,g);c.stroke();c.closePath();c.strokeStyle="red";f=this.transform(0.866,
|
|
|
-0.866,0,0.5,0.5,-50);b=0;for(e=f.length;b<e;b++)g=f[b],c.beginPath(),c.arc(g.x,g.y,1.5,0,Math.PI*2,!1),c.stroke(),c.closePath()};THREE.Shape=function(){THREE.Path.apply(this,arguments);this.holes=[]};THREE.Shape.prototype=new THREE.Path;THREE.Shape.prototype.constructor=THREE.Path;THREE.Shape.prototype.extrude=function(b){return new THREE.ExtrudeGeometry(this,b)};THREE.Shape.prototype.getPointsHoles=function(){var b,c=this.holes.length,e=[];for(b=0;b<c;b++)e[b]=this.holes[b].getPoints();return e};
|
|
|
THREE.Shape.prototype.getSpacedPointsHoles=function(){var b,c=this.holes.length,e=[];for(b=0;b<c;b++)e[b]=this.holes[b].getSpacedPoints();return e};THREE.Shape.prototype.extractAllPoints=function(){return{shape:this.getPoints(),holes:this.getPointsHoles()}};THREE.Shape.prototype.extractAllSpacedPoints=function(){return{shape:this.getSpacedPoints(),holes:this.getSpacedPointsHoles()}};
|
|
|
-THREE.Shape.Utils={removeHoles:function(b,c){var e=b.concat(),f=e.concat(),g,j,h,m,n,p,o,t,u,v,x=[];for(n=0;n<c.length;n++){p=c[n];f=f.concat(p);j=Number.POSITIVE_INFINITY;for(g=0;g<p.length;g++){u=p[g];v=[];for(t=0;t<e.length;t++)o=e[t],o=u.distanceTo(o),v.push(o),o<j&&(j=o,h=g,m=t)}g=m-1>=0?m-1:e.length-1;j=h-1>=0?h-1:p.length-1;var w=[p[h],e[m],e[g]];t=THREE.FontUtils.Triangulate.area(w);var B=[p[h],p[j],e[m]];u=THREE.FontUtils.Triangulate.area(B);v=m;o=h;m+=1;h+=-1;m<0&&(m+=e.length);m%=e.length;
|
|
|
-h<0&&(h+=p.length);h%=p.length;g=m-1>=0?m-1:e.length-1;j=h-1>=0?h-1:p.length-1;w=[p[h],e[m],e[g]];w=THREE.FontUtils.Triangulate.area(w);B=[p[h],p[j],e[m]];B=THREE.FontUtils.Triangulate.area(B);t+u>w+B&&(m=v,h=o,m<0&&(m+=e.length),m%=e.length,h<0&&(h+=p.length),h%=p.length,g=m-1>=0?m-1:e.length-1,j=h-1>=0?h-1:p.length-1);t=e.slice(0,m);u=e.slice(m);v=p.slice(h);o=p.slice(0,h);j=[p[h],p[j],e[m]];x.push([p[h],e[m],e[g]]);x.push(j);e=t.concat(v).concat(o).concat(u)}return{shape:e,isolatedPts:x,allpoints:f}},
|
|
|
+THREE.Shape.Utils={removeHoles:function(b,c){var e=b.concat(),f=e.concat(),g,j,h,m,n,p,o,t,u,v,x=[];for(n=0;n<c.length;n++){p=c[n];f=f.concat(p);j=Number.POSITIVE_INFINITY;for(g=0;g<p.length;g++){u=p[g];v=[];for(t=0;t<e.length;t++)o=e[t],o=u.distanceTo(o),v.push(o),o<j&&(j=o,h=g,m=t)}g=m-1>=0?m-1:e.length-1;j=h-1>=0?h-1:p.length-1;var w=[p[h],e[m],e[g]];t=THREE.FontUtils.Triangulate.area(w);var y=[p[h],p[j],e[m]];u=THREE.FontUtils.Triangulate.area(y);v=m;o=h;m+=1;h+=-1;m<0&&(m+=e.length);m%=e.length;
|
|
|
+h<0&&(h+=p.length);h%=p.length;g=m-1>=0?m-1:e.length-1;j=h-1>=0?h-1:p.length-1;w=[p[h],e[m],e[g]];w=THREE.FontUtils.Triangulate.area(w);y=[p[h],p[j],e[m]];y=THREE.FontUtils.Triangulate.area(y);t+u>w+y&&(m=v,h=o,m<0&&(m+=e.length),m%=e.length,h<0&&(h+=p.length),h%=p.length,g=m-1>=0?m-1:e.length-1,j=h-1>=0?h-1:p.length-1);t=e.slice(0,m);u=e.slice(m);v=p.slice(h);o=p.slice(0,h);j=[p[h],p[j],e[m]];x.push([p[h],e[m],e[g]]);x.push(j);e=t.concat(v).concat(o).concat(u)}return{shape:e,isolatedPts:x,allpoints:f}},
|
|
|
triangulateShape:function(b,c){var e=THREE.Shape.Utils.removeHoles(b,c),f=e.allpoints,g=e.isolatedPts,e=THREE.FontUtils.Triangulate(e.shape,!1),j,h,m,n;for(j=0;j<e.length;j++){n=e[j];for(h=0;h<3;h++)for(m=0;m<f.length;m++)f[m].equals(n[h])&&(n[h]=m)}for(j=0;j<g.length;j++){n=g[j];for(h=0;h<3;h++)for(m=0;m<f.length;m++)f[m].equals(n[h])&&(n[h]=m)}return e.concat(g)},isClockWise:function(b){return THREE.FontUtils.Triangulate.area(b)<0}};
|
|
|
-THREE.CubeGeometry=function(b,c,e,f,g,j,h,m,n){function p(b,e,c,h,m,n,p,t){var u,v,w=f||1,x=g||1,J=m/2,Y=n/2,K=o.vertices.length;if(b=="x"&&e=="y"||b=="y"&&e=="x")u="z";else if(b=="x"&&e=="z"||b=="z"&&e=="x")u="y",x=j||1;else if(b=="z"&&e=="y"||b=="y"&&e=="z")u="x",w=j||1;var S=w+1,k=x+1;m/=w;var V=n/x;for(v=0;v<k;v++)for(n=0;n<S;n++){var O=new THREE.Vector3;O[b]=(n*m-J)*c;O[e]=(v*V-Y)*h;O[u]=p;o.vertices.push(new THREE.Vertex(O))}for(v=0;v<x;v++)for(n=0;n<w;n++)o.faces.push(new THREE.Face4(n+S*v+
|
|
|
+THREE.CubeGeometry=function(b,c,e,f,g,j,h,m,n){function p(b,e,c,h,m,n,p,t){var u,v,w=f||1,x=g||1,J=m/2,Z=n/2,K=o.vertices.length;if(b=="x"&&e=="y"||b=="y"&&e=="x")u="z";else if(b=="x"&&e=="z"||b=="z"&&e=="x")u="y",x=j||1;else if(b=="z"&&e=="y"||b=="y"&&e=="z")u="x",w=j||1;var S=w+1,k=x+1;m/=w;var W=n/x;for(v=0;v<k;v++)for(n=0;n<S;n++){var O=new THREE.Vector3;O[b]=(n*m-J)*c;O[e]=(v*W-Z)*h;O[u]=p;o.vertices.push(new THREE.Vertex(O))}for(v=0;v<x;v++)for(n=0;n<w;n++)o.faces.push(new THREE.Face4(n+S*v+
|
|
|
K,n+S*(v+1)+K,n+1+S*(v+1)+K,n+1+S*v+K,null,null,t)),o.faceVertexUvs[0].push([new THREE.UV(n/w,v/x),new THREE.UV(n/w,(v+1)/x),new THREE.UV((n+1)/w,(v+1)/x),new THREE.UV((n+1)/w,v/x)])}THREE.Geometry.call(this);var o=this,t=b/2,u=c/2,v=e/2,m=m?-1:1;if(h!==void 0)if(h instanceof Array)this.materials=h;else{this.materials=[];for(var x=0;x<6;x++)this.materials.push([h])}else this.materials=[];this.sides={px:!0,nx:!0,py:!0,ny:!0,pz:!0,nz:!0};if(n!=void 0)for(var w in n)this.sides[w]!=void 0&&(this.sides[w]=
|
|
|
n[w]);this.sides.px&&p("z","y",1*m,-1,e,c,-t,this.materials[0]);this.sides.nx&&p("z","y",-1*m,-1,e,c,t,this.materials[1]);this.sides.py&&p("x","z",1*m,1,b,e,u,this.materials[2]);this.sides.ny&&p("x","z",1*m,-1,b,e,-u,this.materials[3]);this.sides.pz&&p("x","y",1*m,-1,b,c,v,this.materials[4]);this.sides.nz&&p("x","y",-1*m,-1,b,c,-v,this.materials[5]);(function(){for(var b=[],e=[],c=0,f=o.vertices.length;c<f;c++){for(var h=o.vertices[c],g=!1,j=0,m=b.length;j<m;j++){var n=b[j];if(h.position.x==n.position.x&&
|
|
|
h.position.y==n.position.y&&h.position.z==n.position.z){e[c]=j;g=!0;break}}if(!g)e[c]=b.length,b.push(new THREE.Vertex(h.position.clone()))}c=0;for(f=o.faces.length;c<f;c++)h=o.faces[c],h.a=e[h.a],h.b=e[h.b],h.c=e[h.c],h.d=e[h.d];o.vertices=b})();this.computeCentroids();this.computeFaceNormals()};THREE.CubeGeometry.prototype=new THREE.Geometry;THREE.CubeGeometry.prototype.constructor=THREE.CubeGeometry;
|
|
|
THREE.CylinderGeometry=function(b,c,e,f,g,j){function h(b,e,c){m.vertices.push(new THREE.Vertex(new THREE.Vector3(b,e,c)))}THREE.Geometry.call(this);var m=this,n,p=Math.PI*2,o=f/2;for(n=0;n<b;n++)h(Math.sin(p*n/b)*c,Math.cos(p*n/b)*c,-o);for(n=0;n<b;n++)h(Math.sin(p*n/b)*e,Math.cos(p*n/b)*e,o);for(n=0;n<b;n++)m.faces.push(new THREE.Face4(n,n+b,b+(n+1)%b,(n+1)%b));if(e>0){h(0,0,-o-(j||0));for(n=b;n<b+b/2;n++)m.faces.push(new THREE.Face4(2*b,(2*n-2*b)%b,(2*n-2*b+1)%b,(2*n-2*b+2)%b))}if(c>0){h(0,0,o+
|
|
|
(g||0));for(n=b+b/2;n<2*b;n++)m.faces.push(new THREE.Face4(2*b+1,(2*n-2*b+2)%b+b,(2*n-2*b+1)%b+b,(2*n-2*b)%b+b))}n=0;for(b=this.faces.length;n<b;n++){var c=[],e=this.faces[n],g=this.vertices[e.a],j=this.vertices[e.b],o=this.vertices[e.c],t=this.vertices[e.d];c.push(new THREE.UV(0.5+Math.atan2(g.position.x,g.position.y)/p,0.5+g.position.z/f));c.push(new THREE.UV(0.5+Math.atan2(j.position.x,j.position.y)/p,0.5+j.position.z/f));c.push(new THREE.UV(0.5+Math.atan2(o.position.x,o.position.y)/p,0.5+o.position.z/
|
|
|
f));e instanceof THREE.Face4&&c.push(new THREE.UV(0.5+Math.atan2(t.position.x,t.position.y)/p,0.5+t.position.z/f));this.faceVertexUvs[0].push(c)}this.computeCentroids();this.computeFaceNormals()};THREE.CylinderGeometry.prototype=new THREE.Geometry;THREE.CylinderGeometry.prototype.constructor=THREE.CylinderGeometry;
|
|
|
-THREE.ExtrudeGeometry=function(b,c){function e(b,e,c,f){b=b.clone().subSelf(e);c/=b.length();return b.multiplyScalar(f?1+c:1-c).addSelf(e)}function f(b){for(A=b.length;--A>=0;){k=A;V=A-1;V<0&&(V=b.length-1);for(var e=0,e=0;e<t+o*2;e++){var c=S*e,f=S*(e+1);F.faces.push(new THREE.Face4(O+k+c,O+V+c,O+V+f,O+k+f))}}}function g(b,e,c){F.vertices.push(new THREE.Vertex(new THREE.Vector3(b,e,c)))}function j(b,e,c){F.faces.push(new THREE.Face3(b,e,c))}var h=c.amount!==void 0?c.amount:100,m=c.bevelThickness!==
|
|
|
-void 0?c.bevelThickness:8,n=c.bevelSize!==void 0?c.bevelSize:m,p=c.bevelEnabled!==void 0?c.bevelEnabled:!0,o=c.bevelSegments!==void 0?c.bevelSegments:3;p||(o=0);var t=c.steps!==void 0?c.steps:1,u=c.path!==void 0?c.path:null,v,x=!1;if(u)v=u.getPoints(),t=v.length,x=!0;THREE.Geometry.call(this);var w,B,y,F=this,u=b.extractAllPoints(),C=u.shape,u=u.holes,E=!THREE.Shape.Utils.isClockWise(C);if(E){C=C.reverse();B=0;for(y=u.length;B<y;B++)w=u[B],THREE.Shape.Utils.isClockWise(w)&&(u[B]=w.reverse());E=!1}var E=
|
|
|
-THREE.Shape.Utils.triangulateShape(C,u),G=C;B=0;for(y=u.length;B<y;B++)w=u[B],C=C.concat(w);var A,P,I=new THREE.Vector2;A=0;for(P=G.length;A<P;A++)I.addSelf(G[A]);var H=I.divideScalar(G.length),T=[];B=0;for(y=u.length;B<y;B++){I=new THREE.Vector2;w=u[B];A=0;for(P=w.length;A<P;A++)I.addSelf(w[A]);T[B]=I.divideScalar(w.length)}var U,J,Y,K,S=C.length,I=E.length;for(U=o;U>0;U--){w=U/o;Y=m*w;J=n*(1-Math.sin((1-w)*Math.PI/2));A=0;for(P=G.length;A<P;A++)K=e(G[A],H,J,!1),g(K.x,K.y,-Y);B=0;for(y=u.length;B<
|
|
|
-y;B++){w=u[B];A=0;for(P=w.length;A<P;A++)K=e(w[A],T[B],J,!0),g(K.x,K.y,-Y)}}for(A=0;A<S;A++)K=C[A],x?g(K.x,K.y+v[0].y,v[0].x):g(K.x,K.y,0);for(w=1;w<=t;w++)for(A=0;A<S;A++)K=C[A],x?g(K.x,K.y+v[w-1].y,v[w-1].x):g(K.x,K.y,h/t*w);for(U=1;U<=o;U++){w=U/o;Y=m*w;J=n*(1-Math.sin((1-w)*Math.PI/2));A=0;for(P=G.length;A<P;A++)K=e(G[A],H,J,!1),g(K.x,K.y,h+Y);B=0;for(y=u.length;B<y;B++){w=u[B];A=0;for(P=w.length;A<P;A++)K=e(w[A],T[B],J,!0),x?g(K.x,K.y+v[t-1].y,v[t-1].x+Y):g(K.x,K.y,h+Y)}}if(p){m=S*0;for(A=0;A<
|
|
|
-I;A++)h=E[A],j(h[2]+m,h[1]+m,h[0]+m);m=S*(t+o*2);for(A=0;A<I;A++)h=E[A],j(h[0]+m,h[1]+m,h[2]+m)}else{for(A=0;A<I;A++)h=E[A],j(h[2],h[1],h[0]);for(A=0;A<I;A++)h=E[A],j(h[0]+S*t,h[1]+S*t,h[2]+S*t)}var k,V,O=0;f(G);O+=G.length;B=0;for(y=u.length;B<y;B++)w=u[B],f(w),O+=w.length;this.computeCentroids();this.computeFaceNormals()};THREE.ExtrudeGeometry.prototype=new THREE.Geometry;THREE.ExtrudeGeometry.prototype.constructor=THREE.ExtrudeGeometry;
|
|
|
+THREE.ExtrudeGeometry=function(b,c){function e(b,e,c,f){b=b.clone().subSelf(e);c/=b.length();return b.multiplyScalar(f?1+c:1-c).addSelf(e)}function f(b){for(A=b.length;--A>=0;){k=A;W=A-1;W<0&&(W=b.length-1);for(var e=0,e=0;e<t+o*2;e++){var c=S*e,f=S*(e+1);E.faces.push(new THREE.Face4(O+k+c,O+W+c,O+W+f,O+k+f))}}}function g(b,e,c){E.vertices.push(new THREE.Vertex(new THREE.Vector3(b,e,c)))}function j(b,e,c){E.faces.push(new THREE.Face3(b,e,c))}var h=c.amount!==void 0?c.amount:100,m=c.bevelThickness!==
|
|
|
+void 0?c.bevelThickness:8,n=c.bevelSize!==void 0?c.bevelSize:m,p=c.bevelEnabled!==void 0?c.bevelEnabled:!0,o=c.bevelSegments!==void 0?c.bevelSegments:3;p||(o=0);var t=c.steps!==void 0?c.steps:1,u=c.path!==void 0?c.path:null,v,x=!1;if(u)v=u.getPoints(),t=v.length,x=!0;THREE.Geometry.call(this);var w,y,C,E=this,u=b.extractAllPoints(),B=u.shape,u=u.holes,I=!THREE.Shape.Utils.isClockWise(B);if(I){B=B.reverse();y=0;for(C=u.length;y<C;y++)w=u[y],THREE.Shape.Utils.isClockWise(w)&&(u[y]=w.reverse());I=!1}var I=
|
|
|
+THREE.Shape.Utils.triangulateShape(B,u),F=B;y=0;for(C=u.length;y<C;y++)w=u[y],B=B.concat(w);var A,P,H=new THREE.Vector2;A=0;for(P=F.length;A<P;A++)H.addSelf(F[A]);var G=H.divideScalar(F.length),U=[];y=0;for(C=u.length;y<C;y++){H=new THREE.Vector2;w=u[y];A=0;for(P=w.length;A<P;A++)H.addSelf(w[A]);U[y]=H.divideScalar(w.length)}var V,J,Z,K,S=B.length,H=I.length;for(V=o;V>0;V--){w=V/o;Z=m*w;J=n*(1-Math.sin((1-w)*Math.PI/2));A=0;for(P=F.length;A<P;A++)K=e(F[A],G,J,!1),g(K.x,K.y,-Z);y=0;for(C=u.length;y<
|
|
|
+C;y++){w=u[y];A=0;for(P=w.length;A<P;A++)K=e(w[A],U[y],J,!0),g(K.x,K.y,-Z)}}for(A=0;A<S;A++)K=B[A],x?g(K.x,K.y+v[0].y,v[0].x):g(K.x,K.y,0);for(w=1;w<=t;w++)for(A=0;A<S;A++)K=B[A],x?g(K.x,K.y+v[w-1].y,v[w-1].x):g(K.x,K.y,h/t*w);for(V=1;V<=o;V++){w=V/o;Z=m*w;J=n*(1-Math.sin((1-w)*Math.PI/2));A=0;for(P=F.length;A<P;A++)K=e(F[A],G,J,!1),g(K.x,K.y,h+Z);y=0;for(C=u.length;y<C;y++){w=u[y];A=0;for(P=w.length;A<P;A++)K=e(w[A],U[y],J,!0),x?g(K.x,K.y+v[t-1].y,v[t-1].x+Z):g(K.x,K.y,h+Z)}}if(p){m=S*0;for(A=0;A<
|
|
|
+H;A++)h=I[A],j(h[2]+m,h[1]+m,h[0]+m);m=S*(t+o*2);for(A=0;A<H;A++)h=I[A],j(h[0]+m,h[1]+m,h[2]+m)}else{for(A=0;A<H;A++)h=I[A],j(h[2],h[1],h[0]);for(A=0;A<H;A++)h=I[A],j(h[0]+S*t,h[1]+S*t,h[2]+S*t)}var k,W,O=0;f(F);O+=F.length;y=0;for(C=u.length;y<C;y++)w=u[y],f(w),O+=w.length;this.computeCentroids();this.computeFaceNormals()};THREE.ExtrudeGeometry.prototype=new THREE.Geometry;THREE.ExtrudeGeometry.prototype.constructor=THREE.ExtrudeGeometry;
|
|
|
THREE.IcosahedronGeometry=function(b){function c(b,e,c){var f=Math.sqrt(b*b+e*e+c*c);return g.vertices.push(new THREE.Vertex(new THREE.Vector3(b/f,e/f,c/f)))-1}function e(b,e,c,f){f.faces.push(new THREE.Face3(b,e,c))}function f(b,e){var f=g.vertices[b].position,h=g.vertices[e].position;return c((f.x+h.x)/2,(f.y+h.y)/2,(f.z+h.z)/2)}var g=this,j=new THREE.Geometry,h;this.subdivisions=b||0;THREE.Geometry.call(this);b=(1+Math.sqrt(5))/2;c(-1,b,0);c(1,b,0);c(-1,-b,0);c(1,-b,0);c(0,-1,b);c(0,1,b);c(0,-1,
|
|
|
-b);c(0,1,-b);c(b,0,-1);c(b,0,1);c(-b,0,-1);c(-b,0,1);e(0,11,5,j);e(0,5,1,j);e(0,1,7,j);e(0,7,10,j);e(0,10,11,j);e(1,5,9,j);e(5,11,4,j);e(11,10,2,j);e(10,7,6,j);e(7,1,8,j);e(3,9,4,j);e(3,4,2,j);e(3,2,6,j);e(3,6,8,j);e(3,8,9,j);e(4,9,5,j);e(2,4,11,j);e(6,2,10,j);e(8,6,7,j);e(9,8,1,j);for(b=0;b<this.subdivisions;b++){h=new THREE.Geometry;for(var m in j.faces){var n=f(j.faces[m].a,j.faces[m].b),p=f(j.faces[m].b,j.faces[m].c),o=f(j.faces[m].c,j.faces[m].a);e(j.faces[m].a,n,o,h);e(j.faces[m].b,p,n,h);
|
|
|
e(j.faces[m].c,o,p,h);e(n,p,o,h)}j.faces=h.faces}g.faces=j.faces;delete j;delete h;this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.IcosahedronGeometry.prototype=new THREE.Geometry;THREE.IcosahedronGeometry.prototype.constructor=THREE.IcosahedronGeometry;
|
|
@@ -474,25 +474,25 @@ for(m=0;m<f.length-1;m++)this.faces.push(new THREE.Face4(g[m],g[m+1],f[m+1],f[m]
|
|
|
THREE.PlaneGeometry=function(b,c,e,f){THREE.Geometry.call(this);var g,j=b/2,h=c/2,e=e||1,f=f||1,m=e+1,n=f+1;b/=e;var p=c/f;for(g=0;g<n;g++)for(c=0;c<m;c++)this.vertices.push(new THREE.Vertex(new THREE.Vector3(c*b-j,-(g*p-h),0)));for(g=0;g<f;g++)for(c=0;c<e;c++)this.faces.push(new THREE.Face4(c+m*g,c+m*(g+1),c+1+m*(g+1),c+1+m*g)),this.faceVertexUvs[0].push([new THREE.UV(c/e,g/f),new THREE.UV(c/e,(g+1)/f),new THREE.UV((c+1)/e,(g+1)/f),new THREE.UV((c+1)/e,g/f)]);this.computeCentroids();this.computeFaceNormals()};
|
|
|
THREE.PlaneGeometry.prototype=new THREE.Geometry;THREE.PlaneGeometry.prototype.constructor=THREE.PlaneGeometry;
|
|
|
THREE.SphereGeometry=function(b,c,e){THREE.Geometry.call(this);for(var b=b||50,f,g=Math.PI,j=Math.max(3,c||8),h=Math.max(2,e||6),c=[],e=0;e<h+1;e++){f=e/h;var m=b*Math.cos(f*g),n=b*Math.sin(f*g),p=[],o=0;for(f=0;f<j;f++){var t=2*f/j,u=n*Math.sin(t*g),t=n*Math.cos(t*g);(e==0||e==h)&&f>0||(o=this.vertices.push(new THREE.Vertex(new THREE.Vector3(t,m,u)))-1);p.push(o)}c.push(p)}for(var v,x,w,g=c.length,e=0;e<g;e++)if(j=c[e].length,e>0)for(f=0;f<j;f++){p=f==j-1;h=c[e][p?0:f+1];m=c[e][p?j-1:f];n=c[e-1][p?
|
|
|
-j-1:f];p=c[e-1][p?0:f+1];u=e/(g-1);v=(e-1)/(g-1);x=(f+1)/j;var t=f/j,o=new THREE.UV(1-x,u),u=new THREE.UV(1-t,u),t=new THREE.UV(1-t,v),B=new THREE.UV(1-x,v);e<c.length-1&&(v=this.vertices[h].position.clone(),x=this.vertices[m].position.clone(),w=this.vertices[n].position.clone(),v.normalize(),x.normalize(),w.normalize(),this.faces.push(new THREE.Face3(h,m,n,[new THREE.Vector3(v.x,v.y,v.z),new THREE.Vector3(x.x,x.y,x.z),new THREE.Vector3(w.x,w.y,w.z)])),this.faceVertexUvs[0].push([o,u,t]));e>1&&(v=
|
|
|
-this.vertices[h].position.clone(),x=this.vertices[n].position.clone(),w=this.vertices[p].position.clone(),v.normalize(),x.normalize(),w.normalize(),this.faces.push(new THREE.Face3(h,n,p,[new THREE.Vector3(v.x,v.y,v.z),new THREE.Vector3(x.x,x.y,x.z),new THREE.Vector3(w.x,w.y,w.z)])),this.faceVertexUvs[0].push([o,t,B]))}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals();this.boundingSphere={radius:b}};THREE.SphereGeometry.prototype=new THREE.Geometry;
|
|
|
+j-1:f];p=c[e-1][p?0:f+1];u=e/(g-1);v=(e-1)/(g-1);x=(f+1)/j;var t=f/j,o=new THREE.UV(1-x,u),u=new THREE.UV(1-t,u),t=new THREE.UV(1-t,v),y=new THREE.UV(1-x,v);e<c.length-1&&(v=this.vertices[h].position.clone(),x=this.vertices[m].position.clone(),w=this.vertices[n].position.clone(),v.normalize(),x.normalize(),w.normalize(),this.faces.push(new THREE.Face3(h,m,n,[new THREE.Vector3(v.x,v.y,v.z),new THREE.Vector3(x.x,x.y,x.z),new THREE.Vector3(w.x,w.y,w.z)])),this.faceVertexUvs[0].push([o,u,t]));e>1&&(v=
|
|
|
+this.vertices[h].position.clone(),x=this.vertices[n].position.clone(),w=this.vertices[p].position.clone(),v.normalize(),x.normalize(),w.normalize(),this.faces.push(new THREE.Face3(h,n,p,[new THREE.Vector3(v.x,v.y,v.z),new THREE.Vector3(x.x,x.y,x.z),new THREE.Vector3(w.x,w.y,w.z)])),this.faceVertexUvs[0].push([o,t,y]))}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals();this.boundingSphere={radius:b}};THREE.SphereGeometry.prototype=new THREE.Geometry;
|
|
|
THREE.SphereGeometry.prototype.constructor=THREE.SphereGeometry;THREE.TextGeometry=function(b,c){THREE.Geometry.call(this);this.parameters=c||{};this.set(b)};THREE.TextGeometry.prototype=new THREE.Geometry;THREE.TextGeometry.prototype.constructor=THREE.TextGeometry;
|
|
|
THREE.TextGeometry.prototype.set=function(b,c){function e(b,e,c){x.vertices.push(new THREE.Vertex(new THREE.Vector3(b,e,c)))}function f(b,e,c,f){x.faces.push(new THREE.Face4(b,e,c,f))}this.text=b;var c=c||this.parameters,g=c.height!==void 0?c.height:50,j=c.curveSegments!==void 0?c.curveSegments:4,h=c.font!==void 0?c.font:"helvetiker",m=c.weight!==void 0?c.weight:"normal",n=c.style!==void 0?c.style:"normal",p=c.bevelThickness!==void 0?c.bevelThickness:10,o=c.bevelSize!==void 0?c.bevelSize:8,t=c.bevelEnabled!==
|
|
|
-void 0?c.bevelEnabled:!1;THREE.FontUtils.size=c.size!==void 0?c.size:100;THREE.FontUtils.divisions=j;THREE.FontUtils.face=h;THREE.FontUtils.weight=m;THREE.FontUtils.style=n;THREE.FontUtils.bevelSize=o;var m=THREE.FontUtils.drawText(b),j=m.points,u=m.faces,h=m.contour,v=m.bevel,x=this;x.vertices=[];x.faces=[];for(var w,n=j.length,B=u.length,o=v.length,m=0;m<n;m++)w=j[m],e(w.x,w.y,0);for(m=0;m<n;m++)w=j[m],e(w.x,w.y,g);if(t){for(m=0;m<o;m++)w=v[m],e(w.x,w.y,p);for(m=0;m<o;m++)w=v[m],e(w.x,w.y,g-p)}for(m=
|
|
|
-0;m<B;m++)g=u[m],x.faces.push(new THREE.Face3(g[2],g[1],g[0]));for(m=0;m<B;m++)g=u[m],x.faces.push(new THREE.Face3(g[0]+n,g[1]+n,g[2]+n));var y;if(t)for(m=v.length;--m>0;){if(y){if(y.equals(h[m])){y=null;continue}}else y=h[m];p=n*2+m;u=p-1;f(p,u,u+o,p+o);for(t=0;t<n;t++)if(j[t].equals(h[m]))break;for(g=0;g<n;g++)if(j[g].equals(h[m-1]))break;f(t,g,u,p);f(p+o,u+o,g+n,t+n)}else for(m=h.length;--m>0;){if(y){if(y.equals(h[m])){y=null;continue}}else y=h[m];for(t=0;t<n;t++)if(j[t].equals(h[m]))break;for(g=
|
|
|
+void 0?c.bevelEnabled:!1;THREE.FontUtils.size=c.size!==void 0?c.size:100;THREE.FontUtils.divisions=j;THREE.FontUtils.face=h;THREE.FontUtils.weight=m;THREE.FontUtils.style=n;THREE.FontUtils.bevelSize=o;var m=THREE.FontUtils.drawText(b),j=m.points,u=m.faces,h=m.contour,v=m.bevel,x=this;x.vertices=[];x.faces=[];for(var w,n=j.length,y=u.length,o=v.length,m=0;m<n;m++)w=j[m],e(w.x,w.y,0);for(m=0;m<n;m++)w=j[m],e(w.x,w.y,g);if(t){for(m=0;m<o;m++)w=v[m],e(w.x,w.y,p);for(m=0;m<o;m++)w=v[m],e(w.x,w.y,g-p)}for(m=
|
|
|
+0;m<y;m++)g=u[m],x.faces.push(new THREE.Face3(g[2],g[1],g[0]));for(m=0;m<y;m++)g=u[m],x.faces.push(new THREE.Face3(g[0]+n,g[1]+n,g[2]+n));var C;if(t)for(m=v.length;--m>0;){if(C){if(C.equals(h[m])){C=null;continue}}else C=h[m];p=n*2+m;u=p-1;f(p,u,u+o,p+o);for(t=0;t<n;t++)if(j[t].equals(h[m]))break;for(g=0;g<n;g++)if(j[g].equals(h[m-1]))break;f(t,g,u,p);f(p+o,u+o,g+n,t+n)}else for(m=h.length;--m>0;){if(C){if(C.equals(h[m])){C=null;continue}}else C=h[m];for(t=0;t<n;t++)if(j[t].equals(h[m]))break;for(g=
|
|
|
0;g<n;g++)if(j[g].equals(h[m-1]))break;f(t,g,g+n,t+n)}this.computeCentroids();this.computeFaceNormals()};
|
|
|
THREE.FontUtils={faces:{},face:"helvetiker",weight:"normal",style:"normal",size:150,divisions:10,getFace:function(){return this.faces[this.face][this.weight][this.style]},loadFace:function(b){var c=b.familyName.toLowerCase();this.faces[c]=this.faces[c]||{};this.faces[c][b.cssFontWeight]=this.faces[c][b.cssFontWeight]||{};this.faces[c][b.cssFontWeight][b.cssFontStyle]=b;return this.faces[c][b.cssFontWeight][b.cssFontStyle]=b},extractPoints:function(b,c){if(b.length<3)return console.log("not valid polygon"),
|
|
|
{points:b,faces:[]};for(var e,f,g,j,h,m=[],n=0;n<c.length;n++){h=c[n];j=[];for(e=0;e<h.length;e++)f=h[e],j.push(f.x+","+f.y);var p;e=j.slice(1).indexOf(j[0]);var o=this.Triangulate.area(h.slice(0,e+1))<0;f=[];for(e=-1;e<j.length;){p=e+1;e=j[p];e=j.slice(p+1).indexOf(e)+p;if(e<=p)break;var t=h.slice(p,e+1);o?this.Triangulate.area(t)<0?(p>0&&m.push({shape:g,holes:f}),g=t,f=[]):f.push(t):this.Triangulate.area(t)<0?(m.push({shape:t,holes:f}),f=[]):f.push(t);e++}o&&m.push({shape:g,holes:f})}var u,v,x,
|
|
|
-w,B,y;j=[];for(h=0;h<m.length;h++){n=m[h];g=n.shape;f=n.holes;for(p=0;p<f.length;p++){o=f[p];x=Number.POSITIVE_INFINITY;for(t=0;t<o.length;t++){B=o[t];for(e=0;e<g.length;e++)w=g[e],w=B.distanceTo(w),w<x&&(x=w,u=t,v=e)}e=v-1>=0?v-1:g.length-1;var t=u-1>=0?u-1:o.length-1,F=[];F.push(o[u]);F.push(g[v]);F.push(g[e]);x=this.Triangulate.area(F);var C=[];C.push(o[u]);C.push(o[t]);C.push(g[v]);B=this.Triangulate.area(C);w=v;y=u;v+=1;u+=-1;v<0&&(v+=g.length);v%=g.length;u<0&&(u+=o.length);u%=g.length;e=v-
|
|
|
-1>=0?v-1:g.length-1;t=u-1>=0?u-1:o.length-1;F=[];F.push(o[u]);F.push(g[v]);F.push(g[e]);F=this.Triangulate.area(F);C=[];C.push(o[u]);C.push(o[t]);C.push(g[v]);C=this.Triangulate.area(C);x+B>F+C&&(v=w,u=y,v<0&&(v+=g.length),v%=g.length,u<0&&(u+=o.length),u%=g.length,e=v-1>=0?v-1:g.length-1,t=u-1>=0?u-1:o.length-1);x=g.slice(0,v);B=g.slice(v);w=o.slice(u);y=o.slice(0,u);j.push(o[u]);j.push(g[v]);j.push(g[e]);j.push(o[u]);j.push(o[t]);j.push(g[v]);g=x.concat(w).concat(y).concat(B)}n.shape=g}u=[];v=[];
|
|
|
-for(h=p=0;h<m.length;h++){n=m[h];g=n.shape;u=u.concat(g);o=THREE.FontUtils.Triangulate(g,!0);for(f=0;f<o.length;f++)n=o[f],n[0]+=p,n[1]+=p,n[2]+=p;v=v.concat(o);p+=g.length}var E;for(f=0;f<j.length/3;f++){n=[];for(m=0;m<3;m++){h=!1;for(g=0;g<u.length&&!h;g++)E=f*3+m,u[g].equals(j[E])&&(n.push(g),h=!0);h||(u.push(j[E]),n.push(u.length-1),console.log("not found"))}v.push(n)}return{points:u,faces:v}},drawText:function(b){var c=[],e=[],f,g=this.getFace(),j=this.size/g.resolution,h=0;f=String(b).split("");
|
|
|
+w,y,C;j=[];for(h=0;h<m.length;h++){n=m[h];g=n.shape;f=n.holes;for(p=0;p<f.length;p++){o=f[p];x=Number.POSITIVE_INFINITY;for(t=0;t<o.length;t++){y=o[t];for(e=0;e<g.length;e++)w=g[e],w=y.distanceTo(w),w<x&&(x=w,u=t,v=e)}e=v-1>=0?v-1:g.length-1;var t=u-1>=0?u-1:o.length-1,E=[];E.push(o[u]);E.push(g[v]);E.push(g[e]);x=this.Triangulate.area(E);var B=[];B.push(o[u]);B.push(o[t]);B.push(g[v]);y=this.Triangulate.area(B);w=v;C=u;v+=1;u+=-1;v<0&&(v+=g.length);v%=g.length;u<0&&(u+=o.length);u%=g.length;e=v-
|
|
|
+1>=0?v-1:g.length-1;t=u-1>=0?u-1:o.length-1;E=[];E.push(o[u]);E.push(g[v]);E.push(g[e]);E=this.Triangulate.area(E);B=[];B.push(o[u]);B.push(o[t]);B.push(g[v]);B=this.Triangulate.area(B);x+y>E+B&&(v=w,u=C,v<0&&(v+=g.length),v%=g.length,u<0&&(u+=o.length),u%=g.length,e=v-1>=0?v-1:g.length-1,t=u-1>=0?u-1:o.length-1);x=g.slice(0,v);y=g.slice(v);w=o.slice(u);C=o.slice(0,u);j.push(o[u]);j.push(g[v]);j.push(g[e]);j.push(o[u]);j.push(o[t]);j.push(g[v]);g=x.concat(w).concat(C).concat(y)}n.shape=g}u=[];v=[];
|
|
|
+for(h=p=0;h<m.length;h++){n=m[h];g=n.shape;u=u.concat(g);o=THREE.FontUtils.Triangulate(g,!0);for(f=0;f<o.length;f++)n=o[f],n[0]+=p,n[1]+=p,n[2]+=p;v=v.concat(o);p+=g.length}var I;for(f=0;f<j.length/3;f++){n=[];for(m=0;m<3;m++){h=!1;for(g=0;g<u.length&&!h;g++)I=f*3+m,u[g].equals(j[I])&&(n.push(g),h=!0);h||(u.push(j[I]),n.push(u.length-1),console.log("not found"))}v.push(n)}return{points:u,faces:v}},drawText:function(b){var c=[],e=[],f,g=this.getFace(),j=this.size/g.resolution,h=0;f=String(b).split("");
|
|
|
for(var m=f.length,n=new THREE.Path,b=0;b<m;b++){var p=this.extractGlyphPoints(f[b],g,j,h,n);h+=p.offset;c.push(p.points);e=e.concat(p.points)}console.log(n);b=h/2;for(f=0;f<e.length;f++)e[f].x-=b;c=this.extractPoints(e,c);c.contour=e;g=[];j=[];f=[];for(var h=[],m=new THREE.Vector2,o,b=e.length;--b>=0;){if(o){if(o.equals(e[b])){o=null;n=this.Triangulate.area(f)>0;h.push(n);j.push(m.divideScalar(f.length));f=[];m=new THREE.Vector2;continue}}else o=e[b];m.addSelf(e[b]);f.push(e[b])}b=e.length;for(f=
|
|
|
0;--b>=0;)n=e[b],m=j[f],n=n.clone().subSelf(m),p=this.bevelSize/n.length(),h[f]?p+=1:p=1-p,p=n.multiplyScalar(p).addSelf(m),g.unshift(p),o?o.equals(e[b])&&(o=null,f++):o=e[b];c.bevel=g;return c},b2p0:function(b,c){var e=1-b;return e*e*c},b2p1:function(b,c){return 2*(1-b)*b*c},b2p2:function(b,c){return b*b*c},b2:function(b,c,e,f){return this.b2p0(b,c)+this.b2p1(b,e)+this.b2p2(b,f)},b3p0:function(b,c){var e=1-b;return e*e*e*c},b3p1:function(b,c){var e=1-b;return 3*e*e*b*c},b3p2:function(b,c){return 3*
|
|
|
-(1-b)*b*b*c},b3p3:function(b,c){return b*b*b*c},b3:function(b,c,e,f,g){return this.b3p0(b,c)+this.b3p1(b,e)+this.b3p2(b,f)+this.b3p3(b,g)},extractGlyphPoints:function(b,c,e,f,g){var j=[],h,m,n,p,o,t,u,v,x,w,B=c.glyphs[b]||c.glyphs[ctxt.options.fallbackCharacter];if(B){if(B.o){c=B._cachedOutline||(B._cachedOutline=B.o.split(" "));n=c.length;for(b=0;b<n;)switch(m=c[b++],m){case "m":m=c[b++]*e+f;p=c[b++]*e;j.push(new THREE.Vector2(m,p));g.moveTo(m,p);break;case "l":m=c[b++]*e+f;p=c[b++]*e;j.push(new THREE.Vector2(m,
|
|
|
-p));g.lineTo(m,p);break;case "q":m=c[b++]*e+f;p=c[b++]*e;u=c[b++]*e+f;v=c[b++]*e;g.quadraticCurveTo(u,v,m,p);if(h=j[j.length-1]){o=h.x;t=h.y;h=1;for(divisions=this.divisions;h<=divisions;h++){var y=h/divisions,F=THREE.FontUtils.b2(y,o,u,m),y=THREE.FontUtils.b2(y,t,v,p);j.push(new THREE.Vector2(F,y))}}break;case "b":if(m=c[b++]*e+f,p=c[b++]*e,u=c[b++]*e+f,v=c[b++]*-e,x=c[b++]*e+f,w=c[b++]*-e,g.bezierCurveTo(m,p,u,v,x,w),h=j[j.length-1]){o=h.x;t=h.y;h=1;for(divisions=this.divisions;h<=divisions;h++)y=
|
|
|
-h/divisions,F=THREE.FontUtils.b3(y,o,u,x,m),y=THREE.FontUtils.b3(y,t,v,w,p),j.push(new THREE.Vector2(F,y))}}}return{offset:B.ha*e,points:j,path:g}}}};
|
|
|
-(function(b){var c=function(b){for(var c=b.length,g=0,j=c-1,h=0;h<c;j=h++)g+=b[j].x*b[h].y-b[h].x*b[j].y;return g*0.5};b.Triangulate=function(b,f){var g=b.length;if(g<3)return null;var j=[],h=[],m=[],n,p,o;if(c(b)>0)for(p=0;p<g;p++)h[p]=p;else for(p=0;p<g;p++)h[p]=g-1-p;var t=2*g;for(p=g-1;g>2;){if(t--<=0){console.log("Warning, unable to triangulate polygon!");if(f)return m;return j}n=p;g<=n&&(n=0);p=n+1;g<=p&&(p=0);o=p+1;g<=o&&(o=0);var u;a:{u=b;var v=n,x=p,w=o,B=g,y=h,F=void 0,C=void 0,E=void 0,
|
|
|
-G=void 0,A=void 0,P=void 0,I=void 0,H=void 0,T=void 0,C=u[y[v]].x,E=u[y[v]].y,G=u[y[x]].x,A=u[y[x]].y,P=u[y[w]].x,I=u[y[w]].y;if(1.0E-10>(G-C)*(I-E)-(A-E)*(P-C))u=!1;else{for(F=0;F<B;F++)if(!(F==v||F==x||F==w)){var H=u[y[F]].x,T=u[y[F]].y,U=void 0,J=void 0,Y=void 0,K=void 0,S=void 0,k=void 0,V=void 0,O=void 0,fa=void 0,ea=void 0,W=void 0,da=void 0,U=Y=S=void 0,U=P-G,J=I-A,Y=C-P,K=E-I,S=G-C,k=A-E,V=H-C,O=T-E,fa=H-G,ea=T-A,W=H-P,da=T-I,U=U*ea-J*fa,S=S*O-k*V,Y=Y*da-K*W;if(U>=0&&Y>=0&&S>=0){u=!1;break a}}u=
|
|
|
+(1-b)*b*b*c},b3p3:function(b,c){return b*b*b*c},b3:function(b,c,e,f,g){return this.b3p0(b,c)+this.b3p1(b,e)+this.b3p2(b,f)+this.b3p3(b,g)},extractGlyphPoints:function(b,c,e,f,g){var j=[],h,m,n,p,o,t,u,v,x,w,y=c.glyphs[b]||c.glyphs[ctxt.options.fallbackCharacter];if(y){if(y.o){c=y._cachedOutline||(y._cachedOutline=y.o.split(" "));n=c.length;for(b=0;b<n;)switch(m=c[b++],m){case "m":m=c[b++]*e+f;p=c[b++]*e;j.push(new THREE.Vector2(m,p));g.moveTo(m,p);break;case "l":m=c[b++]*e+f;p=c[b++]*e;j.push(new THREE.Vector2(m,
|
|
|
+p));g.lineTo(m,p);break;case "q":m=c[b++]*e+f;p=c[b++]*e;u=c[b++]*e+f;v=c[b++]*e;g.quadraticCurveTo(u,v,m,p);if(h=j[j.length-1]){o=h.x;t=h.y;h=1;for(divisions=this.divisions;h<=divisions;h++){var C=h/divisions,E=THREE.FontUtils.b2(C,o,u,m),C=THREE.FontUtils.b2(C,t,v,p);j.push(new THREE.Vector2(E,C))}}break;case "b":if(m=c[b++]*e+f,p=c[b++]*e,u=c[b++]*e+f,v=c[b++]*-e,x=c[b++]*e+f,w=c[b++]*-e,g.bezierCurveTo(m,p,u,v,x,w),h=j[j.length-1]){o=h.x;t=h.y;h=1;for(divisions=this.divisions;h<=divisions;h++)C=
|
|
|
+h/divisions,E=THREE.FontUtils.b3(C,o,u,x,m),C=THREE.FontUtils.b3(C,t,v,w,p),j.push(new THREE.Vector2(E,C))}}}return{offset:y.ha*e,points:j,path:g}}}};
|
|
|
+(function(b){var c=function(b){for(var c=b.length,g=0,j=c-1,h=0;h<c;j=h++)g+=b[j].x*b[h].y-b[h].x*b[j].y;return g*0.5};b.Triangulate=function(b,f){var g=b.length;if(g<3)return null;var j=[],h=[],m=[],n,p,o;if(c(b)>0)for(p=0;p<g;p++)h[p]=p;else for(p=0;p<g;p++)h[p]=g-1-p;var t=2*g;for(p=g-1;g>2;){if(t--<=0){console.log("Warning, unable to triangulate polygon!");if(f)return m;return j}n=p;g<=n&&(n=0);p=n+1;g<=p&&(p=0);o=p+1;g<=o&&(o=0);var u;a:{u=b;var v=n,x=p,w=o,y=g,C=h,E=void 0,B=void 0,I=void 0,
|
|
|
+F=void 0,A=void 0,P=void 0,H=void 0,G=void 0,U=void 0,B=u[C[v]].x,I=u[C[v]].y,F=u[C[x]].x,A=u[C[x]].y,P=u[C[w]].x,H=u[C[w]].y;if(1.0E-10>(F-B)*(H-I)-(A-I)*(P-B))u=!1;else{for(E=0;E<y;E++)if(!(E==v||E==x||E==w)){var G=u[C[E]].x,U=u[C[E]].y,V=void 0,J=void 0,Z=void 0,K=void 0,S=void 0,k=void 0,W=void 0,O=void 0,ga=void 0,fa=void 0,X=void 0,ea=void 0,V=Z=S=void 0,V=P-F,J=H-A,Z=B-P,K=I-H,S=F-B,k=A-I,W=G-B,O=U-I,ga=G-F,fa=U-A,X=G-P,ea=U-H,V=V*fa-J*ga,S=S*O-k*W,Z=Z*ea-K*X;if(V>=0&&Z>=0&&S>=0){u=!1;break a}}u=
|
|
|
!0}}if(u){j.push([b[h[n]],b[h[p]],b[h[o]]]);m.push([h[n],h[p],h[o]]);n=p;for(o=p+1;o<g;n++,o++)h[n]=h[o];g--;t=2*g}}if(f)return m;return j};b.Triangulate.area=c;return b})(THREE.FontUtils);window._typeface_js={faces:THREE.FontUtils.faces,loadFace:THREE.FontUtils.loadFace};
|
|
|
THREE.TorusGeometry=function(b,c,e,f){THREE.Geometry.call(this);this.radius=b||100;this.tube=c||40;this.segmentsR=e||8;this.segmentsT=f||6;b=[];for(c=0;c<=this.segmentsR;++c)for(e=0;e<=this.segmentsT;++e){var f=e/this.segmentsT*2*Math.PI,g=c/this.segmentsR*2*Math.PI;this.vertices.push(new THREE.Vertex(new THREE.Vector3((this.radius+this.tube*Math.cos(g))*Math.cos(f),(this.radius+this.tube*Math.cos(g))*Math.sin(f),this.tube*Math.sin(g))));b.push([e/this.segmentsT,1-c/this.segmentsR])}for(c=1;c<=this.segmentsR;++c)for(e=
|
|
|
1;e<=this.segmentsT;++e){var f=(this.segmentsT+1)*c+e,g=(this.segmentsT+1)*c+e-1,j=(this.segmentsT+1)*(c-1)+e-1,h=(this.segmentsT+1)*(c-1)+e;this.faces.push(new THREE.Face4(f,g,j,h));this.faceVertexUvs[0].push([new THREE.UV(b[f][0],b[f][1]),new THREE.UV(b[g][0],b[g][1]),new THREE.UV(b[j][0],b[j][1]),new THREE.UV(b[h][0],b[h][1])])}delete b;this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.TorusGeometry.prototype=new THREE.Geometry;
|
|
@@ -510,53 +510,53 @@ else if(b.DbgColor)h.color=b.DbgColor;if(b.colorSpecular)h.specular=j(b.colorSpe
|
|
|
b.mapSpecular&&c&&g(h,"specularMap",b.mapSpecular,b.mapSpecularRepeat,b.mapSpecularOffset,b.mapSpecularWrap);if(b.mapNormal){var p=THREE.ShaderUtils.lib.normal,o=THREE.UniformsUtils.clone(p.uniforms),t=h.color;m=h.specular;n=h.ambient;var u=h.shininess;o.tNormal.texture=h.normalMap;if(b.mapNormalFactor)o.uNormalScale.value=b.mapNormalFactor;if(h.map)o.tDiffuse.texture=h.map,o.enableDiffuse.value=!0;if(h.specularMap)o.tSpecular.texture=h.specularMap,o.enableSpecular.value=!0;if(h.lightMap)o.tAO.texture=
|
|
|
h.lightMap,o.enableAO.value=!0;o.uDiffuseColor.value.setHex(t);o.uSpecularColor.value.setHex(m);o.uAmbientColor.value.setHex(n);o.uShininess.value=u;if(h.opacity)o.uOpacity.value=h.opacity;h=new THREE.MeshShaderMaterial({fragmentShader:p.fragmentShader,vertexShader:p.vertexShader,uniforms:o,lights:!0,fog:!0})}else h=new THREE[m](h);return h}};THREE.JSONLoader=function(b){THREE.Loader.call(this,b)};THREE.JSONLoader.prototype=new THREE.Loader;THREE.JSONLoader.prototype.constructor=THREE.JSONLoader;
|
|
|
THREE.JSONLoader.prototype.supr=THREE.Loader.prototype;THREE.JSONLoader.prototype.load=function(b){var c=this,e=b.model,f=b.callback,g=b.texture_path?b.texture_path:this.extractUrlbase(e),b=new Worker(e);b.onmessage=function(b){c.createModel(b.data,f,g);c.onLoadComplete()};this.onLoadStart();b.postMessage((new Date).getTime())};
|
|
|
-THREE.JSONLoader.prototype.createModel=function(b,c,e){var f=new THREE.Geometry,g=b.scale!==void 0?1/b.scale:1;this.init_materials(f,b.materials,e);(function(e){if(b.version===void 0||b.version!=2)console.error("Deprecated file format.");else{var c,g,n,p,o,t,u,v,x,w,B,y,F,C,E=b.faces;t=b.vertices;var G=b.normals,A=b.colors,P=0;for(c=0;c<b.uvs.length;c++)b.uvs[c].length&&P++;for(c=0;c<P;c++)f.faceUvs[c]=[],f.faceVertexUvs[c]=[];p=0;for(o=t.length;p<o;)u=new THREE.Vertex,u.position.x=t[p++]*e,u.position.y=
|
|
|
-t[p++]*e,u.position.z=t[p++]*e,f.vertices.push(u);p=0;for(o=E.length;p<o;){e=E[p++];t=e&1;n=e&2;c=e&4;g=e&8;v=e&16;u=e&32;w=e&64;e&=128;t?(B=new THREE.Face4,B.a=E[p++],B.b=E[p++],B.c=E[p++],B.d=E[p++],t=4):(B=new THREE.Face3,B.a=E[p++],B.b=E[p++],B.c=E[p++],t=3);if(n)n=E[p++],B.materials=f.materials[n];n=f.faces.length;if(c)for(c=0;c<P;c++)y=b.uvs[c],x=E[p++],C=y[x*2],x=y[x*2+1],f.faceUvs[c][n]=new THREE.UV(C,x);if(g)for(c=0;c<P;c++){y=b.uvs[c];F=[];for(g=0;g<t;g++)x=E[p++],C=y[x*2],x=y[x*2+1],F[g]=
|
|
|
-new THREE.UV(C,x);f.faceVertexUvs[c][n]=F}if(v)v=E[p++]*3,g=new THREE.Vector3,g.x=G[v++],g.y=G[v++],g.z=G[v],B.normal=g;if(u)for(c=0;c<t;c++)v=E[p++]*3,g=new THREE.Vector3,g.x=G[v++],g.y=G[v++],g.z=G[v],B.vertexNormals.push(g);if(w)u=E[p++],u=new THREE.Color(A[u]),B.color=u;if(e)for(c=0;c<t;c++)u=E[p++],u=new THREE.Color(A[u]),B.vertexColors.push(u);f.faces.push(B)}}})(g);(function(){var e,c,g,n;if(b.skinWeights){e=0;for(c=b.skinWeights.length;e<c;e+=2)g=b.skinWeights[e],n=b.skinWeights[e+1],f.skinWeights.push(new THREE.Vector4(g,
|
|
|
+THREE.JSONLoader.prototype.createModel=function(b,c,e){var f=new THREE.Geometry,g=b.scale!==void 0?1/b.scale:1;this.init_materials(f,b.materials,e);(function(e){if(b.version===void 0||b.version!=2)console.error("Deprecated file format.");else{var c,g,n,p,o,t,u,v,x,w,y,C,E,B,I=b.faces;t=b.vertices;var F=b.normals,A=b.colors,P=0;for(c=0;c<b.uvs.length;c++)b.uvs[c].length&&P++;for(c=0;c<P;c++)f.faceUvs[c]=[],f.faceVertexUvs[c]=[];p=0;for(o=t.length;p<o;)u=new THREE.Vertex,u.position.x=t[p++]*e,u.position.y=
|
|
|
+t[p++]*e,u.position.z=t[p++]*e,f.vertices.push(u);p=0;for(o=I.length;p<o;){e=I[p++];t=e&1;n=e&2;c=e&4;g=e&8;v=e&16;u=e&32;w=e&64;e&=128;t?(y=new THREE.Face4,y.a=I[p++],y.b=I[p++],y.c=I[p++],y.d=I[p++],t=4):(y=new THREE.Face3,y.a=I[p++],y.b=I[p++],y.c=I[p++],t=3);if(n)n=I[p++],y.materials=f.materials[n];n=f.faces.length;if(c)for(c=0;c<P;c++)C=b.uvs[c],x=I[p++],B=C[x*2],x=C[x*2+1],f.faceUvs[c][n]=new THREE.UV(B,x);if(g)for(c=0;c<P;c++){C=b.uvs[c];E=[];for(g=0;g<t;g++)x=I[p++],B=C[x*2],x=C[x*2+1],E[g]=
|
|
|
+new THREE.UV(B,x);f.faceVertexUvs[c][n]=E}if(v)v=I[p++]*3,g=new THREE.Vector3,g.x=F[v++],g.y=F[v++],g.z=F[v],y.normal=g;if(u)for(c=0;c<t;c++)v=I[p++]*3,g=new THREE.Vector3,g.x=F[v++],g.y=F[v++],g.z=F[v],y.vertexNormals.push(g);if(w)u=I[p++],u=new THREE.Color(A[u]),y.color=u;if(e)for(c=0;c<t;c++)u=I[p++],u=new THREE.Color(A[u]),y.vertexColors.push(u);f.faces.push(y)}}})(g);(function(){var e,c,g,n;if(b.skinWeights){e=0;for(c=b.skinWeights.length;e<c;e+=2)g=b.skinWeights[e],n=b.skinWeights[e+1],f.skinWeights.push(new THREE.Vector4(g,
|
|
|
n,0,0))}if(b.skinIndices){e=0;for(c=b.skinIndices.length;e<c;e+=2)g=b.skinIndices[e],n=b.skinIndices[e+1],f.skinIndices.push(new THREE.Vector4(g,n,0,0))}f.bones=b.bones;f.animation=b.animation})();(function(e){if(b.morphTargets!==void 0){var c,g,n,p,o,t,u,v,x;c=0;for(g=b.morphTargets.length;c<g;c++){f.morphTargets[c]={};f.morphTargets[c].name=b.morphTargets[c].name;f.morphTargets[c].vertices=[];v=f.morphTargets[c].vertices;x=b.morphTargets[c].vertices;n=0;for(p=x.length;n<p;n+=3)o=x[n]*e,t=x[n+1]*
|
|
|
e,u=x[n+2]*e,v.push(new THREE.Vertex(new THREE.Vector3(o,t,u)))}}if(b.morphColors!==void 0){c=0;for(g=b.morphColors.length;c<g;c++){f.morphColors[c]={};f.morphColors[c].name=b.morphColors[c].name;f.morphColors[c].colors=[];p=f.morphColors[c].colors;o=b.morphColors[c].colors;e=0;for(n=o.length;e<n;e+=3)t=new THREE.Color(16755200),t.setRGB(o[e],o[e+1],o[e+2]),p.push(t)}}})(g);(function(){if(b.edges!==void 0){var e,c,g;for(e=0;e<b.edges.length;e+=2)c=b.edges[e],g=b.edges[e+1],f.edges.push(new THREE.Edge(f.vertices[c],
|
|
|
f.vertices[g],c,g))}})();f.computeCentroids();f.computeFaceNormals();this.hasNormals(f)&&f.computeTangents();c(f)};THREE.BinaryLoader=function(b){THREE.Loader.call(this,b)};THREE.BinaryLoader.prototype=new THREE.Loader;THREE.BinaryLoader.prototype.constructor=THREE.BinaryLoader;THREE.BinaryLoader.prototype.supr=THREE.Loader.prototype;
|
|
|
THREE.BinaryLoader.prototype={load:function(b){var c=b.model,e=b.callback,f=b.texture_path?b.texture_path:THREE.Loader.prototype.extractUrlbase(c),g=b.bin_path?b.bin_path:THREE.Loader.prototype.extractUrlbase(c),b=(new Date).getTime(),c=new Worker(c),j=this.showProgress?THREE.Loader.prototype.updateProgress:null;c.onmessage=function(b){THREE.BinaryLoader.prototype.loadAjaxBuffers(b.data.buffers,b.data.materials,e,g,f,j)};c.onerror=function(b){alert("worker.onerror: "+b.message+"\n"+b.data);b.preventDefault()};
|
|
|
c.postMessage(b)},loadAjaxBuffers:function(b,c,e,f,g,j){var h=new XMLHttpRequest,m=f+"/"+b,n=0;h.onreadystatechange=function(){h.readyState==4?h.status==200||h.status==0?THREE.BinaryLoader.prototype.createBinModel(h.responseText,e,g,c):alert("Couldn't load ["+m+"] ["+h.status+"]"):h.readyState==3?j&&(n==0&&(n=h.getResponseHeader("Content-Length")),j({total:n,loaded:h.responseText.length})):h.readyState==2&&(n=h.getResponseHeader("Content-Length"))};h.open("GET",m,!0);h.overrideMimeType("text/plain; charset=x-user-defined");
|
|
|
h.setRequestHeader("Content-Type","text/plain");h.send(null)},createBinModel:function(b,c,e,f){var g=function(e){function c(b,e){var f=o(b,e),g=o(b,e+1),h=o(b,e+2),j=o(b,e+3),k=(j<<1&255|h>>7)-127;f|=(h&127)<<16|g<<8;if(f==0&&k==-127)return 0;return(1-2*(j>>7))*(1+f*Math.pow(2,-23))*Math.pow(2,k)}function g(b,e){var c=o(b,e),f=o(b,e+1),h=o(b,e+2);return(o(b,e+3)<<24)+(h<<16)+(f<<8)+c}function n(b,e){var c=o(b,e);return(o(b,e+1)<<8)+c}function p(b,e){var c=o(b,e);return c>127?c-256:c}function o(b,
|
|
|
-e){return b.charCodeAt(e)&255}function t(e){var c,f,h;c=g(b,e);f=g(b,e+A);h=g(b,e+P);e=n(b,e+I);THREE.BinaryLoader.prototype.f3(y,c,f,h,e)}function u(e){var c,f,h,j,k,p;c=g(b,e);f=g(b,e+A);h=g(b,e+P);j=n(b,e+I);k=g(b,e+H);p=g(b,e+T);e=g(b,e+U);THREE.BinaryLoader.prototype.f3n(y,E,c,f,h,j,k,p,e)}function v(e){var c,f,h,j;c=g(b,e);f=g(b,e+J);h=g(b,e+Y);j=g(b,e+K);e=n(b,e+S);THREE.BinaryLoader.prototype.f4(y,c,f,h,j,e)}function x(e){var c,f,h,j,p,o,t,u;c=g(b,e);f=g(b,e+J);h=g(b,e+Y);j=g(b,e+K);p=n(b,
|
|
|
-e+S);o=g(b,e+k);t=g(b,e+V);u=g(b,e+O);e=g(b,e+fa);THREE.BinaryLoader.prototype.f4n(y,E,c,f,h,j,p,o,t,u,e)}function w(e){var c,f;c=g(b,e);f=g(b,e+ea);e=g(b,e+W);THREE.BinaryLoader.prototype.uv3(y.faceVertexUvs[0],G[c*2],G[c*2+1],G[f*2],G[f*2+1],G[e*2],G[e*2+1])}function B(e){var c,f,h;c=g(b,e);f=g(b,e+da);h=g(b,e+ga);e=g(b,e+ka);THREE.BinaryLoader.prototype.uv4(y.faceVertexUvs[0],G[c*2],G[c*2+1],G[f*2],G[f*2+1],G[h*2],G[h*2+1],G[e*2],G[e*2+1])}var y=this,F=0,C,E=[],G=[],A,P,I,H,T,U,J,Y,K,S,k,V,O,fa,
|
|
|
-ea,W,da,ga,ka,pa,R,ha,$,ma,aa;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(y,f,e);C={signature:b.substr(F,8),header_bytes:o(b,F+8),vertex_coordinate_bytes:o(b,F+9),normal_coordinate_bytes:o(b,F+10),uv_coordinate_bytes:o(b,F+11),vertex_index_bytes:o(b,F+12),normal_index_bytes:o(b,F+13),uv_index_bytes:o(b,F+14),material_index_bytes:o(b,F+15),nvertices:g(b,F+16),nnormals:g(b,F+16+4),nuvs:g(b,F+16+8),ntri_flat:g(b,F+16+12),ntri_smooth:g(b,F+16+16),ntri_flat_uv:g(b,F+16+20),ntri_smooth_uv:g(b,
|
|
|
-F+16+24),nquad_flat:g(b,F+16+28),nquad_smooth:g(b,F+16+32),nquad_flat_uv:g(b,F+16+36),nquad_smooth_uv:g(b,F+16+40)};F+=C.header_bytes;A=C.vertex_index_bytes;P=C.vertex_index_bytes*2;I=C.vertex_index_bytes*3;H=C.vertex_index_bytes*3+C.material_index_bytes;T=C.vertex_index_bytes*3+C.material_index_bytes+C.normal_index_bytes;U=C.vertex_index_bytes*3+C.material_index_bytes+C.normal_index_bytes*2;J=C.vertex_index_bytes;Y=C.vertex_index_bytes*2;K=C.vertex_index_bytes*3;S=C.vertex_index_bytes*4;k=C.vertex_index_bytes*
|
|
|
-4+C.material_index_bytes;V=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes;O=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes*2;fa=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes*3;ea=C.uv_index_bytes;W=C.uv_index_bytes*2;da=C.uv_index_bytes;ga=C.uv_index_bytes*2;ka=C.uv_index_bytes*3;e=C.vertex_index_bytes*3+C.material_index_bytes;aa=C.vertex_index_bytes*4+C.material_index_bytes;pa=C.ntri_flat*e;R=C.ntri_smooth*(e+C.normal_index_bytes*3);ha=
|
|
|
-C.ntri_flat_uv*(e+C.uv_index_bytes*3);$=C.ntri_smooth_uv*(e+C.normal_index_bytes*3+C.uv_index_bytes*3);ma=C.nquad_flat*aa;e=C.nquad_smooth*(aa+C.normal_index_bytes*4);aa=C.nquad_flat_uv*(aa+C.uv_index_bytes*4);F+=function(e){for(var f,g,j,k=C.vertex_coordinate_bytes*3,m=e+C.nvertices*k;e<m;e+=k)f=c(b,e),g=c(b,e+C.vertex_coordinate_bytes),j=c(b,e+C.vertex_coordinate_bytes*2),THREE.BinaryLoader.prototype.v(y,f,g,j);return C.nvertices*k}(F);F+=function(e){for(var c,f,g,h=C.normal_coordinate_bytes*3,
|
|
|
-j=e+C.nnormals*h;e<j;e+=h)c=p(b,e),f=p(b,e+C.normal_coordinate_bytes),g=p(b,e+C.normal_coordinate_bytes*2),E.push(c/127,f/127,g/127);return C.nnormals*h}(F);F+=function(e){for(var f,g,j=C.uv_coordinate_bytes*2,k=e+C.nuvs*j;e<k;e+=j)f=c(b,e),g=c(b,e+C.uv_coordinate_bytes),G.push(f,g);return C.nuvs*j}(F);pa=F+pa;R=pa+R;ha=R+ha;$=ha+$;ma=$+ma;e=ma+e;aa=e+aa;(function(b){var e,c=C.vertex_index_bytes*3+C.material_index_bytes,f=c+C.uv_index_bytes*3,g=b+C.ntri_flat_uv*f;for(e=b;e<g;e+=f)t(e),w(e+c);return g-
|
|
|
-b})(R);(function(b){var e,c=C.vertex_index_bytes*3+C.material_index_bytes+C.normal_index_bytes*3,f=c+C.uv_index_bytes*3,g=b+C.ntri_smooth_uv*f;for(e=b;e<g;e+=f)u(e),w(e+c);return g-b})(ha);(function(b){var e,c=C.vertex_index_bytes*4+C.material_index_bytes,f=c+C.uv_index_bytes*4,g=b+C.nquad_flat_uv*f;for(e=b;e<g;e+=f)v(e),B(e+c);return g-b})(e);(function(b){var e,c=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes*4,f=c+C.uv_index_bytes*4,g=b+C.nquad_smooth_uv*f;for(e=b;e<g;e+=f)x(e),
|
|
|
-B(e+c);return g-b})(aa);(function(b){var e,c=C.vertex_index_bytes*3+C.material_index_bytes,f=b+C.ntri_flat*c;for(e=b;e<f;e+=c)t(e);return f-b})(F);(function(b){var e,c=C.vertex_index_bytes*3+C.material_index_bytes+C.normal_index_bytes*3,f=b+C.ntri_smooth*c;for(e=b;e<f;e+=c)u(e);return f-b})(pa);(function(b){var e,c=C.vertex_index_bytes*4+C.material_index_bytes,f=b+C.nquad_flat*c;for(e=b;e<f;e+=c)v(e);return f-b})($);(function(b){var e,c=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes*
|
|
|
-4,f=b+C.nquad_smooth*c;for(e=b;e<f;e+=c)x(e);return f-b})(ma);this.computeCentroids();this.computeFaceNormals();THREE.Loader.prototype.hasNormals(this)&&this.computeTangents()};g.prototype=new THREE.Geometry;g.prototype.constructor=g;c(new g(e))},v:function(b,c,e,f){b.vertices.push(new THREE.Vertex(new THREE.Vector3(c,e,f)))},f3:function(b,c,e,f,g){b.faces.push(new THREE.Face3(c,e,f,null,null,b.materials[g]))},f4:function(b,c,e,f,g,j){b.faces.push(new THREE.Face4(c,e,f,g,null,null,b.materials[j]))},
|
|
|
-f3n:function(b,c,e,f,g,j,h,m,n){var j=b.materials[j],p=c[m*3],o=c[m*3+1],m=c[m*3+2],t=c[n*3],u=c[n*3+1],n=c[n*3+2];b.faces.push(new THREE.Face3(e,f,g,[new THREE.Vector3(c[h*3],c[h*3+1],c[h*3+2]),new THREE.Vector3(p,o,m),new THREE.Vector3(t,u,n)],null,j))},f4n:function(b,c,e,f,g,j,h,m,n,p,o){var h=b.materials[h],t=c[n*3],u=c[n*3+1],n=c[n*3+2],v=c[p*3],x=c[p*3+1],p=c[p*3+2],w=c[o*3],B=c[o*3+1],o=c[o*3+2];b.faces.push(new THREE.Face4(e,f,g,j,[new THREE.Vector3(c[m*3],c[m*3+1],c[m*3+2]),new THREE.Vector3(t,
|
|
|
-u,n),new THREE.Vector3(v,x,p),new THREE.Vector3(w,B,o)],null,h))},uv3:function(b,c,e,f,g,j,h){var m=[];m.push(new THREE.UV(c,e));m.push(new THREE.UV(f,g));m.push(new THREE.UV(j,h));b.push(m)},uv4:function(b,c,e,f,g,j,h,m,n){var p=[];p.push(new THREE.UV(c,e));p.push(new THREE.UV(f,g));p.push(new THREE.UV(j,h));p.push(new THREE.UV(m,n));b.push(p)}};
|
|
|
+e){return b.charCodeAt(e)&255}function t(e){var c,f,h;c=g(b,e);f=g(b,e+A);h=g(b,e+P);e=n(b,e+H);THREE.BinaryLoader.prototype.f3(C,c,f,h,e)}function u(e){var c,f,h,j,k,p;c=g(b,e);f=g(b,e+A);h=g(b,e+P);j=n(b,e+H);k=g(b,e+G);p=g(b,e+U);e=g(b,e+V);THREE.BinaryLoader.prototype.f3n(C,I,c,f,h,j,k,p,e)}function v(e){var c,f,h,j;c=g(b,e);f=g(b,e+J);h=g(b,e+Z);j=g(b,e+K);e=n(b,e+S);THREE.BinaryLoader.prototype.f4(C,c,f,h,j,e)}function x(e){var c,f,h,j,p,o,t,u;c=g(b,e);f=g(b,e+J);h=g(b,e+Z);j=g(b,e+K);p=n(b,
|
|
|
+e+S);o=g(b,e+k);t=g(b,e+W);u=g(b,e+O);e=g(b,e+ga);THREE.BinaryLoader.prototype.f4n(C,I,c,f,h,j,p,o,t,u,e)}function w(e){var c,f;c=g(b,e);f=g(b,e+fa);e=g(b,e+X);THREE.BinaryLoader.prototype.uv3(C.faceVertexUvs[0],F[c*2],F[c*2+1],F[f*2],F[f*2+1],F[e*2],F[e*2+1])}function y(e){var c,f,h;c=g(b,e);f=g(b,e+ea);h=g(b,e+ha);e=g(b,e+ka);THREE.BinaryLoader.prototype.uv4(C.faceVertexUvs[0],F[c*2],F[c*2+1],F[f*2],F[f*2+1],F[h*2],F[h*2+1],F[e*2],F[e*2+1])}var C=this,E=0,B,I=[],F=[],A,P,H,G,U,V,J,Z,K,S,k,W,O,ga,
|
|
|
+fa,X,ea,ha,ka,pa,R,ia,aa,ma,ca;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(C,f,e);B={signature:b.substr(E,8),header_bytes:o(b,E+8),vertex_coordinate_bytes:o(b,E+9),normal_coordinate_bytes:o(b,E+10),uv_coordinate_bytes:o(b,E+11),vertex_index_bytes:o(b,E+12),normal_index_bytes:o(b,E+13),uv_index_bytes:o(b,E+14),material_index_bytes:o(b,E+15),nvertices:g(b,E+16),nnormals:g(b,E+16+4),nuvs:g(b,E+16+8),ntri_flat:g(b,E+16+12),ntri_smooth:g(b,E+16+16),ntri_flat_uv:g(b,E+16+20),ntri_smooth_uv:g(b,
|
|
|
+E+16+24),nquad_flat:g(b,E+16+28),nquad_smooth:g(b,E+16+32),nquad_flat_uv:g(b,E+16+36),nquad_smooth_uv:g(b,E+16+40)};E+=B.header_bytes;A=B.vertex_index_bytes;P=B.vertex_index_bytes*2;H=B.vertex_index_bytes*3;G=B.vertex_index_bytes*3+B.material_index_bytes;U=B.vertex_index_bytes*3+B.material_index_bytes+B.normal_index_bytes;V=B.vertex_index_bytes*3+B.material_index_bytes+B.normal_index_bytes*2;J=B.vertex_index_bytes;Z=B.vertex_index_bytes*2;K=B.vertex_index_bytes*3;S=B.vertex_index_bytes*4;k=B.vertex_index_bytes*
|
|
|
+4+B.material_index_bytes;W=B.vertex_index_bytes*4+B.material_index_bytes+B.normal_index_bytes;O=B.vertex_index_bytes*4+B.material_index_bytes+B.normal_index_bytes*2;ga=B.vertex_index_bytes*4+B.material_index_bytes+B.normal_index_bytes*3;fa=B.uv_index_bytes;X=B.uv_index_bytes*2;ea=B.uv_index_bytes;ha=B.uv_index_bytes*2;ka=B.uv_index_bytes*3;e=B.vertex_index_bytes*3+B.material_index_bytes;ca=B.vertex_index_bytes*4+B.material_index_bytes;pa=B.ntri_flat*e;R=B.ntri_smooth*(e+B.normal_index_bytes*3);ia=
|
|
|
+B.ntri_flat_uv*(e+B.uv_index_bytes*3);aa=B.ntri_smooth_uv*(e+B.normal_index_bytes*3+B.uv_index_bytes*3);ma=B.nquad_flat*ca;e=B.nquad_smooth*(ca+B.normal_index_bytes*4);ca=B.nquad_flat_uv*(ca+B.uv_index_bytes*4);E+=function(e){for(var f,g,j,k=B.vertex_coordinate_bytes*3,m=e+B.nvertices*k;e<m;e+=k)f=c(b,e),g=c(b,e+B.vertex_coordinate_bytes),j=c(b,e+B.vertex_coordinate_bytes*2),THREE.BinaryLoader.prototype.v(C,f,g,j);return B.nvertices*k}(E);E+=function(e){for(var c,f,g,h=B.normal_coordinate_bytes*3,
|
|
|
+j=e+B.nnormals*h;e<j;e+=h)c=p(b,e),f=p(b,e+B.normal_coordinate_bytes),g=p(b,e+B.normal_coordinate_bytes*2),I.push(c/127,f/127,g/127);return B.nnormals*h}(E);E+=function(e){for(var f,g,j=B.uv_coordinate_bytes*2,k=e+B.nuvs*j;e<k;e+=j)f=c(b,e),g=c(b,e+B.uv_coordinate_bytes),F.push(f,g);return B.nuvs*j}(E);pa=E+pa;R=pa+R;ia=R+ia;aa=ia+aa;ma=aa+ma;e=ma+e;ca=e+ca;(function(b){var e,c=B.vertex_index_bytes*3+B.material_index_bytes,f=c+B.uv_index_bytes*3,g=b+B.ntri_flat_uv*f;for(e=b;e<g;e+=f)t(e),w(e+c);return g-
|
|
|
+b})(R);(function(b){var e,c=B.vertex_index_bytes*3+B.material_index_bytes+B.normal_index_bytes*3,f=c+B.uv_index_bytes*3,g=b+B.ntri_smooth_uv*f;for(e=b;e<g;e+=f)u(e),w(e+c);return g-b})(ia);(function(b){var e,c=B.vertex_index_bytes*4+B.material_index_bytes,f=c+B.uv_index_bytes*4,g=b+B.nquad_flat_uv*f;for(e=b;e<g;e+=f)v(e),y(e+c);return g-b})(e);(function(b){var e,c=B.vertex_index_bytes*4+B.material_index_bytes+B.normal_index_bytes*4,f=c+B.uv_index_bytes*4,g=b+B.nquad_smooth_uv*f;for(e=b;e<g;e+=f)x(e),
|
|
|
+y(e+c);return g-b})(ca);(function(b){var e,c=B.vertex_index_bytes*3+B.material_index_bytes,f=b+B.ntri_flat*c;for(e=b;e<f;e+=c)t(e);return f-b})(E);(function(b){var e,c=B.vertex_index_bytes*3+B.material_index_bytes+B.normal_index_bytes*3,f=b+B.ntri_smooth*c;for(e=b;e<f;e+=c)u(e);return f-b})(pa);(function(b){var e,c=B.vertex_index_bytes*4+B.material_index_bytes,f=b+B.nquad_flat*c;for(e=b;e<f;e+=c)v(e);return f-b})(aa);(function(b){var e,c=B.vertex_index_bytes*4+B.material_index_bytes+B.normal_index_bytes*
|
|
|
+4,f=b+B.nquad_smooth*c;for(e=b;e<f;e+=c)x(e);return f-b})(ma);this.computeCentroids();this.computeFaceNormals();THREE.Loader.prototype.hasNormals(this)&&this.computeTangents()};g.prototype=new THREE.Geometry;g.prototype.constructor=g;c(new g(e))},v:function(b,c,e,f){b.vertices.push(new THREE.Vertex(new THREE.Vector3(c,e,f)))},f3:function(b,c,e,f,g){b.faces.push(new THREE.Face3(c,e,f,null,null,b.materials[g]))},f4:function(b,c,e,f,g,j){b.faces.push(new THREE.Face4(c,e,f,g,null,null,b.materials[j]))},
|
|
|
+f3n:function(b,c,e,f,g,j,h,m,n){var j=b.materials[j],p=c[m*3],o=c[m*3+1],m=c[m*3+2],t=c[n*3],u=c[n*3+1],n=c[n*3+2];b.faces.push(new THREE.Face3(e,f,g,[new THREE.Vector3(c[h*3],c[h*3+1],c[h*3+2]),new THREE.Vector3(p,o,m),new THREE.Vector3(t,u,n)],null,j))},f4n:function(b,c,e,f,g,j,h,m,n,p,o){var h=b.materials[h],t=c[n*3],u=c[n*3+1],n=c[n*3+2],v=c[p*3],x=c[p*3+1],p=c[p*3+2],w=c[o*3],y=c[o*3+1],o=c[o*3+2];b.faces.push(new THREE.Face4(e,f,g,j,[new THREE.Vector3(c[m*3],c[m*3+1],c[m*3+2]),new THREE.Vector3(t,
|
|
|
+u,n),new THREE.Vector3(v,x,p),new THREE.Vector3(w,y,o)],null,h))},uv3:function(b,c,e,f,g,j,h){var m=[];m.push(new THREE.UV(c,e));m.push(new THREE.UV(f,g));m.push(new THREE.UV(j,h));b.push(m)},uv4:function(b,c,e,f,g,j,h,m,n){var p=[];p.push(new THREE.UV(c,e));p.push(new THREE.UV(f,g));p.push(new THREE.UV(j,h));p.push(new THREE.UV(m,n));b.push(p)}};
|
|
|
THREE.SceneLoader=function(){this.onLoadStart=function(){};this.onLoadProgress=function(){};this.onLoadComplete=function(){};this.callbackSync=function(){};this.callbackProgress=function(){}};
|
|
|
-THREE.SceneLoader.prototype={load:function(b,c){var e=this,f=new Worker(b);f.postMessage(0);var g=THREE.Loader.prototype.extractUrlbase(b);f.onmessage=function(b){function f(b,e){return e=="relativeToHTML"?b:g+"/"+b}function m(){for(v in J.objects)if(!O.objects[v])if(F=J.objects[v],F.geometry!==void 0){if(A=O.geometries[F.geometry]){var b=!1;T=[];for(ea=0;ea<F.materials.length;ea++)T[ea]=O.materials[F.materials[ea]],b=T[ea]instanceof THREE.MeshShaderMaterial;b&&A.computeTangents();C=F.position;r=
|
|
|
-F.rotation;q=F.quaternion;s=F.scale;q=0;T.length==0&&(T[0]=new THREE.MeshFaceMaterial);T.length>1&&(T=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(A,T);object.name=v;object.position.set(C[0],C[1],C[2]);q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=F.visible;O.scene.addObject(object);O.objects[v]=object;F.meshCollider&&(b=THREE.CollisionUtils.MeshColliderWBox(object),O.scene.collisions.colliders.push(b));
|
|
|
-if(F.castsShadow)b=new THREE.ShadowVolume(A),O.scene.addChild(b),b.position=object.position,b.rotation=object.rotation,b.scale=object.scale;F.trigger&&F.trigger.toLowerCase()!="none"&&(b={type:F.trigger,object:F},O.triggers[object.name]=b)}}else C=F.position,r=F.rotation,q=F.quaternion,s=F.scale,q=0,object=new THREE.Object3D,object.name=v,object.position.set(C[0],C[1],C[2]),q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]),object.scale.set(s[0],
|
|
|
-s[1],s[2]),object.visible=F.visible!==void 0?F.visible:!1,O.scene.addObject(object),O.objects[v]=object,O.empties[v]=object,F.trigger&&F.trigger.toLowerCase()!="none"&&(b={type:F.trigger,object:F},O.triggers[object.name]=b)}function n(b){return function(c){O.geometries[b]=c;m();K-=1;e.onLoadComplete();o()}}function p(b){return function(e){O.geometries[b]=e}}function o(){e.callbackProgress({totalModels:k,totalTextures:V,loadedModels:k-K,loadedTextures:V-S},O);e.onLoadProgress();K==0&&S==0&&c(O)}var t,
|
|
|
-u,v,x,w,B,y,F,C,E,G,A,P,I,H,T,U,J,Y,K,S,k,V,O;J=b.data;H=new THREE.BinaryLoader;Y=new THREE.JSONLoader;S=K=0;O={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},triggers:{},empties:{}};b=!1;for(v in J.objects)if(F=J.objects[v],F.meshCollider){b=!0;break}if(b)O.scene.collisions=new THREE.CollisionSystem;if(J.transform){b=J.transform.position;E=J.transform.rotation;var fa=J.transform.scale;b&&O.scene.position.set(b[0],b[1],b[2]);E&&O.scene.rotation.set(E[0],
|
|
|
-E[1],E[2]);fa&&O.scene.scale.set(fa[0],fa[1],fa[2]);(b||E||fa)&&O.scene.updateMatrix()}b=function(){S-=1;o();e.onLoadComplete()};for(w in J.cameras){E=J.cameras[w];if(E.type=="perspective")P=new THREE.Camera(E.fov,E.aspect,E.near,E.far);else if(E.type=="ortho")P=new THREE.Camera,P.projectionMatrix=THREE.Matrix4.makeOrtho(E.left,E.right,E.top,E.bottom,E.near,E.far);C=E.position;E=E.target;P.position.set(C[0],C[1],C[2]);P.target.position.set(E[0],E[1],E[2]);O.cameras[w]=P}for(x in J.lights)w=J.lights[x],
|
|
|
-P=w.color!==void 0?w.color:16777215,E=w.intensity!==void 0?w.intensity:1,w.type=="directional"?(C=w.direction,U=new THREE.DirectionalLight(P,E),U.position.set(C[0],C[1],C[2]),U.position.normalize()):w.type=="point"?(C=w.position,d=w.distance,U=new THREE.PointLight(P,E,d),U.position.set(C[0],C[1],C[2])):w.type=="ambient"&&(U=new THREE.AmbientLight(P)),O.scene.addLight(U),O.lights[x]=U;for(B in J.fogs)x=J.fogs[B],x.type=="linear"?I=new THREE.Fog(0,x.near,x.far):x.type=="exp2"&&(I=new THREE.FogExp2(0,
|
|
|
-x.density)),E=x.color,I.color.setRGB(E[0],E[1],E[2]),O.fogs[B]=I;if(O.cameras&&J.defaults.camera)O.currentCamera=O.cameras[J.defaults.camera];if(O.fogs&&J.defaults.fog)O.scene.fog=O.fogs[J.defaults.fog];E=J.defaults.bgcolor;O.bgColor=new THREE.Color;O.bgColor.setRGB(E[0],E[1],E[2]);O.bgColorAlpha=J.defaults.bgalpha;for(t in J.geometries)if(B=J.geometries[t],B.type=="bin_mesh"||B.type=="ascii_mesh")K+=1,e.onLoadStart();k=K;for(t in J.geometries)B=J.geometries[t],B.type=="cube"?(A=new THREE.CubeGeometry(B.width,
|
|
|
-B.height,B.depth,B.segmentsWidth,B.segmentsHeight,B.segmentsDepth,null,B.flipped,B.sides),O.geometries[t]=A):B.type=="plane"?(A=new THREE.PlaneGeometry(B.width,B.height,B.segmentsWidth,B.segmentsHeight),O.geometries[t]=A):B.type=="sphere"?(A=new THREE.SphereGeometry(B.radius,B.segmentsWidth,B.segmentsHeight),O.geometries[t]=A):B.type=="cylinder"?(A=new THREE.CylinderGeometry(B.numSegs,B.topRad,B.botRad,B.height,B.topOffset,B.botOffset),O.geometries[t]=A):B.type=="torus"?(A=new THREE.TorusGeometry(B.radius,
|
|
|
-B.tube,B.segmentsR,B.segmentsT),O.geometries[t]=A):B.type=="icosahedron"?(A=new THREE.IcosahedronGeometry(B.subdivisions),O.geometries[t]=A):B.type=="bin_mesh"?H.load({model:f(B.url,J.urlBaseType),callback:n(t)}):B.type=="ascii_mesh"?Y.load({model:f(B.url,J.urlBaseType),callback:n(t)}):B.type=="embedded_mesh"&&(B=J.embeds[B.id])&&Y.createModel(B,p(t),"");for(y in J.textures)if(t=J.textures[y],t.url instanceof Array){S+=t.url.length;for(H=0;H<t.url.length;H++)e.onLoadStart()}else S+=1,e.onLoadStart();
|
|
|
-V=S;for(y in J.textures){t=J.textures[y];if(t.mapping!=void 0&&THREE[t.mapping]!=void 0)t.mapping=new THREE[t.mapping];if(t.url instanceof Array){H=[];for(var ea=0;ea<t.url.length;ea++)H[ea]=f(t.url[ea],J.urlBaseType);H=THREE.ImageUtils.loadTextureCube(H,t.mapping,b)}else{H=THREE.ImageUtils.loadTexture(f(t.url,J.urlBaseType),t.mapping,b);if(THREE[t.minFilter]!=void 0)H.minFilter=THREE[t.minFilter];if(THREE[t.magFilter]!=void 0)H.magFilter=THREE[t.magFilter];if(t.repeat){H.repeat.set(t.repeat[0],t.repeat[1]);
|
|
|
-if(t.repeat[0]!=1)H.wrapS=THREE.RepeatWrapping;if(t.repeat[1]!=1)H.wrapT=THREE.RepeatWrapping}t.offset&&H.offset.set(t.offset[0],t.offset[1]);if(t.wrap){Y={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping};if(Y[t.wrap[0]]!==void 0)H.wrapS=Y[t.wrap[0]];if(Y[t.wrap[1]]!==void 0)H.wrapT=Y[t.wrap[1]]}}O.textures[y]=H}for(u in J.materials){y=J.materials[u];for(G in y.parameters)if(G=="envMap"||G=="map"||G=="lightMap")y.parameters[G]=O.textures[y.parameters[G]];else if(G=="shading")y.parameters[G]=
|
|
|
-y.parameters[G]=="flat"?THREE.FlatShading:THREE.SmoothShading;else if(G=="blending")y.parameters[G]=THREE[y.parameters[G]]?THREE[y.parameters[G]]:THREE.NormalBlending;else if(G=="combine")y.parameters[G]=y.parameters[G]=="MixOperation"?THREE.MixOperation:THREE.MultiplyOperation;else if(G=="vertexColors")if(y.parameters[G]=="face")y.parameters[G]=THREE.FaceColors;else if(y.parameters[G])y.parameters[G]=THREE.VertexColors;if(y.parameters.opacity!==void 0&&y.parameters.opacity<1)y.parameters.transparent=
|
|
|
-!0;if(y.parameters.normalMap){t=THREE.ShaderUtils.lib.normal;b=THREE.UniformsUtils.clone(t.uniforms);H=y.parameters.color;Y=y.parameters.specular;B=y.parameters.ambient;I=y.parameters.shininess;b.tNormal.texture=O.textures[y.parameters.normalMap];if(y.parameters.normalMapFactor)b.uNormalScale.value=y.parameters.normalMapFactor;if(y.parameters.map)b.tDiffuse.texture=y.parameters.map,b.enableDiffuse.value=!0;if(y.parameters.lightMap)b.tAO.texture=y.parameters.lightMap,b.enableAO.value=!0;if(y.parameters.specularMap)b.tSpecular.texture=
|
|
|
-O.textures[y.parameters.specularMap],b.enableSpecular.value=!0;b.uDiffuseColor.value.setHex(H);b.uSpecularColor.value.setHex(Y);b.uAmbientColor.value.setHex(B);b.uShininess.value=I;if(y.parameters.opacity)b.uOpacity.value=y.parameters.opacity;y=new THREE.MeshShaderMaterial({fragmentShader:t.fragmentShader,vertexShader:t.vertexShader,uniforms:b,lights:!0,fog:!0})}else y=new THREE[y.type](y.parameters);O.materials[u]=y}m();e.callbackSync(O)}}};
|
|
|
+THREE.SceneLoader.prototype={load:function(b,c){var e=this,f=new Worker(b);f.postMessage(0);var g=THREE.Loader.prototype.extractUrlbase(b);f.onmessage=function(b){function f(b,e){return e=="relativeToHTML"?b:g+"/"+b}function m(){for(v in J.objects)if(!O.objects[v])if(E=J.objects[v],E.geometry!==void 0){if(A=O.geometries[E.geometry]){var b=!1;U=[];for(fa=0;fa<E.materials.length;fa++)U[fa]=O.materials[E.materials[fa]],b=U[fa]instanceof THREE.MeshShaderMaterial;b&&A.computeTangents();B=E.position;r=
|
|
|
+E.rotation;q=E.quaternion;s=E.scale;q=0;U.length==0&&(U[0]=new THREE.MeshFaceMaterial);U.length>1&&(U=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(A,U);object.name=v;object.position.set(B[0],B[1],B[2]);q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=E.visible;O.scene.addObject(object);O.objects[v]=object;E.meshCollider&&(b=THREE.CollisionUtils.MeshColliderWBox(object),O.scene.collisions.colliders.push(b));
|
|
|
+if(E.castsShadow)b=new THREE.ShadowVolume(A),O.scene.addChild(b),b.position=object.position,b.rotation=object.rotation,b.scale=object.scale;E.trigger&&E.trigger.toLowerCase()!="none"&&(b={type:E.trigger,object:E},O.triggers[object.name]=b)}}else B=E.position,r=E.rotation,q=E.quaternion,s=E.scale,q=0,object=new THREE.Object3D,object.name=v,object.position.set(B[0],B[1],B[2]),q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]),object.scale.set(s[0],
|
|
|
+s[1],s[2]),object.visible=E.visible!==void 0?E.visible:!1,O.scene.addObject(object),O.objects[v]=object,O.empties[v]=object,E.trigger&&E.trigger.toLowerCase()!="none"&&(b={type:E.trigger,object:E},O.triggers[object.name]=b)}function n(b){return function(c){O.geometries[b]=c;m();K-=1;e.onLoadComplete();o()}}function p(b){return function(e){O.geometries[b]=e}}function o(){e.callbackProgress({totalModels:k,totalTextures:W,loadedModels:k-K,loadedTextures:W-S},O);e.onLoadProgress();K==0&&S==0&&c(O)}var t,
|
|
|
+u,v,x,w,y,C,E,B,I,F,A,P,H,G,U,V,J,Z,K,S,k,W,O;J=b.data;G=new THREE.BinaryLoader;Z=new THREE.JSONLoader;S=K=0;O={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},triggers:{},empties:{}};b=!1;for(v in J.objects)if(E=J.objects[v],E.meshCollider){b=!0;break}if(b)O.scene.collisions=new THREE.CollisionSystem;if(J.transform){b=J.transform.position;I=J.transform.rotation;var ga=J.transform.scale;b&&O.scene.position.set(b[0],b[1],b[2]);I&&O.scene.rotation.set(I[0],
|
|
|
+I[1],I[2]);ga&&O.scene.scale.set(ga[0],ga[1],ga[2]);(b||I||ga)&&O.scene.updateMatrix()}b=function(){S-=1;o();e.onLoadComplete()};for(w in J.cameras){I=J.cameras[w];if(I.type=="perspective")P=new THREE.Camera(I.fov,I.aspect,I.near,I.far);else if(I.type=="ortho")P=new THREE.Camera,P.projectionMatrix=THREE.Matrix4.makeOrtho(I.left,I.right,I.top,I.bottom,I.near,I.far);B=I.position;I=I.target;P.position.set(B[0],B[1],B[2]);P.target.position.set(I[0],I[1],I[2]);O.cameras[w]=P}for(x in J.lights)w=J.lights[x],
|
|
|
+P=w.color!==void 0?w.color:16777215,I=w.intensity!==void 0?w.intensity:1,w.type=="directional"?(B=w.direction,V=new THREE.DirectionalLight(P,I),V.position.set(B[0],B[1],B[2]),V.position.normalize()):w.type=="point"?(B=w.position,d=w.distance,V=new THREE.PointLight(P,I,d),V.position.set(B[0],B[1],B[2])):w.type=="ambient"&&(V=new THREE.AmbientLight(P)),O.scene.addLight(V),O.lights[x]=V;for(y in J.fogs)x=J.fogs[y],x.type=="linear"?H=new THREE.Fog(0,x.near,x.far):x.type=="exp2"&&(H=new THREE.FogExp2(0,
|
|
|
+x.density)),I=x.color,H.color.setRGB(I[0],I[1],I[2]),O.fogs[y]=H;if(O.cameras&&J.defaults.camera)O.currentCamera=O.cameras[J.defaults.camera];if(O.fogs&&J.defaults.fog)O.scene.fog=O.fogs[J.defaults.fog];I=J.defaults.bgcolor;O.bgColor=new THREE.Color;O.bgColor.setRGB(I[0],I[1],I[2]);O.bgColorAlpha=J.defaults.bgalpha;for(t in J.geometries)if(y=J.geometries[t],y.type=="bin_mesh"||y.type=="ascii_mesh")K+=1,e.onLoadStart();k=K;for(t in J.geometries)y=J.geometries[t],y.type=="cube"?(A=new THREE.CubeGeometry(y.width,
|
|
|
+y.height,y.depth,y.segmentsWidth,y.segmentsHeight,y.segmentsDepth,null,y.flipped,y.sides),O.geometries[t]=A):y.type=="plane"?(A=new THREE.PlaneGeometry(y.width,y.height,y.segmentsWidth,y.segmentsHeight),O.geometries[t]=A):y.type=="sphere"?(A=new THREE.SphereGeometry(y.radius,y.segmentsWidth,y.segmentsHeight),O.geometries[t]=A):y.type=="cylinder"?(A=new THREE.CylinderGeometry(y.numSegs,y.topRad,y.botRad,y.height,y.topOffset,y.botOffset),O.geometries[t]=A):y.type=="torus"?(A=new THREE.TorusGeometry(y.radius,
|
|
|
+y.tube,y.segmentsR,y.segmentsT),O.geometries[t]=A):y.type=="icosahedron"?(A=new THREE.IcosahedronGeometry(y.subdivisions),O.geometries[t]=A):y.type=="bin_mesh"?G.load({model:f(y.url,J.urlBaseType),callback:n(t)}):y.type=="ascii_mesh"?Z.load({model:f(y.url,J.urlBaseType),callback:n(t)}):y.type=="embedded_mesh"&&(y=J.embeds[y.id])&&Z.createModel(y,p(t),"");for(C in J.textures)if(t=J.textures[C],t.url instanceof Array){S+=t.url.length;for(G=0;G<t.url.length;G++)e.onLoadStart()}else S+=1,e.onLoadStart();
|
|
|
+W=S;for(C in J.textures){t=J.textures[C];if(t.mapping!=void 0&&THREE[t.mapping]!=void 0)t.mapping=new THREE[t.mapping];if(t.url instanceof Array){G=[];for(var fa=0;fa<t.url.length;fa++)G[fa]=f(t.url[fa],J.urlBaseType);G=THREE.ImageUtils.loadTextureCube(G,t.mapping,b)}else{G=THREE.ImageUtils.loadTexture(f(t.url,J.urlBaseType),t.mapping,b);if(THREE[t.minFilter]!=void 0)G.minFilter=THREE[t.minFilter];if(THREE[t.magFilter]!=void 0)G.magFilter=THREE[t.magFilter];if(t.repeat){G.repeat.set(t.repeat[0],t.repeat[1]);
|
|
|
+if(t.repeat[0]!=1)G.wrapS=THREE.RepeatWrapping;if(t.repeat[1]!=1)G.wrapT=THREE.RepeatWrapping}t.offset&&G.offset.set(t.offset[0],t.offset[1]);if(t.wrap){Z={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping};if(Z[t.wrap[0]]!==void 0)G.wrapS=Z[t.wrap[0]];if(Z[t.wrap[1]]!==void 0)G.wrapT=Z[t.wrap[1]]}}O.textures[C]=G}for(u in J.materials){C=J.materials[u];for(F in C.parameters)if(F=="envMap"||F=="map"||F=="lightMap")C.parameters[F]=O.textures[C.parameters[F]];else if(F=="shading")C.parameters[F]=
|
|
|
+C.parameters[F]=="flat"?THREE.FlatShading:THREE.SmoothShading;else if(F=="blending")C.parameters[F]=THREE[C.parameters[F]]?THREE[C.parameters[F]]:THREE.NormalBlending;else if(F=="combine")C.parameters[F]=C.parameters[F]=="MixOperation"?THREE.MixOperation:THREE.MultiplyOperation;else if(F=="vertexColors")if(C.parameters[F]=="face")C.parameters[F]=THREE.FaceColors;else if(C.parameters[F])C.parameters[F]=THREE.VertexColors;if(C.parameters.opacity!==void 0&&C.parameters.opacity<1)C.parameters.transparent=
|
|
|
+!0;if(C.parameters.normalMap){t=THREE.ShaderUtils.lib.normal;b=THREE.UniformsUtils.clone(t.uniforms);G=C.parameters.color;Z=C.parameters.specular;y=C.parameters.ambient;H=C.parameters.shininess;b.tNormal.texture=O.textures[C.parameters.normalMap];if(C.parameters.normalMapFactor)b.uNormalScale.value=C.parameters.normalMapFactor;if(C.parameters.map)b.tDiffuse.texture=C.parameters.map,b.enableDiffuse.value=!0;if(C.parameters.lightMap)b.tAO.texture=C.parameters.lightMap,b.enableAO.value=!0;if(C.parameters.specularMap)b.tSpecular.texture=
|
|
|
+O.textures[C.parameters.specularMap],b.enableSpecular.value=!0;b.uDiffuseColor.value.setHex(G);b.uSpecularColor.value.setHex(Z);b.uAmbientColor.value.setHex(y);b.uShininess.value=H;if(C.parameters.opacity)b.uOpacity.value=C.parameters.opacity;C=new THREE.MeshShaderMaterial({fragmentShader:t.fragmentShader,vertexShader:t.vertexShader,uniforms:b,lights:!0,fog:!0})}else C=new THREE[C.type](C.parameters);O.materials[u]=C}m();e.callbackSync(O)}}};
|
|
|
THREE.MarchingCubes=function(b,c){THREE.Object3D.call(this);this.materials=c instanceof Array?c:[c];this.init=function(b){this.isolation=80;this.size=b;this.size2=this.size*this.size;this.size3=this.size2*this.size;this.halfsize=this.size/2;this.delta=2/this.size;this.yd=this.size;this.zd=this.size2;this.field=new Float32Array(this.size3);this.normal_cache=new Float32Array(this.size3*3);this.vlist=new Float32Array(36);this.nlist=new Float32Array(36);this.firstDraw=!0;this.maxCount=4096;this.count=
|
|
|
0;this.hasNormal=this.hasPos=!1;this.positionArray=new Float32Array(this.maxCount*3);this.normalArray=new Float32Array(this.maxCount*3)};this.lerp=function(b,c,g){return b+(c-b)*g};this.VIntX=function(b,c,g,j,h,m,n,p,o,t){h=(h-o)/(t-o);o=this.normal_cache;c[j]=m+h*this.delta;c[j+1]=n;c[j+2]=p;g[j]=this.lerp(o[b],o[b+3],h);g[j+1]=this.lerp(o[b+1],o[b+4],h);g[j+2]=this.lerp(o[b+2],o[b+5],h)};this.VIntY=function(b,c,g,j,h,m,n,p,o,t){h=(h-o)/(t-o);o=this.normal_cache;c[j]=m;c[j+1]=n+h*this.delta;c[j+
|
|
|
2]=p;c=b+this.yd*3;g[j]=this.lerp(o[b],o[c],h);g[j+1]=this.lerp(o[b+1],o[c+1],h);g[j+2]=this.lerp(o[b+2],o[c+2],h)};this.VIntZ=function(b,c,g,j,h,m,n,p,o,t){h=(h-o)/(t-o);o=this.normal_cache;c[j]=m;c[j+1]=n;c[j+2]=p+h*this.delta;c=b+this.zd*3;g[j]=this.lerp(o[b],o[c],h);g[j+1]=this.lerp(o[b+1],o[c+1],h);g[j+2]=this.lerp(o[b+2],o[c+2],h)};this.compNorm=function(b){var c=b*3;this.normal_cache[c]==0&&(this.normal_cache[c]=this.field[b-1]-this.field[b+1],this.normal_cache[c+1]=this.field[b-this.yd]-this.field[b+
|
|
|
-this.yd],this.normal_cache[c+2]=this.field[b-this.zd]-this.field[b+this.zd])};this.polygonize=function(b,c,g,j,h,m){var n=j+1,p=j+this.yd,o=j+this.zd,t=n+this.yd,u=n+this.zd,v=j+this.yd+this.zd,x=n+this.yd+this.zd,w=0,B=this.field[j],y=this.field[n],F=this.field[p],C=this.field[t],E=this.field[o],G=this.field[u],A=this.field[v],P=this.field[x];B<h&&(w|=1);y<h&&(w|=2);F<h&&(w|=8);C<h&&(w|=4);E<h&&(w|=16);G<h&&(w|=32);A<h&&(w|=128);P<h&&(w|=64);var I=THREE.edgeTable[w];if(I==0)return 0;var H=this.delta,
|
|
|
-T=b+H,U=c+H,H=g+H;I&1&&(this.compNorm(j),this.compNorm(n),this.VIntX(j*3,this.vlist,this.nlist,0,h,b,c,g,B,y));I&2&&(this.compNorm(n),this.compNorm(t),this.VIntY(n*3,this.vlist,this.nlist,3,h,T,c,g,y,C));I&4&&(this.compNorm(p),this.compNorm(t),this.VIntX(p*3,this.vlist,this.nlist,6,h,b,U,g,F,C));I&8&&(this.compNorm(j),this.compNorm(p),this.VIntY(j*3,this.vlist,this.nlist,9,h,b,c,g,B,F));I&16&&(this.compNorm(o),this.compNorm(u),this.VIntX(o*3,this.vlist,this.nlist,12,h,b,c,H,E,G));I&32&&(this.compNorm(u),
|
|
|
-this.compNorm(x),this.VIntY(u*3,this.vlist,this.nlist,15,h,T,c,H,G,P));I&64&&(this.compNorm(v),this.compNorm(x),this.VIntX(v*3,this.vlist,this.nlist,18,h,b,U,H,A,P));I&128&&(this.compNorm(o),this.compNorm(v),this.VIntY(o*3,this.vlist,this.nlist,21,h,b,c,H,E,A));I&256&&(this.compNorm(j),this.compNorm(o),this.VIntZ(j*3,this.vlist,this.nlist,24,h,b,c,g,B,E));I&512&&(this.compNorm(n),this.compNorm(u),this.VIntZ(n*3,this.vlist,this.nlist,27,h,T,c,g,y,G));I&1024&&(this.compNorm(t),this.compNorm(x),this.VIntZ(t*
|
|
|
-3,this.vlist,this.nlist,30,h,T,U,g,C,P));I&2048&&(this.compNorm(p),this.compNorm(v),this.VIntZ(p*3,this.vlist,this.nlist,33,h,b,U,g,F,A));w<<=4;for(h=j=0;THREE.triTable[w+h]!=-1;)b=w+h,c=b+1,g=b+2,this.posnormtriv(this.vlist,this.nlist,3*THREE.triTable[b],3*THREE.triTable[c],3*THREE.triTable[g],m),h+=3,j++;return j};this.posnormtriv=function(b,c,g,j,h,m){var n=this.count*3;this.positionArray[n]=b[g];this.positionArray[n+1]=b[g+1];this.positionArray[n+2]=b[g+2];this.positionArray[n+3]=b[j];this.positionArray[n+
|
|
|
+this.yd],this.normal_cache[c+2]=this.field[b-this.zd]-this.field[b+this.zd])};this.polygonize=function(b,c,g,j,h,m){var n=j+1,p=j+this.yd,o=j+this.zd,t=n+this.yd,u=n+this.zd,v=j+this.yd+this.zd,x=n+this.yd+this.zd,w=0,y=this.field[j],C=this.field[n],E=this.field[p],B=this.field[t],I=this.field[o],F=this.field[u],A=this.field[v],P=this.field[x];y<h&&(w|=1);C<h&&(w|=2);E<h&&(w|=8);B<h&&(w|=4);I<h&&(w|=16);F<h&&(w|=32);A<h&&(w|=128);P<h&&(w|=64);var H=THREE.edgeTable[w];if(H==0)return 0;var G=this.delta,
|
|
|
+U=b+G,V=c+G,G=g+G;H&1&&(this.compNorm(j),this.compNorm(n),this.VIntX(j*3,this.vlist,this.nlist,0,h,b,c,g,y,C));H&2&&(this.compNorm(n),this.compNorm(t),this.VIntY(n*3,this.vlist,this.nlist,3,h,U,c,g,C,B));H&4&&(this.compNorm(p),this.compNorm(t),this.VIntX(p*3,this.vlist,this.nlist,6,h,b,V,g,E,B));H&8&&(this.compNorm(j),this.compNorm(p),this.VIntY(j*3,this.vlist,this.nlist,9,h,b,c,g,y,E));H&16&&(this.compNorm(o),this.compNorm(u),this.VIntX(o*3,this.vlist,this.nlist,12,h,b,c,G,I,F));H&32&&(this.compNorm(u),
|
|
|
+this.compNorm(x),this.VIntY(u*3,this.vlist,this.nlist,15,h,U,c,G,F,P));H&64&&(this.compNorm(v),this.compNorm(x),this.VIntX(v*3,this.vlist,this.nlist,18,h,b,V,G,A,P));H&128&&(this.compNorm(o),this.compNorm(v),this.VIntY(o*3,this.vlist,this.nlist,21,h,b,c,G,I,A));H&256&&(this.compNorm(j),this.compNorm(o),this.VIntZ(j*3,this.vlist,this.nlist,24,h,b,c,g,y,I));H&512&&(this.compNorm(n),this.compNorm(u),this.VIntZ(n*3,this.vlist,this.nlist,27,h,U,c,g,C,F));H&1024&&(this.compNorm(t),this.compNorm(x),this.VIntZ(t*
|
|
|
+3,this.vlist,this.nlist,30,h,U,V,g,B,P));H&2048&&(this.compNorm(p),this.compNorm(v),this.VIntZ(p*3,this.vlist,this.nlist,33,h,b,V,g,E,A));w<<=4;for(h=j=0;THREE.triTable[w+h]!=-1;)b=w+h,c=b+1,g=b+2,this.posnormtriv(this.vlist,this.nlist,3*THREE.triTable[b],3*THREE.triTable[c],3*THREE.triTable[g],m),h+=3,j++;return j};this.posnormtriv=function(b,c,g,j,h,m){var n=this.count*3;this.positionArray[n]=b[g];this.positionArray[n+1]=b[g+1];this.positionArray[n+2]=b[g+2];this.positionArray[n+3]=b[j];this.positionArray[n+
|
|
|
4]=b[j+1];this.positionArray[n+5]=b[j+2];this.positionArray[n+6]=b[h];this.positionArray[n+7]=b[h+1];this.positionArray[n+8]=b[h+2];this.normalArray[n]=c[g];this.normalArray[n+1]=c[g+1];this.normalArray[n+2]=c[g+2];this.normalArray[n+3]=c[j];this.normalArray[n+4]=c[j+1];this.normalArray[n+5]=c[j+2];this.normalArray[n+6]=c[h];this.normalArray[n+7]=c[h+1];this.normalArray[n+8]=c[h+2];this.hasNormal=this.hasPos=!0;this.count+=3;this.count>=this.maxCount-3&&m(this)};this.begin=function(){this.count=0;
|
|
|
this.hasNormal=this.hasPos=!1};this.end=function(b){if(this.count!=0){for(var c=this.count*3;c<this.positionArray.length;c++)this.positionArray[c]=0;b(this)}};this.addBall=function(b,c,g,j,h){var m=this.size*Math.sqrt(j/h),n=g*this.size,p=c*this.size,o=b*this.size,t=Math.floor(n-m);t<1&&(t=1);n=Math.floor(n+m);n>this.size-1&&(n=this.size-1);var u=Math.floor(p-m);u<1&&(u=1);p=Math.floor(p+m);p>this.size-1&&(p=this.size-1);var v=Math.floor(o-m);v<1&&(v=1);m=Math.floor(o+m);m>this.size-1&&(m=this.size-
|
|
|
-1);for(var x,w,B,y,F,C;t<n;t++){o=this.size2*t;w=t/this.size-g;F=w*w;for(w=u;w<p;w++){B=o+this.size*w;x=w/this.size-c;C=x*x;for(x=v;x<m;x++)y=x/this.size-b,y=j/(1.0E-6+y*y+C+F)-h,y>0&&(this.field[B+x]+=y)}}};this.addPlaneX=function(b,c){var g,j,h,m,n,p=this.size,o=this.yd,t=this.zd,u=this.field,v=p*Math.sqrt(b/c);v>p&&(v=p);for(g=0;g<v;g++)if(j=g/p,j*=j,m=b/(1.0E-4+j)-c,m>0)for(j=0;j<p;j++){n=g+j*o;for(h=0;h<p;h++)u[t*h+n]+=m}};this.addPlaneY=function(b,c){var g,j,h,m,n,p,o=this.size,t=this.yd,u=
|
|
|
+1);for(var x,w,y,C,E,B;t<n;t++){o=this.size2*t;w=t/this.size-g;E=w*w;for(w=u;w<p;w++){y=o+this.size*w;x=w/this.size-c;B=x*x;for(x=v;x<m;x++)C=x/this.size-b,C=j/(1.0E-6+C*C+B+E)-h,C>0&&(this.field[y+x]+=C)}}};this.addPlaneX=function(b,c){var g,j,h,m,n,p=this.size,o=this.yd,t=this.zd,u=this.field,v=p*Math.sqrt(b/c);v>p&&(v=p);for(g=0;g<v;g++)if(j=g/p,j*=j,m=b/(1.0E-4+j)-c,m>0)for(j=0;j<p;j++){n=g+j*o;for(h=0;h<p;h++)u[t*h+n]+=m}};this.addPlaneY=function(b,c){var g,j,h,m,n,p,o=this.size,t=this.yd,u=
|
|
|
this.zd,v=this.field,x=o*Math.sqrt(b/c);x>o&&(x=o);for(j=0;j<x;j++)if(g=j/o,g*=g,m=b/(1.0E-4+g)-c,m>0){n=j*t;for(g=0;g<o;g++){p=n+g;for(h=0;h<o;h++)v[u*h+p]+=m}}};this.addPlaneZ=function(b,c){var g,j,h,m,n,p;size=this.size;yd=this.yd;zd=this.zd;field=this.field;dist=size*Math.sqrt(b/c);dist>size&&(dist=size);for(h=0;h<dist;h++)if(g=h/size,g*=g,m=b/(1.0E-4+g)-c,m>0){n=zd*h;for(j=0;j<size;j++){p=n+j*yd;for(g=0;g<size;g++)field[p+g]+=m}}};this.reset=function(){var b;for(b=0;b<this.size3;b++)this.normal_cache[b*
|
|
|
3]=0,this.field[b]=0};this.render=function(b){this.begin();var c,g,j,h,m,n,p,o,t,u=this.size-2;for(h=1;h<u;h++){t=this.size2*h;p=(h-this.halfsize)/this.halfsize;for(j=1;j<u;j++){o=t+this.size*j;n=(j-this.halfsize)/this.halfsize;for(g=1;g<u;g++)m=(g-this.halfsize)/this.halfsize,c=o+g,this.polygonize(m,n,p,c,this.isolation,b)}}this.end(b)};this.generateGeometry=function(){var b=0,c=new THREE.Geometry,g=[];this.render(function(j){var h,m,n,p,o,t,u,v;for(h=0;h<j.count;h++)u=h*3,o=u+1,v=u+2,m=j.positionArray[u],
|
|
|
n=j.positionArray[o],p=j.positionArray[v],t=new THREE.Vector3(m,n,p),m=j.normalArray[u],n=j.normalArray[o],p=j.normalArray[v],u=new THREE.Vector3(m,n,p),u.normalize(),o=new THREE.Vertex(t),c.vertices.push(o),g.push(u);nfaces=j.count/3;for(h=0;h<nfaces;h++)u=(b+h)*3,o=u+1,v=u+2,t=g[u],m=g[o],n=g[v],u=new THREE.Face3(u,o,v,[t,m,n]),c.faces.push(u);b+=nfaces;j.count=0});return c};this.init(b)};THREE.MarchingCubes.prototype=new THREE.Object3D;THREE.MarchingCubes.prototype.constructor=THREE.MarchingCubes;
|
|
@@ -604,7 +604,7 @@ THREE.CollisionSystem.__r=new THREE.Ray;THREE.CollisionUtils={};THREE.CollisionU
|
|
|
THREE.CollisionUtils.MeshColliderWBox=function(b){return new THREE.MeshCollider(b,THREE.CollisionUtils.MeshOBB(b))};
|
|
|
if(THREE.WebGLRenderer)THREE.AnaglyphWebGLRenderer=function(b){THREE.WebGLRenderer.call(this,b);var c=this,e=this.setSize,f=this.render,g=new THREE.Camera,j=new THREE.Camera,h=new THREE.Matrix4,m=new THREE.Matrix4,n,p,o;g.useTarget=j.useTarget=!1;g.matrixAutoUpdate=j.matrixAutoUpdate=!1;var b={minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat},t=new THREE.WebGLRenderTarget(512,512,b),u=new THREE.WebGLRenderTarget(512,512,b),v=new THREE.Camera(53,1,1,1E4);v.position.z=
|
|
|
2;_material=new THREE.MeshShaderMaterial({uniforms:{mapLeft:{type:"t",value:0,texture:t},mapRight:{type:"t",value:1,texture:u}},vertexShader:"varying vec2 vUv;\nvoid main() {\nvUv = vec2( uv.x, 1.0 - uv.y );\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D mapLeft;\nuniform sampler2D mapRight;\nvarying vec2 vUv;\nvoid main() {\nvec4 colorL, colorR;\nvec2 uv = vUv;\ncolorL = texture2D( mapLeft, uv );\ncolorR = texture2D( mapRight, uv );\ngl_FragColor = vec4( colorL.g * 0.7 + colorL.b * 0.3, colorR.g, colorR.b, colorL.a + colorR.a ) * 1.1;\n}"});
|
|
|
-var x=new THREE.Scene;x.addObject(new THREE.Mesh(new THREE.PlaneGeometry(2,2),_material));this.setSize=function(b,f){e.call(c,b,f);t.width=b;t.height=f;u.width=b;u.height=f};this.render=function(b,e){e.update(null,!0);if(n!==e.aspect||p!==e.near||o!==e.fov){n=e.aspect;p=e.near;o=e.fov;var y=e.projectionMatrix.clone(),F=125/30*0.5,C=F*p/125,E=p*Math.tan(o*Math.PI/360),G;h.n14=F;m.n14=-F;F=-E*n+C;G=E*n+C;y.n11=2*p/(G-F);y.n13=(G+F)/(G-F);g.projectionMatrix=y.clone();F=-E*n-C;G=E*n-C;y.n11=2*p/(G-F);
|
|
|
-y.n13=(G+F)/(G-F);j.projectionMatrix=y.clone()}g.matrix=e.matrixWorld.clone().multiplySelf(m);g.update(null,!0);g.position.copy(e.position);g.near=p;g.far=e.far;f.call(c,b,g,t,!0);j.matrix=e.matrixWorld.clone().multiplySelf(h);j.update(null,!0);j.position.copy(e.position);j.near=p;j.far=e.far;f.call(c,b,j,u,!0);f.call(c,x,v)}};
|
|
|
+var x=new THREE.Scene;x.addObject(new THREE.Mesh(new THREE.PlaneGeometry(2,2),_material));this.setSize=function(b,f){e.call(c,b,f);t.width=b;t.height=f;u.width=b;u.height=f};this.render=function(b,e){e.update(null,!0);if(n!==e.aspect||p!==e.near||o!==e.fov){n=e.aspect;p=e.near;o=e.fov;var C=e.projectionMatrix.clone(),E=125/30*0.5,B=E*p/125,I=p*Math.tan(o*Math.PI/360),F;h.n14=E;m.n14=-E;E=-I*n+B;F=I*n+B;C.n11=2*p/(F-E);C.n13=(F+E)/(F-E);g.projectionMatrix=C.clone();E=-I*n-B;F=I*n-B;C.n11=2*p/(F-E);
|
|
|
+C.n13=(F+E)/(F-E);j.projectionMatrix=C.clone()}g.matrix=e.matrixWorld.clone().multiplySelf(m);g.update(null,!0);g.position.copy(e.position);g.near=p;g.far=e.far;f.call(c,b,g,t,!0);j.matrix=e.matrixWorld.clone().multiplySelf(h);j.update(null,!0);j.position.copy(e.position);j.near=p;j.far=e.far;f.call(c,b,j,u,!0);f.call(c,x,v)}};
|
|
|
if(THREE.WebGLRenderer)THREE.CrosseyedWebGLRenderer=function(b){THREE.WebGLRenderer.call(this,b);this.autoClear=!1;var c=this,e=this.setSize,f=this.render,g,j,h=new THREE.Camera,m=new THREE.Camera;c.separation=10;if(b&&b.separation!==void 0)c.separation=b.separation;(new THREE.Camera(53,window.innerWidth/2/window.innerHeight,1,1E4)).position.z=-10;this.setSize=function(b,f){e.call(c,b,f);g=b/2;j=f};this.render=function(b,e){this.clear();h.fov=e.fov;h.aspect=0.5*e.aspect;h.near=e.near;h.far=e.far;
|
|
|
h.updateProjectionMatrix();h.position.copy(e.position);h.target.position.copy(e.target.position);h.translateX(c.separation);m.projectionMatrix=h.projectionMatrix;m.position.copy(e.position);m.target.position.copy(e.target.position);m.translateX(-c.separation);this.setViewport(0,0,g,j);f.call(c,b,h);this.setViewport(g,0,g,j);f.call(c,b,m,!1)}};
|