Browse Source

Merge remote-tracking branch 'remotes/mrdoob/dev' into dev

alteredq 14 years ago
parent
commit
771787a49b

+ 1 - 1
REVISION

@@ -1 +1 @@
-43
+44dev

+ 9 - 9
build/Three.js

@@ -1,11 +1,11 @@
-// Three.js r43 - http://github.com/mrdoob/three.js
+// Three.js r44dev - http://github.com/mrdoob/three.js
 var THREE=THREE||{};if(!window.Int32Array)window.Int32Array=Array,window.Float32Array=Array;THREE.Color=function(b){b!==void 0&&this.setHex(b);return this};
 THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,copy:function(b){this.r=b.r;this.g=b.g;this.b=b.b;return this},setRGB:function(b,c,e){this.r=b;this.g=c;this.b=e;return this},setHSV:function(b,c,e){var f,g,j;if(e==0)this.r=this.g=this.b=0;else switch(f=Math.floor(b*6),g=b*6-f,b=e*(1-c),j=e*(1-c*g),c=e*(1-c*(1-g)),f){case 1:this.r=j;this.g=e;this.b=b;break;case 2:this.r=b;this.g=e;this.b=c;break;case 3:this.r=b;this.g=j;this.b=e;break;case 4:this.r=c;this.g=b;this.b=e;break;case 5:this.r=
 e;this.g=b;this.b=j;break;case 6:case 0:this.r=e,this.g=c,this.b=b}return this},setHex:function(b){b=Math.floor(b);this.r=(b>>16&255)/255;this.g=(b>>8&255)/255;this.b=(b&255)/255;return this},getHex:function(){return~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},getContextStyle:function(){return"rgb("+Math.floor(this.r*255)+","+Math.floor(this.g*255)+","+Math.floor(this.b*255)+")"},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};
 THREE.Vector2=function(b,c){this.x=b||0;this.y=c||0};
 THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(b,c){this.x=b;this.y=c;return this},copy:function(b){this.x=b.x;this.y=b.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},add:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;return this},addSelf:function(b){this.x+=b.x;this.y+=b.y;return this},sub:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;return this},subSelf:function(b){this.x-=b.x;this.y-=b.y;return this},multiplyScalar:function(b){this.x*=b;this.y*=b;return this},
 divideScalar:function(b){b?(this.x/=b,this.y/=b):this.set(0,0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(b){return this.x*b.x+this.y*b.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(b){return Math.sqrt(this.distanceToSquared(b))},distanceToSquared:function(b){var c=this.x-b.x,b=this.y-b.y;return c*c+b*b},setLength:function(b){return this.normalize().multiplyScalar(b)},
-unit:function(){return this.normalize()},equals:function(b){return b.x==this.x&&b.y==this.y}};THREE.Vector3=function(b,c,e){this.x=b||0;this.y=c||0;this.z=e||0};
+equals:function(b){return b.x==this.x&&b.y==this.y}};THREE.Vector3=function(b,c,e){this.x=b||0;this.y=c||0;this.z=e||0};
 THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(b,c,e){this.x=b;this.y=c;this.z=e;return this},copy:function(b){this.x=b.x;this.y=b.y;this.z=b.z;return this},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},add:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;this.z=b.z+c.z;return this},addSelf:function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z;return this},addScalar:function(b){this.x+=b;this.y+=b;this.z+=b;return this},sub:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;this.z=
 b.z-c.z;return this},subSelf:function(b){this.x-=b.x;this.y-=b.y;this.z-=b.z;return this},multiply:function(b,c){this.x=b.x*c.x;this.y=b.y*c.y;this.z=b.z*c.z;return this},multiplySelf:function(b){this.x*=b.x;this.y*=b.y;this.z*=b.z;return this},multiplyScalar:function(b){this.x*=b;this.y*=b;this.z*=b;return this},divideSelf:function(b){this.x/=b.x;this.y/=b.y;this.z/=b.z;return this},divideScalar:function(b){b?(this.x/=b,this.y/=b,this.z/=b):this.set(0,0,0);return this},negate:function(){return this.multiplyScalar(-1)},
 dot:function(b){return this.x*b.x+this.y*b.y+this.z*b.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.lengthSq())},lengthManhattan:function(){return this.x+this.y+this.z},normalize:function(){return this.divideScalar(this.length())},setLength:function(b){return this.normalize().multiplyScalar(b)},cross:function(b,c){this.x=b.y*c.z-b.z*c.y;this.y=b.z*c.x-b.x*c.z;this.z=b.x*c.y-b.y*c.x;return this},crossSelf:function(b){return this.set(this.y*
@@ -14,9 +14,9 @@ b.z-this.z*b.y,this.z*b.x-this.x*b.z,this.x*b.y-this.y*b.x)},distanceTo:function
 THREE.Vector4.prototype={constructor:THREE.Vector4,set:function(b,c,e,f){this.x=b;this.y=c;this.z=e;this.w=f;return this},copy:function(b){this.x=b.x;this.y=b.y;this.z=b.z;this.w=b.w||1},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},add:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;this.z=b.z+c.z;this.w=b.w+c.w;return this},addSelf:function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z;this.w+=b.w;return this},sub:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;this.z=b.z-c.z;this.w=
 b.w-c.w;return this},subSelf:function(b){this.x-=b.x;this.y-=b.y;this.z-=b.z;this.w-=b.w;return this},multiplyScalar:function(b){this.x*=b;this.y*=b;this.z*=b;this.w*=b;return this},divideScalar:function(b){b?(this.x/=b,this.y/=b,this.z/=b,this.w/=b):(this.z=this.y=this.x=0,this.w=1);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(b){return this.x*b.x+this.y*b.y+this.z*b.z+this.w*b.w},lengthSq:function(){return this.dot(this)},length:function(){return Math.sqrt(this.lengthSq())},
 normalize:function(){return this.divideScalar(this.length())},setLength:function(b){return this.normalize().multiplyScalar(b)},lerpSelf:function(b,c){this.x+=(b.x-this.x)*c;this.y+=(b.y-this.y)*c;this.z+=(b.z-this.z)*c;this.w+=(b.w-this.w)*c;return this}};THREE.Ray=function(b,c){this.origin=b||new THREE.Vector3;this.direction=c||new THREE.Vector3};
-THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(b){return this.intersectObjects(b.objects)},intersectObjects:function(b){var c,e,f=[];c=0;for(e=b.length;c<e;c++)f=f.concat(this.intersectObject(b[c]));f.sort(function(b,c){return b.distance-c.distance});return f},intersectObject:function(b){function c(b,c,e){var f;f=e.clone().subSelf(b).dot(c);if(f<0)return null;b=b.clone().addSelf(c.clone().multiplyScalar(f));return e.distanceTo(b)}function e(b,c,e,f){var f=f.clone().subSelf(c),
+THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(b){return this.intersectObjects(b.objects)},intersectObjects:function(b){var c,e,f=[];c=0;for(e=b.length;c<e;c++)f=f.concat(this.intersectObject(b[c]));f.sort(function(b,c){return b.distance-c.distance});return f},intersectObject:function(b){function c(b,c,e){var f;f=e.clone().subSelf(b).dot(c);if(f<=0)return null;b=b.clone().addSelf(c.clone().multiplyScalar(f));return e.distanceTo(b)}function e(b,c,e,f){var f=f.clone().subSelf(c),
 e=e.clone().subSelf(c),g=b.clone().subSelf(c),b=f.dot(f),c=f.dot(e),f=f.dot(g),h=e.dot(e),e=e.dot(g),g=1/(b*h-c*c),h=(h*f-c*e)*g,b=(b*e-c*f)*g;return h>0&&b>0&&h+b<1}if(b instanceof THREE.Particle){var f=c(this.origin,this.direction,b.matrixWorld.getPosition());if(f==null||f>b.scale.x)return[];return[{distance:f,point:b.position,face:null,object:b}]}else if(b instanceof THREE.Mesh){f=c(this.origin,this.direction,b.matrixWorld.getPosition());if(f==null||f>b.geometry.boundingSphere.radius*Math.max(b.scale.x,
-Math.max(b.scale.y,b.scale.z)))return[];var g,j,h,k,m,o,p,u,v,t,x=b.geometry,w=x.vertices,A=[],f=0;for(g=x.faces.length;f<g;f++)if(j=x.faces[f],v=this.origin.clone(),t=this.direction.clone(),o=b.matrixWorld,h=o.multiplyVector3(j.centroid.clone()).subSelf(v),u=h.dot(t),!(u<0)&&(h=o.multiplyVector3(w[j.a].position.clone()),k=o.multiplyVector3(w[j.b].position.clone()),m=o.multiplyVector3(w[j.c].position.clone()),o=j instanceof THREE.Face4?o.multiplyVector3(w[j.d].position.clone()):null,p=b.matrixRotationWorld.multiplyVector3(j.normal.clone()),
+Math.max(b.scale.y,b.scale.z)))return[];var g,j,h,k,m,o,p,u,v,t,x=b.geometry,w=x.vertices,A=[],f=0;for(g=x.faces.length;f<g;f++)if(j=x.faces[f],v=this.origin.clone(),t=this.direction.clone(),o=b.matrixWorld,h=o.multiplyVector3(j.centroid.clone()).subSelf(v),u=h.dot(t),!(u<=0)&&(h=o.multiplyVector3(w[j.a].position.clone()),k=o.multiplyVector3(w[j.b].position.clone()),m=o.multiplyVector3(w[j.c].position.clone()),o=j instanceof THREE.Face4?o.multiplyVector3(w[j.d].position.clone()):null,p=b.matrixRotationWorld.multiplyVector3(j.normal.clone()),
 u=t.dot(p),b.doubleSided||(b.flipSided?u>0:u<0)))if(u=p.dot((new THREE.Vector3).sub(h,v))/u,v=v.addSelf(t.multiplyScalar(u)),j instanceof THREE.Face3)e(v,h,k,m)&&(j={distance:this.origin.distanceTo(v),point:v,face:j,object:b},A.push(j));else if(j instanceof THREE.Face4&&(e(v,h,k,o)||e(v,k,m,o)))j={distance:this.origin.distanceTo(v),point:v,face:j,object:b},A.push(j);A.sort(function(b,c){return b.distance-c.distance});return A}else return[]}};
 THREE.Rectangle=function(){function b(){j=f-c;h=g-e}var c,e,f,g,j,h,k=!0;this.getX=function(){return c};this.getY=function(){return e};this.getWidth=function(){return j};this.getHeight=function(){return h};this.getLeft=function(){return c};this.getTop=function(){return e};this.getRight=function(){return f};this.getBottom=function(){return g};this.set=function(h,j,p,u){k=!1;c=h;e=j;f=p;g=u;b()};this.addPoint=function(h,j){k?(k=!1,c=h,e=j,f=h,g=j):(c=c<h?c:h,e=e<j?e:j,f=f>h?f:h,g=g>j?g:j);b()};this.add3Points=
 function(h,j,p,u,v,t){k?(k=!1,c=h<p?h<v?h:v:p<v?p:v,e=j<u?j<t?j:t:u<t?u:t,f=h>p?h>v?h:v:p>v?p:v,g=j>u?j>t?j:t:u>t?u:t):(c=h<p?h<v?h<c?h:c:v<c?v:c:p<v?p<c?p:c:v<c?v:c,e=j<u?j<t?j<e?j:e:t<e?t:e:u<t?u<e?u:e:t<e?t:e,f=h>p?h>v?h>f?h:f:v>f?v:f:p>v?p>f?p:f:v>f?v:f,g=j>u?j>t?j>g?j:g:t>g?t:g:u>t?u>g?u:g:t>g?t:g);b()};this.addRectangle=function(h){k?(k=!1,c=h.getLeft(),e=h.getTop(),f=h.getRight(),g=h.getBottom()):(c=c<h.getLeft()?c:h.getLeft(),e=e<h.getTop()?e:h.getTop(),f=f>h.getRight()?f:h.getRight(),g=g>
@@ -56,7 +56,7 @@ THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(b,c,e,f){t
 this.x=b.x*f;this.y=b.y*f;this.z=b.z*f;this.w=Math.cos(e);return this},setFromRotationMatrix:function(b){var c=Math.pow(b.determinant(),1/3);this.w=Math.sqrt(Math.max(0,c+b.n11+b.n22+b.n33))/2;this.x=Math.sqrt(Math.max(0,c+b.n11-b.n22-b.n33))/2;this.y=Math.sqrt(Math.max(0,c-b.n11+b.n22-b.n33))/2;this.z=Math.sqrt(Math.max(0,c-b.n11-b.n22+b.n33))/2;this.x=b.n32-b.n23<0?-Math.abs(this.x):Math.abs(this.x);this.y=b.n13-b.n31<0?-Math.abs(this.y):Math.abs(this.y);this.z=b.n21-b.n12<0?-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 b=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);b==0?this.w=this.z=this.y=this.x=0:(b=1/b,this.x*=b,this.y*=b,this.z*=b,this.w*=b);return this},multiplySelf:function(b){var c=
 this.x,e=this.y,f=this.z,g=this.w,j=b.x,h=b.y,k=b.z,b=b.w;this.x=c*b+g*j+e*k-f*h;this.y=e*b+g*h+f*j-c*k;this.z=f*b+g*k+c*h-e*j;this.w=g*b-c*j-e*h-f*k;return this},multiply:function(b,c){this.x=b.x*c.w+b.y*c.z-b.z*c.y+b.w*c.x;this.y=-b.x*c.z+b.y*c.w+b.z*c.x+b.w*c.y;this.z=b.x*c.y-b.y*c.x+b.z*c.w+b.w*c.z;this.w=-b.x*c.x-b.y*c.y-b.z*c.z+b.w*c.w;return this},multiplyVector3:function(b,c){c||(c=b);var e=b.x,f=b.y,g=b.z,j=this.x,h=this.y,k=this.z,m=this.w,o=m*e+h*g-k*f,p=m*f+k*e-j*g,u=m*g+j*f-h*e,e=-j*
-e-h*f-k*g;c.x=o*m+e*-j+p*-k-u*-h;c.y=p*m+e*-h+u*-j-o*-k;c.z=u*m+e*-k+o*-h-p*-j;return c}};THREE.Quaternion.slerp=function(b,c,e,f){var g=b.w*c.w+b.x*c.x+b.y*c.y+b.z*c.z;if(Math.abs(g)>=1)return e.w=b.w,e.x=b.x,e.y=b.y,e.z=b.z,e;var j=Math.acos(g),h=Math.sqrt(1-g*g);if(Math.abs(h)<0.0010)return e.w=0.5*(b.w+c.w),e.x=0.5*(b.x+c.x),e.y=0.5*(b.y+c.y),e.z=0.5*(b.z+c.z),e;g=Math.sin((1-f)*j)/h;f=Math.sin(f*j)/h;e.w=b.w*g+c.w*f;e.x=b.x*g+c.x*f;e.y=b.y*g+c.y*f;e.z=b.z*g+c.z*f;return e};
+e-h*f-k*g;c.x=o*m+e*-j+p*-k-u*-h;c.y=p*m+e*-h+u*-j-o*-k;c.z=u*m+e*-k+o*-h-p*-j;return c}};THREE.Quaternion.slerp=function(b,c,e,f){var g=b.w*c.w+b.x*c.x+b.y*c.y+b.z*c.z;if(Math.abs(g)>=1)return e.w=b.w,e.x=b.x,e.y=b.y,e.z=b.z,e;var j=Math.acos(g),h=Math.sqrt(1-g*g);if(Math.abs(h)<0.001)return e.w=0.5*(b.w+c.w),e.x=0.5*(b.x+c.x),e.y=0.5*(b.y+c.y),e.z=0.5*(b.z+c.z),e;g=Math.sin((1-f)*j)/h;f=Math.sin(f*j)/h;e.w=b.w*g+c.w*f;e.x=b.x*g+c.x*f;e.y=b.y*g+c.y*f;e.z=b.z*g+c.z*f;return e};
 THREE.Vertex=function(b){this.position=b||new THREE.Vector3};THREE.Face3=function(b,c,e,f,g,j){this.a=b;this.b=c;this.c=e;this.normal=f instanceof THREE.Vector3?f:new THREE.Vector3;this.vertexNormals=f instanceof Array?f:[];this.color=g instanceof THREE.Color?g:new THREE.Color;this.vertexColors=g instanceof Array?g:[];this.vertexTangents=[];this.materials=j instanceof Array?j:[j];this.centroid=new THREE.Vector3};
 THREE.Face4=function(b,c,e,f,g,j,h){this.a=b;this.b=c;this.c=e;this.d=f;this.normal=g instanceof THREE.Vector3?g:new THREE.Vector3;this.vertexNormals=g instanceof Array?g:[];this.color=j instanceof THREE.Color?j:new THREE.Color;this.vertexColors=j instanceof Array?j:[];this.vertexTangents=[];this.materials=h instanceof Array?h:[h];this.centroid=new THREE.Vector3};THREE.UV=function(b,c){this.u=b||0;this.v=c||0};
 THREE.UV.prototype={constructor:THREE.UV,set:function(b,c){this.u=b;this.v=c;return this},copy:function(b){this.u=b.u;this.v=b.v;return this},clone:function(){return new THREE.UV(this.u,this.v)}};
@@ -375,7 +375,7 @@ this.getPrevKeyWith("pos",t,h.index-1).pos,this.points[1]=g,this.points[2]=j,thi
 THREE.Animation.prototype.interpolateCatmullRom=function(b,c){var e=[],f=[],g,j,h,k,m,o;g=(b.length-1)*c;j=Math.floor(g);g-=j;e[0]=j==0?j:j-1;e[1]=j;e[2]=j>b.length-2?j:j+1;e[3]=j>b.length-3?j:j+2;j=b[e[0]];k=b[e[1]];m=b[e[2]];o=b[e[3]];e=g*g;h=g*e;f[0]=this.interpolate(j[0],k[0],m[0],o[0],g,e,h);f[1]=this.interpolate(j[1],k[1],m[1],o[1],g,e,h);f[2]=this.interpolate(j[2],k[2],m[2],o[2],g,e,h);return f};
 THREE.Animation.prototype.interpolate=function(b,c,e,f,g,j,h){b=(e-b)*0.5;f=(f-c)*0.5;return(2*(c-e)+b+f)*h+(-3*(c-e)-2*b-f)*j+b*g+c};THREE.Animation.prototype.getNextKeyWith=function(b,c,e){var f=this.data.hierarchy[c].keys;for(this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?e=e<f.length-1?e:f.length-1:e%=f.length;e<f.length;e++)if(f[e][b]!==void 0)return f[e];return this.data.hierarchy[c].keys[0]};
 THREE.Animation.prototype.getPrevKeyWith=function(b,c,e){for(var f=this.data.hierarchy[c].keys,e=this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?e>0?e:0:e>=0?e:e+f.length;e>=0;e--)if(f[e][b]!==void 0)return f[e];return this.data.hierarchy[c].keys[f.length-1]};
