|
@@ -43,8 +43,8 @@ THREE.Object3D=function(){this.parent=undefined;this.children=[];this.up=new THR
|
|
!0;this._vector=new THREE.Vector3};
|
|
!0;this._vector=new THREE.Vector3};
|
|
THREE.Object3D.prototype={translate:function(a,c){this.matrix.rotateAxis(c);this.position.addSelf(c.multiplyScalar(a))},translateX:function(a){this.translate(a,this._vector.set(1,0,0))},translateY:function(a){this.translate(a,this._vector.set(0,1,0))},translateZ:function(a){this.translate(a,this._vector.set(0,0,1))},lookAt:function(a){this.matrix.lookAt(this.position,a,this.up);this.rotationAutoUpdate&&this.rotation.setRotationFromMatrix(this.matrix)},addChild:function(a){if(this.children.indexOf(a)===-1){a.parent!==
|
|
THREE.Object3D.prototype={translate:function(a,c){this.matrix.rotateAxis(c);this.position.addSelf(c.multiplyScalar(a))},translateX:function(a){this.translate(a,this._vector.set(1,0,0))},translateY:function(a){this.translate(a,this._vector.set(0,1,0))},translateZ:function(a){this.translate(a,this._vector.set(0,0,1))},lookAt:function(a){this.matrix.lookAt(this.position,a,this.up);this.rotationAutoUpdate&&this.rotation.setRotationFromMatrix(this.matrix)},addChild:function(a){if(this.children.indexOf(a)===-1){a.parent!==
|
|
undefined&&a.parent.removeChild(a);a.parent=this;this.children.push(a);for(var c=this;c instanceof THREE.Scene===!1&&c!==undefined;)c=c.parent;c!==undefined&&c.addChildRecurse(a)}},removeChild:function(a){var c=this.children.indexOf(a);if(c!==-1){a.parent=undefined;this.children.splice(c,1)}},updateMatrix:function(){this.matrix.setPosition(this.position);this.useQuaternion?this.matrix.setRotationFromQuaternion(this.quaternion):this.matrix.setRotationFromEuler(this.rotation);if(this.scale.x!==1||this.scale.y!==
|
|
undefined&&a.parent.removeChild(a);a.parent=this;this.children.push(a);for(var c=this;c instanceof THREE.Scene===!1&&c!==undefined;)c=c.parent;c!==undefined&&c.addChildRecurse(a)}},removeChild:function(a){var c=this.children.indexOf(a);if(c!==-1){a.parent=undefined;this.children.splice(c,1)}},updateMatrix:function(){this.matrix.setPosition(this.position);this.useQuaternion?this.matrix.setRotationFromQuaternion(this.quaternion):this.matrix.setRotationFromEuler(this.rotation);if(this.scale.x!==1||this.scale.y!==
|
|
-1||this.scale.z!==1){this.matrix.scale(this.scale);this.boundRadiusScale=Math.max(this.scale.x,Math.max(this.scale.y,this.scale.z))}return!0},update:function(a,c,b){if(this.visible){this.matrixAutoUpdate&&(c|=this.updateMatrix());if(c||this.matrixWorldNeedsUpdate){a?this.matrixWorld.multiply(a,this.matrix):this.matrixWorld.copy(this.matrix);this.matrixRotationWorld.extractRotation(this.matrixWorld,this.scale);this.matrixWorldNeedsUpdate=!1;c=!0}a=0;for(var d=this.children.length;a<d;a++)this.children[a].update(this.matrixWorld,
|
|
|
|
-c,b)}}};THREE.Quaternion=function(a,c,b,d){this.set(a||0,c||0,b||0,d!==undefined?d:1)};
|
|
|
|
|
|
+1||this.scale.z!==1){this.matrix.scale(this.scale);this.boundRadiusScale=Math.max(this.scale.x,Math.max(this.scale.y,this.scale.z))}this.matrixWorldNeedsUpdate=!0},update:function(a,c,b){if(this.visible){this.matrixAutoUpdate&&this.updateMatrix();if(this.matrixWorldNeedsUpdate||c){a?this.matrixWorld.multiply(a,this.matrix):this.matrixWorld.copy(this.matrix);this.matrixRotationWorld.extractRotation(this.matrixWorld,this.scale);this.matrixWorldNeedsUpdate=!1;c=!0}a=0;for(var d=this.children.length;a<
|
|
|
|
+d;a++)this.children[a].update(this.matrixWorld,c,b)}}};THREE.Quaternion=function(a,c,b,d){this.set(a||0,c||0,b||0,d!==undefined?d:1)};
|
|
THREE.Quaternion.prototype={set:function(a,c,b,d){this.x=a;this.y=c;this.z=b;this.w=d;return this},setFromEuler:function(a){var c=0.5*Math.PI/360,b=a.x*c,d=a.y*c,e=a.z*c;a=Math.cos(d);d=Math.sin(d);c=Math.cos(-e);e=Math.sin(-e);var g=Math.cos(b);b=Math.sin(b);var h=a*c,j=d*e;this.w=h*g-j*b;this.x=h*b+j*g;this.y=d*c*g+a*e*b;this.z=a*e*g-d*c*b;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*=
|
|
THREE.Quaternion.prototype={set:function(a,c,b,d){this.x=a;this.y=c;this.z=b;this.w=d;return this},setFromEuler:function(a){var c=0.5*Math.PI/360,b=a.x*c,d=a.y*c,e=a.z*c;a=Math.cos(d);d=Math.sin(d);c=Math.cos(-e);e=Math.sin(-e);var g=Math.cos(b);b=Math.sin(b);var h=a*c,j=d*e;this.w=h*g-j*b;this.x=h*b+j*g;this.y=d*c*g+a*e*b;this.z=a*e*g-d*c*b;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);if(a==0)this.w=this.z=this.y=this.x=0;else{a=1/a;this.x*=a;this.y*=a;this.z*=a;this.w*=a}return this},multiplySelf:function(a){var c=this.x,b=this.y,d=this.z,e=this.w,g=a.x,h=a.y,j=a.z;a=a.w;this.x=c*a+e*g+b*j-d*h;this.y=b*a+e*h+d*g-c*j;this.z=d*a+e*j+c*h-b*g;this.w=e*a-c*g-b*h-d*j;return this},
|
|
-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);if(a==0)this.w=this.z=this.y=this.x=0;else{a=1/a;this.x*=a;this.y*=a;this.z*=a;this.w*=a}return this},multiplySelf:function(a){var c=this.x,b=this.y,d=this.z,e=this.w,g=a.x,h=a.y,j=a.z;a=a.w;this.x=c*a+e*g+b*j-d*h;this.y=b*a+e*h+d*g-c*j;this.z=d*a+e*j+c*h-b*g;this.w=e*a-c*g-b*h-d*j;return this},
|
|
multiplyVector3:function(a,c){c||(c=a);var b=a.x,d=a.y,e=a.z,g=this.x,h=this.y,j=this.z,k=this.w,n=k*b+h*e-j*d,t=k*d+j*b-g*e,z=k*e+g*d-h*b;b=-g*b-h*d-j*e;c.x=n*k+b*-g+t*-j-z*-h;c.y=t*k+b*-h+z*-g-n*-j;c.z=z*k+b*-j+n*-h-t*-g;return c}};
|
|
multiplyVector3:function(a,c){c||(c=a);var b=a.x,d=a.y,e=a.z,g=this.x,h=this.y,j=this.z,k=this.w,n=k*b+h*e-j*d,t=k*d+j*b-g*e,z=k*e+g*d-h*b;b=-g*b-h*d-j*e;c.x=n*k+b*-g+t*-j-z*-h;c.y=t*k+b*-h+z*-g-n*-j;c.z=z*k+b*-j+n*-h-t*-g;return c}};
|
|
@@ -156,8 +156,8 @@ THREE.Scene.prototype.removeChild=function(a){this.supr.removeChild.call(this,a)
|
|
THREE.Scene.prototype.addObject=THREE.Scene.prototype.addChild;THREE.Scene.prototype.removeObject=THREE.Scene.prototype.removeChild;THREE.Scene.prototype.addLight=THREE.Scene.prototype.addChild;THREE.Scene.prototype.removeLight=THREE.Scene.prototype.removeChild;THREE.Fog=function(a,c,b){this.color=new THREE.Color(a);this.near=c||1;this.far=b||1E3};THREE.FogExp2=function(a,c){this.color=new THREE.Color(a);this.density=c!==undefined?c:2.5E-4};
|
|
THREE.Scene.prototype.addObject=THREE.Scene.prototype.addChild;THREE.Scene.prototype.removeObject=THREE.Scene.prototype.removeChild;THREE.Scene.prototype.addLight=THREE.Scene.prototype.addChild;THREE.Scene.prototype.removeLight=THREE.Scene.prototype.removeChild;THREE.Fog=function(a,c,b){this.color=new THREE.Color(a);this.near=c||1;this.far=b||1E3};THREE.FogExp2=function(a,c){this.color=new THREE.Color(a);this.density=c!==undefined?c:2.5E-4};
|
|
THREE.Projector=function(){function a(N,f){return f.z-N.z}function c(N,f){var V=0,T=1,da=N.z+N.w,fa=f.z+f.w,J=-N.z+N.w,ca=-f.z+f.w;if(da>=0&&fa>=0&&J>=0&&ca>=0)return!0;else if(da<0&&fa<0||J<0&&ca<0)return!1;else{if(da<0)V=Math.max(V,da/(da-fa));else fa<0&&(T=Math.min(T,da/(da-fa)));if(J<0)V=Math.max(V,J/(J-ca));else ca<0&&(T=Math.min(T,J/(J-ca)));if(T<V)return!1;else{N.lerpSelf(f,V);f.lerpSelf(N,1-T);return!0}}}var b,d,e=[],g,h,j,k=[],n,t,z=[],v,o,w=[],y=new THREE.Vector4,B=new THREE.Vector4,u=new THREE.Matrix4,
|
|
THREE.Projector=function(){function a(N,f){return f.z-N.z}function c(N,f){var V=0,T=1,da=N.z+N.w,fa=f.z+f.w,J=-N.z+N.w,ca=-f.z+f.w;if(da>=0&&fa>=0&&J>=0&&ca>=0)return!0;else if(da<0&&fa<0||J<0&&ca<0)return!1;else{if(da<0)V=Math.max(V,da/(da-fa));else fa<0&&(T=Math.min(T,da/(da-fa)));if(J<0)V=Math.max(V,J/(J-ca));else ca<0&&(T=Math.min(T,J/(J-ca)));if(T<V)return!1;else{N.lerpSelf(f,V);f.lerpSelf(N,1-T);return!0}}}var b,d,e=[],g,h,j,k=[],n,t,z=[],v,o,w=[],y=new THREE.Vector4,B=new THREE.Vector4,u=new THREE.Matrix4,
|
|
E=new THREE.Matrix4,x=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],M=new THREE.Vector4,I=new THREE.Vector4,W;this.projectObjects=function(N,f,V){f=[];var T,da,fa;d=0;da=N.objects;N=0;for(T=da.length;N<T;N++){fa=da[N];var J;if(!(J=!fa.visible))if(J=fa instanceof THREE.Mesh){a:{J=void 0;for(var ca=fa.matrixWorld,xa=-fa.geometry.boundingSphere.radius*Math.max(fa.scale.x,Math.max(fa.scale.y,fa.scale.z)),ea=0;ea<6;ea++){J=x[ea].x*ca.n14+
|
|
E=new THREE.Matrix4,x=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],M=new THREE.Vector4,I=new THREE.Vector4,W;this.projectObjects=function(N,f,V){f=[];var T,da,fa;d=0;da=N.objects;N=0;for(T=da.length;N<T;N++){fa=da[N];var J;if(!(J=!fa.visible))if(J=fa instanceof THREE.Mesh){a:{J=void 0;for(var ca=fa.matrixWorld,xa=-fa.geometry.boundingSphere.radius*Math.max(fa.scale.x,Math.max(fa.scale.y,fa.scale.z)),ea=0;ea<6;ea++){J=x[ea].x*ca.n14+
|
|
-x[ea].y*ca.n24+x[ea].z*ca.n34+x[ea].w;if(J<=xa){J=!1;break a}}J=!0}J=!J}if(!J){b=e[d]=e[d]||new THREE.RenderableObject;y.copy(fa.position);u.multiplyVector3(y);b.object=fa;b.z=y.z;f.push(b);d++}}V&&f.sort(a);return f};this.projectScene=function(N,f,V){var T=[],da=f.near,fa=f.far,J,ca,xa,ea,va,ia,ga,ta,ya,ha,aa,ma,na,R,ja,qa;j=t=o=0;f.matrixAutoUpdate&&f.update();u.multiply(f.projectionMatrix,f.matrixWorldInverse);x[0].set(u.n41-u.n11,u.n42-u.n12,u.n43-u.n13,u.n44-u.n14);x[1].set(u.n41+u.n11,u.n42+
|
|
|
|
-u.n12,u.n43+u.n13,u.n44+u.n14);x[2].set(u.n41+u.n21,u.n42+u.n22,u.n43+u.n23,u.n44+u.n24);x[3].set(u.n41-u.n21,u.n42-u.n22,u.n43-u.n23,u.n44-u.n24);x[4].set(u.n41-u.n31,u.n42-u.n32,u.n43-u.n33,u.n44-u.n34);x[5].set(u.n41+u.n31,u.n42+u.n32,u.n43+u.n33,u.n44+u.n34);for(J=0;J<6;J++){ia=x[J];ia.divideScalar(Math.sqrt(ia.x*ia.x+ia.y*ia.y+ia.z*ia.z))}N.update(undefined,!1,f);ia=this.projectObjects(N,f,!0);N=0;for(J=ia.length;N<J;N++){ga=ia[N].object;if(ga.visible){ta=ga.matrixWorld;aa=ga.matrixRotationWorld;
|
|
|
|
|
|
+x[ea].y*ca.n24+x[ea].z*ca.n34+x[ea].w;if(J<=xa){J=!1;break a}}J=!0}J=!J}if(!J){b=e[d]=e[d]||new THREE.RenderableObject;y.copy(fa.position);u.multiplyVector3(y);b.object=fa;b.z=y.z;f.push(b);d++}}V&&f.sort(a);return f};this.projectScene=function(N,f,V){var T=[],da=f.near,fa=f.far,J,ca,xa,ea,va,ia,ga,ta,ya,ha,aa,ma,na,R,ja,qa;j=t=o=0;f.matrixAutoUpdate&&f.updateMatrix();N.update(undefined,!1,f);u.multiply(f.projectionMatrix,f.matrixWorldInverse);x[0].set(u.n41-u.n11,u.n42-u.n12,u.n43-u.n13,u.n44-u.n14);
|
|
|
|
+x[1].set(u.n41+u.n11,u.n42+u.n12,u.n43+u.n13,u.n44+u.n14);x[2].set(u.n41+u.n21,u.n42+u.n22,u.n43+u.n23,u.n44+u.n24);x[3].set(u.n41-u.n21,u.n42-u.n22,u.n43-u.n23,u.n44-u.n24);x[4].set(u.n41-u.n31,u.n42-u.n32,u.n43-u.n33,u.n44-u.n34);x[5].set(u.n41+u.n31,u.n42+u.n32,u.n43+u.n33,u.n44+u.n34);for(J=0;J<6;J++){ia=x[J];ia.divideScalar(Math.sqrt(ia.x*ia.x+ia.y*ia.y+ia.z*ia.z))}ia=this.projectObjects(N,f,!0);N=0;for(J=ia.length;N<J;N++){ga=ia[N].object;if(ga.visible){ta=ga.matrixWorld;aa=ga.matrixRotationWorld;
|
|
ya=ga.materials;ha=ga.overdraw;if(ga instanceof THREE.Mesh){ma=ga.geometry;na=ma.vertices;ca=0;for(xa=na.length;ca<xa;ca++){R=na[ca];R.positionWorld.copy(R.position);ta.multiplyVector3(R.positionWorld);ea=R.positionScreen;ea.copy(R.positionWorld);u.multiplyVector4(ea);ea.x/=ea.w;ea.y/=ea.w;R.__visible=ea.z>da&&ea.z<fa}ma=ma.faces;ca=0;for(xa=ma.length;ca<xa;ca++){R=ma[ca];if(R instanceof THREE.Face3){ea=na[R.a];va=na[R.b];ja=na[R.c];if(ea.__visible&&va.__visible&&ja.__visible&&(ga.doubleSided||ga.flipSided!=
|
|
ya=ga.materials;ha=ga.overdraw;if(ga instanceof THREE.Mesh){ma=ga.geometry;na=ma.vertices;ca=0;for(xa=na.length;ca<xa;ca++){R=na[ca];R.positionWorld.copy(R.position);ta.multiplyVector3(R.positionWorld);ea=R.positionScreen;ea.copy(R.positionWorld);u.multiplyVector4(ea);ea.x/=ea.w;ea.y/=ea.w;R.__visible=ea.z>da&&ea.z<fa}ma=ma.faces;ca=0;for(xa=ma.length;ca<xa;ca++){R=ma[ca];if(R instanceof THREE.Face3){ea=na[R.a];va=na[R.b];ja=na[R.c];if(ea.__visible&&va.__visible&&ja.__visible&&(ga.doubleSided||ga.flipSided!=
|
|
(ja.positionScreen.x-ea.positionScreen.x)*(va.positionScreen.y-ea.positionScreen.y)-(ja.positionScreen.y-ea.positionScreen.y)*(va.positionScreen.x-ea.positionScreen.x)<0)){g=k[j]=k[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(ea.positionWorld);g.v2.positionWorld.copy(va.positionWorld);g.v3.positionWorld.copy(ja.positionWorld);g.v1.positionScreen.copy(ea.positionScreen);g.v2.positionScreen.copy(va.positionScreen);g.v3.positionScreen.copy(ja.positionScreen);g.normalWorld.copy(R.normal);aa.multiplyVector3(g.normalWorld);
|
|
(ja.positionScreen.x-ea.positionScreen.x)*(va.positionScreen.y-ea.positionScreen.y)-(ja.positionScreen.y-ea.positionScreen.y)*(va.positionScreen.x-ea.positionScreen.x)<0)){g=k[j]=k[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(ea.positionWorld);g.v2.positionWorld.copy(va.positionWorld);g.v3.positionWorld.copy(ja.positionWorld);g.v1.positionScreen.copy(ea.positionScreen);g.v2.positionScreen.copy(va.positionScreen);g.v3.positionScreen.copy(ja.positionScreen);g.normalWorld.copy(R.normal);aa.multiplyVector3(g.normalWorld);
|
|
g.centroidWorld.copy(R.centroid);ta.multiplyVector3(g.centroidWorld);g.centroidScreen.copy(g.centroidWorld);u.multiplyVector3(g.centroidScreen);ja=R.vertexNormals;W=g.vertexNormalsWorld;ea=0;for(va=ja.length;ea<va;ea++){qa=W[ea]=W[ea]||new THREE.Vector3;qa.copy(ja[ea]);aa.multiplyVector3(qa)}g.z=g.centroidScreen.z;g.meshMaterials=ya;g.faceMaterials=R.materials;g.overdraw=ha;if(ga.geometry.uvs[ca]){g.uvs[0]=ga.geometry.uvs[ca][0];g.uvs[1]=ga.geometry.uvs[ca][1];g.uvs[2]=ga.geometry.uvs[ca][2]}T.push(g);
|
|
g.centroidWorld.copy(R.centroid);ta.multiplyVector3(g.centroidWorld);g.centroidScreen.copy(g.centroidWorld);u.multiplyVector3(g.centroidScreen);ja=R.vertexNormals;W=g.vertexNormalsWorld;ea=0;for(va=ja.length;ea<va;ea++){qa=W[ea]=W[ea]||new THREE.Vector3;qa.copy(ja[ea]);aa.multiplyVector3(qa)}g.z=g.centroidScreen.z;g.meshMaterials=ya;g.faceMaterials=R.materials;g.overdraw=ha;if(ga.geometry.uvs[ca]){g.uvs[0]=ga.geometry.uvs[ca][0];g.uvs[1]=ga.geometry.uvs[ca][1];g.uvs[2]=ga.geometry.uvs[ca][2]}T.push(g);
|