|
@@ -24,7 +24,7 @@ THREE.Matrix4.prototype={set:function(a,c,b,d,e,g,h,j,k,l,o,v,u,t,y,C){this.n11=
|
|
|
e=THREE.Matrix4.__v2,g=THREE.Matrix4.__v3;g.sub(a,c).normalize();if(g.length()===0)g.z=1;d.cross(b,g).normalize();if(d.length()===0){g.x+=1.0E-4;d.cross(b,g).normalize()}e.cross(g,d).normalize();this.n11=d.x;this.n12=e.x;this.n13=g.x;this.n21=d.y;this.n22=e.y;this.n23=g.y;this.n31=d.z;this.n32=e.z;this.n33=g.z;return this},multiplyVector3:function(a){var c=a.x,b=a.y,d=a.z,e=1/(this.n41*c+this.n42*b+this.n43*d+this.n44);a.x=(this.n11*c+this.n12*b+this.n13*d+this.n14)*e;a.y=(this.n21*c+this.n22*b+this.n23*
|
|
|
d+this.n24)*e;a.z=(this.n31*c+this.n32*b+this.n33*d+this.n34)*e;return a},multiplyVector4:function(a){var c=a.x,b=a.y,d=a.z,e=a.w;a.x=this.n11*c+this.n12*b+this.n13*d+this.n14*e;a.y=this.n21*c+this.n22*b+this.n23*d+this.n24*e;a.z=this.n31*c+this.n32*b+this.n33*d+this.n34*e;a.w=this.n41*c+this.n42*b+this.n43*d+this.n44*e;return a},rotateAxis:function(a){var c=a.x,b=a.y,d=a.z;a.x=c*this.n11+b*this.n12+d*this.n13;a.y=c*this.n21+b*this.n22+d*this.n23;a.z=c*this.n31+b*this.n32+d*this.n33;a.normalize();
|
|
|
return a},crossVector:function(a){var c=new THREE.Vector4;c.x=this.n11*a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;c.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;c.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;c.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return c},multiply:function(a,c){var b=a.n11,d=a.n12,e=a.n13,g=a.n14,h=a.n21,j=a.n22,k=a.n23,l=a.n24,o=a.n31,v=a.n32,u=a.n33,t=a.n34,y=a.n41,C=a.n42,F=a.n43,w=a.n44,G=c.n11,x=c.n12,N=c.n13,L=c.n14,Y=c.n21,M=c.n22,
|
|
|
-f=c.n23,W=c.n24,R=c.n31,da=c.n32,ga=c.n33,I=c.n34;this.n11=b*G+d*Y+e*R;this.n12=b*x+d*M+e*da;this.n13=b*N+d*f+e*ga;this.n14=b*L+d*W+e*I+g;this.n21=h*G+j*Y+k*R;this.n22=h*x+j*M+k*da;this.n23=h*N+j*f+k*ga;this.n24=h*L+j*W+k*I+l;this.n31=o*G+v*Y+u*R;this.n32=o*x+v*M+u*da;this.n33=o*N+v*f+u*ga;this.n34=o*L+v*W+u*I+t;this.n41=y*G+C*Y+F*R;this.n42=y*x+C*M+F*da;this.n43=y*N+C*f+F*ga;this.n44=y*L+C*W+F*I+w;return this},multiplyToArray:function(a,c,b){this.multiply(a,c);b[0]=this.n11;b[1]=this.n21;b[2]=this.n31;
|
|
|
+f=c.n23,X=c.n24,R=c.n31,da=c.n32,ga=c.n33,I=c.n34;this.n11=b*G+d*Y+e*R;this.n12=b*x+d*M+e*da;this.n13=b*N+d*f+e*ga;this.n14=b*L+d*X+e*I+g;this.n21=h*G+j*Y+k*R;this.n22=h*x+j*M+k*da;this.n23=h*N+j*f+k*ga;this.n24=h*L+j*X+k*I+l;this.n31=o*G+v*Y+u*R;this.n32=o*x+v*M+u*da;this.n33=o*N+v*f+u*ga;this.n34=o*L+v*X+u*I+t;this.n41=y*G+C*Y+F*R;this.n42=y*x+C*M+F*da;this.n43=y*N+C*f+F*ga;this.n44=y*L+C*X+F*I+w;return this},multiplyToArray:function(a,c,b){this.multiply(a,c);b[0]=this.n11;b[1]=this.n21;b[2]=this.n31;
|
|
|
b[3]=this.n41;b[4]=this.n12;b[5]=this.n22;b[6]=this.n32;b[7]=this.n42;b[8]=this.n13;b[9]=this.n23;b[10]=this.n33;b[11]=this.n43;b[12]=this.n14;b[13]=this.n24;b[14]=this.n34;b[15]=this.n44;return this},multiplySelf:function(a){this.multiply(this,a);return this},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a;return this},determinant:function(){var a=
|
|
|
this.n11,c=this.n12,b=this.n13,d=this.n14,e=this.n21,g=this.n22,h=this.n23,j=this.n24,k=this.n31,l=this.n32,o=this.n33,v=this.n34,u=this.n41,t=this.n42,y=this.n43,C=this.n44;return d*h*l*u-b*j*l*u-d*g*o*u+c*j*o*u+b*g*v*u-c*h*v*u-d*h*k*t+b*j*k*t+d*e*o*t-a*j*o*t-b*e*v*t+a*h*v*t+d*g*k*y-c*j*k*y-d*e*l*y+a*j*l*y+c*e*v*y-a*g*v*y-b*g*k*C+c*h*k*C+b*e*l*C-a*h*l*C-c*e*o*C+a*g*o*C},transpose:function(){var a;a=this.n21;this.n21=this.n12;this.n12=a;a=this.n31;this.n31=this.n13;this.n13=a;a=this.n32;this.n32=
|
|
|
this.n23;this.n23=a;a=this.n41;this.n41=this.n14;this.n14=a;a=this.n42;this.n42=this.n24;this.n24=a;a=this.n43;this.n43=this.n34;this.n43=a;return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){this.flat[0]=this.n11;this.flat[1]=this.n21;
|
|
@@ -57,7 +57,7 @@ b.centroid.addSelf(this.vertices[b.d].position);b.centroid.divideScalar(4)}}},co
|
|
|
b.position);k.sub(c.position,b.position);j.crossSelf(k)}j.isZero()||j.normalize();g.normal.copy(j)}},computeVertexNormals:function(){var a,c,b,d;if(this.__tmpVertices==undefined){d=this.__tmpVertices=Array(this.vertices.length);a=0;for(c=this.vertices.length;a<c;a++)d[a]=new THREE.Vector3;a=0;for(c=this.faces.length;a<c;a++){b=this.faces[a];if(b instanceof THREE.Face3)b.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];else if(b instanceof THREE.Face4)b.vertexNormals=[new THREE.Vector3,
|
|
|
new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]}}else{d=this.__tmpVertices;a=0;for(c=this.vertices.length;a<c;a++)d[a].set(0,0,0)}a=0;for(c=this.faces.length;a<c;a++){b=this.faces[a];if(b instanceof THREE.Face3){d[b.a].addSelf(b.normal);d[b.b].addSelf(b.normal);d[b.c].addSelf(b.normal)}else if(b instanceof THREE.Face4){d[b.a].addSelf(b.normal);d[b.b].addSelf(b.normal);d[b.c].addSelf(b.normal);d[b.d].addSelf(b.normal)}}a=0;for(c=this.vertices.length;a<c;a++)d[a].normalize();a=0;for(c=this.faces.length;a<
|
|
|
c;a++){b=this.faces[a];if(b instanceof THREE.Face3){b.vertexNormals[0].copy(d[b.a]);b.vertexNormals[1].copy(d[b.b]);b.vertexNormals[2].copy(d[b.c])}else if(b instanceof THREE.Face4){b.vertexNormals[0].copy(d[b.a]);b.vertexNormals[1].copy(d[b.b]);b.vertexNormals[2].copy(d[b.c]);b.vertexNormals[3].copy(d[b.d])}}},computeTangents:function(){function a(I,ca,za,ea,xa,ja,ha){g=I.vertices[ca].position;h=I.vertices[za].position;j=I.vertices[ea].position;k=e[xa];l=e[ja];o=e[ha];v=h.x-g.x;u=j.x-g.x;t=h.y-g.y;
|
|
|
-y=j.y-g.y;C=h.z-g.z;F=j.z-g.z;w=l.u-k.u;G=o.u-k.u;x=l.v-k.v;N=o.v-k.v;L=1/(w*N-G*x);f.set((N*v-x*u)*L,(N*t-x*y)*L,(N*C-x*F)*L);W.set((w*u-G*v)*L,(w*y-G*t)*L,(w*F-G*C)*L);Y[ca].addSelf(f);Y[za].addSelf(f);Y[ea].addSelf(f);M[ca].addSelf(W);M[za].addSelf(W);M[ea].addSelf(W)}var c,b,d,e,g,h,j,k,l,o,v,u,t,y,C,F,w,G,x,N,L,Y=[],M=[],f=new THREE.Vector3,W=new THREE.Vector3,R=new THREE.Vector3,da=new THREE.Vector3,ga=new THREE.Vector3;c=0;for(b=this.vertices.length;c<b;c++){Y[c]=new THREE.Vector3;M[c]=new THREE.Vector3}c=
|
|
|
+y=j.y-g.y;C=h.z-g.z;F=j.z-g.z;w=l.u-k.u;G=o.u-k.u;x=l.v-k.v;N=o.v-k.v;L=1/(w*N-G*x);f.set((N*v-x*u)*L,(N*t-x*y)*L,(N*C-x*F)*L);X.set((w*u-G*v)*L,(w*y-G*t)*L,(w*F-G*C)*L);Y[ca].addSelf(f);Y[za].addSelf(f);Y[ea].addSelf(f);M[ca].addSelf(X);M[za].addSelf(X);M[ea].addSelf(X)}var c,b,d,e,g,h,j,k,l,o,v,u,t,y,C,F,w,G,x,N,L,Y=[],M=[],f=new THREE.Vector3,X=new THREE.Vector3,R=new THREE.Vector3,da=new THREE.Vector3,ga=new THREE.Vector3;c=0;for(b=this.vertices.length;c<b;c++){Y[c]=new THREE.Vector3;M[c]=new THREE.Vector3}c=
|
|
|
0;for(b=this.faces.length;c<b;c++){d=this.faces[c];e=this.uvs[c];if(d instanceof THREE.Face3){a(this,d.a,d.b,d.c,0,1,2);this.vertices[d.a].normal.copy(d.vertexNormals[0]);this.vertices[d.b].normal.copy(d.vertexNormals[1]);this.vertices[d.c].normal.copy(d.vertexNormals[2])}else if(d instanceof THREE.Face4){a(this,d.a,d.b,d.c,0,1,2);a(this,d.a,d.b,d.d,0,1,3);this.vertices[d.a].normal.copy(d.vertexNormals[0]);this.vertices[d.b].normal.copy(d.vertexNormals[1]);this.vertices[d.c].normal.copy(d.vertexNormals[2]);
|
|
|
this.vertices[d.d].normal.copy(d.vertexNormals[3])}}c=0;for(b=this.vertices.length;c<b;c++){ga.copy(this.vertices[c].normal);d=Y[c];R.copy(d);R.subSelf(ga.multiplyScalar(ga.dot(d))).normalize();da.cross(this.vertices[c].normal,d);d=da.dot(M[c]);d=d<0?-1:1;this.vertices[c].tangent.set(R.x,R.y,R.z,d)}this.hasTangents=!0},computeBoundingBox:function(){var a;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,b=this.vertices.length;c<b;c++){a=this.vertices[c];if(a.position.x<this.boundingBox.x[0])this.boundingBox.x[0]=a.position.x;else if(a.position.x>this.boundingBox.x[1])this.boundingBox.x[1]=a.position.x;if(a.position.y<this.boundingBox.y[0])this.boundingBox.y[0]=a.position.y;else if(a.position.y>this.boundingBox.y[1])this.boundingBox.y[1]=a.position.y;if(a.position.z<this.boundingBox.z[0])this.boundingBox.z[0]=a.position.z;else if(a.position.z>
|
|
@@ -134,8 +134,8 @@ THREE.RenderTarget=function(a,c,b){this.width=a;this.height=c;b=b||{};this.wrapS
|
|
|
var Uniforms={clone:function(a){var c,b,d,e={};for(c in a){e[c]={};for(b in a[c]){d=a[c][b];e[c][b]=d instanceof THREE.Color||d instanceof THREE.Vector3||d instanceof THREE.Texture?d.clone():d}}return e},merge:function(a){var c,b,d,e={};for(c=0;c<a.length;c++){d=this.clone(a[c]);for(b in d)e[b]=d[b]}return e}};THREE.Particle=function(a){THREE.Object3D.call(this);this.materials=a instanceof Array?a:[a];this.matrixAutoUpdate=!1};THREE.Particle.prototype=new THREE.Object3D;
|
|
|
THREE.Particle.prototype.constructor=THREE.Particle;THREE.ParticleSystem=function(a,c){THREE.Object3D.call(this);this.geometry=a;this.materials=c instanceof Array?c:[c];this.sortParticles=!1};THREE.ParticleSystem.prototype=new THREE.Object3D;THREE.ParticleSystem.prototype.constructor=THREE.ParticleSystem;THREE.Line=function(a,c,b){THREE.Object3D.call(this);this.geometry=a;this.materials=c instanceof Array?c:[c];this.type=b!=undefined?b:THREE.LineStrip};THREE.LineStrip=0;THREE.LinePieces=1;
|
|
|
THREE.Line.prototype=new THREE.Object3D;THREE.Line.prototype.constructor=THREE.Line;
|
|
|
-THREE.Mesh=function(a,c){THREE.Object3D.call(this);this.geometry=a;this.materials=c&&c.length?c:[c];this.flipSided=!1;this.doubleSided=!1;this.overdraw=!1;if(this.geometry){this.geometry.boundingSphere||this.geometry.computeBoundingSphere();this.boundRadius=a.boundingSphere.radius;if(this.geometry.morphTargets.length){this.morphTargetBase=-1;this.morphTargetInfluences=[];this.morphTargetDictionary={};for(var b=0;b<this.geometry.morphTargets.length;b++){this.morphTargetInfluences.push(0);this.morphTargetDictionary[this.geometry.morphTargets[b].name]=
|
|
|
-b}}}};THREE.Mesh.prototype=new THREE.Object3D;THREE.Mesh.prototype.constructor=THREE.Mesh;THREE.Mesh.prototype.supr=THREE.Object3D.prototype;THREE.Mesh.prototype.getMorphTargetIndexByName=function(a){if(this.morphTargetDictionary[a]!==undefined)return this.morphTargetDictionary[a];console.log("THREE.Mesh.getMorphTargetIndexByName: morph target "+a+" does not exist. Returning 0.");return 0};
|
|
|
+THREE.Mesh=function(a,c){THREE.Object3D.call(this);this.geometry=a;this.materials=c&&c.length?c:[c];this.flipSided=!1;this.doubleSided=!1;this.overdraw=!1;if(this.geometry){this.geometry.boundingSphere||this.geometry.computeBoundingSphere();this.boundRadius=a.boundingSphere.radius;if(this.geometry.morphTargets.length){this.morphTargetBase=-1;this.morphTargetForcedOrder=[];this.morphTargetInfluences=[];this.morphTargetDictionary={};for(var b=0;b<this.geometry.morphTargets.length;b++){this.morphTargetInfluences.push(0);
|
|
|
+this.morphTargetDictionary[this.geometry.morphTargets[b].name]=b}}}};THREE.Mesh.prototype=new THREE.Object3D;THREE.Mesh.prototype.constructor=THREE.Mesh;THREE.Mesh.prototype.supr=THREE.Object3D.prototype;THREE.Mesh.prototype.getMorphTargetIndexByName=function(a){if(this.morphTargetDictionary[a]!==undefined)return this.morphTargetDictionary[a];console.log("THREE.Mesh.getMorphTargetIndexByName: morph target "+a+" does not exist. Returning 0.");return 0};
|
|
|
THREE.Bone=function(a){THREE.Object3D.call(this);this.skin=a;this.skinMatrix=new THREE.Matrix4;this.hasNoneBoneChildren=!1};THREE.Bone.prototype=new THREE.Object3D;THREE.Bone.prototype.constructor=THREE.Bone;THREE.Bone.prototype.supr=THREE.Object3D.prototype;
|
|
|
THREE.Bone.prototype.update=function(a,c,b){this.matrixAutoUpdate&&(c|=this.updateMatrix());if(c||this.matrixWorldNeedsUpdate){a?this.skinMatrix.multiply(a,this.matrix):this.skinMatrix.copy(this.matrix);this.matrixWorldNeedsUpdate=!1;c=!0}var d,e=this.children.length;if(this.hasNoneBoneChildren){this.matrixWorld.multiply(this.skin.matrixWorld,this.skinMatrix);for(d=0;d<e;d++){a=this.children[d];a instanceof THREE.Bone?a.update(this.skinMatrix,c,b):a.update(this.matrixWorld,!0,b)}}else for(d=0;d<e;d++)this.children[d].update(this.skinMatrix,
|
|
|
c,b)};THREE.Bone.prototype.addChild=function(a){if(this.children.indexOf(a)===-1){a.parent!==undefined&&a.parent.removeChild(a);a.parent=this;this.children.push(a);if(!(a instanceof THREE.Bone))this.hasNoneBoneChildren=!0}};if(!window.Float32Array)window.Float32Array=Array;
|
|
@@ -157,53 +157,53 @@ THREE.LOD.prototype.update=function(a,c,b){this.matrixAutoUpdate&&(c|=this.updat
|
|
|
THREE.Scene.prototype.addChild=function(a){this.supr.addChild.call(this,a);this.addChildRecurse(a)};THREE.Scene.prototype.addChildRecurse=function(a){if(a instanceof THREE.Light)this.lights.indexOf(a)===-1&&this.lights.push(a);else if(a instanceof THREE.Sound)this.sounds.indexOf(a)===-1&&this.sounds.push(a);else if(!(a instanceof THREE.Camera||a instanceof THREE.Bone)&&this.objects.indexOf(a)===-1){this.objects.push(a);this.__objectsAdded.push(a)}for(var c=0;c<a.children.length;c++)this.addChildRecurse(a.children[c])};
|
|
|
THREE.Scene.prototype.removeChild=function(a){this.supr.removeChild.call(this,a);this.removeChildRecurse(a)};THREE.Scene.prototype.removeChildRecurse=function(a){if(a instanceof THREE.Light){var c=this.lights.indexOf(a);c!==-1&&this.lights.splice(c,1)}else if(a instanceof THREE.Sound){c=this.sounds.indexOf(a);c!==-1&&this.sounds.splice(c,1)}else if(!(a instanceof THREE.Camera)){c=this.objects.indexOf(a);if(c!==-1){this.objects.splice(c,1);this.__objectsRemoved.push(a)}}for(c=0;c<a.children.length;c++)this.removeChildRecurse(a.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(a,c,b){this.color=new THREE.Color(a);this.near=c||1;this.far=b||1E3};THREE.FogExp2=function(a,c){this.color=new THREE.Color(a);this.density=c!==undefined?c:2.5E-4};
|
|
|
-THREE.Projector=function(){function a(M,f){return f.z-M.z}function c(M,f){var W=0,R=1,da=M.z+M.w,ga=f.z+f.w,I=-M.z+M.w,ca=-f.z+f.w;if(da>=0&&ga>=0&&I>=0&&ca>=0)return!0;else if(da<0&&ga<0||I<0&&ca<0)return!1;else{if(da<0)W=Math.max(W,da/(da-ga));else ga<0&&(R=Math.min(R,da/(da-ga)));if(I<0)W=Math.max(W,I/(I-ca));else ca<0&&(R=Math.min(R,I/(I-ca)));if(R<W)return!1;else{M.lerpSelf(f,W);f.lerpSelf(M,1-R);return!0}}}var b,d,e=[],g,h,j,k=[],l,o,v=[],u,t,y=[],C=new THREE.Vector4,F=new THREE.Vector4,w=new THREE.Matrix4,
|
|
|
-G=new THREE.Matrix4,x=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],N=new THREE.Vector4,L=new THREE.Vector4,Y;this.projectObjects=function(M,f,W){f=[];var R,da,ga;d=0;da=M.objects;M=0;for(R=da.length;M<R;M++){ga=da[M];var I;if(!(I=!ga.visible))if(I=ga instanceof THREE.Mesh){a:{I=void 0;for(var ca=ga.matrixWorld,za=-ga.geometry.boundingSphere.radius*Math.max(ga.scale.x,Math.max(ga.scale.y,ga.scale.z)),ea=0;ea<6;ea++){I=x[ea].x*ca.n14+
|
|
|
-x[ea].y*ca.n24+x[ea].z*ca.n34+x[ea].w;if(I<=za){I=!1;break a}}I=!0}I=!I}if(!I){b=e[d]=e[d]||new THREE.RenderableObject;C.copy(ga.position);w.multiplyVector3(C);b.object=ga;b.z=C.z;f.push(b);d++}}W&&f.sort(a);return f};this.projectScene=function(M,f,W){var R=[],da=f.near,ga=f.far,I,ca,za,ea,xa,ja,ha,va,Aa,ia,$,qa,ra,Q,ma,ta;j=o=t=0;f.matrixAutoUpdate&&f.update();w.multiply(f.projectionMatrix,f.matrixWorldInverse);x[0].set(w.n41-w.n11,w.n42-w.n12,w.n43-w.n13,w.n44-w.n14);x[1].set(w.n41+w.n11,w.n42+
|
|
|
-w.n12,w.n43+w.n13,w.n44+w.n14);x[2].set(w.n41+w.n21,w.n42+w.n22,w.n43+w.n23,w.n44+w.n24);x[3].set(w.n41-w.n21,w.n42-w.n22,w.n43-w.n23,w.n44-w.n24);x[4].set(w.n41-w.n31,w.n42-w.n32,w.n43-w.n33,w.n44-w.n34);x[5].set(w.n41+w.n31,w.n42+w.n32,w.n43+w.n33,w.n44+w.n34);for(I=0;I<6;I++){ja=x[I];ja.divideScalar(Math.sqrt(ja.x*ja.x+ja.y*ja.y+ja.z*ja.z))}M.update(undefined,!1,f);ja=this.projectObjects(M,f,!0);M=0;for(I=ja.length;M<I;M++){ha=ja[M].object;if(ha.visible){va=ha.matrixWorld;$=ha.matrixRotationWorld;
|
|
|
+THREE.Projector=function(){function a(M,f){return f.z-M.z}function c(M,f){var X=0,R=1,da=M.z+M.w,ga=f.z+f.w,I=-M.z+M.w,ca=-f.z+f.w;if(da>=0&&ga>=0&&I>=0&&ca>=0)return!0;else if(da<0&&ga<0||I<0&&ca<0)return!1;else{if(da<0)X=Math.max(X,da/(da-ga));else ga<0&&(R=Math.min(R,da/(da-ga)));if(I<0)X=Math.max(X,I/(I-ca));else ca<0&&(R=Math.min(R,I/(I-ca)));if(R<X)return!1;else{M.lerpSelf(f,X);f.lerpSelf(M,1-R);return!0}}}var b,d,e=[],g,h,j,k=[],l,o,v=[],u,t,y=[],C=new THREE.Vector4,F=new THREE.Vector4,w=new THREE.Matrix4,
|
|
|
+G=new THREE.Matrix4,x=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],N=new THREE.Vector4,L=new THREE.Vector4,Y;this.projectObjects=function(M,f,X){f=[];var R,da,ga;d=0;da=M.objects;M=0;for(R=da.length;M<R;M++){ga=da[M];var I;if(!(I=!ga.visible))if(I=ga instanceof THREE.Mesh){a:{I=void 0;for(var ca=ga.matrixWorld,za=-ga.geometry.boundingSphere.radius*Math.max(ga.scale.x,Math.max(ga.scale.y,ga.scale.z)),ea=0;ea<6;ea++){I=x[ea].x*ca.n14+
|
|
|
+x[ea].y*ca.n24+x[ea].z*ca.n34+x[ea].w;if(I<=za){I=!1;break a}}I=!0}I=!I}if(!I){b=e[d]=e[d]||new THREE.RenderableObject;C.copy(ga.position);w.multiplyVector3(C);b.object=ga;b.z=C.z;f.push(b);d++}}X&&f.sort(a);return f};this.projectScene=function(M,f,X){var R=[],da=f.near,ga=f.far,I,ca,za,ea,xa,ja,ha,va,Aa,ia,aa,qa,ra,Q,ma,ta;j=o=t=0;f.matrixAutoUpdate&&f.update();w.multiply(f.projectionMatrix,f.matrixWorldInverse);x[0].set(w.n41-w.n11,w.n42-w.n12,w.n43-w.n13,w.n44-w.n14);x[1].set(w.n41+w.n11,w.n42+
|
|
|
+w.n12,w.n43+w.n13,w.n44+w.n14);x[2].set(w.n41+w.n21,w.n42+w.n22,w.n43+w.n23,w.n44+w.n24);x[3].set(w.n41-w.n21,w.n42-w.n22,w.n43-w.n23,w.n44-w.n24);x[4].set(w.n41-w.n31,w.n42-w.n32,w.n43-w.n33,w.n44-w.n34);x[5].set(w.n41+w.n31,w.n42+w.n32,w.n43+w.n33,w.n44+w.n34);for(I=0;I<6;I++){ja=x[I];ja.divideScalar(Math.sqrt(ja.x*ja.x+ja.y*ja.y+ja.z*ja.z))}M.update(undefined,!1,f);ja=this.projectObjects(M,f,!0);M=0;for(I=ja.length;M<I;M++){ha=ja[M].object;if(ha.visible){va=ha.matrixWorld;aa=ha.matrixRotationWorld;
|
|
|
Aa=ha.materials;ia=ha.overdraw;if(ha instanceof THREE.Mesh){qa=ha.geometry;ra=qa.vertices;ca=0;for(za=ra.length;ca<za;ca++){Q=ra[ca];Q.positionWorld.copy(Q.position);va.multiplyVector3(Q.positionWorld);ea=Q.positionScreen;ea.copy(Q.positionWorld);w.multiplyVector4(ea);ea.x/=ea.w;ea.y/=ea.w;Q.__visible=ea.z>da&&ea.z<ga}qa=qa.faces;ca=0;for(za=qa.length;ca<za;ca++){Q=qa[ca];if(Q instanceof THREE.Face3){ea=ra[Q.a];xa=ra[Q.b];ma=ra[Q.c];if(ea.__visible&&xa.__visible&&ma.__visible&&(ha.doubleSided||ha.flipSided!=
|
|
|
-(ma.positionScreen.x-ea.positionScreen.x)*(xa.positionScreen.y-ea.positionScreen.y)-(ma.positionScreen.y-ea.positionScreen.y)*(xa.positionScreen.x-ea.positionScreen.x)<0)){g=k[j]=k[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(ea.positionWorld);g.v2.positionWorld.copy(xa.positionWorld);g.v3.positionWorld.copy(ma.positionWorld);g.v1.positionScreen.copy(ea.positionScreen);g.v2.positionScreen.copy(xa.positionScreen);g.v3.positionScreen.copy(ma.positionScreen);g.normalWorld.copy(Q.normal);$.multiplyVector3(g.normalWorld);
|
|
|
-g.centroidWorld.copy(Q.centroid);va.multiplyVector3(g.centroidWorld);g.centroidScreen.copy(g.centroidWorld);w.multiplyVector3(g.centroidScreen);ma=Q.vertexNormals;Y=g.vertexNormalsWorld;ea=0;for(xa=ma.length;ea<xa;ea++){ta=Y[ea]=Y[ea]||new THREE.Vector3;ta.copy(ma[ea]);$.multiplyVector3(ta)}g.z=g.centroidScreen.z;g.meshMaterials=Aa;g.faceMaterials=Q.materials;g.overdraw=ia;if(ha.geometry.uvs[ca]){g.uvs[0]=ha.geometry.uvs[ca][0];g.uvs[1]=ha.geometry.uvs[ca][1];g.uvs[2]=ha.geometry.uvs[ca][2]}R.push(g);
|
|
|
+(ma.positionScreen.x-ea.positionScreen.x)*(xa.positionScreen.y-ea.positionScreen.y)-(ma.positionScreen.y-ea.positionScreen.y)*(xa.positionScreen.x-ea.positionScreen.x)<0)){g=k[j]=k[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(ea.positionWorld);g.v2.positionWorld.copy(xa.positionWorld);g.v3.positionWorld.copy(ma.positionWorld);g.v1.positionScreen.copy(ea.positionScreen);g.v2.positionScreen.copy(xa.positionScreen);g.v3.positionScreen.copy(ma.positionScreen);g.normalWorld.copy(Q.normal);aa.multiplyVector3(g.normalWorld);
|
|
|
+g.centroidWorld.copy(Q.centroid);va.multiplyVector3(g.centroidWorld);g.centroidScreen.copy(g.centroidWorld);w.multiplyVector3(g.centroidScreen);ma=Q.vertexNormals;Y=g.vertexNormalsWorld;ea=0;for(xa=ma.length;ea<xa;ea++){ta=Y[ea]=Y[ea]||new THREE.Vector3;ta.copy(ma[ea]);aa.multiplyVector3(ta)}g.z=g.centroidScreen.z;g.meshMaterials=Aa;g.faceMaterials=Q.materials;g.overdraw=ia;if(ha.geometry.uvs[ca]){g.uvs[0]=ha.geometry.uvs[ca][0];g.uvs[1]=ha.geometry.uvs[ca][1];g.uvs[2]=ha.geometry.uvs[ca][2]}R.push(g);
|
|
|
j++}}else if(Q instanceof THREE.Face4){ea=ra[Q.a];xa=ra[Q.b];ma=ra[Q.c];ta=ra[Q.d];if(ea.__visible&&xa.__visible&&ma.__visible&&ta.__visible&&(ha.doubleSided||ha.flipSided!=((ta.positionScreen.x-ea.positionScreen.x)*(xa.positionScreen.y-ea.positionScreen.y)-(ta.positionScreen.y-ea.positionScreen.y)*(xa.positionScreen.x-ea.positionScreen.x)<0||(xa.positionScreen.x-ma.positionScreen.x)*(ta.positionScreen.y-ma.positionScreen.y)-(xa.positionScreen.y-ma.positionScreen.y)*(ta.positionScreen.x-ma.positionScreen.x)<
|
|
|
-0))){g=k[j]=k[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(ea.positionWorld);g.v2.positionWorld.copy(xa.positionWorld);g.v3.positionWorld.copy(ta.positionWorld);g.v1.positionScreen.copy(ea.positionScreen);g.v2.positionScreen.copy(xa.positionScreen);g.v3.positionScreen.copy(ta.positionScreen);g.normalWorld.copy(Q.normal);$.multiplyVector3(g.normalWorld);g.centroidWorld.copy(Q.centroid);va.multiplyVector3(g.centroidWorld);g.centroidScreen.copy(g.centroidWorld);w.multiplyVector3(g.centroidScreen);
|
|
|
+0))){g=k[j]=k[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(ea.positionWorld);g.v2.positionWorld.copy(xa.positionWorld);g.v3.positionWorld.copy(ta.positionWorld);g.v1.positionScreen.copy(ea.positionScreen);g.v2.positionScreen.copy(xa.positionScreen);g.v3.positionScreen.copy(ta.positionScreen);g.normalWorld.copy(Q.normal);aa.multiplyVector3(g.normalWorld);g.centroidWorld.copy(Q.centroid);va.multiplyVector3(g.centroidWorld);g.centroidScreen.copy(g.centroidWorld);w.multiplyVector3(g.centroidScreen);
|
|
|
g.z=g.centroidScreen.z;g.meshMaterials=Aa;g.faceMaterials=Q.materials;g.overdraw=ia;if(ha.geometry.uvs[ca]){g.uvs[0]=ha.geometry.uvs[ca][0];g.uvs[1]=ha.geometry.uvs[ca][1];g.uvs[2]=ha.geometry.uvs[ca][3]}R.push(g);j++;h=k[j]=k[j]||new THREE.RenderableFace3;h.v1.positionWorld.copy(xa.positionWorld);h.v2.positionWorld.copy(ma.positionWorld);h.v3.positionWorld.copy(ta.positionWorld);h.v1.positionScreen.copy(xa.positionScreen);h.v2.positionScreen.copy(ma.positionScreen);h.v3.positionScreen.copy(ta.positionScreen);
|
|
|
h.normalWorld.copy(g.normalWorld);h.centroidWorld.copy(g.centroidWorld);h.centroidScreen.copy(g.centroidScreen);h.z=h.centroidScreen.z;h.meshMaterials=Aa;h.faceMaterials=Q.materials;h.overdraw=ia;if(ha.geometry.uvs[ca]){h.uvs[0]=ha.geometry.uvs[ca][1];h.uvs[1]=ha.geometry.uvs[ca][2];h.uvs[2]=ha.geometry.uvs[ca][3]}R.push(h);j++}}}}else if(ha instanceof THREE.Line){G.multiply(w,va);ra=ha.geometry.vertices;Q=ra[0];Q.positionScreen.copy(Q.position);G.multiplyVector4(Q.positionScreen);ca=1;for(za=ra.length;ca<
|
|
|
za;ca++){ea=ra[ca];ea.positionScreen.copy(ea.position);G.multiplyVector4(ea.positionScreen);xa=ra[ca-1];N.copy(ea.positionScreen);L.copy(xa.positionScreen);if(c(N,L)){N.multiplyScalar(1/N.w);L.multiplyScalar(1/L.w);l=v[o]=v[o]||new THREE.RenderableLine;l.v1.positionScreen.copy(N);l.v2.positionScreen.copy(L);l.z=Math.max(N.z,L.z);l.materials=ha.materials;R.push(l);o++}}}else if(ha instanceof THREE.Particle){F.set(ha.position.x,ha.position.y,ha.position.z,1);w.multiplyVector4(F);F.z/=F.w;if(F.z>0&&
|
|
|
-F.z<1){u=y[t]=y[t]||new THREE.RenderableParticle;u.x=F.x/F.w;u.y=F.y/F.w;u.z=F.z;u.rotation=ha.rotation.z;u.scale.x=ha.scale.x*Math.abs(u.x-(F.x+f.projectionMatrix.n11)/(F.w+f.projectionMatrix.n14));u.scale.y=ha.scale.y*Math.abs(u.y-(F.y+f.projectionMatrix.n22)/(F.w+f.projectionMatrix.n24));u.materials=ha.materials;R.push(u);t++}}}}W&&R.sort(a);return R};this.unprojectVector=function(M,f){var W=f.matrixWorld.clone();W.multiplySelf(THREE.Matrix4.makeInvert(f.projectionMatrix));W.multiplyVector3(M);
|
|
|
+F.z<1){u=y[t]=y[t]||new THREE.RenderableParticle;u.x=F.x/F.w;u.y=F.y/F.w;u.z=F.z;u.rotation=ha.rotation.z;u.scale.x=ha.scale.x*Math.abs(u.x-(F.x+f.projectionMatrix.n11)/(F.w+f.projectionMatrix.n14));u.scale.y=ha.scale.y*Math.abs(u.y-(F.y+f.projectionMatrix.n22)/(F.w+f.projectionMatrix.n24));u.materials=ha.materials;R.push(u);t++}}}}X&&R.sort(a);return R};this.unprojectVector=function(M,f){var X=f.matrixWorld.clone();X.multiplySelf(THREE.Matrix4.makeInvert(f.projectionMatrix));X.multiplyVector3(M);
|
|
|
return M}};
|
|
|
THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,c=new THREE.Projector,b,d,e,g;this.domElement=document.createElement("div");this.setSize=function(h,j){b=h;d=j;e=b/2;g=d/2};this.render=function(h,j){var k,l,o,v,u,t,y,C;a=c.projectScene(h,j);k=0;for(l=a.length;k<l;k++){u=a[k];if(u instanceof THREE.RenderableParticle){y=u.x*e+e;C=u.y*g+g;o=0;for(v=u.material.length;o<v;o++){t=u.material[o];if(t instanceof THREE.ParticleDOMMaterial){t=t.domElement;t.style.left=y+"px";t.style.top=C+"px"}}}}}};
|
|
|
-THREE.CanvasRenderer=function(){function a(ka){if(u!=ka)l.globalAlpha=u=ka}function c(ka){if(t!=ka){switch(ka){case THREE.NormalBlending:l.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:l.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:l.globalCompositeOperation="darker"}t=ka}}var b=null,d=new THREE.Projector,e=document.createElement("canvas"),g,h,j,k,l=e.getContext("2d"),o=new THREE.Color(0),v=0,u=1,t=0,y=null,C=null,F=1,w,G,x,N,L,Y,M,f,W,R=new THREE.Color,
|
|
|
-da=new THREE.Color,ga=new THREE.Color,I=new THREE.Color,ca=new THREE.Color,za,ea,xa,ja,ha,va,Aa,ia,$,qa=new THREE.Rectangle,ra=new THREE.Rectangle,Q=new THREE.Rectangle,ma=!1,ta=new THREE.Color,m=new THREE.Color,z=new THREE.Color,q=new THREE.Color,n=Math.PI*2,p=new THREE.Vector3,B,A,D,O,X,E,aa=16;B=document.createElement("canvas");B.width=B.height=2;A=B.getContext("2d");A.fillStyle="rgba(0,0,0,1)";A.fillRect(0,0,2,2);D=A.getImageData(0,0,2,2);O=D.data;X=document.createElement("canvas");X.width=X.height=
|
|
|
-aa;E=X.getContext("2d");E.translate(-aa/2,-aa/2);E.scale(aa,aa);aa--;this.domElement=e;this.autoClear=!0;this.sortObjects=!0;this.sortElements=!0;this.setSize=function(ka,na){g=ka;h=na;j=g/2;k=h/2;e.width=g;e.height=h;qa.set(-j,-k,j,k);u=1;t=0;C=y=null;F=1};this.setClearColor=function(ka,na){o=ka;v=na};this.setClearColorHex=function(ka,na){o.setHex(ka);v=na};this.clear=function(){l.setTransform(1,0,0,-1,j,k);if(!ra.isEmpty()){ra.inflate(1);ra.minSelf(qa);if(o.hex==0&&v==0)l.clearRect(ra.getX(),ra.getY(),
|
|
|
-ra.getWidth(),ra.getHeight());else{c(THREE.NormalBlending);a(1);l.fillStyle="rgba("+Math.floor(o.r*255)+","+Math.floor(o.g*255)+","+Math.floor(o.b*255)+","+v+")";l.fillRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight())}ra.empty()}};this.render=function(ka,na){function wa(P){var oa,Z,J,T=P.lights;m.setRGB(0,0,0);z.setRGB(0,0,0);q.setRGB(0,0,0);P=0;for(oa=T.length;P<oa;P++){Z=T[P];J=Z.color;if(Z instanceof THREE.AmbientLight){m.r+=J.r;m.g+=J.g;m.b+=J.b}else if(Z instanceof THREE.DirectionalLight){z.r+=
|
|
|
-J.r;z.g+=J.g;z.b+=J.b}else if(Z instanceof THREE.PointLight){q.r+=J.r;q.g+=J.g;q.b+=J.b}}}function la(P,oa,Z,J){var T,fa,pa,sa,ua=P.lights;P=0;for(T=ua.length;P<T;P++){fa=ua[P];pa=fa.color;sa=fa.intensity;if(fa instanceof THREE.DirectionalLight){fa=Z.dot(fa.position)*sa;if(fa>0){J.r+=pa.r*fa;J.g+=pa.g*fa;J.b+=pa.b*fa}}else if(fa instanceof THREE.PointLight){p.sub(fa.position,oa);p.normalize();fa=Z.dot(p)*sa;if(fa>0){J.r+=pa.r*fa;J.g+=pa.g*fa;J.b+=pa.b*fa}}}}function Ca(P,oa,Z){if(Z.opacity!=0){a(Z.opacity);
|
|
|
-c(Z.blending);var J,T,fa,pa,sa,ua;if(Z instanceof THREE.ParticleBasicMaterial){if(Z.map){pa=Z.map.image;sa=pa.width>>1;ua=pa.height>>1;T=oa.scale.x*j;fa=oa.scale.y*k;Z=T*sa;J=fa*ua;Q.set(P.x-Z,P.y-J,P.x+Z,P.y+J);if(qa.instersects(Q)){l.save();l.translate(P.x,P.y);l.rotate(-oa.rotation);l.scale(T,-fa);l.translate(-sa,-ua);l.drawImage(pa,0,0);l.restore()}}}else if(Z instanceof THREE.ParticleCircleMaterial){if(ma){ta.r=m.r+z.r+q.r;ta.g=m.g+z.g+q.g;ta.b=m.b+z.b+q.b;R.r=Z.color.r*ta.r;R.g=Z.color.g*ta.g;
|
|
|
-R.b=Z.color.b*ta.b;R.updateStyleString()}else R.__styleString=Z.color.__styleString;Z=oa.scale.x*j;J=oa.scale.y*k;Q.set(P.x-Z,P.y-J,P.x+Z,P.y+J);if(qa.instersects(Q)){T=R.__styleString;if(C!=T)l.fillStyle=C=T;l.save();l.translate(P.x,P.y);l.rotate(-oa.rotation);l.scale(Z,J);l.beginPath();l.arc(0,0,1,0,n,!0);l.closePath();l.fill();l.restore()}}}}function Da(P,oa,Z,J){if(J.opacity!=0){a(J.opacity);c(J.blending);l.beginPath();l.moveTo(P.positionScreen.x,P.positionScreen.y);l.lineTo(oa.positionScreen.x,
|
|
|
-oa.positionScreen.y);l.closePath();if(J instanceof THREE.LineBasicMaterial){R.__styleString=J.color.__styleString;P=J.linewidth;if(F!=P)l.lineWidth=F=P;P=R.__styleString;if(y!=P)l.strokeStyle=y=P;l.stroke();Q.inflate(J.linewidth*2)}}}function Pa(P,oa,Z,J,T,fa){if(T.opacity!=0){a(T.opacity);c(T.blending);N=P.positionScreen.x;L=P.positionScreen.y;Y=oa.positionScreen.x;M=oa.positionScreen.y;f=Z.positionScreen.x;W=Z.positionScreen.y;l.beginPath();l.moveTo(N,L);l.lineTo(Y,M);l.lineTo(f,W);l.lineTo(N,L);
|
|
|
-l.closePath();if(T instanceof THREE.MeshBasicMaterial)if(T.map)T.map.mapping instanceof THREE.UVMapping&&Ia(N,L,Y,M,f,W,T.map.image,J.uvs[0].u,J.uvs[0].v,J.uvs[1].u,J.uvs[1].v,J.uvs[2].u,J.uvs[2].v);else if(T.envMap){if(T.envMap.mapping instanceof THREE.SphericalReflectionMapping){P=na.matrixWorldInverse;p.copy(J.vertexNormalsWorld[0]);ja=(p.x*P.n11+p.y*P.n12+p.z*P.n13)*0.5+0.5;ha=-(p.x*P.n21+p.y*P.n22+p.z*P.n23)*0.5+0.5;p.copy(J.vertexNormalsWorld[1]);va=(p.x*P.n11+p.y*P.n12+p.z*P.n13)*0.5+0.5;Aa=
|
|
|
--(p.x*P.n21+p.y*P.n22+p.z*P.n23)*0.5+0.5;p.copy(J.vertexNormalsWorld[2]);ia=(p.x*P.n11+p.y*P.n12+p.z*P.n13)*0.5+0.5;$=-(p.x*P.n21+p.y*P.n22+p.z*P.n23)*0.5+0.5;Ia(N,L,Y,M,f,W,T.envMap.image,ja,ha,va,Aa,ia,$)}}else T.wireframe?K(T.color.__styleString,T.wireframeLinewidth):Na(T.color.__styleString);else if(T instanceof THREE.MeshLambertMaterial){if(T.map&&!T.wireframe){T.map.mapping instanceof THREE.UVMapping&&Ia(N,L,Y,M,f,W,T.map.image,J.uvs[0].u,J.uvs[0].v,J.uvs[1].u,J.uvs[1].v,J.uvs[2].u,J.uvs[2].v);
|
|
|
-c(THREE.SubtractiveBlending)}if(ma)if(!T.wireframe&&T.shading==THREE.SmoothShading&&J.vertexNormalsWorld.length==3){da.r=ga.r=I.r=m.r;da.g=ga.g=I.g=m.g;da.b=ga.b=I.b=m.b;la(fa,J.v1.positionWorld,J.vertexNormalsWorld[0],da);la(fa,J.v2.positionWorld,J.vertexNormalsWorld[1],ga);la(fa,J.v3.positionWorld,J.vertexNormalsWorld[2],I);ca.r=(ga.r+I.r)*0.5;ca.g=(ga.g+I.g)*0.5;ca.b=(ga.b+I.b)*0.5;xa=Oa(da,ga,I,ca);Ia(N,L,Y,M,f,W,xa,0,0,1,0,0,1)}else{ta.r=m.r;ta.g=m.g;ta.b=m.b;la(fa,J.centroidWorld,J.normalWorld,
|
|
|
-ta);R.r=T.color.r*ta.r;R.g=T.color.g*ta.g;R.b=T.color.b*ta.b;R.updateStyleString();T.wireframe?K(R.__styleString,T.wireframeLinewidth):Na(R.__styleString)}else T.wireframe?K(T.color.__styleString,T.wireframeLinewidth):Na(T.color.__styleString)}else if(T instanceof THREE.MeshDepthMaterial){za=na.near;ea=na.far;da.r=da.g=da.b=1-S(P.positionScreen.z,za,ea);ga.r=ga.g=ga.b=1-S(oa.positionScreen.z,za,ea);I.r=I.g=I.b=1-S(Z.positionScreen.z,za,ea);ca.r=(ga.r+I.r)*0.5;ca.g=(ga.g+I.g)*0.5;ca.b=(ga.b+I.b)*0.5;
|
|
|
-xa=Oa(da,ga,I,ca);Ia(N,L,Y,M,f,W,xa,0,0,1,0,0,1)}else if(T instanceof THREE.MeshNormalMaterial){R.r=U(J.normalWorld.x);R.g=U(J.normalWorld.y);R.b=U(J.normalWorld.z);R.updateStyleString();T.wireframe?K(R.__styleString,T.wireframeLinewidth):Na(R.__styleString)}}}function K(P,oa){if(y!=P)l.strokeStyle=y=P;if(F!=oa)l.lineWidth=F=oa;l.stroke();Q.inflate(oa*2)}function Na(P){if(C!=P)l.fillStyle=C=P;l.fill()}function Ia(P,oa,Z,J,T,fa,pa,sa,ua,Ra,La,Ka,Wa){var Ea,Sa;Ea=pa.width-1;Sa=pa.height-1;sa*=Ea;ua*=
|
|
|
-Sa;Ra*=Ea;La*=Sa;Ka*=Ea;Wa*=Sa;Z-=P;J-=oa;T-=P;fa-=oa;Ra-=sa;La-=ua;Ka-=sa;Wa-=ua;Ea=Ra*Wa-Ka*La;if(Ea!=0){Sa=1/Ea;Ea=(Wa*Z-La*T)*Sa;La=(Wa*J-La*fa)*Sa;Z=(Ra*T-Ka*Z)*Sa;J=(Ra*fa-Ka*J)*Sa;P=P-Ea*sa-Z*ua;oa=oa-La*sa-J*ua;l.save();l.transform(Ea,La,Z,J,P,oa);l.clip();l.drawImage(pa,0,0);l.restore()}}function Oa(P,oa,Z,J){var T=~~(P.r*255),fa=~~(P.g*255);P=~~(P.b*255);var pa=~~(oa.r*255),sa=~~(oa.g*255);oa=~~(oa.b*255);var ua=~~(Z.r*255),Ra=~~(Z.g*255);Z=~~(Z.b*255);var La=~~(J.r*255),Ka=~~(J.g*255);
|
|
|
-J=~~(J.b*255);O[0]=T<0?0:T>255?255:T;O[1]=fa<0?0:fa>255?255:fa;O[2]=P<0?0:P>255?255:P;O[4]=pa<0?0:pa>255?255:pa;O[5]=sa<0?0:sa>255?255:sa;O[6]=oa<0?0:oa>255?255:oa;O[8]=ua<0?0:ua>255?255:ua;O[9]=Ra<0?0:Ra>255?255:Ra;O[10]=Z<0?0:Z>255?255:Z;O[12]=La<0?0:La>255?255:La;O[13]=Ka<0?0:Ka>255?255:Ka;O[14]=J<0?0:J>255?255:J;A.putImageData(D,0,0);E.drawImage(B,0,0);return X}function S(P,oa,Z){P=(P-oa)/(Z-oa);return P*P*(3-2*P)}function U(P){P=(P+1)*0.5;return P<0?0:P>1?1:P}function V(P,oa){var Z=oa.x-P.x,
|
|
|
-J=oa.y-P.y,T=1/Math.sqrt(Z*Z+J*J);Z*=T;J*=T;oa.x+=Z;oa.y+=J;P.x-=Z;P.y-=J}var ya,Ma,Fa,Ba,Ga,H,Ja,Ha;this.autoClear?this.clear():l.setTransform(1,0,0,-1,j,k);b=d.projectScene(ka,na,this.sortElements);(ma=ka.lights.length>0)&&wa(ka);ya=0;for(Ma=b.length;ya<Ma;ya++){Fa=b[ya];Q.empty();if(Fa instanceof THREE.RenderableParticle){w=Fa;w.x*=j;w.y*=k;Ba=0;for(Ga=Fa.materials.length;Ba<Ga;Ba++)Ca(w,Fa,Fa.materials[Ba],ka)}else if(Fa instanceof THREE.RenderableLine){w=Fa.v1;G=Fa.v2;w.positionScreen.x*=j;w.positionScreen.y*=
|
|
|
-k;G.positionScreen.x*=j;G.positionScreen.y*=k;Q.addPoint(w.positionScreen.x,w.positionScreen.y);Q.addPoint(G.positionScreen.x,G.positionScreen.y);if(qa.instersects(Q)){Ba=0;for(Ga=Fa.materials.length;Ba<Ga;)Da(w,G,Fa,Fa.materials[Ba++],ka)}}else if(Fa instanceof THREE.RenderableFace3){w=Fa.v1;G=Fa.v2;x=Fa.v3;w.positionScreen.x*=j;w.positionScreen.y*=k;G.positionScreen.x*=j;G.positionScreen.y*=k;x.positionScreen.x*=j;x.positionScreen.y*=k;if(Fa.overdraw){V(w.positionScreen,G.positionScreen);V(G.positionScreen,
|
|
|
-x.positionScreen);V(x.positionScreen,w.positionScreen)}Q.add3Points(w.positionScreen.x,w.positionScreen.y,G.positionScreen.x,G.positionScreen.y,x.positionScreen.x,x.positionScreen.y);if(qa.instersects(Q)){Ba=0;for(Ga=Fa.meshMaterials.length;Ba<Ga;){Ha=Fa.meshMaterials[Ba++];if(Ha instanceof THREE.MeshFaceMaterial){H=0;for(Ja=Fa.faceMaterials.length;H<Ja;)(Ha=Fa.faceMaterials[H++])&&Pa(w,G,x,Fa,Ha,ka)}else Pa(w,G,x,Fa,Ha,ka)}}}ra.addRectangle(Q)}l.setTransform(1,0,0,1,0,0)}};
|
|
|
-THREE.SVGRenderer=function(){function a(ja,ha,va){var Aa,ia,$,qa;Aa=0;for(ia=ja.lights.length;Aa<ia;Aa++){$=ja.lights[Aa];if($ instanceof THREE.DirectionalLight){qa=ha.normalWorld.dot($.position)*$.intensity;if(qa>0){va.r+=$.color.r*qa;va.g+=$.color.g*qa;va.b+=$.color.b*qa}}else if($ instanceof THREE.PointLight){W.sub($.position,ha.centroidWorld);W.normalize();qa=ha.normalWorld.dot(W)*$.intensity;if(qa>0){va.r+=$.color.r*qa;va.g+=$.color.g*qa;va.b+=$.color.b*qa}}}}function c(ja,ha,va,Aa,ia,$){I=d(ca++);
|
|
|
-I.setAttribute("d","M "+ja.positionScreen.x+" "+ja.positionScreen.y+" L "+ha.positionScreen.x+" "+ha.positionScreen.y+" L "+va.positionScreen.x+","+va.positionScreen.y+"z");if(ia instanceof THREE.MeshBasicMaterial)x.__styleString=ia.color.__styleString;else if(ia instanceof THREE.MeshLambertMaterial)if(G){N.r=L.r;N.g=L.g;N.b=L.b;a($,Aa,N);x.r=ia.color.r*N.r;x.g=ia.color.g*N.g;x.b=ia.color.b*N.b;x.updateStyleString()}else x.__styleString=ia.color.__styleString;else if(ia instanceof THREE.MeshDepthMaterial){f=
|
|
|
-1-ia.__2near/(ia.__farPlusNear-Aa.z*ia.__farMinusNear);x.setRGB(f,f,f)}else ia instanceof THREE.MeshNormalMaterial&&x.setRGB(e(Aa.normalWorld.x),e(Aa.normalWorld.y),e(Aa.normalWorld.z));ia.wireframe?I.setAttribute("style","fill: none; stroke: "+x.__styleString+"; stroke-width: "+ia.wireframeLinewidth+"; stroke-opacity: "+ia.opacity+"; stroke-linecap: "+ia.wireframeLinecap+"; stroke-linejoin: "+ia.wireframeLinejoin):I.setAttribute("style","fill: "+x.__styleString+"; fill-opacity: "+ia.opacity);j.appendChild(I)}
|
|
|
-function b(ja,ha,va,Aa,ia,$,qa){I=d(ca++);I.setAttribute("d","M "+ja.positionScreen.x+" "+ja.positionScreen.y+" L "+ha.positionScreen.x+" "+ha.positionScreen.y+" L "+va.positionScreen.x+","+va.positionScreen.y+" L "+Aa.positionScreen.x+","+Aa.positionScreen.y+"z");if($ instanceof THREE.MeshBasicMaterial)x.__styleString=$.color.__styleString;else if($ instanceof THREE.MeshLambertMaterial)if(G){N.r=L.r;N.g=L.g;N.b=L.b;a(qa,ia,N);x.r=$.color.r*N.r;x.g=$.color.g*N.g;x.b=$.color.b*N.b;x.updateStyleString()}else x.__styleString=
|
|
|
-$.color.__styleString;else if($ instanceof THREE.MeshDepthMaterial){f=1-$.__2near/($.__farPlusNear-ia.z*$.__farMinusNear);x.setRGB(f,f,f)}else $ instanceof THREE.MeshNormalMaterial&&x.setRGB(e(ia.normalWorld.x),e(ia.normalWorld.y),e(ia.normalWorld.z));$.wireframe?I.setAttribute("style","fill: none; stroke: "+x.__styleString+"; stroke-width: "+$.wireframeLinewidth+"; stroke-opacity: "+$.opacity+"; stroke-linecap: "+$.wireframeLinecap+"; stroke-linejoin: "+$.wireframeLinejoin):I.setAttribute("style",
|
|
|
-"fill: "+x.__styleString+"; fill-opacity: "+$.opacity);j.appendChild(I)}function d(ja){if(R[ja]==null){R[ja]=document.createElementNS("http://www.w3.org/2000/svg","path");xa==0&&R[ja].setAttribute("shape-rendering","crispEdges")}return R[ja]}function e(ja){return ja<0?Math.min((1+ja)*0.5,0.5):0.5+Math.min(ja*0.5,0.5)}var g=null,h=new THREE.Projector,j=document.createElementNS("http://www.w3.org/2000/svg","svg"),k,l,o,v,u,t,y,C,F=new THREE.Rectangle,w=new THREE.Rectangle,G=!1,x=new THREE.Color(16777215),
|
|
|
-N=new THREE.Color(16777215),L=new THREE.Color(0),Y=new THREE.Color(0),M=new THREE.Color(0),f,W=new THREE.Vector3,R=[],da=[],ga=[],I,ca,za,ea,xa=1;this.domElement=j;this.autoClear=!0;this.sortObjects=!0;this.sortElements=!0;this.setQuality=function(ja){switch(ja){case "high":xa=1;break;case "low":xa=0}};this.setSize=function(ja,ha){k=ja;l=ha;o=k/2;v=l/2;j.setAttribute("viewBox",-o+" "+-v+" "+k+" "+l);j.setAttribute("width",k);j.setAttribute("height",l);F.set(-o,-v,o,v)};this.clear=function(){for(;j.childNodes.length>
|
|
|
-0;)j.removeChild(j.childNodes[0])};this.render=function(ja,ha){var va,Aa,ia,$,qa,ra,Q,ma;this.autoClear&&this.clear();g=h.projectScene(ja,ha,this.sortElements);ea=za=ca=0;if(G=ja.lights.length>0){Q=ja.lights;L.setRGB(0,0,0);Y.setRGB(0,0,0);M.setRGB(0,0,0);va=0;for(Aa=Q.length;va<Aa;va++){ia=Q[va];$=ia.color;if(ia instanceof THREE.AmbientLight){L.r+=$.r;L.g+=$.g;L.b+=$.b}else if(ia instanceof THREE.DirectionalLight){Y.r+=$.r;Y.g+=$.g;Y.b+=$.b}else if(ia instanceof THREE.PointLight){M.r+=$.r;M.g+=$.g;
|
|
|
-M.b+=$.b}}}va=0;for(Aa=g.length;va<Aa;va++){Q=g[va];w.empty();if(Q instanceof THREE.RenderableParticle){u=Q;u.x*=o;u.y*=-v;ia=0;for($=Q.materials.length;ia<$;ia++)if(ma=Q.materials[ia]){qa=u;ra=Q;var ta=za++;if(da[ta]==null){da[ta]=document.createElementNS("http://www.w3.org/2000/svg","circle");xa==0&&da[ta].setAttribute("shape-rendering","crispEdges")}I=da[ta];I.setAttribute("cx",qa.x);I.setAttribute("cy",qa.y);I.setAttribute("r",ra.scale.x*o);if(ma instanceof THREE.ParticleCircleMaterial){if(G){N.r=
|
|
|
-L.r+Y.r+M.r;N.g=L.g+Y.g+M.g;N.b=L.b+Y.b+M.b;x.r=ma.color.r*N.r;x.g=ma.color.g*N.g;x.b=ma.color.b*N.b;x.updateStyleString()}else x=ma.color;I.setAttribute("style","fill: "+x.__styleString)}j.appendChild(I)}}else if(Q instanceof THREE.RenderableLine){u=Q.v1;t=Q.v2;u.positionScreen.x*=o;u.positionScreen.y*=-v;t.positionScreen.x*=o;t.positionScreen.y*=-v;w.addPoint(u.positionScreen.x,u.positionScreen.y);w.addPoint(t.positionScreen.x,t.positionScreen.y);if(F.instersects(w)){ia=0;for($=Q.materials.length;ia<
|
|
|
-$;)if(ma=Q.materials[ia++]){qa=u;ra=t;ta=ea++;if(ga[ta]==null){ga[ta]=document.createElementNS("http://www.w3.org/2000/svg","line");xa==0&&ga[ta].setAttribute("shape-rendering","crispEdges")}I=ga[ta];I.setAttribute("x1",qa.positionScreen.x);I.setAttribute("y1",qa.positionScreen.y);I.setAttribute("x2",ra.positionScreen.x);I.setAttribute("y2",ra.positionScreen.y);if(ma instanceof THREE.LineBasicMaterial){x.__styleString=ma.color.__styleString;I.setAttribute("style","fill: none; stroke: "+x.__styleString+
|
|
|
-"; stroke-width: "+ma.linewidth+"; stroke-opacity: "+ma.opacity+"; stroke-linecap: "+ma.linecap+"; stroke-linejoin: "+ma.linejoin);j.appendChild(I)}}}}else if(Q instanceof THREE.RenderableFace3){u=Q.v1;t=Q.v2;y=Q.v3;u.positionScreen.x*=o;u.positionScreen.y*=-v;t.positionScreen.x*=o;t.positionScreen.y*=-v;y.positionScreen.x*=o;y.positionScreen.y*=-v;w.addPoint(u.positionScreen.x,u.positionScreen.y);w.addPoint(t.positionScreen.x,t.positionScreen.y);w.addPoint(y.positionScreen.x,y.positionScreen.y);
|
|
|
-if(F.instersects(w)){ia=0;for($=Q.meshMaterials.length;ia<$;){ma=Q.meshMaterials[ia++];if(ma instanceof THREE.MeshFaceMaterial){qa=0;for(ra=Q.faceMaterials.length;qa<ra;)(ma=Q.faceMaterials[qa++])&&c(u,t,y,Q,ma,ja)}else ma&&c(u,t,y,Q,ma,ja)}}}else if(Q instanceof THREE.RenderableFace4){u=Q.v1;t=Q.v2;y=Q.v3;C=Q.v4;u.positionScreen.x*=o;u.positionScreen.y*=-v;t.positionScreen.x*=o;t.positionScreen.y*=-v;y.positionScreen.x*=o;y.positionScreen.y*=-v;C.positionScreen.x*=o;C.positionScreen.y*=-v;w.addPoint(u.positionScreen.x,
|
|
|
-u.positionScreen.y);w.addPoint(t.positionScreen.x,t.positionScreen.y);w.addPoint(y.positionScreen.x,y.positionScreen.y);w.addPoint(C.positionScreen.x,C.positionScreen.y);if(F.instersects(w)){ia=0;for($=Q.meshMaterials.length;ia<$;){ma=Q.meshMaterials[ia++];if(ma instanceof THREE.MeshFaceMaterial){qa=0;for(ra=Q.faceMaterials.length;qa<ra;)(ma=Q.faceMaterials[qa++])&&b(u,t,y,C,Q,ma,ja)}else ma&&b(u,t,y,C,Q,ma,ja)}}}}}};
|
|
|
+THREE.CanvasRenderer=function(){function a(ka){if(u!=ka)l.globalAlpha=u=ka}function c(ka){if(t!=ka){switch(ka){case THREE.NormalBlending:l.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:l.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:l.globalCompositeOperation="darker"}t=ka}}var b=null,d=new THREE.Projector,e=document.createElement("canvas"),g,h,j,k,l=e.getContext("2d"),o=new THREE.Color(0),v=0,u=1,t=0,y=null,C=null,F=1,w,G,x,N,L,Y,M,f,X,R=new THREE.Color,
|
|
|
+da=new THREE.Color,ga=new THREE.Color,I=new THREE.Color,ca=new THREE.Color,za,ea,xa,ja,ha,va,Aa,ia,aa,qa=new THREE.Rectangle,ra=new THREE.Rectangle,Q=new THREE.Rectangle,ma=!1,ta=new THREE.Color,m=new THREE.Color,z=new THREE.Color,p=new THREE.Color,n=Math.PI*2,q=new THREE.Vector3,B,A,D,P,U,E,Z=16;B=document.createElement("canvas");B.width=B.height=2;A=B.getContext("2d");A.fillStyle="rgba(0,0,0,1)";A.fillRect(0,0,2,2);D=A.getImageData(0,0,2,2);P=D.data;U=document.createElement("canvas");U.width=U.height=
|
|
|
+Z;E=U.getContext("2d");E.translate(-Z/2,-Z/2);E.scale(Z,Z);Z--;this.domElement=e;this.autoClear=!0;this.sortObjects=!0;this.sortElements=!0;this.setSize=function(ka,na){g=ka;h=na;j=g/2;k=h/2;e.width=g;e.height=h;qa.set(-j,-k,j,k);u=1;t=0;C=y=null;F=1};this.setClearColor=function(ka,na){o=ka;v=na};this.setClearColorHex=function(ka,na){o.setHex(ka);v=na};this.clear=function(){l.setTransform(1,0,0,-1,j,k);if(!ra.isEmpty()){ra.inflate(1);ra.minSelf(qa);if(o.hex==0&&v==0)l.clearRect(ra.getX(),ra.getY(),
|
|
|
+ra.getWidth(),ra.getHeight());else{c(THREE.NormalBlending);a(1);l.fillStyle="rgba("+Math.floor(o.r*255)+","+Math.floor(o.g*255)+","+Math.floor(o.b*255)+","+v+")";l.fillRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight())}ra.empty()}};this.render=function(ka,na){function wa(O){var oa,$,J,T=O.lights;m.setRGB(0,0,0);z.setRGB(0,0,0);p.setRGB(0,0,0);O=0;for(oa=T.length;O<oa;O++){$=T[O];J=$.color;if($ instanceof THREE.AmbientLight){m.r+=J.r;m.g+=J.g;m.b+=J.b}else if($ instanceof THREE.DirectionalLight){z.r+=
|
|
|
+J.r;z.g+=J.g;z.b+=J.b}else if($ instanceof THREE.PointLight){p.r+=J.r;p.g+=J.g;p.b+=J.b}}}function la(O,oa,$,J){var T,fa,pa,sa,ua=O.lights;O=0;for(T=ua.length;O<T;O++){fa=ua[O];pa=fa.color;sa=fa.intensity;if(fa instanceof THREE.DirectionalLight){fa=$.dot(fa.position)*sa;if(fa>0){J.r+=pa.r*fa;J.g+=pa.g*fa;J.b+=pa.b*fa}}else if(fa instanceof THREE.PointLight){q.sub(fa.position,oa);q.normalize();fa=$.dot(q)*sa;if(fa>0){J.r+=pa.r*fa;J.g+=pa.g*fa;J.b+=pa.b*fa}}}}function Ca(O,oa,$){if($.opacity!=0){a($.opacity);
|
|
|
+c($.blending);var J,T,fa,pa,sa,ua;if($ instanceof THREE.ParticleBasicMaterial){if($.map){pa=$.map.image;sa=pa.width>>1;ua=pa.height>>1;T=oa.scale.x*j;fa=oa.scale.y*k;$=T*sa;J=fa*ua;Q.set(O.x-$,O.y-J,O.x+$,O.y+J);if(qa.instersects(Q)){l.save();l.translate(O.x,O.y);l.rotate(-oa.rotation);l.scale(T,-fa);l.translate(-sa,-ua);l.drawImage(pa,0,0);l.restore()}}}else if($ instanceof THREE.ParticleCircleMaterial){if(ma){ta.r=m.r+z.r+p.r;ta.g=m.g+z.g+p.g;ta.b=m.b+z.b+p.b;R.r=$.color.r*ta.r;R.g=$.color.g*ta.g;
|
|
|
+R.b=$.color.b*ta.b;R.updateStyleString()}else R.__styleString=$.color.__styleString;$=oa.scale.x*j;J=oa.scale.y*k;Q.set(O.x-$,O.y-J,O.x+$,O.y+J);if(qa.instersects(Q)){T=R.__styleString;if(C!=T)l.fillStyle=C=T;l.save();l.translate(O.x,O.y);l.rotate(-oa.rotation);l.scale($,J);l.beginPath();l.arc(0,0,1,0,n,!0);l.closePath();l.fill();l.restore()}}}}function Da(O,oa,$,J){if(J.opacity!=0){a(J.opacity);c(J.blending);l.beginPath();l.moveTo(O.positionScreen.x,O.positionScreen.y);l.lineTo(oa.positionScreen.x,
|
|
|
+oa.positionScreen.y);l.closePath();if(J instanceof THREE.LineBasicMaterial){R.__styleString=J.color.__styleString;O=J.linewidth;if(F!=O)l.lineWidth=F=O;O=R.__styleString;if(y!=O)l.strokeStyle=y=O;l.stroke();Q.inflate(J.linewidth*2)}}}function Pa(O,oa,$,J,T,fa){if(T.opacity!=0){a(T.opacity);c(T.blending);N=O.positionScreen.x;L=O.positionScreen.y;Y=oa.positionScreen.x;M=oa.positionScreen.y;f=$.positionScreen.x;X=$.positionScreen.y;l.beginPath();l.moveTo(N,L);l.lineTo(Y,M);l.lineTo(f,X);l.lineTo(N,L);
|
|
|
+l.closePath();if(T instanceof THREE.MeshBasicMaterial)if(T.map)T.map.mapping instanceof THREE.UVMapping&&Ia(N,L,Y,M,f,X,T.map.image,J.uvs[0].u,J.uvs[0].v,J.uvs[1].u,J.uvs[1].v,J.uvs[2].u,J.uvs[2].v);else if(T.envMap){if(T.envMap.mapping instanceof THREE.SphericalReflectionMapping){O=na.matrixWorldInverse;q.copy(J.vertexNormalsWorld[0]);ja=(q.x*O.n11+q.y*O.n12+q.z*O.n13)*0.5+0.5;ha=-(q.x*O.n21+q.y*O.n22+q.z*O.n23)*0.5+0.5;q.copy(J.vertexNormalsWorld[1]);va=(q.x*O.n11+q.y*O.n12+q.z*O.n13)*0.5+0.5;Aa=
|
|
|
+-(q.x*O.n21+q.y*O.n22+q.z*O.n23)*0.5+0.5;q.copy(J.vertexNormalsWorld[2]);ia=(q.x*O.n11+q.y*O.n12+q.z*O.n13)*0.5+0.5;aa=-(q.x*O.n21+q.y*O.n22+q.z*O.n23)*0.5+0.5;Ia(N,L,Y,M,f,X,T.envMap.image,ja,ha,va,Aa,ia,aa)}}else T.wireframe?K(T.color.__styleString,T.wireframeLinewidth):Na(T.color.__styleString);else if(T instanceof THREE.MeshLambertMaterial){if(T.map&&!T.wireframe){T.map.mapping instanceof THREE.UVMapping&&Ia(N,L,Y,M,f,X,T.map.image,J.uvs[0].u,J.uvs[0].v,J.uvs[1].u,J.uvs[1].v,J.uvs[2].u,J.uvs[2].v);
|
|
|
+c(THREE.SubtractiveBlending)}if(ma)if(!T.wireframe&&T.shading==THREE.SmoothShading&&J.vertexNormalsWorld.length==3){da.r=ga.r=I.r=m.r;da.g=ga.g=I.g=m.g;da.b=ga.b=I.b=m.b;la(fa,J.v1.positionWorld,J.vertexNormalsWorld[0],da);la(fa,J.v2.positionWorld,J.vertexNormalsWorld[1],ga);la(fa,J.v3.positionWorld,J.vertexNormalsWorld[2],I);ca.r=(ga.r+I.r)*0.5;ca.g=(ga.g+I.g)*0.5;ca.b=(ga.b+I.b)*0.5;xa=Oa(da,ga,I,ca);Ia(N,L,Y,M,f,X,xa,0,0,1,0,0,1)}else{ta.r=m.r;ta.g=m.g;ta.b=m.b;la(fa,J.centroidWorld,J.normalWorld,
|
|
|
+ta);R.r=T.color.r*ta.r;R.g=T.color.g*ta.g;R.b=T.color.b*ta.b;R.updateStyleString();T.wireframe?K(R.__styleString,T.wireframeLinewidth):Na(R.__styleString)}else T.wireframe?K(T.color.__styleString,T.wireframeLinewidth):Na(T.color.__styleString)}else if(T instanceof THREE.MeshDepthMaterial){za=na.near;ea=na.far;da.r=da.g=da.b=1-S(O.positionScreen.z,za,ea);ga.r=ga.g=ga.b=1-S(oa.positionScreen.z,za,ea);I.r=I.g=I.b=1-S($.positionScreen.z,za,ea);ca.r=(ga.r+I.r)*0.5;ca.g=(ga.g+I.g)*0.5;ca.b=(ga.b+I.b)*0.5;
|
|
|
+xa=Oa(da,ga,I,ca);Ia(N,L,Y,M,f,X,xa,0,0,1,0,0,1)}else if(T instanceof THREE.MeshNormalMaterial){R.r=V(J.normalWorld.x);R.g=V(J.normalWorld.y);R.b=V(J.normalWorld.z);R.updateStyleString();T.wireframe?K(R.__styleString,T.wireframeLinewidth):Na(R.__styleString)}}}function K(O,oa){if(y!=O)l.strokeStyle=y=O;if(F!=oa)l.lineWidth=F=oa;l.stroke();Q.inflate(oa*2)}function Na(O){if(C!=O)l.fillStyle=C=O;l.fill()}function Ia(O,oa,$,J,T,fa,pa,sa,ua,Ra,La,Ka,Wa){var Ea,Sa;Ea=pa.width-1;Sa=pa.height-1;sa*=Ea;ua*=
|
|
|
+Sa;Ra*=Ea;La*=Sa;Ka*=Ea;Wa*=Sa;$-=O;J-=oa;T-=O;fa-=oa;Ra-=sa;La-=ua;Ka-=sa;Wa-=ua;Ea=Ra*Wa-Ka*La;if(Ea!=0){Sa=1/Ea;Ea=(Wa*$-La*T)*Sa;La=(Wa*J-La*fa)*Sa;$=(Ra*T-Ka*$)*Sa;J=(Ra*fa-Ka*J)*Sa;O=O-Ea*sa-$*ua;oa=oa-La*sa-J*ua;l.save();l.transform(Ea,La,$,J,O,oa);l.clip();l.drawImage(pa,0,0);l.restore()}}function Oa(O,oa,$,J){var T=~~(O.r*255),fa=~~(O.g*255);O=~~(O.b*255);var pa=~~(oa.r*255),sa=~~(oa.g*255);oa=~~(oa.b*255);var ua=~~($.r*255),Ra=~~($.g*255);$=~~($.b*255);var La=~~(J.r*255),Ka=~~(J.g*255);
|
|
|
+J=~~(J.b*255);P[0]=T<0?0:T>255?255:T;P[1]=fa<0?0:fa>255?255:fa;P[2]=O<0?0:O>255?255:O;P[4]=pa<0?0:pa>255?255:pa;P[5]=sa<0?0:sa>255?255:sa;P[6]=oa<0?0:oa>255?255:oa;P[8]=ua<0?0:ua>255?255:ua;P[9]=Ra<0?0:Ra>255?255:Ra;P[10]=$<0?0:$>255?255:$;P[12]=La<0?0:La>255?255:La;P[13]=Ka<0?0:Ka>255?255:Ka;P[14]=J<0?0:J>255?255:J;A.putImageData(D,0,0);E.drawImage(B,0,0);return U}function S(O,oa,$){O=(O-oa)/($-oa);return O*O*(3-2*O)}function V(O){O=(O+1)*0.5;return O<0?0:O>1?1:O}function W(O,oa){var $=oa.x-O.x,
|
|
|
+J=oa.y-O.y,T=1/Math.sqrt($*$+J*J);$*=T;J*=T;oa.x+=$;oa.y+=J;O.x-=$;O.y-=J}var ya,Ma,Fa,Ba,Ga,H,Ja,Ha;this.autoClear?this.clear():l.setTransform(1,0,0,-1,j,k);b=d.projectScene(ka,na,this.sortElements);(ma=ka.lights.length>0)&&wa(ka);ya=0;for(Ma=b.length;ya<Ma;ya++){Fa=b[ya];Q.empty();if(Fa instanceof THREE.RenderableParticle){w=Fa;w.x*=j;w.y*=k;Ba=0;for(Ga=Fa.materials.length;Ba<Ga;Ba++)Ca(w,Fa,Fa.materials[Ba],ka)}else if(Fa instanceof THREE.RenderableLine){w=Fa.v1;G=Fa.v2;w.positionScreen.x*=j;w.positionScreen.y*=
|
|
|
+k;G.positionScreen.x*=j;G.positionScreen.y*=k;Q.addPoint(w.positionScreen.x,w.positionScreen.y);Q.addPoint(G.positionScreen.x,G.positionScreen.y);if(qa.instersects(Q)){Ba=0;for(Ga=Fa.materials.length;Ba<Ga;)Da(w,G,Fa,Fa.materials[Ba++],ka)}}else if(Fa instanceof THREE.RenderableFace3){w=Fa.v1;G=Fa.v2;x=Fa.v3;w.positionScreen.x*=j;w.positionScreen.y*=k;G.positionScreen.x*=j;G.positionScreen.y*=k;x.positionScreen.x*=j;x.positionScreen.y*=k;if(Fa.overdraw){W(w.positionScreen,G.positionScreen);W(G.positionScreen,
|
|
|
+x.positionScreen);W(x.positionScreen,w.positionScreen)}Q.add3Points(w.positionScreen.x,w.positionScreen.y,G.positionScreen.x,G.positionScreen.y,x.positionScreen.x,x.positionScreen.y);if(qa.instersects(Q)){Ba=0;for(Ga=Fa.meshMaterials.length;Ba<Ga;){Ha=Fa.meshMaterials[Ba++];if(Ha instanceof THREE.MeshFaceMaterial){H=0;for(Ja=Fa.faceMaterials.length;H<Ja;)(Ha=Fa.faceMaterials[H++])&&Pa(w,G,x,Fa,Ha,ka)}else Pa(w,G,x,Fa,Ha,ka)}}}ra.addRectangle(Q)}l.setTransform(1,0,0,1,0,0)}};
|
|
|
+THREE.SVGRenderer=function(){function a(ja,ha,va){var Aa,ia,aa,qa;Aa=0;for(ia=ja.lights.length;Aa<ia;Aa++){aa=ja.lights[Aa];if(aa instanceof THREE.DirectionalLight){qa=ha.normalWorld.dot(aa.position)*aa.intensity;if(qa>0){va.r+=aa.color.r*qa;va.g+=aa.color.g*qa;va.b+=aa.color.b*qa}}else if(aa instanceof THREE.PointLight){X.sub(aa.position,ha.centroidWorld);X.normalize();qa=ha.normalWorld.dot(X)*aa.intensity;if(qa>0){va.r+=aa.color.r*qa;va.g+=aa.color.g*qa;va.b+=aa.color.b*qa}}}}function c(ja,ha,va,
|
|
|
+Aa,ia,aa){I=d(ca++);I.setAttribute("d","M "+ja.positionScreen.x+" "+ja.positionScreen.y+" L "+ha.positionScreen.x+" "+ha.positionScreen.y+" L "+va.positionScreen.x+","+va.positionScreen.y+"z");if(ia instanceof THREE.MeshBasicMaterial)x.__styleString=ia.color.__styleString;else if(ia instanceof THREE.MeshLambertMaterial)if(G){N.r=L.r;N.g=L.g;N.b=L.b;a(aa,Aa,N);x.r=ia.color.r*N.r;x.g=ia.color.g*N.g;x.b=ia.color.b*N.b;x.updateStyleString()}else x.__styleString=ia.color.__styleString;else if(ia instanceof
|
|
|
+THREE.MeshDepthMaterial){f=1-ia.__2near/(ia.__farPlusNear-Aa.z*ia.__farMinusNear);x.setRGB(f,f,f)}else ia instanceof THREE.MeshNormalMaterial&&x.setRGB(e(Aa.normalWorld.x),e(Aa.normalWorld.y),e(Aa.normalWorld.z));ia.wireframe?I.setAttribute("style","fill: none; stroke: "+x.__styleString+"; stroke-width: "+ia.wireframeLinewidth+"; stroke-opacity: "+ia.opacity+"; stroke-linecap: "+ia.wireframeLinecap+"; stroke-linejoin: "+ia.wireframeLinejoin):I.setAttribute("style","fill: "+x.__styleString+"; fill-opacity: "+
|
|
|
+ia.opacity);j.appendChild(I)}function b(ja,ha,va,Aa,ia,aa,qa){I=d(ca++);I.setAttribute("d","M "+ja.positionScreen.x+" "+ja.positionScreen.y+" L "+ha.positionScreen.x+" "+ha.positionScreen.y+" L "+va.positionScreen.x+","+va.positionScreen.y+" L "+Aa.positionScreen.x+","+Aa.positionScreen.y+"z");if(aa instanceof THREE.MeshBasicMaterial)x.__styleString=aa.color.__styleString;else if(aa instanceof THREE.MeshLambertMaterial)if(G){N.r=L.r;N.g=L.g;N.b=L.b;a(qa,ia,N);x.r=aa.color.r*N.r;x.g=aa.color.g*N.g;
|
|
|
+x.b=aa.color.b*N.b;x.updateStyleString()}else x.__styleString=aa.color.__styleString;else if(aa instanceof THREE.MeshDepthMaterial){f=1-aa.__2near/(aa.__farPlusNear-ia.z*aa.__farMinusNear);x.setRGB(f,f,f)}else aa instanceof THREE.MeshNormalMaterial&&x.setRGB(e(ia.normalWorld.x),e(ia.normalWorld.y),e(ia.normalWorld.z));aa.wireframe?I.setAttribute("style","fill: none; stroke: "+x.__styleString+"; stroke-width: "+aa.wireframeLinewidth+"; stroke-opacity: "+aa.opacity+"; stroke-linecap: "+aa.wireframeLinecap+
|
|
|
+"; stroke-linejoin: "+aa.wireframeLinejoin):I.setAttribute("style","fill: "+x.__styleString+"; fill-opacity: "+aa.opacity);j.appendChild(I)}function d(ja){if(R[ja]==null){R[ja]=document.createElementNS("http://www.w3.org/2000/svg","path");xa==0&&R[ja].setAttribute("shape-rendering","crispEdges")}return R[ja]}function e(ja){return ja<0?Math.min((1+ja)*0.5,0.5):0.5+Math.min(ja*0.5,0.5)}var g=null,h=new THREE.Projector,j=document.createElementNS("http://www.w3.org/2000/svg","svg"),k,l,o,v,u,t,y,C,F=
|
|
|
+new THREE.Rectangle,w=new THREE.Rectangle,G=!1,x=new THREE.Color(16777215),N=new THREE.Color(16777215),L=new THREE.Color(0),Y=new THREE.Color(0),M=new THREE.Color(0),f,X=new THREE.Vector3,R=[],da=[],ga=[],I,ca,za,ea,xa=1;this.domElement=j;this.autoClear=!0;this.sortObjects=!0;this.sortElements=!0;this.setQuality=function(ja){switch(ja){case "high":xa=1;break;case "low":xa=0}};this.setSize=function(ja,ha){k=ja;l=ha;o=k/2;v=l/2;j.setAttribute("viewBox",-o+" "+-v+" "+k+" "+l);j.setAttribute("width",
|
|
|
+k);j.setAttribute("height",l);F.set(-o,-v,o,v)};this.clear=function(){for(;j.childNodes.length>0;)j.removeChild(j.childNodes[0])};this.render=function(ja,ha){var va,Aa,ia,aa,qa,ra,Q,ma;this.autoClear&&this.clear();g=h.projectScene(ja,ha,this.sortElements);ea=za=ca=0;if(G=ja.lights.length>0){Q=ja.lights;L.setRGB(0,0,0);Y.setRGB(0,0,0);M.setRGB(0,0,0);va=0;for(Aa=Q.length;va<Aa;va++){ia=Q[va];aa=ia.color;if(ia instanceof THREE.AmbientLight){L.r+=aa.r;L.g+=aa.g;L.b+=aa.b}else if(ia instanceof THREE.DirectionalLight){Y.r+=
|
|
|
+aa.r;Y.g+=aa.g;Y.b+=aa.b}else if(ia instanceof THREE.PointLight){M.r+=aa.r;M.g+=aa.g;M.b+=aa.b}}}va=0;for(Aa=g.length;va<Aa;va++){Q=g[va];w.empty();if(Q instanceof THREE.RenderableParticle){u=Q;u.x*=o;u.y*=-v;ia=0;for(aa=Q.materials.length;ia<aa;ia++)if(ma=Q.materials[ia]){qa=u;ra=Q;var ta=za++;if(da[ta]==null){da[ta]=document.createElementNS("http://www.w3.org/2000/svg","circle");xa==0&&da[ta].setAttribute("shape-rendering","crispEdges")}I=da[ta];I.setAttribute("cx",qa.x);I.setAttribute("cy",qa.y);
|
|
|
+I.setAttribute("r",ra.scale.x*o);if(ma instanceof THREE.ParticleCircleMaterial){if(G){N.r=L.r+Y.r+M.r;N.g=L.g+Y.g+M.g;N.b=L.b+Y.b+M.b;x.r=ma.color.r*N.r;x.g=ma.color.g*N.g;x.b=ma.color.b*N.b;x.updateStyleString()}else x=ma.color;I.setAttribute("style","fill: "+x.__styleString)}j.appendChild(I)}}else if(Q instanceof THREE.RenderableLine){u=Q.v1;t=Q.v2;u.positionScreen.x*=o;u.positionScreen.y*=-v;t.positionScreen.x*=o;t.positionScreen.y*=-v;w.addPoint(u.positionScreen.x,u.positionScreen.y);w.addPoint(t.positionScreen.x,
|
|
|
+t.positionScreen.y);if(F.instersects(w)){ia=0;for(aa=Q.materials.length;ia<aa;)if(ma=Q.materials[ia++]){qa=u;ra=t;ta=ea++;if(ga[ta]==null){ga[ta]=document.createElementNS("http://www.w3.org/2000/svg","line");xa==0&&ga[ta].setAttribute("shape-rendering","crispEdges")}I=ga[ta];I.setAttribute("x1",qa.positionScreen.x);I.setAttribute("y1",qa.positionScreen.y);I.setAttribute("x2",ra.positionScreen.x);I.setAttribute("y2",ra.positionScreen.y);if(ma instanceof THREE.LineBasicMaterial){x.__styleString=ma.color.__styleString;
|
|
|
+I.setAttribute("style","fill: none; stroke: "+x.__styleString+"; stroke-width: "+ma.linewidth+"; stroke-opacity: "+ma.opacity+"; stroke-linecap: "+ma.linecap+"; stroke-linejoin: "+ma.linejoin);j.appendChild(I)}}}}else if(Q instanceof THREE.RenderableFace3){u=Q.v1;t=Q.v2;y=Q.v3;u.positionScreen.x*=o;u.positionScreen.y*=-v;t.positionScreen.x*=o;t.positionScreen.y*=-v;y.positionScreen.x*=o;y.positionScreen.y*=-v;w.addPoint(u.positionScreen.x,u.positionScreen.y);w.addPoint(t.positionScreen.x,t.positionScreen.y);
|
|
|
+w.addPoint(y.positionScreen.x,y.positionScreen.y);if(F.instersects(w)){ia=0;for(aa=Q.meshMaterials.length;ia<aa;){ma=Q.meshMaterials[ia++];if(ma instanceof THREE.MeshFaceMaterial){qa=0;for(ra=Q.faceMaterials.length;qa<ra;)(ma=Q.faceMaterials[qa++])&&c(u,t,y,Q,ma,ja)}else ma&&c(u,t,y,Q,ma,ja)}}}else if(Q instanceof THREE.RenderableFace4){u=Q.v1;t=Q.v2;y=Q.v3;C=Q.v4;u.positionScreen.x*=o;u.positionScreen.y*=-v;t.positionScreen.x*=o;t.positionScreen.y*=-v;y.positionScreen.x*=o;y.positionScreen.y*=-v;
|
|
|
+C.positionScreen.x*=o;C.positionScreen.y*=-v;w.addPoint(u.positionScreen.x,u.positionScreen.y);w.addPoint(t.positionScreen.x,t.positionScreen.y);w.addPoint(y.positionScreen.x,y.positionScreen.y);w.addPoint(C.positionScreen.x,C.positionScreen.y);if(F.instersects(w)){ia=0;for(aa=Q.meshMaterials.length;ia<aa;){ma=Q.meshMaterials[ia++];if(ma instanceof THREE.MeshFaceMaterial){qa=0;for(ra=Q.faceMaterials.length;qa<ra;)(ma=Q.faceMaterials[qa++])&&b(u,t,y,C,Q,ma,ja)}else ma&&b(u,t,y,C,Q,ma,ja)}}}}}};
|
|
|
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",
|
|
@@ -225,85 +225,85 @@ THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,
|
|
|
THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.skinning_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,"}"].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(a){function c(m,z,q){var n,p,B,A=m.vertices,D=A.length,O=m.colors,X=O.length,E=m.__vertexArray,aa=m.__colorArray,ka=m.__sortArray,na=m.__dirtyVertices,wa=m.__dirtyColors;if(q.sortParticles){Aa.multiplySelf(q.matrixWorld);for(n=0;n<D;n++){p=A[n].position;qa.copy(p);Aa.multiplyVector3(qa);ka[n]=[qa.z,n]}ka.sort(function(la,Ca){return Ca[0]-la[0]});for(n=0;n<D;n++){p=A[ka[n][1]].position;B=n*3;E[B]=p.x;E[B+1]=p.y;E[B+2]=p.z}for(n=0;n<X;n++){B=n*3;color=O[ka[n][1]];aa[B]=
|
|
|
-color.r;aa[B+1]=color.g;aa[B+2]=color.b}}else{if(na)for(n=0;n<D;n++){p=A[n].position;B=n*3;E[B]=p.x;E[B+1]=p.y;E[B+2]=p.z}if(wa)for(n=0;n<X;n++){color=O[n];B=n*3;aa[B]=color.r;aa[B+1]=color.g;aa[B+2]=color.b}}if(na||q.sortParticles){f.bindBuffer(f.ARRAY_BUFFER,m.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,E,z)}if(wa||q.sortParticles){f.bindBuffer(f.ARRAY_BUFFER,m.__webGLColorBuffer);f.bufferData(f.ARRAY_BUFFER,aa,z)}}function b(m,z){m.fragmentShader=z.fragmentShader;m.vertexShader=z.vertexShader;
|
|
|
-m.uniforms=Uniforms.clone(z.uniforms)}function d(m,z,q,n,p){n.program||da.initMaterial(n,z,q,p);var B=n.program,A=B.uniforms,D=n.uniforms;if(B!=W){f.useProgram(B);W=B}f.uniformMatrix4fv(A.projectionMatrix,!1,ia);if(q&&(n instanceof THREE.MeshBasicMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshPhongMaterial||n instanceof THREE.LineBasicMaterial||n instanceof THREE.ParticleBasicMaterial)){D.fogColor.value.setHex(q.color.hex);if(q instanceof THREE.Fog){D.fogNear.value=q.near;
|
|
|
-D.fogFar.value=q.far}else if(q instanceof THREE.FogExp2)D.fogDensity.value=q.density}if(n instanceof THREE.MeshPhongMaterial||n instanceof THREE.MeshLambertMaterial){var O,X,E=0,aa=0,ka=0,na,wa,la,Ca=ra,Da=Ca.directional.colors,Pa=Ca.directional.positions,K=Ca.point.colors,Na=Ca.point.positions,Ia=0,Oa=0;q=X=X=0;for(O=z.length;q<O;q++){X=z[q];na=X.color;wa=X.position;la=X.intensity;if(X instanceof THREE.AmbientLight){E+=na.r;aa+=na.g;ka+=na.b}else if(X instanceof THREE.DirectionalLight){X=Ia*3;Da[X]=
|
|
|
-na.r*la;Da[X+1]=na.g*la;Da[X+2]=na.b*la;Pa[X]=wa.x;Pa[X+1]=wa.y;Pa[X+2]=wa.z;Ia+=1}else if(X instanceof THREE.PointLight){X=Oa*3;K[X]=na.r*la;K[X+1]=na.g*la;K[X+2]=na.b*la;Na[X]=wa.x;Na[X+1]=wa.y;Na[X+2]=wa.z;Oa+=1}}for(q=Ia*3;q<Da.length;q++)Da[q]=0;for(q=Oa*3;q<K.length;q++)K[q]=0;Ca.point.length=Oa;Ca.directional.length=Ia;Ca.ambient[0]=E;Ca.ambient[1]=aa;Ca.ambient[2]=ka;z=ra;D.enableLighting.value=z.directional.length+z.point.length;D.ambientLightColor.value=z.ambient;D.directionalLightColor.value=
|
|
|
+THREE.WebGLRenderer=function(a){function c(m,z,p){var n,q,B,A=m.vertices,D=A.length,P=m.colors,U=P.length,E=m.__vertexArray,Z=m.__colorArray,ka=m.__sortArray,na=m.__dirtyVertices,wa=m.__dirtyColors;if(p.sortParticles){Aa.multiplySelf(p.matrixWorld);for(n=0;n<D;n++){q=A[n].position;qa.copy(q);Aa.multiplyVector3(qa);ka[n]=[qa.z,n]}ka.sort(function(la,Ca){return Ca[0]-la[0]});for(n=0;n<D;n++){q=A[ka[n][1]].position;B=n*3;E[B]=q.x;E[B+1]=q.y;E[B+2]=q.z}for(n=0;n<U;n++){B=n*3;color=P[ka[n][1]];Z[B]=color.r;
|
|
|
+Z[B+1]=color.g;Z[B+2]=color.b}}else{if(na)for(n=0;n<D;n++){q=A[n].position;B=n*3;E[B]=q.x;E[B+1]=q.y;E[B+2]=q.z}if(wa)for(n=0;n<U;n++){color=P[n];B=n*3;Z[B]=color.r;Z[B+1]=color.g;Z[B+2]=color.b}}if(na||p.sortParticles){f.bindBuffer(f.ARRAY_BUFFER,m.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,E,z)}if(wa||p.sortParticles){f.bindBuffer(f.ARRAY_BUFFER,m.__webGLColorBuffer);f.bufferData(f.ARRAY_BUFFER,Z,z)}}function b(m,z){m.fragmentShader=z.fragmentShader;m.vertexShader=z.vertexShader;m.uniforms=
|
|
|
+Uniforms.clone(z.uniforms)}function d(m,z,p,n,q){n.program||da.initMaterial(n,z,p,q);var B=n.program,A=B.uniforms,D=n.uniforms;if(B!=X){f.useProgram(B);X=B}f.uniformMatrix4fv(A.projectionMatrix,!1,ia);if(p&&(n instanceof THREE.MeshBasicMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshPhongMaterial||n instanceof THREE.LineBasicMaterial||n instanceof THREE.ParticleBasicMaterial)){D.fogColor.value.setHex(p.color.hex);if(p instanceof THREE.Fog){D.fogNear.value=p.near;D.fogFar.value=
|
|
|
+p.far}else if(p instanceof THREE.FogExp2)D.fogDensity.value=p.density}if(n instanceof THREE.MeshPhongMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshShaderMaterial){var P,U,E=0,Z=0,ka=0,na,wa,la,Ca=ra,Da=Ca.directional.colors,Pa=Ca.directional.positions,K=Ca.point.colors,Na=Ca.point.positions,Ia=0,Oa=0;p=U=U=0;for(P=z.length;p<P;p++){U=z[p];na=U.color;wa=U.position;la=U.intensity;if(U instanceof THREE.AmbientLight){E+=na.r;Z+=na.g;ka+=na.b}else if(U instanceof THREE.DirectionalLight){U=
|
|
|
+Ia*3;Da[U]=na.r*la;Da[U+1]=na.g*la;Da[U+2]=na.b*la;Pa[U]=wa.x;Pa[U+1]=wa.y;Pa[U+2]=wa.z;Ia+=1}else if(U instanceof THREE.PointLight){U=Oa*3;K[U]=na.r*la;K[U+1]=na.g*la;K[U+2]=na.b*la;Na[U]=wa.x;Na[U+1]=wa.y;Na[U+2]=wa.z;Oa+=1}}for(p=Ia*3;p<Da.length;p++)Da[p]=0;for(p=Oa*3;p<K.length;p++)K[p]=0;Ca.point.length=Oa;Ca.directional.length=Ia;Ca.ambient[0]=E;Ca.ambient[1]=Z;Ca.ambient[2]=ka;z=ra;D.enableLighting.value=z.directional.length+z.point.length;D.ambientLightColor.value=z.ambient;D.directionalLightColor.value=
|
|
|
z.directional.colors;D.directionalLightDirection.value=z.directional.positions;D.pointLightColor.value=z.point.colors;D.pointLightPosition.value=z.point.positions}if(n instanceof THREE.MeshBasicMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshPhongMaterial){D.diffuse.value.setRGB(n.color.r*n.opacity,n.color.g*n.opacity,n.color.b*n.opacity);D.opacity.value=n.opacity;D.map.texture=n.map;D.lightMap.texture=n.lightMap;D.envMap.texture=n.envMap;D.reflectivity.value=n.reflectivity;
|
|
|
D.refractionRatio.value=n.refractionRatio;D.combine.value=n.combine;D.useRefract.value=n.envMap&&n.envMap.mapping instanceof THREE.CubeRefractionMapping}if(n instanceof THREE.LineBasicMaterial){D.diffuse.value.setRGB(n.color.r*n.opacity,n.color.g*n.opacity,n.color.b*n.opacity);D.opacity.value=n.opacity}else if(n instanceof THREE.ParticleBasicMaterial){D.psColor.value.setRGB(n.color.r*n.opacity,n.color.g*n.opacity,n.color.b*n.opacity);D.opacity.value=n.opacity;D.size.value=n.size;D.scale.value=M.height/
|
|
|
-2;D.map.texture=n.map}else if(n instanceof THREE.MeshPhongMaterial){D.ambient.value.setRGB(n.ambient.r,n.ambient.g,n.ambient.b);D.specular.value.setRGB(n.specular.r,n.specular.g,n.specular.b);D.shininess.value=n.shininess}else if(n instanceof THREE.MeshDepthMaterial){D.mNear.value=m.near;D.mFar.value=m.far;D.opacity.value=n.opacity}else if(n instanceof THREE.MeshNormalMaterial)D.opacity.value=n.opacity;for(var S in D)if(E=B.uniforms[S]){q=D[S];O=q.type;z=q.value;if(O=="i")f.uniform1i(E,z);else if(O==
|
|
|
-"f")f.uniform1f(E,z);else if(O=="fv1")f.uniform1fv(E,z);else if(O=="fv")f.uniform3fv(E,z);else if(O=="v2")f.uniform2f(E,z.x,z.y);else if(O=="v3")f.uniform3f(E,z.x,z.y,z.z);else if(O=="c")f.uniform3f(E,z.r,z.g,z.b);else if(O=="t"){f.uniform1i(E,z);if(q=q.texture)if(q.image instanceof Array&&q.image.length==6){if(q.image.length==6){if(q.needsUpdate){if(q.__wasSetOnce){f.bindTexture(f.TEXTURE_CUBE_MAP,q.image.__webGLTextureCube);for(O=0;O<6;++O)f.texSubImage2D(f.TEXTURE_CUBE_MAP_POSITIVE_X+O,0,0,0,f.RGBA,
|
|
|
-f.UNSIGNED_BYTE,q.image[O])}else{q.image.__webGLTextureCube=f.createTexture();f.bindTexture(f.TEXTURE_CUBE_MAP,q.image.__webGLTextureCube);for(O=0;O<6;++O)f.texImage2D(f.TEXTURE_CUBE_MAP_POSITIVE_X+O,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,q.image[O]);q.__wasSetOnce=!0}G(f.TEXTURE_CUBE_MAP,q,q.image[0]);f.bindTexture(f.TEXTURE_CUBE_MAP,null);q.needsUpdate=!1}f.activeTexture(f.TEXTURE0+z);f.bindTexture(f.TEXTURE_CUBE_MAP,q.image.__webGLTextureCube)}}else{if(q.needsUpdate){if(q.__wasSetOnce){f.bindTexture(f.TEXTURE_2D,
|
|
|
-q.__webGLTexture);f.texSubImage2D(f.TEXTURE_2D,0,0,0,f.RGBA,f.UNSIGNED_BYTE,q.image)}else{q.__webGLTexture=f.createTexture();f.bindTexture(f.TEXTURE_2D,q.__webGLTexture);f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,q.image);q.__wasSetOnce=!0}G(f.TEXTURE_2D,q,q.image);f.bindTexture(f.TEXTURE_2D,null);q.needsUpdate=!1}f.activeTexture(f.TEXTURE0+z);f.bindTexture(f.TEXTURE_2D,q.__webGLTexture)}}}f.uniformMatrix4fv(A.modelViewMatrix,!1,p._modelViewMatrixArray);f.uniformMatrix3fv(A.normalMatrix,
|
|
|
-!1,p._normalMatrixArray);(n instanceof THREE.MeshShaderMaterial||n instanceof THREE.MeshPhongMaterial||n.envMap)&&f.uniform3f(A.cameraPosition,m.position.x,m.position.y,m.position.z);(n instanceof THREE.MeshShaderMaterial||n.envMap||n.skinning)&&f.uniformMatrix4fv(A.objectMatrix,!1,p._objectMatrixArray);(n instanceof THREE.MeshPhongMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshShaderMaterial||n.skinning)&&f.uniformMatrix4fv(A.viewMatrix,!1,$);if(n.skinning){f.uniformMatrix4fv(A.cameraInverseMatrix,
|
|
|
-!1,$);f.uniformMatrix4fv(A.boneGlobalMatrices,!1,p.boneMatrices)}return B}function e(m,z,q,n,p,B){if(n.opacity!=0){m=d(m,z,q,n,B).attributes;if(n.morphTargets){B.morphTargetBase!==-1?f.bindBuffer(f.ARRAY_BUFFER,p.__webGLMorphTargetsBuffers[B.morphTargetBase]):f.bindBuffer(f.ARRAY_BUFFER,p.__webGLVertexBuffer);f.vertexAttribPointer(m.position,3,f.FLOAT,!1,0,0);z=[];q=-1;var A=0,D=B.morphTargetInfluences,O,X=D.length,E=0;for(B.morphTargetBase!==-1&&(z[B.morphTargetBase]=!0);E<n.numSupportedMorphTargets;){for(O=
|
|
|
-0;O<X;O++)if(!z[O]&&D[O]>q){A=O;q=D[A]}f.bindBuffer(f.ARRAY_BUFFER,p.__webGLMorphTargetsBuffers[A]);f.vertexAttribPointer(m["morphTarget"+E],3,f.FLOAT,!1,0,0);B.__webGLMorphTargetInfluences[E]=q;z[A]=1;q=-1;E++}f.uniform1fv(n.program.uniforms.morphTargetInfluences,B.__webGLMorphTargetInfluences)}else{f.bindBuffer(f.ARRAY_BUFFER,p.__webGLVertexBuffer);f.vertexAttribPointer(m.position,3,f.FLOAT,!1,0,0)}if(m.color>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLColorBuffer);f.vertexAttribPointer(m.color,3,
|
|
|
-f.FLOAT,!1,0,0)}if(m.normal>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLNormalBuffer);f.vertexAttribPointer(m.normal,3,f.FLOAT,!1,0,0)}if(m.tangent>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLTangentBuffer);f.vertexAttribPointer(m.tangent,4,f.FLOAT,!1,0,0)}if(m.uv>=0)if(p.__webGLUVBuffer){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLUVBuffer);f.vertexAttribPointer(m.uv,2,f.FLOAT,!1,0,0);f.enableVertexAttribArray(m.uv)}else f.disableVertexAttribArray(m.uv);if(m.uv2>=0)if(p.__webGLUV2Buffer){f.bindBuffer(f.ARRAY_BUFFER,
|
|
|
-p.__webGLUV2Buffer);f.vertexAttribPointer(m.uv2,2,f.FLOAT,!1,0,0);f.enableVertexAttribArray(m.uv2)}else f.disableVertexAttribArray(m.uv2);if(n.skinning&&m.skinVertexA>=0&&m.skinVertexB>=0&&m.skinIndex>=0&&m.skinWeight>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinVertexABuffer);f.vertexAttribPointer(m.skinVertexA,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinVertexBBuffer);f.vertexAttribPointer(m.skinVertexB,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinIndicesBuffer);f.vertexAttribPointer(m.skinIndex,
|
|
|
-4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinWeightsBuffer);f.vertexAttribPointer(m.skinWeight,4,f.FLOAT,!1,0,0)}if(B instanceof THREE.Mesh)if(n.wireframe){f.lineWidth(n.wireframeLinewidth);f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,p.__webGLLineBuffer);f.drawElements(f.LINES,p.__webGLLineCount,f.UNSIGNED_SHORT,0)}else{f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,p.__webGLFaceBuffer);f.drawElements(f.TRIANGLES,p.__webGLFaceCount,f.UNSIGNED_SHORT,0)}else if(B instanceof THREE.Line){B=B.type==THREE.LineStrip?
|
|
|
-f.LINE_STRIP:f.LINES;f.lineWidth(n.linewidth);f.drawArrays(B,0,p.__webGLLineCount)}else if(B instanceof THREE.ParticleSystem)f.drawArrays(f.POINTS,0,p.__webGLParticleCount);else B instanceof THREE.Ribbon&&f.drawArrays(f.TRIANGLE_STRIP,0,p.__webGLVertexCount)}}function g(m,z){if(!m.__webGLVertexBuffer)m.__webGLVertexBuffer=f.createBuffer();if(!m.__webGLNormalBuffer)m.__webGLNormalBuffer=f.createBuffer();if(m.hasPos){f.bindBuffer(f.ARRAY_BUFFER,m.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,m.positionArray,
|
|
|
-f.DYNAMIC_DRAW);f.enableVertexAttribArray(z.attributes.position);f.vertexAttribPointer(z.attributes.position,3,f.FLOAT,!1,0,0)}if(m.hasNormal){f.bindBuffer(f.ARRAY_BUFFER,m.__webGLNormalBuffer);f.bufferData(f.ARRAY_BUFFER,m.normalArray,f.DYNAMIC_DRAW);f.enableVertexAttribArray(z.attributes.normal);f.vertexAttribPointer(z.attributes.normal,3,f.FLOAT,!1,0,0)}f.drawArrays(f.TRIANGLES,0,m.count);m.count=0}function h(m){if(ga!=m.doubleSided){m.doubleSided?f.disable(f.CULL_FACE):f.enable(f.CULL_FACE);ga=
|
|
|
-m.doubleSided}if(I!=m.flipSided){m.flipSided?f.frontFace(f.CW):f.frontFace(f.CCW);I=m.flipSided}}function j(m){if(za!=m){m?f.enable(f.DEPTH_TEST):f.disable(f.DEPTH_TEST);za=m}}function k(m){va[0].set(m.n41-m.n11,m.n42-m.n12,m.n43-m.n13,m.n44-m.n14);va[1].set(m.n41+m.n11,m.n42+m.n12,m.n43+m.n13,m.n44+m.n14);va[2].set(m.n41+m.n21,m.n42+m.n22,m.n43+m.n23,m.n44+m.n24);va[3].set(m.n41-m.n21,m.n42-m.n22,m.n43-m.n23,m.n44-m.n24);va[4].set(m.n41-m.n31,m.n42-m.n32,m.n43-m.n33,m.n44-m.n34);va[5].set(m.n41+
|
|
|
-m.n31,m.n42+m.n32,m.n43+m.n33,m.n44+m.n34);var z;for(m=0;m<6;m++){z=va[m];z.divideScalar(Math.sqrt(z.x*z.x+z.y*z.y+z.z*z.z))}}function l(m){for(var z=m.matrixWorld,q=-m.geometry.boundingSphere.radius*Math.max(m.scale.x,Math.max(m.scale.y,m.scale.z)),n=0;n<6;n++){m=va[n].x*z.n14+va[n].y*z.n24+va[n].z*z.n34+va[n].w;if(m<=q)return!1}return!0}function o(m,z){m.list[m.count]=z;m.count+=1}function v(m){var z,q,n=m.object,p=m.opaque,B=m.transparent;B.count=0;m=p.count=0;for(z=n.materials.length;m<z;m++){q=
|
|
|
-n.materials[m];q.opacity&&q.opacity<1||q.blending!=THREE.NormalBlending?o(B,q):o(p,q)}}function u(m){var z,q,n,p,B=m.object,A=m.buffer,D=m.opaque,O=m.transparent;O.count=0;m=D.count=0;for(n=B.materials.length;m<n;m++){z=B.materials[m];if(z instanceof THREE.MeshFaceMaterial){z=0;for(q=A.materials.length;z<q;z++)(p=A.materials[z])&&(p.opacity&&p.opacity<1||p.blending!=THREE.NormalBlending?o(O,p):o(D,p))}else{p=z;p.opacity&&p.opacity<1||p.blending!=THREE.NormalBlending?o(O,p):o(D,p)}}}function t(m,z){return z.z-
|
|
|
-m.z}function y(m,z){m._modelViewMatrix.multiplyToArray(z.matrixWorldInverse,m.matrixWorld,m._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(m._modelViewMatrix).transposeIntoArray(m._normalMatrixArray)}function C(m){function z(ka){var na=[];q=0;for(n=ka.length;q<n;q++)ka[q]==undefined?na.push("undefined"):na.push(ka[q].id);return na.join("_")}var q,n,p,B,A,D,O,X,E={},aa=m.morphTargets!==undefined?m.morphTargets.length:0;m.geometryGroups={};p=0;for(B=m.faces.length;p<B;p++){A=m.faces[p];D=A.materials;
|
|
|
-O=z(D);E[O]==undefined&&(E[O]={hash:O,counter:0});X=E[O].hash+"_"+E[O].counter;m.geometryGroups[X]==undefined&&(m.geometryGroups[X]={faces:[],materials:D,vertices:0,numMorphTargets:aa});A=A instanceof THREE.Face3?3:4;if(m.geometryGroups[X].vertices+A>65535){E[O].counter+=1;X=E[O].hash+"_"+E[O].counter;m.geometryGroups[X]==undefined&&(m.geometryGroups[X]={faces:[],materials:D,vertices:0,numMorphTargets:aa})}m.geometryGroups[X].faces.push(p);m.geometryGroups[X].vertices+=A}}function F(m,z,q){m.push({buffer:z,
|
|
|
-object:q,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function w(m){if(m!=ca){switch(m){case THREE.AdditiveBlending:f.blendEquation(f.FUNC_ADD);f.blendFunc(f.ONE,f.ONE);break;case THREE.SubtractiveBlending:f.blendFunc(f.DST_COLOR,f.ZERO);break;case THREE.BillboardBlending:f.blendEquation(f.FUNC_ADD);f.blendFunc(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA);break;case THREE.ReverseSubtractiveBlending:f.blendEquation(f.FUNC_REVERSE_SUBTRACT);f.blendFunc(f.ONE,f.ONE);break;default:f.blendEquation(f.FUNC_ADD);
|
|
|
-f.blendFunc(f.ONE,f.ONE_MINUS_SRC_ALPHA)}ca=m}}function G(m,z,q){if((q.width&q.width-1)==0&&(q.height&q.height-1)==0){f.texParameteri(m,f.TEXTURE_WRAP_S,Y(z.wrapS));f.texParameteri(m,f.TEXTURE_WRAP_T,Y(z.wrapT));f.texParameteri(m,f.TEXTURE_MAG_FILTER,Y(z.magFilter));f.texParameteri(m,f.TEXTURE_MIN_FILTER,Y(z.minFilter));f.generateMipmap(m)}else{f.texParameteri(m,f.TEXTURE_WRAP_S,f.CLAMP_TO_EDGE);f.texParameteri(m,f.TEXTURE_WRAP_T,f.CLAMP_TO_EDGE);f.texParameteri(m,f.TEXTURE_MAG_FILTER,L(z.magFilter));
|
|
|
-f.texParameteri(m,f.TEXTURE_MIN_FILTER,L(z.minFilter))}}function x(m){if(m&&!m.__webGLFramebuffer){m.__webGLFramebuffer=f.createFramebuffer();m.__webGLRenderbuffer=f.createRenderbuffer();m.__webGLTexture=f.createTexture();f.bindRenderbuffer(f.RENDERBUFFER,m.__webGLRenderbuffer);f.renderbufferStorage(f.RENDERBUFFER,f.DEPTH_COMPONENT16,m.width,m.height);f.bindTexture(f.TEXTURE_2D,m.__webGLTexture);f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,Y(m.wrapS));f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,
|
|
|
-Y(m.wrapT));f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,Y(m.magFilter));f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,Y(m.minFilter));f.texImage2D(f.TEXTURE_2D,0,Y(m.format),m.width,m.height,0,Y(m.format),Y(m.type),null);f.bindFramebuffer(f.FRAMEBUFFER,m.__webGLFramebuffer);f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_2D,m.__webGLTexture,0);f.framebufferRenderbuffer(f.FRAMEBUFFER,f.DEPTH_ATTACHMENT,f.RENDERBUFFER,m.__webGLRenderbuffer);f.bindTexture(f.TEXTURE_2D,null);
|
|
|
-f.bindRenderbuffer(f.RENDERBUFFER,null);f.bindFramebuffer(f.FRAMEBUFFER,null)}var z,q;if(m){z=m.__webGLFramebuffer;q=m.width;m=m.height}else{z=null;q=ja;m=ha}if(z!=R){f.bindFramebuffer(f.FRAMEBUFFER,z);f.viewport(ea,xa,q,m);R=z}}function N(m,z){var q;if(m=="fragment")q=f.createShader(f.FRAGMENT_SHADER);else m=="vertex"&&(q=f.createShader(f.VERTEX_SHADER));f.shaderSource(q,z);f.compileShader(q);if(!f.getShaderParameter(q,f.COMPILE_STATUS)){alert(f.getShaderInfoLog(q));return null}return q}function L(m){switch(m){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return f.NEAREST;
|
|
|
-case THREE.LinearFilter:case THREE.LinearMipMapNearestFilter:case THREE.LinearMipMapLinearFilter:return f.LINEAR}}function Y(m){switch(m){case THREE.RepeatWrapping:return f.REPEAT;case THREE.ClampToEdgeWrapping:return f.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return f.MIRRORED_REPEAT;case THREE.NearestFilter:return f.NEAREST;case THREE.NearestMipMapNearestFilter:return f.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return f.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return f.LINEAR;
|
|
|
-case THREE.LinearMipMapNearestFilter:return f.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return f.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return f.BYTE;case THREE.UnsignedByteType:return f.UNSIGNED_BYTE;case THREE.ShortType:return f.SHORT;case THREE.UnsignedShortType:return f.UNSIGNED_SHORT;case THREE.IntType:return f.INT;case THREE.UnsignedShortType:return f.UNSIGNED_INT;case THREE.FloatType:return f.FLOAT;case THREE.AlphaFormat:return f.ALPHA;case THREE.RGBFormat:return f.RGB;case THREE.RGBAFormat:return f.RGBA;
|
|
|
-case THREE.LuminanceFormat:return f.LUMINANCE;case THREE.LuminanceAlphaFormat:return f.LUMINANCE_ALPHA}return 0}var M=document.createElement("canvas"),f,W=null,R=null,da=this,ga=null,I=null,ca=null,za=null,ea=0,xa=0,ja=0,ha=0,va=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],Aa=new THREE.Matrix4,ia=new Float32Array(16),$=new Float32Array(16),qa=new THREE.Vector4,ra={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,
|
|
|
-colors:[],positions:[]}},Q=!0,ma=new THREE.Color(0),ta=0;if(a){if(a.antialias!==undefined)Q=a.antialias;a.clearColor!==undefined&&ma.setHex(a.clearColor);if(a.clearAlpha!==undefined)ta=a.clearAlpha}this.maxMorphTargets=8;this.domElement=M;this.autoClear=!0;this.sortObjects=!0;(function(m,z,q){try{if(!(f=M.getContext("experimental-webgl",{antialias:m})))throw"Error creating WebGL context.";}catch(n){console.error(n)}f.clearColor(0,0,0,1);f.clearDepth(1);f.enable(f.DEPTH_TEST);f.depthFunc(f.LEQUAL);
|
|
|
-f.frontFace(f.CCW);f.cullFace(f.BACK);f.enable(f.CULL_FACE);f.enable(f.BLEND);f.blendFunc(f.ONE,f.ONE_MINUS_SRC_ALPHA);f.clearColor(z.r,z.g,z.b,q);_cullEnabled=!0})(Q,ma,ta);this.context=f;this.setSize=function(m,z){M.width=m;M.height=z;this.setViewport(0,0,M.width,M.height)};this.setViewport=function(m,z,q,n){ea=m;xa=z;ja=q;ha=n;f.viewport(ea,xa,ja,ha)};this.setScissor=function(m,z,q,n){f.scissor(m,z,q,n)};this.enableScissorTest=function(m){m?f.enable(f.SCISSOR_TEST):f.disable(f.SCISSOR_TEST)};this.enableDepthBufferWrite=
|
|
|
-function(m){f.depthMask(m)};this.setClearColorHex=function(m,z){var q=new THREE.Color(m);f.clearColor(q.r,q.g,q.b,z)};this.setClearColor=function(m,z){f.clearColor(m.r,m.g,m.b,z)};this.clear=function(){f.clear(f.COLOR_BUFFER_BIT|f.DEPTH_BUFFER_BIT)};this.initMaterial=function(m,z,q,n){var p,B,A;if(m instanceof THREE.MeshDepthMaterial)b(m,THREE.ShaderLib.depth);else if(m instanceof THREE.MeshNormalMaterial)b(m,THREE.ShaderLib.normal);else if(m instanceof THREE.MeshBasicMaterial)b(m,THREE.ShaderLib.basic);
|
|
|
-else if(m instanceof THREE.MeshLambertMaterial)b(m,THREE.ShaderLib.lambert);else if(m instanceof THREE.MeshPhongMaterial)b(m,THREE.ShaderLib.phong);else if(m instanceof THREE.LineBasicMaterial)b(m,THREE.ShaderLib.basic);else m instanceof THREE.ParticleBasicMaterial&&b(m,THREE.ShaderLib.particle_basic);var D,O,X,E;A=X=E=0;for(D=z.length;A<D;A++){O=z[A];O instanceof THREE.DirectionalLight&&X++;O instanceof THREE.PointLight&&E++}if(E+X<=4)z=X;else{z=Math.ceil(4*X/(E+X));E=4-z}A={directional:z,point:E};
|
|
|
-D=50;if(n!==undefined&&n instanceof THREE.SkinnedMesh)D=n.bones.length;E=m.fragmentShader;z=m.vertexShader;D={fog:q,map:m.map,envMap:m.envMap,lightMap:m.lightMap,vertexColors:m.vertexColors,skinning:m.skinning,morphTargets:m.morphTargets,maxDirLights:A.directional,maxPointLights:A.point,maxBones:D};q=f.createProgram();A=["#ifdef GL_ES\nprecision highp float;\n#endif","#define MAX_DIR_LIGHTS "+D.maxDirLights,"#define MAX_POINT_LIGHTS "+D.maxPointLights,D.fog?"#define USE_FOG":"",D.fog instanceof THREE.FogExp2?
|
|
|
-"#define FOG_EXP2":"",D.map?"#define USE_MAP":"",D.envMap?"#define USE_ENVMAP":"",D.lightMap?"#define USE_LIGHTMAP":"",D.vertexColors?"#define USE_COLOR":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");D=[f.getParameter(f.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+D.maxDirLights,"#define MAX_POINT_LIGHTS "+D.maxPointLights,"#define MAX_BONES "+D.maxBones,D.map?"#define USE_MAP":"",D.envMap?"#define USE_ENVMAP":"",D.lightMap?"#define USE_LIGHTMAP":
|
|
|
-"",D.vertexColors?"#define USE_COLOR":"",D.skinning?"#define USE_SKINNING":"",D.morphTargets?"#define USE_MORPHTARGETS":"",D.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 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\nattribute vec3 normal;\nattribute vec3 color;\nattribute vec2 uv;\nattribute vec2 uv2;\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n"].join("\n");
|
|
|
-f.attachShader(q,N("fragment",A+E));f.attachShader(q,N("vertex",D+z));f.linkProgram(q);f.getProgramParameter(q,f.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+f.getProgramParameter(q,f.VALIDATE_STATUS)+", gl error ["+f.getError()+"]");q.uniforms={};q.attributes={};m.program=q;q=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(p in m.uniforms)q.push(p);p=
|
|
|
-m.program;E=0;for(z=q.length;E<z;E++){A=q[E];p.uniforms[A]=f.getUniformLocation(p,A)}q=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(p=0;p<this.maxMorphTargets;p++)q.push("morphTarget"+p);for(B in m.attributes)q.push(B);B=m.program;p=q;q=0;for(E=p.length;q<E;q++){z=p[q];B.attributes[z]=f.getAttribLocation(B,z)}B=m.program.attributes;f.enableVertexAttribArray(B.position);B.color>=0&&f.enableVertexAttribArray(B.color);B.normal>=0&&f.enableVertexAttribArray(B.normal);
|
|
|
+2;D.map.texture=n.map}else if(n instanceof THREE.MeshPhongMaterial){D.ambient.value.setRGB(n.ambient.r,n.ambient.g,n.ambient.b);D.specular.value.setRGB(n.specular.r,n.specular.g,n.specular.b);D.shininess.value=n.shininess}else if(n instanceof THREE.MeshDepthMaterial){D.mNear.value=m.near;D.mFar.value=m.far;D.opacity.value=n.opacity}else if(n instanceof THREE.MeshNormalMaterial)D.opacity.value=n.opacity;for(var S in D)if(E=B.uniforms[S]){p=D[S];P=p.type;z=p.value;if(P=="i")f.uniform1i(E,z);else if(P==
|
|
|
+"f")f.uniform1f(E,z);else if(P=="fv1")f.uniform1fv(E,z);else if(P=="fv")f.uniform3fv(E,z);else if(P=="v2")f.uniform2f(E,z.x,z.y);else if(P=="v3")f.uniform3f(E,z.x,z.y,z.z);else if(P=="c")f.uniform3f(E,z.r,z.g,z.b);else if(P=="t"){f.uniform1i(E,z);if(p=p.texture)if(p.image instanceof Array&&p.image.length==6){if(p.image.length==6){if(p.needsUpdate){if(p.__wasSetOnce){f.bindTexture(f.TEXTURE_CUBE_MAP,p.image.__webGLTextureCube);for(P=0;P<6;++P)f.texSubImage2D(f.TEXTURE_CUBE_MAP_POSITIVE_X+P,0,0,0,f.RGBA,
|
|
|
+f.UNSIGNED_BYTE,p.image[P])}else{p.image.__webGLTextureCube=f.createTexture();f.bindTexture(f.TEXTURE_CUBE_MAP,p.image.__webGLTextureCube);for(P=0;P<6;++P)f.texImage2D(f.TEXTURE_CUBE_MAP_POSITIVE_X+P,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,p.image[P]);p.__wasSetOnce=!0}G(f.TEXTURE_CUBE_MAP,p,p.image[0]);f.bindTexture(f.TEXTURE_CUBE_MAP,null);p.needsUpdate=!1}f.activeTexture(f.TEXTURE0+z);f.bindTexture(f.TEXTURE_CUBE_MAP,p.image.__webGLTextureCube)}}else{if(p.needsUpdate){if(p.__wasSetOnce){f.bindTexture(f.TEXTURE_2D,
|
|
|
+p.__webGLTexture);f.texSubImage2D(f.TEXTURE_2D,0,0,0,f.RGBA,f.UNSIGNED_BYTE,p.image)}else{p.__webGLTexture=f.createTexture();f.bindTexture(f.TEXTURE_2D,p.__webGLTexture);f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,p.image);p.__wasSetOnce=!0}G(f.TEXTURE_2D,p,p.image);f.bindTexture(f.TEXTURE_2D,null);p.needsUpdate=!1}f.activeTexture(f.TEXTURE0+z);f.bindTexture(f.TEXTURE_2D,p.__webGLTexture)}}}f.uniformMatrix4fv(A.modelViewMatrix,!1,q._modelViewMatrixArray);f.uniformMatrix3fv(A.normalMatrix,
|
|
|
+!1,q._normalMatrixArray);(n instanceof THREE.MeshShaderMaterial||n instanceof THREE.MeshPhongMaterial||n.envMap)&&f.uniform3f(A.cameraPosition,m.position.x,m.position.y,m.position.z);(n instanceof THREE.MeshShaderMaterial||n.envMap||n.skinning)&&f.uniformMatrix4fv(A.objectMatrix,!1,q._objectMatrixArray);(n instanceof THREE.MeshPhongMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshShaderMaterial||n.skinning)&&f.uniformMatrix4fv(A.viewMatrix,!1,aa);if(n.skinning){f.uniformMatrix4fv(A.cameraInverseMatrix,
|
|
|
+!1,aa);f.uniformMatrix4fv(A.boneGlobalMatrices,!1,q.boneMatrices)}return B}function e(m,z,p,n,q,B){if(n.opacity!=0){m=d(m,z,p,n,B).attributes;if(n.morphTargets){z=n.program.attributes;B.morphTargetBase!==-1?f.bindBuffer(f.ARRAY_BUFFER,q.__webGLMorphTargetsBuffers[B.morphTargetBase]):f.bindBuffer(f.ARRAY_BUFFER,q.__webGLVertexBuffer);f.vertexAttribPointer(z.position,3,f.FLOAT,!1,0,0);if(B.morphTargetForcedOrder.length){p=0;for(var A=B.morphTargetForcedOrder,D=B.morphTargetInfluences;p<n.numSupportedMorphTargets&&
|
|
|
+p<A.length;){f.bindBuffer(f.ARRAY_BUFFER,q.__webGLMorphTargetsBuffers[A[p]]);f.vertexAttribPointer(z["morphTarget"+p],3,f.FLOAT,!1,0,0);B.__webGLMorphTargetInfluences[p]=D[A[p]];p++}}else{A=[];var P=-1,U=0;D=B.morphTargetInfluences;var E,Z=D.length;p=0;for(B.morphTargetBase!==-1&&(A[B.morphTargetBase]=!0);p<n.numSupportedMorphTargets;){for(E=0;E<Z;E++)if(!A[E]&&D[E]>P){U=E;P=D[U]}f.bindBuffer(f.ARRAY_BUFFER,q.__webGLMorphTargetsBuffers[U]);f.vertexAttribPointer(z["morphTarget"+p],3,f.FLOAT,!1,0,0);
|
|
|
+B.__webGLMorphTargetInfluences[p]=P;A[U]=1;P=-1;p++}}f.uniform1fv(n.program.uniforms.morphTargetInfluences,B.__webGLMorphTargetInfluences)}else{f.bindBuffer(f.ARRAY_BUFFER,q.__webGLVertexBuffer);f.vertexAttribPointer(m.position,3,f.FLOAT,!1,0,0)}if(m.color>=0){f.bindBuffer(f.ARRAY_BUFFER,q.__webGLColorBuffer);f.vertexAttribPointer(m.color,3,f.FLOAT,!1,0,0)}if(m.normal>=0){f.bindBuffer(f.ARRAY_BUFFER,q.__webGLNormalBuffer);f.vertexAttribPointer(m.normal,3,f.FLOAT,!1,0,0)}if(m.tangent>=0){f.bindBuffer(f.ARRAY_BUFFER,
|
|
|
+q.__webGLTangentBuffer);f.vertexAttribPointer(m.tangent,4,f.FLOAT,!1,0,0)}if(m.uv>=0)if(q.__webGLUVBuffer){f.bindBuffer(f.ARRAY_BUFFER,q.__webGLUVBuffer);f.vertexAttribPointer(m.uv,2,f.FLOAT,!1,0,0);f.enableVertexAttribArray(m.uv)}else f.disableVertexAttribArray(m.uv);if(m.uv2>=0)if(q.__webGLUV2Buffer){f.bindBuffer(f.ARRAY_BUFFER,q.__webGLUV2Buffer);f.vertexAttribPointer(m.uv2,2,f.FLOAT,!1,0,0);f.enableVertexAttribArray(m.uv2)}else f.disableVertexAttribArray(m.uv2);if(n.skinning&&m.skinVertexA>=0&&
|
|
|
+m.skinVertexB>=0&&m.skinIndex>=0&&m.skinWeight>=0){f.bindBuffer(f.ARRAY_BUFFER,q.__webGLSkinVertexABuffer);f.vertexAttribPointer(m.skinVertexA,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,q.__webGLSkinVertexBBuffer);f.vertexAttribPointer(m.skinVertexB,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,q.__webGLSkinIndicesBuffer);f.vertexAttribPointer(m.skinIndex,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,q.__webGLSkinWeightsBuffer);f.vertexAttribPointer(m.skinWeight,4,f.FLOAT,!1,0,0)}if(B instanceof
|
|
|
+THREE.Mesh)if(n.wireframe){f.lineWidth(n.wireframeLinewidth);f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,q.__webGLLineBuffer);f.drawElements(f.LINES,q.__webGLLineCount,f.UNSIGNED_SHORT,0)}else{f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,q.__webGLFaceBuffer);f.drawElements(f.TRIANGLES,q.__webGLFaceCount,f.UNSIGNED_SHORT,0)}else if(B instanceof THREE.Line){B=B.type==THREE.LineStrip?f.LINE_STRIP:f.LINES;f.lineWidth(n.linewidth);f.drawArrays(B,0,q.__webGLLineCount)}else if(B instanceof THREE.ParticleSystem)f.drawArrays(f.POINTS,
|
|
|
+0,q.__webGLParticleCount);else B instanceof THREE.Ribbon&&f.drawArrays(f.TRIANGLE_STRIP,0,q.__webGLVertexCount)}}function g(m,z){if(!m.__webGLVertexBuffer)m.__webGLVertexBuffer=f.createBuffer();if(!m.__webGLNormalBuffer)m.__webGLNormalBuffer=f.createBuffer();if(m.hasPos){f.bindBuffer(f.ARRAY_BUFFER,m.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,m.positionArray,f.DYNAMIC_DRAW);f.enableVertexAttribArray(z.attributes.position);f.vertexAttribPointer(z.attributes.position,3,f.FLOAT,!1,0,0)}if(m.hasNormal){f.bindBuffer(f.ARRAY_BUFFER,
|
|
|
+m.__webGLNormalBuffer);f.bufferData(f.ARRAY_BUFFER,m.normalArray,f.DYNAMIC_DRAW);f.enableVertexAttribArray(z.attributes.normal);f.vertexAttribPointer(z.attributes.normal,3,f.FLOAT,!1,0,0)}f.drawArrays(f.TRIANGLES,0,m.count);m.count=0}function h(m){if(ga!=m.doubleSided){m.doubleSided?f.disable(f.CULL_FACE):f.enable(f.CULL_FACE);ga=m.doubleSided}if(I!=m.flipSided){m.flipSided?f.frontFace(f.CW):f.frontFace(f.CCW);I=m.flipSided}}function j(m){if(za!=m){m?f.enable(f.DEPTH_TEST):f.disable(f.DEPTH_TEST);
|
|
|
+za=m}}function k(m){va[0].set(m.n41-m.n11,m.n42-m.n12,m.n43-m.n13,m.n44-m.n14);va[1].set(m.n41+m.n11,m.n42+m.n12,m.n43+m.n13,m.n44+m.n14);va[2].set(m.n41+m.n21,m.n42+m.n22,m.n43+m.n23,m.n44+m.n24);va[3].set(m.n41-m.n21,m.n42-m.n22,m.n43-m.n23,m.n44-m.n24);va[4].set(m.n41-m.n31,m.n42-m.n32,m.n43-m.n33,m.n44-m.n34);va[5].set(m.n41+m.n31,m.n42+m.n32,m.n43+m.n33,m.n44+m.n34);var z;for(m=0;m<6;m++){z=va[m];z.divideScalar(Math.sqrt(z.x*z.x+z.y*z.y+z.z*z.z))}}function l(m){for(var z=m.matrixWorld,p=-m.geometry.boundingSphere.radius*
|
|
|
+Math.max(m.scale.x,Math.max(m.scale.y,m.scale.z)),n=0;n<6;n++){m=va[n].x*z.n14+va[n].y*z.n24+va[n].z*z.n34+va[n].w;if(m<=p)return!1}return!0}function o(m,z){m.list[m.count]=z;m.count+=1}function v(m){var z,p,n=m.object,q=m.opaque,B=m.transparent;B.count=0;m=q.count=0;for(z=n.materials.length;m<z;m++){p=n.materials[m];p.opacity&&p.opacity<1||p.blending!=THREE.NormalBlending?o(B,p):o(q,p)}}function u(m){var z,p,n,q,B=m.object,A=m.buffer,D=m.opaque,P=m.transparent;P.count=0;m=D.count=0;for(n=B.materials.length;m<
|
|
|
+n;m++){z=B.materials[m];if(z instanceof THREE.MeshFaceMaterial){z=0;for(p=A.materials.length;z<p;z++)(q=A.materials[z])&&(q.opacity&&q.opacity<1||q.blending!=THREE.NormalBlending?o(P,q):o(D,q))}else{q=z;q.opacity&&q.opacity<1||q.blending!=THREE.NormalBlending?o(P,q):o(D,q)}}}function t(m,z){return z.z-m.z}function y(m,z){m._modelViewMatrix.multiplyToArray(z.matrixWorldInverse,m.matrixWorld,m._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(m._modelViewMatrix).transposeIntoArray(m._normalMatrixArray)}
|
|
|
+function C(m){function z(ka){var na=[];p=0;for(n=ka.length;p<n;p++)ka[p]==undefined?na.push("undefined"):na.push(ka[p].id);return na.join("_")}var p,n,q,B,A,D,P,U,E={},Z=m.morphTargets!==undefined?m.morphTargets.length:0;m.geometryGroups={};q=0;for(B=m.faces.length;q<B;q++){A=m.faces[q];D=A.materials;P=z(D);E[P]==undefined&&(E[P]={hash:P,counter:0});U=E[P].hash+"_"+E[P].counter;m.geometryGroups[U]==undefined&&(m.geometryGroups[U]={faces:[],materials:D,vertices:0,numMorphTargets:Z});A=A instanceof
|
|
|
+THREE.Face3?3:4;if(m.geometryGroups[U].vertices+A>65535){E[P].counter+=1;U=E[P].hash+"_"+E[P].counter;m.geometryGroups[U]==undefined&&(m.geometryGroups[U]={faces:[],materials:D,vertices:0,numMorphTargets:Z})}m.geometryGroups[U].faces.push(q);m.geometryGroups[U].vertices+=A}}function F(m,z,p){m.push({buffer:z,object:p,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function w(m){if(m!=ca){switch(m){case THREE.AdditiveBlending:f.blendEquation(f.FUNC_ADD);f.blendFunc(f.ONE,f.ONE);break;case THREE.SubtractiveBlending:f.blendFunc(f.DST_COLOR,
|
|
|
+f.ZERO);break;case THREE.BillboardBlending:f.blendEquation(f.FUNC_ADD);f.blendFunc(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA);break;case THREE.ReverseSubtractiveBlending:f.blendEquation(f.FUNC_REVERSE_SUBTRACT);f.blendFunc(f.ONE,f.ONE);break;default:f.blendEquation(f.FUNC_ADD);f.blendFunc(f.ONE,f.ONE_MINUS_SRC_ALPHA)}ca=m}}function G(m,z,p){if((p.width&p.width-1)==0&&(p.height&p.height-1)==0){f.texParameteri(m,f.TEXTURE_WRAP_S,Y(z.wrapS));f.texParameteri(m,f.TEXTURE_WRAP_T,Y(z.wrapT));f.texParameteri(m,f.TEXTURE_MAG_FILTER,
|
|
|
+Y(z.magFilter));f.texParameteri(m,f.TEXTURE_MIN_FILTER,Y(z.minFilter));f.generateMipmap(m)}else{f.texParameteri(m,f.TEXTURE_WRAP_S,f.CLAMP_TO_EDGE);f.texParameteri(m,f.TEXTURE_WRAP_T,f.CLAMP_TO_EDGE);f.texParameteri(m,f.TEXTURE_MAG_FILTER,L(z.magFilter));f.texParameteri(m,f.TEXTURE_MIN_FILTER,L(z.minFilter))}}function x(m){if(m&&!m.__webGLFramebuffer){m.__webGLFramebuffer=f.createFramebuffer();m.__webGLRenderbuffer=f.createRenderbuffer();m.__webGLTexture=f.createTexture();f.bindRenderbuffer(f.RENDERBUFFER,
|
|
|
+m.__webGLRenderbuffer);f.renderbufferStorage(f.RENDERBUFFER,f.DEPTH_COMPONENT16,m.width,m.height);f.bindTexture(f.TEXTURE_2D,m.__webGLTexture);f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,Y(m.wrapS));f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,Y(m.wrapT));f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,Y(m.magFilter));f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,Y(m.minFilter));f.texImage2D(f.TEXTURE_2D,0,Y(m.format),m.width,m.height,0,Y(m.format),Y(m.type),null);f.bindFramebuffer(f.FRAMEBUFFER,
|
|
|
+m.__webGLFramebuffer);f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_2D,m.__webGLTexture,0);f.framebufferRenderbuffer(f.FRAMEBUFFER,f.DEPTH_ATTACHMENT,f.RENDERBUFFER,m.__webGLRenderbuffer);f.bindTexture(f.TEXTURE_2D,null);f.bindRenderbuffer(f.RENDERBUFFER,null);f.bindFramebuffer(f.FRAMEBUFFER,null)}var z,p;if(m){z=m.__webGLFramebuffer;p=m.width;m=m.height}else{z=null;p=ja;m=ha}if(z!=R){f.bindFramebuffer(f.FRAMEBUFFER,z);f.viewport(ea,xa,p,m);R=z}}function N(m,z){var p;if(m=="fragment")p=
|
|
|
+f.createShader(f.FRAGMENT_SHADER);else m=="vertex"&&(p=f.createShader(f.VERTEX_SHADER));f.shaderSource(p,z);f.compileShader(p);if(!f.getShaderParameter(p,f.COMPILE_STATUS)){alert(f.getShaderInfoLog(p));return null}return p}function L(m){switch(m){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return f.NEAREST;case THREE.LinearFilter:case THREE.LinearMipMapNearestFilter:case THREE.LinearMipMapLinearFilter:return f.LINEAR}}function Y(m){switch(m){case THREE.RepeatWrapping:return f.REPEAT;
|
|
|
+case THREE.ClampToEdgeWrapping:return f.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return f.MIRRORED_REPEAT;case THREE.NearestFilter:return f.NEAREST;case THREE.NearestMipMapNearestFilter:return f.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return f.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return f.LINEAR;case THREE.LinearMipMapNearestFilter:return f.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return f.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return f.BYTE;
|
|
|
+case THREE.UnsignedByteType:return f.UNSIGNED_BYTE;case THREE.ShortType:return f.SHORT;case THREE.UnsignedShortType:return f.UNSIGNED_SHORT;case THREE.IntType:return f.INT;case THREE.UnsignedShortType:return f.UNSIGNED_INT;case THREE.FloatType:return f.FLOAT;case THREE.AlphaFormat:return f.ALPHA;case THREE.RGBFormat:return f.RGB;case THREE.RGBAFormat:return f.RGBA;case THREE.LuminanceFormat:return f.LUMINANCE;case THREE.LuminanceAlphaFormat:return f.LUMINANCE_ALPHA}return 0}var M=document.createElement("canvas"),
|
|
|
+f,X=null,R=null,da=this,ga=null,I=null,ca=null,za=null,ea=0,xa=0,ja=0,ha=0,va=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],Aa=new THREE.Matrix4,ia=new Float32Array(16),aa=new Float32Array(16),qa=new THREE.Vector4,ra={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[]}},Q=!0,ma=new THREE.Color(0),ta=0;if(a){if(a.antialias!==undefined)Q=a.antialias;a.clearColor!==undefined&&ma.setHex(a.clearColor);
|
|
|
+if(a.clearAlpha!==undefined)ta=a.clearAlpha}this.maxMorphTargets=8;this.domElement=M;this.autoClear=!0;this.sortObjects=!0;(function(m,z,p){try{if(!(f=M.getContext("experimental-webgl",{antialias:m})))throw"Error creating WebGL context.";}catch(n){console.error(n)}f.clearColor(0,0,0,1);f.clearDepth(1);f.enable(f.DEPTH_TEST);f.depthFunc(f.LEQUAL);f.frontFace(f.CCW);f.cullFace(f.BACK);f.enable(f.CULL_FACE);f.enable(f.BLEND);f.blendFunc(f.ONE,f.ONE_MINUS_SRC_ALPHA);f.clearColor(z.r,z.g,z.b,p);_cullEnabled=
|
|
|
+!0})(Q,ma,ta);this.context=f;this.setSize=function(m,z){M.width=m;M.height=z;this.setViewport(0,0,M.width,M.height)};this.setViewport=function(m,z,p,n){ea=m;xa=z;ja=p;ha=n;f.viewport(ea,xa,ja,ha)};this.setScissor=function(m,z,p,n){f.scissor(m,z,p,n)};this.enableScissorTest=function(m){m?f.enable(f.SCISSOR_TEST):f.disable(f.SCISSOR_TEST)};this.enableDepthBufferWrite=function(m){f.depthMask(m)};this.setClearColorHex=function(m,z){var p=new THREE.Color(m);f.clearColor(p.r,p.g,p.b,z)};this.setClearColor=
|
|
|
+function(m,z){f.clearColor(m.r,m.g,m.b,z)};this.clear=function(){f.clear(f.COLOR_BUFFER_BIT|f.DEPTH_BUFFER_BIT)};this.initMaterial=function(m,z,p,n){var q,B,A;if(m instanceof THREE.MeshDepthMaterial)b(m,THREE.ShaderLib.depth);else if(m instanceof THREE.MeshNormalMaterial)b(m,THREE.ShaderLib.normal);else if(m instanceof THREE.MeshBasicMaterial)b(m,THREE.ShaderLib.basic);else if(m instanceof THREE.MeshLambertMaterial)b(m,THREE.ShaderLib.lambert);else if(m instanceof THREE.MeshPhongMaterial)b(m,THREE.ShaderLib.phong);
|
|
|
+else if(m instanceof THREE.LineBasicMaterial)b(m,THREE.ShaderLib.basic);else m instanceof THREE.ParticleBasicMaterial&&b(m,THREE.ShaderLib.particle_basic);var D,P,U,E;A=U=E=0;for(D=z.length;A<D;A++){P=z[A];P instanceof THREE.DirectionalLight&&U++;P instanceof THREE.PointLight&&E++}if(E+U<=4)z=U;else{z=Math.ceil(4*U/(E+U));E=4-z}A={directional:z,point:E};D=50;if(n!==undefined&&n instanceof THREE.SkinnedMesh)D=n.bones.length;E=m.fragmentShader;z=m.vertexShader;D={fog:p,map:m.map,envMap:m.envMap,lightMap:m.lightMap,
|
|
|
+vertexColors:m.vertexColors,skinning:m.skinning,morphTargets:m.morphTargets,maxDirLights:A.directional,maxPointLights:A.point,maxBones:D};p=f.createProgram();A=["#ifdef GL_ES\nprecision highp float;\n#endif","#define MAX_DIR_LIGHTS "+D.maxDirLights,"#define MAX_POINT_LIGHTS "+D.maxPointLights,D.fog?"#define USE_FOG":"",D.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",D.map?"#define USE_MAP":"",D.envMap?"#define USE_ENVMAP":"",D.lightMap?"#define USE_LIGHTMAP":"",D.vertexColors?"#define USE_COLOR":
|
|
|
+"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");D=[f.getParameter(f.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+D.maxDirLights,"#define MAX_POINT_LIGHTS "+D.maxPointLights,"#define MAX_BONES "+D.maxBones,D.map?"#define USE_MAP":"",D.envMap?"#define USE_ENVMAP":"",D.lightMap?"#define USE_LIGHTMAP":"",D.vertexColors?"#define USE_COLOR":"",D.skinning?"#define USE_SKINNING":"",D.morphTargets?"#define USE_MORPHTARGETS":"",D.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 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\nattribute vec3 normal;\nattribute vec3 color;\nattribute vec2 uv;\nattribute vec2 uv2;\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n"].join("\n");
|
|
|
+f.attachShader(p,N("fragment",A+E));f.attachShader(p,N("vertex",D+z));f.linkProgram(p);f.getProgramParameter(p,f.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+f.getProgramParameter(p,f.VALIDATE_STATUS)+", gl error ["+f.getError()+"]");p.uniforms={};p.attributes={};m.program=p;p=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(q in m.uniforms)p.push(q);q=
|
|
|
+m.program;E=0;for(z=p.length;E<z;E++){A=p[E];q.uniforms[A]=f.getUniformLocation(q,A)}p=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(q=0;q<this.maxMorphTargets;q++)p.push("morphTarget"+q);for(B in m.attributes)p.push(B);B=m.program;q=p;p=0;for(E=q.length;p<E;p++){z=q[p];B.attributes[z]=f.getAttribLocation(B,z)}B=m.program.attributes;f.enableVertexAttribArray(B.position);B.color>=0&&f.enableVertexAttribArray(B.color);B.normal>=0&&f.enableVertexAttribArray(B.normal);
|
|
|
B.tangent>=0&&f.enableVertexAttribArray(B.tangent);if(m.skinning&&B.skinVertexA>=0&&B.skinVertexB>=0&&B.skinIndex>=0&&B.skinWeight>=0){f.enableVertexAttribArray(B.skinVertexA);f.enableVertexAttribArray(B.skinVertexB);f.enableVertexAttribArray(B.skinIndex);f.enableVertexAttribArray(B.skinWeight)}if(m.morphTargets){m.numSupportedMorphTargets=0;if(B.morphTarget0>=0){f.enableVertexAttribArray(B.morphTarget0);m.numSupportedMorphTargets++}if(B.morphTarget1>=0){f.enableVertexAttribArray(B.morphTarget1);
|
|
|
m.numSupportedMorphTargets++}if(B.morphTarget2>=0){f.enableVertexAttribArray(B.morphTarget2);m.numSupportedMorphTargets++}if(B.morphTarget3>=0){f.enableVertexAttribArray(B.morphTarget3);m.numSupportedMorphTargets++}if(B.morphTarget4>=0){f.enableVertexAttribArray(B.morphTarget4);m.numSupportedMorphTargets++}if(B.morphTarget5>=0){f.enableVertexAttribArray(B.morphTarget5);m.numSupportedMorphTargets++}if(B.morphTarget6>=0){f.enableVertexAttribArray(B.morphTarget6);m.numSupportedMorphTargets++}if(B.morphTarget7>=
|
|
|
-0){f.enableVertexAttribArray(B.morphTarget7);m.numSupportedMorphTargets++}n.__webGLMorphTargetInfluences=new Float32Array(this.maxMorphTargets);for(p=0;p<this.maxMorphTargets;p++)n.__webGLMorphTargetInfluences[p]=0}};this.render=function(m,z,q,n){var p,B,A,D,O,X,E,aa,ka=m.lights,na=m.fog;z.matrixAutoUpdate&&z.update();z.matrixWorldInverse.flattenToArray($);z.projectionMatrix.flattenToArray(ia);Aa.multiply(z.projectionMatrix,z.matrixWorldInverse);k(Aa);m.update(undefined,!1,z);this.initWebGLObjects(m);
|
|
|
-x(q);(this.autoClear||n)&&this.clear();O=m.__webglObjects.length;for(n=0;n<O;n++){p=m.__webglObjects[n];E=p.object;if(E.visible)if(!(E instanceof THREE.Mesh)||l(E)){E.matrixWorld.flattenToArray(E._objectMatrixArray);y(E,z);u(p);p.render=!0;if(this.sortObjects){qa.copy(E.position);Aa.multiplyVector3(qa);p.z=qa.z}}else p.render=!1;else p.render=!1}this.sortObjects&&m.__webglObjects.sort(t);X=m.__webglObjectsImmediate.length;for(n=0;n<X;n++){p=m.__webglObjectsImmediate[n];E=p.object;if(E.visible){E.matrixAutoUpdate&&
|
|
|
-E.matrixWorld.flattenToArray(E._objectMatrixArray);y(E,z);v(p)}}w(THREE.NormalBlending);for(n=0;n<O;n++){p=m.__webglObjects[n];if(p.render){E=p.object;aa=p.buffer;A=p.opaque;h(E);for(p=0;p<A.count;p++){D=A.list[p];j(D.depthTest);e(z,ka,na,D,aa,E)}}}for(n=0;n<X;n++){p=m.__webglObjectsImmediate[n];E=p.object;if(E.visible){A=p.opaque;h(E);for(p=0;p<A.count;p++){D=A.list[p];j(D.depthTest);B=d(z,ka,na,D,E);E.render(function(wa){g(wa,B)})}}}for(n=0;n<O;n++){p=m.__webglObjects[n];if(p.render){E=p.object;
|
|
|
-aa=p.buffer;A=p.transparent;h(E);for(p=0;p<A.count;p++){D=A.list[p];w(D.blending);j(D.depthTest);e(z,ka,na,D,aa,E)}}}for(n=0;n<X;n++){p=m.__webglObjectsImmediate[n];E=p.object;if(E.visible){A=p.transparent;h(E);for(p=0;p<A.count;p++){D=A.list[p];w(D.blending);j(D.depthTest);B=d(z,ka,na,D,E);E.render(function(wa){g(wa,B)})}}}if(q&&q.minFilter!==THREE.NearestFilter&&q.minFilter!==THREE.LinearFilter){f.bindTexture(f.TEXTURE_2D,q.__webGLTexture);f.generateMipmap(f.TEXTURE_2D);f.bindTexture(f.TEXTURE_2D,
|
|
|
-null)}};this.initWebGLObjects=function(m){if(!m.__webglObjects){m.__webglObjects=[];m.__webglObjectsImmediate=[]}for(;m.__objectsAdded.length;){var z=m.__objectsAdded[0],q=m,n=void 0,p=void 0,B=void 0;if(z._modelViewMatrix==undefined){z._modelViewMatrix=new THREE.Matrix4;z._normalMatrixArray=new Float32Array(9);z._modelViewMatrixArray=new Float32Array(16);z._objectMatrixArray=new Float32Array(16);z.matrixWorld.flattenToArray(z._objectMatrixArray)}if(z instanceof THREE.Mesh){p=z.geometry;p.geometryGroups==
|
|
|
-undefined&&C(p);for(n in p.geometryGroups){B=p.geometryGroups[n];if(!B.__webGLVertexBuffer){var A=B;A.__webGLVertexBuffer=f.createBuffer();A.__webGLNormalBuffer=f.createBuffer();A.__webGLTangentBuffer=f.createBuffer();A.__webGLColorBuffer=f.createBuffer();A.__webGLUVBuffer=f.createBuffer();A.__webGLUV2Buffer=f.createBuffer();A.__webGLSkinVertexABuffer=f.createBuffer();A.__webGLSkinVertexBBuffer=f.createBuffer();A.__webGLSkinIndicesBuffer=f.createBuffer();A.__webGLSkinWeightsBuffer=f.createBuffer();
|
|
|
-A.__webGLFaceBuffer=f.createBuffer();A.__webGLLineBuffer=f.createBuffer();if(A.numMorphTargets){var D=void 0,O=void 0;A.__webGLMorphTargetsBuffers=[];D=0;for(O=A.numMorphTargets;D<O;D++)A.__webGLMorphTargetsBuffers.push(f.createBuffer())}A=B;var X=z,E=void 0,aa=void 0,ka=O=D=0,na=X.geometry.faces,wa=A.faces;E=0;for(aa=wa.length;E<aa;E++){fi=wa[E];face=na[fi];if(face instanceof THREE.Face3){D+=3;O+=1;ka+=3}else if(face instanceof THREE.Face4){D+=4;O+=2;ka+=4}}A.__vertexArray=new Float32Array(D*3);
|
|
|
-A.__normalArray=new Float32Array(D*3);A.__tangentArray=new Float32Array(D*4);A.__colorArray=new Float32Array(D*3);A.__uvArray=new Float32Array(D*2);A.__uv2Array=new Float32Array(D*2);A.__skinVertexAArray=new Float32Array(D*4);A.__skinVertexBArray=new Float32Array(D*4);A.__skinIndexArray=new Float32Array(D*4);A.__skinWeightArray=new Float32Array(D*4);A.__faceArray=new Uint16Array(O*3);A.__lineArray=new Uint16Array(ka*2);aa=E=A;na=void 0;wa=void 0;var la=void 0,Ca=void 0;la=void 0;var Da=!1;na=0;for(wa=
|
|
|
-X.materials.length;na<wa;na++){la=X.materials[na];if(la instanceof THREE.MeshFaceMaterial){la=0;for(Ca=aa.materials.length;la<Ca;la++)if(aa.materials[la]&&aa.materials[la].shading!=undefined&&aa.materials[la].shading==THREE.SmoothShading){Da=!0;break}}else if(la&&la.shading!=undefined&&la.shading==THREE.SmoothShading){Da=!0;break}if(Da)break}E.__needsSmoothNormals=Da;A.__webGLFaceCount=O*3;A.__webGLLineCount=ka*2;if(A.numMorphTargets){O=void 0;ka=void 0;A.__morphTargetsArrays=[];O=0;for(ka=A.numMorphTargets;O<
|
|
|
-ka;O++)A.__morphTargetsArrays.push(new Float32Array(D*3))}p.__dirtyVertices=!0;p.__dirtyMorphTargets=!0;p.__dirtyElements=!0;p.__dirtyUvs=!0;p.__dirtyNormals=!0;p.__dirtyTangents=!0;p.__dirtyColors=!0}F(q.__webglObjects,B,z)}}else if(z instanceof THREE.Ribbon){p=z.geometry;if(!p.__webGLVertexBuffer){n=p;n.__webGLVertexBuffer=f.createBuffer();n.__webGLColorBuffer=f.createBuffer();n=p;B=n.vertices.length;n.__vertexArray=new Float32Array(B*3);n.__colorArray=new Float32Array(B*3);n.__webGLVertexCount=
|
|
|
-B;p.__dirtyVertices=!0;p.__dirtyColors=!0}F(q.__webglObjects,p,z)}else if(z instanceof THREE.Line){p=z.geometry;if(!p.__webGLVertexBuffer){n=p;n.__webGLVertexBuffer=f.createBuffer();n.__webGLColorBuffer=f.createBuffer();n=p;B=n.vertices.length;n.__vertexArray=new Float32Array(B*3);n.__colorArray=new Float32Array(B*3);n.__webGLLineCount=B;p.__dirtyVertices=!0;p.__dirtyColors=!0}F(q.__webglObjects,p,z)}else if(z instanceof THREE.ParticleSystem){p=z.geometry;if(!p.__webGLVertexBuffer){n=p;n.__webGLVertexBuffer=
|
|
|
-f.createBuffer();n.__webGLColorBuffer=f.createBuffer();n=p;B=n.vertices.length;n.__vertexArray=new Float32Array(B*3);n.__colorArray=new Float32Array(B*3);n.__sortArray=[];n.__webGLParticleCount=B;p.__dirtyVertices=!0;p.__dirtyColors=!0}F(q.__webglObjects,p,z)}else THREE.MarchingCubes!==undefined&&z instanceof THREE.MarchingCubes&&q.__webglObjectsImmediate.push({object:z,opaque:{list:[],count:0},transparent:{list:[],count:0}});m.__objectsAdded.splice(0,1)}for(;m.__objectsRemoved.length;){z=m.__objectsRemoved[0];
|
|
|
-q=m;p=void 0;n=void 0;for(p=q.__webglObjects.length-1;p>=0;p--){n=q.__webglObjects[p].object;z==n&&q.__webglObjects.splice(p,1)}m.__objectsRemoved.splice(0,1)}z=0;for(q=m.__webglObjects.length;z<q;z++){n=m.__webglObjects[z].object;B=void 0;p=void 0;A=void 0;if(n instanceof THREE.Mesh){p=n.geometry;for(B in p.geometryGroups){A=p.geometryGroups[B];if(p.__dirtyVertices||p.__dirtyMorphTargets||p.__dirtyElements||p.__dirtyUvs||p.__dirtyNormals||p.__dirtyColors||p.__dirtyTangents){D=f.DYNAMIC_DRAW;O=void 0;
|
|
|
-ka=void 0;var Pa=void 0,K=void 0,Na=void 0,Ia=void 0,Oa=void 0;Pa=void 0;var S=void 0,U=void 0,V=void 0,ya=void 0;S=void 0;U=void 0;V=void 0;K=void 0;S=void 0;U=void 0;V=void 0;ya=void 0;S=void 0;U=void 0;V=void 0;ya=void 0;S=void 0;U=void 0;V=void 0;ya=void 0;S=void 0;U=void 0;V=void 0;ya=void 0;S=void 0;U=void 0;V=void 0;ya=void 0;K=void 0;Ia=void 0;Na=void 0;Oa=void 0;var Ma=void 0,Fa=void 0,Ba=void 0,Ga=Ca=la=Da=wa=na=X=aa=E=0,H=0,Ja=0,Ha=A.__vertexArray,P=A.__uvArray,oa=A.__uv2Array,Z=A.__normalArray,
|
|
|
-J=A.__tangentArray,T=A.__colorArray,fa=A.__skinVertexAArray,pa=A.__skinVertexBArray,sa=A.__skinIndexArray,ua=A.__skinWeightArray,Ra=A.__morphTargetsArrays,La=A.__faceArray,Ka=A.__lineArray,Wa=A.__needsSmoothNormals,Ea=n.geometry,Sa=Ea.__dirtyVertices,ab=Ea.__dirtyElements,$a=Ea.__dirtyUvs,bb=Ea.__dirtyNormals,cb=Ea.__dirtyTangents,db=Ea.__dirtyColors,eb=Ea.__dirtyMorphTargets,Qa=Ea.vertices,fb=A.faces,gb=Ea.faces,hb=Ea.uvs,ib=Ea.uvs2,Ta=Ea.colors,Xa=Ea.skinVerticesA,Ya=Ea.skinVerticesB,Za=Ea.skinIndices,
|
|
|
-Va=Ea.skinWeights,Ua=Ea.morphTargets;O=0;for(ka=fb.length;O<ka;O++){Pa=fb[O];K=gb[Pa];Oa=hb[Pa];Pa=ib[Pa];Na=K.vertexNormals;Ia=K.normal;if(K instanceof THREE.Face3){if(Sa){S=Qa[K.a].position;U=Qa[K.b].position;V=Qa[K.c].position;Ha[aa]=S.x;Ha[aa+1]=S.y;Ha[aa+2]=S.z;Ha[aa+3]=U.x;Ha[aa+4]=U.y;Ha[aa+5]=U.z;Ha[aa+6]=V.x;Ha[aa+7]=V.y;Ha[aa+8]=V.z;aa+=9}if(eb){Ma=0;for(Fa=Ua.length;Ma<Fa;Ma++){S=Ua[Ma].vertices[K.a].position;U=Ua[Ma].vertices[K.b].position;V=Ua[Ma].vertices[K.c].position;Ba=Ra[Ma];Ba[Ja+
|
|
|
-0]=S.x;Ba[Ja+1]=S.y;Ba[Ja+2]=S.z;Ba[Ja+3]=U.x;Ba[Ja+4]=U.y;Ba[Ja+5]=U.z;Ba[Ja+6]=V.x;Ba[Ja+7]=V.y;Ba[Ja+8]=V.z}Ja+=9}if(Va.length){S=Va[K.a];U=Va[K.b];V=Va[K.c];ua[H]=S.x;ua[H+1]=S.y;ua[H+2]=S.z;ua[H+3]=S.w;ua[H+4]=U.x;ua[H+5]=U.y;ua[H+6]=U.z;ua[H+7]=U.w;ua[H+8]=V.x;ua[H+9]=V.y;ua[H+10]=V.z;ua[H+11]=V.w;S=Za[K.a];U=Za[K.b];V=Za[K.c];sa[H]=S.x;sa[H+1]=S.y;sa[H+2]=S.z;sa[H+3]=S.w;sa[H+4]=U.x;sa[H+5]=U.y;sa[H+6]=U.z;sa[H+7]=U.w;sa[H+8]=V.x;sa[H+9]=V.y;sa[H+10]=V.z;sa[H+11]=V.w;S=Xa[K.a];U=Xa[K.b];V=
|
|
|
-Xa[K.c];fa[H]=S.x;fa[H+1]=S.y;fa[H+2]=S.z;fa[H+3]=1;fa[H+4]=U.x;fa[H+5]=U.y;fa[H+6]=U.z;fa[H+7]=1;fa[H+8]=V.x;fa[H+9]=V.y;fa[H+10]=V.z;fa[H+11]=1;S=Ya[K.a];U=Ya[K.b];V=Ya[K.c];pa[H]=S.x;pa[H+1]=S.y;pa[H+2]=S.z;pa[H+3]=1;pa[H+4]=U.x;pa[H+5]=U.y;pa[H+6]=U.z;pa[H+7]=1;pa[H+8]=V.x;pa[H+9]=V.y;pa[H+10]=V.z;pa[H+11]=1;H+=12}if(db&&Ta.length){S=Ta[K.a];U=Ta[K.b];V=Ta[K.c];T[Ga]=S.r;T[Ga+1]=S.g;T[Ga+2]=S.b;T[Ga+3]=U.r;T[Ga+4]=U.g;T[Ga+5]=U.b;T[Ga+6]=V.r;T[Ga+7]=V.g;T[Ga+8]=V.b;Ga+=9}if(cb&&Ea.hasTangents){S=
|
|
|
-Qa[K.a].tangent;U=Qa[K.b].tangent;V=Qa[K.c].tangent;J[la]=S.x;J[la+1]=S.y;J[la+2]=S.z;J[la+3]=S.w;J[la+4]=U.x;J[la+5]=U.y;J[la+6]=U.z;J[la+7]=U.w;J[la+8]=V.x;J[la+9]=V.y;J[la+10]=V.z;J[la+11]=V.w;la+=12}if(bb)if(Na.length==3&&Wa)for(K=0;K<3;K++){Ia=Na[K];Z[Da]=Ia.x;Z[Da+1]=Ia.y;Z[Da+2]=Ia.z;Da+=3}else for(K=0;K<3;K++){Z[Da]=Ia.x;Z[Da+1]=Ia.y;Z[Da+2]=Ia.z;Da+=3}if($a&&Oa)for(K=0;K<3;K++){Na=Oa[K];P[X]=Na.u;P[X+1]=Na.v;X+=2}if($a&&Pa)for(K=0;K<3;K++){Oa=Pa[K];oa[na]=Oa.u;oa[na+1]=Oa.v;na+=2}if(ab){La[wa]=
|
|
|
-E;La[wa+1]=E+1;La[wa+2]=E+2;wa+=3;Ka[Ca]=E;Ka[Ca+1]=E+1;Ka[Ca+2]=E;Ka[Ca+3]=E+2;Ka[Ca+4]=E+1;Ka[Ca+5]=E+2;Ca+=6;E+=3}}else if(K instanceof THREE.Face4){if(Sa){S=Qa[K.a].position;U=Qa[K.b].position;V=Qa[K.c].position;ya=Qa[K.d].position;Ha[aa]=S.x;Ha[aa+1]=S.y;Ha[aa+2]=S.z;Ha[aa+3]=U.x;Ha[aa+4]=U.y;Ha[aa+5]=U.z;Ha[aa+6]=V.x;Ha[aa+7]=V.y;Ha[aa+8]=V.z;Ha[aa+9]=ya.x;Ha[aa+10]=ya.y;Ha[aa+11]=ya.z;aa+=12}if(eb){Ma=0;for(Fa=Ua.length;Ma<Fa;Ma++){S=Ua[Ma].vertices[K.a].position;U=Ua[Ma].vertices[K.b].position;
|
|
|
-V=Ua[Ma].vertices[K.c].position;ya=Ua[Ma].vertices[K.d].position;Ba=Ra[Ma];Ba[Ja+0]=S.x;Ba[Ja+1]=S.y;Ba[Ja+2]=S.z;Ba[Ja+3]=U.x;Ba[Ja+4]=U.y;Ba[Ja+5]=U.z;Ba[Ja+6]=V.x;Ba[Ja+7]=V.y;Ba[Ja+8]=V.z;Ba[Ja+9]=ya.x;Ba[Ja+10]=ya.y;Ba[Ja+11]=ya.z}Ja+=12}if(Va.length){S=Va[K.a];U=Va[K.b];V=Va[K.c];ya=Va[K.d];ua[H]=S.x;ua[H+1]=S.y;ua[H+2]=S.z;ua[H+3]=S.w;ua[H+4]=U.x;ua[H+5]=U.y;ua[H+6]=U.z;ua[H+7]=U.w;ua[H+8]=V.x;ua[H+9]=V.y;ua[H+10]=V.z;ua[H+11]=V.w;ua[H+12]=ya.x;ua[H+13]=ya.y;ua[H+14]=ya.z;ua[H+15]=ya.w;S=Za[K.a];
|
|
|
-U=Za[K.b];V=Za[K.c];ya=Za[K.d];sa[H]=S.x;sa[H+1]=S.y;sa[H+2]=S.z;sa[H+3]=S.w;sa[H+4]=U.x;sa[H+5]=U.y;sa[H+6]=U.z;sa[H+7]=U.w;sa[H+8]=V.x;sa[H+9]=V.y;sa[H+10]=V.z;sa[H+11]=V.w;sa[H+12]=ya.x;sa[H+13]=ya.y;sa[H+14]=ya.z;sa[H+15]=ya.w;S=Xa[K.a];U=Xa[K.b];V=Xa[K.c];ya=Xa[K.d];fa[H]=S.x;fa[H+1]=S.y;fa[H+2]=S.z;fa[H+3]=1;fa[H+4]=U.x;fa[H+5]=U.y;fa[H+6]=U.z;fa[H+7]=1;fa[H+8]=V.x;fa[H+9]=V.y;fa[H+10]=V.z;fa[H+11]=1;fa[H+12]=ya.x;fa[H+13]=ya.y;fa[H+14]=ya.z;fa[H+15]=1;S=Ya[K.a];U=Ya[K.b];V=Ya[K.c];ya=Ya[K.d];
|
|
|
-pa[H]=S.x;pa[H+1]=S.y;pa[H+2]=S.z;pa[H+3]=1;pa[H+4]=U.x;pa[H+5]=U.y;pa[H+6]=U.z;pa[H+7]=1;pa[H+8]=V.x;pa[H+9]=V.y;pa[H+10]=V.z;pa[H+11]=1;pa[H+12]=ya.x;pa[H+13]=ya.y;pa[H+14]=ya.z;pa[H+15]=1;H+=16}if(db&&Ta.length){S=Ta[K.a];U=Ta[K.b];V=Ta[K.c];ya=Ta[K.d];T[Ga]=S.r;T[Ga+1]=S.g;T[Ga+2]=S.b;T[Ga+3]=U.r;T[Ga+4]=U.g;T[Ga+5]=U.b;T[Ga+6]=V.r;T[Ga+7]=V.g;T[Ga+8]=V.b;T[Ga+9]=ya.r;T[Ga+10]=ya.g;T[Ga+11]=ya.b;Ga+=12}if(cb&&Ea.hasTangents){S=Qa[K.a].tangent;U=Qa[K.b].tangent;V=Qa[K.c].tangent;K=Qa[K.d].tangent;
|
|
|
-J[la]=S.x;J[la+1]=S.y;J[la+2]=S.z;J[la+3]=S.w;J[la+4]=U.x;J[la+5]=U.y;J[la+6]=U.z;J[la+7]=U.w;J[la+8]=V.x;J[la+9]=V.y;J[la+10]=V.z;J[la+11]=V.w;J[la+12]=K.x;J[la+13]=K.y;J[la+14]=K.z;J[la+15]=K.w;la+=16}if(bb)if(Na.length==4&&Wa)for(K=0;K<4;K++){Ia=Na[K];Z[Da]=Ia.x;Z[Da+1]=Ia.y;Z[Da+2]=Ia.z;Da+=3}else for(K=0;K<4;K++){Z[Da]=Ia.x;Z[Da+1]=Ia.y;Z[Da+2]=Ia.z;Da+=3}if($a&&Oa)for(K=0;K<4;K++){Na=Oa[K];P[X]=Na.u;P[X+1]=Na.v;X+=2}if($a&&Pa)for(K=0;K<4;K++){Oa=Pa[K];oa[na]=Oa.u;oa[na+1]=Oa.v;na+=2}if(ab){La[wa]=
|
|
|
-E;La[wa+1]=E+1;La[wa+2]=E+2;La[wa+3]=E;La[wa+4]=E+2;La[wa+5]=E+3;wa+=6;Ka[Ca]=E;Ka[Ca+1]=E+1;Ka[Ca+2]=E;Ka[Ca+3]=E+3;Ka[Ca+4]=E+1;Ka[Ca+5]=E+2;Ka[Ca+6]=E+2;Ka[Ca+7]=E+3;Ca+=8;E+=4}}}if(Sa){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,Ha,D)}if(eb){Ma=0;for(Fa=Ua.length;Ma<Fa;Ma++){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLMorphTargetsBuffers[Ma]);f.bufferData(f.ARRAY_BUFFER,Ra[Ma],D)}}if(db&&Ta.length){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLColorBuffer);f.bufferData(f.ARRAY_BUFFER,
|
|
|
-T,D)}if(bb){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLNormalBuffer);f.bufferData(f.ARRAY_BUFFER,Z,D)}if(cb&&Ea.hasTangents){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLTangentBuffer);f.bufferData(f.ARRAY_BUFFER,J,D)}if($a&&X>0){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLUVBuffer);f.bufferData(f.ARRAY_BUFFER,P,D)}if($a&&na>0){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLUV2Buffer);f.bufferData(f.ARRAY_BUFFER,oa,D)}if(ab){f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,A.__webGLFaceBuffer);f.bufferData(f.ELEMENT_ARRAY_BUFFER,La,D);f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,
|
|
|
-A.__webGLLineBuffer);f.bufferData(f.ELEMENT_ARRAY_BUFFER,Ka,D)}if(H>0){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLSkinVertexABuffer);f.bufferData(f.ARRAY_BUFFER,fa,D);f.bindBuffer(f.ARRAY_BUFFER,A.__webGLSkinVertexBBuffer);f.bufferData(f.ARRAY_BUFFER,pa,D);f.bindBuffer(f.ARRAY_BUFFER,A.__webGLSkinIndicesBuffer);f.bufferData(f.ARRAY_BUFFER,sa,D);f.bindBuffer(f.ARRAY_BUFFER,A.__webGLSkinWeightsBuffer);f.bufferData(f.ARRAY_BUFFER,ua,D)}}}p.__dirtyVertices=!1;p.__dirtyMorphTargets=!1;p.__dirtyElements=!1;p.__dirtyUvs=
|
|
|
-!1;p.__dirtyNormals=!1;p.__dirtyTangents=!1;p.__dirtyColors=!1}else if(n instanceof THREE.Ribbon){p=n.geometry;if(p.__dirtyVertices||p.__dirtyColors){n=p;B=f.DYNAMIC_DRAW;E=void 0;E=void 0;aa=void 0;A=void 0;X=n.vertices;D=n.colors;na=X.length;O=D.length;wa=n.__vertexArray;ka=n.__colorArray;Da=n.__dirtyColors;if(n.__dirtyVertices){for(E=0;E<na;E++){aa=X[E].position;A=E*3;wa[A]=aa.x;wa[A+1]=aa.y;wa[A+2]=aa.z}f.bindBuffer(f.ARRAY_BUFFER,n.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,wa,B)}if(Da){for(E=
|
|
|
-0;E<O;E++){color=D[E];A=E*3;ka[A]=color.r;ka[A+1]=color.g;ka[A+2]=color.b}f.bindBuffer(f.ARRAY_BUFFER,n.__webGLColorBuffer);f.bufferData(f.ARRAY_BUFFER,ka,B)}}p.__dirtyVertices=!1;p.__dirtyColors=!1}else if(n instanceof THREE.Line){p=n.geometry;if(p.__dirtyVertices||p.__dirtyColors){n=p;B=f.DYNAMIC_DRAW;E=void 0;E=void 0;aa=void 0;A=void 0;X=n.vertices;D=n.colors;na=X.length;O=D.length;wa=n.__vertexArray;ka=n.__colorArray;Da=n.__dirtyColors;if(n.__dirtyVertices){for(E=0;E<na;E++){aa=X[E].position;
|
|
|
-A=E*3;wa[A]=aa.x;wa[A+1]=aa.y;wa[A+2]=aa.z}f.bindBuffer(f.ARRAY_BUFFER,n.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,wa,B)}if(Da){for(E=0;E<O;E++){color=D[E];A=E*3;ka[A]=color.r;ka[A+1]=color.g;ka[A+2]=color.b}f.bindBuffer(f.ARRAY_BUFFER,n.__webGLColorBuffer);f.bufferData(f.ARRAY_BUFFER,ka,B)}}p.__dirtyVertices=!1;p.__dirtyColors=!1}else if(n instanceof THREE.ParticleSystem){p=n.geometry;(p.__dirtyVertices||p.__dirtyColors||n.sortParticles)&&c(p,f.DYNAMIC_DRAW,n);p.__dirtyVertices=!1;p.__dirtyColors=
|
|
|
-!1}}};this.setFaceCulling=function(m,z){if(m){!z||z=="ccw"?f.frontFace(f.CCW):f.frontFace(f.CW);if(m=="back")f.cullFace(f.BACK);else m=="front"?f.cullFace(f.FRONT):f.cullFace(f.FRONT_AND_BACK);f.enable(f.CULL_FACE)}else f.disable(f.CULL_FACE)};this.supportsVertexTextures=function(){return f.getParameter(f.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0}};
|
|
|
-THREE.Snippets={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",
|
|
|
-map_particle_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, gl_PointCoord );\n#endif",map_pars_fragment:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform sampler2D map;\n#endif",map_pars_vertex:"#ifdef USE_MAP\nvarying vec2 vUv;\n#endif",map_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, vUv );\n#endif",map_vertex:"#ifdef USE_MAP\nvUv = uv;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\nuniform sampler2D lightMap;\n#endif",lightmap_pars_vertex:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\n#endif",
|
|
|
-lightmap_fragment:"#ifdef USE_LIGHTMAP\ngl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n#endif",lightmap_vertex:"#ifdef USE_LIGHTMAP\nvUv2 = uv2;\n#endif",lights_pars_vertex:"uniform bool enableLighting;\nuniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n#ifdef PHONG\nvarying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];\n#endif\n#endif",
|
|
|
+0){f.enableVertexAttribArray(B.morphTarget7);m.numSupportedMorphTargets++}n.__webGLMorphTargetInfluences=new Float32Array(this.maxMorphTargets);for(q=0;q<this.maxMorphTargets;q++)n.__webGLMorphTargetInfluences[q]=0}};this.render=function(m,z,p,n){var q,B,A,D,P,U,E,Z,ka=m.lights,na=m.fog;z.matrixAutoUpdate&&z.update();z.matrixWorldInverse.flattenToArray(aa);z.projectionMatrix.flattenToArray(ia);Aa.multiply(z.projectionMatrix,z.matrixWorldInverse);k(Aa);m.update(undefined,!1,z);this.initWebGLObjects(m);
|
|
|
+x(p);(this.autoClear||n)&&this.clear();P=m.__webglObjects.length;for(n=0;n<P;n++){q=m.__webglObjects[n];E=q.object;if(E.visible)if(!(E instanceof THREE.Mesh)||l(E)){E.matrixWorld.flattenToArray(E._objectMatrixArray);y(E,z);u(q);q.render=!0;if(this.sortObjects){qa.copy(E.position);Aa.multiplyVector3(qa);q.z=qa.z}}else q.render=!1;else q.render=!1}this.sortObjects&&m.__webglObjects.sort(t);U=m.__webglObjectsImmediate.length;for(n=0;n<U;n++){q=m.__webglObjectsImmediate[n];E=q.object;if(E.visible){E.matrixAutoUpdate&&
|
|
|
+E.matrixWorld.flattenToArray(E._objectMatrixArray);y(E,z);v(q)}}w(THREE.NormalBlending);for(n=0;n<P;n++){q=m.__webglObjects[n];if(q.render){E=q.object;Z=q.buffer;A=q.opaque;h(E);for(q=0;q<A.count;q++){D=A.list[q];j(D.depthTest);e(z,ka,na,D,Z,E)}}}for(n=0;n<U;n++){q=m.__webglObjectsImmediate[n];E=q.object;if(E.visible){A=q.opaque;h(E);for(q=0;q<A.count;q++){D=A.list[q];j(D.depthTest);B=d(z,ka,na,D,E);E.render(function(wa){g(wa,B)})}}}for(n=0;n<P;n++){q=m.__webglObjects[n];if(q.render){E=q.object;Z=
|
|
|
+q.buffer;A=q.transparent;h(E);for(q=0;q<A.count;q++){D=A.list[q];w(D.blending);j(D.depthTest);e(z,ka,na,D,Z,E)}}}for(n=0;n<U;n++){q=m.__webglObjectsImmediate[n];E=q.object;if(E.visible){A=q.transparent;h(E);for(q=0;q<A.count;q++){D=A.list[q];w(D.blending);j(D.depthTest);B=d(z,ka,na,D,E);E.render(function(wa){g(wa,B)})}}}if(p&&p.minFilter!==THREE.NearestFilter&&p.minFilter!==THREE.LinearFilter){f.bindTexture(f.TEXTURE_2D,p.__webGLTexture);f.generateMipmap(f.TEXTURE_2D);f.bindTexture(f.TEXTURE_2D,null)}};
|
|
|
+this.initWebGLObjects=function(m){if(!m.__webglObjects){m.__webglObjects=[];m.__webglObjectsImmediate=[]}for(;m.__objectsAdded.length;){var z=m.__objectsAdded[0],p=m,n=void 0,q=void 0,B=void 0;if(z._modelViewMatrix==undefined){z._modelViewMatrix=new THREE.Matrix4;z._normalMatrixArray=new Float32Array(9);z._modelViewMatrixArray=new Float32Array(16);z._objectMatrixArray=new Float32Array(16);z.matrixWorld.flattenToArray(z._objectMatrixArray)}if(z instanceof THREE.Mesh){q=z.geometry;q.geometryGroups==
|
|
|
+undefined&&C(q);for(n in q.geometryGroups){B=q.geometryGroups[n];if(!B.__webGLVertexBuffer){var A=B;A.__webGLVertexBuffer=f.createBuffer();A.__webGLNormalBuffer=f.createBuffer();A.__webGLTangentBuffer=f.createBuffer();A.__webGLColorBuffer=f.createBuffer();A.__webGLUVBuffer=f.createBuffer();A.__webGLUV2Buffer=f.createBuffer();A.__webGLSkinVertexABuffer=f.createBuffer();A.__webGLSkinVertexBBuffer=f.createBuffer();A.__webGLSkinIndicesBuffer=f.createBuffer();A.__webGLSkinWeightsBuffer=f.createBuffer();
|
|
|
+A.__webGLFaceBuffer=f.createBuffer();A.__webGLLineBuffer=f.createBuffer();if(A.numMorphTargets){var D=void 0,P=void 0;A.__webGLMorphTargetsBuffers=[];D=0;for(P=A.numMorphTargets;D<P;D++)A.__webGLMorphTargetsBuffers.push(f.createBuffer())}A=B;var U=z,E=void 0,Z=void 0,ka=P=D=0,na=U.geometry.faces,wa=A.faces;E=0;for(Z=wa.length;E<Z;E++){fi=wa[E];face=na[fi];if(face instanceof THREE.Face3){D+=3;P+=1;ka+=3}else if(face instanceof THREE.Face4){D+=4;P+=2;ka+=4}}A.__vertexArray=new Float32Array(D*3);A.__normalArray=
|
|
|
+new Float32Array(D*3);A.__tangentArray=new Float32Array(D*4);A.__colorArray=new Float32Array(D*3);A.__uvArray=new Float32Array(D*2);A.__uv2Array=new Float32Array(D*2);A.__skinVertexAArray=new Float32Array(D*4);A.__skinVertexBArray=new Float32Array(D*4);A.__skinIndexArray=new Float32Array(D*4);A.__skinWeightArray=new Float32Array(D*4);A.__faceArray=new Uint16Array(P*3);A.__lineArray=new Uint16Array(ka*2);Z=E=A;na=void 0;wa=void 0;var la=void 0,Ca=void 0;la=void 0;var Da=!1;na=0;for(wa=U.materials.length;na<
|
|
|
+wa;na++){la=U.materials[na];if(la instanceof THREE.MeshFaceMaterial){la=0;for(Ca=Z.materials.length;la<Ca;la++)if(Z.materials[la]&&Z.materials[la].shading!=undefined&&Z.materials[la].shading==THREE.SmoothShading){Da=!0;break}}else if(la&&la.shading!=undefined&&la.shading==THREE.SmoothShading){Da=!0;break}if(Da)break}E.__needsSmoothNormals=Da;A.__webGLFaceCount=P*3;A.__webGLLineCount=ka*2;if(A.numMorphTargets){P=void 0;ka=void 0;A.__morphTargetsArrays=[];P=0;for(ka=A.numMorphTargets;P<ka;P++)A.__morphTargetsArrays.push(new Float32Array(D*
|
|
|
+3))}q.__dirtyVertices=!0;q.__dirtyMorphTargets=!0;q.__dirtyElements=!0;q.__dirtyUvs=!0;q.__dirtyNormals=!0;q.__dirtyTangents=!0;q.__dirtyColors=!0}F(p.__webglObjects,B,z)}}else if(z instanceof THREE.Ribbon){q=z.geometry;if(!q.__webGLVertexBuffer){n=q;n.__webGLVertexBuffer=f.createBuffer();n.__webGLColorBuffer=f.createBuffer();n=q;B=n.vertices.length;n.__vertexArray=new Float32Array(B*3);n.__colorArray=new Float32Array(B*3);n.__webGLVertexCount=B;q.__dirtyVertices=!0;q.__dirtyColors=!0}F(p.__webglObjects,
|
|
|
+q,z)}else if(z instanceof THREE.Line){q=z.geometry;if(!q.__webGLVertexBuffer){n=q;n.__webGLVertexBuffer=f.createBuffer();n.__webGLColorBuffer=f.createBuffer();n=q;B=n.vertices.length;n.__vertexArray=new Float32Array(B*3);n.__colorArray=new Float32Array(B*3);n.__webGLLineCount=B;q.__dirtyVertices=!0;q.__dirtyColors=!0}F(p.__webglObjects,q,z)}else if(z instanceof THREE.ParticleSystem){q=z.geometry;if(!q.__webGLVertexBuffer){n=q;n.__webGLVertexBuffer=f.createBuffer();n.__webGLColorBuffer=f.createBuffer();
|
|
|
+n=q;B=n.vertices.length;n.__vertexArray=new Float32Array(B*3);n.__colorArray=new Float32Array(B*3);n.__sortArray=[];n.__webGLParticleCount=B;q.__dirtyVertices=!0;q.__dirtyColors=!0}F(p.__webglObjects,q,z)}else THREE.MarchingCubes!==undefined&&z instanceof THREE.MarchingCubes&&p.__webglObjectsImmediate.push({object:z,opaque:{list:[],count:0},transparent:{list:[],count:0}});m.__objectsAdded.splice(0,1)}for(;m.__objectsRemoved.length;){z=m.__objectsRemoved[0];p=m;q=void 0;n=void 0;for(q=p.__webglObjects.length-
|
|
|
+1;q>=0;q--){n=p.__webglObjects[q].object;z==n&&p.__webglObjects.splice(q,1)}m.__objectsRemoved.splice(0,1)}z=0;for(p=m.__webglObjects.length;z<p;z++){n=m.__webglObjects[z].object;B=void 0;q=void 0;A=void 0;if(n instanceof THREE.Mesh){q=n.geometry;for(B in q.geometryGroups){A=q.geometryGroups[B];if(q.__dirtyVertices||q.__dirtyMorphTargets||q.__dirtyElements||q.__dirtyUvs||q.__dirtyNormals||q.__dirtyColors||q.__dirtyTangents){D=f.DYNAMIC_DRAW;P=void 0;ka=void 0;var Pa=void 0,K=void 0,Na=void 0,Ia=void 0,
|
|
|
+Oa=void 0;Pa=void 0;var S=void 0,V=void 0,W=void 0,ya=void 0;S=void 0;V=void 0;W=void 0;K=void 0;S=void 0;V=void 0;W=void 0;ya=void 0;S=void 0;V=void 0;W=void 0;ya=void 0;S=void 0;V=void 0;W=void 0;ya=void 0;S=void 0;V=void 0;W=void 0;ya=void 0;S=void 0;V=void 0;W=void 0;ya=void 0;K=void 0;Ia=void 0;Na=void 0;Oa=void 0;var Ma=void 0,Fa=void 0,Ba=void 0,Ga=Ca=la=Da=wa=na=U=Z=E=0,H=0,Ja=0,Ha=A.__vertexArray,O=A.__uvArray,oa=A.__uv2Array,$=A.__normalArray,J=A.__tangentArray,T=A.__colorArray,fa=A.__skinVertexAArray,
|
|
|
+pa=A.__skinVertexBArray,sa=A.__skinIndexArray,ua=A.__skinWeightArray,Ra=A.__morphTargetsArrays,La=A.__faceArray,Ka=A.__lineArray,Wa=A.__needsSmoothNormals,Ea=n.geometry,Sa=Ea.__dirtyVertices,ab=Ea.__dirtyElements,$a=Ea.__dirtyUvs,bb=Ea.__dirtyNormals,cb=Ea.__dirtyTangents,db=Ea.__dirtyColors,eb=Ea.__dirtyMorphTargets,Qa=Ea.vertices,fb=A.faces,gb=Ea.faces,hb=Ea.uvs,ib=Ea.uvs2,Ta=Ea.colors,Xa=Ea.skinVerticesA,Ya=Ea.skinVerticesB,Za=Ea.skinIndices,Va=Ea.skinWeights,Ua=Ea.morphTargets;P=0;for(ka=fb.length;P<
|
|
|
+ka;P++){Pa=fb[P];K=gb[Pa];Oa=hb[Pa];Pa=ib[Pa];Na=K.vertexNormals;Ia=K.normal;if(K instanceof THREE.Face3){if(Sa){S=Qa[K.a].position;V=Qa[K.b].position;W=Qa[K.c].position;Ha[Z]=S.x;Ha[Z+1]=S.y;Ha[Z+2]=S.z;Ha[Z+3]=V.x;Ha[Z+4]=V.y;Ha[Z+5]=V.z;Ha[Z+6]=W.x;Ha[Z+7]=W.y;Ha[Z+8]=W.z;Z+=9}if(eb){Ma=0;for(Fa=Ua.length;Ma<Fa;Ma++){S=Ua[Ma].vertices[K.a].position;V=Ua[Ma].vertices[K.b].position;W=Ua[Ma].vertices[K.c].position;Ba=Ra[Ma];Ba[Ja+0]=S.x;Ba[Ja+1]=S.y;Ba[Ja+2]=S.z;Ba[Ja+3]=V.x;Ba[Ja+4]=V.y;Ba[Ja+5]=
|
|
|
+V.z;Ba[Ja+6]=W.x;Ba[Ja+7]=W.y;Ba[Ja+8]=W.z}Ja+=9}if(Va.length){S=Va[K.a];V=Va[K.b];W=Va[K.c];ua[H]=S.x;ua[H+1]=S.y;ua[H+2]=S.z;ua[H+3]=S.w;ua[H+4]=V.x;ua[H+5]=V.y;ua[H+6]=V.z;ua[H+7]=V.w;ua[H+8]=W.x;ua[H+9]=W.y;ua[H+10]=W.z;ua[H+11]=W.w;S=Za[K.a];V=Za[K.b];W=Za[K.c];sa[H]=S.x;sa[H+1]=S.y;sa[H+2]=S.z;sa[H+3]=S.w;sa[H+4]=V.x;sa[H+5]=V.y;sa[H+6]=V.z;sa[H+7]=V.w;sa[H+8]=W.x;sa[H+9]=W.y;sa[H+10]=W.z;sa[H+11]=W.w;S=Xa[K.a];V=Xa[K.b];W=Xa[K.c];fa[H]=S.x;fa[H+1]=S.y;fa[H+2]=S.z;fa[H+3]=1;fa[H+4]=V.x;fa[H+
|
|
|
+5]=V.y;fa[H+6]=V.z;fa[H+7]=1;fa[H+8]=W.x;fa[H+9]=W.y;fa[H+10]=W.z;fa[H+11]=1;S=Ya[K.a];V=Ya[K.b];W=Ya[K.c];pa[H]=S.x;pa[H+1]=S.y;pa[H+2]=S.z;pa[H+3]=1;pa[H+4]=V.x;pa[H+5]=V.y;pa[H+6]=V.z;pa[H+7]=1;pa[H+8]=W.x;pa[H+9]=W.y;pa[H+10]=W.z;pa[H+11]=1;H+=12}if(db&&Ta.length){S=Ta[K.a];V=Ta[K.b];W=Ta[K.c];T[Ga]=S.r;T[Ga+1]=S.g;T[Ga+2]=S.b;T[Ga+3]=V.r;T[Ga+4]=V.g;T[Ga+5]=V.b;T[Ga+6]=W.r;T[Ga+7]=W.g;T[Ga+8]=W.b;Ga+=9}if(cb&&Ea.hasTangents){S=Qa[K.a].tangent;V=Qa[K.b].tangent;W=Qa[K.c].tangent;J[la]=S.x;J[la+
|
|
|
+1]=S.y;J[la+2]=S.z;J[la+3]=S.w;J[la+4]=V.x;J[la+5]=V.y;J[la+6]=V.z;J[la+7]=V.w;J[la+8]=W.x;J[la+9]=W.y;J[la+10]=W.z;J[la+11]=W.w;la+=12}if(bb)if(Na.length==3&&Wa)for(K=0;K<3;K++){Ia=Na[K];$[Da]=Ia.x;$[Da+1]=Ia.y;$[Da+2]=Ia.z;Da+=3}else for(K=0;K<3;K++){$[Da]=Ia.x;$[Da+1]=Ia.y;$[Da+2]=Ia.z;Da+=3}if($a&&Oa)for(K=0;K<3;K++){Na=Oa[K];O[U]=Na.u;O[U+1]=Na.v;U+=2}if($a&&Pa)for(K=0;K<3;K++){Oa=Pa[K];oa[na]=Oa.u;oa[na+1]=Oa.v;na+=2}if(ab){La[wa]=E;La[wa+1]=E+1;La[wa+2]=E+2;wa+=3;Ka[Ca]=E;Ka[Ca+1]=E+1;Ka[Ca+
|
|
|
+2]=E;Ka[Ca+3]=E+2;Ka[Ca+4]=E+1;Ka[Ca+5]=E+2;Ca+=6;E+=3}}else if(K instanceof THREE.Face4){if(Sa){S=Qa[K.a].position;V=Qa[K.b].position;W=Qa[K.c].position;ya=Qa[K.d].position;Ha[Z]=S.x;Ha[Z+1]=S.y;Ha[Z+2]=S.z;Ha[Z+3]=V.x;Ha[Z+4]=V.y;Ha[Z+5]=V.z;Ha[Z+6]=W.x;Ha[Z+7]=W.y;Ha[Z+8]=W.z;Ha[Z+9]=ya.x;Ha[Z+10]=ya.y;Ha[Z+11]=ya.z;Z+=12}if(eb){Ma=0;for(Fa=Ua.length;Ma<Fa;Ma++){S=Ua[Ma].vertices[K.a].position;V=Ua[Ma].vertices[K.b].position;W=Ua[Ma].vertices[K.c].position;ya=Ua[Ma].vertices[K.d].position;Ba=Ra[Ma];
|
|
|
+Ba[Ja+0]=S.x;Ba[Ja+1]=S.y;Ba[Ja+2]=S.z;Ba[Ja+3]=V.x;Ba[Ja+4]=V.y;Ba[Ja+5]=V.z;Ba[Ja+6]=W.x;Ba[Ja+7]=W.y;Ba[Ja+8]=W.z;Ba[Ja+9]=ya.x;Ba[Ja+10]=ya.y;Ba[Ja+11]=ya.z}Ja+=12}if(Va.length){S=Va[K.a];V=Va[K.b];W=Va[K.c];ya=Va[K.d];ua[H]=S.x;ua[H+1]=S.y;ua[H+2]=S.z;ua[H+3]=S.w;ua[H+4]=V.x;ua[H+5]=V.y;ua[H+6]=V.z;ua[H+7]=V.w;ua[H+8]=W.x;ua[H+9]=W.y;ua[H+10]=W.z;ua[H+11]=W.w;ua[H+12]=ya.x;ua[H+13]=ya.y;ua[H+14]=ya.z;ua[H+15]=ya.w;S=Za[K.a];V=Za[K.b];W=Za[K.c];ya=Za[K.d];sa[H]=S.x;sa[H+1]=S.y;sa[H+2]=S.z;sa[H+
|
|
|
+3]=S.w;sa[H+4]=V.x;sa[H+5]=V.y;sa[H+6]=V.z;sa[H+7]=V.w;sa[H+8]=W.x;sa[H+9]=W.y;sa[H+10]=W.z;sa[H+11]=W.w;sa[H+12]=ya.x;sa[H+13]=ya.y;sa[H+14]=ya.z;sa[H+15]=ya.w;S=Xa[K.a];V=Xa[K.b];W=Xa[K.c];ya=Xa[K.d];fa[H]=S.x;fa[H+1]=S.y;fa[H+2]=S.z;fa[H+3]=1;fa[H+4]=V.x;fa[H+5]=V.y;fa[H+6]=V.z;fa[H+7]=1;fa[H+8]=W.x;fa[H+9]=W.y;fa[H+10]=W.z;fa[H+11]=1;fa[H+12]=ya.x;fa[H+13]=ya.y;fa[H+14]=ya.z;fa[H+15]=1;S=Ya[K.a];V=Ya[K.b];W=Ya[K.c];ya=Ya[K.d];pa[H]=S.x;pa[H+1]=S.y;pa[H+2]=S.z;pa[H+3]=1;pa[H+4]=V.x;pa[H+5]=V.y;
|
|
|
+pa[H+6]=V.z;pa[H+7]=1;pa[H+8]=W.x;pa[H+9]=W.y;pa[H+10]=W.z;pa[H+11]=1;pa[H+12]=ya.x;pa[H+13]=ya.y;pa[H+14]=ya.z;pa[H+15]=1;H+=16}if(db&&Ta.length){S=Ta[K.a];V=Ta[K.b];W=Ta[K.c];ya=Ta[K.d];T[Ga]=S.r;T[Ga+1]=S.g;T[Ga+2]=S.b;T[Ga+3]=V.r;T[Ga+4]=V.g;T[Ga+5]=V.b;T[Ga+6]=W.r;T[Ga+7]=W.g;T[Ga+8]=W.b;T[Ga+9]=ya.r;T[Ga+10]=ya.g;T[Ga+11]=ya.b;Ga+=12}if(cb&&Ea.hasTangents){S=Qa[K.a].tangent;V=Qa[K.b].tangent;W=Qa[K.c].tangent;K=Qa[K.d].tangent;J[la]=S.x;J[la+1]=S.y;J[la+2]=S.z;J[la+3]=S.w;J[la+4]=V.x;J[la+5]=
|
|
|
+V.y;J[la+6]=V.z;J[la+7]=V.w;J[la+8]=W.x;J[la+9]=W.y;J[la+10]=W.z;J[la+11]=W.w;J[la+12]=K.x;J[la+13]=K.y;J[la+14]=K.z;J[la+15]=K.w;la+=16}if(bb)if(Na.length==4&&Wa)for(K=0;K<4;K++){Ia=Na[K];$[Da]=Ia.x;$[Da+1]=Ia.y;$[Da+2]=Ia.z;Da+=3}else for(K=0;K<4;K++){$[Da]=Ia.x;$[Da+1]=Ia.y;$[Da+2]=Ia.z;Da+=3}if($a&&Oa)for(K=0;K<4;K++){Na=Oa[K];O[U]=Na.u;O[U+1]=Na.v;U+=2}if($a&&Pa)for(K=0;K<4;K++){Oa=Pa[K];oa[na]=Oa.u;oa[na+1]=Oa.v;na+=2}if(ab){La[wa]=E;La[wa+1]=E+1;La[wa+2]=E+2;La[wa+3]=E;La[wa+4]=E+2;La[wa+5]=
|
|
|
+E+3;wa+=6;Ka[Ca]=E;Ka[Ca+1]=E+1;Ka[Ca+2]=E;Ka[Ca+3]=E+3;Ka[Ca+4]=E+1;Ka[Ca+5]=E+2;Ka[Ca+6]=E+2;Ka[Ca+7]=E+3;Ca+=8;E+=4}}}if(Sa){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,Ha,D)}if(eb){Ma=0;for(Fa=Ua.length;Ma<Fa;Ma++){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLMorphTargetsBuffers[Ma]);f.bufferData(f.ARRAY_BUFFER,Ra[Ma],D)}}if(db&&Ta.length){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLColorBuffer);f.bufferData(f.ARRAY_BUFFER,T,D)}if(bb){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLNormalBuffer);
|
|
|
+f.bufferData(f.ARRAY_BUFFER,$,D)}if(cb&&Ea.hasTangents){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLTangentBuffer);f.bufferData(f.ARRAY_BUFFER,J,D)}if($a&&U>0){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLUVBuffer);f.bufferData(f.ARRAY_BUFFER,O,D)}if($a&&na>0){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLUV2Buffer);f.bufferData(f.ARRAY_BUFFER,oa,D)}if(ab){f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,A.__webGLFaceBuffer);f.bufferData(f.ELEMENT_ARRAY_BUFFER,La,D);f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,A.__webGLLineBuffer);f.bufferData(f.ELEMENT_ARRAY_BUFFER,
|
|
|
+Ka,D)}if(H>0){f.bindBuffer(f.ARRAY_BUFFER,A.__webGLSkinVertexABuffer);f.bufferData(f.ARRAY_BUFFER,fa,D);f.bindBuffer(f.ARRAY_BUFFER,A.__webGLSkinVertexBBuffer);f.bufferData(f.ARRAY_BUFFER,pa,D);f.bindBuffer(f.ARRAY_BUFFER,A.__webGLSkinIndicesBuffer);f.bufferData(f.ARRAY_BUFFER,sa,D);f.bindBuffer(f.ARRAY_BUFFER,A.__webGLSkinWeightsBuffer);f.bufferData(f.ARRAY_BUFFER,ua,D)}}}q.__dirtyVertices=!1;q.__dirtyMorphTargets=!1;q.__dirtyElements=!1;q.__dirtyUvs=!1;q.__dirtyNormals=!1;q.__dirtyTangents=!1;q.__dirtyColors=
|
|
|
+!1}else if(n instanceof THREE.Ribbon){q=n.geometry;if(q.__dirtyVertices||q.__dirtyColors){n=q;B=f.DYNAMIC_DRAW;E=void 0;E=void 0;Z=void 0;A=void 0;U=n.vertices;D=n.colors;na=U.length;P=D.length;wa=n.__vertexArray;ka=n.__colorArray;Da=n.__dirtyColors;if(n.__dirtyVertices){for(E=0;E<na;E++){Z=U[E].position;A=E*3;wa[A]=Z.x;wa[A+1]=Z.y;wa[A+2]=Z.z}f.bindBuffer(f.ARRAY_BUFFER,n.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,wa,B)}if(Da){for(E=0;E<P;E++){color=D[E];A=E*3;ka[A]=color.r;ka[A+1]=color.g;
|
|
|
+ka[A+2]=color.b}f.bindBuffer(f.ARRAY_BUFFER,n.__webGLColorBuffer);f.bufferData(f.ARRAY_BUFFER,ka,B)}}q.__dirtyVertices=!1;q.__dirtyColors=!1}else if(n instanceof THREE.Line){q=n.geometry;if(q.__dirtyVertices||q.__dirtyColors){n=q;B=f.DYNAMIC_DRAW;E=void 0;E=void 0;Z=void 0;A=void 0;U=n.vertices;D=n.colors;na=U.length;P=D.length;wa=n.__vertexArray;ka=n.__colorArray;Da=n.__dirtyColors;if(n.__dirtyVertices){for(E=0;E<na;E++){Z=U[E].position;A=E*3;wa[A]=Z.x;wa[A+1]=Z.y;wa[A+2]=Z.z}f.bindBuffer(f.ARRAY_BUFFER,
|
|
|
+n.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,wa,B)}if(Da){for(E=0;E<P;E++){color=D[E];A=E*3;ka[A]=color.r;ka[A+1]=color.g;ka[A+2]=color.b}f.bindBuffer(f.ARRAY_BUFFER,n.__webGLColorBuffer);f.bufferData(f.ARRAY_BUFFER,ka,B)}}q.__dirtyVertices=!1;q.__dirtyColors=!1}else if(n instanceof THREE.ParticleSystem){q=n.geometry;(q.__dirtyVertices||q.__dirtyColors||n.sortParticles)&&c(q,f.DYNAMIC_DRAW,n);q.__dirtyVertices=!1;q.__dirtyColors=!1}}};this.setFaceCulling=function(m,z){if(m){!z||z=="ccw"?f.frontFace(f.CCW):
|
|
|
+f.frontFace(f.CW);if(m=="back")f.cullFace(f.BACK);else m=="front"?f.cullFace(f.FRONT):f.cullFace(f.FRONT_AND_BACK);f.enable(f.CULL_FACE)}else f.disable(f.CULL_FACE)};this.supportsVertexTextures=function(){return f.getParameter(f.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0}};
|
|
|
+THREE.Snippets={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",map_particle_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, gl_PointCoord );\n#endif",map_pars_fragment:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform sampler2D map;\n#endif",map_pars_vertex:"#ifdef USE_MAP\nvarying vec2 vUv;\n#endif",map_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, vUv );\n#endif",map_vertex:"#ifdef USE_MAP\nvUv = uv;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\nuniform sampler2D lightMap;\n#endif",
|
|
|
+lightmap_pars_vertex:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\ngl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n#endif",lightmap_vertex:"#ifdef USE_LIGHTMAP\nvUv2 = uv2;\n#endif",lights_pars_vertex:"uniform bool enableLighting;\nuniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n#ifdef PHONG\nvarying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];\n#endif\n#endif",
|
|
|
lights_vertex:"if ( !enableLighting ) {\nvLightWeighting = vec3( 1.0 );\n} else {\nvLightWeighting = ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nfor( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nfloat directionalLightWeighting = max( dot( transformedNormal, normalize( lDirection.xyz ) ), 0.0 );\nvLightWeighting += directionalLightColor[ i ] * directionalLightWeighting;\n}\n#endif\n#if MAX_POINT_LIGHTS > 0\nfor( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 pointLightVector = normalize( lPosition.xyz - mvPosition.xyz );\nfloat pointLightWeighting = max( dot( transformedNormal, pointLightVector ), 0.0 );\nvLightWeighting += pointLightColor[ i ] * pointLightWeighting;\n#ifdef PHONG\nvPointLightVector[ i ] = pointLightVector;\n#endif\n}\n#endif\n}",
|
|
|
lights_pars_fragment:"#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nvarying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];\n#endif\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;",lights_fragment:"vec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );\nvec4 mColor = vec4( diffuse, opacity );\nvec4 mSpecular = vec4( specular, opacity );\n#if MAX_POINT_LIGHTS > 0\nvec4 pointDiffuse = vec4( 0.0 );\nvec4 pointSpecular = vec4( 0.0 );\nfor( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {\nvec3 pointVector = normalize( vPointLightVector[ i ] );\nvec3 pointHalfVector = normalize( vPointLightVector[ i ] + vViewPosition );\nfloat pointDotNormalHalf = dot( normal, pointHalfVector );\nfloat pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );\nfloat pointSpecularWeight = 0.0;\nif ( pointDotNormalHalf >= 0.0 )\npointSpecularWeight = pow( pointDotNormalHalf, shininess );\npointDiffuse += mColor * pointDiffuseWeight;\npointSpecular += mSpecular * pointSpecularWeight;\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nvec4 dirDiffuse = vec4( 0.0 );\nvec4 dirSpecular = vec4( 0.0 );\nfor( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\nvec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );\nfloat dirDotNormalHalf = dot( normal, dirHalfVector );\nfloat dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );\nfloat dirSpecularWeight = 0.0;\nif ( dirDotNormalHalf >= 0.0 )\ndirSpecularWeight = pow( dirDotNormalHalf, shininess );\ndirDiffuse += mColor * dirDiffuseWeight;\ndirSpecular += mSpecular * dirSpecularWeight;\n}\n#endif\nvec4 totalLight = vec4( ambient, opacity );\n#if MAX_DIR_LIGHTS > 0\ntotalLight += dirDiffuse + dirSpecular;\n#endif\n#if MAX_POINT_LIGHTS > 0\ntotalLight += pointDiffuse + pointSpecular;\n#endif\ngl_FragColor = gl_FragColor * totalLight;",
|
|
|
color_pars_fragment:"#ifdef USE_COLOR\nvarying vec3 vColor;\n#endif",color_fragment:"#ifdef USE_COLOR\ngl_FragColor = gl_FragColor * vec4( vColor, opacity );\n#endif",color_pars_vertex:"#ifdef USE_COLOR\nvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\nvColor = color;\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\nuniform mat4 boneGlobalMatrices[ MAX_BONES ];\n#endif",skinning_vertex:"#ifdef USE_SKINNING\ngl_Position = ( boneGlobalMatrices[ int( skinIndex.x ) ] * skinVertexA ) * skinWeight.x;\ngl_Position += ( boneGlobalMatrices[ int( skinIndex.y ) ] * skinVertexB ) * skinWeight.y;\ngl_Position = projectionMatrix * viewMatrix * objectMatrix * gl_Position;\n#else\ngl_Position = projectionMatrix * mvPosition;\n#endif",
|
|
@@ -328,10 +328,10 @@ THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this
|
|
|
var GeometryUtils={merge:function(a,c){var b=c instanceof THREE.Mesh,d=a.vertices.length,e=b?c.geometry:c,g=a.vertices,h=e.vertices,j=a.faces,k=e.faces,l=a.uvs;e=e.uvs;b&&c.matrixAutoUpdate&&c.updateMatrix();for(var o=0,v=h.length;o<v;o++){var u=new THREE.Vertex(h[o].position.clone());b&&c.matrix.multiplyVector3(u.position);g.push(u)}o=0;for(v=k.length;o<v;o++){h=k[o];var t,y=h.vertexNormals;if(h instanceof THREE.Face3)t=new THREE.Face3(h.a+d,h.b+d,h.c+d);else h instanceof THREE.Face4&&(t=new THREE.Face4(h.a+
|
|
|
d,h.b+d,h.c+d,h.d+d));t.centroid.copy(h.centroid);t.normal.copy(h.normal);b=0;for(g=y.length;b<g;b++){u=y[b];t.vertexNormals.push(u.clone())}t.materials=h.materials.slice();j.push(t)}o=0;for(v=e.length;o<v;o++){d=e[o];j=[];b=0;for(g=d.length;b<g;b++)j.push(new THREE.UV(d[b].u,d[b].v));l.push(j)}}},ImageUtils={loadTexture:function(a,c,b){var d=new Image,e=new THREE.Texture(d,c);d.onload=function(){e.needsUpdate=!0;b&&b(this)};d.src=a;return e},loadTextureCube:function(a,c,b){var d,e=[],g=new THREE.Texture(e,
|
|
|
c);c=e.loadCount=0;for(d=a.length;c<d;++c){e[c]=new Image;e[c].onload=function(){e.loadCount+=1;if(e.loadCount==6)g.needsUpdate=!0;b&&b(this)};e[c].src=a[c]}return g}},SceneUtils={loadScene:function(a,c,b,d){a=new Worker(a);a.postMessage(0);a.onmessage=function(e){function g(){for(o in M.objects)if(!I.objects[o]){C=M.objects[o];if(x=I.geometries[C.geometry]){Y=[];for(i=0;i<C.materials.length;i++)Y[i]=I.materials[C.materials[i]];F=C.position;r=C.rotation;s=C.scale;object=new THREE.Mesh(x,Y);object.position.set(F[0],
|
|
|
-F[1],F[2]);object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=C.visible;I.scene.addObject(object);I.objects[o]=object}}}function h(ca){return function(za){I.geometries[ca]=za;g();W-=1;j()}}function j(){d({total_models:da,total_textures:ga,loaded_models:da-W,loaded_textures:ga-R},I);W==0&&R==0&&b(I)}var k,l,o,v,u,t,y,C,F,w,G,x,N,L,Y,M,f,W,R,da,ga,I;M=e.data;f=new THREE.Loader;R=W=0;I={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},
|
|
|
+F[1],F[2]);object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=C.visible;I.scene.addObject(object);I.objects[o]=object}}}function h(ca){return function(za){I.geometries[ca]=za;g();X-=1;j()}}function j(){d({total_models:da,total_textures:ga,loaded_models:da-X,loaded_textures:ga-R},I);X==0&&R==0&&b(I)}var k,l,o,v,u,t,y,C,F,w,G,x,N,L,Y,M,f,X,R,da,ga,I;M=e.data;f=new THREE.Loader;R=X=0;I={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},
|
|
|
lights:{},fogs:{}};e=function(){R-=1;j()};for(u in M.cameras){w=M.cameras[u];if(w.type=="perspective")N=new THREE.Camera(w.fov,w.aspect,w.near,w.far);else if(w.type=="ortho"){N=new THREE.Camera;N.projectionMatrix=THREE.Matrix4.makeOrtho(w.left,w.right,w.top,w.bottom,w.near,w.far)}F=w.position;w=w.target;N.position.set(F[0],F[1],F[2]);N.target.position.set(w[0],w[1],w[2]);I.cameras[u]=N}for(v in M.lights){u=M.lights[v];if(u.type=="directional"){F=u.direction;light=new THREE.DirectionalLight;light.position.set(F[0],
|
|
|
F[1],F[2]);light.position.normalize()}else if(u.type=="point"){F=u.position;light=new THREE.PointLight;light.position.set(F[0],F[1],F[2])}w=u.color;i=u.intensity||1;light.color.setRGB(w[0]*i,w[1]*i,w[2]*i);I.scene.addLight(light);I.lights[v]=light}for(t in M.fogs){v=M.fogs[t];if(v.type=="linear")L=new THREE.Fog(0,v.near,v.far);else v.type=="exp2"&&(L=new THREE.FogExp2(0,v.density));w=v.color;L.color.setRGB(w[0],w[1],w[2]);I.fogs[t]=L}if(I.cameras&&M.defaults.camera)I.currentCamera=I.cameras[M.defaults.camera];
|
|
|
-if(I.fogs&&M.defaults.fog)I.scene.fog=I.fogs[M.defaults.fog];w=M.defaults.bgcolor;I.bgColor=new THREE.Color;I.bgColor.setRGB(w[0],w[1],w[2]);I.bgColorAlpha=M.defaults.bgalpha;for(k in M.geometries){t=M.geometries[k];if(t.type=="bin_mesh"||t.type=="ascii_mesh")W+=1}da=W;for(k in M.geometries){t=M.geometries[k];if(t.type=="cube"){x=new Cube(t.width,t.height,t.depth,t.segmentsWidth,t.segmentsHeight,t.segmentsDepth,null,t.flipped,t.sides);I.geometries[k]=x}else if(t.type=="plane"){x=new Plane(t.width,
|
|
|
+if(I.fogs&&M.defaults.fog)I.scene.fog=I.fogs[M.defaults.fog];w=M.defaults.bgcolor;I.bgColor=new THREE.Color;I.bgColor.setRGB(w[0],w[1],w[2]);I.bgColorAlpha=M.defaults.bgalpha;for(k in M.geometries){t=M.geometries[k];if(t.type=="bin_mesh"||t.type=="ascii_mesh")X+=1}da=X;for(k in M.geometries){t=M.geometries[k];if(t.type=="cube"){x=new Cube(t.width,t.height,t.depth,t.segmentsWidth,t.segmentsHeight,t.segmentsDepth,null,t.flipped,t.sides);I.geometries[k]=x}else if(t.type=="plane"){x=new Plane(t.width,
|
|
|
t.height,t.segmentsWidth,t.segmentsHeight);I.geometries[k]=x}else if(t.type=="sphere"){x=new Sphere(t.radius,t.segmentsWidth,t.segmentsHeight);I.geometries[k]=x}else if(t.type=="cylinder"){x=new Cylinder(t.numSegs,t.topRad,t.botRad,t.height,t.topOffset,t.botOffset);I.geometries[k]=x}else if(t.type=="torus"){x=new Torus(t.radius,t.tube,t.segmentsR,t.segmentsT);I.geometries[k]=x}else if(t.type=="icosahedron"){x=new Icosahedron(t.subdivisions);I.geometries[k]=x}else if(t.type=="bin_mesh")f.loadBinary({model:t.url,
|
|
|
callback:h(k)});else t.type=="ascii_mesh"&&f.loadAscii({model:t.url,callback:h(k)})}for(y in M.textures){k=M.textures[y];R+=k.url instanceof Array?k.url.length:1}ga=R;for(y in M.textures){k=M.textures[y];if(k.mapping!=undefined&&THREE[k.mapping]!=undefined)k.mapping=new THREE[k.mapping];if(k.url instanceof Array)t=ImageUtils.loadTextureCube(k.url,k.mapping,e);else{t=ImageUtils.loadTexture(k.url,k.mapping,e);if(THREE[k.minFilter]!=undefined)t.minFilter=THREE[k.minFilter];if(THREE[k.magFilter]!=undefined)t.magFilter=
|
|
|
THREE[k.magFilter]}I.textures[y]=t}for(l in M.materials){y=M.materials[l];for(G in y.parameters)if(G=="envMap"||G=="map"||G=="lightMap")y.parameters[G]=I.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 G=="combine"&&(y.parameters[G]=y.parameters[G]=="MixOperation"?THREE.MixOperation:THREE.MultiplyOperation);y=new THREE[y.type](y.parameters);
|
|
@@ -347,8 +347,8 @@ cube:{uniforms:{tCube:{type:"t",value:1,texture:null}},vertexShader:"varying vec
|
|
|
value:0,texture:null},uImageIncrement:{type:"v2",value:new THREE.Vector2(0.001953125,0)},cKernel:{type:"fv1",value:[]}},vertexShader:"varying vec2 vUv;\nuniform vec2 uImageIncrement;\nvoid main(void) {\nvUv = uv - ((KERNEL_SIZE - 1.0) / 2.0) * uImageIncrement;\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"varying vec2 vUv;\nuniform sampler2D tDiffuse;\nuniform vec2 uImageIncrement;\nuniform float cKernel[KERNEL_SIZE];\nvoid main(void) {\nvec2 imageCoord = vUv;\nvec4 sum = vec4( 0.0, 0.0, 0.0, 0.0 );\nfor( int i=0; i<KERNEL_SIZE; ++i ) {\nsum += texture2D( tDiffuse, imageCoord ) * cKernel[i];\nimageCoord += uImageIncrement;\n}\ngl_FragColor = sum;\n}"},
|
|
|
film:{uniforms:{tDiffuse:{type:"t",value:0,texture:null},time:{type:"f",value:0},nIntensity:{type:"f",value:0.5},sIntensity:{type:"f",value:0.05},sCount:{type:"f",value:4096},grayscale:{type:"i",value:1}},vertexShader:"varying vec2 vUv;\nvoid main() {\nvUv = vec2( uv.x, 1.0 - uv.y );\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"varying vec2 vUv;\nuniform sampler2D tDiffuse;\nuniform float time;\nuniform bool grayscale;\nuniform float nIntensity;\nuniform float sIntensity;\nuniform float sCount;\nvoid main() {\nvec4 cTextureScreen = texture2D( tDiffuse, vUv );\nfloat x = vUv.x * vUv.y * time * 1000.0;\nx = mod( x, 13.0 ) * mod( x, 123.0 );\nfloat dx = mod( x, 0.01 );\nvec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx * 100.0, 0.0, 1.0 );\nvec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );\ncResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;\ncResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );\nif( grayscale ) {\ncResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );\n}\ngl_FragColor = vec4( cResult, cTextureScreen.a );\n}"},
|
|
|
screen:{uniforms:{tDiffuse:{type:"t",value:0,texture:null},opacity:{type:"f",value:1}},vertexShader:"varying vec2 vUv;\nvoid main() {\nvUv = vec2( uv.x, 1.0 - uv.y );\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"varying vec2 vUv;\nuniform sampler2D tDiffuse;\nuniform float opacity;\nvoid main() {\nvec4 texel = texture2D( tDiffuse, vUv );\ngl_FragColor = opacity * texel;\n}"},basic:{uniforms:{},vertexShader:"void main() {\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",
|
|
|
-fragmentShader:"void main() {\ngl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );\n}"}},buildKernel:function(a){var c,b,d,e,g=2*Math.ceil(a*3)+1;g>25&&(g=25);e=(g-1)*0.5;b=Array(g);for(c=d=0;c<g;++c){b[c]=Math.exp(-((c-e)*(c-e))/(2*a*a));d+=b[c]}for(c=0;c<g;++c)b[c]/=d;return b}},Cube=function(a,c,b,d,e,g,h,j,k){function l(F,w,G,x,N,L,Y,M){var f,W,R=d||1,da=e||1,ga=N/2,I=L/2,ca=o.vertices.length;if(F=="x"&&w=="y"||F=="y"&&w=="x")f="z";else if(F=="x"&&w=="z"||F=="z"&&w=="x"){f="y";da=g||1}else if(F=="z"&&
|
|
|
-w=="y"||F=="y"&&w=="z"){f="x";R=g||1}var za=R+1,ea=da+1;N/=R;var xa=L/da;for(W=0;W<ea;W++)for(L=0;L<za;L++){var ja=new THREE.Vector3;ja[F]=(L*N-ga)*G;ja[w]=(W*xa-I)*x;ja[f]=Y;o.vertices.push(new THREE.Vertex(ja))}for(W=0;W<da;W++)for(L=0;L<R;L++){o.faces.push(new THREE.Face4(L+za*W+ca,L+za*(W+1)+ca,L+1+za*(W+1)+ca,L+1+za*W+ca,null,M));o.uvs.push([new THREE.UV(L/R,W/da),new THREE.UV(L/R,(W+1)/da),new THREE.UV((L+1)/R,(W+1)/da),new THREE.UV((L+1)/R,W/da)])}}THREE.Geometry.call(this);var o=this,v=a/
|
|
|
+fragmentShader:"void main() {\ngl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );\n}"}},buildKernel:function(a){var c,b,d,e,g=2*Math.ceil(a*3)+1;g>25&&(g=25);e=(g-1)*0.5;b=Array(g);for(c=d=0;c<g;++c){b[c]=Math.exp(-((c-e)*(c-e))/(2*a*a));d+=b[c]}for(c=0;c<g;++c)b[c]/=d;return b}},Cube=function(a,c,b,d,e,g,h,j,k){function l(F,w,G,x,N,L,Y,M){var f,X,R=d||1,da=e||1,ga=N/2,I=L/2,ca=o.vertices.length;if(F=="x"&&w=="y"||F=="y"&&w=="x")f="z";else if(F=="x"&&w=="z"||F=="z"&&w=="x"){f="y";da=g||1}else if(F=="z"&&
|
|
|
+w=="y"||F=="y"&&w=="z"){f="x";R=g||1}var za=R+1,ea=da+1;N/=R;var xa=L/da;for(X=0;X<ea;X++)for(L=0;L<za;L++){var ja=new THREE.Vector3;ja[F]=(L*N-ga)*G;ja[w]=(X*xa-I)*x;ja[f]=Y;o.vertices.push(new THREE.Vertex(ja))}for(X=0;X<da;X++)for(L=0;L<R;L++){o.faces.push(new THREE.Face4(L+za*X+ca,L+za*(X+1)+ca,L+1+za*(X+1)+ca,L+1+za*X+ca,null,M));o.uvs.push([new THREE.UV(L/R,X/da),new THREE.UV(L/R,(X+1)/da),new THREE.UV((L+1)/R,(X+1)/da),new THREE.UV((L+1)/R,X/da)])}}THREE.Geometry.call(this);var o=this,v=a/
|
|
|
2,u=c/2,t=b/2;j=j?-1:1;if(h!==undefined)if(h instanceof Array)this.materials=h;else{this.materials=[];for(var y=0;y<6;y++)this.materials.push([h])}else this.materials=[];this.sides={px:!0,nx:!0,py:!0,ny:!0,pz:!0,nz:!0};if(k!=undefined)for(var C in k)this.sides[C]!=undefined&&(this.sides[C]=k[C]);this.sides.px&&l("z","y",1*j,-1,b,c,-v,this.materials[0]);this.sides.nx&&l("z","y",-1*j,-1,b,c,v,this.materials[1]);this.sides.py&&l("x","z",1*j,1,a,b,u,this.materials[2]);this.sides.ny&&l("x","z",1*j,-1,
|
|
|
a,b,-u,this.materials[3]);this.sides.pz&&l("x","y",1*j,-1,a,c,t,this.materials[4]);this.sides.nz&&l("x","y",-1*j,-1,a,c,-t,this.materials[5]);(function(){for(var F=[],w=[],G=0,x=o.vertices.length;G<x;G++){for(var N=o.vertices[G],L=!1,Y=0,M=F.length;Y<M;Y++){var f=F[Y];if(N.position.x==f.position.x&&N.position.y==f.position.y&&N.position.z==f.position.z){w[G]=Y;L=!0;break}}if(!L){w[G]=F.length;F.push(new THREE.Vertex(N.position.clone()))}}G=0;for(x=o.faces.length;G<x;G++){N=o.faces[G];N.a=w[N.a];N.b=
|
|
|
w[N.b];N.c=w[N.c];N.d=w[N.d]}o.vertices=F})();this.computeCentroids();this.computeFaceNormals()};Cube.prototype=new THREE.Geometry;Cube.prototype.constructor=Cube;
|
|
@@ -371,8 +371,8 @@ THREE.MarchingCubes=function(a,c){THREE.Object3D.call(this);this.materials=c ins
|
|
|
0;this.hasPos=!1;this.hasNormal=!1;this.positionArray=new Float32Array(this.maxCount*3);this.normalArray=new Float32Array(this.maxCount*3)};this.lerp=function(b,d,e){return b+(d-b)*e};this.VIntX=function(b,d,e,g,h,j,k,l,o,v){h=(h-o)/(v-o);o=this.normal_cache;d[g]=j+h*this.delta;d[g+1]=k;d[g+2]=l;e[g]=this.lerp(o[b],o[b+3],h);e[g+1]=this.lerp(o[b+1],o[b+4],h);e[g+2]=this.lerp(o[b+2],o[b+5],h)};this.VIntY=function(b,d,e,g,h,j,k,l,o,v){h=(h-o)/(v-o);o=this.normal_cache;d[g]=j;d[g+1]=k+h*this.delta;d[g+
|
|
|
2]=l;d=b+this.yd*3;e[g]=this.lerp(o[b],o[d],h);e[g+1]=this.lerp(o[b+1],o[d+1],h);e[g+2]=this.lerp(o[b+2],o[d+2],h)};this.VIntZ=function(b,d,e,g,h,j,k,l,o,v){h=(h-o)/(v-o);o=this.normal_cache;d[g]=j;d[g+1]=k;d[g+2]=l+h*this.delta;d=b+this.zd*3;e[g]=this.lerp(o[b],o[d],h);e[g+1]=this.lerp(o[b+1],o[d+1],h);e[g+2]=this.lerp(o[b+2],o[d+2],h)};this.compNorm=function(b){var d=b*3;if(this.normal_cache[d]==0){this.normal_cache[d]=this.field[b-1]-this.field[b+1];this.normal_cache[d+1]=this.field[b-this.yd]-
|
|
|
this.field[b+this.yd];this.normal_cache[d+2]=this.field[b-this.zd]-this.field[b+this.zd]}};this.polygonize=function(b,d,e,g,h,j){var k=g+1,l=g+this.yd,o=g+this.zd,v=k+this.yd,u=k+this.zd,t=g+this.yd+this.zd,y=k+this.yd+this.zd,C=0,F=this.field[g],w=this.field[k],G=this.field[l],x=this.field[v],N=this.field[o],L=this.field[u],Y=this.field[t],M=this.field[y];F<h&&(C|=1);w<h&&(C|=2);G<h&&(C|=8);x<h&&(C|=4);N<h&&(C|=16);L<h&&(C|=32);Y<h&&(C|=128);M<h&&(C|=64);var f=THREE.edgeTable[C];if(f==0)return 0;
|
|
|
-var W=this.delta,R=b+W,da=d+W;W=e+W;if(f&1){this.compNorm(g);this.compNorm(k);this.VIntX(g*3,this.vlist,this.nlist,0,h,b,d,e,F,w)}if(f&2){this.compNorm(k);this.compNorm(v);this.VIntY(k*3,this.vlist,this.nlist,3,h,R,d,e,w,x)}if(f&4){this.compNorm(l);this.compNorm(v);this.VIntX(l*3,this.vlist,this.nlist,6,h,b,da,e,G,x)}if(f&8){this.compNorm(g);this.compNorm(l);this.VIntY(g*3,this.vlist,this.nlist,9,h,b,d,e,F,G)}if(f&16){this.compNorm(o);this.compNorm(u);this.VIntX(o*3,this.vlist,this.nlist,12,h,b,d,
|
|
|
-W,N,L)}if(f&32){this.compNorm(u);this.compNorm(y);this.VIntY(u*3,this.vlist,this.nlist,15,h,R,d,W,L,M)}if(f&64){this.compNorm(t);this.compNorm(y);this.VIntX(t*3,this.vlist,this.nlist,18,h,b,da,W,Y,M)}if(f&128){this.compNorm(o);this.compNorm(t);this.VIntY(o*3,this.vlist,this.nlist,21,h,b,d,W,N,Y)}if(f&256){this.compNorm(g);this.compNorm(o);this.VIntZ(g*3,this.vlist,this.nlist,24,h,b,d,e,F,N)}if(f&512){this.compNorm(k);this.compNorm(u);this.VIntZ(k*3,this.vlist,this.nlist,27,h,R,d,e,w,L)}if(f&1024){this.compNorm(v);
|
|
|
+var X=this.delta,R=b+X,da=d+X;X=e+X;if(f&1){this.compNorm(g);this.compNorm(k);this.VIntX(g*3,this.vlist,this.nlist,0,h,b,d,e,F,w)}if(f&2){this.compNorm(k);this.compNorm(v);this.VIntY(k*3,this.vlist,this.nlist,3,h,R,d,e,w,x)}if(f&4){this.compNorm(l);this.compNorm(v);this.VIntX(l*3,this.vlist,this.nlist,6,h,b,da,e,G,x)}if(f&8){this.compNorm(g);this.compNorm(l);this.VIntY(g*3,this.vlist,this.nlist,9,h,b,d,e,F,G)}if(f&16){this.compNorm(o);this.compNorm(u);this.VIntX(o*3,this.vlist,this.nlist,12,h,b,d,
|
|
|
+X,N,L)}if(f&32){this.compNorm(u);this.compNorm(y);this.VIntY(u*3,this.vlist,this.nlist,15,h,R,d,X,L,M)}if(f&64){this.compNorm(t);this.compNorm(y);this.VIntX(t*3,this.vlist,this.nlist,18,h,b,da,X,Y,M)}if(f&128){this.compNorm(o);this.compNorm(t);this.VIntY(o*3,this.vlist,this.nlist,21,h,b,d,X,N,Y)}if(f&256){this.compNorm(g);this.compNorm(o);this.VIntZ(g*3,this.vlist,this.nlist,24,h,b,d,e,F,N)}if(f&512){this.compNorm(k);this.compNorm(u);this.VIntZ(k*3,this.vlist,this.nlist,27,h,R,d,e,w,L)}if(f&1024){this.compNorm(v);
|
|
|
this.compNorm(y);this.VIntZ(v*3,this.vlist,this.nlist,30,h,R,da,e,x,M)}if(f&2048){this.compNorm(l);this.compNorm(t);this.VIntZ(l*3,this.vlist,this.nlist,33,h,b,da,e,G,Y)}C<<=4;for(h=g=0;THREE.triTable[C+h]!=-1;){b=C+h;d=b+1;e=b+2;this.posnormtriv(this.vlist,this.nlist,3*THREE.triTable[b],3*THREE.triTable[d],3*THREE.triTable[e],j);h+=3;g++}return g};this.posnormtriv=function(b,d,e,g,h,j){var k=this.count*3;this.positionArray[k]=b[e];this.positionArray[k+1]=b[e+1];this.positionArray[k+2]=b[e+2];this.positionArray[k+
|
|
|
3]=b[g];this.positionArray[k+4]=b[g+1];this.positionArray[k+5]=b[g+2];this.positionArray[k+6]=b[h];this.positionArray[k+7]=b[h+1];this.positionArray[k+8]=b[h+2];this.normalArray[k]=d[e];this.normalArray[k+1]=d[e+1];this.normalArray[k+2]=d[e+2];this.normalArray[k+3]=d[g];this.normalArray[k+4]=d[g+1];this.normalArray[k+5]=d[g+2];this.normalArray[k+6]=d[h];this.normalArray[k+7]=d[h+1];this.normalArray[k+8]=d[h+2];this.hasPos=!0;this.hasNormal=!0;this.count+=3;this.count>=this.maxCount-3&&j(this)};this.begin=
|
|
|
function(){this.count=0;this.hasPos=!1;this.hasNormal=!1};this.end=function(b){if(this.count!=0){for(var d=this.count*3;d<this.positionArray.length;d++)this.positionArray[d]=0;b(this)}};this.addBall=function(b,d,e,g,h){var j=this.size*Math.sqrt(g/h),k=e*this.size,l=d*this.size,o=b*this.size,v=Math.floor(k-j);v<1&&(v=1);k=Math.floor(k+j);k>this.size-1&&(k=this.size-1);var u=Math.floor(l-j);u<1&&(u=1);l=Math.floor(l+j);l>this.size-1&&(l=this.size-1);var t=Math.floor(o-j);t<1&&(t=1);j=Math.floor(o+j);
|
|
@@ -409,20 +409,20 @@ THREE.Loader.prototype={addStatusElement:function(){var a=document.createElement
|
|
|
c},loadAsciiOld:function(a,c){var b=document.createElement("script");b.type="text/javascript";b.onload=c;b.src=a;document.getElementsByTagName("head")[0].appendChild(b)},loadAscii:function(a){var c=a.model,b=a.callback,d=a.texture_path?a.texture_path:THREE.Loader.prototype.extractUrlbase(c);a=(new Date).getTime();c=new Worker(c);c.onmessage=function(e){THREE.Loader.prototype.createModel(e.data,b,d)};c.postMessage(a)},loadBinary:function(a){var c=a.model,b=a.callback,d=a.texture_path?a.texture_path:
|
|
|
THREE.Loader.prototype.extractUrlbase(c),e=a.bin_path?a.bin_path:THREE.Loader.prototype.extractUrlbase(c);a=(new Date).getTime();c=new Worker(c);var g=this.showProgress?THREE.Loader.prototype.updateProgress:null;c.onmessage=function(h){THREE.Loader.prototype.loadAjaxBuffers(h.data.buffers,h.data.materials,b,e,d,g)};c.onerror=function(h){alert("worker.onerror: "+h.message+"\n"+h.data);h.preventDefault()};c.postMessage(a)},loadAjaxBuffers:function(a,c,b,d,e,g){var h=new XMLHttpRequest,j=d+"/"+a,k=0;
|
|
|
h.onreadystatechange=function(){if(h.readyState==4)h.status==200||h.status==0?THREE.Loader.prototype.createBinModel(h.responseText,b,e,c):alert("Couldn't load ["+j+"] ["+h.status+"]");else if(h.readyState==3){if(g){k==0&&(k=h.getResponseHeader("Content-Length"));g({total:k,loaded:h.responseText.length})}}else h.readyState==2&&(k=h.getResponseHeader("Content-Length"))};h.open("GET",j,!0);h.overrideMimeType("text/plain; charset=x-user-defined");h.setRequestHeader("Content-Type","text/plain");h.send(null)},
|
|
|
-createBinModel:function(a,c,b,d){var e=function(g){function h(q,n){var p=o(q,n),B=o(q,n+1),A=o(q,n+2),D=o(q,n+3),O=(D<<1&255|A>>7)-127;p|=(A&127)<<16|B<<8;if(p==0&&O==-127)return 0;return(1-2*(D>>7))*(1+p*Math.pow(2,-23))*Math.pow(2,O)}function j(q,n){var p=o(q,n),B=o(q,n+1),A=o(q,n+2);return(o(q,n+3)<<24)+(A<<16)+(B<<8)+p}function k(q,n){var p=o(q,n);return(o(q,n+1)<<8)+p}function l(q,n){var p=o(q,n);return p>127?p-256:p}function o(q,n){return q.charCodeAt(n)&255}function v(q){var n,p,B;n=j(a,q);
|
|
|
-p=j(a,q+Y);B=j(a,q+M);q=k(a,q+f);THREE.Loader.prototype.f3(w,n,p,B,q)}function u(q){var n,p,B,A,D,O;n=j(a,q);p=j(a,q+Y);B=j(a,q+M);A=k(a,q+f);D=j(a,q+W);O=j(a,q+R);q=j(a,q+da);THREE.Loader.prototype.f3n(w,N,n,p,B,A,D,O,q)}function t(q){var n,p,B,A;n=j(a,q);p=j(a,q+ga);B=j(a,q+I);A=j(a,q+ca);q=k(a,q+za);THREE.Loader.prototype.f4(w,n,p,B,A,q)}function y(q){var n,p,B,A,D,O,X,E;n=j(a,q);p=j(a,q+ga);B=j(a,q+I);A=j(a,q+ca);D=k(a,q+za);O=j(a,q+ea);X=j(a,q+xa);E=j(a,q+ja);q=j(a,q+ha);THREE.Loader.prototype.f4n(w,
|
|
|
-N,n,p,B,A,D,O,X,E,q)}function C(q){var n,p;n=j(a,q);p=j(a,q+va);q=j(a,q+Aa);THREE.Loader.prototype.uv3(w.uvs,L[n*2],L[n*2+1],L[p*2],L[p*2+1],L[q*2],L[q*2+1])}function F(q){var n,p,B;n=j(a,q);p=j(a,q+ia);B=j(a,q+$);q=j(a,q+qa);THREE.Loader.prototype.uv4(w.uvs,L[n*2],L[n*2+1],L[p*2],L[p*2+1],L[B*2],L[B*2+1],L[q*2],L[q*2+1])}var w=this,G=0,x,N=[],L=[],Y,M,f,W,R,da,ga,I,ca,za,ea,xa,ja,ha,va,Aa,ia,$,qa,ra,Q,ma,ta,m,z;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(w,d,g);x={signature:a.substr(G,
|
|
|
+createBinModel:function(a,c,b,d){var e=function(g){function h(p,n){var q=o(p,n),B=o(p,n+1),A=o(p,n+2),D=o(p,n+3),P=(D<<1&255|A>>7)-127;q|=(A&127)<<16|B<<8;if(q==0&&P==-127)return 0;return(1-2*(D>>7))*(1+q*Math.pow(2,-23))*Math.pow(2,P)}function j(p,n){var q=o(p,n),B=o(p,n+1),A=o(p,n+2);return(o(p,n+3)<<24)+(A<<16)+(B<<8)+q}function k(p,n){var q=o(p,n);return(o(p,n+1)<<8)+q}function l(p,n){var q=o(p,n);return q>127?q-256:q}function o(p,n){return p.charCodeAt(n)&255}function v(p){var n,q,B;n=j(a,p);
|
|
|
+q=j(a,p+Y);B=j(a,p+M);p=k(a,p+f);THREE.Loader.prototype.f3(w,n,q,B,p)}function u(p){var n,q,B,A,D,P;n=j(a,p);q=j(a,p+Y);B=j(a,p+M);A=k(a,p+f);D=j(a,p+X);P=j(a,p+R);p=j(a,p+da);THREE.Loader.prototype.f3n(w,N,n,q,B,A,D,P,p)}function t(p){var n,q,B,A;n=j(a,p);q=j(a,p+ga);B=j(a,p+I);A=j(a,p+ca);p=k(a,p+za);THREE.Loader.prototype.f4(w,n,q,B,A,p)}function y(p){var n,q,B,A,D,P,U,E;n=j(a,p);q=j(a,p+ga);B=j(a,p+I);A=j(a,p+ca);D=k(a,p+za);P=j(a,p+ea);U=j(a,p+xa);E=j(a,p+ja);p=j(a,p+ha);THREE.Loader.prototype.f4n(w,
|
|
|
+N,n,q,B,A,D,P,U,E,p)}function C(p){var n,q;n=j(a,p);q=j(a,p+va);p=j(a,p+Aa);THREE.Loader.prototype.uv3(w.uvs,L[n*2],L[n*2+1],L[q*2],L[q*2+1],L[p*2],L[p*2+1])}function F(p){var n,q,B;n=j(a,p);q=j(a,p+ia);B=j(a,p+aa);p=j(a,p+qa);THREE.Loader.prototype.uv4(w.uvs,L[n*2],L[n*2+1],L[q*2],L[q*2+1],L[B*2],L[B*2+1],L[p*2],L[p*2+1])}var w=this,G=0,x,N=[],L=[],Y,M,f,X,R,da,ga,I,ca,za,ea,xa,ja,ha,va,Aa,ia,aa,qa,ra,Q,ma,ta,m,z;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(w,d,g);x={signature:a.substr(G,
|
|
|
8),header_bytes:o(a,G+8),vertex_coordinate_bytes:o(a,G+9),normal_coordinate_bytes:o(a,G+10),uv_coordinate_bytes:o(a,G+11),vertex_index_bytes:o(a,G+12),normal_index_bytes:o(a,G+13),uv_index_bytes:o(a,G+14),material_index_bytes:o(a,G+15),nvertices:j(a,G+16),nnormals:j(a,G+16+4),nuvs:j(a,G+16+8),ntri_flat:j(a,G+16+12),ntri_smooth:j(a,G+16+16),ntri_flat_uv:j(a,G+16+20),ntri_smooth_uv:j(a,G+16+24),nquad_flat:j(a,G+16+28),nquad_smooth:j(a,G+16+32),nquad_flat_uv:j(a,G+16+36),nquad_smooth_uv:j(a,G+16+40)};
|
|
|
-G+=x.header_bytes;Y=x.vertex_index_bytes;M=x.vertex_index_bytes*2;f=x.vertex_index_bytes*3;W=x.vertex_index_bytes*3+x.material_index_bytes;R=x.vertex_index_bytes*3+x.material_index_bytes+x.normal_index_bytes;da=x.vertex_index_bytes*3+x.material_index_bytes+x.normal_index_bytes*2;ga=x.vertex_index_bytes;I=x.vertex_index_bytes*2;ca=x.vertex_index_bytes*3;za=x.vertex_index_bytes*4;ea=x.vertex_index_bytes*4+x.material_index_bytes;xa=x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes;ja=
|
|
|
-x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes*2;ha=x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes*3;va=x.uv_index_bytes;Aa=x.uv_index_bytes*2;ia=x.uv_index_bytes;$=x.uv_index_bytes*2;qa=x.uv_index_bytes*3;g=x.vertex_index_bytes*3+x.material_index_bytes;z=x.vertex_index_bytes*4+x.material_index_bytes;ra=x.ntri_flat*g;Q=x.ntri_smooth*(g+x.normal_index_bytes*3);ma=x.ntri_flat_uv*(g+x.uv_index_bytes*3);ta=x.ntri_smooth_uv*(g+x.normal_index_bytes*3+x.uv_index_bytes*
|
|
|
-3);m=x.nquad_flat*z;g=x.nquad_smooth*(z+x.normal_index_bytes*4);z=x.nquad_flat_uv*(z+x.uv_index_bytes*4);G+=function(q){for(var n,p,B,A=x.vertex_coordinate_bytes*3,D=q+x.nvertices*A;q<D;q+=A){n=h(a,q);p=h(a,q+x.vertex_coordinate_bytes);B=h(a,q+x.vertex_coordinate_bytes*2);THREE.Loader.prototype.v(w,n,p,B)}return x.nvertices*A}(G);G+=function(q){for(var n,p,B,A=x.normal_coordinate_bytes*3,D=q+x.nnormals*A;q<D;q+=A){n=l(a,q);p=l(a,q+x.normal_coordinate_bytes);B=l(a,q+x.normal_coordinate_bytes*2);N.push(n/
|
|
|
-127,p/127,B/127)}return x.nnormals*A}(G);G+=function(q){for(var n,p,B=x.uv_coordinate_bytes*2,A=q+x.nuvs*B;q<A;q+=B){n=h(a,q);p=h(a,q+x.uv_coordinate_bytes);L.push(n,p)}return x.nuvs*B}(G);ra=G+ra;Q=ra+Q;ma=Q+ma;ta=ma+ta;m=ta+m;g=m+g;z=g+z;(function(q){var n,p=x.vertex_index_bytes*3+x.material_index_bytes,B=p+x.uv_index_bytes*3,A=q+x.ntri_flat_uv*B;for(n=q;n<A;n+=B){v(n);C(n+p)}return A-q})(Q);(function(q){var n,p=x.vertex_index_bytes*3+x.material_index_bytes+x.normal_index_bytes*3,B=p+x.uv_index_bytes*
|
|
|
-3,A=q+x.ntri_smooth_uv*B;for(n=q;n<A;n+=B){u(n);C(n+p)}return A-q})(ma);(function(q){var n,p=x.vertex_index_bytes*4+x.material_index_bytes,B=p+x.uv_index_bytes*4,A=q+x.nquad_flat_uv*B;for(n=q;n<A;n+=B){t(n);F(n+p)}return A-q})(g);(function(q){var n,p=x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes*4,B=p+x.uv_index_bytes*4,A=q+x.nquad_smooth_uv*B;for(n=q;n<A;n+=B){y(n);F(n+p)}return A-q})(z);(function(q){var n,p=x.vertex_index_bytes*3+x.material_index_bytes,B=q+x.ntri_flat*p;for(n=
|
|
|
-q;n<B;n+=p)v(n);return B-q})(G);(function(q){var n,p=x.vertex_index_bytes*3+x.material_index_bytes+x.normal_index_bytes*3,B=q+x.ntri_smooth*p;for(n=q;n<B;n+=p)u(n);return B-q})(ra);(function(q){var n,p=x.vertex_index_bytes*4+x.material_index_bytes,B=q+x.nquad_flat*p;for(n=q;n<B;n+=p)t(n);return B-q})(ta);(function(q){var n,p=x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes*4,B=q+x.nquad_smooth*p;for(n=q;n<B;n+=p)y(n);return B-q})(m);this.computeCentroids();this.computeFaceNormals()};
|
|
|
+G+=x.header_bytes;Y=x.vertex_index_bytes;M=x.vertex_index_bytes*2;f=x.vertex_index_bytes*3;X=x.vertex_index_bytes*3+x.material_index_bytes;R=x.vertex_index_bytes*3+x.material_index_bytes+x.normal_index_bytes;da=x.vertex_index_bytes*3+x.material_index_bytes+x.normal_index_bytes*2;ga=x.vertex_index_bytes;I=x.vertex_index_bytes*2;ca=x.vertex_index_bytes*3;za=x.vertex_index_bytes*4;ea=x.vertex_index_bytes*4+x.material_index_bytes;xa=x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes;ja=
|
|
|
+x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes*2;ha=x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes*3;va=x.uv_index_bytes;Aa=x.uv_index_bytes*2;ia=x.uv_index_bytes;aa=x.uv_index_bytes*2;qa=x.uv_index_bytes*3;g=x.vertex_index_bytes*3+x.material_index_bytes;z=x.vertex_index_bytes*4+x.material_index_bytes;ra=x.ntri_flat*g;Q=x.ntri_smooth*(g+x.normal_index_bytes*3);ma=x.ntri_flat_uv*(g+x.uv_index_bytes*3);ta=x.ntri_smooth_uv*(g+x.normal_index_bytes*3+x.uv_index_bytes*
|
|
|
+3);m=x.nquad_flat*z;g=x.nquad_smooth*(z+x.normal_index_bytes*4);z=x.nquad_flat_uv*(z+x.uv_index_bytes*4);G+=function(p){for(var n,q,B,A=x.vertex_coordinate_bytes*3,D=p+x.nvertices*A;p<D;p+=A){n=h(a,p);q=h(a,p+x.vertex_coordinate_bytes);B=h(a,p+x.vertex_coordinate_bytes*2);THREE.Loader.prototype.v(w,n,q,B)}return x.nvertices*A}(G);G+=function(p){for(var n,q,B,A=x.normal_coordinate_bytes*3,D=p+x.nnormals*A;p<D;p+=A){n=l(a,p);q=l(a,p+x.normal_coordinate_bytes);B=l(a,p+x.normal_coordinate_bytes*2);N.push(n/
|
|
|
+127,q/127,B/127)}return x.nnormals*A}(G);G+=function(p){for(var n,q,B=x.uv_coordinate_bytes*2,A=p+x.nuvs*B;p<A;p+=B){n=h(a,p);q=h(a,p+x.uv_coordinate_bytes);L.push(n,q)}return x.nuvs*B}(G);ra=G+ra;Q=ra+Q;ma=Q+ma;ta=ma+ta;m=ta+m;g=m+g;z=g+z;(function(p){var n,q=x.vertex_index_bytes*3+x.material_index_bytes,B=q+x.uv_index_bytes*3,A=p+x.ntri_flat_uv*B;for(n=p;n<A;n+=B){v(n);C(n+q)}return A-p})(Q);(function(p){var n,q=x.vertex_index_bytes*3+x.material_index_bytes+x.normal_index_bytes*3,B=q+x.uv_index_bytes*
|
|
|
+3,A=p+x.ntri_smooth_uv*B;for(n=p;n<A;n+=B){u(n);C(n+q)}return A-p})(ma);(function(p){var n,q=x.vertex_index_bytes*4+x.material_index_bytes,B=q+x.uv_index_bytes*4,A=p+x.nquad_flat_uv*B;for(n=p;n<A;n+=B){t(n);F(n+q)}return A-p})(g);(function(p){var n,q=x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes*4,B=q+x.uv_index_bytes*4,A=p+x.nquad_smooth_uv*B;for(n=p;n<A;n+=B){y(n);F(n+q)}return A-p})(z);(function(p){var n,q=x.vertex_index_bytes*3+x.material_index_bytes,B=p+x.ntri_flat*q;for(n=
|
|
|
+p;n<B;n+=q)v(n);return B-p})(G);(function(p){var n,q=x.vertex_index_bytes*3+x.material_index_bytes+x.normal_index_bytes*3,B=p+x.ntri_smooth*q;for(n=p;n<B;n+=q)u(n);return B-p})(ra);(function(p){var n,q=x.vertex_index_bytes*4+x.material_index_bytes,B=p+x.nquad_flat*q;for(n=p;n<B;n+=q)t(n);return B-p})(ta);(function(p){var n,q=x.vertex_index_bytes*4+x.material_index_bytes+x.normal_index_bytes*4,B=p+x.nquad_smooth*q;for(n=p;n<B;n+=q)y(n);return B-p})(m);this.computeCentroids();this.computeFaceNormals()};
|
|
|
e.prototype=new THREE.Geometry;e.prototype.constructor=e;c(new e(b))},createModel:function(a,c,b){var d=function(e){var g=this;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(g,a.materials,e);(function(){var h,j,k,l,o,v;h=0;for(j=a.vertices.length;h<j;h+=3){k=a.vertices[h];l=a.vertices[h+1];o=a.vertices[h+2];THREE.Loader.prototype.v(g,k,l,o)}if(a.morphTargets!==undefined){h=0;for(j=a.morphTargets.length;h<j;h++){g.morphTargets[h]={};g.morphTargets[h].name=a.morphTargets[h].name;g.morphTargets[h].vertices=
|
|
|
[];v=g.morphTargets[h].vertices;o=a.morphTargets[h].vertices;k=0;for(l=o.length;k<l;k+=3)v.push(new THREE.Vertex(new THREE.Vector3(o[k],o[k+1],o[k+2])))}}if(a.colors){h=0;for(j=a.colors.length;h<j;h+=3){k=a.colors[h];l=a.colors[h+1];o=a.colors[h+2];THREE.Loader.prototype.vc(g,k,l,o)}}})();(function(){function h(y,C){THREE.Loader.prototype.f3(g,y[C],y[C+1],y[C+2],y[C+3])}function j(y,C){THREE.Loader.prototype.f3n(g,a.normals,y[C],y[C+1],y[C+2],y[C+3],y[C+4],y[C+5],y[C+6])}function k(y,C){THREE.Loader.prototype.f4(g,
|
|
|
y[C],y[C+1],y[C+2],y[C+3],y[C+4])}function l(y,C){THREE.Loader.prototype.f4n(g,a.normals,y[C],y[C+1],y[C+2],y[C+3],y[C+4],y[C+5],y[C+6],y[C+7],y[C+8])}function o(y,C){var F,w,G,x,N,L,Y,M,f;F=y[C];w=y[C+1];G=y[C+2];x=a.uvs[F*2];Y=a.uvs[F*2+1];N=a.uvs[w*2];M=a.uvs[w*2+1];L=a.uvs[G*2];f=a.uvs[G*2+1];THREE.Loader.prototype.uv3(g.uvs,x,Y,N,M,L,f);if(a.uvs2&&a.uvs2.length){x=a.uvs2[F*2];Y=a.uvs2[F*2+1];N=a.uvs2[w*2];M=a.uvs2[w*2+1];L=a.uvs2[G*2];f=a.uvs2[G*2+1];THREE.Loader.prototype.uv3(g.uvs2,x,1-Y,N,
|
|
|
-1-M,L,1-f)}}function v(y,C){var F,w,G,x,N,L,Y,M,f,W,R,da;F=y[C];w=y[C+1];G=y[C+2];x=y[C+3];N=a.uvs[F*2];f=a.uvs[F*2+1];L=a.uvs[w*2];W=a.uvs[w*2+1];Y=a.uvs[G*2];R=a.uvs[G*2+1];M=a.uvs[x*2];da=a.uvs[x*2+1];THREE.Loader.prototype.uv4(g.uvs,N,f,L,W,Y,R,M,da);if(a.uvs2){N=a.uvs2[F*2];f=a.uvs2[F*2+1];L=a.uvs2[w*2];W=a.uvs2[w*2+1];Y=a.uvs2[G*2];R=a.uvs2[G*2+1];M=a.uvs2[x*2];da=a.uvs2[x*2+1];THREE.Loader.prototype.uv4(g.uvs2,N,1-f,L,1-W,Y,1-R,M,1-da)}}var u,t;u=0;for(t=a.trianglesUvs.length;u<t;u+=7){h(a.trianglesUvs,
|
|
|
+1-M,L,1-f)}}function v(y,C){var F,w,G,x,N,L,Y,M,f,X,R,da;F=y[C];w=y[C+1];G=y[C+2];x=y[C+3];N=a.uvs[F*2];f=a.uvs[F*2+1];L=a.uvs[w*2];X=a.uvs[w*2+1];Y=a.uvs[G*2];R=a.uvs[G*2+1];M=a.uvs[x*2];da=a.uvs[x*2+1];THREE.Loader.prototype.uv4(g.uvs,N,f,L,X,Y,R,M,da);if(a.uvs2){N=a.uvs2[F*2];f=a.uvs2[F*2+1];L=a.uvs2[w*2];X=a.uvs2[w*2+1];Y=a.uvs2[G*2];R=a.uvs2[G*2+1];M=a.uvs2[x*2];da=a.uvs2[x*2+1];THREE.Loader.prototype.uv4(g.uvs2,N,1-f,L,1-X,Y,1-R,M,1-da)}}var u,t;u=0;for(t=a.trianglesUvs.length;u<t;u+=7){h(a.trianglesUvs,
|
|
|
u);o(a.trianglesUvs,u+4)}u=0;for(t=a.trianglesNormalsUvs.length;u<t;u+=10){j(a.trianglesNormalsUvs,u);o(a.trianglesNormalsUvs,u+7)}u=0;for(t=a.quadsUvs.length;u<t;u+=9){k(a.quadsUvs,u);v(a.quadsUvs,u+5)}u=0;for(t=a.quadsNormalsUvs.length;u<t;u+=13){l(a.quadsNormalsUvs,u);v(a.quadsNormalsUvs,u+9)}u=0;for(t=a.triangles.length;u<t;u+=4)h(a.triangles,u);u=0;for(t=a.trianglesNormals.length;u<t;u+=7)j(a.trianglesNormals,u);u=0;for(t=a.quads.length;u<t;u+=5)k(a.quads,u);u=0;for(t=a.quadsNormals.length;u<
|
|
|
t;u+=9)l(a.quadsNormals,u)})();(function(){var h,j,k,l;if(a.skinWeights){h=0;for(j=a.skinWeights.length;h<j;h+=2){k=a.skinWeights[h];l=a.skinWeights[h+1];THREE.Loader.prototype.sw(g,k,l,0,0)}}if(a.skinIndices){h=0;for(j=a.skinIndices.length;h<j;h+=2){k=a.skinIndices[h];l=a.skinIndices[h+1];THREE.Loader.prototype.si(g,k,l,0,0)}}THREE.Loader.prototype.bones(g,a.bones);THREE.Loader.prototype.animation(g,a.animation)})();this.computeCentroids();this.computeFaceNormals()};d.prototype=new THREE.Geometry;
|
|
|
d.prototype.constructor=d;c(new d(b))},bones:function(a,c){a.bones=c},animation:function(a,c){a.animation=c},si:function(a,c,b,d,e){a.skinIndices.push(new THREE.Vector4(c,b,d,e))},sw:function(a,c,b,d,e){a.skinWeights.push(new THREE.Vector4(c,b,d,e))},v:function(a,c,b,d){a.vertices.push(new THREE.Vertex(new THREE.Vector3(c,b,d)))},vc:function(a,c,b,d){var e=new THREE.Color(16777215);e.setRGB(c,b,d);a.colors.push(e)},f3:function(a,c,b,d,e){a.faces.push(new THREE.Face3(c,b,d,null,a.materials[e]))},f4:function(a,
|