-THREE.FirstPersonCamera=function(b){function c(b,c){return function(){c.apply(b,arguments)}}THREE.Camera.call(this,b.fov,b.aspect,b.near,b.far,b.target);this.movementSpeed=1;this.lookSpeed=0.0050;this.noFly=!1;this.lookVertical=!0;this.autoForward=!1;this.activeLook=!0;this.heightSpeed=!1;this.heightCoef=1;this.heightMin=0;this.constrainVertical=!1;this.verticalMin=0;this.verticalMax=3.14;this.domElement=document;this.lastUpdate=(new Date).getTime();this.tdiff=0;if(b){if(b.movementSpeed!==void 0)this.movementSpeed=
+THREE.FirstPersonCamera=function(b){function c(b,c){return function(){c.apply(b,arguments)}}THREE.Camera.call(this,b.fov,b.aspect,b.near,b.far,b.target);this.movementSpeed=1;this.lookSpeed=0.005;this.noFly=!1;this.lookVertical=!0;this.autoForward=!1;this.activeLook=!0;this.heightSpeed=!1;this.heightCoef=1;this.heightMin=0;this.constrainVertical=!1;this.verticalMin=0;this.verticalMax=3.14;this.domElement=document;this.lastUpdate=(new Date).getTime();this.tdiff=0;if(b){if(b.movementSpeed!==void 0)this.movementSpeed=
 b.movementSpeed;if(b.lookSpeed!==void 0)this.lookSpeed=b.lookSpeed;if(b.noFly!==void 0)this.noFly=b.noFly;if(b.lookVertical!==void 0)this.lookVertical=b.lookVertical;if(b.autoForward!==void 0)this.autoForward=b.autoForward;if(b.activeLook!==void 0)this.activeLook=b.activeLook;if(b.heightSpeed!==void 0)this.heightSpeed=b.heightSpeed;if(b.heightCoef!==void 0)this.heightCoef=b.heightCoef;if(b.heightMin!==void 0)this.heightMin=b.heightMin;if(b.heightMax!==void 0)this.heightMax=b.heightMax;if(b.constrainVertical!==
 void 0)this.constrainVertical=b.constrainVertical;if(b.verticalMin!==void 0)this.verticalMin=b.verticalMin;if(b.verticalMax!==void 0)this.verticalMax=b.verticalMax;if(b.domElement!==void 0)this.domElement=b.domElement}this.theta=this.phi=this.lon=this.lat=this.mouseY=this.mouseX=this.autoSpeedFactor=0;this.mouseDragOn=this.freeze=this.moveRight=this.moveLeft=this.moveBackward=this.moveForward=!1;this.windowHalfX=window.innerWidth/2;this.windowHalfY=window.innerHeight/2;this.onMouseDown=function(b){b.preventDefault();
 b.stopPropagation();if(this.activeLook)switch(b.button){case 0:this.moveForward=!0;break;case 2:this.moveBackward=!0}this.mouseDragOn=!0};this.onMouseUp=function(b){b.preventDefault();b.stopPropagation();if(this.activeLook)switch(b.button){case 0:this.moveForward=!1;break;case 2:this.moveBackward=!1}this.mouseDragOn=!1};this.onMouseMove=function(b){this.mouseX=b.clientX-this.windowHalfX;this.mouseY=b.clientY-this.windowHalfY};this.onKeyDown=function(b){switch(b.keyCode){case 38:case 87:this.moveForward=
@@ -387,7 +387,7 @@ Math.sin(this.theta);this.supr.update.call(this)};this.domElement.addEventListen
 THREE.FirstPersonCamera.prototype=new THREE.Camera;THREE.FirstPersonCamera.prototype.constructor=THREE.FirstPersonCamera;THREE.FirstPersonCamera.prototype.supr=THREE.Camera.prototype;THREE.FirstPersonCamera.prototype.translate=function(b,c){this.matrix.rotateAxis(c);if(this.noFly)c.y=0;this.position.addSelf(c.multiplyScalar(b));this.target.position.addSelf(c.multiplyScalar(b))};
 THREE.PathCamera=function(b){function c(b,c,e,f){var h={name:e,fps:0.6,length:f,hierarchy:[]},g,j=c.getControlPointsArray(),k=c.getLength(),m=j.length,G=0;g=m-1;c={parent:-1,keys:[]};c.keys[0]={time:0,pos:j[0],rot:[0,0,0,1],scl:[1,1,1]};c.keys[g]={time:f,pos:j[g],rot:[0,0,0,1],scl:[1,1,1]};for(g=1;g<m-1;g++)G=f*k.chunks[g]/k.total,c.keys[g]={time:G,pos:j[g]};h.hierarchy[0]=c;THREE.AnimationHandler.add(h);return new THREE.Animation(b,e,THREE.AnimationHandler.CATMULLROM_FORWARD,!1)}function e(b,c){var e,
 f,h=new THREE.Geometry;for(e=0;e<b.points.length*c;e++)f=e/(b.points.length*c),f=b.getPoint(f),h.vertices[e]=new THREE.Vertex(new THREE.Vector3(f.x,f.y,f.z));return h}function f(b,c){var f=e(c,10),h=e(c,10),g=new THREE.LineBasicMaterial({color:16711680,linewidth:3});lineObj=new THREE.Line(f,g);particleObj=new THREE.ParticleSystem(h,new THREE.ParticleBasicMaterial({color:16755200,size:3}));lineObj.scale.set(1,1,1);b.addChild(lineObj);particleObj.scale.set(1,1,1);b.addChild(particleObj);h=new THREE.SphereGeometry(1,
-16,8);g=new THREE.MeshBasicMaterial({color:65280});for(i=0;i<c.points.length;i++)f=new THREE.Mesh(h,g),f.position.copy(c.points[i]),f.updateMatrix(),b.addChild(f)}THREE.Camera.call(this,b.fov,b.aspect,b.near,b.far,b.target);this.id="PathCamera"+THREE.PathCameraIdCounter++;this.duration=1E4;this.waypoints=[];this.useConstantSpeed=!0;this.resamplingCoef=50;this.debugPath=new THREE.Object3D;this.debugDummy=new THREE.Object3D;this.animationParent=new THREE.Object3D;this.lookSpeed=0.0050;this.lookHorizontal=
+16,8);g=new THREE.MeshBasicMaterial({color:65280});for(i=0;i<c.points.length;i++)f=new THREE.Mesh(h,g),f.position.copy(c.points[i]),f.updateMatrix(),b.addChild(f)}THREE.Camera.call(this,b.fov,b.aspect,b.near,b.far,b.target);this.id="PathCamera"+THREE.PathCameraIdCounter++;this.duration=1E4;this.waypoints=[];this.useConstantSpeed=!0;this.resamplingCoef=50;this.debugPath=new THREE.Object3D;this.debugDummy=new THREE.Object3D;this.animationParent=new THREE.Object3D;this.lookSpeed=0.005;this.lookHorizontal=
 this.lookVertical=!0;this.verticalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.horizontalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.domElement=document;if(b){if(b.duration!==void 0)this.duration=b.duration*1E3;if(b.waypoints!==void 0)this.waypoints=b.waypoints;if(b.useConstantSpeed!==void 0)this.useConstantSpeed=b.useConstantSpeed;if(b.resamplingCoef!==void 0)this.resamplingCoef=b.resamplingCoef;if(b.createDebugPath!==void 0)this.createDebugPath=b.createDebugPath;if(b.createDebugDummy!==
 void 0)this.createDebugDummy=b.createDebugDummy;if(b.lookSpeed!==void 0)this.lookSpeed=b.lookSpeed;if(b.lookVertical!==void 0)this.lookVertical=b.lookVertical;if(b.lookHorizontal!==void 0)this.lookHorizontal=b.lookHorizontal;if(b.verticalAngleMap!==void 0)this.verticalAngleMap=b.verticalAngleMap;if(b.horizontalAngleMap!==void 0)this.horizontalAngleMap=b.horizontalAngleMap;if(b.domElement!==void 0)this.domElement=b.domElement}this.theta=this.phi=this.lon=this.lat=this.mouseY=this.mouseX=0;this.windowHalfX=
 window.innerWidth/2;this.windowHalfY=window.innerHeight/2;var g=Math.PI*2,j=Math.PI/180;this.update=function(b,c,e){var f,h;this.lookHorizontal&&(this.lon+=this.mouseX*this.lookSpeed);this.lookVertical&&(this.lat-=this.mouseY*this.lookSpeed);this.lon=Math.max(0,Math.min(360,this.lon));this.lat=Math.max(-85,Math.min(85,this.lat));this.phi=(90-this.lat)*j;this.theta=this.lon*j;f=this.phi%g;this.phi=f>=0?f:f+g;f=this.verticalAngleMap.srcRange;h=this.verticalAngleMap.dstRange;var k=h[1]-h[0];this.phi=
@@ -395,7 +395,7 @@ TWEEN.Easing.Quadratic.EaseInOut(((this.phi-f[0])*(h[1]-h[0])/(f[1]-f[0])+h[0]-h
 b.clientX-this.windowHalfX;this.mouseY=b.clientY-this.windowHalfY};this.spline=new THREE.Spline;this.spline.initFromArray(this.waypoints);this.useConstantSpeed&&this.spline.reparametrizeByArcLength(this.resamplingCoef);if(this.createDebugDummy){var b=new THREE.MeshLambertMaterial({color:30719}),h=new THREE.MeshLambertMaterial({color:65280}),k=new THREE.CubeGeometry(10,10,20),m=new THREE.CubeGeometry(2,2,10);this.animationParent=new THREE.Mesh(k,b);b=new THREE.Mesh(m,h);b.position.set(0,10,0);this.animation=
 c(this.animationParent,this.spline,this.id,this.duration);this.animationParent.addChild(this);this.animationParent.addChild(this.target);this.animationParent.addChild(b)}else this.animation=c(this.animationParent,this.spline,this.id,this.duration),this.animationParent.addChild(this.target),this.animationParent.addChild(this);this.createDebugPath&&f(this.debugPath,this.spline);this.domElement.addEventListener("mousemove",function(b,c){return function(){c.apply(b,arguments)}}(this,this.onMouseMove),
 !1)};THREE.PathCamera.prototype=new THREE.Camera;THREE.PathCamera.prototype.constructor=THREE.PathCamera;THREE.PathCamera.prototype.supr=THREE.Camera.prototype;THREE.PathCameraIdCounter=0;
-THREE.FlyCamera=function(b){function c(b,c){return function(){c.apply(b,arguments)}}THREE.Camera.call(this,b.fov,b.aspect,b.near,b.far,b.target);this.tmpQuaternion=new THREE.Quaternion;this.movementSpeed=1;this.rollSpeed=0.0050;this.autoForward=this.dragToLook=!1;this.domElement=document;if(b){if(b.movementSpeed!==void 0)this.movementSpeed=b.movementSpeed;if(b.rollSpeed!==void 0)this.rollSpeed=b.rollSpeed;if(b.dragToLook!==void 0)this.dragToLook=b.dragToLook;if(b.autoForward!==void 0)this.autoForward=
+THREE.FlyCamera=function(b){function c(b,c){return function(){c.apply(b,arguments)}}THREE.Camera.call(this,b.fov,b.aspect,b.near,b.far,b.target);this.tmpQuaternion=new THREE.Quaternion;this.movementSpeed=1;this.rollSpeed=0.005;this.autoForward=this.dragToLook=!1;this.domElement=document;if(b){if(b.movementSpeed!==void 0)this.movementSpeed=b.movementSpeed;if(b.rollSpeed!==void 0)this.rollSpeed=b.rollSpeed;if(b.dragToLook!==void 0)this.dragToLook=b.dragToLook;if(b.autoForward!==void 0)this.autoForward=
 b.autoForward;if(b.domElement!==void 0)this.domElement=b.domElement}this.useTarget=!1;this.useQuaternion=!0;this.mouseStatus=0;this.moveState={up:0,down:0,left:0,right:0,forward:0,back:0,pitchUp:0,pitchDown:0,yawLeft:0,yawRight:0,rollLeft:0,rollRight:0};this.moveVector=new THREE.Vector3(0,0,0);this.rotationVector=new THREE.Vector3(0,0,0);this.lastUpdate=-1;this.tdiff=0;this.handleEvent=function(b){if(typeof this[b.type]=="function")this[b.type](b)};this.keydown=function(b){if(!b.altKey){switch(b.keyCode){case 16:this.movementSpeedMultiplier=
 0.1;break;case 87:this.moveState.forward=1;break;case 83:this.moveState.back=1;break;case 65:this.moveState.left=1;break;case 68:this.moveState.right=1;break;case 82:this.moveState.up=1;break;case 70:this.moveState.down=1;break;case 38:this.moveState.pitchUp=1;break;case 40:this.moveState.pitchDown=1;break;case 37:this.moveState.yawLeft=1;break;case 39:this.moveState.yawRight=1;break;case 81:this.moveState.rollLeft=1;break;case 69:this.moveState.rollRight=1}this.updateMovementVector();this.updateRotationVector()}};
 this.keyup=function(b){switch(b.keyCode){case 16:this.movementSpeedMultiplier=1;break;case 87:this.moveState.forward=0;break;case 83:this.moveState.back=0;break;case 65:this.moveState.left=0;break;case 68:this.moveState.right=0;break;case 82:this.moveState.up=0;break;case 70:this.moveState.down=0;break;case 38:this.moveState.pitchUp=0;break;case 40:this.moveState.pitchDown=0;break;case 37:this.moveState.yawLeft=0;break;case 39:this.moveState.yawRight=0;break;case 81:this.moveState.rollLeft=0;break;
@@ -487,7 +487,7 @@ THREE.ExtrudeGeometry.__v3=new THREE.Vector2;THREE.ExtrudeGeometry.__v4=new THRE
 THREE.IcosahedronGeometry=function(b){function c(b,c,e){var f=Math.sqrt(b*b+c*c+e*e);return g.vertices.push(new THREE.Vertex(new THREE.Vector3(b/f,c/f,e/f)))-1}function e(b,c,e,f){f.faces.push(new THREE.Face3(b,c,e))}function f(b,e){var f=g.vertices[b].position,h=g.vertices[e].position;return c((f.x+h.x)/2,(f.y+h.y)/2,(f.z+h.z)/2)}var g=this,j=new THREE.Geometry;this.subdivisions=b||0;THREE.Geometry.call(this);b=(1+Math.sqrt(5))/2;c(-1,b,0);c(1,b,0);c(-1,-b,0);c(1,-b,0);c(0,-1,b);c(0,1,b);c(0,-1,
 -b);c(0,1,-b);c(b,0,-1);c(b,0,1);c(-b,0,-1);c(-b,0,1);e(0,11,5,j);e(0,5,1,j);e(0,1,7,j);e(0,7,10,j);e(0,10,11,j);e(1,5,9,j);e(5,11,4,j);e(11,10,2,j);e(10,7,6,j);e(7,1,8,j);e(3,9,4,j);e(3,4,2,j);e(3,2,6,j);e(3,6,8,j);e(3,8,9,j);e(4,9,5,j);e(2,4,11,j);e(6,2,10,j);e(8,6,7,j);e(9,8,1,j);for(var h=0;h<this.subdivisions;h++){var b=new THREE.Geometry,k;for(k in j.faces){var m=f(j.faces[k].a,j.faces[k].b),o=f(j.faces[k].b,j.faces[k].c),p=f(j.faces[k].c,j.faces[k].a);e(j.faces[k].a,m,p,b);e(j.faces[k].b,o,
 m,b);e(j.faces[k].c,p,o,b);e(m,o,p,b)}j.faces=b.faces}g.faces=j.faces;this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.IcosahedronGeometry.prototype=new THREE.Geometry;THREE.IcosahedronGeometry.prototype.constructor=THREE.IcosahedronGeometry;
-THREE.LatheGeometry=function(b,c,e){THREE.Geometry.call(this);this.steps=c||12;this.angle=e||2*Math.PI;for(var c=this.angle/this.steps,e=[],f=[],g=[],j=[],h=(new THREE.Matrix4).setRotationZ(c),k=0;k<b.length;k++)this.vertices.push(new THREE.Vertex(b[k])),e[k]=b[k].clone(),f[k]=this.vertices.length-1;for(var m=0;m<=this.angle+0.0010;m+=c){for(k=0;k<e.length;k++)m<this.angle?(e[k]=h.multiplyVector3(e[k].clone()),this.vertices.push(new THREE.Vertex(e[k])),g[k]=this.vertices.length-1):g=j;m==0&&(j=f);
+THREE.LatheGeometry=function(b,c,e){THREE.Geometry.call(this);this.steps=c||12;this.angle=e||2*Math.PI;for(var c=this.angle/this.steps,e=[],f=[],g=[],j=[],h=(new THREE.Matrix4).setRotationZ(c),k=0;k<b.length;k++)this.vertices.push(new THREE.Vertex(b[k])),e[k]=b[k].clone(),f[k]=this.vertices.length-1;for(var m=0;m<=this.angle+0.001;m+=c){for(k=0;k<e.length;k++)m<this.angle?(e[k]=h.multiplyVector3(e[k].clone()),this.vertices.push(new THREE.Vertex(e[k])),g[k]=this.vertices.length-1):g=j;m==0&&(j=f);
 for(k=0;k<f.length-1;k++)this.faces.push(new THREE.Face4(g[k],g[k+1],f[k+1],f[k])),this.faceVertexUvs[0].push([new THREE.UV(1-m/this.angle,k/b.length),new THREE.UV(1-m/this.angle,(k+1)/b.length),new THREE.UV(1-(m-c)/this.angle,(k+1)/b.length),new THREE.UV(1-(m-c)/this.angle,k/b.length)]);f=g;g=[]}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.LatheGeometry.prototype=new THREE.Geometry;THREE.LatheGeometry.prototype.constructor=THREE.LatheGeometry;
 THREE.PlaneGeometry=function(b,c,e,f){THREE.Geometry.call(this);var g,j=b/2,h=c/2,e=e||1,f=f||1,k=e+1,m=f+1;b/=e;var o=c/f;for(g=0;g<m;g++)for(c=0;c<k;c++)this.vertices.push(new THREE.Vertex(new THREE.Vector3(c*b-j,-(g*o-h),0)));for(g=0;g<f;g++)for(c=0;c<e;c++)this.faces.push(new THREE.Face4(c+k*g,c+k*(g+1),c+1+k*(g+1),c+1+k*g)),this.faceVertexUvs[0].push([new THREE.UV(c/e,g/f),new THREE.UV(c/e,(g+1)/f),new THREE.UV((c+1)/e,(g+1)/f),new THREE.UV((c+1)/e,g/f)]);this.computeCentroids();this.computeFaceNormals()};
 THREE.PlaneGeometry.prototype=new THREE.Geometry;THREE.PlaneGeometry.prototype.constructor=THREE.PlaneGeometry;

+ 5 - 5
build/custom/ThreeCanvas.js

@@ -1,11 +1,11 @@
-// ThreeCanvas.js r43 - http://github.com/mrdoob/three.js
+// ThreeCanvas.js r44dev - http://github.com/mrdoob/three.js
 var THREE=THREE||{};if(!window.Int32Array)window.Int32Array=Array,window.Float32Array=Array;THREE.Color=function(a){a!==void 0&&this.setHex(a);return this};
 THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,copy:function(a){this.r=a.r;this.g=a.g;this.b=a.b;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSV:function(a,b,c){var d,e,g;if(c==0)this.r=this.g=this.b=0;else switch(d=Math.floor(a*6),e=a*6-d,a=c*(1-b),g=c*(1-b*e),b=c*(1-b*(1-e)),d){case 1:this.r=g;this.g=c;this.b=a;break;case 2:this.r=a;this.g=c;this.b=b;break;case 3:this.r=a;this.g=g;this.b=c;break;case 4:this.r=b;this.g=a;this.b=c;break;case 5:this.r=
 c;this.g=a;this.b=g;break;case 6:case 0:this.r=c,this.g=b,this.b=a}return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},getHex:function(){return~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},getContextStyle:function(){return"rgb("+Math.floor(this.r*255)+","+Math.floor(this.g*255)+","+Math.floor(this.b*255)+")"},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};
 THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0};
 THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(a,b){this.x=a;this.y=b;return this},copy:function(a){this.x=a.x;this.y=a.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},
 divideScalar:function(a){a?(this.x/=a,this.y/=a):this.set(0,0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,a=this.y-a.y;return b*b+a*a},setLength:function(a){return this.normalize().multiplyScalar(a)},
-unit:function(){return this.normalize()},equals:function(a){return a.x==this.x&&a.y==this.y}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0};
+equals:function(a){return a.x==this.x&&a.y==this.y}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0};
 THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=
 a.z-b.z;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},multiply:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideSelf:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a):this.set(0,0,0);return this},negate:function(){return this.multiplyScalar(-1)},
 dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.lengthSq())},lengthManhattan:function(){return this.x+this.y+this.z},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},cross:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},crossSelf:function(a){return this.set(this.y*
@@ -14,9 +14,9 @@ a.z-this.z*a.y,this.z*a.x-this.x*a.z,this.x*a.y-this.y*a.x)},distanceTo:function
 THREE.Vector4.prototype={constructor:THREE.Vector4,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||1},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=
 a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a,this.w/=a):(this.z=this.y=this.x=0,this.w=1);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.dot(this)},length:function(){return Math.sqrt(this.lengthSq())},
 normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this}};THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3};
-THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(a){return this.intersectObjects(a.objects)},intersectObjects:function(a){var b,c,d=[];b=0;for(c=a.length;b<c;b++)d=d.concat(this.intersectObject(a[b]));d.sort(function(a,b){return a.distance-b.distance});return d},intersectObject:function(a){function b(a,b,c){var d;d=c.clone().subSelf(a).dot(b);if(d<0)return null;a=a.clone().addSelf(b.clone().multiplyScalar(d));return c.distanceTo(a)}function c(a,b,c,d){var d=d.clone().subSelf(b),
+THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(a){return this.intersectObjects(a.objects)},intersectObjects:function(a){var b,c,d=[];b=0;for(c=a.length;b<c;b++)d=d.concat(this.intersectObject(a[b]));d.sort(function(a,b){return a.distance-b.distance});return d},intersectObject:function(a){function b(a,b,c){var d;d=c.clone().subSelf(a).dot(b);if(d<=0)return null;a=a.clone().addSelf(b.clone().multiplyScalar(d));return c.distanceTo(a)}function c(a,b,c,d){var d=d.clone().subSelf(b),
 c=c.clone().subSelf(b),e=a.clone().subSelf(b),a=d.dot(d),b=d.dot(c),d=d.dot(e),f=c.dot(c),c=c.dot(e),e=1/(a*f-b*b),f=(f*d-b*c)*e,a=(a*c-b*d)*e;return f>0&&a>0&&f+a<1}if(a instanceof THREE.Particle){var d=b(this.origin,this.direction,a.matrixWorld.getPosition());if(d==null||d>a.scale.x)return[];return[{distance:d,point:a.position,face:null,object:a}]}else if(a instanceof THREE.Mesh){d=b(this.origin,this.direction,a.matrixWorld.getPosition());if(d==null||d>a.geometry.boundingSphere.radius*Math.max(a.scale.x,
-Math.max(a.scale.y,a.scale.z)))return[];var e,g,f,h,i,l,n,j,m,k,p=a.geometry,q=p.vertices,u=[],d=0;for(e=p.faces.length;d<e;d++)if(g=p.faces[d],m=this.origin.clone(),k=this.direction.clone(),l=a.matrixWorld,f=l.multiplyVector3(g.centroid.clone()).subSelf(m),j=f.dot(k),!(j<0)&&(f=l.multiplyVector3(q[g.a].position.clone()),h=l.multiplyVector3(q[g.b].position.clone()),i=l.multiplyVector3(q[g.c].position.clone()),l=g instanceof THREE.Face4?l.multiplyVector3(q[g.d].position.clone()):null,n=a.matrixRotationWorld.multiplyVector3(g.normal.clone()),
+Math.max(a.scale.y,a.scale.z)))return[];var e,g,f,h,i,l,n,j,m,k,p=a.geometry,q=p.vertices,u=[],d=0;for(e=p.faces.length;d<e;d++)if(g=p.faces[d],m=this.origin.clone(),k=this.direction.clone(),l=a.matrixWorld,f=l.multiplyVector3(g.centroid.clone()).subSelf(m),j=f.dot(k),!(j<=0)&&(f=l.multiplyVector3(q[g.a].position.clone()),h=l.multiplyVector3(q[g.b].position.clone()),i=l.multiplyVector3(q[g.c].position.clone()),l=g instanceof THREE.Face4?l.multiplyVector3(q[g.d].position.clone()):null,n=a.matrixRotationWorld.multiplyVector3(g.normal.clone()),
 j=k.dot(n),a.doubleSided||(a.flipSided?j>0:j<0)))if(j=n.dot((new THREE.Vector3).sub(f,m))/j,m=m.addSelf(k.multiplyScalar(j)),g instanceof THREE.Face3)c(m,f,h,i)&&(g={distance:this.origin.distanceTo(m),point:m,face:g,object:a},u.push(g));else if(g instanceof THREE.Face4&&(c(m,f,h,l)||c(m,h,i,l)))g={distance:this.origin.distanceTo(m),point:m,face:g,object:a},u.push(g);u.sort(function(a,b){return a.distance-b.distance});return u}else return[]}};
 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,n,j){h=!1;b=f;c=g;d=n;e=j;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,n,j,m,k){h?(h=!1,b=f<n?f<m?f:m:n<m?n:m,c=g<j?g<k?g:k:j<k?j:k,d=f>n?f>m?f:m:n>m?n:m,e=g>j?g>k?g:k:j>k?j:k):(b=f<n?f<m?f<b?f:b:m<b?m:b:n<m?n<b?n:b:m<b?m:b,c=g<j?g<k?g<c?g:c:k<c?k:c:j<k?j<c?j:c:k<c?k:c,d=f>n?f>m?f>d?f:d:m>d?m:d:n>m?n>d?n:d:m>d?m:d,e=g>j?g>k?g>e?g:e:k>e?k:e:j>k?j>e?j:e:k>e?k: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>
@@ -56,7 +56,7 @@ THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){t
 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=a.n32-a.n23<0?-Math.abs(this.x):Math.abs(this.x);this.y=a.n13-a.n31<0?-Math.abs(this.y):Math.abs(this.y);this.z=a.n21-a.n12<0?-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);a==0?this.w=this.z=this.y=this.x=0:(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a);return this},multiplySelf:function(a){var b=
 this.x,c=this.y,d=this.z,e=this.w,g=a.x,f=a.y,h=a.z,a=a.w;this.x=b*a+e*g+c*h-d*f;this.y=c*a+e*f+d*g-b*h;this.z=d*a+e*h+b*f-c*g;this.w=e*a-b*g-c*f-d*h;return this},multiply:function(a,b){this.x=a.x*b.w+a.y*b.z-a.z*b.y+a.w*b.x;this.y=-a.x*b.z+a.y*b.w+a.z*b.x+a.w*b.y;this.z=a.x*b.y-a.y*b.x+a.z*b.w+a.w*b.z;this.w=-a.x*b.x-a.y*b.y-a.z*b.z+a.w*b.w;return this},multiplyVector3:function(a,b){b||(b=a);var c=a.x,d=a.y,e=a.z,g=this.x,f=this.y,h=this.z,i=this.w,l=i*c+f*e-h*d,n=i*d+h*c-g*e,j=i*e+g*d-f*c,c=-g*
-c-f*d-h*e;b.x=l*i+c*-g+n*-h-j*-f;b.y=n*i+c*-f+j*-g-l*-h;b.z=j*i+c*-h+l*-f-n*-g;return b}};THREE.Quaternion.slerp=function(a,b,c,d){var e=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;if(Math.abs(e)>=1)return c.w=a.w,c.x=a.x,c.y=a.y,c.z=a.z,c;var g=Math.acos(e),f=Math.sqrt(1-e*e);if(Math.abs(f)<0.0010)return c.w=0.5*(a.w+b.w),c.x=0.5*(a.x+b.x),c.y=0.5*(a.y+b.y),c.z=0.5*(a.z+b.z),c;e=Math.sin((1-d)*g)/f;d=Math.sin(d*g)/f;c.w=a.w*e+b.w*d;c.x=a.x*e+b.x*d;c.y=a.y*e+b.y*d;c.z=a.z*e+b.z*d;return c};
+c-f*d-h*e;b.x=l*i+c*-g+n*-h-j*-f;b.y=n*i+c*-f+j*-g-l*-h;b.z=j*i+c*-h+l*-f-n*-g;return b}};THREE.Quaternion.slerp=function(a,b,c,d){var e=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;if(Math.abs(e)>=1)return c.w=a.w,c.x=a.x,c.y=a.y,c.z=a.z,c;var g=Math.acos(e),f=Math.sqrt(1-e*e);if(Math.abs(f)<0.001)return c.w=0.5*(a.w+b.w),c.x=0.5*(a.x+b.x),c.y=0.5*(a.y+b.y),c.z=0.5*(a.z+b.z),c;e=Math.sin((1-d)*g)/f;d=Math.sin(d*g)/f;c.w=a.w*e+b.w*d;c.x=a.x*e+b.x*d;c.y=a.y*e+b.y*d;c.z=a.z*e+b.z*d;return c};
 THREE.Vertex=function(a){this.position=a||new THREE.Vector3};THREE.Face3=function(a,b,c,d,e,g){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materials=g instanceof Array?g:[g];this.centroid=new THREE.Vector3};
 THREE.Face4=function(a,b,c,d,e,g,f){this.a=a;this.b=b;this.c=c;this.d=d;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=g instanceof THREE.Color?g:new THREE.Color;this.vertexColors=g instanceof Array?g:[];this.vertexTangents=[];this.materials=f instanceof Array?f:[f];this.centroid=new THREE.Vector3};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};
 THREE.UV.prototype={constructor:THREE.UV,set:function(a,b){this.u=a;this.v=b;return this},copy:function(a){this.u=a.u;this.v=a.v;return this},clone:function(){return new THREE.UV(this.u,this.v)}};

