|
@@ -117,8 +117,8 @@ k.w);l.multiplyScalar(1/l.w);p=A[B]=A[B]||new THREE.RenderableLine;p.v1.position
|
|
|
u.scale.y=F.scale.y*Math.abs(u.y-(e.y+n.projectionMatrix.n22)/(e.w+n.projectionMatrix.n24));u.materials=F.materials;s.push(u);y++}}}}z&&s.sort(a);return s};this.unprojectVector=function(q,n){var z=THREE.Matrix4.makeInvert(n.matrix);z.multiplySelf(THREE.Matrix4.makeInvert(n.projectionMatrix));z.multiplyVector3(q);return q}};
|
|
|
THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,c=new THREE.Projector,d,h,j,m;this.domElement=document.createElement("div");this.setSize=function(b,r){d=b;h=r;j=d/2;m=h/2};this.render=function(b,r){var o,p,B,A,u,y,H,L;a=c.projectScene(b,r);o=0;for(p=a.length;o<p;o++){u=a[o];if(u instanceof THREE.RenderableParticle){H=u.x*j+j;L=u.y*m+m;B=0;for(A=u.material.length;B<A;B++){y=u.material[B];if(y instanceof THREE.ParticleDOMMaterial){y=y.domElement;y.style.left=H+"px";y.style.top=L+"px"}}}}}};
|
|
|
THREE.CanvasRenderer=function(){function a(ba){if(u!=ba)p.globalAlpha=u=ba}function c(ba){if(y!=ba){switch(ba){case THREE.NormalBlending:p.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:p.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:p.globalCompositeOperation="darker"}y=ba}}var d=null,h=new THREE.Projector,j=document.createElement("canvas"),m,b,r,o,p=j.getContext("2d"),B=new THREE.Color(0),A=0,u=1,y=0,H=null,L=null,e=1,g,i,f,k,l,t,q,n,z,s=new THREE.Color,
|
|
|
-w=new THREE.Color,E=new THREE.Color,v=new THREE.Color,C=new THREE.Color,W,J,P,O,F,U,S,I,M,V=new THREE.Rectangle,R=new THREE.Rectangle,x=new THREE.Rectangle,K=false,T=new THREE.Color,Z=new THREE.Color,ma=new THREE.Color,ca=new THREE.Color,xa=Math.PI*2,$=new THREE.Vector3,ia,oa,ta,fa,da,ua,sa=16;ia=document.createElement("canvas");ia.width=ia.height=2;oa=ia.getContext("2d");oa.fillStyle="rgba(0,0,0,1)";oa.fillRect(0,0,2,2);ta=oa.getImageData(0,0,2,2);fa=ta.data;da=document.createElement("canvas");da.width=
|
|
|
-da.height=sa;ua=da.getContext("2d");ua.translate(-sa/2,-sa/2);ua.scale(sa,sa);sa--;this.domElement=j;this.sortElements=this.sortObjects=this.autoClear=true;this.setSize=function(ba,ja){m=ba;b=ja;r=m/2;o=b/2;j.width=m;j.height=b;V.set(-r,-o,r,o);u=1;y=0;L=H=null;e=1};this.setClearColor=function(ba,ja){B=ba;A=ja;R.set(-r,-o,r,o);p.setTransform(1,0,0,-1,r,o);this.clear()};this.setClearColorHex=function(ba,ja){B.setHex(ba);A=ja;R.set(-r,-o,r,o);p.setTransform(1,0,0,-1,r,o);this.clear()};this.clear=function(){p.setTransform(1,
|
|
|
+w=new THREE.Color,E=new THREE.Color,v=new THREE.Color,C=new THREE.Color,W,J,P,O,F,U,S,I,M,V=new THREE.Rectangle,R=new THREE.Rectangle,x=new THREE.Rectangle,K=false,T=new THREE.Color,Z=new THREE.Color,ma=new THREE.Color,ca=new THREE.Color,xa=Math.PI*2,$=new THREE.Vector3,ia,pa,ua,fa,da,va,ta=16;ia=document.createElement("canvas");ia.width=ia.height=2;pa=ia.getContext("2d");pa.fillStyle="rgba(0,0,0,1)";pa.fillRect(0,0,2,2);ua=pa.getImageData(0,0,2,2);fa=ua.data;da=document.createElement("canvas");da.width=
|
|
|
+da.height=ta;va=da.getContext("2d");va.translate(-ta/2,-ta/2);va.scale(ta,ta);ta--;this.domElement=j;this.sortElements=this.sortObjects=this.autoClear=true;this.setSize=function(ba,ja){m=ba;b=ja;r=m/2;o=b/2;j.width=m;j.height=b;V.set(-r,-o,r,o);u=1;y=0;L=H=null;e=1};this.setClearColor=function(ba,ja){B=ba;A=ja;R.set(-r,-o,r,o);p.setTransform(1,0,0,-1,r,o);this.clear()};this.setClearColorHex=function(ba,ja){B.setHex(ba);A=ja;R.set(-r,-o,r,o);p.setTransform(1,0,0,-1,r,o);this.clear()};this.clear=function(){p.setTransform(1,
|
|
|
0,0,-1,r,o);if(!R.isEmpty()){R.inflate(1);R.minSelf(V);if(B.hex==0&&A==0)p.clearRect(R.getX(),R.getY(),R.getWidth(),R.getHeight());else{c(THREE.NormalBlending);a(1);p.fillStyle="rgba("+Math.floor(B.r*255)+","+Math.floor(B.g*255)+","+Math.floor(B.b*255)+","+A+")";p.fillRect(R.getX(),R.getY(),R.getWidth(),R.getHeight())}R.empty()}};this.render=function(ba,ja){function la(D){var X,Q,G,N=D.lights;Z.setRGB(0,0,0);ma.setRGB(0,0,0);ca.setRGB(0,0,0);D=0;for(X=N.length;D<X;D++){Q=N[D];G=Q.color;if(Q instanceof
|
|
|
THREE.AmbientLight){Z.r+=G.r;Z.g+=G.g;Z.b+=G.b}else if(Q instanceof THREE.DirectionalLight){ma.r+=G.r;ma.g+=G.g;ma.b+=G.b}else if(Q instanceof THREE.PointLight){ca.r+=G.r;ca.g+=G.g;ca.b+=G.b}}}function Ba(D,X,Q,G){var N,Y,ea,ga,ha=D.lights;D=0;for(N=ha.length;D<N;D++){Y=ha[D];ea=Y.color;ga=Y.intensity;if(Y instanceof THREE.DirectionalLight){Y=Q.dot(Y.position)*ga;if(Y>0){G.r+=ea.r*Y;G.g+=ea.g*Y;G.b+=ea.b*Y}}else if(Y instanceof THREE.PointLight){$.sub(Y.position,X);$.normalize();Y=Q.dot($)*ga;if(Y>
|
|
|
0){G.r+=ea.r*Y;G.g+=ea.g*Y;G.b+=ea.b*Y}}}}function Na(D,X,Q){if(Q.opacity!=0){a(Q.opacity);c(Q.blending);var G,N,Y,ea,ga,ha;if(Q instanceof THREE.ParticleBasicMaterial){if(Q.map&&Q.map.image.loaded){ea=Q.map.image;ga=ea.width>>1;ha=ea.height>>1;N=X.scale.x*r;Y=X.scale.y*o;Q=N*ga;G=Y*ha;x.set(D.x-Q,D.y-G,D.x+Q,D.y+G);if(V.instersects(x)){p.save();p.translate(D.x,D.y);p.rotate(-X.rotation);p.scale(N,-Y);p.translate(-ga,-ha);p.drawImage(ea,0,0);p.restore()}}}else if(Q instanceof THREE.ParticleCircleMaterial){if(K){T.r=
|
|
@@ -128,12 +128,13 @@ p.beginPath();p.moveTo(k,l);p.lineTo(t,q);p.lineTo(n,z);p.lineTo(k,l);p.closePat
|
|
|
D.n22+$.z*D.n23)*0.5+0.5;$.copy(G.vertexNormalsWorld[1]);U=($.x*D.n11+$.y*D.n12+$.z*D.n13)*0.5+0.5;S=-($.x*D.n21+$.y*D.n22+$.z*D.n23)*0.5+0.5;$.copy(G.vertexNormalsWorld[2]);I=($.x*D.n11+$.y*D.n12+$.z*D.n13)*0.5+0.5;M=-($.x*D.n21+$.y*D.n22+$.z*D.n23)*0.5+0.5;ya(k,l,t,q,n,z,N.env_map.image,O,F,U,S,I,M)}}else N.wireframe?Ca(N.color.__styleString,N.wireframe_linewidth):Da(N.color.__styleString);else if(N instanceof THREE.MeshLambertMaterial){if(N.map&&!N.wireframe){N.map.mapping instanceof THREE.UVMapping&&
|
|
|
ya(k,l,t,q,n,z,N.map.image,G.uvs[0].u,G.uvs[0].v,G.uvs[1].u,G.uvs[1].v,G.uvs[2].u,G.uvs[2].v);c(THREE.SubtractiveBlending)}if(K)if(!N.wireframe&&N.shading==THREE.SmoothShading&&G.vertexNormalsWorld.length==3){w.r=E.r=v.r=Z.r;w.g=E.g=v.g=Z.g;w.b=E.b=v.b=Z.b;Ba(Y,G.v1.positionWorld,G.vertexNormalsWorld[0],w);Ba(Y,G.v2.positionWorld,G.vertexNormalsWorld[1],E);Ba(Y,G.v3.positionWorld,G.vertexNormalsWorld[2],v);C.r=(E.r+v.r)*0.5;C.g=(E.g+v.g)*0.5;C.b=(E.b+v.b)*0.5;P=Ka(w,E,v,C);ya(k,l,t,q,n,z,P,0,0,1,
|
|
|
0,0,1)}else{T.r=Z.r;T.g=Z.g;T.b=Z.b;Ba(Y,G.centroidWorld,G.normalWorld,T);s.r=N.color.r*T.r;s.g=N.color.g*T.g;s.b=N.color.b*T.b;s.updateStyleString();N.wireframe?Ca(s.__styleString,N.wireframe_linewidth):Da(s.__styleString)}else N.wireframe?Ca(N.color.__styleString,N.wireframe_linewidth):Da(N.color.__styleString)}else if(N instanceof THREE.MeshDepthMaterial){W=ja.near;J=ja.far;w.r=w.g=w.b=1-Fa(D.positionScreen.z,W,J);E.r=E.g=E.b=1-Fa(X.positionScreen.z,W,J);v.r=v.g=v.b=1-Fa(Q.positionScreen.z,W,J);
|
|
|
-C.r=(E.r+v.r)*0.5;C.g=(E.g+v.g)*0.5;C.b=(E.b+v.b)*0.5;P=Ka(w,E,v,C);ya(k,l,t,q,n,z,P,0,0,1,0,0,1)}else if(N instanceof THREE.MeshNormalMaterial){s.r=Ga(G.normalWorld.x);s.g=Ga(G.normalWorld.y);s.b=Ga(G.normalWorld.z);s.updateStyleString();N.wireframe?Ca(s.__styleString,N.wireframe_linewidth):Da(s.__styleString)}}}function Ca(D,X){if(H!=D)p.strokeStyle=H=D;if(e!=X)p.lineWidth=e=X;p.stroke();x.inflate(X*2)}function Da(D){if(L!=D)p.fillStyle=L=D;p.fill()}function ya(D,X,Q,G,N,Y,ea,ga,ha,pa,ka,qa,za){var va,
|
|
|
-ra;va=ea.width-1;ra=ea.height-1;ga*=va;ha*=ra;pa*=va;ka*=ra;qa*=va;za*=ra;Q-=D;G-=X;N-=D;Y-=X;pa-=ga;ka-=ha;qa-=ga;za-=ha;ra=1/(pa*za-qa*ka);va=(za*Q-ka*N)*ra;ka=(za*G-ka*Y)*ra;Q=(pa*N-qa*Q)*ra;G=(pa*Y-qa*G)*ra;D=D-va*ga-Q*ha;X=X-ka*ga-G*ha;p.save();p.transform(va,ka,Q,G,D,X);p.clip();p.drawImage(ea,0,0);p.restore()}function Ka(D,X,Q,G){var N=~~(D.r*255),Y=~~(D.g*255);D=~~(D.b*255);var ea=~~(X.r*255),ga=~~(X.g*255);X=~~(X.b*255);var ha=~~(Q.r*255),pa=~~(Q.g*255);Q=~~(Q.b*255);var ka=~~(G.r*255),qa=
|
|
|
-~~(G.g*255);G=~~(G.b*255);fa[0]=N<0?0:N>255?255:N;fa[1]=Y<0?0:Y>255?255:Y;fa[2]=D<0?0:D>255?255:D;fa[4]=ea<0?0:ea>255?255:ea;fa[5]=ga<0?0:ga>255?255:ga;fa[6]=X<0?0:X>255?255:X;fa[8]=ha<0?0:ha>255?255:ha;fa[9]=pa<0?0:pa>255?255:pa;fa[10]=Q<0?0:Q>255?255:Q;fa[12]=ka<0?0:ka>255?255:ka;fa[13]=qa<0?0:qa>255?255:qa;fa[14]=G<0?0:G>255?255:G;oa.putImageData(ta,0,0);ua.drawImage(ia,0,0);return da}function Fa(D,X,Q){D=(D-X)/(Q-X);return D*D*(3-2*D)}function Ga(D){D=(D+1)*0.5;return D<0?0:D>1?1:D}function Ha(D,
|
|
|
-X){var Q=X.x-D.x,G=X.y-D.y,N=1/Math.sqrt(Q*Q+G*G);Q*=N;G*=N;X.x+=Q;X.y+=G;D.x-=Q;D.y-=G}var Ea,La,aa,na,wa,Ia,Ma,Aa;this.autoClear?this.clear():p.setTransform(1,0,0,-1,r,o);d=h.projectScene(ba,ja,this.sortElements);(K=ba.lights.length>0)&&la(ba);Ea=0;for(La=d.length;Ea<La;Ea++){aa=d[Ea];x.empty();if(aa instanceof THREE.RenderableParticle){g=aa;g.x*=r;g.y*=o;na=0;for(wa=aa.materials.length;na<wa;na++)Na(g,aa,aa.materials[na],ba)}else if(aa instanceof THREE.RenderableLine){g=aa.v1;i=aa.v2;g.positionScreen.x*=
|
|
|
-r;g.positionScreen.y*=o;i.positionScreen.x*=r;i.positionScreen.y*=o;x.addPoint(g.positionScreen.x,g.positionScreen.y);x.addPoint(i.positionScreen.x,i.positionScreen.y);if(V.instersects(x)){na=0;for(wa=aa.materials.length;na<wa;)Oa(g,i,aa,aa.materials[na++],ba)}}else if(aa instanceof THREE.RenderableFace3){g=aa.v1;i=aa.v2;f=aa.v3;g.positionScreen.x*=r;g.positionScreen.y*=o;i.positionScreen.x*=r;i.positionScreen.y*=o;f.positionScreen.x*=r;f.positionScreen.y*=o;if(aa.overdraw){Ha(g.positionScreen,i.positionScreen);
|
|
|
-Ha(i.positionScreen,f.positionScreen);Ha(f.positionScreen,g.positionScreen)}x.add3Points(g.positionScreen.x,g.positionScreen.y,i.positionScreen.x,i.positionScreen.y,f.positionScreen.x,f.positionScreen.y);if(V.instersects(x)){na=0;for(wa=aa.meshMaterials.length;na<wa;){Aa=aa.meshMaterials[na++];if(Aa instanceof THREE.MeshFaceMaterial){Ia=0;for(Ma=aa.faceMaterials.length;Ia<Ma;)(Aa=aa.faceMaterials[Ia++])&&Ja(g,i,f,aa,Aa,ba)}else Ja(g,i,f,aa,Aa,ba)}}}R.addRectangle(x)}p.setTransform(1,0,0,1,0,0)}};
|
|
|
+C.r=(E.r+v.r)*0.5;C.g=(E.g+v.g)*0.5;C.b=(E.b+v.b)*0.5;P=Ka(w,E,v,C);ya(k,l,t,q,n,z,P,0,0,1,0,0,1)}else if(N instanceof THREE.MeshNormalMaterial){s.r=Ga(G.normalWorld.x);s.g=Ga(G.normalWorld.y);s.b=Ga(G.normalWorld.z);s.updateStyleString();N.wireframe?Ca(s.__styleString,N.wireframe_linewidth):Da(s.__styleString)}}}function Ca(D,X){if(H!=D)p.strokeStyle=H=D;if(e!=X)p.lineWidth=e=X;p.stroke();x.inflate(X*2)}function Da(D){if(L!=D)p.fillStyle=L=D;p.fill()}function ya(D,X,Q,G,N,Y,ea,ga,ha,qa,ka,ra,za){var na,
|
|
|
+sa;na=ea.width-1;sa=ea.height-1;ga*=na;ha*=sa;qa*=na;ka*=sa;ra*=na;za*=sa;Q-=D;G-=X;N-=D;Y-=X;qa-=ga;ka-=ha;ra-=ga;za-=ha;na=qa*za-ra*ka;if(na!=0){sa=1/na;na=(za*Q-ka*N)*sa;ka=(za*G-ka*Y)*sa;Q=(qa*N-ra*Q)*sa;G=(qa*Y-ra*G)*sa;D=D-na*ga-Q*ha;X=X-ka*ga-G*ha;p.save();p.transform(na,ka,Q,G,D,X);p.clip();p.drawImage(ea,0,0);p.restore()}}function Ka(D,X,Q,G){var N=~~(D.r*255),Y=~~(D.g*255);D=~~(D.b*255);var ea=~~(X.r*255),ga=~~(X.g*255);X=~~(X.b*255);var ha=~~(Q.r*255),qa=~~(Q.g*255);Q=~~(Q.b*255);var ka=
|
|
|
+~~(G.r*255),ra=~~(G.g*255);G=~~(G.b*255);fa[0]=N<0?0:N>255?255:N;fa[1]=Y<0?0:Y>255?255:Y;fa[2]=D<0?0:D>255?255:D;fa[4]=ea<0?0:ea>255?255:ea;fa[5]=ga<0?0:ga>255?255:ga;fa[6]=X<0?0:X>255?255:X;fa[8]=ha<0?0:ha>255?255:ha;fa[9]=qa<0?0:qa>255?255:qa;fa[10]=Q<0?0:Q>255?255:Q;fa[12]=ka<0?0:ka>255?255:ka;fa[13]=ra<0?0:ra>255?255:ra;fa[14]=G<0?0:G>255?255:G;pa.putImageData(ua,0,0);va.drawImage(ia,0,0);return da}function Fa(D,X,Q){D=(D-X)/(Q-X);return D*D*(3-2*D)}function Ga(D){D=(D+1)*0.5;return D<0?0:D>1?
|
|
|
+1:D}function Ha(D,X){var Q=X.x-D.x,G=X.y-D.y,N=1/Math.sqrt(Q*Q+G*G);Q*=N;G*=N;X.x+=Q;X.y+=G;D.x-=Q;D.y-=G}var Ea,La,aa,oa,wa,Ia,Ma,Aa;this.autoClear?this.clear():p.setTransform(1,0,0,-1,r,o);d=h.projectScene(ba,ja,this.sortElements);(K=ba.lights.length>0)&&la(ba);Ea=0;for(La=d.length;Ea<La;Ea++){aa=d[Ea];x.empty();if(aa instanceof THREE.RenderableParticle){g=aa;g.x*=r;g.y*=o;oa=0;for(wa=aa.materials.length;oa<wa;oa++)Na(g,aa,aa.materials[oa],ba)}else if(aa instanceof THREE.RenderableLine){g=aa.v1;
|
|
|
+i=aa.v2;g.positionScreen.x*=r;g.positionScreen.y*=o;i.positionScreen.x*=r;i.positionScreen.y*=o;x.addPoint(g.positionScreen.x,g.positionScreen.y);x.addPoint(i.positionScreen.x,i.positionScreen.y);if(V.instersects(x)){oa=0;for(wa=aa.materials.length;oa<wa;)Oa(g,i,aa,aa.materials[oa++],ba)}}else if(aa instanceof THREE.RenderableFace3){g=aa.v1;i=aa.v2;f=aa.v3;g.positionScreen.x*=r;g.positionScreen.y*=o;i.positionScreen.x*=r;i.positionScreen.y*=o;f.positionScreen.x*=r;f.positionScreen.y*=o;if(aa.overdraw){Ha(g.positionScreen,
|
|
|
+i.positionScreen);Ha(i.positionScreen,f.positionScreen);Ha(f.positionScreen,g.positionScreen)}x.add3Points(g.positionScreen.x,g.positionScreen.y,i.positionScreen.x,i.positionScreen.y,f.positionScreen.x,f.positionScreen.y);if(V.instersects(x)){oa=0;for(wa=aa.meshMaterials.length;oa<wa;){Aa=aa.meshMaterials[oa++];if(Aa instanceof THREE.MeshFaceMaterial){Ia=0;for(Ma=aa.faceMaterials.length;Ia<Ma;)(Aa=aa.faceMaterials[Ia++])&&Ja(g,i,f,aa,Aa,ba)}else Ja(g,i,f,aa,Aa,ba)}}}R.addRectangle(x)}p.setTransform(1,
|
|
|
+0,0,1,0,0)}};
|
|
|
THREE.SVGRenderer=function(){function a(O,F,U){var S,I,M,V;S=0;for(I=O.lights.length;S<I;S++){M=O.lights[S];if(M instanceof THREE.DirectionalLight){V=F.normalWorld.dot(M.position)*M.intensity;if(V>0){U.r+=M.color.r*V;U.g+=M.color.g*V;U.b+=M.color.b*V}}else if(M instanceof THREE.PointLight){z.sub(M.position,F.centroidWorld);z.normalize();V=F.normalWorld.dot(z)*M.intensity;if(V>0){U.r+=M.color.r*V;U.g+=M.color.g*V;U.b+=M.color.b*V}}}}function c(O,F,U,S,I,M){v=h(C++);v.setAttribute("d","M "+O.positionScreen.x+
|
|
|
" "+O.positionScreen.y+" L "+F.positionScreen.x+" "+F.positionScreen.y+" L "+U.positionScreen.x+","+U.positionScreen.y+"z");if(I instanceof THREE.MeshBasicMaterial)f.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshLambertMaterial)if(i){k.r=l.r;k.g=l.g;k.b=l.b;a(M,S,k);f.r=I.color.r*k.r;f.g=I.color.g*k.g;f.b=I.color.b*k.b;f.updateStyleString()}else f.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshDepthMaterial){n=1-I.__2near/(I.__farPlusNear-S.z*I.__farMinusNear);
|
|
|
f.setRGB(n,n,n)}else I instanceof THREE.MeshNormalMaterial&&f.setRGB(j(S.normalWorld.x),j(S.normalWorld.y),j(S.normalWorld.z));I.wireframe?v.setAttribute("style","fill: none; stroke: "+f.__styleString+"; stroke-width: "+I.wireframe_linewidth+"; stroke-opacity: "+I.opacity+"; stroke-linecap: "+I.wireframe_linecap+"; stroke-linejoin: "+I.wireframe_linejoin):v.setAttribute("style","fill: "+f.__styleString+"; fill-opacity: "+I.opacity);r.appendChild(v)}function d(O,F,U,S,I,M,V){v=h(C++);v.setAttribute("d",
|
|
@@ -159,12 +160,12 @@ this.createLineBuffers=function(e){e.__webGLVertexBuffer=b.createBuffer();e.__we
|
|
|
function(e){var g=e.vertices.length;e.__vertexArray=new Float32Array(g*3);e.__colorArray=new Float32Array(g*3);e.__lineArray=new Uint16Array(g);e.__webGLLineCount=g};this.initParticleBuffers=function(e){var g=e.vertices.length;e.__vertexArray=new Float32Array(g*3);e.__colorArray=new Float32Array(g*3);e.__particleArray=new Uint16Array(g);e.__sortArray=[];e.__webGLParticleCount=g};this.initMeshBuffers=function(e,g){var i,f,k=0,l=0,t=0,q=g.geometry.faces,n=e.faces;i=0;for(f=n.length;i<f;i++){fi=n[i];
|
|
|
face=q[fi];if(face instanceof THREE.Face3){k+=3;l+=1;t+=3}else if(face instanceof THREE.Face4){k+=4;l+=2;t+=4}}e.__vertexArray=new Float32Array(k*3);e.__normalArray=new Float32Array(k*3);e.__tangentArray=new Float32Array(k*4);e.__colorArray=new Float32Array(k*3);e.__uvArray=new Float32Array(k*2);e.__uv2Array=new Float32Array(k*2);e.__faceArray=new Uint16Array(l*3);e.__lineArray=new Uint16Array(t*2);k=false;i=0;for(f=g.materials.length;i<f;i++){q=g.materials[i];if(q instanceof THREE.MeshFaceMaterial){q=
|
|
|
0;for(n=e.materials.length;q<n;q++)if(e.materials[q]&&e.materials[q].shading!=undefined&&e.materials[q].shading==THREE.SmoothShading){k=true;break}}else if(q&&q.shading!=undefined&&q.shading==THREE.SmoothShading){k=true;break}if(k)break}e.__needsSmoothNormals=k;e.__webGLFaceCount=l*3;e.__webGLLineCount=t*2};this.setMeshBuffers=function(e,g,i){var f,k,l,t,q,n,z,s,w,E,v=0,C=0,W=0,J=0,P=0,O=0,F=0,U=0,S=0,I=e.__vertexArray,M=e.__uvArray,V=e.__uv2Array,R=e.__normalArray,x=e.__tangentArray,K=e.__colorArray,
|
|
|
-T=e.__faceArray,Z=e.__lineArray,ma=e.__needsSmoothNormals,ca=g.geometry,xa=ca.__dirtyVertices,$=ca.__dirtyElements,ia=ca.__dirtyUvs,oa=ca.__dirtyNormals,ta=ca.__dirtyTangents,fa=ca.__dirtyColors,da=ca.vertices,ua=e.faces,sa=ca.faces,ba=ca.uvs,ja=ca.uvs2,la=ca.colors;g=0;for(f=ua.length;g<f;g++){k=ua[g];l=sa[k];n=ba[k];k=ja[k];t=l.vertexNormals;q=l.normal;if(l instanceof THREE.Face3){if(xa){z=da[l.a].position;s=da[l.b].position;w=da[l.c].position;I[C]=z.x;I[C+1]=z.y;I[C+2]=z.z;I[C+3]=s.x;I[C+4]=s.y;
|
|
|
-I[C+5]=s.z;I[C+6]=w.x;I[C+7]=w.y;I[C+8]=w.z;C+=9}if(fa&&la.length){z=la[l.a];s=la[l.b];w=la[l.c];K[S]=z.r;K[S+1]=z.g;K[S+2]=z.b;K[S+3]=s.r;K[S+4]=s.g;K[S+5]=s.b;K[S+6]=w.r;K[S+7]=w.g;K[S+8]=w.b;S+=9}if(ta&&ca.hasTangents){z=da[l.a].tangent;s=da[l.b].tangent;w=da[l.c].tangent;x[F]=z.x;x[F+1]=z.y;x[F+2]=z.z;x[F+3]=z.w;x[F+4]=s.x;x[F+5]=s.y;x[F+6]=s.z;x[F+7]=s.w;x[F+8]=w.x;x[F+9]=w.y;x[F+10]=w.z;x[F+11]=w.w;F+=12}if(oa)if(t.length==3&&ma)for(l=0;l<3;l++){q=t[l];R[O]=q.x;R[O+1]=q.y;R[O+2]=q.z;O+=3}else for(l=
|
|
|
+T=e.__faceArray,Z=e.__lineArray,ma=e.__needsSmoothNormals,ca=g.geometry,xa=ca.__dirtyVertices,$=ca.__dirtyElements,ia=ca.__dirtyUvs,pa=ca.__dirtyNormals,ua=ca.__dirtyTangents,fa=ca.__dirtyColors,da=ca.vertices,va=e.faces,ta=ca.faces,ba=ca.uvs,ja=ca.uvs2,la=ca.colors;g=0;for(f=va.length;g<f;g++){k=va[g];l=ta[k];n=ba[k];k=ja[k];t=l.vertexNormals;q=l.normal;if(l instanceof THREE.Face3){if(xa){z=da[l.a].position;s=da[l.b].position;w=da[l.c].position;I[C]=z.x;I[C+1]=z.y;I[C+2]=z.z;I[C+3]=s.x;I[C+4]=s.y;
|
|
|
+I[C+5]=s.z;I[C+6]=w.x;I[C+7]=w.y;I[C+8]=w.z;C+=9}if(fa&&la.length){z=la[l.a];s=la[l.b];w=la[l.c];K[S]=z.r;K[S+1]=z.g;K[S+2]=z.b;K[S+3]=s.r;K[S+4]=s.g;K[S+5]=s.b;K[S+6]=w.r;K[S+7]=w.g;K[S+8]=w.b;S+=9}if(ua&&ca.hasTangents){z=da[l.a].tangent;s=da[l.b].tangent;w=da[l.c].tangent;x[F]=z.x;x[F+1]=z.y;x[F+2]=z.z;x[F+3]=z.w;x[F+4]=s.x;x[F+5]=s.y;x[F+6]=s.z;x[F+7]=s.w;x[F+8]=w.x;x[F+9]=w.y;x[F+10]=w.z;x[F+11]=w.w;F+=12}if(pa)if(t.length==3&&ma)for(l=0;l<3;l++){q=t[l];R[O]=q.x;R[O+1]=q.y;R[O+2]=q.z;O+=3}else for(l=
|
|
|
0;l<3;l++){R[O]=q.x;R[O+1]=q.y;R[O+2]=q.z;O+=3}if(ia&&n)for(l=0;l<3;l++){t=n[l];M[W]=t.u;M[W+1]=t.v;W+=2}if(ia&&k)for(l=0;l<3;l++){n=k[l];V[J]=n.u;V[J+1]=n.v;J+=2}if($){T[P]=v;T[P+1]=v+1;T[P+2]=v+2;P+=3;Z[U]=v;Z[U+1]=v+1;Z[U+2]=v;Z[U+3]=v+2;Z[U+4]=v+1;Z[U+5]=v+2;U+=6;v+=3}}else if(l instanceof THREE.Face4){if(xa){z=da[l.a].position;s=da[l.b].position;w=da[l.c].position;E=da[l.d].position;I[C]=z.x;I[C+1]=z.y;I[C+2]=z.z;I[C+3]=s.x;I[C+4]=s.y;I[C+5]=s.z;I[C+6]=w.x;I[C+7]=w.y;I[C+8]=w.z;I[C+9]=E.x;I[C+
|
|
|
-10]=E.y;I[C+11]=E.z;C+=12}if(fa&&la.length){z=la[l.a];s=la[l.b];w=la[l.d];K[S]=z.r;K[S+1]=z.g;K[S+2]=z.b;K[S+3]=s.r;K[S+4]=s.g;K[S+5]=s.b;K[S+6]=w.r;K[S+7]=w.g;K[S+8]=w.b;K[S+9]=(void 0).r;K[S+10]=(void 0).g;K[S+11]=(void 0).b;S+=12}if(ta&&ca.hasTangents){z=da[l.a].tangent;s=da[l.b].tangent;w=da[l.c].tangent;l=da[l.d].tangent;x[F]=z.x;x[F+1]=z.y;x[F+2]=z.z;x[F+3]=z.w;x[F+4]=s.x;x[F+5]=s.y;x[F+6]=s.z;x[F+7]=s.w;x[F+8]=w.x;x[F+9]=w.y;x[F+10]=w.z;x[F+11]=w.w;x[F+12]=l.x;x[F+13]=l.y;x[F+14]=l.z;x[F+15]=
|
|
|
-l.w;F+=16}if(oa)if(t.length==4&&ma)for(l=0;l<4;l++){q=t[l];R[O]=q.x;R[O+1]=q.y;R[O+2]=q.z;O+=3}else for(l=0;l<4;l++){R[O]=q.x;R[O+1]=q.y;R[O+2]=q.z;O+=3}if(ia&&n)for(l=0;l<4;l++){t=n[l];M[W]=t.u;M[W+1]=t.v;W+=2}if(ia&&k)for(l=0;l<4;l++){n=k[l];V[J]=n.u;V[J+1]=n.v;J+=2}if($){T[P]=v;T[P+1]=v+1;T[P+2]=v+2;T[P+3]=v;T[P+4]=v+2;T[P+5]=v+3;P+=6;Z[U]=v;Z[U+1]=v+1;Z[U+2]=v;Z[U+3]=v+3;Z[U+4]=v+1;Z[U+5]=v+2;Z[U+6]=v+2;Z[U+7]=v+3;U+=8;v+=4}}}if(xa){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLVertexBuffer);b.bufferData(b.ARRAY_BUFFER,
|
|
|
-I,i)}if(fa&&la.length){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLColorBuffer);b.bufferData(b.ARRAY_BUFFER,K,i)}if(oa){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLNormalBuffer);b.bufferData(b.ARRAY_BUFFER,R,i)}if(ta&&ca.hasTangents){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLTangentBuffer);b.bufferData(b.ARRAY_BUFFER,x,i)}if(ia&&W>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUVBuffer);b.bufferData(b.ARRAY_BUFFER,M,i)}if(ia&&J>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUV2Buffer);b.bufferData(b.ARRAY_BUFFER,V,i)}if($){b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,
|
|
|
+10]=E.y;I[C+11]=E.z;C+=12}if(fa&&la.length){z=la[l.a];s=la[l.b];w=la[l.d];K[S]=z.r;K[S+1]=z.g;K[S+2]=z.b;K[S+3]=s.r;K[S+4]=s.g;K[S+5]=s.b;K[S+6]=w.r;K[S+7]=w.g;K[S+8]=w.b;K[S+9]=(void 0).r;K[S+10]=(void 0).g;K[S+11]=(void 0).b;S+=12}if(ua&&ca.hasTangents){z=da[l.a].tangent;s=da[l.b].tangent;w=da[l.c].tangent;l=da[l.d].tangent;x[F]=z.x;x[F+1]=z.y;x[F+2]=z.z;x[F+3]=z.w;x[F+4]=s.x;x[F+5]=s.y;x[F+6]=s.z;x[F+7]=s.w;x[F+8]=w.x;x[F+9]=w.y;x[F+10]=w.z;x[F+11]=w.w;x[F+12]=l.x;x[F+13]=l.y;x[F+14]=l.z;x[F+15]=
|
|
|
+l.w;F+=16}if(pa)if(t.length==4&&ma)for(l=0;l<4;l++){q=t[l];R[O]=q.x;R[O+1]=q.y;R[O+2]=q.z;O+=3}else for(l=0;l<4;l++){R[O]=q.x;R[O+1]=q.y;R[O+2]=q.z;O+=3}if(ia&&n)for(l=0;l<4;l++){t=n[l];M[W]=t.u;M[W+1]=t.v;W+=2}if(ia&&k)for(l=0;l<4;l++){n=k[l];V[J]=n.u;V[J+1]=n.v;J+=2}if($){T[P]=v;T[P+1]=v+1;T[P+2]=v+2;T[P+3]=v;T[P+4]=v+2;T[P+5]=v+3;P+=6;Z[U]=v;Z[U+1]=v+1;Z[U+2]=v;Z[U+3]=v+3;Z[U+4]=v+1;Z[U+5]=v+2;Z[U+6]=v+2;Z[U+7]=v+3;U+=8;v+=4}}}if(xa){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLVertexBuffer);b.bufferData(b.ARRAY_BUFFER,
|
|
|
+I,i)}if(fa&&la.length){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLColorBuffer);b.bufferData(b.ARRAY_BUFFER,K,i)}if(pa){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLNormalBuffer);b.bufferData(b.ARRAY_BUFFER,R,i)}if(ua&&ca.hasTangents){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLTangentBuffer);b.bufferData(b.ARRAY_BUFFER,x,i)}if(ia&&W>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUVBuffer);b.bufferData(b.ARRAY_BUFFER,M,i)}if(ia&&J>0){b.bindBuffer(b.ARRAY_BUFFER,e.__webGLUV2Buffer);b.bufferData(b.ARRAY_BUFFER,V,i)}if($){b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,
|
|
|
e.__webGLFaceBuffer);b.bufferData(b.ELEMENT_ARRAY_BUFFER,T,i);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,e.__webGLLineBuffer);b.bufferData(b.ELEMENT_ARRAY_BUFFER,Z,i)}};this.setLineBuffers=function(e,g){var i,f,k,l=e.vertices,t=e.colors,q=l.length,n=t.length,z=e.__vertexArray,s=e.__colorArray,w=e.__lineArray,E=e.__dirtyColors,v=e.__dirtyElements;if(e.__dirtyVertices){for(i=0;i<q;i++){f=l[i].position;k=i*3;z[k]=f.x;z[k+1]=f.y;z[k+2]=f.z}b.bindBuffer(b.ARRAY_BUFFER,e.__webGLVertexBuffer);b.bufferData(b.ARRAY_BUFFER,
|
|
|
z,g)}if(E){for(i=0;i<n;i++){color=t[i];k=i*3;s[k]=color.r;s[k+1]=color.g;s[k+2]=color.b}b.bindBuffer(b.ARRAY_BUFFER,e.__webGLColorBuffer);b.bufferData(b.ARRAY_BUFFER,s,g)}if(v){for(i=0;i<q;i++)w[i]=i;b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,e.__webGLLineBuffer);b.bufferData(b.ELEMENT_ARRAY_BUFFER,w,g)}};this.setParticleBuffers=function(e,g,i,f){var k,l,t;l=e.vertices;var q=l.length,n=e.colors,z=n.length,s=e.__vertexArray,w=e.__particleArray,E=e.__colorArray,v=e.__sortArray,C=e.__dirtyVertices,W=e.__dirtyElements,
|
|
|
J=e.__dirtyColors;if(i.sortParticles){p.multiply(f.projectionMatrix,f.matrix);p.multiplySelf(i.matrix);for(k=0;k<q;k++){t=l[k].position;u.copy(t);p.multiplyVector3(u);v[k]=[u.z,k]}v.sort(function(P,O){return O[0]-P[0]});for(k=0;k<q;k++){t=l[v[k][1]].position;f=k*3;s[f]=t.x;s[f+1]=t.y;s[f+2]=t.z}for(l=0;l<z;l++){f=l*3;color=n[v[l][1]];E[f]=color.r;E[f+1]=color.g;E[f+2]=color.b}}else{if(C)for(k=0;k<q;k++){t=l[k].position;f=k*3;s[f]=t.x;s[f+1]=t.y;s[f+2]=t.z}if(J)for(l=0;l<z;l++){color=n[l];f=l*3;E[f]=
|