|
@@ -24,9 +24,9 @@ c=a.length;b<c;b++)Array.prototype.push.apply(d,this.intersectObject(a[b]));d.so
|
|
|
c(this.origin,this.direction,a.matrixWorld.getPosition());if(o>a.scale.x)return[];b={distance:o,point:a.position,face:null,object:a};m.push(b)}else if(a instanceof THREE.Mesh){o=c(this.origin,this.direction,a.matrixWorld.getPosition());q=THREE.Frustum.__v1.set(a.matrixWorld.getColumnX().length(),a.matrixWorld.getColumnY().length(),a.matrixWorld.getColumnZ().length());if(o>a.geometry.boundingSphere.radius*Math.max(q.x,Math.max(q.y,q.z)))return m;var r,s,j=a.geometry,t=j.vertices,u;a.matrixRotationWorld.extractRotation(a.matrixWorld);
|
|
|
for(o=0,q=j.faces.length;o<q;o++)if(b=j.faces[o],i.copy(this.origin),k.copy(this.direction),u=a.matrixWorld,l=u.multiplyVector3(l.copy(b.centroid)).subSelf(i),p=a.matrixRotationWorld.multiplyVector3(p.copy(b.normal)),r=k.dot(p),!(1.0E-4>Math.abs(r))&&(s=p.dot(l)/r,!(0>s)&&(a.doubleSided||(a.flipSided?0<r:0>r))))if(n.add(i,k.multiplyScalar(s)),b instanceof THREE.Face3)e=u.multiplyVector3(e.copy(t[b.a].position)),g=u.multiplyVector3(g.copy(t[b.b].position)),f=u.multiplyVector3(f.copy(t[b.c].position)),
|
|
|
d(n,e,g,f)&&(b={distance:i.distanceTo(n),point:n.clone(),face:b,object:a},m.push(b));else if(b instanceof THREE.Face4&&(e=u.multiplyVector3(e.copy(t[b.a].position)),g=u.multiplyVector3(g.copy(t[b.b].position)),f=u.multiplyVector3(f.copy(t[b.c].position)),h=u.multiplyVector3(h.copy(t[b.d].position)),d(n,e,g,h)||d(n,g,f,h)))b={distance:i.distanceTo(n),point:n.clone(),face:b,object:a},m.push(b)}return m};var o=new THREE.Vector3,q=new THREE.Vector3,m=new THREE.Vector3,r,s,t,w,u,v,A,B,C,D,I};
|
|
|
-THREE.Rectangle=function(){function a(){g=d-b;f=e-c}var b,c,d,e,g,f,h=!0;this.getX=function(){return b};this.getY=function(){return c};this.getWidth=function(){return g};this.getHeight=function(){return f};this.getLeft=function(){return b};this.getTop=function(){return c};this.getRight=function(){return d};this.getBottom=function(){return e};this.set=function(g,f,l,p){h=!1;b=g;c=f;d=l;e=p;a()};this.addPoint=function(g,f){h?(h=!1,b=g,c=f,d=g,e=f):(b=b<g?b:g,c=c<f?c:f,d=d>g?d:g,e=e>f?e:f);a()};this.add3Points=
|
|
|
-function(g,f,l,p,n,o){h?(h=!1,b=g<l?g<n?g:n:l<n?l:n,c=f<p?f<o?f:o:p<o?p:o,d=g>l?g>n?g:n:l>n?l:n,e=f>p?f>o?f:o:p>o?p:o):(b=g<l?g<n?g<b?g:b:n<b?n:b:l<n?l<b?l:b:n<b?n:b,c=f<p?f<o?f<c?f:c:o<c?o:c:p<o?p<c?p:c:o<c?o:c,d=g>l?g>n?g>d?g:d:n>d?n:d:l>n?l>d?l:d:n>d?n:d,e=f>p?f>o?f>e?f:e:o>e?o:e:p>o?p>e?p:e:o>e?o:e);a()};this.addRectangle=function(g){h?(h=!1,b=g.getLeft(),c=g.getTop(),d=g.getRight(),e=g.getBottom()):(b=b<g.getLeft()?b:g.getLeft(),c=c<g.getTop()?c:g.getTop(),d=d>g.getRight()?d:g.getRight(),e=e>
|
|
|
-g.getBottom()?e:g.getBottom());a()};this.inflate=function(g){b-=g;c-=g;d+=g;e+=g;a()};this.minSelf=function(g){b=b>g.getLeft()?b:g.getLeft();c=c>g.getTop()?c:g.getTop();d=d<g.getRight()?d:g.getRight();e=e<g.getBottom()?e:g.getBottom();a()};this.intersects=function(a){return d<a.getLeft()||b>a.getRight()||e<a.getTop()||c>a.getBottom()?!1:!0};this.empty=function(){h=!0;e=d=c=b=0;a()};this.isEmpty=function(){return h}};
|
|
|
+THREE.Rectangle=function(){function a(){g=d-b;f=e-c}var b,c,d,e,g,f,h=!0;this.getX=function(){return b};this.getY=function(){return c};this.getWidth=function(){return g};this.getHeight=function(){return f};this.getLeft=function(){return b};this.getTop=function(){return c};this.getRight=function(){return d};this.getBottom=function(){return e};this.set=function(f,g,l,p){h=!1;b=f;c=g;d=l;e=p;a()};this.addPoint=function(f,g){h?(h=!1,b=f,c=g,d=f,e=g):(b=b<f?b:f,c=c<g?c:g,d=d>f?d:f,e=e>g?e:g);a()};this.add3Points=
|
|
|
+function(f,g,l,p,n,o){h?(h=!1,b=f<l?f<n?f:n:l<n?l:n,c=g<p?g<o?g:o:p<o?p:o,d=f>l?f>n?f:n:l>n?l:n,e=g>p?g>o?g:o:p>o?p:o):(b=f<l?f<n?f<b?f:b:n<b?n:b:l<n?l<b?l:b:n<b?n:b,c=g<p?g<o?g<c?g:c:o<c?o:c:p<o?p<c?p:c:o<c?o:c,d=f>l?f>n?f>d?f:d:n>d?n:d:l>n?l>d?l:d:n>d?n:d,e=g>p?g>o?g>e?g:e:o>e?o:e:p>o?p>e?p:e:o>e?o:e);a()};this.addRectangle=function(f){h?(h=!1,b=f.getLeft(),c=f.getTop(),d=f.getRight(),e=f.getBottom()):(b=b<f.getLeft()?b:f.getLeft(),c=c<f.getTop()?c:f.getTop(),d=d>f.getRight()?d:f.getRight(),e=e>
|
|
|
+f.getBottom()?e:f.getBottom());a()};this.inflate=function(f){b-=f;c-=f;d+=f;e+=f;a()};this.minSelf=function(f){b=b>f.getLeft()?b:f.getLeft();c=c>f.getTop()?c:f.getTop();d=d<f.getRight()?d:f.getRight();e=e<f.getBottom()?e:f.getBottom();a()};this.intersects=function(a){return d<a.getLeft()||b>a.getRight()||e<a.getTop()||c>a.getBottom()?!1:!0};this.empty=function(){h=!0;e=d=c=b=0;a()};this.isEmpty=function(){return h}};
|
|
|
THREE.Math={clamp:function(a,b,c){return a<b?b:a>c?c:a},clampBottom:function(a,b){return a<b?b:a},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},random16:function(){return(65280*Math.random()+255*Math.random())/65535},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(0.5-Math.random())}};THREE.Matrix3=function(){this.m=[]};
|
|
|
THREE.Matrix3.prototype={constructor:THREE.Matrix3,transpose:function(){var a,b=this.m;a=b[1];b[1]=b[3];b[3]=a;a=b[2];b[2]=b[6];b[6]=a;a=b[5];b[5]=b[7];b[7]=a;return this},transposeIntoArray:function(a){var b=this.m;a[0]=b[0];a[1]=b[3];a[2]=b[6];a[3]=b[1];a[4]=b[4];a[5]=b[7];a[6]=b[2];a[7]=b[5];a[8]=b[8];return this}};
|
|
|
THREE.Matrix4=function(a,b,c,d,e,g,f,h,i,k,l,p,n,o,q,m){this.set(void 0!==a?a:1,b||0,c||0,d||0,e||0,void 0!==g?g:1,f||0,h||0,i||0,k||0,void 0!==l?l:1,p||0,n||0,o||0,q||0,void 0!==m?m:1);this.flat=Array(16);this.m33=new THREE.Matrix3};
|
|
@@ -63,17 +63,17 @@ THREE.Object3D.prototype={constructor:THREE.Object3D,translate:function(a,b){thi
|
|
|
this)console.warn("THREE: Object3D.add(): An object can't be added as a child of itself.");else if(-1===this.children.indexOf(a)){void 0!==a.parent&&a.parent.remove(a);a.parent=this;this.children.push(a);for(var b=this;void 0!==b.parent;)b=b.parent;void 0!==b&&b instanceof THREE.Scene&&b.addObject(a)}},remove:function(a){var b=this.children.indexOf(a);if(-1!==b){a.parent=void 0;this.children.splice(b,1);for(b=this;void 0!==b.parent;)b=b.parent;void 0!==b&&b instanceof THREE.Scene&&b.removeObject(a)}},
|
|
|
getChildByName:function(a,b){var c,d,e;for(c=0,d=this.children.length;c<d;c++){e=this.children[c];if(e.name===a||b&&(e=e.getChildByName(a,b),void 0!==e))return e}},updateMatrix:function(){this.matrix.setPosition(this.position);this.useQuaternion?this.matrix.setRotationFromQuaternion(this.quaternion):this.matrix.setRotationFromEuler(this.rotation,this.eulerOrder);if(1!==this.scale.x||1!==this.scale.y||1!==this.scale.z)this.matrix.scale(this.scale),this.boundRadiusScale=Math.max(this.scale.x,Math.max(this.scale.y,
|
|
|
this.scale.z));this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(a){this.matrixAutoUpdate&&this.updateMatrix();if(this.matrixWorldNeedsUpdate||a)this.parent?this.matrixWorld.multiply(this.parent.matrixWorld,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,a=!0;for(var b=0,c=this.children.length;b<c;b++)this.children[b].updateMatrixWorld(a)}};THREE.Object3DCount=0;
|
|
|
-THREE.Projector=function(){function a(){var a=f[g]=f[g]||new THREE.RenderableObject;g++;return a}function b(){var a=k[i]=k[i]||new THREE.RenderableVertex;i++;return a}function c(a,b){return b.z-a.z}function d(a,b){var c=0,d=1,e=a.z+a.w,g=b.z+b.w,f=-a.z+a.w,h=-b.z+b.w;if(0<=e&&0<=g&&0<=f&&0<=h)return!0;if(0>e&&0>g||0>f&&0>h)return!1;0>e?c=Math.max(c,e/(e-g)):0>g&&(d=Math.min(d,e/(e-g)));0>f?c=Math.max(c,f/(f-h)):0>h&&(d=Math.min(d,f/(f-h)));if(d<c)return!1;a.lerpSelf(b,c);b.lerpSelf(a,1-d);return!0}
|
|
|
+THREE.Projector=function(){function a(){var a=f[g]=f[g]||new THREE.RenderableObject;g++;return a}function b(){var a=k[i]=k[i]||new THREE.RenderableVertex;i++;return a}function c(a,b){return b.z-a.z}function d(a,b){var c=0,d=1,e=a.z+a.w,f=b.z+b.w,g=-a.z+a.w,h=-b.z+b.w;if(0<=e&&0<=f&&0<=g&&0<=h)return!0;if(0>e&&0>f||0>g&&0>h)return!1;0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f)));0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h)));if(d<c)return!1;a.lerpSelf(b,c);b.lerpSelf(a,1-d);return!0}
|
|
|
var e,g,f=[],h,i,k=[],l,p,n=[],o,q=[],m,r,s=[],t,w,u=[],v={objects:[],sprites:[],lights:[],elements:[]},A=new THREE.Vector3,B=new THREE.Vector4,C=new THREE.Matrix4,D=new THREE.Matrix4,I=new THREE.Frustum,K=new THREE.Vector4,O=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);C.multiply(b.projectionMatrix,b.matrixWorldInverse);C.multiplyVector3(a);return a};this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);C.multiply(b.matrixWorld,
|
|
|
b.projectionMatrixInverse);C.multiplyVector3(a);return a};this.pickingRay=function(a,b){var c;a.z=-1;c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.subSelf(a).normalize();return new THREE.Ray(a,c)};this.projectGraph=function(b,d){g=0;v.objects.length=0;v.sprites.length=0;v.lights.length=0;var f=function(b){if(!1!==b.visible){(b instanceof THREE.Mesh||b instanceof THREE.Line)&&(!1===b.frustumCulled||I.contains(b))?(C.multiplyVector3(A.copy(b.position)),e=a(),e.object=
|
|
|
-b,e.z=A.z,v.objects.push(e)):b instanceof THREE.Sprite||b instanceof THREE.Particle?(C.multiplyVector3(A.copy(b.position)),e=a(),e.object=b,e.z=A.z,v.sprites.push(e)):b instanceof THREE.Light&&v.lights.push(b);for(var c=0,d=b.children.length;c<d;c++)f(b.children[c])}};f(b);d&&v.objects.sort(c);return v};this.projectScene=function(a,e,g){var f=e.near,G=e.far,j,A,z,E,Q,N,ea,ia,$,aa,ba,Y,ca,fa,Ua,Ka;w=r=o=p=0;v.elements.length=0;void 0===e.parent&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),
|
|
|
+b,e.z=A.z,v.objects.push(e)):b instanceof THREE.Sprite||b instanceof THREE.Particle?(C.multiplyVector3(A.copy(b.position)),e=a(),e.object=b,e.z=A.z,v.sprites.push(e)):b instanceof THREE.Light&&v.lights.push(b);for(var c=0,d=b.children.length;c<d;c++)f(b.children[c])}};f(b);d&&v.objects.sort(c);return v};this.projectScene=function(a,e,f){var g=e.near,G=e.far,j,A,z,E,Q,N,ea,ia,$,aa,ba,Y,ca,fa,Ua,Ka;w=r=o=p=0;v.elements.length=0;void 0===e.parent&&(console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it..."),
|
|
|
a.add(e));a.updateMatrixWorld();e.matrixWorldInverse.getInverse(e.matrixWorld);C.multiply(e.projectionMatrix,e.matrixWorldInverse);I.setFromMatrix(C);v=this.projectGraph(a,!1);for(a=0,j=v.objects.length;a<j;a++)if($=v.objects[a].object,aa=$.matrixWorld,Y=$.material,i=0,$ instanceof THREE.Mesh){ba=$.geometry;ca=$.geometry.materials;E=ba.vertices;fa=ba.faces;Ua=ba.faceVertexUvs;ba=$.matrixRotationWorld.extractRotation(aa);for(A=0,z=E.length;A<z;A++)h=b(),h.positionWorld.copy(E[A].position),aa.multiplyVector3(h.positionWorld),
|
|
|
-h.positionScreen.copy(h.positionWorld),C.multiplyVector4(h.positionScreen),h.positionScreen.x/=h.positionScreen.w,h.positionScreen.y/=h.positionScreen.w,h.visible=h.positionScreen.z>f&&h.positionScreen.z<G;for(E=0,A=fa.length;E<A;E++){z=fa[E];if(z instanceof THREE.Face3)if(Q=k[z.a],N=k[z.b],ea=k[z.c],Q.visible&&N.visible&&ea.visible&&($.doubleSided||$.flipSided!=0>(ea.positionScreen.x-Q.positionScreen.x)*(N.positionScreen.y-Q.positionScreen.y)-(ea.positionScreen.y-Q.positionScreen.y)*(N.positionScreen.x-
|
|
|
+h.positionScreen.copy(h.positionWorld),C.multiplyVector4(h.positionScreen),h.positionScreen.x/=h.positionScreen.w,h.positionScreen.y/=h.positionScreen.w,h.visible=h.positionScreen.z>g&&h.positionScreen.z<G;for(E=0,A=fa.length;E<A;E++){z=fa[E];if(z instanceof THREE.Face3)if(Q=k[z.a],N=k[z.b],ea=k[z.c],Q.visible&&N.visible&&ea.visible&&($.doubleSided||$.flipSided!=0>(ea.positionScreen.x-Q.positionScreen.x)*(N.positionScreen.y-Q.positionScreen.y)-(ea.positionScreen.y-Q.positionScreen.y)*(N.positionScreen.x-
|
|
|
Q.positionScreen.x)))ia=n[p]=n[p]||new THREE.RenderableFace3,p++,l=ia,l.v1.copy(Q),l.v2.copy(N),l.v3.copy(ea);else continue;else if(z instanceof THREE.Face4)if(Q=k[z.a],N=k[z.b],ea=k[z.c],ia=k[z.d],Q.visible&&N.visible&&ea.visible&&ia.visible&&($.doubleSided||$.flipSided!=(0>(ia.positionScreen.x-Q.positionScreen.x)*(N.positionScreen.y-Q.positionScreen.y)-(ia.positionScreen.y-Q.positionScreen.y)*(N.positionScreen.x-Q.positionScreen.x)||0>(N.positionScreen.x-ea.positionScreen.x)*(ia.positionScreen.y-
|
|
|
ea.positionScreen.y)-(N.positionScreen.y-ea.positionScreen.y)*(ia.positionScreen.x-ea.positionScreen.x))))Ka=q[o]=q[o]||new THREE.RenderableFace4,o++,l=Ka,l.v1.copy(Q),l.v2.copy(N),l.v3.copy(ea),l.v4.copy(ia);else continue;l.normalWorld.copy(z.normal);ba.multiplyVector3(l.normalWorld);l.centroidWorld.copy(z.centroid);aa.multiplyVector3(l.centroidWorld);l.centroidScreen.copy(l.centroidWorld);C.multiplyVector3(l.centroidScreen);ea=z.vertexNormals;for(Q=0,N=ea.length;Q<N;Q++)ia=l.vertexNormalsWorld[Q],
|
|
|
ia.copy(ea[Q]),ba.multiplyVector3(ia);for(Q=0,N=Ua.length;Q<N;Q++)if(Ka=Ua[Q][E])for(ea=0,ia=Ka.length;ea<ia;ea++)l.uvs[Q][ea]=Ka[ea];l.material=Y;l.faceMaterial=null!==z.materialIndex?ca[z.materialIndex]:null;l.z=l.centroidScreen.z;v.elements.push(l)}}else if($ instanceof THREE.Line){D.multiply(C,aa);E=$.geometry.vertices;Q=b();Q.positionScreen.copy(E[0].position);D.multiplyVector4(Q.positionScreen);for(A=1,z=E.length;A<z;A++)if(Q=b(),Q.positionScreen.copy(E[A].position),D.multiplyVector4(Q.positionScreen),
|
|
|
-N=k[i-2],K.copy(Q.positionScreen),O.copy(N.positionScreen),d(K,O))K.multiplyScalar(1/K.w),O.multiplyScalar(1/O.w),$=s[r]=s[r]||new THREE.RenderableLine,r++,m=$,m.v1.positionScreen.copy(K),m.v2.positionScreen.copy(O),m.z=Math.max(K.z,O.z),m.material=Y,v.elements.push(m)}for(a=0,j=v.sprites.length;a<j;a++)if($=v.sprites[a].object,aa=$.matrixWorld,$ instanceof THREE.Particle&&(B.set(aa.n14,aa.n24,aa.n34,1),C.multiplyVector4(B),B.z/=B.w,0<B.z&&1>B.z))f=u[w]=u[w]||new THREE.RenderableParticle,w++,t=f,
|
|
|
-t.x=B.x/B.w,t.y=B.y/B.w,t.z=B.z,t.rotation=$.rotation.z,t.scale.x=$.scale.x*Math.abs(t.x-(B.x+e.projectionMatrix.n11)/(B.w+e.projectionMatrix.n14)),t.scale.y=$.scale.y*Math.abs(t.y-(B.y+e.projectionMatrix.n22)/(B.w+e.projectionMatrix.n24)),t.material=$.material,v.elements.push(t);g&&v.elements.sort(c);return v}};THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1};
|
|
|
+N=k[i-2],K.copy(Q.positionScreen),O.copy(N.positionScreen),d(K,O))K.multiplyScalar(1/K.w),O.multiplyScalar(1/O.w),$=s[r]=s[r]||new THREE.RenderableLine,r++,m=$,m.v1.positionScreen.copy(K),m.v2.positionScreen.copy(O),m.z=Math.max(K.z,O.z),m.material=Y,v.elements.push(m)}for(a=0,j=v.sprites.length;a<j;a++)if($=v.sprites[a].object,aa=$.matrixWorld,$ instanceof THREE.Particle&&(B.set(aa.n14,aa.n24,aa.n34,1),C.multiplyVector4(B),B.z/=B.w,0<B.z&&1>B.z))g=u[w]=u[w]||new THREE.RenderableParticle,w++,t=g,
|
|
|
+t.x=B.x/B.w,t.y=B.y/B.w,t.z=B.z,t.rotation=$.rotation.z,t.scale.x=$.scale.x*Math.abs(t.x-(B.x+e.projectionMatrix.n11)/(B.w+e.projectionMatrix.n14)),t.scale.y=$.scale.y*Math.abs(t.y-(B.y+e.projectionMatrix.n22)/(B.w+e.projectionMatrix.n24)),t.material=$.material,v.elements.push(t);f&&v.elements.sort(c);return v}};THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1};
|
|
|
THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w;return this},clone:function(){return new THREE.Quaternion(this.x,this.y,this.z,this.w)},setFromEuler:function(a){var b=Math.PI/360,c=a.x*b,d=a.y*b,e=a.z*b,a=Math.cos(d),d=Math.sin(d),b=Math.cos(-e),e=Math.sin(-e),g=Math.cos(c),c=Math.sin(c),f=a*b,h=d*e;this.w=f*g-h*c;this.x=f*c+h*g;this.y=d*b*g+a*e*c;this.z=a*e*
|
|
|
g-d*b*c;return this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);this.x=a.x*d;this.y=a.y*d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRotationMatrix:function(a){var b=Math.pow(a.determinant(),1/3);this.w=Math.sqrt(Math.max(0,b+a.n11+a.n22+a.n33))/2;this.x=Math.sqrt(Math.max(0,b+a.n11-a.n22-a.n33))/2;this.y=Math.sqrt(Math.max(0,b-a.n11+a.n22-a.n33))/2;this.z=Math.sqrt(Math.max(0,b-a.n11-a.n22+a.n33))/2;this.x=0>a.n32-a.n23?-Math.abs(this.x):Math.abs(this.x);this.y=0>a.n13-a.n31?
|
|
|
-Math.abs(this.y):Math.abs(this.y);this.z=0>a.n21-a.n12?-Math.abs(this.z):Math.abs(this.z);this.normalize();return this},calculateW:function(){this.w=-Math.sqrt(Math.abs(1-this.x*this.x-this.y*this.y-this.z*this.z));return this},inverse:function(){this.x*=-1;this.y*=-1;this.z*=-1;return this},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},normalize:function(){var a=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);0===a?this.w=this.z=
|
|
@@ -97,9 +97,9 @@ S=new THREE.Vector3,L=new THREE.Vector3,P=new THREE.Vector3;for(b=0,c=this.verti
|
|
|
C=D[e],S.copy(C),S.subSelf(P.multiplyScalar(P.dot(C))).normalize(),L.cross(g.vertexNormals[d],C),e=L.dot(I[e]),e=0>e?-1:1,g.vertexTangents[d]=new THREE.Vector4(S.x,S.y,S.z,e)}this.hasTangents=!0},computeBoundingBox:function(){if(!this.boundingBox)this.boundingBox={min:new THREE.Vector3,max:new THREE.Vector3};if(0<this.vertices.length){var a;a=this.vertices[0].position;this.boundingBox.min.copy(a);this.boundingBox.max.copy(a);for(var b=this.boundingBox.min,c=this.boundingBox.max,d=1,e=this.vertices.length;d<
|
|
|
e;d++){a=this.vertices[d].position;if(a.x<b.x)b.x=a.x;else if(a.x>c.x)c.x=a.x;if(a.y<b.y)b.y=a.y;else if(a.y>c.y)c.y=a.y;if(a.z<b.z)b.z=a.z;else if(a.z>c.z)c.z=a.z}}else this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0)},computeBoundingSphere:function(){if(!this.boundingSphere)this.boundingSphere={radius:0};for(var a,b=0,c=0,d=this.vertices.length;c<d;c++)a=this.vertices[c].position.length(),a>b&&(b=a);this.boundingSphere.radius=b},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,
|
|
|
4),g,f;for(g=0,f=this.vertices.length;g<f;g++)d=this.vertices[g].position,d=[Math.round(d.x*e),Math.round(d.y*e),Math.round(d.z*e)].join("_"),void 0===a[d]?(a[d]=g,b.push(this.vertices[g]),c[g]=b.length-1):c[g]=c[a[d]];for(g=0,f=this.faces.length;g<f;g++)if(a=this.faces[g],a instanceof THREE.Face3)a.a=c[a.a],a.b=c[a.b],a.c=c[a.c];else if(a instanceof THREE.Face4)a.a=c[a.a],a.b=c[a.b],a.c=c[a.c],a.d=c[a.d];this.vertices=b}};THREE.GeometryCount=0;
|
|
|
-THREE.Spline=function(a){function b(a,b,c,d,e,g,f){a=0.5*(c-a);d=0.5*(d-b);return(2*(b-c)+a+d)*f+(-3*(b-c)-2*a-d)*g+a*e+b}this.points=a;var c=[],d={x:0,y:0,z:0},e,g,f,h,i,k,l,p,n;this.initFromArray=function(a){this.points=[];for(var b=0;b<a.length;b++)this.points[b]={x:a[b][0],y:a[b][1],z:a[b][2]}};this.getPoint=function(a){e=(this.points.length-1)*a;g=Math.floor(e);f=e-g;c[0]=0===g?g:g-1;c[1]=g;c[2]=g>this.points.length-2?g:g+1;c[3]=g>this.points.length-3?g:g+2;k=this.points[c[0]];l=this.points[c[1]];
|
|
|
-p=this.points[c[2]];n=this.points[c[3]];h=f*f;i=f*h;d.x=b(k.x,l.x,p.x,n.x,f,h,i);d.y=b(k.y,l.y,p.y,n.y,f,h,i);d.z=b(k.z,l.z,p.z,n.z,f,h,i);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a<c;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d};this.getLength=function(a){var b,c,d,e=b=b=0,g=new THREE.Vector3,f=new THREE.Vector3,h=[],i=0;h[0]=0;a||(a=100);c=this.points.length*a;g.copy(this.points[0]);for(a=1;a<c;a++)b=a/c,d=this.getPoint(b),f.copy(d),i+=f.distanceTo(g),
|
|
|
-g.copy(d),b*=this.points.length-1,b=Math.floor(b),b!=e&&(h[b]=i,e=b);h[h.length]=i;return{chunks:h,total:i}};this.reparametrizeByArcLength=function(a){var b,c,d,e,g,f,h=[],i=new THREE.Vector3,n=this.getLength();h.push(i.copy(this.points[0]).clone());for(b=1;b<this.points.length;b++){c=n.chunks[b]-n.chunks[b-1];f=Math.ceil(a*c/n.total);e=(b-1)/(this.points.length-1);g=b/(this.points.length-1);for(c=1;c<f-1;c++)d=e+c*(1/f)*(g-e),d=this.getPoint(d),h.push(i.copy(d).clone());h.push(i.copy(this.points[b]).clone())}this.points=
|
|
|
+THREE.Spline=function(a){function b(a,b,c,d,e,f,g){a=0.5*(c-a);d=0.5*(d-b);return(2*(b-c)+a+d)*g+(-3*(b-c)-2*a-d)*f+a*e+b}this.points=a;var c=[],d={x:0,y:0,z:0},e,g,f,h,i,k,l,p,n;this.initFromArray=function(a){this.points=[];for(var b=0;b<a.length;b++)this.points[b]={x:a[b][0],y:a[b][1],z:a[b][2]}};this.getPoint=function(a){e=(this.points.length-1)*a;g=Math.floor(e);f=e-g;c[0]=0===g?g:g-1;c[1]=g;c[2]=g>this.points.length-2?g:g+1;c[3]=g>this.points.length-3?g:g+2;k=this.points[c[0]];l=this.points[c[1]];
|
|
|
+p=this.points[c[2]];n=this.points[c[3]];h=f*f;i=f*h;d.x=b(k.x,l.x,p.x,n.x,f,h,i);d.y=b(k.y,l.y,p.y,n.y,f,h,i);d.z=b(k.z,l.z,p.z,n.z,f,h,i);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a<c;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d};this.getLength=function(a){var b,c,d,e=b=b=0,f=new THREE.Vector3,g=new THREE.Vector3,h=[],i=0;h[0]=0;a||(a=100);c=this.points.length*a;f.copy(this.points[0]);for(a=1;a<c;a++)b=a/c,d=this.getPoint(b),g.copy(d),i+=g.distanceTo(f),
|
|
|
+f.copy(d),b*=this.points.length-1,b=Math.floor(b),b!=e&&(h[b]=i,e=b);h[h.length]=i;return{chunks:h,total:i}};this.reparametrizeByArcLength=function(a){var b,c,d,e,f,g,h=[],i=new THREE.Vector3,n=this.getLength();h.push(i.copy(this.points[0]).clone());for(b=1;b<this.points.length;b++){c=n.chunks[b]-n.chunks[b-1];g=Math.ceil(a*c/n.total);e=(b-1)/(this.points.length-1);f=b/(this.points.length-1);for(c=1;c<g-1;c++)d=e+c*(1/g)*(f-e),d=this.getPoint(d),h.push(i.copy(d).clone());h.push(i.copy(this.points[b]).clone())}this.points=
|
|
|
h}};THREE.Edge=function(a,b,c,d){this.vertices=[a,b];this.vertexIndices=[c,d];this.faces=[];this.faceIndices=[]};THREE.Camera=function(){if(arguments.length)return console.warn("DEPRECATED: Camera() is now PerspectiveCamera() or OrthographicCamera()."),new THREE.PerspectiveCamera(arguments[0],arguments[1],arguments[2],arguments[3]);THREE.Object3D.call(this);this.matrixWorldInverse=new THREE.Matrix4;this.projectionMatrix=new THREE.Matrix4;this.projectionMatrixInverse=new THREE.Matrix4};
|
|
|
THREE.Camera.prototype=new THREE.Object3D;THREE.Camera.prototype.constructor=THREE.Camera;THREE.Camera.prototype.lookAt=function(a){this.matrix.lookAt(this.position,a,this.up);this.rotationAutoUpdate&&this.rotation.setRotationFromMatrix(this.matrix)};THREE.OrthographicCamera=function(a,b,c,d,e,g){THREE.Camera.call(this);this.left=a;this.right=b;this.top=c;this.bottom=d;this.near=void 0!==e?e:0.1;this.far=void 0!==g?g:2E3;this.updateProjectionMatrix()};THREE.OrthographicCamera.prototype=new THREE.Camera;
|
|
|
THREE.OrthographicCamera.prototype.constructor=THREE.OrthographicCamera;THREE.OrthographicCamera.prototype.updateProjectionMatrix=function(){this.projectionMatrix=THREE.Matrix4.makeOrtho(this.left,this.right,this.top,this.bottom,this.near,this.far)};THREE.PerspectiveCamera=function(a,b,c,d){THREE.Camera.call(this);this.fov=void 0!==a?a:50;this.aspect=void 0!==b?b:1;this.near=void 0!==c?c:0.1;this.far=void 0!==d?d:2E3;this.updateProjectionMatrix()};THREE.PerspectiveCamera.prototype=new THREE.Camera;
|
|
@@ -148,6 +148,8 @@ THREE.SkinnedMesh.prototype.updateMatrixWorld=function(a){this.matrixAutoUpdate&
|
|
|
THREE.SkinnedMesh.prototype.pose=function(){this.updateMatrixWorld(!0);for(var a,b=[],c=0;c<this.bones.length;c++){a=this.bones[c];var d=new THREE.Matrix4;d.getInverse(a.skinMatrix);b.push(d);a.skinMatrix.flattenToArrayOffset(this.boneMatrices,16*c)}if(void 0===this.geometry.skinVerticesA){this.geometry.skinVerticesA=[];this.geometry.skinVerticesB=[];for(a=0;a<this.geometry.skinIndices.length;a++){var c=this.geometry.vertices[a].position,e=this.geometry.skinIndices[a].x,g=this.geometry.skinIndices[a].y,d=
|
|
|
new THREE.Vector3(c.x,c.y,c.z);this.geometry.skinVerticesA.push(b[e].multiplyVector3(d));d=new THREE.Vector3(c.x,c.y,c.z);this.geometry.skinVerticesB.push(b[g].multiplyVector3(d));1!==this.geometry.skinWeights[a].x+this.geometry.skinWeights[a].y&&(c=0.5*(1-(this.geometry.skinWeights[a].x+this.geometry.skinWeights[a].y)),this.geometry.skinWeights[a].x+=c,this.geometry.skinWeights[a].y+=c)}}};
|
|
|
THREE.MorphAnimMesh=function(a,b){THREE.Mesh.call(this,a,b);this.duration=1E3;this.mirroredLoop=!1;this.currentKeyframe=this.lastKeyframe=this.time=0;this.direction=1;this.directionBackwards=!1;this.setFrameRange(0,this.geometry.morphTargets.length-1)};THREE.MorphAnimMesh.prototype=new THREE.Mesh;THREE.MorphAnimMesh.prototype.constructor=THREE.MorphAnimMesh;THREE.MorphAnimMesh.prototype.setFrameRange=function(a,b){this.start=a;this.end=b;this.length=this.end-this.start};
|
|
|
+THREE.MorphAnimMesh.prototype.parseAnimations=function(){for(var a=this.geometry,b,c={},d=/([a-z]+)(\d+)/,e=0,g=a.morphTargets.length;e<g;e++){var f=a.morphTargets[e].name.match(d);if(f&&1<f.length){f=f[1];c[f]||(c[f]={frames:[],min:Infinity,max:-Infinity});c[f].frames.push(e);if(e<c[f].min)c[f].min=e;if(e>c[f].max)c[f].max=e;b||(b=f)}}a.animations=c;a.firstAnimation=b};
|
|
|
+THREE.MorphAnimMesh.prototype.playAnimation=function(a,b){var c=this.geometry.animations[a];this.setFrameRange(c.min,c.max);this.duration=1E3*((c.max-c.min)/b);this.time=0};
|
|
|
THREE.MorphAnimMesh.prototype.updateAnimation=function(a){var b=this.duration/this.length;this.time+=this.direction*a;if(this.mirroredLoop){if(this.time>this.duration||0>this.time){this.direction*=-1;if(this.time>this.duration)this.time=this.duration,this.directionBackwards=!0;if(0>this.time)this.time=0,this.directionBackwards=!1}}else this.time%=this.duration;a=this.start+THREE.Math.clamp(Math.floor(this.time/b),0,this.length);if(a!==this.currentKeyframe)this.morphTargetInfluences[this.lastKeyframe]=
|
|
|
0,this.morphTargetInfluences[this.currentKeyframe]=1,this.morphTargetInfluences[a]=0,this.lastKeyframe=this.currentKeyframe,this.currentKeyframe=a;b=this.time%b/b;this.directionBackwards&&(b=1-b);this.morphTargetInfluences[this.currentKeyframe]=b;this.morphTargetInfluences[this.lastKeyframe]=1-b};THREE.Ribbon=function(a,b){THREE.Object3D.call(this);this.geometry=a;this.material=b};THREE.Ribbon.prototype=new THREE.Object3D;THREE.Ribbon.prototype.constructor=THREE.Ribbon;
|
|
|
THREE.LOD=function(){THREE.Object3D.call(this);this.LODs=[]};THREE.LOD.prototype=new THREE.Object3D;THREE.LOD.prototype.constructor=THREE.LOD;THREE.LOD.prototype.supr=THREE.Object3D.prototype;THREE.LOD.prototype.addLevel=function(a,b){void 0===b&&(b=0);for(var b=Math.abs(b),c=0;c<this.LODs.length&&!(b<this.LODs[c].visibleAtDistance);c++);this.LODs.splice(c,0,{visibleAtDistance:b,object3D:a});this.add(a)};
|
|
@@ -166,9 +168,9 @@ p,n,o,q,m=l.getContext("2d"),r=new THREE.Color(0),s=0,t=1,w=0,u=null,v=null,A=nu
|
|
|
document.createElement("canvas");R.width=R.height=2;Fb=R.getContext("2d");Fb.fillStyle="rgba(0,0,0,1)";Fb.fillRect(0,0,2,2);Uc=Fb.getImageData(0,0,2,2);eb=Uc.data;pc=document.createElement("canvas");pc.width=pc.height=a;Cc=pc.getContext("2d");Cc.translate(-a/2,-a/2);Cc.scale(a,a);a--;this.domElement=l;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.setSize=function(a,b){p=a;n=b;o=Math.floor(p/2);q=Math.floor(n/2);l.width=p;l.height=n;La.set(-o,-q,
|
|
|
o,q);ta.set(-o,-q,o,q);t=1;w=0;C=B=A=v=u=null};this.setClearColor=function(a,b){r.copy(a);s=b;ta.set(-o,-q,o,q)};this.setClearColorHex=function(a,b){r.setHex(a);s=b;ta.set(-o,-q,o,q)};this.clear=function(){m.setTransform(1,0,0,-1,o,q);ta.isEmpty()||(ta.minSelf(La),ta.inflate(2),1>s&&m.clearRect(Math.floor(ta.getX()),Math.floor(ta.getY()),Math.floor(ta.getWidth()),Math.floor(ta.getHeight())),0<s&&(c(THREE.NormalBlending),b(1),e("rgba("+Math.floor(255*r.r)+","+Math.floor(255*r.g)+","+Math.floor(255*
|
|
|
r.b)+","+s+")"),m.fillRect(Math.floor(ta.getX()),Math.floor(ta.getY()),Math.floor(ta.getWidth()),Math.floor(ta.getHeight()))),ta.empty())};this.render=function(a,n){function l(a){var b,c,d,e;Ga.setRGB(0,0,0);Xa.setRGB(0,0,0);mb.setRGB(0,0,0);for(b=0,c=a.length;b<c;b++)d=a[b],e=d.color,d instanceof THREE.AmbientLight?(Ga.r+=e.r,Ga.g+=e.g,Ga.b+=e.b):d instanceof THREE.DirectionalLight?(Xa.r+=e.r,Xa.g+=e.g,Xa.b+=e.b):d instanceof THREE.PointLight&&(mb.r+=e.r,mb.g+=e.g,mb.b+=e.b)}function p(a,b,c,d){var e,
|
|
|
-g,f,j,h,i;for(e=0,g=a.length;e<g;e++)f=a[e],j=f.color,f instanceof THREE.DirectionalLight?(h=f.matrixWorld.getPosition(),i=c.dot(h),0>=i||(i*=f.intensity,d.r+=j.r*i,d.g+=j.g*i,d.b+=j.b*i)):f instanceof THREE.PointLight&&(h=f.matrixWorld.getPosition(),i=c.dot(Z.sub(h,b).normalize()),0>=i||(i*=0==f.distance?1:1-Math.min(b.distanceTo(h)/f.distance,1),0!=i&&(i*=f.intensity,d.r+=j.r*i,d.g+=j.g*i,d.b+=j.b*i)))}function r(a,g,f){b(f.opacity);c(f.blending);var Z,j,h,i,n,k;if(f instanceof THREE.ParticleBasicMaterial){if(f.map)i=
|
|
|
-f.map.image,n=i.width>>1,k=i.height>>1,f=g.scale.x*o,h=g.scale.y*q,Z=f*n,j=h*k,Aa.set(a.x-Z,a.y-j,a.x+Z,a.y+j),La.intersects(Aa)&&(m.save(),m.translate(a.x,a.y),m.rotate(-g.rotation),m.scale(f,-h),m.translate(-n,-k),m.drawImage(i,0,0),m.restore())}else f instanceof THREE.ParticleCanvasMaterial&&(Z=g.scale.x*o,j=g.scale.y*q,Aa.set(a.x-Z,a.y-j,a.x+Z,a.y+j),La.intersects(Aa)&&(d(f.color.getContextStyle()),e(f.color.getContextStyle()),m.save(),m.translate(a.x,a.y),m.rotate(-g.rotation),m.scale(Z,j),f.program(m),
|
|
|
-m.restore()))}function s(a,e,g,f){b(f.opacity);c(f.blending);m.beginPath();m.moveTo(a.positionScreen.x,a.positionScreen.y);m.lineTo(e.positionScreen.x,e.positionScreen.y);m.closePath();if(f instanceof THREE.LineBasicMaterial){a=f.linewidth;if(A!=a)m.lineWidth=A=a;a=f.linecap;if(B!=a)m.lineCap=B=a;a=f.linejoin;if(C!=a)m.lineJoin=C=a;d(f.color.getContextStyle());m.stroke();Aa.inflate(2*f.linewidth)}}function t(a,d,e,f,h,k,m,R){g.info.render.vertices+=3;g.info.render.faces++;b(R.opacity);c(R.blending);
|
|
|
+f,g,j,h,i;for(e=0,f=a.length;e<f;e++)g=a[e],j=g.color,g instanceof THREE.DirectionalLight?(h=g.matrixWorld.getPosition(),i=c.dot(h),0>=i||(i*=g.intensity,d.r+=j.r*i,d.g+=j.g*i,d.b+=j.b*i)):g instanceof THREE.PointLight&&(h=g.matrixWorld.getPosition(),i=c.dot(Z.sub(h,b).normalize()),0>=i||(i*=0==g.distance?1:1-Math.min(b.distanceTo(h)/g.distance,1),0!=i&&(i*=g.intensity,d.r+=j.r*i,d.g+=j.g*i,d.b+=j.b*i)))}function r(a,f,g){b(g.opacity);c(g.blending);var Z,j,h,i,n,k;if(g instanceof THREE.ParticleBasicMaterial){if(g.map)i=
|
|
|
+g.map.image,n=i.width>>1,k=i.height>>1,g=f.scale.x*o,h=f.scale.y*q,Z=g*n,j=h*k,Aa.set(a.x-Z,a.y-j,a.x+Z,a.y+j),La.intersects(Aa)&&(m.save(),m.translate(a.x,a.y),m.rotate(-f.rotation),m.scale(g,-h),m.translate(-n,-k),m.drawImage(i,0,0),m.restore())}else g instanceof THREE.ParticleCanvasMaterial&&(Z=f.scale.x*o,j=f.scale.y*q,Aa.set(a.x-Z,a.y-j,a.x+Z,a.y+j),La.intersects(Aa)&&(d(g.color.getContextStyle()),e(g.color.getContextStyle()),m.save(),m.translate(a.x,a.y),m.rotate(-f.rotation),m.scale(Z,j),g.program(m),
|
|
|
+m.restore()))}function s(a,e,f,g){b(g.opacity);c(g.blending);m.beginPath();m.moveTo(a.positionScreen.x,a.positionScreen.y);m.lineTo(e.positionScreen.x,e.positionScreen.y);m.closePath();if(g instanceof THREE.LineBasicMaterial){a=g.linewidth;if(A!=a)m.lineWidth=A=a;a=g.linecap;if(B!=a)m.lineCap=B=a;a=g.linejoin;if(C!=a)m.lineJoin=C=a;d(g.color.getContextStyle());m.stroke();Aa.inflate(2*g.linewidth)}}function t(a,d,e,f,h,k,m,R){g.info.render.vertices+=3;g.info.render.faces++;b(R.opacity);c(R.blending);
|
|
|
P=a.positionScreen.x;H=a.positionScreen.y;G=d.positionScreen.x;j=d.positionScreen.y;X=e.positionScreen.x;z=e.positionScreen.y;w(P,H,G,j,X,z);if(R instanceof THREE.MeshBasicMaterial)if(R.map)R.map.mapping instanceof THREE.UVMapping&&(qa=m.uvs[0],Vc(P,H,G,j,X,z,qa[f].u,qa[f].v,qa[h].u,qa[h].v,qa[k].u,qa[k].v,R.map));else if(R.envMap){if(R.envMap.mapping instanceof THREE.SphericalReflectionMapping)a=n.matrixWorldInverse,Z.copy(m.vertexNormalsWorld[f]),ib=0.5*(Z.x*a.n11+Z.y*a.n12+Z.z*a.n13)+0.5,Va=0.5*
|
|
|
-(Z.x*a.n21+Z.y*a.n22+Z.z*a.n23)+0.5,Z.copy(m.vertexNormalsWorld[h]),lb=0.5*(Z.x*a.n11+Z.y*a.n12+Z.z*a.n13)+0.5,db=0.5*-(Z.x*a.n21+Z.y*a.n22+Z.z*a.n23)+0.5,Z.copy(m.vertexNormalsWorld[k]),Wa=0.5*(Z.x*a.n11+Z.y*a.n12+Z.z*a.n13)+0.5,$a=0.5*-(Z.x*a.n21+Z.y*a.n22+Z.z*a.n23)+0.5,Vc(P,H,G,j,X,z,ib,Va,lb,db,Wa,$a,R.envMap)}else R.wireframe?Mb(R.color,R.wireframeLinewidth,R.wireframeLinecap,R.wireframeLinejoin):Gb(R.color);else if(R instanceof THREE.MeshLambertMaterial)R.map&&!R.wireframe&&(R.map.mapping instanceof
|
|
|
THREE.UVMapping&&(qa=m.uvs[0],Vc(P,H,G,j,X,z,qa[f].u,qa[f].v,qa[h].u,qa[h].v,qa[k].u,qa[k].v,R.map)),c(THREE.SubtractiveBlending)),Fa?!R.wireframe&&R.shading==THREE.SmoothShading&&3==m.vertexNormalsWorld.length?(ba.r=Y.r=ca.r=Ga.r,ba.g=Y.g=ca.g=Ga.g,ba.b=Y.b=ca.b=Ga.b,p(i,m.v1.positionWorld,m.vertexNormalsWorld[0],ba),p(i,m.v2.positionWorld,m.vertexNormalsWorld[1],Y),p(i,m.v3.positionWorld,m.vertexNormalsWorld[2],ca),ba.r=Math.max(0,Math.min(R.color.r*ba.r,1)),ba.g=Math.max(0,Math.min(R.color.g*ba.g,
|
|
@@ -179,17 +181,17 @@ H=a.positionScreen.y,G=d.positionScreen.x,j=d.positionScreen.y,X=e.positionScree
|
|
|
(ba.r=Y.r=ca.r=fa.r=Ga.r,ba.g=Y.g=ca.g=fa.g=Ga.g,ba.b=Y.b=ca.b=fa.b=Ga.b,p(i,R.v1.positionWorld,R.vertexNormalsWorld[0],ba),p(i,R.v2.positionWorld,R.vertexNormalsWorld[1],Y),p(i,R.v4.positionWorld,R.vertexNormalsWorld[3],ca),p(i,R.v3.positionWorld,R.vertexNormalsWorld[2],fa),ba.r=Math.max(0,Math.min(m.color.r*ba.r,1)),ba.g=Math.max(0,Math.min(m.color.g*ba.g,1)),ba.b=Math.max(0,Math.min(m.color.b*ba.b,1)),Y.r=Math.max(0,Math.min(m.color.r*Y.r,1)),Y.g=Math.max(0,Math.min(m.color.g*Y.g,1)),Y.b=Math.max(0,
|
|
|
Math.min(m.color.b*Y.b,1)),ca.r=Math.max(0,Math.min(m.color.r*ca.r,1)),ca.g=Math.max(0,Math.min(m.color.g*ca.g,1)),ca.b=Math.max(0,Math.min(m.color.b*ca.b,1)),fa.r=Math.max(0,Math.min(m.color.r*fa.r,1)),fa.g=Math.max(0,Math.min(m.color.g*fa.g,1)),fa.b=Math.max(0,Math.min(m.color.b*fa.b,1)),ra=Dc(ba,Y,ca,fa),w(P,H,G,j,E,Q),gc(P,H,G,j,E,Q,0,0,1,0,0,1,ra),w(N,ea,X,z,ia,$),gc(N,ea,X,z,ia,$,1,0,1,1,0,1,ra)):(aa.r=Ga.r,aa.g=Ga.g,aa.b=Ga.b,p(i,R.centroidWorld,R.normalWorld,aa),aa.r=Math.max(0,Math.min(m.color.r*
|
|
|
aa.r,1)),aa.g=Math.max(0,Math.min(m.color.g*aa.g,1)),aa.b=Math.max(0,Math.min(m.color.b*aa.b,1)),v(P,H,G,j,X,z,E,Q),m.wireframe?Mb(aa,m.wireframeLinewidth,m.wireframeLinecap,m.wireframeLinejoin):Gb(aa)):(v(P,H,G,j,X,z,E,Q),m.wireframe?Mb(m.color,m.wireframeLinewidth,m.wireframeLinecap,m.wireframeLinejoin):Gb(m.color));else if(m instanceof THREE.MeshNormalMaterial)aa.r=hc(R.normalWorld.x),aa.g=hc(R.normalWorld.y),aa.b=hc(R.normalWorld.z),v(P,H,G,j,X,z,E,Q),m.wireframe?Mb(aa,m.wireframeLinewidth,m.wireframeLinecap,
|
|
|
-m.wireframeLinejoin):Gb(aa);else if(m instanceof THREE.MeshDepthMaterial)na=n.near,Ha=n.far,ba.r=ba.g=ba.b=1-ac(a.positionScreen.z,na,Ha),Y.r=Y.g=Y.b=1-ac(d.positionScreen.z,na,Ha),ca.r=ca.g=ca.b=1-ac(f.positionScreen.z,na,Ha),fa.r=fa.g=fa.b=1-ac(e.positionScreen.z,na,Ha),ra=Dc(ba,Y,ca,fa),w(P,H,G,j,E,Q),gc(P,H,G,j,E,Q,0,0,1,0,0,1,ra),w(N,ea,X,z,ia,$),gc(N,ea,X,z,ia,$,1,0,1,1,0,1,ra)}function w(a,b,c,d,e,g){m.beginPath();m.moveTo(a,b);m.lineTo(c,d);m.lineTo(e,g);m.lineTo(a,b);m.closePath()}function v(a,
|
|
|
-b,c,d,e,g,f,Z){m.beginPath();m.moveTo(a,b);m.lineTo(c,d);m.lineTo(e,g);m.lineTo(f,Z);m.lineTo(a,b);m.closePath()}function Mb(a,b,c,e){if(A!=b)m.lineWidth=A=b;if(B!=c)m.lineCap=B=c;if(C!=e)m.lineJoin=C=e;d(a.getContextStyle());m.stroke();Aa.inflate(2*b)}function Gb(a){e(a.getContextStyle());m.fill()}function Vc(a,b,c,d,g,f,Z,j,h,i,R,n,k){if(0!=k.image.width){if(!0==k.needsUpdate||void 0==Ua[k.id]){var l=k.wrapS==THREE.RepeatWrapping,o=k.wrapT==THREE.RepeatWrapping;Ua[k.id]=m.createPattern(k.image,
|
|
|
-l&&o?"repeat":l&&!o?"repeat-x":!l&&o?"repeat-y":"no-repeat");k.needsUpdate=!1}e(Ua[k.id]);var l=k.offset.x/k.repeat.x,o=k.offset.y/k.repeat.y,Fb=k.image.width*k.repeat.x,p=k.image.height*k.repeat.y,Z=(Z+l)*Fb,j=(j+o)*p,c=c-a,d=d-b,g=g-a,f=f-b,h=(h+l)*Fb-Z,i=(i+o)*p-j,R=(R+l)*Fb-Z,n=(n+o)*p-j,l=h*n-R*i;if(0==l){if(void 0===Ka[k.id])b=document.createElement("canvas"),b.width=k.image.width,b.height=k.image.height,b=b.getContext("2d"),b.drawImage(k.image,0,0),Ka[k.id]=b.getImageData(0,0,k.image.width,
|
|
|
-k.image.height).data;b=Ka[k.id];Z=4*(Math.floor(Z)+Math.floor(j)*k.image.width);aa.setRGB(b[Z]/255,b[Z+1]/255,b[Z+2]/255);Gb(aa)}else l=1/l,k=(n*c-i*g)*l,i=(n*d-i*f)*l,c=(h*g-R*c)*l,d=(h*f-R*d)*l,a=a-k*Z-c*j,Z=b-i*Z-d*j,m.save(),m.transform(k,i,c,d,a,Z),m.fill(),m.restore()}}function gc(a,b,c,d,e,g,f,Z,j,h,i,R,k){var n,l;n=k.width-1;l=k.height-1;f*=n;Z*=l;c-=a;d-=b;e-=a;g-=b;j=j*n-f;h=h*l-Z;i=i*n-f;R=R*l-Z;l=1/(j*R-i*h);n=(R*c-h*e)*l;h=(R*d-h*g)*l;c=(j*e-i*c)*l;d=(j*g-i*d)*l;a=a-n*f-c*Z;b=b-h*f-d*
|
|
|
-Z;m.save();m.transform(n,h,c,d,a,b);m.clip();m.drawImage(k,0,0);m.restore()}function Dc(a,b,c,d){var e=~~(255*a.r),g=~~(255*a.g),a=~~(255*a.b),f=~~(255*b.r),Z=~~(255*b.g),b=~~(255*b.b),j=~~(255*c.r),h=~~(255*c.g),c=~~(255*c.b),i=~~(255*d.r),m=~~(255*d.g),d=~~(255*d.b);eb[0]=0>e?0:255<e?255:e;eb[1]=0>g?0:255<g?255:g;eb[2]=0>a?0:255<a?255:a;eb[4]=0>f?0:255<f?255:f;eb[5]=0>Z?0:255<Z?255:Z;eb[6]=0>b?0:255<b?255:b;eb[8]=0>j?0:255<j?255:j;eb[9]=0>h?0:255<h?255:h;eb[10]=0>c?0:255<c?255:c;eb[12]=0>i?0:255<
|
|
|
+m.wireframeLinejoin):Gb(aa);else if(m instanceof THREE.MeshDepthMaterial)na=n.near,Ha=n.far,ba.r=ba.g=ba.b=1-ac(a.positionScreen.z,na,Ha),Y.r=Y.g=Y.b=1-ac(d.positionScreen.z,na,Ha),ca.r=ca.g=ca.b=1-ac(f.positionScreen.z,na,Ha),fa.r=fa.g=fa.b=1-ac(e.positionScreen.z,na,Ha),ra=Dc(ba,Y,ca,fa),w(P,H,G,j,E,Q),gc(P,H,G,j,E,Q,0,0,1,0,0,1,ra),w(N,ea,X,z,ia,$),gc(N,ea,X,z,ia,$,1,0,1,1,0,1,ra)}function w(a,b,c,d,e,f){m.beginPath();m.moveTo(a,b);m.lineTo(c,d);m.lineTo(e,f);m.lineTo(a,b);m.closePath()}function v(a,
|
|
|
+b,c,d,e,f,g,Z){m.beginPath();m.moveTo(a,b);m.lineTo(c,d);m.lineTo(e,f);m.lineTo(g,Z);m.lineTo(a,b);m.closePath()}function Mb(a,b,c,e){if(A!=b)m.lineWidth=A=b;if(B!=c)m.lineCap=B=c;if(C!=e)m.lineJoin=C=e;d(a.getContextStyle());m.stroke();Aa.inflate(2*b)}function Gb(a){e(a.getContextStyle());m.fill()}function Vc(a,b,c,d,f,g,Z,j,h,i,R,n,k){if(0!=k.image.width){if(!0==k.needsUpdate||void 0==Ua[k.id]){var l=k.wrapS==THREE.RepeatWrapping,o=k.wrapT==THREE.RepeatWrapping;Ua[k.id]=m.createPattern(k.image,
|
|
|
+l&&o?"repeat":l&&!o?"repeat-x":!l&&o?"repeat-y":"no-repeat");k.needsUpdate=!1}e(Ua[k.id]);var l=k.offset.x/k.repeat.x,o=k.offset.y/k.repeat.y,Fb=k.image.width*k.repeat.x,p=k.image.height*k.repeat.y,Z=(Z+l)*Fb,j=(j+o)*p,c=c-a,d=d-b,f=f-a,g=g-b,h=(h+l)*Fb-Z,i=(i+o)*p-j,R=(R+l)*Fb-Z,n=(n+o)*p-j,l=h*n-R*i;if(0==l){if(void 0===Ka[k.id])b=document.createElement("canvas"),b.width=k.image.width,b.height=k.image.height,b=b.getContext("2d"),b.drawImage(k.image,0,0),Ka[k.id]=b.getImageData(0,0,k.image.width,
|
|
|
+k.image.height).data;b=Ka[k.id];Z=4*(Math.floor(Z)+Math.floor(j)*k.image.width);aa.setRGB(b[Z]/255,b[Z+1]/255,b[Z+2]/255);Gb(aa)}else l=1/l,k=(n*c-i*f)*l,i=(n*d-i*g)*l,c=(h*f-R*c)*l,d=(h*g-R*d)*l,a=a-k*Z-c*j,Z=b-i*Z-d*j,m.save(),m.transform(k,i,c,d,a,Z),m.fill(),m.restore()}}function gc(a,b,c,d,e,f,g,Z,j,h,i,R,k){var n,l;n=k.width-1;l=k.height-1;g*=n;Z*=l;c-=a;d-=b;e-=a;f-=b;j=j*n-g;h=h*l-Z;i=i*n-g;R=R*l-Z;l=1/(j*R-i*h);n=(R*c-h*e)*l;h=(R*d-h*f)*l;c=(j*e-i*c)*l;d=(j*f-i*d)*l;a=a-n*g-c*Z;b=b-h*g-d*
|
|
|
+Z;m.save();m.transform(n,h,c,d,a,b);m.clip();m.drawImage(k,0,0);m.restore()}function Dc(a,b,c,d){var e=~~(255*a.r),f=~~(255*a.g),a=~~(255*a.b),g=~~(255*b.r),Z=~~(255*b.g),b=~~(255*b.b),j=~~(255*c.r),h=~~(255*c.g),c=~~(255*c.b),i=~~(255*d.r),m=~~(255*d.g),d=~~(255*d.b);eb[0]=0>e?0:255<e?255:e;eb[1]=0>f?0:255<f?255:f;eb[2]=0>a?0:255<a?255:a;eb[4]=0>g?0:255<g?255:g;eb[5]=0>Z?0:255<Z?255:Z;eb[6]=0>b?0:255<b?255:b;eb[8]=0>j?0:255<j?255:j;eb[9]=0>h?0:255<h?255:h;eb[10]=0>c?0:255<c?255:c;eb[12]=0>i?0:255<
|
|
|
i?255:i;eb[13]=0>m?0:255<m?255:m;eb[14]=0>d?0:255<d?255:d;Fb.putImageData(Uc,0,0);Cc.drawImage(R,0,0);return pc}function ac(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function hc(a){a=0.5*(a+1);return 0>a?0:1<a?1:a}function Nb(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;0!=e&&(e=1/Math.sqrt(e),c*=e,d*=e,b.x+=c,b.y+=d,a.x-=c,a.y-=d)}var Ec,fd,Pa,jb;this.autoClear?this.clear():m.setTransform(1,0,0,-1,o,q);g.info.render.vertices=0;g.info.render.faces=0;f=k.projectScene(a,n,this.sortElements);h=f.elements;i=
|
|
|
f.lights;(Fa=0<i.length)&&l(i);for(Ec=0,fd=h.length;Ec<fd;Ec++)if(Pa=h[Ec],jb=Pa.material,jb=jb instanceof THREE.MeshFaceMaterial?Pa.faceMaterial:jb,!(null==jb||0==jb.opacity)){Aa.empty();if(Pa instanceof THREE.RenderableParticle)D=Pa,D.x*=o,D.y*=q,r(D,Pa,jb,a);else if(Pa instanceof THREE.RenderableLine)D=Pa.v1,I=Pa.v2,D.positionScreen.x*=o,D.positionScreen.y*=q,I.positionScreen.x*=o,I.positionScreen.y*=q,Aa.addPoint(D.positionScreen.x,D.positionScreen.y),Aa.addPoint(I.positionScreen.x,I.positionScreen.y),
|
|
|
La.intersects(Aa)&&s(D,I,Pa,jb,a);else if(Pa instanceof THREE.RenderableFace3)D=Pa.v1,I=Pa.v2,K=Pa.v3,D.positionScreen.x*=o,D.positionScreen.y*=q,I.positionScreen.x*=o,I.positionScreen.y*=q,K.positionScreen.x*=o,K.positionScreen.y*=q,jb.overdraw&&(Nb(D.positionScreen,I.positionScreen),Nb(I.positionScreen,K.positionScreen),Nb(K.positionScreen,D.positionScreen)),Aa.add3Points(D.positionScreen.x,D.positionScreen.y,I.positionScreen.x,I.positionScreen.y,K.positionScreen.x,K.positionScreen.y),La.intersects(Aa)&&
|
|
|
t(D,I,K,0,1,2,Pa,jb,a);else if(Pa instanceof THREE.RenderableFace4)D=Pa.v1,I=Pa.v2,K=Pa.v3,O=Pa.v4,D.positionScreen.x*=o,D.positionScreen.y*=q,I.positionScreen.x*=o,I.positionScreen.y*=q,K.positionScreen.x*=o,K.positionScreen.y*=q,O.positionScreen.x*=o,O.positionScreen.y*=q,S.positionScreen.copy(I.positionScreen),L.positionScreen.copy(O.positionScreen),jb.overdraw&&(Nb(D.positionScreen,I.positionScreen),Nb(I.positionScreen,O.positionScreen),Nb(O.positionScreen,D.positionScreen),Nb(K.positionScreen,
|
|
|
S.positionScreen),Nb(K.positionScreen,L.positionScreen)),Aa.addPoint(D.positionScreen.x,D.positionScreen.y),Aa.addPoint(I.positionScreen.x,I.positionScreen.y),Aa.addPoint(K.positionScreen.x,K.positionScreen.y),Aa.addPoint(O.positionScreen.x,O.positionScreen.y),La.intersects(Aa)&&u(D,I,K,O,S,L,Pa,jb,a);ta.addRectangle(Aa)}m.setTransform(1,0,0,1,0,0)}};
|
|
|
-THREE.SVGRenderer=function(){function a(a,b,c,d){var e,g,f,h,i,m;for(e=0,g=a.length;e<g;e++)f=a[e],h=f.color,f instanceof THREE.DirectionalLight?(i=f.matrixWorld.getPosition(),m=c.dot(i),0>=m||(m*=f.intensity,d.r+=h.r*m,d.g+=h.g*m,d.b+=h.b*m)):f instanceof THREE.PointLight&&(i=f.matrixWorld.getPosition(),m=c.dot(D.sub(i,b).normalize()),0>=m||(m*=0==f.distance?1:1-Math.min(b.distanceTo(i)/f.distance,1),0!=m&&(m*=f.intensity,d.r+=h.r*m,d.g+=h.g*m,d.b+=h.b*m)))}function b(a){null==I[a]&&(I[a]=document.createElementNS("http://www.w3.org/2000/svg",
|
|
|
+THREE.SVGRenderer=function(){function a(a,b,c,d){var e,f,g,h,i,m;for(e=0,f=a.length;e<f;e++)g=a[e],h=g.color,g instanceof THREE.DirectionalLight?(i=g.matrixWorld.getPosition(),m=c.dot(i),0>=m||(m*=g.intensity,d.r+=h.r*m,d.g+=h.g*m,d.b+=h.b*m)):g instanceof THREE.PointLight&&(i=g.matrixWorld.getPosition(),m=c.dot(D.sub(i,b).normalize()),0>=m||(m*=0==g.distance?1:1-Math.min(b.distanceTo(i)/g.distance,1),0!=m&&(m*=g.intensity,d.r+=h.r*m,d.g+=h.g*m,d.b+=h.b*m)))}function b(a){null==I[a]&&(I[a]=document.createElementNS("http://www.w3.org/2000/svg",
|
|
|
"path"),0==P&&I[a].setAttribute("shape-rendering","crispEdges"));return I[a]}function c(a){a=0.5*(a+1);return 0>a?0:1<a?1:a}var d=this,e,g,f,h=new THREE.Projector,i=document.createElementNS("http://www.w3.org/2000/svg","svg"),k,l,p,n,o,q,m,r,s=new THREE.Rectangle,t=new THREE.Rectangle,w=!1,u=new THREE.Color,v=new THREE.Color,A=new THREE.Color,B=new THREE.Color,C,D=new THREE.Vector3,I=[],K=[],O,S,L,P=1;this.domElement=i;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,
|
|
|
faces:0}};this.setQuality=function(a){switch(a){case "high":P=1;break;case "low":P=0}};this.setSize=function(a,b){k=a;l=b;p=k/2;n=l/2;i.setAttribute("viewBox",-p+" "+-n+" "+k+" "+l);i.setAttribute("width",k);i.setAttribute("height",l);s.set(-p,-n,p,n)};this.clear=function(){for(;0<i.childNodes.length;)i.removeChild(i.childNodes[0])};this.render=function(k,l){var j,D,z,E;this.autoClear&&this.clear();d.info.render.vertices=0;d.info.render.faces=0;e=h.projectScene(k,l,this.sortElements);g=e.elements;
|
|
|
f=e.lights;L=S=0;if(w=0<f.length){v.setRGB(0,0,0);A.setRGB(0,0,0);B.setRGB(0,0,0);for(j=0,D=f.length;j<D;j++)E=f[j],z=E.color,E instanceof THREE.AmbientLight?(v.r+=z.r,v.g+=z.g,v.b+=z.b):E instanceof THREE.DirectionalLight?(A.r+=z.r,A.g+=z.g,A.b+=z.b):E instanceof THREE.PointLight&&(B.r+=z.r,B.g+=z.g,B.b+=z.b)}for(j=0,D=g.length;j<D;j++)if(z=g[j],E=z.material,E=E instanceof THREE.MeshFaceMaterial?z.faceMaterial:E,!(null==E||0==E.opacity))if(t.empty(),z instanceof THREE.RenderableParticle)o=z,o.x*=
|