+ 5 - 5
build/custom/ThreeDOM.js

@@ -1,11 +1,11 @@
-// ThreeDOM.js r43 - http://github.com/mrdoob/three.js
+// ThreeDOM.js r44dev - http://github.com/mrdoob/three.js
 var THREE=THREE||{};if(!window.Int32Array)window.Int32Array=Array,window.Float32Array=Array;THREE.Color=function(a){a!==void 0&&this.setHex(a);return this};
 THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,copy:function(a){this.r=a.r;this.g=a.g;this.b=a.b;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSV:function(a,b,c){var d,e,g;if(c==0)this.r=this.g=this.b=0;else switch(d=Math.floor(a*6),e=a*6-d,a=c*(1-b),g=c*(1-b*e),b=c*(1-b*(1-e)),d){case 1:this.r=g;this.g=c;this.b=a;break;case 2:this.r=a;this.g=c;this.b=b;break;case 3:this.r=a;this.g=g;this.b=c;break;case 4:this.r=b;this.g=a;this.b=c;break;case 5:this.r=
 c;this.g=a;this.b=g;break;case 6:case 0:this.r=c,this.g=b,this.b=a}return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},getHex:function(){return~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},getContextStyle:function(){return"rgb("+Math.floor(this.r*255)+","+Math.floor(this.g*255)+","+Math.floor(this.b*255)+")"},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};
 THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0};
 THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(a,b){this.x=a;this.y=b;return this},copy:function(a){this.x=a.x;this.y=a.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},
 divideScalar:function(a){a?(this.x/=a,this.y/=a):this.set(0,0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,a=this.y-a.y;return b*b+a*a},setLength:function(a){return this.normalize().multiplyScalar(a)},
-unit:function(){return this.normalize()},equals:function(a){return a.x==this.x&&a.y==this.y}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0};
+equals:function(a){return a.x==this.x&&a.y==this.y}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0};
 THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=
 a.z-b.z;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},multiply:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideSelf:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a):this.set(0,0,0);return this},negate:function(){return this.multiplyScalar(-1)},
 dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.lengthSq())},lengthManhattan:function(){return this.x+this.y+this.z},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},cross:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},crossSelf:function(a){return this.set(this.y*
@@ -14,9 +14,9 @@ a.z-this.z*a.y,this.z*a.x-this.x*a.z,this.x*a.y-this.y*a.x)},distanceTo:function
 THREE.Vector4.prototype={constructor:THREE.Vector4,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||1},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=
 a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a,this.w/=a):(this.z=this.y=this.x=0,this.w=1);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.dot(this)},length:function(){return Math.sqrt(this.lengthSq())},
 normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this}};THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3};
-THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(a){return this.intersectObjects(a.objects)},intersectObjects:function(a){var b,c,d=[];b=0;for(c=a.length;b<c;b++)d=d.concat(this.intersectObject(a[b]));d.sort(function(a,b){return a.distance-b.distance});return d},intersectObject:function(a){function b(a,b,c){var d;d=c.clone().subSelf(a).dot(b);if(d<0)return null;a=a.clone().addSelf(b.clone().multiplyScalar(d));return c.distanceTo(a)}function c(a,b,c,d){var d=d.clone().subSelf(b),
+THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(a){return this.intersectObjects(a.objects)},intersectObjects:function(a){var b,c,d=[];b=0;for(c=a.length;b<c;b++)d=d.concat(this.intersectObject(a[b]));d.sort(function(a,b){return a.distance-b.distance});return d},intersectObject:function(a){function b(a,b,c){var d;d=c.clone().subSelf(a).dot(b);if(d<=0)return null;a=a.clone().addSelf(b.clone().multiplyScalar(d));return c.distanceTo(a)}function c(a,b,c,d){var d=d.clone().subSelf(b),
 c=c.clone().subSelf(b),e=a.clone().subSelf(b),a=d.dot(d),b=d.dot(c),d=d.dot(e),f=c.dot(c),c=c.dot(e),e=1/(a*f-b*b),f=(f*d-b*c)*e,a=(a*c-b*d)*e;return f>0&&a>0&&f+a<1}if(a instanceof THREE.Particle){var d=b(this.origin,this.direction,a.matrixWorld.getPosition());if(d==null||d>a.scale.x)return[];return[{distance:d,point:a.position,face:null,object:a}]}else if(a instanceof THREE.Mesh){d=b(this.origin,this.direction,a.matrixWorld.getPosition());if(d==null||d>a.geometry.boundingSphere.radius*Math.max(a.scale.x,
-Math.max(a.scale.y,a.scale.z)))return[];var e,g,f,h,j,i,l,k,m,n,p=a.geometry,q=p.vertices,s=[],d=0;for(e=p.faces.length;d<e;d++)if(g=p.faces[d],m=this.origin.clone(),n=this.direction.clone(),i=a.matrixWorld,f=i.multiplyVector3(g.centroid.clone()).subSelf(m),k=f.dot(n),!(k<0)&&(f=i.multiplyVector3(q[g.a].position.clone()),h=i.multiplyVector3(q[g.b].position.clone()),j=i.multiplyVector3(q[g.c].position.clone()),i=g instanceof THREE.Face4?i.multiplyVector3(q[g.d].position.clone()):null,l=a.matrixRotationWorld.multiplyVector3(g.normal.clone()),
+Math.max(a.scale.y,a.scale.z)))return[];var e,g,f,h,j,i,l,k,m,n,p=a.geometry,q=p.vertices,s=[],d=0;for(e=p.faces.length;d<e;d++)if(g=p.faces[d],m=this.origin.clone(),n=this.direction.clone(),i=a.matrixWorld,f=i.multiplyVector3(g.centroid.clone()).subSelf(m),k=f.dot(n),!(k<=0)&&(f=i.multiplyVector3(q[g.a].position.clone()),h=i.multiplyVector3(q[g.b].position.clone()),j=i.multiplyVector3(q[g.c].position.clone()),i=g instanceof THREE.Face4?i.multiplyVector3(q[g.d].position.clone()):null,l=a.matrixRotationWorld.multiplyVector3(g.normal.clone()),
 k=n.dot(l),a.doubleSided||(a.flipSided?k>0:k<0)))if(k=l.dot((new THREE.Vector3).sub(f,m))/k,m=m.addSelf(n.multiplyScalar(k)),g instanceof THREE.Face3)c(m,f,h,j)&&(g={distance:this.origin.distanceTo(m),point:m,face:g,object:a},s.push(g));else if(g instanceof THREE.Face4&&(c(m,f,h,i)||c(m,h,j,i)))g={distance:this.origin.distanceTo(m),point:m,face:g,object:a},s.push(g);s.sort(function(a,b){return a.distance-b.distance});return s}else return[]}};
 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,k){h=!1;b=f;c=g;d=l;e=k;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,k,m,n){h?(h=!1,b=f<l?f<m?f:m:l<m?l:m,c=g<k?g<n?g:n:k<n?k:n,d=f>l?f>m?f:m:l>m?l:m,e=g>k?g>n?g:n:k>n?k:n):(b=f<l?f<m?f<b?f:b:m<b?m:b:l<m?l<b?l:b:m<b?m:b,c=g<k?g<n?g<c?g:c:n<c?n:c:k<n?k<c?k:c:n<c?n:c,d=f>l?f>m?f>d?f:d:m>d?m:d:l>m?l>d?l:d:m>d?m:d,e=g>k?g>n?g>e?g:e:n>e?n:e:k>n?k>e?k:e:n>e?n: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>
@@ -56,7 +56,7 @@ THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){t
 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=a.n32-a.n23<0?-Math.abs(this.x):Math.abs(this.x);this.y=a.n13-a.n31<0?-Math.abs(this.y):Math.abs(this.y);this.z=a.n21-a.n12<0?-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);a==0?this.w=this.z=this.y=this.x=0:(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a);return this},multiplySelf:function(a){var b=
 this.x,c=this.y,d=this.z,e=this.w,g=a.x,f=a.y,h=a.z,a=a.w;this.x=b*a+e*g+c*h-d*f;this.y=c*a+e*f+d*g-b*h;this.z=d*a+e*h+b*f-c*g;this.w=e*a-b*g-c*f-d*h;return this},multiply:function(a,b){this.x=a.x*b.w+a.y*b.z-a.z*b.y+a.w*b.x;this.y=-a.x*b.z+a.y*b.w+a.z*b.x+a.w*b.y;this.z=a.x*b.y-a.y*b.x+a.z*b.w+a.w*b.z;this.w=-a.x*b.x-a.y*b.y-a.z*b.z+a.w*b.w;return this},multiplyVector3:function(a,b){b||(b=a);var c=a.x,d=a.y,e=a.z,g=this.x,f=this.y,h=this.z,j=this.w,i=j*c+f*e-h*d,l=j*d+h*c-g*e,k=j*e+g*d-f*c,c=-g*
-c-f*d-h*e;b.x=i*j+c*-g+l*-h-k*-f;b.y=l*j+c*-f+k*-g-i*-h;b.z=k*j+c*-h+i*-f-l*-g;return b}};THREE.Quaternion.slerp=function(a,b,c,d){var e=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;if(Math.abs(e)>=1)return c.w=a.w,c.x=a.x,c.y=a.y,c.z=a.z,c;var g=Math.acos(e),f=Math.sqrt(1-e*e);if(Math.abs(f)<0.0010)return c.w=0.5*(a.w+b.w),c.x=0.5*(a.x+b.x),c.y=0.5*(a.y+b.y),c.z=0.5*(a.z+b.z),c;e=Math.sin((1-d)*g)/f;d=Math.sin(d*g)/f;c.w=a.w*e+b.w*d;c.x=a.x*e+b.x*d;c.y=a.y*e+b.y*d;c.z=a.z*e+b.z*d;return c};
+c-f*d-h*e;b.x=i*j+c*-g+l*-h-k*-f;b.y=l*j+c*-f+k*-g-i*-h;b.z=k*j+c*-h+i*-f-l*-g;return b}};THREE.Quaternion.slerp=function(a,b,c,d){var e=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;if(Math.abs(e)>=1)return c.w=a.w,c.x=a.x,c.y=a.y,c.z=a.z,c;var g=Math.acos(e),f=Math.sqrt(1-e*e);if(Math.abs(f)<0.001)return c.w=0.5*(a.w+b.w),c.x=0.5*(a.x+b.x),c.y=0.5*(a.y+b.y),c.z=0.5*(a.z+b.z),c;e=Math.sin((1-d)*g)/f;d=Math.sin(d*g)/f;c.w=a.w*e+b.w*d;c.x=a.x*e+b.x*d;c.y=a.y*e+b.y*d;c.z=a.z*e+b.z*d;return c};
 THREE.Vertex=function(a){this.position=a||new THREE.Vector3};THREE.Face3=function(a,b,c,d,e,g){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materials=g instanceof Array?g:[g];this.centroid=new THREE.Vector3};
 THREE.Face4=function(a,b,c,d,e,g,f){this.a=a;this.b=b;this.c=c;this.d=d;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=g instanceof THREE.Color?g:new THREE.Color;this.vertexColors=g instanceof Array?g:[];this.vertexTangents=[];this.materials=f instanceof Array?f:[f];this.centroid=new THREE.Vector3};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};
 THREE.UV.prototype={constructor:THREE.UV,set:function(a,b){this.u=a;this.v=b;return this},copy:function(a){this.u=a.u;this.v=a.v;return this},clone:function(){return new THREE.UV(this.u,this.v)}};THREE.Camera=function(a,b,c,d,e){THREE.Object3D.call(this);this.fov=a||50;this.aspect=b||1;this.near=c||0.1;this.far=d||2E3;this.target=e||new THREE.Object3D;this.useTarget=!0;this.matrixWorldInverse=new THREE.Matrix4;this.projectionMatrix=null;this.updateProjectionMatrix()};THREE.Camera.prototype=new THREE.Object3D;

+ 5 - 5
build/custom/ThreeExtras.js

