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