diff --git a/build/Three.js b/build/Three.js index caff94a9..f34312ed 100755 --- a/build/Three.js +++ b/build/Three.js @@ -473,8 +473,8 @@ THREE.SphereGeometry=function(b,c,e){THREE.Geometry.call(this);for(var b=b||50,f h-1:f];p=c[e-1][p?0:f+1];u=e/(g-1);v=(e-1)/(g-1);w=(f+1)/h;var t=f/h,o=new THREE.UV(1-w,u),u=new THREE.UV(1-t,u),t=new THREE.UV(1-t,v),x=new THREE.UV(1-w,v);e1&&(v= this.vertices[j].position.clone(),w=this.vertices[n].position.clone(),z=this.vertices[p].position.clone(),v.normalize(),w.normalize(),z.normalize(),this.faces.push(new THREE.Face3(j,n,p,[new THREE.Vector3(v.x,v.y,v.z),new THREE.Vector3(w.x,w.y,w.z),new THREE.Vector3(z.x,z.y,z.z)])),this.faceVertexUvs[0].push([o,t,x]))}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals();this.boundingSphere={radius:b}};THREE.SphereGeometry.prototype=new THREE.Geometry; THREE.SphereGeometry.prototype.constructor=THREE.SphereGeometry;THREE.TextGeometry=function(b,c){THREE.Geometry.call(this);this.parameters=c||{};this.set(b)};THREE.TextGeometry.prototype=new THREE.Geometry;THREE.TextGeometry.prototype.constructor=THREE.TextGeometry; -THREE.TextGeometry.prototype.set=function(b,c){function e(b,e,c){w.vertices.push(new THREE.Vertex(new THREE.Vector3(b,e,c)))}function f(b,e,c,f){w.faces.push(new THREE.Face4(b,e,c,f))}this.text=b;var c=c||this.parameters,g=c.height!==void 0?c.height:50,h=c.curveSegments!==void 0?c.curveSegments:4,j=c.font!==void 0?c.font:"helvetiker",m=c.weight!==void 0?c.weight:"normal",n=c.style!==void 0?c.style:"normal",p=c.bezelThickness!==void 0?c.bezelThickness:10,o=c.bezelSize!==void 0?c.bezelSize:8,t=c.bezelEnabled!== -void 0?c.bezelEnabled:!1;THREE.FontUtils.size=c.size!==void 0?c.size:100;THREE.FontUtils.divisions=h;THREE.FontUtils.face=j;THREE.FontUtils.weight=m;THREE.FontUtils.style=n;THREE.FontUtils.bezelSize=o;var m=THREE.FontUtils.drawText(b),h=m.points,u=m.faces,j=m.contour,v=m.bezel,w=this;w.vertices=[];w.faces=[];for(var z,n=h.length,x=u.length,o=v.length,m=0;m0;){if(y){if(y.equals(j[m])){y=null;continue}}else y=j[m];p=n*2+m;u=p-1;f(p,u,u+o,p+o);for(t=0;t0;){if(y){if(y.equals(j[m])){y=null;continue}}else y=j[m];for(t=0;t=0?v-1:g.length-1;t=u-1>=0?u-1:o.length-1;F=[];F.push(o[u]);F.push(g[v]);F.push(g[e]);F=this.Triangulate.area(F);C=[];C.push(o[u]);C.push(o[t]);C.push(g[v]);C=this.Triangulate.area(C);w+x>F+C&&(v=z,u=y,v<0&&(v+=g.length),v%=g.length,u<0&&(u+=o.length),u%=g.length,e=v-1>=0?v-1:g.length-1,t=u-1>=0?u-1:o.length-1);w=g.slice(0,v);x=g.slice(v);z=o.slice(u);y=o.slice(0,u);h.push(o[u]);h.push(g[v]);h.push(g[e]);h.push(o[u]);h.push(o[t]);h.push(g[v]);g=w.concat(z).concat(y).concat(x)}n.shape=g}u=[];v=[]; for(j=p=0;j=0;){if(o){if(o.equals(e[b])){o=null;n=this.Triangulate.area(f)>0;j.push(n);h.push(m.divideScalar(f.length));f=[];m=new THREE.Vector2;continue}}else o=e[b];m.addSelf(e[b]);f.push(e[b])}b=e.length;for(f= -0;--b>=0;)n=e[b],m=h[f],n=n.clone().subSelf(m),p=this.bezelSize/n.length(),j[f]?p+=1:p=1-p,p=n.multiplyScalar(p).addSelf(m),g.unshift(p),o?o.equals(e[b])&&(o=null,f++):o=e[b];c.bezel=g;return c},b2p0:function(b,c){var e=1-b;return e*e*c},b2p1:function(b,c){return 2*(1-b)*b*c},b2p2:function(b,c){return b*b*c},b2:function(b,c,e,f){return this.b2p0(b,c)+this.b2p1(b,e)+this.b2p2(b,f)},b3p0:function(b,c){var e=1-b;return e*e*e*c},b3p1:function(b,c){var e=1-b;return 3*e*e*b*c},b3p2:function(b,c){return 3* +0;--b>=0;)n=e[b],m=h[f],n=n.clone().subSelf(m),p=this.bevelSize/n.length(),j[f]?p+=1:p=1-p,p=n.multiplyScalar(p).addSelf(m),g.unshift(p),o?o.equals(e[b])&&(o=null,f++):o=e[b];c.bevel=g;return c},b2p0:function(b,c){var e=1-b;return e*e*c},b2p1:function(b,c){return 2*(1-b)*b*c},b2p2:function(b,c){return b*b*c},b2:function(b,c,e,f){return this.b2p0(b,c)+this.b2p1(b,e)+this.b2p2(b,f)},b3p0:function(b,c){var e=1-b;return e*e*e*c},b3p1:function(b,c){var e=1-b;return 3*e*e*b*c},b3p2:function(b,c){return 3* (1-b)*b*b*c},b3p3:function(b,c){return b*b*b*c},b3:function(b,c,e,f,g){return this.b3p0(b,c)+this.b3p1(b,e)+this.b3p2(b,f)+this.b3p3(b,g)},extractGlyphPoints:function(b,c,e,f,g){var h=[],j,m,n,p,o,t,u,v,w,z,x=c.glyphs[b]||c.glyphs[ctxt.options.fallbackCharacter];if(x){if(x.o){c=x._cachedOutline||(x._cachedOutline=x.o.split(" "));n=c.length;for(b=0;b1&&(b-=1)}c===void 0&&(c={h:0,s:0,v:0});c.h=b;c.s=h;c.v=g;return c}, clamp:function(a,c,b){return ab?b:a}};THREE.ColorUtils.__hsv={h:0,s:0,v:0}; -THREE.GeometryUtils={merge:function(a,c){var b=c instanceof THREE.Mesh,f=a.vertices.length,e=b?c.geometry:c,g=a.vertices,h=e.vertices,j=a.faces,k=e.faces,l=a.faceVertexUvs[0],e=e.faceVertexUvs[0];b&&c.matrixAutoUpdate&&c.updateMatrix();for(var m=0,n=h.length;m1)console.log("THREE.Animation.update: Warning! Scale out of bounds:"+f+" on bone "+p),f=f<0?0:1;if(b==="pos")if(b=a.position,this.interpolationType===THREE.AnimationHandler.LINEAR)b.x=e[0]+(g[0]-e[0])*f,b.y=e[1]+(g[1]-e[1])*f,b.z=e[2]+(g[2]-e[2])*f;else{if(this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD)if(this.points[0]= this.getPrevKeyWith("pos",p,h.index-1).pos,this.points[1]=e,this.points[2]=g,this.points[3]=this.getNextKeyWith("pos",p,j.index+1).pos,f=f*0.33+0.33,e=this.interpolateCatmullRom(this.points,f),b.x=e[0],b.y=e[1],b.z=e[2],this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD)f=this.interpolateCatmullRom(this.points,f*1.01),this.target.set(f[0],f[1],f[2]),this.target.subSelf(b),this.target.y=0,this.target.normalize(),f=Math.atan2(this.target.x,this.target.z),a.rotation.set(0,f,0)}else if(b=== "rot")THREE.Quaternion.slerp(e,g,a.quaternion,f);else if(b==="scl")b=a.scale,b.x=e[0]+(g[0]-e[0])*f,b.y=e[1]+(g[1]-e[1])*f,b.z=e[2]+(g[2]-e[2])*f}}if(this.JITCompile&&m[0][l]===void 0){this.hierarchy[0].update(void 0,!0);for(p=0;p0||this.autoForward&&!(m<0)?1:m));this.translateX(a*n);this.translateY(a*o);k&&(this.roll+=this.rollSpeed*this.delta*l);if(this.forward.y>this.constrainVertical[1])this.forward.y=this.constrainVertical[1],this.forward.normalize(); else if(this.forward.y0?(g=c[c.length-1],o=g.x,p=g.y):(g=this.actions[b-1].args,o=g[g.length-2],p=g[g.length-1]);for(g=1;g<=a;g++)v=g/a,e=THREE.FontUtils.b2(v,o,m,h),v=THREE.FontUtils.b2(v,p,n,j),c.push(new THREE.Vector2(e, v));break;case THREE.PathActions.BEZIER_CURVE_TO:h=e[4];j=e[5];m=e[0];n=e[1];k=e[2];l=e[3];c.length>0?(g=c[c.length-1],o=g.x,p=g.y):(g=this.actions[b-1].args,o=g[g.length-2],p=g[g.length-1]);for(g=1;g<=a;g++)v=g/a,e=THREE.FontUtils.b3(v,o,m,k,h),v=THREE.FontUtils.b3(v,p,n,l,j),c.push(new THREE.Vector2(e,v));break;case THREE.PathActions.CSPLINE_THRU:g=this.actions[b-1].args;g=[new THREE.Vector2(g[g.length-2],g[g.length-1])];v=a*e[0].length;g=g.concat(e[0]);e=new THREE.SplineCurve(g);for(g=1;g<=v;g++)c.push(e.getPointAt(g/ -v));break;case THREE.PathActions.ARC:g=this.actions[b-1].args;h=e[0];j=e[1];k=e[2];m=e[3];v=e[4];n=!!e[5];l=g[g.length-2];o=g[g.length-1];g.length==0&&(l=o=0);p=v-m;var w=a*2;for(g=1;g<=w;g++)v=g/w,n||(v=1-v),v=m+v*p,e=l+h+k*Math.cos(v),v=o+j+k*Math.sin(v),c.push(new THREE.Vector2(e,v))}return c}; +v));break;case THREE.PathActions.ARC:g=this.actions[b-1].args;h=e[0];j=e[1];k=e[2];m=e[3];v=e[4];n=!!e[5];l=g[g.length-2];o=g[g.length-1];g.length==0&&(l=o=0);p=v-m;var u=a*2;for(g=1;g<=u;g++)v=g/u,n||(v=1-v),v=m+v*p,e=l+h+k*Math.cos(v),v=o+j+k*Math.sin(v),c.push(new THREE.Vector2(e,v))}return c}; THREE.Path.prototype.getMinAndMax=function(){var a=this.getPoints(),c,b,f,e;c=b=Number.NEGATIVE_INFINITY;f=e=Number.POSITIVE_INFINITY;var g,h,j;h=0;for(j=a.length;hc)c=g.x;else if(g.xb)b=g.y;else if(g.y=c)return c=b[a]-c,a=this.curves[a],c=1-c/a.getLength(),a.getPointAt(c);a++}return null}; THREE.Path.prototype.getLength=function(){var a=[],c=0,b,f=this.curves.length;for(b=0;b=0?j-1:b.length-1;g=h-1>=0?h-1:l.length-1;var w=[l[h],b[j],b[e]];n=THREE.FontUtils.Triangulate.area(w);var x=[l[h],l[g],b[j]];o=THREE.FontUtils.Triangulate.area(x);p=j;m=h;j+=1;h+=-1;j<0&&(j+=b.length);j%=b.length; -h<0&&(h+=l.length);h%=l.length;e=j-1>=0?j-1:b.length-1;g=h-1>=0?h-1:l.length-1;w=[l[h],b[j],b[e]];w=THREE.FontUtils.Triangulate.area(w);x=[l[h],l[g],b[j]];x=THREE.FontUtils.Triangulate.area(x);n+o>w+x&&(j=p,h=m,j<0&&(j+=b.length),j%=b.length,h<0&&(h+=l.length),h%=l.length,e=j-1>=0?j-1:b.length-1,g=h-1>=0?h-1:l.length-1);n=b.slice(0,j);o=b.slice(j);p=l.slice(h);m=l.slice(0,h);g=[l[h],l[g],b[j]];v.push([l[h],b[j],b[e]]);v.push(g);b=n.concat(p).concat(m).concat(o)}return{shape:b,isolatedPts:v,allpoints:f}}, +THREE.Shape.Utils={removeHoles:function(a,c){var b=a.concat(),f=b.concat(),e,g,h,j,k,l,m,n,o,p,v=[];for(k=0;k=0?j-1:b.length-1;g=h-1>=0?h-1:l.length-1;var u=[l[h],b[j],b[e]];n=THREE.FontUtils.Triangulate.area(u);var w=[l[h],l[g],b[j]];o=THREE.FontUtils.Triangulate.area(w);p=j;m=h;j+=1;h+=-1;j<0&&(j+=b.length);j%=b.length; +h<0&&(h+=l.length);h%=l.length;e=j-1>=0?j-1:b.length-1;g=h-1>=0?h-1:l.length-1;u=[l[h],b[j],b[e]];u=THREE.FontUtils.Triangulate.area(u);w=[l[h],l[g],b[j]];w=THREE.FontUtils.Triangulate.area(w);n+o>u+w&&(j=p,h=m,j<0&&(j+=b.length),j%=b.length,h<0&&(h+=l.length),h%=l.length,e=j-1>=0?j-1:b.length-1,g=h-1>=0?h-1:l.length-1);n=b.slice(0,j);o=b.slice(j);p=l.slice(h);m=l.slice(0,h);g=[l[h],l[g],b[j]];v.push([l[h],b[j],b[e]]);v.push(g);b=n.concat(p).concat(m).concat(o)}return{shape:b,isolatedPts:v,allpoints:f}}, triangulateShape:function(a,c){var b=THREE.Shape.Utils.removeHoles(a,c),f=b.allpoints,e=b.isolatedPts,b=THREE.FontUtils.Triangulate(b.shape,!1),g,h,j,k;for(g=0;g0){h(0,0,-m-(g||0));for(k=a;k0){h(0,0,m+ (e||0));for(k=a+a/2;k<2*a;k++)j.faces.push(new THREE.Face4(2*a+1,(2*k-2*a+2)%a+a,(2*k-2*a+1)%a+a,(2*k-2*a)%a+a))}k=0;for(a=this.faces.length;k=0;){N=D;M=D-1;M<0&&(M=a.length-1);for(var b=0;b0;H--){t=H/m;z=j*t;L=k*(1-Math.sin((1-t)*Math.PI/2));D=0;for(il= -C.length;D=0;){O=A;M=A-1;M<0&&(M=a.length-1);for(var b=0,b=0;b0;J--){u=J/m;K=j*u;D=k*(1-Math.sin((1-u)*Math.PI/2));A=0;for(E=B.length;A0||(m=this.vertices.push(new THREE.Vertex(new THREE.Vector3(n,j,o)))-1);l.push(m)}c.push(l)}for(var p,v,w,e=c.length,b=0;b0)for(f=0;f1&&(p= -this.vertices[h].position.clone(),v=this.vertices[k].position.clone(),w=this.vertices[l].position.clone(),p.normalize(),v.normalize(),w.normalize(),this.faces.push(new THREE.Face3(h,k,l,[new THREE.Vector3(p.x,p.y,p.z),new THREE.Vector3(v.x,v.y,v.z),new THREE.Vector3(w.x,w.y,w.z)])),this.faceVertexUvs[0].push([m,n,x]))}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals();this.boundingSphere={radius:a}};THREE.SphereGeometry.prototype=new THREE.Geometry; +THREE.SphereGeometry=function(a,c,b){THREE.Geometry.call(this);for(var a=a||50,f,e=Math.PI,g=Math.max(3,c||8),h=Math.max(2,b||6),c=[],b=0;b0||(m=this.vertices.push(new THREE.Vertex(new THREE.Vector3(n,j,o)))-1);l.push(m)}c.push(l)}for(var p,v,u,e=c.length,b=0;b0)for(f=0;f1&&(p= +this.vertices[h].position.clone(),v=this.vertices[k].position.clone(),u=this.vertices[l].position.clone(),p.normalize(),v.normalize(),u.normalize(),this.faces.push(new THREE.Face3(h,k,l,[new THREE.Vector3(p.x,p.y,p.z),new THREE.Vector3(v.x,v.y,v.z),new THREE.Vector3(u.x,u.y,u.z)])),this.faceVertexUvs[0].push([m,n,w]))}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals();this.boundingSphere={radius:a}};THREE.SphereGeometry.prototype=new THREE.Geometry; THREE.SphereGeometry.prototype.constructor=THREE.SphereGeometry;THREE.TextGeometry=function(a,c){THREE.Geometry.call(this);this.parameters=c||{};this.set(a)};THREE.TextGeometry.prototype=new THREE.Geometry;THREE.TextGeometry.prototype.constructor=THREE.TextGeometry; -THREE.TextGeometry.prototype.set=function(a,c){function b(a,b,c){v.vertices.push(new THREE.Vertex(new THREE.Vector3(a,b,c)))}function f(a,b,c,f){v.faces.push(new THREE.Face4(a,b,c,f))}this.text=a;var c=c||this.parameters,e=c.height!==void 0?c.height:50,g=c.curveSegments!==void 0?c.curveSegments:4,h=c.font!==void 0?c.font:"helvetiker",j=c.weight!==void 0?c.weight:"normal",k=c.style!==void 0?c.style:"normal",l=c.bezelThickness!==void 0?c.bezelThickness:10,m=c.bezelSize!==void 0?c.bezelSize:8,n=c.bezelEnabled!== -void 0?c.bezelEnabled:!1;THREE.FontUtils.size=c.size!==void 0?c.size:100;THREE.FontUtils.divisions=g;THREE.FontUtils.face=h;THREE.FontUtils.weight=j;THREE.FontUtils.style=k;THREE.FontUtils.bezelSize=m;var j=THREE.FontUtils.drawText(a),g=j.points,o=j.faces,h=j.contour,p=j.bezel,v=this;v.vertices=[];v.faces=[];for(var w,k=g.length,x=o.length,m=p.length,j=0;j0;){if(y){if(y.equals(h[j])){y=null;continue}}else y=h[j];l=k*2+j;o=l-1;f(l,o,o+m,l+m);for(n=0;n0;){if(y){if(y.equals(h[j])){y=null;continue}}else y=h[j];for(n=0;n0;){if(x){if(x.equals(h[j])){x=null;continue}}else x=h[j];l=k*2+j;o=l-1;f(l,o,o+m,l+m);for(n=0;n0;){if(x){if(x.equals(h[j])){x=null;continue}}else x=h[j];for(n=0;n0&&j.push({shape:e,holes:f}),e=n,f=[]):f.push(n):this.Triangulate.area(n)<0?(j.push({shape:n,holes:f}),f=[]):f.push(n);b++}m&&j.push({shape:e,holes:f})}var o,p,v, -w,x,y;g=[];for(h=0;h=0?p-1:e.length-1;var n=o-1>=0?o-1:m.length-1,A=[];A.push(m[o]);A.push(e[p]);A.push(e[b]);v=this.Triangulate.area(A);var u=[];u.push(m[o]);u.push(m[n]);u.push(e[p]);x=this.Triangulate.area(u);w=p;y=o;p+=1;o+=-1;p<0&&(p+=e.length);p%=e.length;o<0&&(o+=m.length);o%=e.length;b=p- -1>=0?p-1:e.length-1;n=o-1>=0?o-1:m.length-1;A=[];A.push(m[o]);A.push(e[p]);A.push(e[b]);A=this.Triangulate.area(A);u=[];u.push(m[o]);u.push(m[n]);u.push(e[p]);u=this.Triangulate.area(u);v+x>A+u&&(p=w,o=y,p<0&&(p+=e.length),p%=e.length,o<0&&(o+=m.length),o%=e.length,b=p-1>=0?p-1:e.length-1,n=o-1>=0?o-1:m.length-1);v=e.slice(0,p);x=e.slice(p);w=m.slice(o);y=m.slice(0,o);g.push(m[o]);g.push(e[p]);g.push(e[b]);g.push(m[o]);g.push(m[n]);g.push(e[p]);e=v.concat(w).concat(y).concat(x)}k.shape=e}o=[];p=[]; -for(h=l=0;h=0?p-1:e.length-1;var n=o-1>=0?o-1:m.length-1,y=[];y.push(m[o]);y.push(e[p]);y.push(e[b]);v=this.Triangulate.area(y);var t=[];t.push(m[o]);t.push(m[n]);t.push(e[p]);w=this.Triangulate.area(t);u=p;x=o;p+=1;o+=-1;p<0&&(p+=e.length);p%=e.length;o<0&&(o+=m.length);o%=e.length;b=p- +1>=0?p-1:e.length-1;n=o-1>=0?o-1:m.length-1;y=[];y.push(m[o]);y.push(e[p]);y.push(e[b]);y=this.Triangulate.area(y);t=[];t.push(m[o]);t.push(m[n]);t.push(e[p]);t=this.Triangulate.area(t);v+w>y+t&&(p=u,o=x,p<0&&(p+=e.length),p%=e.length,o<0&&(o+=m.length),o%=e.length,b=p-1>=0?p-1:e.length-1,n=o-1>=0?o-1:m.length-1);v=e.slice(0,p);w=e.slice(p);u=m.slice(o);x=m.slice(0,o);g.push(m[o]);g.push(e[p]);g.push(e[b]);g.push(m[o]);g.push(m[n]);g.push(e[p]);e=v.concat(u).concat(x).concat(w)}k.shape=e}o=[];p=[]; +for(h=l=0;h=0;){if(m){if(m.equals(b[a])){m=null;k=this.Triangulate.area(f)>0;h.push(k);g.push(j.divideScalar(f.length));f=[];j=new THREE.Vector2;continue}}else m=b[a];j.addSelf(b[a]);f.push(b[a])}a=b.length;for(f= -0;--a>=0;)k=b[a],j=g[f],k=k.clone().subSelf(j),l=this.bezelSize/k.length(),h[f]?l+=1:l=1-l,l=k.multiplyScalar(l).addSelf(j),e.unshift(l),m?m.equals(b[a])&&(m=null,f++):m=b[a];c.bezel=e;return c},b2p0:function(a,c){var b=1-a;return b*b*c},b2p1:function(a,c){return 2*(1-a)*a*c},b2p2:function(a,c){return a*a*c},b2:function(a,c,b,f){return this.b2p0(a,c)+this.b2p1(a,b)+this.b2p2(a,f)},b3p0:function(a,c){var b=1-a;return b*b*b*c},b3p1:function(a,c){var b=1-a;return 3*b*b*a*c},b3p2:function(a,c){return 3* -(1-a)*a*a*c},b3p3:function(a,c){return a*a*a*c},b3:function(a,c,b,f,e){return this.b3p0(a,c)+this.b3p1(a,b)+this.b3p2(a,f)+this.b3p3(a,e)},extractGlyphPoints:function(a,c,b,f,e){var g=[],h,j,k,l,m,n,o,p,v,w,x=c.glyphs[a]||c.glyphs[ctxt.options.fallbackCharacter];if(x){if(x.o){c=x._cachedOutline||(x._cachedOutline=x.o.split(" "));k=c.length;for(a=0;a0)for(l=0;l2;){if(n--<=0){console.log("Warning, unable to triangulate polygon!");if(f)return j;return g}k=l;e<=k&&(k=0);l=k+1;e<=l&&(l=0);m=l+1;e<=m&&(m=0);var o;a:{o=a;var p=k,v=l,w=m,x=e,y=h,A=void 0,u=void 0,B=void 0, -C=void 0,H=void 0,J=void 0,K=void 0,I=void 0,D=void 0,u=o[y[p]].x,B=o[y[p]].y,C=o[y[v]].x,H=o[y[v]].y,J=o[y[w]].x,K=o[y[w]].y;if(1.0E-10>(C-u)*(K-B)-(H-B)*(J-u))o=!1;else{for(A=0;A=0&&L>=0&&M>=0){o=!1;break a}}o=!0}}if(o){g.push([a[h[k]], +0;--a>=0;)k=b[a],j=g[f],k=k.clone().subSelf(j),l=this.bevelSize/k.length(),h[f]?l+=1:l=1-l,l=k.multiplyScalar(l).addSelf(j),e.unshift(l),m?m.equals(b[a])&&(m=null,f++):m=b[a];c.bevel=e;return c},b2p0:function(a,c){var b=1-a;return b*b*c},b2p1:function(a,c){return 2*(1-a)*a*c},b2p2:function(a,c){return a*a*c},b2:function(a,c,b,f){return this.b2p0(a,c)+this.b2p1(a,b)+this.b2p2(a,f)},b3p0:function(a,c){var b=1-a;return b*b*b*c},b3p1:function(a,c){var b=1-a;return 3*b*b*a*c},b3p2:function(a,c){return 3* +(1-a)*a*a*c},b3p3:function(a,c){return a*a*a*c},b3:function(a,c,b,f,e){return this.b3p0(a,c)+this.b3p1(a,b)+this.b3p2(a,f)+this.b3p3(a,e)},extractGlyphPoints:function(a,c,b,f,e){var g=[],h,j,k,l,m,n,o,p,v,u,w=c.glyphs[a]||c.glyphs[ctxt.options.fallbackCharacter];if(w){if(w.o){c=w._cachedOutline||(w._cachedOutline=w.o.split(" "));k=c.length;for(a=0;a0)for(l=0;l2;){if(n--<=0){console.log("Warning, unable to triangulate polygon!");if(f)return j;return g}k=l;e<=k&&(k=0);l=k+1;e<=l&&(l=0);m=l+1;e<=m&&(m=0);var o;a:{o=a;var p=k,v=l,u=m,w=e,x=h,y=void 0,t=void 0,z=void 0, +B=void 0,A=void 0,E=void 0,G=void 0,H=void 0,L=void 0,t=o[x[p]].x,z=o[x[p]].y,B=o[x[v]].x,A=o[x[v]].y,E=o[x[u]].x,G=o[x[u]].y;if(1.0E-10>(B-t)*(G-z)-(A-z)*(E-t))o=!1;else{for(y=0;y=0&&K>=0&&I>=0){o=!1;break a}}o=!0}}if(o){g.push([a[h[k]], a[h[l]],a[h[m]]]);j.push([h[k],h[l],h[m]]);k=l;for(m=l+1;m>7)-127;f|=(g&127)<<16|e<<8;if(f==0&&j==-127)return 0;return(1-2*(h>>7))*(1+f*Math.pow(2,-23))*Math.pow(2,j)}function e(a,b){var c=m(a,b),f=m(a,b+1),g=m(a,b+2);return(m(a,b+3)<<24)+(g<<16)+(f<<8)+c}function k(a,b){var c=m(a,b);return(m(a,b+1)<<8)+c}function l(a,b){var c=m(a,b);return c>127?c-256:c}function m(a, -b){return a.charCodeAt(b)&255}function n(b){var c,f,g;c=e(a,b);f=e(a,b+H);g=e(a,b+J);b=k(a,b+K);THREE.BinaryLoader.prototype.f3(y,c,f,g,b)}function o(b){var c,f,g,h,l,m;c=e(a,b);f=e(a,b+H);g=e(a,b+J);h=k(a,b+K);l=e(a,b+I);m=e(a,b+D);b=e(a,b+G);THREE.BinaryLoader.prototype.f3n(y,B,c,f,g,h,l,m,b)}function p(b){var c,f,g,h;c=e(a,b);f=e(a,b+F);g=e(a,b+L);h=e(a,b+N);b=k(a,b+M);THREE.BinaryLoader.prototype.f4(y,c,f,g,h,b)}function v(b){var c,f,g,h,l,m,n,o;c=e(a,b);f=e(a,b+F);g=e(a,b+L);h=e(a,b+N);l=k(a, -b+M);m=e(a,b+O);n=e(a,b+Q);o=e(a,b+E);b=e(a,b+R);THREE.BinaryLoader.prototype.f4n(y,B,c,f,g,h,l,m,n,o,b)}function w(b){var c,f;c=e(a,b);f=e(a,b+P);b=e(a,b+T);THREE.BinaryLoader.prototype.uv3(y.faceVertexUvs[0],C[c*2],C[c*2+1],C[f*2],C[f*2+1],C[b*2],C[b*2+1])}function x(b){var c,f,g;c=e(a,b);f=e(a,b+U);g=e(a,b+$);b=e(a,b+aa);THREE.BinaryLoader.prototype.uv4(y.faceVertexUvs[0],C[c*2],C[c*2+1],C[f*2],C[f*2+1],C[g*2],C[g*2+1],C[b*2],C[b*2+1])}var y=this,A=0,u,B=[],C=[],H,J,K,I,D,G,F,L,N,M,O,Q,E,R,P,T, -U,$,aa,V,W,X,Y,Z,S;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(y,f,b);u={signature:a.substr(A,8),header_bytes:m(a,A+8),vertex_coordinate_bytes:m(a,A+9),normal_coordinate_bytes:m(a,A+10),uv_coordinate_bytes:m(a,A+11),vertex_index_bytes:m(a,A+12),normal_index_bytes:m(a,A+13),uv_index_bytes:m(a,A+14),material_index_bytes:m(a,A+15),nvertices:e(a,A+16),nnormals:e(a,A+16+4),nuvs:e(a,A+16+8),ntri_flat:e(a,A+16+12),ntri_smooth:e(a,A+16+16),ntri_flat_uv:e(a,A+16+20),ntri_smooth_uv:e(a, -A+16+24),nquad_flat:e(a,A+16+28),nquad_smooth:e(a,A+16+32),nquad_flat_uv:e(a,A+16+36),nquad_smooth_uv:e(a,A+16+40)};A+=u.header_bytes;H=u.vertex_index_bytes;J=u.vertex_index_bytes*2;K=u.vertex_index_bytes*3;I=u.vertex_index_bytes*3+u.material_index_bytes;D=u.vertex_index_bytes*3+u.material_index_bytes+u.normal_index_bytes;G=u.vertex_index_bytes*3+u.material_index_bytes+u.normal_index_bytes*2;F=u.vertex_index_bytes;L=u.vertex_index_bytes*2;N=u.vertex_index_bytes*3;M=u.vertex_index_bytes*4;O=u.vertex_index_bytes* -4+u.material_index_bytes;Q=u.vertex_index_bytes*4+u.material_index_bytes+u.normal_index_bytes;E=u.vertex_index_bytes*4+u.material_index_bytes+u.normal_index_bytes*2;R=u.vertex_index_bytes*4+u.material_index_bytes+u.normal_index_bytes*3;P=u.uv_index_bytes;T=u.uv_index_bytes*2;U=u.uv_index_bytes;$=u.uv_index_bytes*2;aa=u.uv_index_bytes*3;b=u.vertex_index_bytes*3+u.material_index_bytes;S=u.vertex_index_bytes*4+u.material_index_bytes;V=u.ntri_flat*b;W=u.ntri_smooth*(b+u.normal_index_bytes*3);X=u.ntri_flat_uv* -(b+u.uv_index_bytes*3);Y=u.ntri_smooth_uv*(b+u.normal_index_bytes*3+u.uv_index_bytes*3);Z=u.nquad_flat*S;b=u.nquad_smooth*(S+u.normal_index_bytes*4);S=u.nquad_flat_uv*(S+u.uv_index_bytes*4);A+=function(b){for(var f,e,g,j=u.vertex_coordinate_bytes*3,k=b+u.nvertices*j;b1&&(D=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(H,D);object.name=p;object.position.set(u[0],u[1],u[2]);q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=A.visible;E.scene.addObject(object);E.objects[p]=object;A.meshCollider&&(a=THREE.CollisionUtils.MeshColliderWBox(object),E.scene.collisions.colliders.push(a)); -if(A.castsShadow)a=new THREE.ShadowVolume(H),E.scene.addChild(a),a.position=object.position,a.rotation=object.rotation,a.scale=object.scale;A.trigger&&A.trigger.toLowerCase()!="none"&&(a={type:A.trigger,object:A},E.triggers[object.name]=a)}}else u=A.position,r=A.rotation,q=A.quaternion,s=A.scale,q=0,object=new THREE.Object3D,object.name=p,object.position.set(u[0],u[1],u[2]),q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]),object.scale.set(s[0], -s[1],s[2]),object.visible=A.visible!==void 0?A.visible:!1,E.scene.addObject(object),E.objects[p]=object,E.empties[p]=object,A.trigger&&A.trigger.toLowerCase()!="none"&&(a={type:A.trigger,object:A},E.triggers[object.name]=a)}function k(a){return function(c){E.geometries[a]=c;j();N-=1;b.onLoadComplete();m()}}function l(a){return function(b){E.geometries[a]=b}}function m(){b.callbackProgress({totalModels:O,totalTextures:Q,loadedModels:O-N,loadedTextures:Q-M},E);b.onLoadProgress();N==0&&M==0&&c(E)}var n, -o,p,v,w,x,y,A,u,B,C,H,J,K,I,D,G,F,L,N,M,O,Q,E;F=a.data;I=new THREE.BinaryLoader;L=new THREE.JSONLoader;M=N=0;E={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},triggers:{},empties:{}};a=!1;for(p in F.objects)if(A=F.objects[p],A.meshCollider){a=!0;break}if(a)E.scene.collisions=new THREE.CollisionSystem;if(F.transform){a=F.transform.position;B=F.transform.rotation;var R=F.transform.scale;a&&E.scene.position.set(a[0],a[1],a[2]);B&&E.scene.rotation.set(B[0], -B[1],B[2]);R&&E.scene.scale.set(R[0],R[1],R[2]);(a||B||R)&&E.scene.updateMatrix()}a=function(){M-=1;m();b.onLoadComplete()};for(w in F.cameras){B=F.cameras[w];if(B.type=="perspective")J=new THREE.Camera(B.fov,B.aspect,B.near,B.far);else if(B.type=="ortho")J=new THREE.Camera,J.projectionMatrix=THREE.Matrix4.makeOrtho(B.left,B.right,B.top,B.bottom,B.near,B.far);u=B.position;B=B.target;J.position.set(u[0],u[1],u[2]);J.target.position.set(B[0],B[1],B[2]);E.cameras[w]=J}for(v in F.lights)w=F.lights[v], -J=w.color!==void 0?w.color:16777215,B=w.intensity!==void 0?w.intensity:1,w.type=="directional"?(u=w.direction,G=new THREE.DirectionalLight(J,B),G.position.set(u[0],u[1],u[2]),G.position.normalize()):w.type=="point"?(u=w.position,d=w.distance,G=new THREE.PointLight(J,B,d),G.position.set(u[0],u[1],u[2])):w.type=="ambient"&&(G=new THREE.AmbientLight(J)),E.scene.addLight(G),E.lights[v]=G;for(x in F.fogs)v=F.fogs[x],v.type=="linear"?K=new THREE.Fog(0,v.near,v.far):v.type=="exp2"&&(K=new THREE.FogExp2(0, -v.density)),B=v.color,K.color.setRGB(B[0],B[1],B[2]),E.fogs[x]=K;if(E.cameras&&F.defaults.camera)E.currentCamera=E.cameras[F.defaults.camera];if(E.fogs&&F.defaults.fog)E.scene.fog=E.fogs[F.defaults.fog];B=F.defaults.bgcolor;E.bgColor=new THREE.Color;E.bgColor.setRGB(B[0],B[1],B[2]);E.bgColorAlpha=F.defaults.bgalpha;for(n in F.geometries)if(x=F.geometries[n],x.type=="bin_mesh"||x.type=="ascii_mesh")N+=1,b.onLoadStart();O=N;for(n in F.geometries)x=F.geometries[n],x.type=="cube"?(H=new THREE.CubeGeometry(x.width, -x.height,x.depth,x.segmentsWidth,x.segmentsHeight,x.segmentsDepth,null,x.flipped,x.sides),E.geometries[n]=H):x.type=="plane"?(H=new THREE.PlaneGeometry(x.width,x.height,x.segmentsWidth,x.segmentsHeight),E.geometries[n]=H):x.type=="sphere"?(H=new THREE.SphereGeometry(x.radius,x.segmentsWidth,x.segmentsHeight),E.geometries[n]=H):x.type=="cylinder"?(H=new THREE.CylinderGeometry(x.numSegs,x.topRad,x.botRad,x.height,x.topOffset,x.botOffset),E.geometries[n]=H):x.type=="torus"?(H=new THREE.TorusGeometry(x.radius, -x.tube,x.segmentsR,x.segmentsT),E.geometries[n]=H):x.type=="icosahedron"?(H=new THREE.IcosahedronGeometry(x.subdivisions),E.geometries[n]=H):x.type=="bin_mesh"?I.load({model:f(x.url,F.urlBaseType),callback:k(n)}):x.type=="ascii_mesh"?L.load({model:f(x.url,F.urlBaseType),callback:k(n)}):x.type=="embedded_mesh"&&(x=F.embeds[x.id])&&L.createModel(x,l(n),"");for(y in F.textures)if(n=F.textures[y],n.url instanceof Array){M+=n.url.length;for(I=0;I1&&(L=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(A,L);object.name=p;object.position.set(t[0],t[1],t[2]);q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=y.visible;C.scene.addObject(object);C.objects[p]=object;y.meshCollider&&(a=THREE.CollisionUtils.MeshColliderWBox(object),C.scene.collisions.colliders.push(a)); +if(y.castsShadow)a=new THREE.ShadowVolume(A),C.scene.addChild(a),a.position=object.position,a.rotation=object.rotation,a.scale=object.scale;y.trigger&&y.trigger.toLowerCase()!="none"&&(a={type:y.trigger,object:y},C.triggers[object.name]=a)}}else t=y.position,r=y.rotation,q=y.quaternion,s=y.scale,q=0,object=new THREE.Object3D,object.name=p,object.position.set(t[0],t[1],t[2]),q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]),object.scale.set(s[0], +s[1],s[2]),object.visible=y.visible!==void 0?y.visible:!1,C.scene.addObject(object),C.objects[p]=object,C.empties[p]=object,y.trigger&&y.trigger.toLowerCase()!="none"&&(a={type:y.trigger,object:y},C.triggers[object.name]=a)}function k(a){return function(c){C.geometries[a]=c;j();F-=1;b.onLoadComplete();m()}}function l(a){return function(b){C.geometries[a]=b}}function m(){b.callbackProgress({totalModels:O,totalTextures:M,loadedModels:O-F,loadedTextures:M-I},C);b.onLoadProgress();F==0&&I==0&&c(C)}var n, +o,p,v,u,w,x,y,t,z,B,A,E,G,H,L,J,D,K,F,I,O,M,C;D=a.data;H=new THREE.BinaryLoader;K=new THREE.JSONLoader;I=F=0;C={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},triggers:{},empties:{}};a=!1;for(p in D.objects)if(y=D.objects[p],y.meshCollider){a=!0;break}if(a)C.scene.collisions=new THREE.CollisionSystem;if(D.transform){a=D.transform.position;z=D.transform.rotation;var P=D.transform.scale;a&&C.scene.position.set(a[0],a[1],a[2]);z&&C.scene.rotation.set(z[0], +z[1],z[2]);P&&C.scene.scale.set(P[0],P[1],P[2]);(a||z||P)&&C.scene.updateMatrix()}a=function(){I-=1;m();b.onLoadComplete()};for(u in D.cameras){z=D.cameras[u];if(z.type=="perspective")E=new THREE.Camera(z.fov,z.aspect,z.near,z.far);else if(z.type=="ortho")E=new THREE.Camera,E.projectionMatrix=THREE.Matrix4.makeOrtho(z.left,z.right,z.top,z.bottom,z.near,z.far);t=z.position;z=z.target;E.position.set(t[0],t[1],t[2]);E.target.position.set(z[0],z[1],z[2]);C.cameras[u]=E}for(v in D.lights)u=D.lights[v], +E=u.color!==void 0?u.color:16777215,z=u.intensity!==void 0?u.intensity:1,u.type=="directional"?(t=u.direction,J=new THREE.DirectionalLight(E,z),J.position.set(t[0],t[1],t[2]),J.position.normalize()):u.type=="point"?(t=u.position,d=u.distance,J=new THREE.PointLight(E,z,d),J.position.set(t[0],t[1],t[2])):u.type=="ambient"&&(J=new THREE.AmbientLight(E)),C.scene.addLight(J),C.lights[v]=J;for(w in D.fogs)v=D.fogs[w],v.type=="linear"?G=new THREE.Fog(0,v.near,v.far):v.type=="exp2"&&(G=new THREE.FogExp2(0, +v.density)),z=v.color,G.color.setRGB(z[0],z[1],z[2]),C.fogs[w]=G;if(C.cameras&&D.defaults.camera)C.currentCamera=C.cameras[D.defaults.camera];if(C.fogs&&D.defaults.fog)C.scene.fog=C.fogs[D.defaults.fog];z=D.defaults.bgcolor;C.bgColor=new THREE.Color;C.bgColor.setRGB(z[0],z[1],z[2]);C.bgColorAlpha=D.defaults.bgalpha;for(n in D.geometries)if(w=D.geometries[n],w.type=="bin_mesh"||w.type=="ascii_mesh")F+=1,b.onLoadStart();O=F;for(n in D.geometries)w=D.geometries[n],w.type=="cube"?(A=new THREE.CubeGeometry(w.width, +w.height,w.depth,w.segmentsWidth,w.segmentsHeight,w.segmentsDepth,null,w.flipped,w.sides),C.geometries[n]=A):w.type=="plane"?(A=new THREE.PlaneGeometry(w.width,w.height,w.segmentsWidth,w.segmentsHeight),C.geometries[n]=A):w.type=="sphere"?(A=new THREE.SphereGeometry(w.radius,w.segmentsWidth,w.segmentsHeight),C.geometries[n]=A):w.type=="cylinder"?(A=new THREE.CylinderGeometry(w.numSegs,w.topRad,w.botRad,w.height,w.topOffset,w.botOffset),C.geometries[n]=A):w.type=="torus"?(A=new THREE.TorusGeometry(w.radius, +w.tube,w.segmentsR,w.segmentsT),C.geometries[n]=A):w.type=="icosahedron"?(A=new THREE.IcosahedronGeometry(w.subdivisions),C.geometries[n]=A):w.type=="bin_mesh"?H.load({model:f(w.url,D.urlBaseType),callback:k(n)}):w.type=="ascii_mesh"?K.load({model:f(w.url,D.urlBaseType),callback:k(n)}):w.type=="embedded_mesh"&&(w=D.embeds[w.id])&&K.createModel(w,l(n),"");for(x in D.textures)if(n=D.textures[x],n.url instanceof Array){I+=n.url.length;for(H=0;H=this.maxCount-3&&j(this)};this.begin=function(){this.count=0; this.hasNormal=this.hasPos=!1};this.end=function(a){if(this.count!=0){for(var c=this.count*3;cthis.size-1&&(k=this.size-1);var o=Math.floor(l-j);o<1&&(o=1);l=Math.floor(l+j);l>this.size-1&&(l=this.size-1);var p=Math.floor(m-j);p<1&&(p=1);j=Math.floor(m+j);j>this.size-1&&(j=this.size- -1);for(var v,w,x,y,A,u;n0&&(this.field[x+v]+=y)}}};this.addPlaneX=function(a,c){var e,g,h,j,k,l=this.size,m=this.yd,n=this.zd,o=this.field,p=l*Math.sqrt(a/c);p>l&&(p=l);for(e=0;e0)for(g=0;g0&&(this.field[w+v]+=x)}}};this.addPlaneX=function(a,c){var e,g,h,j,k,l=this.size,m=this.yd,n=this.zd,o=this.field,p=l*Math.sqrt(a/c);p>l&&(p=l);for(e=0;e0)for(g=0;gm&&(v=m);for(g=0;g0){k=g*n;for(e=0;esize&&(dist=size);for(h=0;h0){k=zd*h;for(g=0;g
- three.js - procedural 3D text by zz85 & alteredq + three.js - procedural 3D text by zz85 & alteredq (fonts from typeface.js and Droid)
type to enter new text, drag to spin the text -
change color, - change font, +
change color, + change font, change weight, - change bezel, - change postprocessing, + change bevel, + change postprocessing,
@@ -43,12 +43,12 @@ - + @@ -60,7 +60,7 @@ - +