@@ -1,4 +1,4 @@
-// ThreeExtras.js r43 - http://github.com/mrdoob/three.js
+// ThreeExtras.js r44dev - http://github.com/mrdoob/three.js
 THREE.ColorUtils={adjustHSV:function(a,b,c,e){var f=THREE.ColorUtils.__hsv;THREE.ColorUtils.rgbToHsv(a,f);f.h=THREE.ColorUtils.clamp(f.h+b,0,1);f.s=THREE.ColorUtils.clamp(f.s+c,0,1);f.v=THREE.ColorUtils.clamp(f.v+e,0,1);a.setHSV(f.h,f.s,f.v)},rgbToHsv:function(a,b){var c=a.r,e=a.g,f=a.b,h=Math.max(Math.max(c,e),f),g=Math.min(Math.min(c,e),f);if(g==h)g=c=0;else{var j=h-g,g=j/h,c=c==h?(e-f)/j:e==h?2+(f-c)/j:4+(c-e)/j;c/=6;c<0&&(c+=1);c>1&&(c-=1)}b===void 0&&(b={h:0,s:0,v:0});b.h=c;b.s=g;b.v=h;return b},
 clamp:function(a,b,c){return a<b?b:a>c?c:a}};THREE.ColorUtils.__hsv={h:0,s:0,v:0};
 THREE.GeometryUtils={merge:function(a,b){var c=b instanceof THREE.Mesh,e=a.vertices.length,f=c?b.geometry:b,h=a.vertices,g=f.vertices,j=a.faces,k=f.faces,l=a.faceVertexUvs[0],f=f.faceVertexUvs[0];c&&b.matrixAutoUpdate&&b.updateMatrix();for(var m=0,n=g.length;m<n;m++){var o=new THREE.Vertex(g[m].position.clone());c&&b.matrix.multiplyVector3(o.position);h.push(o)}m=0;for(n=k.length;m<n;m++){var g=k[m],p,v,t=g.vertexNormals,o=g.vertexColors;g instanceof THREE.Face3?p=new THREE.Face3(g.a+e,g.b+e,g.c+
@@ -41,7 +41,7 @@ this.getPrevKeyWith("pos",p,g.index-1).pos,this.points[1]=f,this.points[2]=h,thi
 THREE.Animation.prototype.interpolateCatmullRom=function(a,b){var c=[],e=[],f,h,g,j,k,l;f=(a.length-1)*b;h=Math.floor(f);f-=h;c[0]=h==0?h:h-1;c[1]=h;c[2]=h>a.length-2?h:h+1;c[3]=h>a.length-3?h:h+2;h=a[c[0]];j=a[c[1]];k=a[c[2]];l=a[c[3]];c=f*f;g=f*c;e[0]=this.interpolate(h[0],j[0],k[0],l[0],f,c,g);e[1]=this.interpolate(h[1],j[1],k[1],l[1],f,c,g);e[2]=this.interpolate(h[2],j[2],k[2],l[2],f,c,g);return e};
 THREE.Animation.prototype.interpolate=function(a,b,c,e,f,h,g){a=(c-a)*0.5;e=(e-b)*0.5;return(2*(b-c)+a+e)*g+(-3*(b-c)-2*a-e)*h+a*f+b};THREE.Animation.prototype.getNextKeyWith=function(a,b,c){var e=this.data.hierarchy[b].keys;for(this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?c=c<e.length-1?c:e.length-1:c%=e.length;c<e.length;c++)if(e[c][a]!==void 0)return e[c];return this.data.hierarchy[b].keys[0]};
 THREE.Animation.prototype.getPrevKeyWith=function(a,b,c){for(var e=this.data.hierarchy[b].keys,c=this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?c>0?c:0:c>=0?c:c+e.length;c>=0;c--)if(e[c][a]!==void 0)return e[c];return this.data.hierarchy[b].keys[e.length-1]};
-THREE.FirstPersonCamera=function(a){function b(a,b){return function(){b.apply(a,arguments)}}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.movementSpeed=1;this.lookSpeed=0.0050;this.noFly=!1;this.lookVertical=!0;this.autoForward=!1;this.activeLook=!0;this.heightSpeed=!1;this.heightCoef=1;this.heightMin=0;this.constrainVertical=!1;this.verticalMin=0;this.verticalMax=3.14;this.domElement=document;this.lastUpdate=(new Date).getTime();this.tdiff=0;if(a){if(a.movementSpeed!==void 0)this.movementSpeed=
+THREE.FirstPersonCamera=function(a){function b(a,b){return function(){b.apply(a,arguments)}}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.movementSpeed=1;this.lookSpeed=0.005;this.noFly=!1;this.lookVertical=!0;this.autoForward=!1;this.activeLook=!0;this.heightSpeed=!1;this.heightCoef=1;this.heightMin=0;this.constrainVertical=!1;this.verticalMin=0;this.verticalMax=3.14;this.domElement=document;this.lastUpdate=(new Date).getTime();this.tdiff=0;if(a){if(a.movementSpeed!==void 0)this.movementSpeed=
 a.movementSpeed;if(a.lookSpeed!==void 0)this.lookSpeed=a.lookSpeed;if(a.noFly!==void 0)this.noFly=a.noFly;if(a.lookVertical!==void 0)this.lookVertical=a.lookVertical;if(a.autoForward!==void 0)this.autoForward=a.autoForward;if(a.activeLook!==void 0)this.activeLook=a.activeLook;if(a.heightSpeed!==void 0)this.heightSpeed=a.heightSpeed;if(a.heightCoef!==void 0)this.heightCoef=a.heightCoef;if(a.heightMin!==void 0)this.heightMin=a.heightMin;if(a.heightMax!==void 0)this.heightMax=a.heightMax;if(a.constrainVertical!==
 void 0)this.constrainVertical=a.constrainVertical;if(a.verticalMin!==void 0)this.verticalMin=a.verticalMin;if(a.verticalMax!==void 0)this.verticalMax=a.verticalMax;if(a.domElement!==void 0)this.domElement=a.domElement}this.theta=this.phi=this.lon=this.lat=this.mouseY=this.mouseX=this.autoSpeedFactor=0;this.mouseDragOn=this.freeze=this.moveRight=this.moveLeft=this.moveBackward=this.moveForward=!1;this.windowHalfX=window.innerWidth/2;this.windowHalfY=window.innerHeight/2;this.onMouseDown=function(a){a.preventDefault();
 a.stopPropagation();if(this.activeLook)switch(a.button){case 0:this.moveForward=!0;break;case 2:this.moveBackward=!0}this.mouseDragOn=!0};this.onMouseUp=function(a){a.preventDefault();a.stopPropagation();if(this.activeLook)switch(a.button){case 0:this.moveForward=!1;break;case 2:this.moveBackward=!1}this.mouseDragOn=!1};this.onMouseMove=function(a){this.mouseX=a.clientX-this.windowHalfX;this.mouseY=a.clientY-this.windowHalfY};this.onKeyDown=function(a){switch(a.keyCode){case 38:case 87:this.moveForward=
@@ -53,7 +53,7 @@ Math.sin(this.theta);this.supr.update.call(this)};this.domElement.addEventListen
 THREE.FirstPersonCamera.prototype=new THREE.Camera;THREE.FirstPersonCamera.prototype.constructor=THREE.FirstPersonCamera;THREE.FirstPersonCamera.prototype.supr=THREE.Camera.prototype;THREE.FirstPersonCamera.prototype.translate=function(a,b){this.matrix.rotateAxis(b);if(this.noFly)b.y=0;this.position.addSelf(b.multiplyScalar(a));this.target.position.addSelf(b.multiplyScalar(a))};
 THREE.PathCamera=function(a){function b(a,c,b,e){var g={name:b,fps:0.6,length:e,hierarchy:[]},h,f=c.getControlPointsArray(),j=c.getLength(),k=f.length,x=0;h=k-1;c={parent:-1,keys:[]};c.keys[0]={time:0,pos:f[0],rot:[0,0,0,1],scl:[1,1,1]};c.keys[h]={time:e,pos:f[h],rot:[0,0,0,1],scl:[1,1,1]};for(h=1;h<k-1;h++)x=e*j.chunks[h]/j.total,c.keys[h]={time:x,pos:f[h]};g.hierarchy[0]=c;THREE.AnimationHandler.add(g);return new THREE.Animation(a,b,THREE.AnimationHandler.CATMULLROM_FORWARD,!1)}function c(a,c){var b,
 e,g=new THREE.Geometry;for(b=0;b<a.points.length*c;b++)e=b/(a.points.length*c),e=a.getPoint(e),g.vertices[b]=new THREE.Vertex(new THREE.Vector3(e.x,e.y,e.z));return g}function e(a,b){var e=c(b,10),g=c(b,10),h=new THREE.LineBasicMaterial({color:16711680,linewidth:3});lineObj=new THREE.Line(e,h);particleObj=new THREE.ParticleSystem(g,new THREE.ParticleBasicMaterial({color:16755200,size:3}));lineObj.scale.set(1,1,1);a.addChild(lineObj);particleObj.scale.set(1,1,1);a.addChild(particleObj);g=new THREE.SphereGeometry(1,
-16,8);h=new THREE.MeshBasicMaterial({color:65280});for(i=0;i<b.points.length;i++)e=new THREE.Mesh(g,h),e.position.copy(b.points[i]),e.updateMatrix(),a.addChild(e)}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.id="PathCamera"+THREE.PathCameraIdCounter++;this.duration=1E4;this.waypoints=[];this.useConstantSpeed=!0;this.resamplingCoef=50;this.debugPath=new THREE.Object3D;this.debugDummy=new THREE.Object3D;this.animationParent=new THREE.Object3D;this.lookSpeed=0.0050;this.lookHorizontal=
+16,8);h=new THREE.MeshBasicMaterial({color:65280});for(i=0;i<b.points.length;i++)e=new THREE.Mesh(g,h),e.position.copy(b.points[i]),e.updateMatrix(),a.addChild(e)}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.id="PathCamera"+THREE.PathCameraIdCounter++;this.duration=1E4;this.waypoints=[];this.useConstantSpeed=!0;this.resamplingCoef=50;this.debugPath=new THREE.Object3D;this.debugDummy=new THREE.Object3D;this.animationParent=new THREE.Object3D;this.lookSpeed=0.005;this.lookHorizontal=
 this.lookVertical=!0;this.verticalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.horizontalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.domElement=document;if(a){if(a.duration!==void 0)this.duration=a.duration*1E3;if(a.waypoints!==void 0)this.waypoints=a.waypoints;if(a.useConstantSpeed!==void 0)this.useConstantSpeed=a.useConstantSpeed;if(a.resamplingCoef!==void 0)this.resamplingCoef=a.resamplingCoef;if(a.createDebugPath!==void 0)this.createDebugPath=a.createDebugPath;if(a.createDebugDummy!==
 void 0)this.createDebugDummy=a.createDebugDummy;if(a.lookSpeed!==void 0)this.lookSpeed=a.lookSpeed;if(a.lookVertical!==void 0)this.lookVertical=a.lookVertical;if(a.lookHorizontal!==void 0)this.lookHorizontal=a.lookHorizontal;if(a.verticalAngleMap!==void 0)this.verticalAngleMap=a.verticalAngleMap;if(a.horizontalAngleMap!==void 0)this.horizontalAngleMap=a.horizontalAngleMap;if(a.domElement!==void 0)this.domElement=a.domElement}this.theta=this.phi=this.lon=this.lat=this.mouseY=this.mouseX=0;this.windowHalfX=
 window.innerWidth/2;this.windowHalfY=window.innerHeight/2;var f=Math.PI*2,h=Math.PI/180;this.update=function(a,c,b){var e,g;this.lookHorizontal&&(this.lon+=this.mouseX*this.lookSpeed);this.lookVertical&&(this.lat-=this.mouseY*this.lookSpeed);this.lon=Math.max(0,Math.min(360,this.lon));this.lat=Math.max(-85,Math.min(85,this.lat));this.phi=(90-this.lat)*h;this.theta=this.lon*h;e=this.phi%f;this.phi=e>=0?e:e+f;e=this.verticalAngleMap.srcRange;g=this.verticalAngleMap.dstRange;var j=g[1]-g[0];this.phi=
@@ -61,7 +61,7 @@ TWEEN.Easing.Quadratic.EaseInOut(((this.phi-e[0])*(g[1]-g[0])/(e[1]-e[0])+g[0]-g
 a.clientX-this.windowHalfX;this.mouseY=a.clientY-this.windowHalfY};this.spline=new THREE.Spline;this.spline.initFromArray(this.waypoints);this.useConstantSpeed&&this.spline.reparametrizeByArcLength(this.resamplingCoef);if(this.createDebugDummy){var a=new THREE.MeshLambertMaterial({color:30719}),g=new THREE.MeshLambertMaterial({color:65280}),j=new THREE.CubeGeometry(10,10,20),k=new THREE.CubeGeometry(2,2,10);this.animationParent=new THREE.Mesh(j,a);a=new THREE.Mesh(k,g);a.position.set(0,10,0);this.animation=
 b(this.animationParent,this.spline,this.id,this.duration);this.animationParent.addChild(this);this.animationParent.addChild(this.target);this.animationParent.addChild(a)}else this.animation=b(this.animationParent,this.spline,this.id,this.duration),this.animationParent.addChild(this.target),this.animationParent.addChild(this);this.createDebugPath&&e(this.debugPath,this.spline);this.domElement.addEventListener("mousemove",function(a,c){return function(){c.apply(a,arguments)}}(this,this.onMouseMove),
 !1)};THREE.PathCamera.prototype=new THREE.Camera;THREE.PathCamera.prototype.constructor=THREE.PathCamera;THREE.PathCamera.prototype.supr=THREE.Camera.prototype;THREE.PathCameraIdCounter=0;
-THREE.FlyCamera=function(a){function b(a,b){return function(){b.apply(a,arguments)}}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.tmpQuaternion=new THREE.Quaternion;this.movementSpeed=1;this.rollSpeed=0.0050;this.autoForward=this.dragToLook=!1;this.domElement=document;if(a){if(a.movementSpeed!==void 0)this.movementSpeed=a.movementSpeed;if(a.rollSpeed!==void 0)this.rollSpeed=a.rollSpeed;if(a.dragToLook!==void 0)this.dragToLook=a.dragToLook;if(a.autoForward!==void 0)this.autoForward=
+THREE.FlyCamera=function(a){function b(a,b){return function(){b.apply(a,arguments)}}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.tmpQuaternion=new THREE.Quaternion;this.movementSpeed=1;this.rollSpeed=0.005;this.autoForward=this.dragToLook=!1;this.domElement=document;if(a){if(a.movementSpeed!==void 0)this.movementSpeed=a.movementSpeed;if(a.rollSpeed!==void 0)this.rollSpeed=a.rollSpeed;if(a.dragToLook!==void 0)this.dragToLook=a.dragToLook;if(a.autoForward!==void 0)this.autoForward=
 a.autoForward;if(a.domElement!==void 0)this.domElement=a.domElement}this.useTarget=!1;this.useQuaternion=!0;this.mouseStatus=0;this.moveState={up:0,down:0,left:0,right:0,forward:0,back:0,pitchUp:0,pitchDown:0,yawLeft:0,yawRight:0,rollLeft:0,rollRight:0};this.moveVector=new THREE.Vector3(0,0,0);this.rotationVector=new THREE.Vector3(0,0,0);this.lastUpdate=-1;this.tdiff=0;this.handleEvent=function(a){if(typeof this[a.type]=="function")this[a.type](a)};this.keydown=function(a){if(!a.altKey){switch(a.keyCode){case 16:this.movementSpeedMultiplier=
 0.1;break;case 87:this.moveState.forward=1;break;case 83:this.moveState.back=1;break;case 65:this.moveState.left=1;break;case 68:this.moveState.right=1;break;case 82:this.moveState.up=1;break;case 70:this.moveState.down=1;break;case 38:this.moveState.pitchUp=1;break;case 40:this.moveState.pitchDown=1;break;case 37:this.moveState.yawLeft=1;break;case 39:this.moveState.yawRight=1;break;case 81:this.moveState.rollLeft=1;break;case 69:this.moveState.rollRight=1}this.updateMovementVector();this.updateRotationVector()}};
 this.keyup=function(a){switch(a.keyCode){case 16:this.movementSpeedMultiplier=1;break;case 87:this.moveState.forward=0;break;case 83:this.moveState.back=0;break;case 65:this.moveState.left=0;break;case 68:this.moveState.right=0;break;case 82:this.moveState.up=0;break;case 70:this.moveState.down=0;break;case 38:this.moveState.pitchUp=0;break;case 40:this.moveState.pitchDown=0;break;case 37:this.moveState.yawLeft=0;break;case 39:this.moveState.yawRight=0;break;case 81:this.moveState.rollLeft=0;break;
@@ -153,7 +153,7 @@ THREE.ExtrudeGeometry.__v3=new THREE.Vector2;THREE.ExtrudeGeometry.__v4=new THRE
 THREE.IcosahedronGeometry=function(a){function b(a,b,c){var e=Math.sqrt(a*a+b*b+c*c);return f.vertices.push(new THREE.Vertex(new THREE.Vector3(a/e,b/e,c/e)))-1}function c(a,b,c,e){e.faces.push(new THREE.Face3(a,b,c))}function e(a,c){var e=f.vertices[a].position,g=f.vertices[c].position;return b((e.x+g.x)/2,(e.y+g.y)/2,(e.z+g.z)/2)}var f=this,h=new THREE.Geometry;this.subdivisions=a||0;THREE.Geometry.call(this);a=(1+Math.sqrt(5))/2;b(-1,a,0);b(1,a,0);b(-1,-a,0);b(1,-a,0);b(0,-1,a);b(0,1,a);b(0,-1,
 -a);b(0,1,-a);b(a,0,-1);b(a,0,1);b(-a,0,-1);b(-a,0,1);c(0,11,5,h);c(0,5,1,h);c(0,1,7,h);c(0,7,10,h);c(0,10,11,h);c(1,5,9,h);c(5,11,4,h);c(11,10,2,h);c(10,7,6,h);c(7,1,8,h);c(3,9,4,h);c(3,4,2,h);c(3,2,6,h);c(3,6,8,h);c(3,8,9,h);c(4,9,5,h);c(2,4,11,h);c(6,2,10,h);c(8,6,7,h);c(9,8,1,h);for(var g=0;g<this.subdivisions;g++){var a=new THREE.Geometry,j;for(j in h.faces){var k=e(h.faces[j].a,h.faces[j].b),l=e(h.faces[j].b,h.faces[j].c),m=e(h.faces[j].c,h.faces[j].a);c(h.faces[j].a,k,m,a);c(h.faces[j].b,l,
 k,a);c(h.faces[j].c,m,l,a);c(k,l,m,a)}h.faces=a.faces}f.faces=h.faces;this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.IcosahedronGeometry.prototype=new THREE.Geometry;THREE.IcosahedronGeometry.prototype.constructor=THREE.IcosahedronGeometry;
-THREE.LatheGeometry=function(a,b,c){THREE.Geometry.call(this);this.steps=b||12;this.angle=c||2*Math.PI;for(var b=this.angle/this.steps,c=[],e=[],f=[],h=[],g=(new THREE.Matrix4).setRotationZ(b),j=0;j<a.length;j++)this.vertices.push(new THREE.Vertex(a[j])),c[j]=a[j].clone(),e[j]=this.vertices.length-1;for(var k=0;k<=this.angle+0.0010;k+=b){for(j=0;j<c.length;j++)k<this.angle?(c[j]=g.multiplyVector3(c[j].clone()),this.vertices.push(new THREE.Vertex(c[j])),f[j]=this.vertices.length-1):f=h;k==0&&(h=e);
+THREE.LatheGeometry=function(a,b,c){THREE.Geometry.call(this);this.steps=b||12;this.angle=c||2*Math.PI;for(var b=this.angle/this.steps,c=[],e=[],f=[],h=[],g=(new THREE.Matrix4).setRotationZ(b),j=0;j<a.length;j++)this.vertices.push(new THREE.Vertex(a[j])),c[j]=a[j].clone(),e[j]=this.vertices.length-1;for(var k=0;k<=this.angle+0.001;k+=b){for(j=0;j<c.length;j++)k<this.angle?(c[j]=g.multiplyVector3(c[j].clone()),this.vertices.push(new THREE.Vertex(c[j])),f[j]=this.vertices.length-1):f=h;k==0&&(h=e);
 for(j=0;j<e.length-1;j++)this.faces.push(new THREE.Face4(f[j],f[j+1],e[j+1],e[j])),this.faceVertexUvs[0].push([new THREE.UV(1-k/this.angle,j/a.length),new THREE.UV(1-k/this.angle,(j+1)/a.length),new THREE.UV(1-(k-b)/this.angle,(j+1)/a.length),new THREE.UV(1-(k-b)/this.angle,j/a.length)]);e=f;f=[]}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.LatheGeometry.prototype=new THREE.Geometry;THREE.LatheGeometry.prototype.constructor=THREE.LatheGeometry;
 THREE.PlaneGeometry=function(a,b,c,e){THREE.Geometry.call(this);var f,h=a/2,g=b/2,c=c||1,e=e||1,j=c+1,k=e+1;a/=c;var l=b/e;for(f=0;f<k;f++)for(b=0;b<j;b++)this.vertices.push(new THREE.Vertex(new THREE.Vector3(b*a-h,-(f*l-g),0)));for(f=0;f<e;f++)for(b=0;b<c;b++)this.faces.push(new THREE.Face4(b+j*f,b+j*(f+1),b+1+j*(f+1),b+1+j*f)),this.faceVertexUvs[0].push([new THREE.UV(b/c,f/e),new THREE.UV(b/c,(f+1)/e),new THREE.UV((b+1)/c,(f+1)/e),new THREE.UV((b+1)/c,f/e)]);this.computeCentroids();this.computeFaceNormals()};
 THREE.PlaneGeometry.prototype=new THREE.Geometry;THREE.PlaneGeometry.prototype.constructor=THREE.PlaneGeometry;

+ 5 - 5
build/custom/ThreeSVG.js

@@ -1,11 +1,11 @@
-// ThreeSVG.js r43 - http://github.com/mrdoob/three.js
+// ThreeSVG.js r44dev - http://github.com/mrdoob/three.js
 var THREE=THREE||{};if(!window.Int32Array)window.Int32Array=Array,window.Float32Array=Array;THREE.Color=function(a){a!==void 0&&this.setHex(a);return this};
 THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,copy:function(a){this.r=a.r;this.g=a.g;this.b=a.b;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSV:function(a,b,c){var d,e,g;if(c==0)this.r=this.g=this.b=0;else switch(d=Math.floor(a*6),e=a*6-d,a=c*(1-b),g=c*(1-b*e),b=c*(1-b*(1-e)),d){case 1:this.r=g;this.g=c;this.b=a;break;case 2:this.r=a;this.g=c;this.b=b;break;case 3:this.r=a;this.g=g;this.b=c;break;case 4:this.r=b;this.g=a;this.b=c;break;case 5:this.r=
 c;this.g=a;this.b=g;break;case 6:case 0:this.r=c,this.g=b,this.b=a}return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},getHex:function(){return~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},getContextStyle:function(){return"rgb("+Math.floor(this.r*255)+","+Math.floor(this.g*255)+","+Math.floor(this.b*255)+")"},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};
 THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0};
 THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(a,b){this.x=a;this.y=b;return this},copy:function(a){this.x=a.x;this.y=a.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},
 divideScalar:function(a){a?(this.x/=a,this.y/=a):this.set(0,0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,a=this.y-a.y;return b*b+a*a},setLength:function(a){return this.normalize().multiplyScalar(a)},
-unit:function(){return this.normalize()},equals:function(a){return a.x==this.x&&a.y==this.y}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0};
+equals:function(a){return a.x==this.x&&a.y==this.y}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0};
 THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=
 a.z-b.z;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},multiply:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideSelf:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a):this.set(0,0,0);return this},negate:function(){return this.multiplyScalar(-1)},
 dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.lengthSq())},lengthManhattan:function(){return this.x+this.y+this.z},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},cross:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},crossSelf:function(a){return this.set(this.y*
@@ -14,9 +14,9 @@ a.z-this.z*a.y,this.z*a.x-this.x*a.z,this.x*a.y-this.y*a.x)},distanceTo:function
 THREE.Vector4.prototype={constructor:THREE.Vector4,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||1},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=
 a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a,this.w/=a):(this.z=this.y=this.x=0,this.w=1);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.dot(this)},length:function(){return Math.sqrt(this.lengthSq())},
 normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this}};THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3};
-THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(a){return this.intersectObjects(a.objects)},intersectObjects:function(a){var b,c,d=[];b=0;for(c=a.length;b<c;b++)d=d.concat(this.intersectObject(a[b]));d.sort(function(a,b){return a.distance-b.distance});return d},intersectObject:function(a){function b(a,b,c){var d;d=c.clone().subSelf(a).dot(b);if(d<0)return null;a=a.clone().addSelf(b.clone().multiplyScalar(d));return c.distanceTo(a)}function c(a,b,c,d){var d=d.clone().subSelf(b),
+THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(a){return this.intersectObjects(a.objects)},intersectObjects:function(a){var b,c,d=[];b=0;for(c=a.length;b<c;b++)d=d.concat(this.intersectObject(a[b]));d.sort(function(a,b){return a.distance-b.distance});return d},intersectObject:function(a){function b(a,b,c){var d;d=c.clone().subSelf(a).dot(b);if(d<=0)return null;a=a.clone().addSelf(b.clone().multiplyScalar(d));return c.distanceTo(a)}function c(a,b,c,d){var d=d.clone().subSelf(b),
 c=c.clone().subSelf(b),e=a.clone().subSelf(b),a=d.dot(d),b=d.dot(c),d=d.dot(e),f=c.dot(c),c=c.dot(e),e=1/(a*f-b*b),f=(f*d-b*c)*e,a=(a*c-b*d)*e;return f>0&&a>0&&f+a<1}if(a instanceof THREE.Particle){var d=b(this.origin,this.direction,a.matrixWorld.getPosition());if(d==null||d>a.scale.x)return[];return[{distance:d,point:a.position,face:null,object:a}]}else if(a instanceof THREE.Mesh){d=b(this.origin,this.direction,a.matrixWorld.getPosition());if(d==null||d>a.geometry.boundingSphere.radius*Math.max(a.scale.x,
-Math.max(a.scale.y,a.scale.z)))return[];var e,g,f,h,k,i,l,j,n,m,p=a.geometry,q=p.vertices,w=[],d=0;for(e=p.faces.length;d<e;d++)if(g=p.faces[d],n=this.origin.clone(),m=this.direction.clone(),i=a.matrixWorld,f=i.multiplyVector3(g.centroid.clone()).subSelf(n),j=f.dot(m),!(j<0)&&(f=i.multiplyVector3(q[g.a].position.clone()),h=i.multiplyVector3(q[g.b].position.clone()),k=i.multiplyVector3(q[g.c].position.clone()),i=g instanceof THREE.Face4?i.multiplyVector3(q[g.d].position.clone()):null,l=a.matrixRotationWorld.multiplyVector3(g.normal.clone()),
+Math.max(a.scale.y,a.scale.z)))return[];var e,g,f,h,k,i,l,j,n,m,p=a.geometry,q=p.vertices,w=[],d=0;for(e=p.faces.length;d<e;d++)if(g=p.faces[d],n=this.origin.clone(),m=this.direction.clone(),i=a.matrixWorld,f=i.multiplyVector3(g.centroid.clone()).subSelf(n),j=f.dot(m),!(j<=0)&&(f=i.multiplyVector3(q[g.a].position.clone()),h=i.multiplyVector3(q[g.b].position.clone()),k=i.multiplyVector3(q[g.c].position.clone()),i=g instanceof THREE.Face4?i.multiplyVector3(q[g.d].position.clone()):null,l=a.matrixRotationWorld.multiplyVector3(g.normal.clone()),
 j=m.dot(l),a.doubleSided||(a.flipSided?j>0:j<0)))if(j=l.dot((new THREE.Vector3).sub(f,n))/j,n=n.addSelf(m.multiplyScalar(j)),g instanceof THREE.Face3)c(n,f,h,k)&&(g={distance:this.origin.distanceTo(n),point:n,face:g,object:a},w.push(g));else if(g instanceof THREE.Face4&&(c(n,f,h,i)||c(n,h,k,i)))g={distance:this.origin.distanceTo(n),point:n,face:g,object:a},w.push(g);w.sort(function(a,b){return a.distance-b.distance});return w}else return[]}};
 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,j){h=!1;b=f;c=g;d=l;e=j;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,j,n,m){h?(h=!1,b=f<l?f<n?f:n:l<n?l:n,c=g<j?g<m?g:m:j<m?j:m,d=f>l?f>n?f:n:l>n?l:n,e=g>j?g>m?g:m:j>m?j:m):(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<j?g<m?g<c?g:c:m<c?m:c:j<m?j<c?j:c:m<c?m: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>j?g>m?g>e?g:e:m>e?m:e:j>m?j>e?j:e:m>e?m: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>
@@ -56,7 +56,7 @@ THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){t
 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=a.n32-a.n23<0?-Math.abs(this.x):Math.abs(this.x);this.y=a.n13-a.n31<0?-Math.abs(this.y):Math.abs(this.y);this.z=a.n21-a.n12<0?-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);a==0?this.w=this.z=this.y=this.x=0:(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a);return this},multiplySelf:function(a){var b=
 this.x,c=this.y,d=this.z,e=this.w,g=a.x,f=a.y,h=a.z,a=a.w;this.x=b*a+e*g+c*h-d*f;this.y=c*a+e*f+d*g-b*h;this.z=d*a+e*h+b*f-c*g;this.w=e*a-b*g-c*f-d*h;return this},multiply:function(a,b){this.x=a.x*b.w+a.y*b.z-a.z*b.y+a.w*b.x;this.y=-a.x*b.z+a.y*b.w+a.z*b.x+a.w*b.y;this.z=a.x*b.y-a.y*b.x+a.z*b.w+a.w*b.z;this.w=-a.x*b.x-a.y*b.y-a.z*b.z+a.w*b.w;return this},multiplyVector3:function(a,b){b||(b=a);var c=a.x,d=a.y,e=a.z,g=this.x,f=this.y,h=this.z,k=this.w,i=k*c+f*e-h*d,l=k*d+h*c-g*e,j=k*e+g*d-f*c,c=-g*
-c-f*d-h*e;b.x=i*k+c*-g+l*-h-j*-f;b.y=l*k+c*-f+j*-g-i*-h;b.z=j*k+c*-h+i*-f-l*-g;return b}};THREE.Quaternion.slerp=function(a,b,c,d){var e=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;if(Math.abs(e)>=1)return c.w=a.w,c.x=a.x,c.y=a.y,c.z=a.z,c;var g=Math.acos(e),f=Math.sqrt(1-e*e);if(Math.abs(f)<0.0010)return c.w=0.5*(a.w+b.w),c.x=0.5*(a.x+b.x),c.y=0.5*(a.y+b.y),c.z=0.5*(a.z+b.z),c;e=Math.sin((1-d)*g)/f;d=Math.sin(d*g)/f;c.w=a.w*e+b.w*d;c.x=a.x*e+b.x*d;c.y=a.y*e+b.y*d;c.z=a.z*e+b.z*d;return c};
+c-f*d-h*e;b.x=i*k+c*-g+l*-h-j*-f;b.y=l*k+c*-f+j*-g-i*-h;b.z=j*k+c*-h+i*-f-l*-g;return b}};THREE.Quaternion.slerp=function(a,b,c,d){var e=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;if(Math.abs(e)>=1)return c.w=a.w,c.x=a.x,c.y=a.y,c.z=a.z,c;var g=Math.acos(e),f=Math.sqrt(1-e*e);if(Math.abs(f)<0.001)return c.w=0.5*(a.w+b.w),c.x=0.5*(a.x+b.x),c.y=0.5*(a.y+b.y),c.z=0.5*(a.z+b.z),c;e=Math.sin((1-d)*g)/f;d=Math.sin(d*g)/f;c.w=a.w*e+b.w*d;c.x=a.x*e+b.x*d;c.y=a.y*e+b.y*d;c.z=a.z*e+b.z*d;return c};
 THREE.Vertex=function(a){this.position=a||new THREE.Vector3};THREE.Face3=function(a,b,c,d,e,g){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materials=g instanceof Array?g:[g];this.centroid=new THREE.Vector3};
 THREE.Face4=function(a,b,c,d,e,g,f){this.a=a;this.b=b;this.c=c;this.d=d;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=g instanceof THREE.Color?g:new THREE.Color;this.vertexColors=g instanceof Array?g:[];this.vertexTangents=[];this.materials=f instanceof Array?f:[f];this.centroid=new THREE.Vector3};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};
 THREE.UV.prototype={constructor:THREE.UV,set:function(a,b){this.u=a;this.v=b;return this},copy:function(a){this.u=a.u;this.v=a.v;return this},clone:function(){return new THREE.UV(this.u,this.v)}};

+ 5 - 5
build/custom/ThreeWebGL.js

@@ -1,11 +1,11 @@
-// ThreeWebGL.js r43 - http://github.com/mrdoob/three.js
+// ThreeWebGL.js r44dev - http://github.com/mrdoob/three.js
 var THREE=THREE||{};if(!window.Int32Array)window.Int32Array=Array,window.Float32Array=Array;THREE.Color=function(b){b!==void 0&&this.setHex(b);return this};
 THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,copy:function(b){this.r=b.r;this.g=b.g;this.b=b.b;return this},setRGB:function(b,c,d){this.r=b;this.g=c;this.b=d;return this},setHSV:function(b,c,d){var e,h,g;if(d==0)this.r=this.g=this.b=0;else switch(e=Math.floor(b*6),h=b*6-e,b=d*(1-c),g=d*(1-c*h),c=d*(1-c*(1-h)),e){case 1:this.r=g;this.g=d;this.b=b;break;case 2:this.r=b;this.g=d;this.b=c;break;case 3:this.r=b;this.g=g;this.b=d;break;case 4:this.r=c;this.g=b;this.b=d;break;case 5:this.r=
 d;this.g=b;this.b=g;break;case 6:case 0:this.r=d,this.g=c,this.b=b}return this},setHex:function(b){b=Math.floor(b);this.r=(b>>16&255)/255;this.g=(b>>8&255)/255;this.b=(b&255)/255;return this},getHex:function(){return~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},getContextStyle:function(){return"rgb("+Math.floor(this.r*255)+","+Math.floor(this.g*255)+","+Math.floor(this.b*255)+")"},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};
 THREE.Vector2=function(b,c){this.x=b||0;this.y=c||0};
 THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(b,c){this.x=b;this.y=c;return this},copy:function(b){this.x=b.x;this.y=b.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},add:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;return this},addSelf:function(b){this.x+=b.x;this.y+=b.y;return this},sub:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;return this},subSelf:function(b){this.x-=b.x;this.y-=b.y;return this},multiplyScalar:function(b){this.x*=b;this.y*=b;return this},
 divideScalar:function(b){b?(this.x/=b,this.y/=b):this.set(0,0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(b){return this.x*b.x+this.y*b.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(b){return Math.sqrt(this.distanceToSquared(b))},distanceToSquared:function(b){var c=this.x-b.x,b=this.y-b.y;return c*c+b*b},setLength:function(b){return this.normalize().multiplyScalar(b)},
-unit:function(){return this.normalize()},equals:function(b){return b.x==this.x&&b.y==this.y}};THREE.Vector3=function(b,c,d){this.x=b||0;this.y=c||0;this.z=d||0};
+equals:function(b){return b.x==this.x&&b.y==this.y}};THREE.Vector3=function(b,c,d){this.x=b||0;this.y=c||0;this.z=d||0};
 THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(b,c,d){this.x=b;this.y=c;this.z=d;return this},copy:function(b){this.x=b.x;this.y=b.y;this.z=b.z;return this},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},add:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;this.z=b.z+c.z;return this},addSelf:function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z;return this},addScalar:function(b){this.x+=b;this.y+=b;this.z+=b;return this},sub:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;this.z=
 b.z-c.z;return this},subSelf:function(b){this.x-=b.x;this.y-=b.y;this.z-=b.z;return this},multiply:function(b,c){this.x=b.x*c.x;this.y=b.y*c.y;this.z=b.z*c.z;return this},multiplySelf:function(b){this.x*=b.x;this.y*=b.y;this.z*=b.z;return this},multiplyScalar:function(b){this.x*=b;this.y*=b;this.z*=b;return this},divideSelf:function(b){this.x/=b.x;this.y/=b.y;this.z/=b.z;return this},divideScalar:function(b){b?(this.x/=b,this.y/=b,this.z/=b):this.set(0,0,0);return this},negate:function(){return this.multiplyScalar(-1)},
 dot:function(b){return this.x*b.x+this.y*b.y+this.z*b.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.lengthSq())},lengthManhattan:function(){return this.x+this.y+this.z},normalize:function(){return this.divideScalar(this.length())},setLength:function(b){return this.normalize().multiplyScalar(b)},cross:function(b,c){this.x=b.y*c.z-b.z*c.y;this.y=b.z*c.x-b.x*c.z;this.z=b.x*c.y-b.y*c.x;return this},crossSelf:function(b){return this.set(this.y*
@@ -14,9 +14,9 @@ b.z-this.z*b.y,this.z*b.x-this.x*b.z,this.x*b.y-this.y*b.x)},distanceTo:function
 THREE.Vector4.prototype={constructor:THREE.Vector4,set:function(b,c,d,e){this.x=b;this.y=c;this.z=d;this.w=e;return this},copy:function(b){this.x=b.x;this.y=b.y;this.z=b.z;this.w=b.w||1},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},add:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;this.z=b.z+c.z;this.w=b.w+c.w;return this},addSelf:function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z;this.w+=b.w;return this},sub:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;this.z=b.z-c.z;this.w=
 b.w-c.w;return this},subSelf:function(b){this.x-=b.x;this.y-=b.y;this.z-=b.z;this.w-=b.w;return this},multiplyScalar:function(b){this.x*=b;this.y*=b;this.z*=b;this.w*=b;return this},divideScalar:function(b){b?(this.x/=b,this.y/=b,this.z/=b,this.w/=b):(this.z=this.y=this.x=0,this.w=1);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(b){return this.x*b.x+this.y*b.y+this.z*b.z+this.w*b.w},lengthSq:function(){return this.dot(this)},length:function(){return Math.sqrt(this.lengthSq())},
 normalize:function(){return this.divideScalar(this.length())},setLength:function(b){return this.normalize().multiplyScalar(b)},lerpSelf:function(b,c){this.x+=(b.x-this.x)*c;this.y+=(b.y-this.y)*c;this.z+=(b.z-this.z)*c;this.w+=(b.w-this.w)*c;return this}};THREE.Ray=function(b,c){this.origin=b||new THREE.Vector3;this.direction=c||new THREE.Vector3};
-THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(b){return this.intersectObjects(b.objects)},intersectObjects:function(b){var c,d,e=[];c=0;for(d=b.length;c<d;c++)e=e.concat(this.intersectObject(b[c]));e.sort(function(b,c){return b.distance-c.distance});return e},intersectObject:function(b){function c(b,c,d){var e;e=d.clone().subSelf(b).dot(c);if(e<0)return null;b=b.clone().addSelf(c.clone().multiplyScalar(e));return d.distanceTo(b)}function d(b,c,d,e){var e=e.clone().subSelf(c),
+THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(b){return this.intersectObjects(b.objects)},intersectObjects:function(b){var c,d,e=[];c=0;for(d=b.length;c<d;c++)e=e.concat(this.intersectObject(b[c]));e.sort(function(b,c){return b.distance-c.distance});return e},intersectObject:function(b){function c(b,c,d){var e;e=d.clone().subSelf(b).dot(c);if(e<=0)return null;b=b.clone().addSelf(c.clone().multiplyScalar(e));return d.distanceTo(b)}function d(b,c,d,e){var e=e.clone().subSelf(c),
 d=d.clone().subSelf(c),h=b.clone().subSelf(c),b=e.dot(e),c=e.dot(d),e=e.dot(h),g=d.dot(d),d=d.dot(h),h=1/(b*g-c*c),g=(g*e-c*d)*h,b=(b*d-c*e)*h;return g>0&&b>0&&g+b<1}if(b instanceof THREE.Particle){var e=c(this.origin,this.direction,b.matrixWorld.getPosition());if(e==null||e>b.scale.x)return[];return[{distance:e,point:b.position,face:null,object:b}]}else if(b instanceof THREE.Mesh){e=c(this.origin,this.direction,b.matrixWorld.getPosition());if(e==null||e>b.geometry.boundingSphere.radius*Math.max(b.scale.x,
-Math.max(b.scale.y,b.scale.z)))return[];var h,g,j,k,p,o,m,r,q,v,C=b.geometry,x=C.vertices,E=[],e=0;for(h=C.faces.length;e<h;e++)if(g=C.faces[e],q=this.origin.clone(),v=this.direction.clone(),o=b.matrixWorld,j=o.multiplyVector3(g.centroid.clone()).subSelf(q),r=j.dot(v),!(r<0)&&(j=o.multiplyVector3(x[g.a].position.clone()),k=o.multiplyVector3(x[g.b].position.clone()),p=o.multiplyVector3(x[g.c].position.clone()),o=g instanceof THREE.Face4?o.multiplyVector3(x[g.d].position.clone()):null,m=b.matrixRotationWorld.multiplyVector3(g.normal.clone()),
+Math.max(b.scale.y,b.scale.z)))return[];var h,g,j,k,p,o,m,r,q,v,C=b.geometry,x=C.vertices,E=[],e=0;for(h=C.faces.length;e<h;e++)if(g=C.faces[e],q=this.origin.clone(),v=this.direction.clone(),o=b.matrixWorld,j=o.multiplyVector3(g.centroid.clone()).subSelf(q),r=j.dot(v),!(r<=0)&&(j=o.multiplyVector3(x[g.a].position.clone()),k=o.multiplyVector3(x[g.b].position.clone()),p=o.multiplyVector3(x[g.c].position.clone()),o=g instanceof THREE.Face4?o.multiplyVector3(x[g.d].position.clone()):null,m=b.matrixRotationWorld.multiplyVector3(g.normal.clone()),
 r=v.dot(m),b.doubleSided||(b.flipSided?r>0:r<0)))if(r=m.dot((new THREE.Vector3).sub(j,q))/r,q=q.addSelf(v.multiplyScalar(r)),g instanceof THREE.Face3)d(q,j,k,p)&&(g={distance:this.origin.distanceTo(q),point:q,face:g,object:b},E.push(g));else if(g instanceof THREE.Face4&&(d(q,j,k,o)||d(q,k,p,o)))g={distance:this.origin.distanceTo(q),point:q,face:g,object:b},E.push(g);E.sort(function(b,c){return b.distance-c.distance});return E}else return[]}};
 THREE.Rectangle=function(){function b(){g=e-c;j=h-d}var c,d,e,h,g,j,k=!0;this.getX=function(){return c};this.getY=function(){return d};this.getWidth=function(){return g};this.getHeight=function(){return j};this.getLeft=function(){return c};this.getTop=function(){return d};this.getRight=function(){return e};this.getBottom=function(){return h};this.set=function(g,j,m,r){k=!1;c=g;d=j;e=m;h=r;b()};this.addPoint=function(g,j){k?(k=!1,c=g,d=j,e=g,h=j):(c=c<g?c:g,d=d<j?d:j,e=e>g?e:g,h=h>j?h:j);b()};this.add3Points=
 function(g,j,m,r,q,v){k?(k=!1,c=g<m?g<q?g:q:m<q?m:q,d=j<r?j<v?j:v:r<v?r:v,e=g>m?g>q?g:q:m>q?m:q,h=j>r?j>v?j:v:r>v?r:v):(c=g<m?g<q?g<c?g:c:q<c?q:c:m<q?m<c?m:c:q<c?q:c,d=j<r?j<v?j<d?j:d:v<d?v:d:r<v?r<d?r:d:v<d?v:d,e=g>m?g>q?g>e?g:e:q>e?q:e:m>q?m>e?m:e:q>e?q:e,h=j>r?j>v?j>h?j:h:v>h?v:h:r>v?r>h?r:h:v>h?v:h);b()};this.addRectangle=function(g){k?(k=!1,c=g.getLeft(),d=g.getTop(),e=g.getRight(),h=g.getBottom()):(c=c<g.getLeft()?c:g.getLeft(),d=d<g.getTop()?d:g.getTop(),e=e>g.getRight()?e:g.getRight(),h=h>
@@ -56,7 +56,7 @@ THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(b,c,d,e){t
 this.x=b.x*e;this.y=b.y*e;this.z=b.z*e;this.w=Math.cos(d);return this},setFromRotationMatrix:function(b){var c=Math.pow(b.determinant(),1/3);this.w=Math.sqrt(Math.max(0,c+b.n11+b.n22+b.n33))/2;this.x=Math.sqrt(Math.max(0,c+b.n11-b.n22-b.n33))/2;this.y=Math.sqrt(Math.max(0,c-b.n11+b.n22-b.n33))/2;this.z=Math.sqrt(Math.max(0,c-b.n11-b.n22+b.n33))/2;this.x=b.n32-b.n23<0?-Math.abs(this.x):Math.abs(this.x);this.y=b.n13-b.n31<0?-Math.abs(this.y):Math.abs(this.y);this.z=b.n21-b.n12<0?-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 b=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);b==0?this.w=this.z=this.y=this.x=0:(b=1/b,this.x*=b,this.y*=b,this.z*=b,this.w*=b);return this},multiplySelf:function(b){var c=
 this.x,d=this.y,e=this.z,h=this.w,g=b.x,j=b.y,k=b.z,b=b.w;this.x=c*b+h*g+d*k-e*j;this.y=d*b+h*j+e*g-c*k;this.z=e*b+h*k+c*j-d*g;this.w=h*b-c*g-d*j-e*k;return this},multiply:function(b,c){this.x=b.x*c.w+b.y*c.z-b.z*c.y+b.w*c.x;this.y=-b.x*c.z+b.y*c.w+b.z*c.x+b.w*c.y;this.z=b.x*c.y-b.y*c.x+b.z*c.w+b.w*c.z;this.w=-b.x*c.x-b.y*c.y-b.z*c.z+b.w*c.w;return this},multiplyVector3:function(b,c){c||(c=b);var d=b.x,e=b.y,h=b.z,g=this.x,j=this.y,k=this.z,p=this.w,o=p*d+j*h-k*e,m=p*e+k*d-g*h,r=p*h+g*e-j*d,d=-g*
-d-j*e-k*h;c.x=o*p+d*-g+m*-k-r*-j;c.y=m*p+d*-j+r*-g-o*-k;c.z=r*p+d*-k+o*-j-m*-g;return c}};THREE.Quaternion.slerp=function(b,c,d,e){var h=b.w*c.w+b.x*c.x+b.y*c.y+b.z*c.z;if(Math.abs(h)>=1)return d.w=b.w,d.x=b.x,d.y=b.y,d.z=b.z,d;var g=Math.acos(h),j=Math.sqrt(1-h*h);if(Math.abs(j)<0.0010)return d.w=0.5*(b.w+c.w),d.x=0.5*(b.x+c.x),d.y=0.5*(b.y+c.y),d.z=0.5*(b.z+c.z),d;h=Math.sin((1-e)*g)/j;e=Math.sin(e*g)/j;d.w=b.w*h+c.w*e;d.x=b.x*h+c.x*e;d.y=b.y*h+c.y*e;d.z=b.z*h+c.z*e;return d};
+d-j*e-k*h;c.x=o*p+d*-g+m*-k-r*-j;c.y=m*p+d*-j+r*-g-o*-k;c.z=r*p+d*-k+o*-j-m*-g;return c}};THREE.Quaternion.slerp=function(b,c,d,e){var h=b.w*c.w+b.x*c.x+b.y*c.y+b.z*c.z;if(Math.abs(h)>=1)return d.w=b.w,d.x=b.x,d.y=b.y,d.z=b.z,d;var g=Math.acos(h),j=Math.sqrt(1-h*h);if(Math.abs(j)<0.001)return d.w=0.5*(b.w+c.w),d.x=0.5*(b.x+c.x),d.y=0.5*(b.y+c.y),d.z=0.5*(b.z+c.z),d;h=Math.sin((1-e)*g)/j;e=Math.sin(e*g)/j;d.w=b.w*h+c.w*e;d.x=b.x*h+c.x*e;d.y=b.y*h+c.y*e;d.z=b.z*h+c.z*e;return d};
 THREE.Vertex=function(b){this.position=b||new THREE.Vector3};THREE.Face3=function(b,c,d,e,h,g){this.a=b;this.b=c;this.c=d;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=h instanceof THREE.Color?h:new THREE.Color;this.vertexColors=h instanceof Array?h:[];this.vertexTangents=[];this.materials=g instanceof Array?g:[g];this.centroid=new THREE.Vector3};
 THREE.Face4=function(b,c,d,e,h,g,j){this.a=b;this.b=c;this.c=d;this.d=e;this.normal=h instanceof THREE.Vector3?h:new THREE.Vector3;this.vertexNormals=h instanceof Array?h:[];this.color=g instanceof THREE.Color?g:new THREE.Color;this.vertexColors=g instanceof Array?g:[];this.vertexTangents=[];this.materials=j instanceof Array?j:[j];this.centroid=new THREE.Vector3};THREE.UV=function(b,c){this.u=b||0;this.v=c||0};
 THREE.UV.prototype={constructor:THREE.UV,set:function(b,c){this.u=b;this.v=c;return this},copy:function(b){this.u=b.u;this.v=b.v;return this},clone:function(){return new THREE.UV(this.u,this.v)}};

+ 8 - 21
examples/misc_lights_test.html

@@ -105,6 +105,12 @@
 
 				}
 
+				// Torus
+
+				mesh = new THREE.Mesh( new THREE.TorusGeometry( 100, 25, 15, 30 ), new THREE.MeshLambertMaterial( { color: 0xffffff } ) );
+				mesh.overdraw = true;
+				scene.addObject( mesh );
+
 				// Lights
 
 				var ambient = new THREE.AmbientLight( 0x101010 );
@@ -163,27 +169,8 @@
 				bcanvas.addEventListener("click", toggleCanvas, false);
 				bwebgl.addEventListener("click", toggleWebGL, false);
 
-
-				//var loader = new THREE.JSONLoader();
-				//loader.load( { model: "obj/torus/Torus_slim.js", callback: function( geometry ) { createMesh( geometry ) } } );
-				
-				var loader = new THREE.BinaryLoader();
-				loader.load( { model: "obj/torus/Torus_bin.js", callback: function( geometry ) { createMesh( geometry ) } } );
-
 			}
 
-			function createMesh( geometry ) {
-
-				zmesh = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: 0xffffff } ) );
-				zmesh.position.x = zmesh.position.y = zmesh.position.z = 0;
-				zmesh.scale.x = zmesh.scale.y = zmesh.scale.z = 100;
-				zmesh.overdraw = true;
-				zmesh.updateMatrix();
-				scene.addObject( zmesh );
-
-			}
-
-
 			function onDocumentMouseMove( event ) {
 
 				mouseX = ( event.clientX - windowHalfX );
@@ -215,7 +202,7 @@
 
 					if ( i%3 == 1 )
 
-						scene.objects[i].rotation.x += 0.05;
+						scene.objects[i].rotation.z += 0.05;
 
 					else if ( i%3 == 2 )
 
@@ -223,7 +210,7 @@
 
 					else if ( i%3 == 0 )
 
-						scene.objects[i].rotation.z += 0.05;
+						scene.objects[i].rotation.x += 0.05;
 
 				}
 

+ 0 - 3
examples/obj/torus/.htaccess

@@ -1,3 +0,0 @@
-<Files *.js>
-SetOutputFilter DEFLATE
-</Files>

+ 0 - 1
examples/obj/torus/Torus.mtl

@@ -1 +0,0 @@
-# Material Count: 0

+ 0 - 1406
examples/obj/torus/Torus.obj

@@ -1,1406 +0,0 @@
-# Blender v2.54 (sub 0) OBJ File: 'quit.blend'
-# www.blender.org
-mtllib Torus.mtl
-o Torus.001
-v 2.179167 -0.818439 -1.094899
-v 2.145673 -0.693439 -1.094899
-v 2.054167 -0.601933 -1.094899
-v 1.929167 -0.568439 -1.094899
-v 1.804167 -0.601933 -1.094899
-v 1.712660 -0.693439 -1.094899
-v 1.679167 -0.818439 -1.094899
-v 1.712660 -0.943439 -1.094899
-v 1.804167 -1.034945 -1.094899
-v 1.929167 -1.068439 -1.094899
-v 2.054167 -1.034945 -1.094899
-v 2.145673 -0.943439 -1.094899
-v 2.168473 -0.818439 -1.258056
-v 2.135266 -0.693439 -1.253685
-v 2.044542 -0.601933 -1.241741
-v 1.920612 -0.568439 -1.225425
-v 1.796681 -0.601933 -1.209109
-v 1.705957 -0.693439 -1.197165
-v 1.672750 -0.818439 -1.192793
-v 1.705957 -0.943439 -1.197165
-v 1.796681 -1.034945 -1.209109
-v 1.920612 -1.068439 -1.225425
-v 2.044542 -1.034945 -1.241741
-v 2.135266 -0.943439 -1.253685
-v 2.136574 -0.818439 -1.418422
-v 2.104222 -0.693439 -1.409754
-v 2.015833 -0.601933 -1.386070
-v 1.895092 -0.568439 -1.353718
-v 1.774352 -0.601933 -1.321365
-v 1.685963 -0.693439 -1.297682
-v 1.653611 -0.818439 -1.289013
-v 1.685963 -0.943439 -1.297682
-v 1.774352 -1.034945 -1.321365
-v 1.895092 -1.068439 -1.353718
-v 2.015833 -1.034945 -1.386070
-v 2.104222 -0.943439 -1.409754
-v 2.084016 -0.818439 -1.573253
-v 2.053072 -0.693439 -1.560436
-v 1.968531 -0.601933 -1.525418
-v 1.853046 -0.568439 -1.477582
-v 1.737561 -0.601933 -1.429747
-v 1.653020 -0.693439 -1.394729
-v 1.622076 -0.818439 -1.381911
-v 1.653020 -0.943439 -1.394729
-v 1.737561 -1.034945 -1.429747
-v 1.853046 -1.068439 -1.477582
-v 1.968531 -1.034945 -1.525418
-v 2.053072 -0.943439 -1.560436
-v 2.011698 -0.818439 -1.719899
-v 1.982692 -0.693439 -1.703152
-v 1.903445 -0.601933 -1.657399
-v 1.795192 -0.568439 -1.594899
-v 1.686939 -0.601933 -1.532399
-v 1.607692 -0.693439 -1.486646
-v 1.578686 -0.818439 -1.469899
-v 1.607692 -0.943439 -1.486645
-v 1.686939 -1.034945 -1.532399
-v 1.795192 -1.068439 -1.594899
-v 1.903445 -1.034945 -1.657399
-v 1.982692 -0.943439 -1.703152
-v 1.920858 -0.818439 -1.855850
-v 1.894286 -0.693439 -1.835461
-v 1.821689 -0.601933 -1.779755
-v 1.722520 -0.568439 -1.703660
-v 1.623351 -0.601933 -1.627565
-v 1.550754 -0.693439 -1.571859
-v 1.524182 -0.818439 -1.551470
-v 1.550754 -0.943439 -1.571859
-v 1.623351 -1.034945 -1.627565
-v 1.722520 -1.068439 -1.703660
-v 1.821689 -1.034945 -1.779755
-v 1.894286 -0.943439 -1.835461
-v 1.813050 -0.818439 -1.978782
-v 1.789366 -0.693439 -1.955099
-v 1.724662 -0.601933 -1.890394
-v 1.636273 -0.568439 -1.802006
-v 1.547885 -0.601933 -1.713617
-v 1.483180 -0.693439 -1.648912
-v 1.459497 -0.818439 -1.625229
-v 1.483180 -0.943439 -1.648912
-v 1.547885 -1.034945 -1.713617
-v 1.636273 -1.068439 -1.802006
-v 1.724662 -1.034945 -1.890394
-v 1.789366 -0.943439 -1.955099
-v 1.690118 -0.818439 -2.086590
-v 1.669729 -0.693439 -2.060018
-v 1.614023 -0.601933 -1.987421
-v 1.537928 -0.568439 -1.888252
-v 1.461833 -0.601933 -1.789083
-v 1.406127 -0.693439 -1.716486
-v 1.385738 -0.818439 -1.689914
-v 1.406127 -0.943439 -1.716486
-v 1.461833 -1.034945 -1.789083
-v 1.537928 -1.068439 -1.888252
-v 1.614023 -1.034945 -1.987421
-v 1.669729 -0.943439 -2.060018
-v 1.554167 -0.818439 -2.177430
-v 1.537420 -0.693439 -2.148424
-v 1.491667 -0.601933 -2.069177
-v 1.429167 -0.568439 -1.960924
-v 1.366667 -0.601933 -1.852671
-v 1.320913 -0.693439 -1.773424
-v 1.304167 -0.818439 -1.744418
-v 1.320913 -0.943439 -1.773424
-v 1.366667 -1.034945 -1.852671
-v 1.429167 -1.068439 -1.960924
-v 1.491667 -1.034945 -2.069177
-v 1.537420 -0.943439 -2.148424
-v 1.407521 -0.818439 -2.249748
-v 1.394704 -0.693439 -2.218804
-v 1.359685 -0.601933 -2.134263
-v 1.311850 -0.568439 -2.018778
-v 1.264015 -0.601933 -1.903293
-v 1.228997 -0.693439 -1.818752
-v 1.216179 -0.818439 -1.787808
-v 1.228997 -0.943439 -1.818752
-v 1.264015 -1.034945 -1.903293
-v 1.311850 -1.068439 -2.018778
-v 1.359685 -1.034945 -2.134263
-v 1.394704 -0.943439 -2.218804
-v 1.252690 -0.818439 -2.302306
-v 1.244022 -0.693439 -2.269954
-v 1.220338 -0.601933 -2.181565
-v 1.187986 -0.568439 -2.060825
-v 1.155633 -0.601933 -1.940084
-v 1.131950 -0.693439 -1.851695
-v 1.123281 -0.818439 -1.819343
-v 1.131950 -0.943439 -1.851695
-v 1.155633 -1.034945 -1.940084
-v 1.187986 -1.068439 -2.060824
-v 1.220338 -1.034945 -2.181565
-v 1.244022 -0.943439 -2.269953
-v 1.092324 -0.818439 -2.334205
-v 1.087953 -0.693439 -2.300998
-v 1.076009 -0.601933 -2.210274
-v 1.059693 -0.568439 -2.086344
-v 1.043377 -0.601933 -1.962413
-v 1.031433 -0.693439 -1.871689
-v 1.027061 -0.818439 -1.838482
-v 1.031433 -0.943439 -1.871689
-v 1.043377 -1.034945 -1.962413
-v 1.059693 -1.068439 -2.086344
-v 1.076009 -1.034945 -2.210274
-v 1.087953 -0.943439 -2.300998
-v 0.929167 -0.818439 -2.344899
-v 0.929167 -0.693439 -2.311405
-v 0.929167 -0.601933 -2.219899
-v 0.929167 -0.568439 -2.094899
-v 0.929167 -0.601933 -1.969899
-v 0.929167 -0.693439 -1.878392
-v 0.929167 -0.818439 -1.844899
-v 0.929167 -0.943439 -1.878392
-v 0.929167 -1.034945 -1.969899
-v 0.929167 -1.068439 -2.094899
-v 0.929167 -1.034945 -2.219898
-v 0.929167 -0.943439 -2.311405
-v 0.766009 -0.818439 -2.334205
-v 0.770381 -0.693439 -2.300998
-v 0.782325 -0.601933 -2.210274
-v 0.798640 -0.568439 -2.086344
-v 0.814956 -0.601933 -1.962413
-v 0.826900 -0.693439 -1.871689
-v 0.831272 -0.818439 -1.838482
-v 0.826900 -0.943439 -1.871689
-v 0.814956 -1.034945 -1.962413
-v 0.798640 -1.068439 -2.086344
-v 0.782325 -1.034945 -2.210274
-v 0.770381 -0.943439 -2.300998
-v 0.605643 -0.818439 -2.302306
-v 0.614312 -0.693439 -2.269954
-v 0.637995 -0.601933 -2.181565
-v 0.670348 -0.568439 -2.060825
-v 0.702700 -0.601933 -1.940084
-v 0.726384 -0.693439 -1.851695
-v 0.735052 -0.818439 -1.819343
-v 0.726384 -0.943439 -1.851695
-v 0.702700 -1.034945 -1.940084
-v 0.670348 -1.068439 -2.060824
-v 0.637995 -1.034945 -2.181565
-v 0.614312 -0.943439 -2.269953
-v 0.450812 -0.818439 -2.249748
-v 0.463630 -0.693439 -2.218804
-v 0.498648 -0.601933 -2.134263
-v 0.546483 -0.568439 -2.018778
-v 0.594319 -0.601933 -1.903293
-v 0.629337 -0.693439 -1.818752
-v 0.642154 -0.818439 -1.787808
-v 0.629337 -0.943439 -1.818752
-v 0.594319 -1.034945 -1.903293
-v 0.546483 -1.068439 -2.018778
-v 0.498648 -1.034945 -2.134263
-v 0.463630 -0.943439 -2.218804
-v 0.304167 -0.818439 -2.177430
-v 0.320913 -0.693439 -2.148424
-v 0.366667 -0.601933 -2.069177
-v 0.429167 -0.568439 -1.960924
-v 0.491667 -0.601933 -1.852671
-v 0.537420 -0.693439 -1.773424
-v 0.554167 -0.818439 -1.744418
-v 0.537420 -0.943439 -1.773424
-v 0.491667 -1.034945 -1.852671
-v 0.429167 -1.068439 -1.960924
-v 0.366667 -1.034945 -2.069177
-v 0.320913 -0.943439 -2.148424
-v 0.168215 -0.818439 -2.086590
-v 0.188604 -0.693439 -2.060018
-v 0.244310 -0.601933 -1.987421
-v 0.320405 -0.568439 -1.888252
-v 0.396500 -0.601933 -1.789083
-v 0.452206 -0.693439 -1.716486
-v 0.472596 -0.818439 -1.689914
-v 0.452206 -0.943439 -1.716486
-v 0.396500 -1.034945 -1.789083
-v 0.320405 -1.068439 -1.888252
-v 0.244310 -1.034945 -1.987421
-v 0.188604 -0.943439 -2.060018
-v 0.045283 -0.818439 -1.978782
-v 0.068967 -0.693439 -1.955099
-v 0.133672 -0.601933 -1.890394
-v 0.222060 -0.568439 -1.802006
-v 0.310448 -0.601933 -1.713617
-v 0.375153 -0.693439 -1.648912
-v 0.398837 -0.818439 -1.625229
-v 0.375153 -0.943439 -1.648912
-v 0.310448 -1.034945 -1.713617
-v 0.222060 -1.068439 -1.802005
-v 0.133672 -1.034945 -1.890394
-v 0.068967 -0.943439 -1.955099
-v -0.062525 -0.818439 -1.855850
-v -0.035953 -0.693439 -1.835461
-v 0.036644 -0.601933 -1.779755
-v 0.135813 -0.568439 -1.703660
-v 0.234982 -0.601933 -1.627565
-v 0.307579 -0.693439 -1.571859
-v 0.334152 -0.818439 -1.551470
-v 0.307579 -0.943439 -1.571859
-v 0.234982 -1.034945 -1.627565
-v 0.135813 -1.068439 -1.703660
-v 0.036644 -1.034945 -1.779755
-v -0.035953 -0.943439 -1.835461
-v -0.153365 -0.818439 -1.719899
-v -0.124359 -0.693439 -1.703152
-v -0.045112 -0.601933 -1.657399
-v 0.063141 -0.568439 -1.594899
-v 0.171394 -0.601933 -1.532399
-v 0.250641 -0.693439 -1.486646
-v 0.279648 -0.818439 -1.469899
-v 0.250641 -0.943439 -1.486646
-v 0.171394 -1.034945 -1.532399
-v 0.063141 -1.068439 -1.594899
-v -0.045112 -1.034945 -1.657399
-v -0.124359 -0.943439 -1.703152
-v -0.225683 -0.818439 -1.573253
-v -0.194739 -0.693439 -1.560436
-v -0.110198 -0.601933 -1.525418
-v 0.005287 -0.568439 -1.477582
-v 0.120772 -0.601933 -1.429747
-v 0.205313 -0.693439 -1.394729
-v 0.236257 -0.818439 -1.381911
-v 0.205313 -0.943439 -1.394729
-v 0.120772 -1.034945 -1.429747
-v 0.005287 -1.068439 -1.477582
-v -0.110198 -1.034945 -1.525418
-v -0.194739 -0.943439 -1.560436
-v -0.278240 -0.818439 -1.418423
-v -0.245888 -0.693439 -1.409754
-v -0.157500 -0.601933 -1.386070
-v -0.036759 -0.568439 -1.353718
-v 0.083982 -0.601933 -1.321365
-v 0.172370 -0.693439 -1.297682
-v 0.204722 -0.818439 -1.289013
-v 0.172370 -0.943439 -1.297682
-v 0.083982 -1.034945 -1.321365
-v -0.036759 -1.068439 -1.353718
-v -0.157500 -1.034945 -1.386070
-v -0.245888 -0.943439 -1.409754
-v -0.310139 -0.818439 -1.258056
-v -0.276932 -0.693439 -1.253685
-v -0.186209 -0.601933 -1.241741
-v -0.062278 -0.568439 -1.225425
-v 0.061652 -0.601933 -1.209109
-v 0.152376 -0.693439 -1.197165
-v 0.185583 -0.818439 -1.192793
-v 0.152376 -0.943439 -1.197165
-v 0.061652 -1.034945 -1.209109
-v -0.062278 -1.068439 -1.225425
-v -0.186209 -1.034945 -1.241741
-v -0.276932 -0.943439 -1.253685
-v -0.320833 -0.818439 -1.094899
-v -0.287340 -0.693439 -1.094899
-v -0.195833 -0.601933 -1.094899
-v -0.070833 -0.568439 -1.094899
-v 0.054167 -0.601933 -1.094899
-v 0.145673 -0.693439 -1.094899
-v 0.179167 -0.818439 -1.094899
-v 0.145673 -0.943439 -1.094899
-v 0.054167 -1.034945 -1.094899
-v -0.070833 -1.068439 -1.094899
-v -0.195833 -1.034945 -1.094899
-v -0.287340 -0.943439 -1.094899
-v -0.310139 -0.818439 -0.931741
-v -0.276932 -0.693439 -0.936113
-v -0.186209 -0.601933 -0.948057
-v -0.062278 -0.568439 -0.964372
-v 0.061652 -0.601933 -0.980688
-v 0.152376 -0.693439 -0.992632
-v 0.185583 -0.818439 -0.997004
-v 0.152376 -0.943439 -0.992632
-v 0.061652 -1.034945 -0.980688
-v -0.062278 -1.068439 -0.964372
-v -0.186209 -1.034945 -0.948057
-v -0.276932 -0.943439 -0.936113
-v -0.278241 -0.818439 -0.771375
-v -0.245888 -0.693439 -0.780044
-v -0.157500 -0.601933 -0.803727
-v -0.036759 -0.568439 -0.836080
-v 0.083982 -0.601933 -0.868432
-v 0.172370 -0.693439 -0.892116
-v 0.204722 -0.818439 -0.900784
-v 0.172370 -0.943439 -0.892116
-v 0.083982 -1.034945 -0.868432
-v -0.036759 -1.068439 -0.836080
-v -0.157500 -1.034945 -0.803727
-v -0.245888 -0.943439 -0.780044
-v -0.225683 -0.818439 -0.616544
-v -0.194739 -0.693439 -0.629362
-v -0.110198 -0.601933 -0.664380
-v 0.005287 -0.568439 -0.712215
-v 0.120772 -0.601933 -0.760051
-v 0.205313 -0.693439 -0.795069
-v 0.236257 -0.818439 -0.807886
-v 0.205313 -0.943439 -0.795069
-v 0.120772 -1.034945 -0.760051
-v 0.005287 -1.068439 -0.712215
-v -0.110198 -1.034945 -0.664380
-v -0.194739 -0.943439 -0.629362
-v -0.153365 -0.818439 -0.469899
-v -0.124359 -0.693439 -0.486646
-v -0.045112 -0.601933 -0.532399
-v 0.063141 -0.568439 -0.594899
-v 0.171394 -0.601933 -0.657399
-v 0.250641 -0.693439 -0.703152
-v 0.279648 -0.818439 -0.719899
-v 0.250641 -0.943439 -0.703152
-v 0.171394 -1.034945 -0.657399
-v 0.063141 -1.068439 -0.594899
-v -0.045112 -1.034945 -0.532399
-v -0.124359 -0.943439 -0.486646
-v -0.062525 -0.818439 -0.333947
-v -0.035953 -0.693439 -0.354337
-v 0.036644 -0.601933 -0.410042
-v 0.135813 -0.568439 -0.486137
-v 0.234982 -0.601933 -0.562232
-v 0.307579 -0.693439 -0.617938
-v 0.334152 -0.818439 -0.638328
-v 0.307579 -0.943439 -0.617938
-v 0.234982 -1.034945 -0.562232
-v 0.135813 -1.068439 -0.486137
-v 0.036644 -1.034945 -0.410042
-v -0.035953 -0.943439 -0.354337
-v 0.045283 -0.818439 -0.211015
-v 0.068967 -0.693439 -0.234699
-v 0.133671 -0.601932 -0.299404
-v 0.222060 -0.568439 -0.387792
-v 0.310448 -0.601933 -0.476180
-v 0.375153 -0.693439 -0.540885
-v 0.398837 -0.818439 -0.564569
-v 0.375153 -0.943439 -0.540885
-v 0.310448 -1.034945 -0.476180
-v 0.222060 -1.068439 -0.387792
-v 0.133671 -1.034945 -0.299404
-v 0.068967 -0.943439 -0.234699
-v 0.168215 -0.818439 -0.103207
-v 0.188604 -0.693439 -0.129779
-v 0.244310 -0.601933 -0.202376
-v 0.320405 -0.568439 -0.301545
-v 0.396500 -0.601933 -0.400715
-v 0.452206 -0.693439 -0.473311
-v 0.472596 -0.818439 -0.499884
-v 0.452206 -0.943439 -0.473311
-v 0.396500 -1.034945 -0.400715
-v 0.320405 -1.068439 -0.301545
-v 0.244310 -1.034945 -0.202376
-v 0.188604 -0.943439 -0.129779
-v 0.304167 -0.818439 -0.012367
-v 0.320914 -0.693439 -0.041373
-v 0.366667 -0.601932 -0.120620
-v 0.429167 -0.568439 -0.228873
-v 0.491667 -0.601932 -0.337126
-v 0.537420 -0.693439 -0.416373
-v 0.554167 -0.818439 -0.445380
-v 0.537420 -0.943439 -0.416373
-v 0.491667 -1.034945 -0.337126
-v 0.429167 -1.068439 -0.228873
-v 0.366667 -1.034945 -0.120620
-v 0.320914 -0.943439 -0.041373
-v 0.450812 -0.818439 0.059951
-v 0.463630 -0.693439 0.029007
-v 0.498648 -0.601932 -0.055534
-v 0.546483 -0.568439 -0.171019
-v 0.594319 -0.601933 -0.286504
-v 0.629337 -0.693439 -0.371045
-v 0.642154 -0.818439 -0.401989
-v 0.629337 -0.943439 -0.371045
-v 0.594319 -1.034945 -0.286504
-v 0.546483 -1.068439 -0.171019
-v 0.498648 -1.034945 -0.055534
-v 0.463630 -0.943439 0.029007
-v 0.605643 -0.818439 0.112509
-v 0.614312 -0.693439 0.080156
-v 0.637995 -0.601933 -0.008232
-v 0.670348 -0.568439 -0.128973
-v 0.702700 -0.601933 -0.249714
-v 0.726384 -0.693439 -0.338102
-v 0.735052 -0.818439 -0.370454
-v 0.726384 -0.943439 -0.338102
-v 0.702700 -1.034945 -0.249714
-v 0.670348 -1.068439 -0.128973
-v 0.637995 -1.034945 -0.008232
-v 0.614312 -0.943439 0.080156
-v 0.766009 -0.818439 0.144407
-v 0.770380 -0.693439 0.111200
-v 0.782324 -0.601932 0.020477
-v 0.798640 -0.568439 -0.103454
-v 0.814956 -0.601932 -0.227384
-v 0.826900 -0.693439 -0.318108
-v 0.831272 -0.818439 -0.351315
-v 0.826900 -0.943439 -0.318108
-v 0.814956 -1.034945 -0.227384
-v 0.798640 -1.068439 -0.103454
-v 0.782324 -1.034945 0.020477
-v 0.770380 -0.943439 0.111200
-v 0.929167 -0.818439 0.155101
-v 0.929167 -0.693439 0.121608
-v 0.929167 -0.601933 0.030101
-v 0.929167 -0.568439 -0.094899
-v 0.929167 -0.601933 -0.219899
-v 0.929167 -0.693439 -0.311405
-v 0.929167 -0.818439 -0.344899
-v 0.929167 -0.943439 -0.311405
-v 0.929167 -1.034945 -0.219899
-v 0.929167 -1.068439 -0.094899
-v 0.929167 -1.034945 0.030101
-v 0.929167 -0.943439 0.121608
-v 1.092325 -0.818439 0.144407
-v 1.087953 -0.693439 0.111200
-v 1.076009 -0.601932 0.020477
-v 1.059693 -0.568439 -0.103454
-v 1.043377 -0.601932 -0.227384
-v 1.031433 -0.693439 -0.318108
-v 1.027061 -0.818439 -0.351315
-v 1.031433 -0.943439 -0.318108
-v 1.043377 -1.034945 -0.227384
-v 1.059693 -1.068439 -0.103454
-v 1.076009 -1.034945 0.020477
-v 1.087953 -0.943439 0.111200
-v 1.252690 -0.818439 0.112509
-v 1.244022 -0.693439 0.080156
-v 1.220338 -0.601933 -0.008232
-v 1.187986 -0.568439 -0.128973
-v 1.155633 -0.601933 -0.249714
-v 1.131950 -0.693439 -0.338102
-v 1.123281 -0.818439 -0.370454
-v 1.131950 -0.943439 -0.338102
-v 1.155633 -1.034945 -0.249714
-v 1.187986 -1.068439 -0.128973
-v 1.220338 -1.034945 -0.008232
-v 1.244022 -0.943439 0.080156
-v 1.407521 -0.818439 0.059951
-v 1.394704 -0.693439 0.029007
-v 1.359686 -0.601932 -0.055534
-v 1.311850 -0.568439 -0.171019
-v 1.264015 -0.601933 -0.286504
-v 1.228997 -0.693439 -0.371045
-v 1.216179 -0.818439 -0.401989
-v 1.228997 -0.943439 -0.371045
-v 1.264015 -1.034945 -0.286504
-v 1.311850 -1.068439 -0.171019
-v 1.359686 -1.034945 -0.055534
-v 1.394704 -0.943439 0.029007
-v 1.554167 -0.818439 -0.012367
-v 1.537420 -0.693439 -0.041373
-v 1.491667 -0.601932 -0.120620
-v 1.429167 -0.568439 -0.228873
-v 1.366667 -0.601932 -0.337126
-v 1.320913 -0.693439 -0.416373
-v 1.304167 -0.818439 -0.445380
-v 1.320913 -0.943439 -0.416373
-v 1.366667 -1.034945 -0.337126
-v 1.429167 -1.068439 -0.228873
-v 1.491667 -1.034945 -0.120620
-v 1.537420 -0.943439 -0.041373
-v 1.690119 -0.818439 -0.103207
-v 1.669729 -0.693439 -0.129779
-v 1.614023 -0.601933 -0.202376
-v 1.537928 -0.568439 -0.301545
-v 1.461833 -0.601933 -0.400715
-v 1.406127 -0.693439 -0.473311
-v 1.385738 -0.818439 -0.499884
-v 1.406127 -0.943439 -0.473311
-v 1.461833 -1.034945 -0.400715
-v 1.537928 -1.068439 -0.301545
-v 1.614023 -1.034945 -0.202376
-v 1.669729 -0.943439 -0.129779
-v 1.813050 -0.818439 -0.211015
-v 1.789366 -0.693439 -0.234699
-v 1.724662 -0.601933 -0.299403
-v 1.636273 -0.568439 -0.387792
-v 1.547885 -0.601933 -0.476180
-v 1.483180 -0.693439 -0.540885
-v 1.459497 -0.818439 -0.564569
-v 1.483180 -0.943439 -0.540885
-v 1.547885 -1.034945 -0.476180
-v 1.636273 -1.068439 -0.387792
-v 1.724662 -1.034945 -0.299403
-v 1.789366 -0.943439 -0.234699
-v 1.920858 -0.818439 -0.333947
-v 1.894286 -0.693439 -0.354337
-v 1.821689 -0.601932 -0.410042
-v 1.722520 -0.568439 -0.486137
-v 1.623351 -0.601933 -0.562232
-v 1.550754 -0.693439 -0.617938
-v 1.524182 -0.818439 -0.638328
-v 1.550754 -0.943439 -0.617938
-v 1.623351 -1.034945 -0.562232
-v 1.722520 -1.068439 -0.486137
-v 1.821689 -1.034945 -0.410042
-v 1.894286 -0.943439 -0.354337
-v 2.011698 -0.818439 -0.469899
-v 1.982692 -0.693439 -0.486645
-v 1.903445 -0.601933 -0.532399
-v 1.795192 -0.568439 -0.594899
-v 1.686939 -0.601933 -0.657399
-v 1.607692 -0.693439 -0.703152
-v 1.578686 -0.818439 -0.719899
-v 1.607692 -0.943439 -0.703152
-v 1.686939 -1.034945 -0.657399
-v 1.795192 -1.068439 -0.594899
-v 1.903445 -1.034945 -0.532399
-v 1.982692 -0.943439 -0.486645
-v 2.084016 -0.818439 -0.616544
-v 2.053072 -0.693439 -0.629362
-v 1.968531 -0.601933 -0.664380
-v 1.853046 -0.568439 -0.712215
-v 1.737561 -0.601933 -0.760051
-v 1.653020 -0.693439 -0.795069
-v 1.622076 -0.818439 -0.807886
-v 1.653020 -0.943439 -0.795069
-v 1.737561 -1.034945 -0.760051
-v 1.853046 -1.068439 -0.712215
-v 1.968531 -1.034945 -0.664380
-v 2.053072 -0.943439 -0.629362
-v 2.136574 -0.818439 -0.771375
-v 2.104222 -0.693439 -0.780044
-v 2.015833 -0.601933 -0.803728
-v 1.895093 -0.568439 -0.836080
-v 1.774352 -0.601933 -0.868432
-v 1.685963 -0.693439 -0.892116
-v 1.653611 -0.818439 -0.900785
-v 1.685963 -0.943439 -0.892116
-v 1.774352 -1.034945 -0.868432
-v 1.895093 -1.068439 -0.836080
-v 2.015833 -1.034945 -0.803728
-v 2.104222 -0.943439 -0.780044
-v 2.168473 -0.818439 -0.931741
-v 2.135266 -0.693439 -0.936113
-v 2.044542 -0.601933 -0.948057
-v 1.920612 -0.568439 -0.964372
-v 1.796681 -0.601933 -0.980688
-v 1.705957 -0.693439 -0.992632
-v 1.672750 -0.818439 -0.997004
-v 1.705957 -0.943439 -0.992632
-v 1.796681 -1.034945 -0.980688
-v 1.920612 -1.068439 -0.964372
-v 2.044542 -1.034945 -0.948057
-v 2.135266 -0.943439 -0.936113
-vn 1.000000 0.000000 0.000000
-vn 0.991424 0.000000 -0.130497
-vn 0.858547 0.500107 -0.113010
-vn 0.865963 0.500107 0.000000
-vn 0.495590 0.866085 -0.065249
-vn 0.499863 0.866085 0.000000
-vn 0.000000 1.000000 0.000000
-vn -0.495590 0.866085 0.065249
-vn -0.499863 0.866085 0.000000
-vn -0.858547 0.500107 0.113010
-vn -0.865963 0.500107 0.000000
-vn -0.991424 0.000000 0.130497
-vn -0.999969 0.000000 0.000000
-vn -0.858547 -0.500107 0.113010
-vn -0.865963 -0.500107 0.000000
-vn -0.495590 -0.866085 0.065249
-vn -0.499863 -0.866085 0.000000
-vn 0.000000 -1.000000 0.000000
-vn 0.495590 -0.866085 -0.065249
-vn 0.499863 -0.866085 0.000000
-vn 0.858547 -0.500107 -0.113010
-vn 0.865963 -0.500107 0.000000
-vn 0.965911 0.000000 -0.258797
-vn 0.836451 0.500107 -0.224128
-vn 0.482833 0.866085 -0.129368
-vn -0.482833 0.866085 0.129368
-vn -0.836451 0.500107 0.224097
-vn -0.965911 0.000000 0.258797
-vn -0.836451 -0.500107 0.224128
-vn -0.482833 -0.866085 0.129368
-vn 0.482833 -0.866085 -0.129368
-vn 0.836451 -0.500107 -0.224128
-vn 0.923856 0.000000 -0.382672
-vn 0.800043 0.500107 -0.331370
-vn 0.461837 0.866085 -0.191290
-vn -0.461837 0.866085 0.191290
-vn -0.800043 0.500107 0.331370
-vn -0.923856 0.000000 0.382672
-vn -0.800043 -0.500107 0.331370
-vn -0.461837 -0.866085 0.191290
-vn 0.461837 -0.866085 -0.191290
-vn 0.800043 -0.500107 -0.331370
-vn 0.866024 0.000000 -0.499985
-vn 0.749931 0.500107 -0.432966
-vn 0.432905 0.866085 -0.249916
-vn -0.432905 0.866085 0.249916
-vn -0.749931 0.500107 0.432966
-vn -0.866024 0.000000 0.499985
-vn -0.749931 -0.500107 0.432966
-vn -0.432905 -0.866085 0.249916
-vn 0.432905 -0.866085 -0.249916
-vn 0.749931 -0.500107 -0.432966
-vn 0.793329 0.000000 -0.608753
-vn 0.687002 0.500107 -0.527146
-vn 0.396588 0.866085 -0.304300
-vn -0.396588 0.866085 0.304300
-vn -0.687002 0.500107 0.527146
-vn -0.793329 0.000000 0.608753
-vn -0.687002 -0.500107 0.527146
-vn -0.396588 -0.866085 0.304300
-vn 0.396588 -0.866085 -0.304300
-vn 0.687002 -0.500107 -0.527146
-vn 0.707083 0.000000 -0.707083
-vn 0.612323 0.500107 -0.612323
-vn 0.353465 0.866085 -0.353465
-vn -0.353465 0.866085 0.353465
-vn -0.612323 0.500107 0.612323
-vn -0.707083 0.000000 0.707083
-vn -0.612323 -0.500107 0.612323
-vn -0.353465 -0.866085 0.353465
-vn 0.353465 -0.866085 -0.353465
-vn 0.612323 -0.500107 -0.612323
-vn 0.608753 0.000000 -0.793329
-vn 0.527146 0.500107 -0.687002
-vn 0.304300 0.866085 -0.396588
-vn -0.304300 0.866085 0.396588
-vn -0.527146 0.500107 0.687002
-vn -0.608753 0.000000 0.793329
-vn -0.527146 -0.500107 0.687002
-vn -0.304300 -0.866085 0.396588
-vn 0.304300 -0.866085 -0.396588
-vn 0.527146 -0.500107 -0.687002
-vn 0.499985 0.000000 -0.866024
-vn 0.432966 0.500107 -0.749931
-vn 0.249916 0.866085 -0.432905
-vn -0.249916 0.866085 0.432905
-vn -0.432966 0.500107 0.749931
-vn -0.499985 0.000000 0.866024
-vn -0.432966 -0.500107 0.749931
-vn -0.249916 -0.866085 0.432905
-vn 0.249916 -0.866085 -0.432905
-vn 0.432966 -0.500107 -0.749931
-vn 0.382672 0.000000 -0.923856
-vn 0.331370 0.500107 -0.800043
-vn 0.191290 0.866085 -0.461837
-vn -0.191290 0.866085 0.461837
-vn -0.331370 0.500107 0.800043
-vn -0.382672 0.000000 0.923856
-vn -0.331370 -0.500107 0.800043
-vn -0.191290 -0.866085 0.461837
-vn 0.191290 -0.866085 -0.461837
-vn 0.331370 -0.500107 -0.800043
-vn 0.258797 0.000000 -0.965911
-vn 0.224097 0.500107 -0.836451
-vn 0.129368 0.866085 -0.482833
-vn -0.129368 0.866085 0.482833
-vn -0.224097 0.500107 0.836451
-vn -0.258797 0.000000 0.965911
-vn -0.224128 -0.500107 0.836451
-vn -0.129368 -0.866085 0.482833
-vn 0.129368 -0.866085 -0.482833
-vn 0.224097 -0.500107 -0.836451
-vn 0.130497 0.000000 -0.991424
-vn 0.113010 0.500107 -0.858547
-vn 0.065249 0.866085 -0.495590
-vn -0.065249 0.866085 0.495590
-vn -0.113010 0.500107 0.858547
-vn -0.130497 0.000000 0.991424
-vn -0.113010 -0.500107 0.858547
-vn -0.065249 -0.866085 0.495590
-vn 0.065249 -0.866085 -0.495590
-vn 0.113010 -0.500107 -0.858547
-vn 0.000000 0.000000 -1.000000
-vn 0.000000 0.500107 -0.865963
-vn 0.000000 0.866085 -0.499863
-vn 0.000000 0.866085 0.499863
-vn 0.000000 0.500107 0.865963
-vn 0.000000 0.000000 1.000000
-vn 0.000000 -0.500107 0.865963
-vn 0.000000 -0.866085 0.499863
-vn 0.000000 -0.866085 -0.499863
-vn 0.000000 -0.500107 -0.865963
-vn -0.130497 0.000000 -0.991424
-vn -0.113010 0.500107 -0.858547
-vn -0.065249 0.866085 -0.495590
-vn 0.065249 0.866085 0.495590
-vn 0.113010 0.500107 0.858547
-vn 0.130497 0.000000 0.991424
-vn 0.113010 -0.500107 0.858547
-vn 0.065249 -0.866085 0.495590
-vn -0.065249 -0.866085 -0.495590
-vn -0.113010 -0.500107 -0.858547
-vn -0.258797 0.000000 -0.965911
-vn -0.224097 0.500107 -0.836451
-vn -0.129368 0.866085 -0.482833
-vn 0.129368 0.866085 0.482833
-vn 0.224097 0.500107 0.836451
-vn 0.258797 0.000000 0.965911
-vn 0.224097 -0.500107 0.836451
-vn 0.129368 -0.866085 0.482833
-vn -0.129368 -0.866085 -0.482833
-vn -0.224097 -0.500107 -0.836451
-vn -0.382672 0.000000 -0.923856
-vn -0.331370 0.500107 -0.800043
-vn -0.191290 0.866085 -0.461837
-vn 0.191290 0.866085 0.461837
-vn 0.331370 0.500107 0.800043
-vn 0.382672 0.000000 0.923856
-vn 0.331370 -0.500107 0.800043
-vn 0.191290 -0.866085 0.461837
-vn -0.191290 -0.866085 -0.461837
-vn -0.331370 -0.500107 -0.800043
-vn -0.499985 0.000000 -0.866024
-vn -0.432966 0.500107 -0.749931
-vn -0.249916 0.866085 -0.432905
-vn 0.249916 0.866085 0.432905
-vn 0.432966 0.500107 0.749931
-vn 0.499985 0.000000 0.866024
-vn 0.432966 -0.500107 0.749931
-vn 0.249916 -0.866085 0.432905
-vn -0.249916 -0.866085 -0.432905
-vn -0.432966 -0.500107 -0.749931
-vn -0.608753 0.000000 -0.793329
-vn -0.527146 0.500107 -0.687002
-vn -0.304300 0.866085 -0.396588
-vn 0.304300 0.866085 0.396588
-vn 0.527146 0.500107 0.687002
-vn 0.608753 0.000000 0.793329
-vn 0.527146 -0.500107 0.687002
-vn 0.304300 -0.866085 0.396588
-vn -0.304300 -0.866085 -0.396588
-vn -0.527146 -0.500107 -0.687002
-vn -0.707083 0.000000 -0.707083
-vn -0.612323 0.500107 -0.612323
-vn -0.353465 0.866085 -0.353465
-vn 0.353465 0.866085 0.353465
-vn 0.612323 0.500107 0.612323
-vn 0.707083 0.000000 0.707083
-vn 0.612323 -0.500107 0.612323
-vn 0.353465 -0.866085 0.353465
-vn -0.353465 -0.866085 -0.353465
-vn -0.612323 -0.500107 -0.612323
-vn -0.793329 0.000000 -0.608753
-vn -0.687002 0.500107 -0.527146
-vn -0.396588 0.866085 -0.304300
-vn 0.396588 0.866085 0.304300
-vn 0.687002 0.500107 0.527146
-vn 0.793329 0.000000 0.608753
-vn 0.687002 -0.500107 0.527146
-vn 0.396588 -0.866085 0.304300
-vn -0.396588 -0.866085 -0.304300
-vn -0.687002 -0.500107 -0.527146
-vn -0.866024 0.000000 -0.499985
-vn -0.749931 0.500107 -0.432966
-vn -0.432905 0.866085 -0.249916
-vn 0.432905 0.866085 0.249916
-vn 0.749931 0.500107 0.432966
-vn 0.866024 0.000000 0.499985
-vn 0.749931 -0.500107 0.432966
-vn 0.432905 -0.866085 0.249916
-vn -0.432905 -0.866085 -0.249916
-vn -0.749931 -0.500107 -0.432966
-vn -0.923856 0.000000 -0.382672
-vn -0.800043 0.500107 -0.331370
-vn -0.461837 0.866085 -0.191290
-vn 0.461837 0.866085 0.191290
-vn 0.800043 0.500107 0.331370
-vn 0.923856 0.000000 0.382672
-vn 0.800043 -0.500107 0.331370
-vn 0.461837 -0.866085 0.191290
-vn -0.461837 -0.866085 -0.191290
-vn -0.800043 -0.500107 -0.331370
-vn -0.965911 0.000000 -0.258797
-vn -0.836451 0.500107 -0.224128
-vn -0.482833 0.866085 -0.129368
-vn 0.482833 0.866085 0.129368
-vn 0.836451 0.500107 0.224128
-vn 0.965911 0.000000 0.258797
-vn 0.836451 -0.500107 0.224128
-vn 0.482833 -0.866085 0.129368
-vn -0.482833 -0.866085 -0.129368
-vn -0.836451 -0.500107 -0.224128
-vn -0.991424 0.000000 -0.130497
-vn -0.858547 0.500107 -0.113010
-vn -0.495590 0.866085 -0.065249
-vn 0.495590 0.866085 0.065249
-vn 0.858547 0.500107 0.113010
-vn 0.991424 0.000000 0.130497
-vn 0.858547 -0.500107 0.113010
-vn 0.495590 -0.866085 0.065249
-vn -0.495590 -0.866085 -0.065249
-vn -0.858547 -0.500107 -0.113010
-vn -1.000000 0.000000 0.000000
-vn -0.836451 0.500107 0.224128
-vn -0.224097 -0.500107 0.836451
-vn 0.000000 0.000000 -0.999969
-vn -0.836451 0.500107 -0.224097
-g Torus.001_Torus.001
-usemtl (null)
-s 1
-f 1//1 13//2 14//3 2//4
-f 2//4 14//3 15//5 3//6
-f 3//6 15//5 16//7 4//7
-f 4//7 16//7 17//8 5//9
-f 5//9 17//8 18//10 6//11
-f 6//11 18//10 19//12 7//13
-f 7//13 19//12 20//14 8//15
-f 8//15 20//14 21//16 9//17
-f 9//17 21//16 22//18 10//18
-f 10//18 22//18 23//19 11//20
-f 11//20 23//19 24//21 12//22
-f 1//1 12//22 24//21 13//2
-f 13//2 25//23 26//24 14//3
-f 14//3 26//24 27//25 15//5
-f 15//5 27//25 28//7 16//7
-f 16//7 28//7 29//26 17//8
-f 17//8 29//26 30//27 18//10
-f 18//10 30//27 31//28 19//12
-f 19//12 31//28 32//29 20//14
-f 20//14 32//29 33//30 21//16
-f 21//16 33//30 34//18 22//18
-f 22//18 34//18 35//31 23//19
-f 23//19 35//31 36//32 24//21
-f 24//21 36//32 25//23 13//2
-f 25//23 37//33 38//34 26//24
-f 26//24 38//34 39//35 27//25
-f 27//25 39//35 40//7 28//7
-f 28//7 40//7 41//36 29//26
-f 29//26 41//36 42//37 30//27
-f 30//27 42//37 43//38 31//28
-f 31//28 43//38 44//39 32//29
-f 32//29 44//39 45//40 33//30
-f 33//30 45//40 46//18 34//18
-f 34//18 46//18 47//41 35//31
-f 35//31 47//41 48//42 36//32
-f 36//32 48//42 37//33 25//23
-f 37//33 49//43 50//44 38//34
-f 38//34 50//44 51//45 39//35
-f 39//35 51//45 52//7 40//7
-f 40//7 52//7 53//46 41//36
-f 41//36 53//46 54//47 42//37
-f 42//37 54//47 55//48 43//38
-f 43//38 55//48 56//49 44//39
-f 44//39 56//49 57//50 45//40
-f 45//40 57//50 58//18 46//18
-f 46//18 58//18 59//51 47//41
-f 47//41 59//51 60//52 48//42
-f 48//42 60//52 49//43 37//33
-f 49//43 61//53 62//54 50//44
-f 50//44 62//54 63//55 51//45
-f 51//45 63//55 64//7 52//7
-f 52//7 64//7 65//56 53//46
-f 53//46 65//56 66//57 54//47
-f 54//47 66//57 67//58 55//48
-f 55//48 67//58 68//59 56//49
-f 56//49 68//59 69//60 57//50
-f 57//50 69//60 70//18 58//18
-f 58//18 70//18 71//61 59//51
-f 59//51 71//61 72//62 60//52
-f 60//52 72//62 61//53 49//43
-f 61//53 73//63 74//64 62//54
-f 62//54 74//64 75//65 63//55
-f 63//55 75//65 76//7 64//7
-f 64//7 76//7 77//66 65//56
-f 65//56 77//66 78//67 66//57
-f 66//57 78//67 79//68 67//58
-f 67//58 79//68 80//69 68//59
-f 68//59 80//69 81//70 69//60
-f 69//60 81//70 82//18 70//18
-f 70//18 82//18 83//71 71//61
-f 71//61 83//71 84//72 72//62
-f 72//62 84//72 73//63 61//53
-f 73//63 85//73 86//74 74//64
-f 74//64 86//74 87//75 75//65
-f 75//65 87//75 88//7 76//7
-f 76//7 88//7 89//76 77//66
-f 77//66 89//76 90//77 78//67
-f 78//67 90//77 91//78 79//68
-f 79//68 91//78 92//79 80//69
-f 80//69 92//79 93//80 81//70
-f 81//70 93//80 94//18 82//18
-f 82//18 94//18 95//81 83//71
-f 83//71 95//81 96//82 84//72
-f 84//72 96//82 85//73 73//63
-f 85//73 97//83 98//84 86//74
-f 86//74 98//84 99//85 87//75
-f 87//75 99//85 100//7 88//7
-f 88//7 100//7 101//86 89//76
-f 89//76 101//86 102//87 90//77
-f 90//77 102//87 103//88 91//78
-f 91//78 103//88 104//89 92//79
-f 92//79 104//89 105//90 93//80
-f 93//80 105//90 106//18 94//18
-f 94//18 106//18 107//91 95//81
-f 95//81 107//91 108//92 96//82
-f 96//82 108//92 97//83 85//73
-f 97//83 109//93 110//94 98//84
-f 98//84 110//94 111//95 99//85
-f 99//85 111//95 112//7 100//7
-f 100//7 112//7 113//96 101//86
-f 101//86 113//96 114//97 102//87
-f 102//87 114//97 115//98 103//88
-f 103//88 115//98 116//99 104//89
-f 104//89 116//99 117//100 105//90
-f 105//90 117//100 118//18 106//18
-f 106//18 118//18 119//101 107//91
-f 107//91 119//101 120//102 108//92
-f 108//92 120//102 109//93 97//83
-f 109//93 121//103 122//104 110//94
-f 110//94 122//104 123//105 111//95
-f 111//95 123//105 124//7 112//7
-f 112//7 124//7 125//106 113//96
-f 113//96 125//106 126//107 114//97
-f 114//97 126//107 127//108 115//98
-f 115//98 127//108 128//109 116//99
-f 116//99 128//109 129//110 117//100
-f 117//100 129//110 130//18 118//18
-f 118//18 130//18 131//111 119//101
-f 119//101 131//111 132//112 120//102
-f 120//102 132//112 121//103 109//93
-f 121//103 133//113 134//114 122//104
-f 122//104 134//114 135//115 123//105
-f 123//105 135//115 136//7 124//7
-f 124//7 136//7 137//116 125//106
-f 125//106 137//116 138//117 126//107
-f 126//107 138//117 139//118 127//108
-f 127//108 139//118 140//119 128//109
-f 128//109 140//119 141//120 129//110
-f 129//110 141//120 142//18 130//18
-f 130//18 142//18 143//121 131//111
-f 131//111 143//121 144//122 132//112
-f 132//112 144//122 133//113 121//103
-f 133//113 145//123 146//124 134//114
-f 134//114 146//124 147//125 135//115
-f 135//115 147//125 148//7 136//7
-f 136//7 148//7 149//126 137//116
-f 137//116 149//126 150//127 138//117
-f 138//117 150//127 151//128 139//118
-f 139//118 151//128 152//129 140//119
-f 140//119 152//129 153//130 141//120
-f 141//120 153//130 154//18 142//18
-f 142//18 154//18 155//131 143//121
-f 143//121 155//131 156//132 144//122
-f 144//122 156//132 145//123 133//113
-f 145//123 157//133 158//134 146//124
-f 146//124 158//134 159//135 147//125
-f 147//125 159//135 160//7 148//7
-f 148//7 160//7 161//136 149//126
-f 149//126 161//136 162//137 150//127
-f 150//127 162//137 163//138 151//128
-f 151//128 163//138 164//139 152//129
-f 152//129 164//139 165//140 153//130
-f 153//130 165//140 166//18 154//18
-f 154//18 166//18 167//141 155//131
-f 155//131 167//141 168//142 156//132
-f 156//132 168//142 157//133 145//123
-f 157//133 169//143 170//144 158//134
-f 158//134 170//144 171//145 159//135
-f 159//135 171//145 172//7 160//7
-f 160//7 172//7 173//146 161//136
-f 161//136 173//146 174//147 162//137
-f 162//137 174//147 175//148 163//138
-f 163//138 175//148 176//149 164//139
-f 164//139 176//149 177//150 165//140
-f 165//140 177//150 178//18 166//18
-f 166//18 178//18 179//151 167//141
-f 167//141 179//151 180//152 168//142
-f 168//142 180//152 169//143 157//133
-f 169//143 181//153 182//154 170//144
-f 170//144 182//154 183//155 171//145
-f 171//145 183//155 184//7 172//7
-f 172//7 184//7 185//156 173//146
-f 173//146 185//156 186//157 174//147
-f 174//147 186//157 187//158 175//148
-f 175//148 187//158 188//159 176//149
-f 176//149 188//159 189//160 177//150
-f 177//150 189//160 190//18 178//18
-f 178//18 190//18 191//161 179//151
-f 179//151 191//161 192//162 180//152
-f 180//152 192//162 181//153 169//143
-f 181//153 193//163 194//164 182//154
-f 182//154 194//164 195//165 183//155
-f 183//155 195//165 196//7 184//7
-f 184//7 196//7 197//166 185//156
-f 185//156 197//166 198//167 186//157
-f 186//157 198//167 199//168 187//158
-f 187//158 199//168 200//169 188//159
-f 188//159 200//169 201//170 189//160
-f 189//160 201//170 202//18 190//18
-f 190//18 202//18 203//171 191//161
-f 191//161 203//171 204//172 192//162
-f 192//162 204//172 193//163 181//153
-f 193//163 205//173 206//174 194//164
-f 194//164 206//174 207//175 195//165
-f 195//165 207//175 208//7 196//7
-f 196//7 208//7 209//176 197//166
-f 197//166 209//176 210//177 198//167
-f 198//167 210//177 211//178 199//168
-f 199//168 211//178 212//179 200//169
-f 200//169 212//179 213//180 201//170
-f 201//170 213//180 214//18 202//18
-f 202//18 214//18 215//181 203//171
-f 203//171 215//181 216//182 204//172
-f 204//172 216//182 205//173 193//163
-f 205//173 217//183 218//184 206//174
-f 206//174 218//184 219//185 207//175
-f 207//175 219//185 220//7 208//7
-f 208//7 220//7 221//186 209//176
-f 209//176 221//186 222//187 210//177
-f 210//177 222//187 223//188 211//178
-f 211//178 223//188 224//189 212//179
-f 212//179 224//189 225//190 213//180
-f 213//180 225//190 226//18 214//18
-f 214//18 226//18 227//191 215//181
-f 215//181 227//191 228//192 216//182
-f 216//182 228//192 217//183 205//173
-f 217//183 229//193 230//194 218//184
-f 218//184 230//194 231//195 219//185
-f 219//185 231//195 232//7 220//7
-f 220//7 232//7 233//196 221//186
-f 221//186 233//196 234//197 222//187
-f 222//187 234//197 235//198 223//188
-f 223//188 235//198 236//199 224//189
-f 224//189 236//199 237//200 225//190
-f 225//190 237//200 238//18 226//18
-f 226//18 238//18 239//201 227//191
-f 227//191 239//201 240//202 228//192
-f 228//192 240//202 229//193 217//183
-f 229//193 241//203 242//204 230//194
-f 230//194 242//204 243//205 231//195
-f 231//195 243//205 244//7 232//7
-f 232//7 244//7 245//206 233//196
-f 233//196 245//206 246//207 234//197
-f 234//197 246//207 247//208 235//198
-f 235//198 247//208 248//209 236//199
-f 236//199 248//209 249//210 237//200
-f 237//200 249//210 250//18 238//18
-f 238//18 250//18 251//211 239//201
-f 239//201 251//211 252//212 240//202
-f 240//202 252//212 241//203 229//193
-f 241//203 253//213 254//214 242//204
-f 242//204 254//214 255//215 243//205
-f 243//205 255//215 256//7 244//7
-f 244//7 256//7 257//216 245//206
-f 245//206 257//216 258//217 246//207
-f 246//207 258//217 259//218 247//208
-f 247//208 259//218 260//219 248//209
-f 248//209 260//219 261//220 249//210
-f 249//210 261//220 262//18 250//18
-f 250//18 262//18 263//221 251//211
-f 251//211 263//221 264//222 252//212
-f 252//212 264//222 253//213 241//203
-f 253//213 265//223 266//224 254//214
-f 254//214 266//224 267//225 255//215
-f 255//215 267//225 268//7 256//7
-f 256//7 268//7 269//226 257//216
-f 257//216 269//226 270//227 258//217
-f 258//217 270//227 271//228 259//218
-f 259//218 271//228 272//229 260//219
-f 260//219 272//229 273//230 261//220
-f 261//220 273//230 274//18 262//18
-f 262//18 274//18 275//231 263//221
-f 263//221 275//231 276//232 264//222
-f 264//222 276//232 265//223 253//213
-f 265//223 277//233 278//234 266//224
-f 266//224 278//234 279//235 267//225
-f 267//225 279//235 280//7 268//7
-f 268//7 280//7 281//236 269//226
-f 269//226 281//236 282//237 270//227
-f 270//227 282//237 283//238 271//228
-f 271//228 283//238 284//239 272//229
-f 272//229 284//239 285//240 273//230
-f 273//230 285//240 286//18 274//18
-f 274//18 286//18 287//241 275//231
-f 275//231 287//241 288//242 276//232
-f 276//232 288//242 277//233 265//223
-f 277//233 289//243 290//11 278//234
-f 278//234 290//11 291//9 279//235
-f 279//235 291//9 292//7 280//7
-f 280//7 292//7 293//6 281//236
-f 281//236 293//6 294//4 282//237
-f 282//237 294//4 295//1 283//238
-f 283//238 295//1 296//22 284//239
-f 284//239 296//22 297//20 285//240
-f 285//240 297//20 298//18 286//18
-f 286//18 298//18 299//17 287//241
-f 287//241 299//17 300//15 288//242
-f 288//242 300//15 289//243 277//233
-f 289//243 301//12 302//10 290//11
-f 290//11 302//10 303//8 291//9
-f 291//9 303//8 304//7 292//7
-f 292//7 304//7 305//5 293//6
-f 293//6 305//5 306//3 294//4
-f 294//4 306//3 307//2 295//1
-f 295//1 307//2 308//21 296//22
-f 296//22 308//21 309//19 297//20
-f 297//20 309//19 310//18 298//18
-f 298//18 310//18 311//16 299//17
-f 299//17 311//16 312//14 300//15
-f 300//15 312//14 301//12 289//243
-f 301//12 313//28 314//244 302//10
-f 302//10 314//244 315//26 303//8
-f 303//8 315//26 316//7 304//7
-f 304//7 316//7 317//25 305//5
-f 305//5 317//25 318//24 306//3
-f 306//3 318//24 319//23 307//2
-f 307//2 319//23 320//32 308//21
-f 308//21 320//32 321//31 309//19
-f 309//19 321//31 322//18 310//18
-f 310//18 322//18 323//30 311//16
-f 311//16 323//30 324//29 312//14
-f 312//14 324//29 313//28 301//12
-f 313//28 325//38 326//37 314//244
-f 314//244 326//37 327//36 315//26
-f 315//26 327//36 328//7 316//7
-f 316//7 328//7 329//35 317//25
-f 317//25 329//35 330//34 318//24
-f 318//24 330//34 331//33 319//23
-f 319//23 331//33 332//42 320//32
-f 320//32 332//42 333//41 321//31
-f 321//31 333//41 334//18 322//18
-f 322//18 334//18 335//40 323//30
-f 323//30 335//40 336//39 324//29
-f 324//29 336//39 325//38 313//28
-f 325//38 337//48 338//47 326//37
-f 326//37 338//47 339//46 327//36
-f 327//36 339//46 340//7 328//7
-f 328//7 340//7 341//45 329//35
-f 329//35 341//45 342//44 330//34
-f 330//34 342//44 343//43 331//33
-f 331//33 343//43 344//52 332//42
-f 332//42 344//52 345//51 333//41
-f 333//41 345//51 346//18 334//18
-f 334//18 346//18 347//50 335//40
-f 335//40 347//50 348//49 336//39
-f 336//39 348//49 337//48 325//38
-f 337//48 349//58 350//57 338//47
-f 338//47 350//57 351//56 339//46
-f 339//46 351//56 352//7 340//7
-f 340//7 352//7 353//55 341//45
-f 341//45 353//55 354//54 342//44
-f 342//44 354//54 355//53 343//43
-f 343//43 355//53 356//62 344//52
-f 344//52 356//62 357//61 345//51
-f 345//51 357//61 358//18 346//18
-f 346//18 358//18 359//60 347//50
-f 347//50 359//60 360//59 348//49
-f 348//49 360//59 349//58 337//48
-f 349//58 361//68 362//67 350//57
-f 350//57 362//67 363//66 351//56
-f 351//56 363//66 364//7 352//7
-f 352//7 364//7 365//65 353//55
-f 353//55 365//65 366//64 354//54
-f 354//54 366//64 367//63 355//53
-f 355//53 367//63 368//72 356//62
-f 356//62 368//72 369//71 357//61
-f 357//61 369//71 370//18 358//18
-f 358//18 370//18 371//70 359//60
-f 359//60 371//70 372//69 360//59
-f 360//59 372//69 361//68 349//58
-f 361//68 373//78 374//77 362//67
-f 362//67 374//77 375//76 363//66
-f 363//66 375//76 376//7 364//7
-f 364//7 376//7 377//75 365//65
-f 365//65 377//75 378//74 366//64
-f 366//64 378//74 379//73 367//63
-f 367//63 379//73 380//82 368//72
-f 368//72 380//82 381//81 369//71
-f 369//71 381//81 382//18 370//18
-f 370//18 382//18 383//80 371//70
-f 371//70 383//80 384//79 372//69
-f 372//69 384//79 373//78 361//68
-f 373//78 385//88 386//87 374//77
-f 374//77 386//87 387//86 375//76
-f 375//76 387//86 388//7 376//7
-f 376//7 388//7 389//85 377//75
-f 377//75 389//85 390//84 378//74
-f 378//74 390//84 391//83 379//73
-f 379//73 391//83 392//92 380//82
-f 380//82 392//92 393//91 381//81
-f 381//81 393//91 394//18 382//18
-f 382//18 394//18 395//90 383//80
-f 383//80 395//90 396//89 384//79
-f 384//79 396//89 385//88 373//78
-f 385//88 397//98 398//97 386//87
-f 386//87 398//97 399//96 387//86
-f 387//86 399//96 400//7 388//7
-f 388//7 400//7 401//95 389//85
-f 389//85 401//95 402//94 390//84
-f 390//84 402//94 403//93 391//83
-f 391//83 403//93 404//102 392//92
-f 392//92 404//102 405//101 393//91
-f 393//91 405//101 406//18 394//18
-f 394//18 406//18 407//100 395//90
-f 395//90 407//100 408//99 396//89
-f 396//89 408//99 397//98 385//88
-f 397//98 409//108 410//107 398//97
-f 398//97 410//107 411//106 399//96
-f 399//96 411//106 412//7 400//7
-f 400//7 412//7 413//105 401//95
-f 401//95 413//105 414//104 402//94
-f 402//94 414//104 415//103 403//93
-f 403//93 415//103 416//112 404//102
-f 404//102 416//112 417//111 405//101
-f 405//101 417//111 418//18 406//18
-f 406//18 418//18 419//110 407//100
-f 407//100 419//110 420//245 408//99
-f 408//99 420//245 409//108 397//98
-f 409//108 421//118 422//117 410//107
-f 410//107 422//117 423//116 411//106
-f 411//106 423//116 424//7 412//7
-f 412//7 424//7 425//115 413//105
-f 413//105 425//115 426//114 414//104
-f 414//104 426//114 427//113 415//103
-f 415//103 427//113 428//122 416//112
-f 416//112 428//122 429//121 417//111
-f 417//111 429//121 430//18 418//18
-f 418//18 430//18 431//120 419//110
-f 419//110 431//120 432//119 420//245
-f 420//245 432//119 421//118 409//108
-f 421//118 433//128 434//127 422//117
-f 422//117 434//127 435//126 423//116
-f 423//116 435//126 436//7 424//7
-f 424//7 436//7 437//125 425//115
-f 425//115 437//125 438//124 426//114
-f 426//114 438//124 439//246 427//113
-f 427//113 439//246 440//132 428//122
-f 428//122 440//132 441//131 429//121
-f 429//121 441//131 442//18 430//18
-f 430//18 442//18 443//130 431//120
-f 431//120 443//130 444//129 432//119
-f 432//119 444//129 433//128 421//118
-f 433//128 445//138 446//137 434//127
-f 434//127 446//137 447//136 435//126
-f 435//126 447//136 448//7 436//7
-f 436//7 448//7 449//135 437//125
-f 437//125 449//135 450//134 438//124
-f 438//124 450//134 451//133 439//246
-f 439//246 451//133 452//142 440//132
-f 440//132 452//142 453//141 441//131
-f 441//131 453//141 454//18 442//18
-f 442//18 454//18 455//140 443//130
-f 443//130 455//140 456//139 444//129
-f 444//129 456//139 445//138 433//128
-f 445//138 457//148 458//147 446//137
-f 446//137 458//147 459//146 447//136
-f 447//136 459//146 460//7 448//7
-f 448//7 460//7 461//145 449//135
-f 449//135 461//145 462//144 450//134
-f 450//134 462//144 463//143 451//133
-f 451//133 463//143 464//152 452//142
-f 452//142 464//152 465//151 453//141
-f 453//141 465//151 466//18 454//18
-f 454//18 466//18 467//150 455//140
-f 455//140 467//150 468//149 456//139
-f 456//139 468//149 457//148 445//138
-f 457//148 469//158 470//157 458//147
-f 458//147 470//157 471//156 459//146
-f 459//146 471//156 472//7 460//7
-f 460//7 472//7 473//155 461//145
-f 461//145 473//155 474//154 462//144
-f 462//144 474//154 475//153 463//143
-f 463//143 475//153 476//162 464//152
-f 464//152 476//162 477//161 465//151
-f 465//151 477//161 478//18 466//18
-f 466//18 478//18 479//160 467//150
-f 467//150 479//160 480//159 468//149
-f 468//149 480//159 469//158 457//148
-f 469//158 481//168 482//167 470//157
-f 470//157 482//167 483//166 471//156
-f 471//156 483//166 484//7 472//7
-f 472//7 484//7 485//165 473//155
-f 473//155 485//165 486//164 474//154
-f 474//154 486//164 487//163 475//153
-f 475//153 487//163 488//172 476//162
-f 476//162 488//172 489//171 477//161
-f 477//161 489//171 490//18 478//18
-f 478//18 490//18 491//170 479//160
-f 479//160 491//170 492//169 480//159
-f 480//159 492//169 481//168 469//158
-f 481//168 493//178 494//177 482//167
-f 482//167 494//177 495//176 483//166
-f 483//166 495//176 496//7 484//7
-f 484//7 496//7 497//175 485//165
-f 485//165 497//175 498//174 486//164
-f 486//164 498//174 499//173 487//163
-f 487//163 499//173 500//182 488//172
-f 488//172 500//182 501//181 489//171
-f 489//171 501//181 502//18 490//18
-f 490//18 502//18 503//180 491//170
-f 491//170 503//180 504//179 492//169
-f 492//169 504//179 493//178 481//168
-f 493//178 505//188 506//187 494//177
-f 494//177 506//187 507//186 495//176
-f 495//176 507//186 508//7 496//7
-f 496//7 508//7 509//185 497//175
-f 497//175 509//185 510//184 498//174
-f 498//174 510//184 511//183 499//173
-f 499//173 511//183 512//192 500//182
-f 500//182 512//192 513//191 501//181
-f 501//181 513//191 514//18 502//18
-f 502//18 514//18 515//190 503//180
-f 503//180 515//190 516//189 504//179
-f 504//179 516//189 505//188 493//178
-f 505//188 517//198 518//197 506//187
-f 506//187 518//197 519//196 507//186
-f 507//186 519//196 520//7 508//7
-f 508//7 520//7 521//195 509//185
-f 509//185 521//195 522//194 510//184
-f 510//184 522//194 523//193 511//183
-f 511//183 523//193 524//202 512//192
-f 512//192 524//202 525//201 513//191
-f 513//191 525//201 526//18 514//18
-f 514//18 526//18 527//200 515//190
-f 515//190 527//200 528//199 516//189
-f 516//189 528//199 517//198 505//188
-f 517//198 529//208 530//207 518//197
-f 518//197 530//207 531//206 519//196
-f 519//196 531//206 532//7 520//7
-f 520//7 532//7 533//205 521//195
-f 521//195 533//205 534//204 522//194
-f 522//194 534//204 535//203 523//193
-f 523//193 535//203 536//212 524//202
-f 524//202 536//212 537//211 525//201
-f 525//201 537//211 538//18 526//18
-f 526//18 538//18 539//210 527//200
-f 527//200 539//210 540//209 528//199
-f 528//199 540//209 529//208 517//198
-f 529//208 541//218 542//217 530//207
-f 530//207 542//217 543//216 531//206
-f 531//206 543//216 544//7 532//7
-f 532//7 544//7 545//215 533//205
-f 533//205 545//215 546//214 534//204
-f 534//204 546//214 547//213 535//203
-f 535//203 547//213 548//222 536//212
-f 536//212 548//222 549//221 537//211
-f 537//211 549//221 550//18 538//18
-f 538//18 550//18 551//220 539//210
-f 539//210 551//220 552//219 540//209
-f 540//209 552//219 541//218 529//208
-f 541//218 553//228 554//227 542//217
-f 542//217 554//227 555//226 543//216
-f 543//216 555//226 556//7 544//7
-f 544//7 556//7 557//225 545//215
-f 545//215 557//225 558//247 546//214
-f 546//214 558//247 559//223 547//213
-f 547//213 559//223 560//232 548//222
-f 548//222 560//232 561//231 549//221
-f 549//221 561//231 562//18 550//18
-f 550//18 562//18 563//230 551//220
-f 551//220 563//230 564//229 552//219
-f 552//219 564//229 553//228 541//218
-f 553//228 565//238 566//237 554//227
-f 554//227 566//237 567//236 555//226
-f 555//226 567//236 568//7 556//7
-f 556//7 568//7 569//235 557//225
-f 557//225 569//235 570//234 558//247
-f 558//247 570//234 571//233 559//223
-f 559//223 571//233 572//242 560//232
-f 560//232 572//242 573//241 561//231
-f 561//231 573//241 574//18 562//18
-f 562//18 574//18 575//240 563//230
-f 563//230 575//240 576//239 564//229
-f 564//229 576//239 565//238 553//228
-f 565//238 1//1 2//4 566//237
-f 566//237 2//4 3//6 567//236
-f 567//236 3//6 4//7 568//7
-f 568//7 4//7 5//9 569//235
-f 569//235 5//9 6//11 570//234
-f 570//234 6//11 7//13 571//233
-f 571//233 7//13 8//15 572//242
-f 572//242 8//15 9//17 573//241
-f 573//241 9//17 10//18 574//18
-f 574//18 10//18 11//20 575//240
-f 575//240 11//20 12//22 576//239
-f 576//239 12//22 1//1 565//238

BIN
examples/obj/torus/Torus_bin.bin


+ 0 - 25
examples/obj/torus/Torus_bin.js

@@ -1,25 +0,0 @@
-// Converted from: ../../examples/obj/torus/Torus.obj
-//  vertices: 576
-//  faces: 576
-//  materials: 1
-//
-//  Generated with OBJ -> Three.js converter
-//  http://github.com/alteredq/three.js/blob/master/utils/exporters/convert_obj_three.py
-
-
-var model = {
-
-    "version" : 1,
-
-    "materials": [	{
-	"DbgColor" : 15658734,
-	"DbgIndex" : 0,
-	"DbgName" : "(null)"
-	}],
-
-    "buffers": "Torus_bin.bin"
-
-};
-    
-postMessage( model );
-close();

File diff suppressed because it is too large
+ 0 - 25
examples/obj/torus/Torus_slim.js


+ 5 - 9
examples/webgl_rtt.html

@@ -152,8 +152,7 @@
 				quad.position.z = -100;
 				sceneRTT.addObject( quad );
 
-				var loader = new THREE.BinaryLoader();
-				loader.load( { model: "obj/torus/Torus_bin.js", callback: function( geometry ) { createMesh( geometry, sceneRTT ) } } );
+				createMesh( new THREE.TorusGeometry( 100, 25, 15, 30 ), sceneRTT );
 
 				quad = new THREE.Mesh( plane, materialScreen );
 				quad.position.z = -100;
@@ -202,12 +201,12 @@
 
 				zmesh1 = new THREE.Mesh( geometry, mat1 );
 				zmesh1.position.set( 0, 0, 100 );
-				zmesh1.scale.set( 150, 150, 150 );
+				zmesh1.scale.set( 1.5, 1.5, 1.5 );
 				xscene.addObject( zmesh1 );
 
 				zmesh2 = new THREE.Mesh( geometry, mat2 );
 				zmesh2.position.set( 0, 150, 100 );
-				zmesh2.scale.set( 75, 75, 75 );
+				zmesh2.scale.set( 0.75, 0.75, 0.75 );
 				xscene.addObject( zmesh2 );
 
 			}
@@ -239,11 +238,8 @@
 
 				if ( zmesh1 && zmesh2 ) {
 
-					zmesh1.rotation.x = 1.57;
-					zmesh1.rotation.z = time;
-
-					zmesh2.rotation.z = 1.57;
-					zmesh2.rotation.y = -time;
+					zmesh1.rotation.y = - time;
+					zmesh2.rotation.y = - time + Math.PI / 2;
 
 				}
 

+ 2 - 2
src/core/Ray.js

@@ -95,7 +95,7 @@ THREE.Ray.prototype = {
 				vector = objMatrix.multiplyVector3( face.centroid.clone() ).subSelf( origin );
 				dot = vector.dot( direction );
 
-				if ( dot < 0 ) continue;
+				if ( dot <= 0 ) continue;
 
 				//
 
@@ -169,7 +169,7 @@ THREE.Ray.prototype = {
 			vector = position.clone().subSelf( origin );
 			dot = vector.dot( direction );
 
-			if ( dot < 0 ) return null; // check if position behind origin.
+			if ( dot <= 0 ) return null; // check if position behind origin.
 
 			intersect = origin.clone().addSelf( direction.clone().multiplyScalar( dot ) );
 			distance = position.distanceTo( intersect );

+ 1 - 13
src/core/Vector2.js

@@ -133,7 +133,7 @@ THREE.Vector2.prototype = {
 		return this.divideScalar( this.length() );
 
 	},
-	
+
 	distanceTo: function ( v ) {
 
 		return Math.sqrt( this.distanceToSquared( v ) );
@@ -154,18 +154,6 @@ THREE.Vector2.prototype = {
 
 	},
 
-	// deprecated: same as normalize
-
-	unit: function () {
-
-		return this.normalize();
-
-	},
-	
-	// danger, works only on numbers which are exactly the same
-	// (which may be not what is expected thanks to floating point precision)
-	// (should be probably using some tiny epsilon instead of equality)
-	
 	equals: function( v ) {
 
 		return ( ( v.x == this.x ) && ( v.y == this.y ) );

Some files were not shown because too many files changed in this diff