提交 a6e358e6 编写于 作者: M Mr.doob

Fixed bug in CanvasRenderer where it would try to render a smooth shaded face...

Fixed bug in CanvasRenderer where it would try to render a smooth shaded face even if mesh had no vertex normals.
上级 0c4a9af2
......@@ -3842,6 +3842,8 @@ THREE.Projector = function() {
}
face.vertexNormalsLength = faceVertexNormals.length;
for ( c = 0, cl = faceVertexUvs.length; c < cl; c ++ ) {
uvs = faceVertexUvs[ c ][ f ];
......@@ -11888,7 +11890,6 @@ THREE.CanvasRenderer = function ( parameters ) {
_context.beginPath();
_context.moveTo( v1.positionScreen.x, v1.positionScreen.y );
_context.lineTo( v2.positionScreen.x, v2.positionScreen.y );
_context.closePath();
if ( material instanceof THREE.LineBasicMaterial ) {
......@@ -11967,7 +11968,7 @@ THREE.CanvasRenderer = function ( parameters ) {
if ( _enableLighting === true ) {
if ( material.wireframe === false && material.shading == THREE.SmoothShading && element.vertexNormalsWorld.length == 3 ) {
if ( material.wireframe === false && material.shading == THREE.SmoothShading && element.vertexNormalsLength == 3 ) {
_color1.r = _color2.r = _color3.r = _ambientLight.r;
_color1.g = _color2.g = _color3.g = _ambientLight.g;
......@@ -12084,7 +12085,7 @@ THREE.CanvasRenderer = function ( parameters ) {
if ( _enableLighting === true ) {
if ( !material.wireframe && material.shading == THREE.SmoothShading && element.vertexNormalsWorld.length == 4 ) {
if ( !material.wireframe && material.shading == THREE.SmoothShading && element.vertexNormalsLength == 4 ) {
_color1.r = _color2.r = _color3.r = _color4.r = _ambientLight.r;
_color1.g = _color2.g = _color3.g = _color4.g = _ambientLight.g;
......@@ -12189,7 +12190,7 @@ THREE.CanvasRenderer = function ( parameters ) {
_context.moveTo( x0, y0 );
_context.lineTo( x1, y1 );
_context.lineTo( x2, y2 );
_context.lineTo( x0, y0 );
_context.closePath();
}
......@@ -12200,7 +12201,7 @@ THREE.CanvasRenderer = function ( parameters ) {
_context.lineTo( x1, y1 );
_context.lineTo( x2, y2 );
_context.lineTo( x3, y3 );
_context.lineTo( x0, y0 );
_context.closePath();
}
......@@ -21496,6 +21497,7 @@ THREE.RenderableFace3 = function () {
this.normalWorld = new THREE.Vector3();
this.vertexNormalsWorld = [ new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3() ];
this.vertexNormalsLength = 0;
this.material = null;
this.uvs = [[]];
......@@ -21519,6 +21521,7 @@ THREE.RenderableFace4 = function () {
this.normalWorld = new THREE.Vector3();
this.vertexNormalsWorld = [ new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3() ];
this.vertexNormalsLength = 0;
this.material = null;
this.uvs = [[]];
......
......@@ -76,17 +76,17 @@ true},updateMatrixWorld:function(a){this.matrixAutoUpdate===true&&this.updateMat
clone:function(){}};THREE.Object3D.__m1=new THREE.Matrix4;THREE.Object3DCount=0;
THREE.Projector=function(){function a(){var a;if(e===g.length){a=new THREE.RenderableObject;g.push(a)}else a=g[e];e++;return a}function b(){var a;if(i===k.length){a=new THREE.RenderableVertex;k.push(a)}else a=k[i];i++;return a}function c(a,b){return b.z-a.z}function d(a,b){var c=0,d=1,f=a.z+a.w,e=b.z+b.w,g=-a.z+a.w,h=-b.z+b.w;if(f>=0&&e>=0&&g>=0&&h>=0)return true;if(f<0&&e<0||g<0&&h<0)return false;f<0?c=Math.max(c,f/(f-e)):e<0&&(d=Math.min(d,f/(f-e)));g<0?c=Math.max(c,g/(g-h)):h<0&&(d=Math.min(d,
g/(g-h)));if(d<c)return false;a.lerpSelf(b,c);b.lerpSelf(a,1-d);return true}var f,e,g=[],h,i,k=[],j,o,m=[],q,p=[],n,r,s=[],t,v,u=[],A={objects:[],sprites:[],lights:[],elements:[]},y=new THREE.Vector3,B=new THREE.Vector4,C=new THREE.Matrix4,w=new THREE.Matrix4,J=new THREE.Frustum,F=new THREE.Vector4,N=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);C.multiply(b.projectionMatrix,b.matrixWorldInverse);C.multiplyVector3(a);return a};this.unprojectVector=
function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);C.multiply(b.matrixWorld,b.projectionMatrixInverse);C.multiplyVector3(a);return a};this.pickingRay=function(a,b){var c;a.z=-1;c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.subSelf(a).normalize();return new THREE.Ray(a,c)};this.projectScene=function(g,H,D){var I=H.near,Q=H.far,L=false,G,U,O,K,V,ga,ha,da,Y,ba,$,ca,ma,sa,$a,qa,Fa;v=r=q=o=0;A.elements.length=0;g.updateMatrixWorld();H.parent===
void 0&&H.updateMatrixWorld();H.matrixWorldInverse.getInverse(H.matrixWorld);C.multiply(H.projectionMatrix,H.matrixWorldInverse);J.setFromMatrix(C);e=0;A.objects.length=0;A.sprites.length=0;A.lights.length=0;var Pa=function(b){if(b.visible!==false){if((b instanceof THREE.Mesh||b instanceof THREE.Line)&&(b.frustumCulled===false||J.contains(b)===true)){y.copy(b.matrixWorld.getPosition());C.multiplyVector3(y);f=a();f.object=b;f.z=y.z;A.objects.push(f)}else if(b instanceof THREE.Sprite||b instanceof THREE.Particle){y.copy(b.matrixWorld.getPosition());
C.multiplyVector3(y);f=a();f.object=b;f.z=y.z;A.sprites.push(f)}else b instanceof THREE.Light&&A.lights.push(b);for(var c=0,d=b.children.length;c<d;c++)Pa(b.children[c])}};Pa(g);g=0;for(G=A.objects.length;g<G;g++){Y=A.objects[g].object;ba=Y.matrixWorld;i=0;if(Y instanceof THREE.Mesh){$=Y.geometry;ca=Y.geometry.materials;K=$.vertices;ma=$.faces;$a=$.faceVertexUvs;$=Y.matrixRotationWorld.extractRotation(ba);Fa=Y.material instanceof THREE.MeshFaceMaterial;U=0;for(O=K.length;U<O;U++){h=b();h.positionWorld.copy(K[U]);
ba.multiplyVector3(h.positionWorld);h.positionScreen.copy(h.positionWorld);C.multiplyVector4(h.positionScreen);h.positionScreen.x=h.positionScreen.x/h.positionScreen.w;h.positionScreen.y=h.positionScreen.y/h.positionScreen.w;h.visible=h.positionScreen.z>I&&h.positionScreen.z<Q}K=0;for(U=ma.length;K<U;K++){da=ma[K];O=Fa===true?ca[da.materialIndex]:Y.material;if(O!==void 0){ha=O.side;if(da instanceof THREE.Face3){V=k[da.a];ga=k[da.b];sa=k[da.c];if(V.visible===true&&ga.visible===true&&sa.visible===true){L=
(sa.positionScreen.x-V.positionScreen.x)*(ga.positionScreen.y-V.positionScreen.y)-(sa.positionScreen.y-V.positionScreen.y)*(ga.positionScreen.x-V.positionScreen.x)<0;if(ha===THREE.DoubleSide||L===(ha===THREE.FrontSide)){qa=void 0;if(o===m.length){qa=new THREE.RenderableFace3;m.push(qa)}else qa=m[o];o++;j=qa;j.v1.copy(V);j.v2.copy(ga);j.v3.copy(sa)}else continue}else continue}else if(da instanceof THREE.Face4){V=k[da.a];ga=k[da.b];sa=k[da.c];qa=k[da.d];if(V.visible===true&&ga.visible===true&&sa.visible===
true&&qa.visible===true){L=(qa.positionScreen.x-V.positionScreen.x)*(ga.positionScreen.y-V.positionScreen.y)-(qa.positionScreen.y-V.positionScreen.y)*(ga.positionScreen.x-V.positionScreen.x)<0||(ga.positionScreen.x-sa.positionScreen.x)*(qa.positionScreen.y-sa.positionScreen.y)-(ga.positionScreen.y-sa.positionScreen.y)*(qa.positionScreen.x-sa.positionScreen.x)<0;if(ha===THREE.DoubleSide||L===(ha===THREE.FrontSide)){var Ta=void 0;if(q===p.length){Ta=new THREE.RenderableFace4;p.push(Ta)}else Ta=p[q];
q++;j=Ta;j.v1.copy(V);j.v2.copy(ga);j.v3.copy(sa);j.v4.copy(qa)}else continue}else continue}j.normalWorld.copy(da.normal);L===false&&(ha===THREE.BackSide||ha===THREE.DoubleSide)&&j.normalWorld.negate();$.multiplyVector3(j.normalWorld);j.centroidWorld.copy(da.centroid);ba.multiplyVector3(j.centroidWorld);j.centroidScreen.copy(j.centroidWorld);C.multiplyVector3(j.centroidScreen);da=da.vertexNormals;V=0;for(ga=da.length;V<ga;V++){sa=j.vertexNormalsWorld[V];sa.copy(da[V]);L===false&&(ha===THREE.BackSide||
ha===THREE.DoubleSide)&&sa.negate();$.multiplyVector3(sa)}V=0;for(ga=$a.length;V<ga;V++){sa=$a[V][K];if(sa!==void 0){ha=0;for(da=sa.length;ha<da;ha++)j.uvs[V][ha]=sa[ha]}}j.material=O;j.z=j.centroidScreen.z;A.elements.push(j)}}}else if(Y instanceof THREE.Line){w.multiply(C,ba);K=Y.geometry.vertices;V=b();V.positionScreen.copy(K[0]);w.multiplyVector4(V.positionScreen);ba=Y.type===THREE.LinePieces?2:1;U=1;for(O=K.length;U<O;U++){V=b();V.positionScreen.copy(K[U]);w.multiplyVector4(V.positionScreen);
if(!((U+1)%ba>0)){ga=k[i-2];F.copy(V.positionScreen);N.copy(ga.positionScreen);if(d(F,N)===true){F.multiplyScalar(1/F.w);N.multiplyScalar(1/N.w);ca=void 0;if(r===s.length){ca=new THREE.RenderableLine;s.push(ca)}else ca=s[r];r++;n=ca;n.v1.positionScreen.copy(F);n.v2.positionScreen.copy(N);n.z=Math.max(F.z,N.z);n.material=Y.material;A.elements.push(n)}}}}}g=0;for(G=A.sprites.length;g<G;g++){Y=A.sprites[g].object;ba=Y.matrixWorld;if(Y instanceof THREE.Particle){B.set(ba.elements[12],ba.elements[13],
ba.elements[14],1);C.multiplyVector4(B);B.z=B.z/B.w;if(B.z>0&&B.z<1){I=void 0;if(v===u.length){I=new THREE.RenderableParticle;u.push(I)}else I=u[v];v++;t=I;t.object=Y;t.x=B.x/B.w;t.y=B.y/B.w;t.z=B.z;t.rotation=Y.rotation.z;t.scale.x=Y.scale.x*Math.abs(t.x-(B.x+H.projectionMatrix.elements[0])/(B.w+H.projectionMatrix.elements[12]));t.scale.y=Y.scale.y*Math.abs(t.y-(B.y+H.projectionMatrix.elements[5])/(B.w+H.projectionMatrix.elements[13]));t.material=Y.material;A.elements.push(t)}}}D&&A.elements.sort(c);
return A}};THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=d!==void 0?d:1};
function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);C.multiply(b.matrixWorld,b.projectionMatrixInverse);C.multiplyVector3(a);return a};this.pickingRay=function(a,b){var c;a.z=-1;c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.subSelf(a).normalize();return new THREE.Ray(a,c)};this.projectScene=function(g,H,D){var I=H.near,Q=H.far,L=false,G,U,O,K,X,ga,da,sa,Y,ba,$,ca,na,qa,Ba,oa,Ga;v=r=q=o=0;A.elements.length=0;g.updateMatrixWorld();H.parent===
void 0&&H.updateMatrixWorld();H.matrixWorldInverse.getInverse(H.matrixWorld);C.multiply(H.projectionMatrix,H.matrixWorldInverse);J.setFromMatrix(C);e=0;A.objects.length=0;A.sprites.length=0;A.lights.length=0;var Qa=function(b){if(b.visible!==false){if((b instanceof THREE.Mesh||b instanceof THREE.Line)&&(b.frustumCulled===false||J.contains(b)===true)){y.copy(b.matrixWorld.getPosition());C.multiplyVector3(y);f=a();f.object=b;f.z=y.z;A.objects.push(f)}else if(b instanceof THREE.Sprite||b instanceof THREE.Particle){y.copy(b.matrixWorld.getPosition());
C.multiplyVector3(y);f=a();f.object=b;f.z=y.z;A.sprites.push(f)}else b instanceof THREE.Light&&A.lights.push(b);for(var c=0,d=b.children.length;c<d;c++)Qa(b.children[c])}};Qa(g);g=0;for(G=A.objects.length;g<G;g++){Y=A.objects[g].object;ba=Y.matrixWorld;i=0;if(Y instanceof THREE.Mesh){$=Y.geometry;ca=Y.geometry.materials;K=$.vertices;na=$.faces;oa=$.faceVertexUvs;$=Y.matrixRotationWorld.extractRotation(ba);Ga=Y.material instanceof THREE.MeshFaceMaterial;U=0;for(O=K.length;U<O;U++){h=b();h.positionWorld.copy(K[U]);
ba.multiplyVector3(h.positionWorld);h.positionScreen.copy(h.positionWorld);C.multiplyVector4(h.positionScreen);h.positionScreen.x=h.positionScreen.x/h.positionScreen.w;h.positionScreen.y=h.positionScreen.y/h.positionScreen.w;h.visible=h.positionScreen.z>I&&h.positionScreen.z<Q}K=0;for(U=na.length;K<U;K++){da=na[K];O=Ga===true?ca[da.materialIndex]:Y.material;if(O!==void 0){sa=O.side;if(da instanceof THREE.Face3){X=k[da.a];ga=k[da.b];qa=k[da.c];if(X.visible===true&&ga.visible===true&&qa.visible===true){L=
(qa.positionScreen.x-X.positionScreen.x)*(ga.positionScreen.y-X.positionScreen.y)-(qa.positionScreen.y-X.positionScreen.y)*(ga.positionScreen.x-X.positionScreen.x)<0;if(sa===THREE.DoubleSide||L===(sa===THREE.FrontSide)){Ba=void 0;if(o===m.length){Ba=new THREE.RenderableFace3;m.push(Ba)}else Ba=m[o];o++;j=Ba;j.v1.copy(X);j.v2.copy(ga);j.v3.copy(qa)}else continue}else continue}else if(da instanceof THREE.Face4){X=k[da.a];ga=k[da.b];qa=k[da.c];Ba=k[da.d];if(X.visible===true&&ga.visible===true&&qa.visible===
true&&Ba.visible===true){L=(Ba.positionScreen.x-X.positionScreen.x)*(ga.positionScreen.y-X.positionScreen.y)-(Ba.positionScreen.y-X.positionScreen.y)*(ga.positionScreen.x-X.positionScreen.x)<0||(ga.positionScreen.x-qa.positionScreen.x)*(Ba.positionScreen.y-qa.positionScreen.y)-(ga.positionScreen.y-qa.positionScreen.y)*(Ba.positionScreen.x-qa.positionScreen.x)<0;if(sa===THREE.DoubleSide||L===(sa===THREE.FrontSide)){var Ua=void 0;if(q===p.length){Ua=new THREE.RenderableFace4;p.push(Ua)}else Ua=p[q];
q++;j=Ua;j.v1.copy(X);j.v2.copy(ga);j.v3.copy(qa);j.v4.copy(Ba)}else continue}else continue}j.normalWorld.copy(da.normal);L===false&&(sa===THREE.BackSide||sa===THREE.DoubleSide)&&j.normalWorld.negate();$.multiplyVector3(j.normalWorld);j.centroidWorld.copy(da.centroid);ba.multiplyVector3(j.centroidWorld);j.centroidScreen.copy(j.centroidWorld);C.multiplyVector3(j.centroidScreen);qa=da.vertexNormals;X=0;for(ga=qa.length;X<ga;X++){Ba=j.vertexNormalsWorld[X];Ba.copy(qa[X]);L===false&&(sa===THREE.BackSide||
sa===THREE.DoubleSide)&&Ba.negate();$.multiplyVector3(Ba)}da.vertexNormalsLength=qa.length;da=0;for(X=oa.length;da<X;da++){qa=oa[da][K];if(qa!==void 0){ga=0;for(sa=qa.length;ga<sa;ga++)j.uvs[da][ga]=qa[ga]}}j.material=O;j.z=j.centroidScreen.z;A.elements.push(j)}}}else if(Y instanceof THREE.Line){w.multiply(C,ba);K=Y.geometry.vertices;X=b();X.positionScreen.copy(K[0]);w.multiplyVector4(X.positionScreen);ba=Y.type===THREE.LinePieces?2:1;U=1;for(O=K.length;U<O;U++){X=b();X.positionScreen.copy(K[U]);
w.multiplyVector4(X.positionScreen);if(!((U+1)%ba>0)){ga=k[i-2];F.copy(X.positionScreen);N.copy(ga.positionScreen);if(d(F,N)===true){F.multiplyScalar(1/F.w);N.multiplyScalar(1/N.w);ca=void 0;if(r===s.length){ca=new THREE.RenderableLine;s.push(ca)}else ca=s[r];r++;n=ca;n.v1.positionScreen.copy(F);n.v2.positionScreen.copy(N);n.z=Math.max(F.z,N.z);n.material=Y.material;A.elements.push(n)}}}}}g=0;for(G=A.sprites.length;g<G;g++){Y=A.sprites[g].object;ba=Y.matrixWorld;if(Y instanceof THREE.Particle){B.set(ba.elements[12],
ba.elements[13],ba.elements[14],1);C.multiplyVector4(B);B.z=B.z/B.w;if(B.z>0&&B.z<1){I=void 0;if(v===u.length){I=new THREE.RenderableParticle;u.push(I)}else I=u[v];v++;t=I;t.object=Y;t.x=B.x/B.w;t.y=B.y/B.w;t.z=B.z;t.rotation=Y.rotation.z;t.scale.x=Y.scale.x*Math.abs(t.x-(B.x+H.projectionMatrix.elements[0])/(B.w+H.projectionMatrix.elements[12]));t.scale.y=Y.scale.y*Math.abs(t.y-(B.y+H.projectionMatrix.elements[5])/(B.w+H.projectionMatrix.elements[13]));t.material=Y.material;A.elements.push(t)}}}D&&
A.elements.sort(c);return A}};THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=d!==void 0?d:1};
THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w;return this},setFromEuler:function(a,b){var c=Math.cos(a.x/2),d=Math.cos(a.y/2),f=Math.cos(a.z/2),e=Math.sin(a.x/2),g=Math.sin(a.y/2),h=Math.sin(a.z/2);if(b===void 0||b==="XYZ"){this.x=e*d*f+c*g*h;this.y=c*g*f-e*d*h;this.z=c*d*h+e*g*f;this.w=c*d*f-e*g*h}else if(b==="YXZ"){this.x=e*d*f+c*g*h;this.y=c*g*f-e*d*h;this.z=
c*d*h-e*g*f;this.w=c*d*f+e*g*h}else if(b==="ZXY"){this.x=e*d*f-c*g*h;this.y=c*g*f+e*d*h;this.z=c*d*h+e*g*f;this.w=c*d*f-e*g*h}else if(b==="ZYX"){this.x=e*d*f-c*g*h;this.y=c*g*f+e*d*h;this.z=c*d*h-e*g*f;this.w=c*d*f+e*g*h}else if(b==="YZX"){this.x=e*d*f+c*g*h;this.y=c*g*f+e*d*h;this.z=c*d*h-e*g*f;this.w=c*d*f-e*g*h}else if(b==="XZY"){this.x=e*d*f-c*g*h;this.y=c*g*f-e*d*h;this.z=c*d*h+e*g*f;this.w=c*d*f+e*g*h}return this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);this.x=a.x*d;this.y=a.y*
d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0],a=b[4],d=b[8],f=b[1],e=b[5],g=b[9],h=b[2],i=b[6],b=b[10],k=c+e+b;if(k>0){c=0.5/Math.sqrt(k+1);this.w=0.25/c;this.x=(i-g)*c;this.y=(d-h)*c;this.z=(f-a)*c}else if(c>e&&c>b){c=2*Math.sqrt(1+c-e-b);this.w=(i-g)/c;this.x=0.25*c;this.y=(a+f)/c;this.z=(d+h)/c}else if(e>b){c=2*Math.sqrt(1+e-c-b);this.w=(d-h)/c;this.x=(a+f)/c;this.y=0.25*c;this.z=(g+i)/c}else{c=2*Math.sqrt(1+b-c-e);this.w=(f-a)/c;this.x=
......@@ -119,10 +119,10 @@ THREE.BufferGeometry.prototype={constructor:THREE.BufferGeometry,applyMatrix:fun
Infinity),max:new THREE.Vector3(-Infinity,-Infinity,-Infinity)};var a=this.attributes.position.array;if(a)for(var b=this.boundingBox,c,d,f,e=0,g=a.length;e<g;e=e+3){c=a[e];d=a[e+1];f=a[e+2];if(c<b.min.x)b.min.x=c;else if(c>b.max.x)b.max.x=c;if(d<b.min.y)b.min.y=d;else if(d>b.max.y)b.max.y=d;if(f<b.min.z)b.min.z=f;else if(f>b.max.z)b.max.z=f}if(a===void 0||a.length===0){this.boundingBox.min.set(0,0,0);this.boundingBox.max.set(0,0,0)}},computeBoundingSphere:function(){if(!this.boundingSphere)this.boundingSphere=
{radius:0};var a=this.attributes.position.array;if(a){for(var b,c=0,d,f,e=0,g=a.length;e<g;e=e+3){b=a[e];d=a[e+1];f=a[e+2];b=b*b+d*d+f*f;b>c&&(c=b)}this.boundingSphere.radius=Math.sqrt(c)}},computeVertexNormals:function(){if(this.attributes.position&&this.attributes.index){var a,b,c,d;a=this.attributes.position.array.length;if(this.attributes.normal===void 0)this.attributes.normal={itemSize:3,array:new Float32Array(a),numItems:a};else{a=0;for(b=this.attributes.normal.array.length;a<b;a++)this.attributes.normal.array[a]=
0}var f=this.offsets,e=this.attributes.index.array,g=this.attributes.position.array,h=this.attributes.normal.array,i,k,j,o,m,q,p=new THREE.Vector3,n=new THREE.Vector3,r=new THREE.Vector3,s=new THREE.Vector3,t=new THREE.Vector3;c=0;for(d=f.length;c<d;++c){b=f[c].start;i=f[c].count;var v=f[c].index;a=b;for(b=b+i;a<b;a=a+3){i=v+e[a];k=v+e[a+1];j=v+e[a+2];o=g[i*3];m=g[i*3+1];q=g[i*3+2];p.set(o,m,q);o=g[k*3];m=g[k*3+1];q=g[k*3+2];n.set(o,m,q);o=g[j*3];m=g[j*3+1];q=g[j*3+2];r.set(o,m,q);s.sub(r,n);t.sub(p,
n);s.crossSelf(t);h[i*3]=h[i*3]+s.x;h[i*3+1]=h[i*3+1]+s.y;h[i*3+2]=h[i*3+2]+s.z;h[k*3]=h[k*3]+s.x;h[k*3+1]=h[k*3+1]+s.y;h[k*3+2]=h[k*3+2]+s.z;h[j*3]=h[j*3]+s.x;h[j*3+1]=h[j*3+1]+s.y;h[j*3+2]=h[j*3+2]+s.z}}a=0;for(b=h.length;a<b;a=a+3){o=h[a];m=h[a+1];q=h[a+2];c=1/Math.sqrt(o*o+m*m+q*q);h[a]=h[a]*c;h[a+1]=h[a+1]*c;h[a+2]=h[a+2]*c}this.normalsNeedUpdate=true}},computeTangents:function(){function a(a){U.x=d[a*3];U.y=d[a*3+1];U.z=d[a*3+2];O.copy(U);V=i[a];L.copy(V);L.subSelf(U.multiplyScalar(U.dot(V))).normalize();
G.cross(O,V);ga=G.dot(k[a]);K=ga<0?-1:1;h[a*4]=L.x;h[a*4+1]=L.y;h[a*4+2]=L.z;h[a*4+3]=K}if(this.attributes.index===void 0||this.attributes.position===void 0||this.attributes.normal===void 0||this.attributes.uv===void 0)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var b=this.attributes.index.array,c=this.attributes.position.array,d=this.attributes.normal.array,f=this.attributes.uv.array,e=c.length/3;if(this.attributes.tangent===
n);s.crossSelf(t);h[i*3]=h[i*3]+s.x;h[i*3+1]=h[i*3+1]+s.y;h[i*3+2]=h[i*3+2]+s.z;h[k*3]=h[k*3]+s.x;h[k*3+1]=h[k*3+1]+s.y;h[k*3+2]=h[k*3+2]+s.z;h[j*3]=h[j*3]+s.x;h[j*3+1]=h[j*3+1]+s.y;h[j*3+2]=h[j*3+2]+s.z}}a=0;for(b=h.length;a<b;a=a+3){o=h[a];m=h[a+1];q=h[a+2];c=1/Math.sqrt(o*o+m*m+q*q);h[a]=h[a]*c;h[a+1]=h[a+1]*c;h[a+2]=h[a+2]*c}this.normalsNeedUpdate=true}},computeTangents:function(){function a(a){U.x=d[a*3];U.y=d[a*3+1];U.z=d[a*3+2];O.copy(U);X=i[a];L.copy(X);L.subSelf(U.multiplyScalar(U.dot(X))).normalize();
G.cross(O,X);ga=G.dot(k[a]);K=ga<0?-1:1;h[a*4]=L.x;h[a*4+1]=L.y;h[a*4+2]=L.z;h[a*4+3]=K}if(this.attributes.index===void 0||this.attributes.position===void 0||this.attributes.normal===void 0||this.attributes.uv===void 0)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var b=this.attributes.index.array,c=this.attributes.position.array,d=this.attributes.normal.array,f=this.attributes.uv.array,e=c.length/3;if(this.attributes.tangent===
void 0){var g=4*e;this.attributes.tangent={itemSize:4,array:new Float32Array(g),numItems:g}}for(var h=this.attributes.tangent.array,i=[],k=[],g=0;g<e;g++){i[g]=new THREE.Vector3;k[g]=new THREE.Vector3}var j,o,m,q,p,n,r,s,t,v,u,A,y,B,C,e=new THREE.Vector3,g=new THREE.Vector3,w,J,F,N,M,H,D,I=this.offsets;F=0;for(N=I.length;F<N;++F){J=I[F].start;M=I[F].count;var Q=I[F].index;w=J;for(J=J+M;w<J;w=w+3){M=Q+b[w];H=Q+b[w+1];D=Q+b[w+2];j=c[M*3];o=c[M*3+1];m=c[M*3+2];q=c[H*3];p=c[H*3+1];n=c[H*3+2];r=c[D*3];
s=c[D*3+1];t=c[D*3+2];v=f[M*2];u=f[M*2+1];A=f[H*2];y=f[H*2+1];B=f[D*2];C=f[D*2+1];q=q-j;j=r-j;p=p-o;o=s-o;n=n-m;m=t-m;A=A-v;v=B-v;y=y-u;u=C-u;C=1/(A*u-v*y);e.set((u*q-y*j)*C,(u*p-y*o)*C,(u*n-y*m)*C);g.set((A*j-v*q)*C,(A*o-v*p)*C,(A*m-v*n)*C);i[M].addSelf(e);i[H].addSelf(e);i[D].addSelf(e);k[M].addSelf(g);k[H].addSelf(g);k[D].addSelf(g)}}var L=new THREE.Vector3,G=new THREE.Vector3,U=new THREE.Vector3,O=new THREE.Vector3,K,V,ga;F=0;for(N=I.length;F<N;++F){J=I[F].start;M=I[F].count;Q=I[F].index;w=J;
s=c[D*3+1];t=c[D*3+2];v=f[M*2];u=f[M*2+1];A=f[H*2];y=f[H*2+1];B=f[D*2];C=f[D*2+1];q=q-j;j=r-j;p=p-o;o=s-o;n=n-m;m=t-m;A=A-v;v=B-v;y=y-u;u=C-u;C=1/(A*u-v*y);e.set((u*q-y*j)*C,(u*p-y*o)*C,(u*n-y*m)*C);g.set((A*j-v*q)*C,(A*o-v*p)*C,(A*m-v*n)*C);i[M].addSelf(e);i[H].addSelf(e);i[D].addSelf(e);k[M].addSelf(g);k[H].addSelf(g);k[D].addSelf(g)}}var L=new THREE.Vector3,G=new THREE.Vector3,U=new THREE.Vector3,O=new THREE.Vector3,K,X,ga;F=0;for(N=I.length;F<N;++F){J=I[F].start;M=I[F].count;Q=I[F].index;w=J;
for(J=J+M;w<J;w=w+3){M=Q+b[w];H=Q+b[w+1];D=Q+b[w+2];a(M);a(H);a(D)}}this.tangentsNeedUpdate=this.hasTangents=true}}};
THREE.Spline=function(a){function b(a,b,c,d,f,e,g){a=(c-a)*0.5;d=(d-b)*0.5;return(2*(b-c)+a+d)*g+(-3*(b-c)-2*a-d)*e+a*f+b}this.points=a;var c=[],d={x:0,y:0,z:0},f,e,g,h,i,k,j,o,m;this.initFromArray=function(a){this.points=[];for(var b=0;b<a.length;b++)this.points[b]={x:a[b][0],y:a[b][1],z:a[b][2]}};this.getPoint=function(a){f=(this.points.length-1)*a;e=Math.floor(f);g=f-e;c[0]=e===0?e:e-1;c[1]=e;c[2]=e>this.points.length-2?this.points.length-1:e+1;c[3]=e>this.points.length-3?this.points.length-1:
e+2;k=this.points[c[0]];j=this.points[c[1]];o=this.points[c[2]];m=this.points[c[3]];h=g*g;i=g*h;d.x=b(k.x,j.x,o.x,m.x,g,h,i);d.y=b(k.y,j.y,o.y,m.y,g,h,i);d.z=b(k.z,j.z,o.z,m.z,g,h,i);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a<c;a++){b=this.points[a];d[a]=[b.x,b.y,b.z]}return d};this.getLength=function(a){var b,c,d,f=b=b=0,e=new THREE.Vector3,g=new THREE.Vector3,h=[],i=0;h[0]=0;a||(a=100);c=this.points.length*a;e.copy(this.points[0]);for(a=1;a<c;a++){b=
......@@ -155,7 +155,7 @@ k));g.push(m)}}function w(b,c){var d,f,e,g,h,i,j,k,o,m,n=new Uint32Array(a,c,4*b
H.faces.push(new THREE.Face3(f,e,g,null,null,h))}}function F(b,c,d){for(var f,e,g,h,i,c=new Uint32Array(a,c,4*b),j=new Uint16Array(a,d,b),d=0;d<b;d++){f=c[d*4];e=c[d*4+1];g=c[d*4+2];h=c[d*4+3];i=j[d];H.faces.push(new THREE.Face4(f,e,g,h,null,null,i))}}function N(b,c,d,f){for(var e,g,h,i,j,k,o,c=new Uint32Array(a,c,3*b),d=new Uint32Array(a,d,3*b),m=new Uint16Array(a,f,b),f=0;f<b;f++){e=c[f*3];g=c[f*3+1];h=c[f*3+2];j=d[f*3];k=d[f*3+1];o=d[f*3+2];i=m[f];var n=I[k*3],p=I[k*3+1];k=I[k*3+2];var q=I[o*3],
u=I[o*3+1];o=I[o*3+2];H.faces.push(new THREE.Face3(e,g,h,[new THREE.Vector3(I[j*3],I[j*3+1],I[j*3+2]),new THREE.Vector3(n,p,k),new THREE.Vector3(q,u,o)],null,i))}}function M(b,c,d,f){for(var e,g,h,i,j,k,o,m,n,c=new Uint32Array(a,c,4*b),d=new Uint32Array(a,d,4*b),p=new Uint16Array(a,f,b),f=0;f<b;f++){e=c[f*4];g=c[f*4+1];h=c[f*4+2];i=c[f*4+3];k=d[f*4];o=d[f*4+1];m=d[f*4+2];n=d[f*4+3];j=p[f];var q=I[o*3],u=I[o*3+1];o=I[o*3+2];var r=I[m*3],s=I[m*3+1];m=I[m*3+2];var t=I[n*3],w=I[n*3+1];n=I[n*3+2];H.faces.push(new THREE.Face4(e,
g,h,i,[new THREE.Vector3(I[k*3],I[k*3+1],I[k*3+2]),new THREE.Vector3(q,u,o),new THREE.Vector3(r,s,m),new THREE.Vector3(t,w,n)],null,j))}}var H=this,D=0,I=[],Q=[],L,G,U;THREE.Geometry.call(this);THREE.Loader.prototype.initMaterials(H,d,b);u=a;G=D;b=new Uint8Array(u,G,12);n="";for(t=0;t<12;t++)n=n+String.fromCharCode(b[G+t]);c=y(u,G+12);y(u,G+13);y(u,G+14);y(u,G+15);f=y(u,G+16);i=y(u,G+17);k=y(u,G+18);j=y(u,G+19);o=B(u,G+20);m=B(u,G+20+4);q=B(u,G+20+8);p=B(u,G+20+12);n=B(u,G+20+16);r=B(u,G+20+20);s=
B(u,G+20+24);t=B(u,G+20+28);b=B(u,G+20+32);v=B(u,G+20+36);u=B(u,G+20+40);D=D+c;G=f*3+j;U=f*4+j;L=p*G;c=n*(G+i*3);f=r*(G+k*3);j=s*(G+i*3+k*3);G=t*U;i=b*(U+i*4);k=v*(U+k*4);U=D;var D=new Float32Array(a,D,o*3),O,K,V,ga;for(O=0;O<o;O++){K=D[O*3];V=D[O*3+1];ga=D[O*3+2];H.vertices.push(new THREE.Vector3(K,V,ga))}o=D=U+o*3*Float32Array.BYTES_PER_ELEMENT;if(m){D=new Int8Array(a,D,m*3);for(U=0;U<m;U++){O=D[U*3];K=D[U*3+1];V=D[U*3+2];I.push(O/127,K/127,V/127)}}D=o+m*3*Int8Array.BYTES_PER_ELEMENT;m=D=D+A(m*
B(u,G+20+24);t=B(u,G+20+28);b=B(u,G+20+32);v=B(u,G+20+36);u=B(u,G+20+40);D=D+c;G=f*3+j;U=f*4+j;L=p*G;c=n*(G+i*3);f=r*(G+k*3);j=s*(G+i*3+k*3);G=t*U;i=b*(U+i*4);k=v*(U+k*4);U=D;var D=new Float32Array(a,D,o*3),O,K,X,ga;for(O=0;O<o;O++){K=D[O*3];X=D[O*3+1];ga=D[O*3+2];H.vertices.push(new THREE.Vector3(K,X,ga))}o=D=U+o*3*Float32Array.BYTES_PER_ELEMENT;if(m){D=new Int8Array(a,D,m*3);for(U=0;U<m;U++){O=D[U*3];K=D[U*3+1];X=D[U*3+2];I.push(O/127,K/127,X/127)}}D=o+m*3*Int8Array.BYTES_PER_ELEMENT;m=D=D+A(m*
3);if(q){D=new Float32Array(a,D,q*2);for(o=0;o<q;o++){U=D[o*2];O=D[o*2+1];Q.push(U,O)}}q=D=m+q*2*Float32Array.BYTES_PER_ELEMENT;L=q+L+A(p*2);m=L+c+A(n*2);c=m+f+A(r*2);f=c+j+A(s*2);G=f+G+A(t*2);j=G+i+A(b*2);i=j+k+A(v*2);if(r){k=m+r*Uint32Array.BYTES_PER_ELEMENT*3;J(r,m,k+r*Uint32Array.BYTES_PER_ELEMENT*3);C(r,k)}if(s){r=c+s*Uint32Array.BYTES_PER_ELEMENT*3;k=r+s*Uint32Array.BYTES_PER_ELEMENT*3;N(s,c,r,k+s*Uint32Array.BYTES_PER_ELEMENT*3);C(s,k)}if(v){s=j+v*Uint32Array.BYTES_PER_ELEMENT*4;F(v,j,s+v*
Uint32Array.BYTES_PER_ELEMENT*4);w(v,s)}if(u){v=i+u*Uint32Array.BYTES_PER_ELEMENT*4;s=v+u*Uint32Array.BYTES_PER_ELEMENT*4;M(u,i,v,s+u*Uint32Array.BYTES_PER_ELEMENT*4);w(u,s)}p&&J(p,q,q+p*Uint32Array.BYTES_PER_ELEMENT*3);if(n){p=L+n*Uint32Array.BYTES_PER_ELEMENT*3;N(n,L,p,p+n*Uint32Array.BYTES_PER_ELEMENT*3)}t&&F(t,f,f+t*Uint32Array.BYTES_PER_ELEMENT*4);if(b){n=G+b*Uint32Array.BYTES_PER_ELEMENT*4;M(b,G,n,n+b*Uint32Array.BYTES_PER_ELEMENT*4)}this.computeCentroids();this.computeFaceNormals();THREE.Loader.prototype.hasNormals(this)&&
this.computeTangents()};f.prototype=Object.create(THREE.Geometry.prototype);b(new f(c))};THREE.ImageLoader=function(){THREE.EventTarget.call(this);this.crossOrigin=null};
......@@ -254,36 +254,36 @@ THREE.Scene.prototype.__addObject=function(a){if(a instanceof THREE.Light){this.
THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){var b=this.__lights.indexOf(a);b!==-1&&this.__lights.splice(b,1)}else if(!(a instanceof THREE.Camera)){b=this.__objects.indexOf(a);if(b!==-1){this.__objects.splice(b,1);this.__objectsRemoved.push(a);b=this.__objectsAdded.indexOf(a);b!==-1&&this.__objectsAdded.splice(b,1)}}for(b=0;b<a.children.length;b++)this.__removeObject(a.children[b])};
THREE.Fog=function(a,b,c){this.color=new THREE.Color(a);this.near=b!==void 0?b:1;this.far=c!==void 0?c:1E3};THREE.FogExp2=function(a,b){this.color=new THREE.Color(a);this.density=b!==void 0?b:2.5E-4};
THREE.CanvasRenderer=function(a){function b(a){if(t!==a)t=n.globalAlpha=a}function c(a){if(v!==a){if(a===THREE.NormalBlending)n.globalCompositeOperation="source-over";else if(a===THREE.AdditiveBlending)n.globalCompositeOperation="lighter";else if(a===THREE.SubtractiveBlending)n.globalCompositeOperation="darker";v=a}}function d(a){if(u!==a)u=n.strokeStyle=a}function f(a){if(A!==a)A=n.fillStyle=a}console.log("THREE.CanvasRenderer",THREE.REVISION);var a=a||{},e=this,g,h,i,k=new THREE.Projector,j=a.canvas!==
void 0?a.canvas:document.createElement("canvas"),o,m,q,p,n=j.getContext("2d"),r=new THREE.Color(0),s=0,t=1,v=0,u=null,A=null,y=null,B=null,C=null,w,J,F,N,M=new THREE.RenderableVertex,H=new THREE.RenderableVertex,D,I,Q,L,G,U,O,K,V,ga,ha,da,Y=new THREE.Color,ba=new THREE.Color,$=new THREE.Color,ca=new THREE.Color,ma=new THREE.Color,sa=[],$a=[],qa,Fa,Pa,Ta,Jb,rb,Rb,sb,cb,db,eb=new THREE.Rectangle,Ha=new THREE.Rectangle,Ba=new THREE.Rectangle,Wa=false,Ca=new THREE.Color,Qa=new THREE.Color,Ia=new THREE.Color,
ta=new THREE.Vector3,fb,l,bb,Ua,Kb,gb,a=16;fb=document.createElement("canvas");fb.width=fb.height=2;l=fb.getContext("2d");l.fillStyle="rgba(0,0,0,1)";l.fillRect(0,0,2,2);bb=l.getImageData(0,0,2,2);Ua=bb.data;Kb=document.createElement("canvas");Kb.width=Kb.height=a;gb=Kb.getContext("2d");gb.translate(-a/2,-a/2);gb.scale(a,a);a--;this.domElement=j;this.sortElements=this.sortObjects=this.autoClear=true;this.info={render:{vertices:0,faces:0}};this.setSize=function(a,b){o=a;m=b;q=Math.floor(o/2);p=Math.floor(m/
2);j.width=o;j.height=m;eb.set(-q,-p,q,p);Ha.set(-q,-p,q,p);t=1;v=0;C=B=y=A=u=null};this.setClearColor=function(a,b){r.copy(a);s=b!==void 0?b:1;Ha.set(-q,-p,q,p)};this.setClearColorHex=function(a,b){r.setHex(a);s=b!==void 0?b:1;Ha.set(-q,-p,q,p)};this.clear=function(){n.setTransform(1,0,0,-1,q,p);if(Ha.isEmpty()===false){Ha.minSelf(eb);Ha.inflate(2);s<1&&n.clearRect(Math.floor(Ha.getX()),Math.floor(Ha.getY()),Math.floor(Ha.getWidth()),Math.floor(Ha.getHeight()));if(s>0){c(THREE.NormalBlending);b(1);
f("rgba("+Math.floor(r.r*255)+","+Math.floor(r.g*255)+","+Math.floor(r.b*255)+","+s+")");n.fillRect(Math.floor(Ha.getX()),Math.floor(Ha.getY()),Math.floor(Ha.getWidth()),Math.floor(Ha.getHeight()))}Ha.empty()}};this.render=function(a,j){function o(a,b,c,d){var f,e,g,h,i,l;f=0;for(e=a.length;f<e;f++){g=a[f];h=g.color;if(g instanceof THREE.DirectionalLight){i=g.matrixWorld.getPosition().normalize();l=c.dot(i);if(!(l<=0)){l=l*g.intensity;d.r=d.r+h.r*l;d.g=d.g+h.g*l;d.b=d.b+h.b*l}}else if(g instanceof
void 0?a.canvas:document.createElement("canvas"),o,m,q,p,n=j.getContext("2d"),r=new THREE.Color(0),s=0,t=1,v=0,u=null,A=null,y=null,B=null,C=null,w,J,F,N,M=new THREE.RenderableVertex,H=new THREE.RenderableVertex,D,I,Q,L,G,U,O,K,X,ga,da,sa,Y=new THREE.Color,ba=new THREE.Color,$=new THREE.Color,ca=new THREE.Color,na=new THREE.Color,qa=[],Ba=[],oa,Ga,Qa,Ua,Jb,rb,Rb,sb,cb,db,eb=new THREE.Rectangle,Ia=new THREE.Rectangle,Ca=new THREE.Rectangle,Xa=false,Da=new THREE.Color,Ra=new THREE.Color,Ja=new THREE.Color,
ta=new THREE.Vector3,fb,l,bb,Va,Kb,gb,a=16;fb=document.createElement("canvas");fb.width=fb.height=2;l=fb.getContext("2d");l.fillStyle="rgba(0,0,0,1)";l.fillRect(0,0,2,2);bb=l.getImageData(0,0,2,2);Va=bb.data;Kb=document.createElement("canvas");Kb.width=Kb.height=a;gb=Kb.getContext("2d");gb.translate(-a/2,-a/2);gb.scale(a,a);a--;this.domElement=j;this.sortElements=this.sortObjects=this.autoClear=true;this.info={render:{vertices:0,faces:0}};this.setSize=function(a,b){o=a;m=b;q=Math.floor(o/2);p=Math.floor(m/
2);j.width=o;j.height=m;eb.set(-q,-p,q,p);Ia.set(-q,-p,q,p);t=1;v=0;C=B=y=A=u=null};this.setClearColor=function(a,b){r.copy(a);s=b!==void 0?b:1;Ia.set(-q,-p,q,p)};this.setClearColorHex=function(a,b){r.setHex(a);s=b!==void 0?b:1;Ia.set(-q,-p,q,p)};this.clear=function(){n.setTransform(1,0,0,-1,q,p);if(Ia.isEmpty()===false){Ia.minSelf(eb);Ia.inflate(2);s<1&&n.clearRect(Math.floor(Ia.getX()),Math.floor(Ia.getY()),Math.floor(Ia.getWidth()),Math.floor(Ia.getHeight()));if(s>0){c(THREE.NormalBlending);b(1);
f("rgba("+Math.floor(r.r*255)+","+Math.floor(r.g*255)+","+Math.floor(r.b*255)+","+s+")");n.fillRect(Math.floor(Ia.getX()),Math.floor(Ia.getY()),Math.floor(Ia.getWidth()),Math.floor(Ia.getHeight()))}Ia.empty()}};this.render=function(a,j){function o(a,b,c,d){var f,e,g,h,i,l;f=0;for(e=a.length;f<e;f++){g=a[f];h=g.color;if(g instanceof THREE.DirectionalLight){i=g.matrixWorld.getPosition().normalize();l=c.dot(i);if(!(l<=0)){l=l*g.intensity;d.r=d.r+h.r*l;d.g=d.g+h.g*l;d.b=d.b+h.b*l}}else if(g instanceof
THREE.PointLight){i=g.matrixWorld.getPosition();l=c.dot(ta.sub(i,b).normalize());if(!(l<=0)){l=l*(g.distance==0?1:1-Math.min(b.distanceTo(i)/g.distance,1));if(l!=0){l=l*g.intensity;d.r=d.r+h.r*l;d.g=d.g+h.g*l;d.b=d.b+h.b*l}}}}}function m(a,d,f,g,h,l,k,n){e.info.render.vertices=e.info.render.vertices+3;e.info.render.faces++;b(n.opacity);c(n.blending);D=a.positionScreen.x;I=a.positionScreen.y;Q=d.positionScreen.x;L=d.positionScreen.y;G=f.positionScreen.x;U=f.positionScreen.y;u(D,I,Q,L,G,U);if(n instanceof
THREE.MeshBasicMaterial)if(n.map!==null){if(n.map.mapping instanceof THREE.UVMapping){Ta=k.uvs[0];t(D,I,Q,L,G,U,Ta[g].u,Ta[g].v,Ta[h].u,Ta[h].v,Ta[l].u,Ta[l].v,n.map)}}else if(n.envMap!==null){if(n.envMap.mapping instanceof THREE.SphericalReflectionMapping){a=j.matrixWorldInverse;ta.copy(k.vertexNormalsWorld[g]);Jb=(ta.x*a.elements[0]+ta.y*a.elements[4]+ta.z*a.elements[8])*0.5+0.5;rb=(ta.x*a.elements[1]+ta.y*a.elements[5]+ta.z*a.elements[9])*0.5+0.5;ta.copy(k.vertexNormalsWorld[h]);Rb=(ta.x*a.elements[0]+
ta.y*a.elements[4]+ta.z*a.elements[8])*0.5+0.5;sb=(ta.x*a.elements[1]+ta.y*a.elements[5]+ta.z*a.elements[9])*0.5+0.5;ta.copy(k.vertexNormalsWorld[l]);cb=(ta.x*a.elements[0]+ta.y*a.elements[4]+ta.z*a.elements[8])*0.5+0.5;db=(ta.x*a.elements[1]+ta.y*a.elements[5]+ta.z*a.elements[9])*0.5+0.5;t(D,I,Q,L,G,U,Jb,rb,Rb,sb,cb,db,n.envMap)}}else n.wireframe===true?r(n.color,n.wireframeLinewidth,n.wireframeLinecap,n.wireframeLinejoin):s(n.color);else if(n instanceof THREE.MeshLambertMaterial)if(Wa===true)if(n.wireframe===
false&&n.shading==THREE.SmoothShading&&k.vertexNormalsWorld.length==3){ba.r=$.r=ca.r=Ca.r;ba.g=$.g=ca.g=Ca.g;ba.b=$.b=ca.b=Ca.b;o(i,k.v1.positionWorld,k.vertexNormalsWorld[0],ba);o(i,k.v2.positionWorld,k.vertexNormalsWorld[1],$);o(i,k.v3.positionWorld,k.vertexNormalsWorld[2],ca);ba.r=Math.max(0,Math.min(n.color.r*ba.r,1));ba.g=Math.max(0,Math.min(n.color.g*ba.g,1));ba.b=Math.max(0,Math.min(n.color.b*ba.b,1));$.r=Math.max(0,Math.min(n.color.r*$.r,1));$.g=Math.max(0,Math.min(n.color.g*$.g,1));$.b=Math.max(0,
Math.min(n.color.b*$.b,1));ca.r=Math.max(0,Math.min(n.color.r*ca.r,1));ca.g=Math.max(0,Math.min(n.color.g*ca.g,1));ca.b=Math.max(0,Math.min(n.color.b*ca.b,1));ma.r=($.r+ca.r)*0.5;ma.g=($.g+ca.g)*0.5;ma.b=($.b+ca.b)*0.5;Pa=A(ba,$,ca,ma);v(D,I,Q,L,G,U,0,0,1,0,0,1,Pa)}else{Y.r=Ca.r;Y.g=Ca.g;Y.b=Ca.b;o(i,k.centroidWorld,k.normalWorld,Y);Y.r=Math.max(0,Math.min(n.color.r*Y.r,1));Y.g=Math.max(0,Math.min(n.color.g*Y.g,1));Y.b=Math.max(0,Math.min(n.color.b*Y.b,1));n.wireframe===true?r(Y,n.wireframeLinewidth,
n.wireframeLinecap,n.wireframeLinejoin):s(Y)}else n.wireframe===true?r(n.color,n.wireframeLinewidth,n.wireframeLinecap,n.wireframeLinejoin):s(n.color);else if(n instanceof THREE.MeshDepthMaterial){qa=j.near;Fa=j.far;ba.r=ba.g=ba.b=1-dc(a.positionScreen.z,qa,Fa);$.r=$.g=$.b=1-dc(d.positionScreen.z,qa,Fa);ca.r=ca.g=ca.b=1-dc(f.positionScreen.z,qa,Fa);ma.r=($.r+ca.r)*0.5;ma.g=($.g+ca.g)*0.5;ma.b=($.b+ca.b)*0.5;Pa=A(ba,$,ca,ma);v(D,I,Q,L,G,U,0,0,1,0,0,1,Pa)}else if(n instanceof THREE.MeshNormalMaterial){Y.r=
ic(k.normalWorld.x);Y.g=ic(k.normalWorld.y);Y.b=ic(k.normalWorld.z);n.wireframe===true?r(Y,n.wireframeLinewidth,n.wireframeLinecap,n.wireframeLinejoin):s(Y)}}function u(a,b,c,d,f,e){n.beginPath();n.moveTo(a,b);n.lineTo(c,d);n.lineTo(f,e);n.lineTo(a,b)}function Sb(a,b,c,d,f,e,g,h){n.beginPath();n.moveTo(a,b);n.lineTo(c,d);n.lineTo(f,e);n.lineTo(g,h);n.lineTo(a,b)}function r(a,b,c,f){if(y!==b)y=n.lineWidth=b;if(B!==c)B=n.lineCap=c;if(C!==f)C=n.lineJoin=f;d(a.getContextStyle());n.stroke();Ba.inflate(b*
2)}function s(a){f(a.getContextStyle());n.fill()}function t(a,b,c,d,e,g,h,i,l,j,k,o,m){if(!(m.image===void 0||m.image.width===0)){if(m.needsUpdate===true||sa[m.id]===void 0){var p=m.wrapS==THREE.RepeatWrapping,cc=m.wrapT==THREE.RepeatWrapping;sa[m.id]=n.createPattern(m.image,p===true&&cc===true?"repeat":p===true&&cc===false?"repeat-x":p===false&&cc===true?"repeat-y":"no-repeat");m.needsUpdate=false}f(sa[m.id]);var p=m.offset.x/m.repeat.x,cc=m.offset.y/m.repeat.y,q=m.image.width*m.repeat.x,Sb=m.image.height*
m.repeat.y,h=(h+p)*q,i=(1-i+cc)*Sb,c=c-a,d=d-b,e=e-a,g=g-b,l=(l+p)*q-h,j=(1-j+cc)*Sb-i,k=(k+p)*q-h,o=(1-o+cc)*Sb-i,p=l*o-k*j;if(p===0){if($a[m.id]===void 0){b=document.createElement("canvas");b.width=m.image.width;b.height=m.image.height;b=b.getContext("2d");b.drawImage(m.image,0,0);$a[m.id]=b.getImageData(0,0,m.image.width,m.image.height).data}b=$a[m.id];h=(Math.floor(h)+Math.floor(i)*m.image.width)*4;Y.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255);s(Y)}else{p=1/p;m=(o*c-j*e)*p;j=(o*d-j*g)*p;c=(l*e-k*c)*
THREE.MeshBasicMaterial)if(n.map!==null){if(n.map.mapping instanceof THREE.UVMapping){Ua=k.uvs[0];t(D,I,Q,L,G,U,Ua[g].u,Ua[g].v,Ua[h].u,Ua[h].v,Ua[l].u,Ua[l].v,n.map)}}else if(n.envMap!==null){if(n.envMap.mapping instanceof THREE.SphericalReflectionMapping){a=j.matrixWorldInverse;ta.copy(k.vertexNormalsWorld[g]);Jb=(ta.x*a.elements[0]+ta.y*a.elements[4]+ta.z*a.elements[8])*0.5+0.5;rb=(ta.x*a.elements[1]+ta.y*a.elements[5]+ta.z*a.elements[9])*0.5+0.5;ta.copy(k.vertexNormalsWorld[h]);Rb=(ta.x*a.elements[0]+
ta.y*a.elements[4]+ta.z*a.elements[8])*0.5+0.5;sb=(ta.x*a.elements[1]+ta.y*a.elements[5]+ta.z*a.elements[9])*0.5+0.5;ta.copy(k.vertexNormalsWorld[l]);cb=(ta.x*a.elements[0]+ta.y*a.elements[4]+ta.z*a.elements[8])*0.5+0.5;db=(ta.x*a.elements[1]+ta.y*a.elements[5]+ta.z*a.elements[9])*0.5+0.5;t(D,I,Q,L,G,U,Jb,rb,Rb,sb,cb,db,n.envMap)}}else n.wireframe===true?r(n.color,n.wireframeLinewidth,n.wireframeLinecap,n.wireframeLinejoin):s(n.color);else if(n instanceof THREE.MeshLambertMaterial)if(Xa===true)if(n.wireframe===
false&&n.shading==THREE.SmoothShading&&k.vertexNormalsLength==3){ba.r=$.r=ca.r=Da.r;ba.g=$.g=ca.g=Da.g;ba.b=$.b=ca.b=Da.b;o(i,k.v1.positionWorld,k.vertexNormalsWorld[0],ba);o(i,k.v2.positionWorld,k.vertexNormalsWorld[1],$);o(i,k.v3.positionWorld,k.vertexNormalsWorld[2],ca);ba.r=Math.max(0,Math.min(n.color.r*ba.r,1));ba.g=Math.max(0,Math.min(n.color.g*ba.g,1));ba.b=Math.max(0,Math.min(n.color.b*ba.b,1));$.r=Math.max(0,Math.min(n.color.r*$.r,1));$.g=Math.max(0,Math.min(n.color.g*$.g,1));$.b=Math.max(0,
Math.min(n.color.b*$.b,1));ca.r=Math.max(0,Math.min(n.color.r*ca.r,1));ca.g=Math.max(0,Math.min(n.color.g*ca.g,1));ca.b=Math.max(0,Math.min(n.color.b*ca.b,1));na.r=($.r+ca.r)*0.5;na.g=($.g+ca.g)*0.5;na.b=($.b+ca.b)*0.5;Qa=A(ba,$,ca,na);v(D,I,Q,L,G,U,0,0,1,0,0,1,Qa)}else{Y.r=Da.r;Y.g=Da.g;Y.b=Da.b;o(i,k.centroidWorld,k.normalWorld,Y);Y.r=Math.max(0,Math.min(n.color.r*Y.r,1));Y.g=Math.max(0,Math.min(n.color.g*Y.g,1));Y.b=Math.max(0,Math.min(n.color.b*Y.b,1));n.wireframe===true?r(Y,n.wireframeLinewidth,
n.wireframeLinecap,n.wireframeLinejoin):s(Y)}else n.wireframe===true?r(n.color,n.wireframeLinewidth,n.wireframeLinecap,n.wireframeLinejoin):s(n.color);else if(n instanceof THREE.MeshDepthMaterial){oa=j.near;Ga=j.far;ba.r=ba.g=ba.b=1-dc(a.positionScreen.z,oa,Ga);$.r=$.g=$.b=1-dc(d.positionScreen.z,oa,Ga);ca.r=ca.g=ca.b=1-dc(f.positionScreen.z,oa,Ga);na.r=($.r+ca.r)*0.5;na.g=($.g+ca.g)*0.5;na.b=($.b+ca.b)*0.5;Qa=A(ba,$,ca,na);v(D,I,Q,L,G,U,0,0,1,0,0,1,Qa)}else if(n instanceof THREE.MeshNormalMaterial){Y.r=
ic(k.normalWorld.x);Y.g=ic(k.normalWorld.y);Y.b=ic(k.normalWorld.z);n.wireframe===true?r(Y,n.wireframeLinewidth,n.wireframeLinecap,n.wireframeLinejoin):s(Y)}}function u(a,b,c,d,f,e){n.beginPath();n.moveTo(a,b);n.lineTo(c,d);n.lineTo(f,e);n.closePath()}function Sb(a,b,c,d,f,e,g,h){n.beginPath();n.moveTo(a,b);n.lineTo(c,d);n.lineTo(f,e);n.lineTo(g,h);n.closePath()}function r(a,b,c,f){if(y!==b)y=n.lineWidth=b;if(B!==c)B=n.lineCap=c;if(C!==f)C=n.lineJoin=f;d(a.getContextStyle());n.stroke();Ca.inflate(b*
2)}function s(a){f(a.getContextStyle());n.fill()}function t(a,b,c,d,e,g,h,i,l,j,k,o,m){if(!(m.image===void 0||m.image.width===0)){if(m.needsUpdate===true||qa[m.id]===void 0){var p=m.wrapS==THREE.RepeatWrapping,cc=m.wrapT==THREE.RepeatWrapping;qa[m.id]=n.createPattern(m.image,p===true&&cc===true?"repeat":p===true&&cc===false?"repeat-x":p===false&&cc===true?"repeat-y":"no-repeat");m.needsUpdate=false}f(qa[m.id]);var p=m.offset.x/m.repeat.x,cc=m.offset.y/m.repeat.y,q=m.image.width*m.repeat.x,Sb=m.image.height*
m.repeat.y,h=(h+p)*q,i=(1-i+cc)*Sb,c=c-a,d=d-b,e=e-a,g=g-b,l=(l+p)*q-h,j=(1-j+cc)*Sb-i,k=(k+p)*q-h,o=(1-o+cc)*Sb-i,p=l*o-k*j;if(p===0){if(Ba[m.id]===void 0){b=document.createElement("canvas");b.width=m.image.width;b.height=m.image.height;b=b.getContext("2d");b.drawImage(m.image,0,0);Ba[m.id]=b.getImageData(0,0,m.image.width,m.image.height).data}b=Ba[m.id];h=(Math.floor(h)+Math.floor(i)*m.image.width)*4;Y.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255);s(Y)}else{p=1/p;m=(o*c-j*e)*p;j=(o*d-j*g)*p;c=(l*e-k*c)*
p;d=(l*g-k*d)*p;a=a-m*h-c*i;h=b-j*h-d*i;n.save();n.transform(m,j,c,d,a,h);n.fill();n.restore()}}}function v(a,b,c,d,f,e,g,h,i,l,j,k,m){var o,p;o=m.width-1;p=m.height-1;g=g*o;h=h*p;c=c-a;d=d-b;f=f-a;e=e-b;i=i*o-g;l=l*p-h;j=j*o-g;k=k*p-h;p=1/(i*k-j*l);o=(k*c-l*f)*p;l=(k*d-l*e)*p;c=(i*f-j*c)*p;d=(i*e-j*d)*p;a=a-o*g-c*h;b=b-l*g-d*h;n.save();n.transform(o,l,c,d,a,b);n.clip();n.drawImage(m,0,0);n.restore()}function A(a,b,c,d){var f=~~(a.r*255),e=~~(a.g*255),a=~~(a.b*255),g=~~(b.r*255),h=~~(b.g*255),b=~~(b.b*
255),i=~~(c.r*255),j=~~(c.g*255),c=~~(c.b*255),k=~~(d.r*255),m=~~(d.g*255),d=~~(d.b*255);Ua[0]=f<0?0:f>255?255:f;Ua[1]=e<0?0:e>255?255:e;Ua[2]=a<0?0:a>255?255:a;Ua[4]=g<0?0:g>255?255:g;Ua[5]=h<0?0:h>255?255:h;Ua[6]=b<0?0:b>255?255:b;Ua[8]=i<0?0:i>255?255:i;Ua[9]=j<0?0:j>255?255:j;Ua[10]=c<0?0:c>255?255:c;Ua[12]=k<0?0:k>255?255:k;Ua[13]=m<0?0:m>255?255:m;Ua[14]=d<0?0:d>255?255:d;l.putImageData(bb,0,0);gb.drawImage(fb,0,0);return Kb}function dc(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function ic(a){a=
(a+1)*0.5;return a<0?0:a>1?1:a}function Tb(a,b){var c=b.x-a.x,d=b.y-a.y,f=c*c+d*d;if(f!==0){f=1/Math.sqrt(f);c=c*f;d=d*f;b.x=b.x+c;b.y=b.y+d;a.x=a.x-c;a.y=a.y-d}}if(j instanceof THREE.Camera===false)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");else{var ec,jc,ka,X;this.autoClear===true?this.clear():n.setTransform(1,0,0,-1,q,p);e.info.render.vertices=0;e.info.render.faces=0;g=k.projectScene(a,j,this.sortElements);h=g.elements;i=g.lights;Wa=i.length>0;if(Wa===
true){ec=i;var ia,va;Ca.setRGB(0,0,0);Qa.setRGB(0,0,0);Ia.setRGB(0,0,0);jc=0;for(X=ec.length;jc<X;jc++){ia=ec[jc];va=ia.color;if(ia instanceof THREE.AmbientLight){Ca.r=Ca.r+va.r;Ca.g=Ca.g+va.g;Ca.b=Ca.b+va.b}else if(ia instanceof THREE.DirectionalLight){Qa.r=Qa.r+va.r;Qa.g=Qa.g+va.g;Qa.b=Qa.b+va.b}else if(ia instanceof THREE.PointLight){Ia.r=Ia.r+va.r;Ia.g=Ia.g+va.g;Ia.b=Ia.b+va.b}}}ec=0;for(jc=h.length;ec<jc;ec++){ka=h[ec];X=ka.material;if(!(X===void 0||X.visible===false)){Ba.empty();if(ka instanceof
THREE.RenderableParticle){w=ka;w.x=w.x*q;w.y=w.y*p;ia=w;va=ka;b(X.opacity);c(X.blending);var nb=void 0,ob=void 0,hb=void 0,ib=void 0,kc=ka=void 0,Qc=void 0;if(X instanceof THREE.ParticleBasicMaterial)if(X.map===null){hb=va.object.scale.x;ib=va.object.scale.y;hb=hb*va.scale.x*q;ib=ib*va.scale.y*p;Ba.set(ia.x-hb,ia.y-ib,ia.x+hb,ia.y+ib);if(eb.intersects(Ba)!==false){f(X.color.getContextStyle());n.save();n.translate(ia.x,ia.y);n.rotate(-va.rotation);n.scale(hb,ib);n.fillRect(-1,-1,2,2);n.restore()}}else{ka=
X.map.image;kc=ka.width>>1;Qc=ka.height>>1;hb=va.scale.x*q;ib=va.scale.y*p;nb=hb*kc;ob=ib*Qc;Ba.set(ia.x-nb,ia.y-ob,ia.x+nb,ia.y+ob);if(eb.intersects(Ba)!==false){n.save();n.translate(ia.x,ia.y);n.rotate(-va.rotation);n.scale(hb,-ib);n.translate(-kc,-Qc);n.drawImage(ka,0,0);n.restore()}}else if(X instanceof THREE.ParticleCanvasMaterial){nb=va.scale.x*q;ob=va.scale.y*p;Ba.set(ia.x-nb,ia.y-ob,ia.x+nb,ia.y+ob);if(eb.intersects(Ba)!==false){d(X.color.getContextStyle());f(X.color.getContextStyle());n.save();
n.translate(ia.x,ia.y);n.rotate(-va.rotation);n.scale(nb,ob);X.program(n);n.restore()}}}else if(ka instanceof THREE.RenderableLine){w=ka.v1;J=ka.v2;w.positionScreen.x=w.positionScreen.x*q;w.positionScreen.y=w.positionScreen.y*p;J.positionScreen.x=J.positionScreen.x*q;J.positionScreen.y=J.positionScreen.y*p;Ba.addPoint(w.positionScreen.x,w.positionScreen.y);Ba.addPoint(J.positionScreen.x,J.positionScreen.y);if(eb.intersects(Ba)===true){ia=w;va=J;b(X.opacity);c(X.blending);n.beginPath();n.moveTo(ia.positionScreen.x,
ia.positionScreen.y);n.lineTo(va.positionScreen.x,va.positionScreen.y);n.closePath();if(X instanceof THREE.LineBasicMaterial){ia=X.linewidth;if(y!==ia)y=n.lineWidth=ia;ia=X.linecap;if(B!==ia)B=n.lineCap=ia;ia=X.linejoin;if(C!==ia)C=n.lineJoin=ia;d(X.color.getContextStyle());n.stroke();Ba.inflate(X.linewidth*2)}}}else if(ka instanceof THREE.RenderableFace3){w=ka.v1;J=ka.v2;F=ka.v3;w.positionScreen.x=w.positionScreen.x*q;w.positionScreen.y=w.positionScreen.y*p;J.positionScreen.x=J.positionScreen.x*
q;J.positionScreen.y=J.positionScreen.y*p;F.positionScreen.x=F.positionScreen.x*q;F.positionScreen.y=F.positionScreen.y*p;if(X.overdraw===true){Tb(w.positionScreen,J.positionScreen);Tb(J.positionScreen,F.positionScreen);Tb(F.positionScreen,w.positionScreen)}Ba.add3Points(w.positionScreen.x,w.positionScreen.y,J.positionScreen.x,J.positionScreen.y,F.positionScreen.x,F.positionScreen.y);eb.intersects(Ba)===true&&m(w,J,F,0,1,2,ka,X,a)}else if(ka instanceof THREE.RenderableFace4){w=ka.v1;J=ka.v2;F=ka.v3;
N=ka.v4;w.positionScreen.x=w.positionScreen.x*q;w.positionScreen.y=w.positionScreen.y*p;J.positionScreen.x=J.positionScreen.x*q;J.positionScreen.y=J.positionScreen.y*p;F.positionScreen.x=F.positionScreen.x*q;F.positionScreen.y=F.positionScreen.y*p;N.positionScreen.x=N.positionScreen.x*q;N.positionScreen.y=N.positionScreen.y*p;M.positionScreen.copy(J.positionScreen);H.positionScreen.copy(N.positionScreen);if(X.overdraw===true){Tb(w.positionScreen,J.positionScreen);Tb(J.positionScreen,N.positionScreen);
Tb(N.positionScreen,w.positionScreen);Tb(F.positionScreen,M.positionScreen);Tb(F.positionScreen,H.positionScreen)}Ba.addPoint(w.positionScreen.x,w.positionScreen.y);Ba.addPoint(J.positionScreen.x,J.positionScreen.y);Ba.addPoint(F.positionScreen.x,F.positionScreen.y);Ba.addPoint(N.positionScreen.x,N.positionScreen.y);if(eb.intersects(Ba)===true){ia=w;va=J;nb=F;ob=N;hb=M;ib=H;kc=a;e.info.render.vertices=e.info.render.vertices+4;e.info.render.faces++;b(X.opacity);c(X.blending);if(X.map!==void 0&&X.map!==
null||X.envMap!==void 0&&X.envMap!==null){m(ia,va,ob,0,1,3,ka,X,kc);m(hb,nb,ib,1,2,3,ka,X,kc)}else{D=ia.positionScreen.x;I=ia.positionScreen.y;Q=va.positionScreen.x;L=va.positionScreen.y;G=nb.positionScreen.x;U=nb.positionScreen.y;O=ob.positionScreen.x;K=ob.positionScreen.y;V=hb.positionScreen.x;ga=hb.positionScreen.y;ha=ib.positionScreen.x;da=ib.positionScreen.y;if(X instanceof THREE.MeshBasicMaterial){Sb(D,I,Q,L,G,U,O,K);X.wireframe===true?r(X.color,X.wireframeLinewidth,X.wireframeLinecap,X.wireframeLinejoin):
s(X.color)}else if(X instanceof THREE.MeshLambertMaterial)if(Wa===true)if(!X.wireframe&&X.shading==THREE.SmoothShading&&ka.vertexNormalsWorld.length==4){ba.r=$.r=ca.r=ma.r=Ca.r;ba.g=$.g=ca.g=ma.g=Ca.g;ba.b=$.b=ca.b=ma.b=Ca.b;o(i,ka.v1.positionWorld,ka.vertexNormalsWorld[0],ba);o(i,ka.v2.positionWorld,ka.vertexNormalsWorld[1],$);o(i,ka.v4.positionWorld,ka.vertexNormalsWorld[3],ca);o(i,ka.v3.positionWorld,ka.vertexNormalsWorld[2],ma);ba.r=Math.max(0,Math.min(X.color.r*ba.r,1));ba.g=Math.max(0,Math.min(X.color.g*
ba.g,1));ba.b=Math.max(0,Math.min(X.color.b*ba.b,1));$.r=Math.max(0,Math.min(X.color.r*$.r,1));$.g=Math.max(0,Math.min(X.color.g*$.g,1));$.b=Math.max(0,Math.min(X.color.b*$.b,1));ca.r=Math.max(0,Math.min(X.color.r*ca.r,1));ca.g=Math.max(0,Math.min(X.color.g*ca.g,1));ca.b=Math.max(0,Math.min(X.color.b*ca.b,1));ma.r=Math.max(0,Math.min(X.color.r*ma.r,1));ma.g=Math.max(0,Math.min(X.color.g*ma.g,1));ma.b=Math.max(0,Math.min(X.color.b*ma.b,1));Pa=A(ba,$,ca,ma);u(D,I,Q,L,O,K);v(D,I,Q,L,O,K,0,0,1,0,0,1,
Pa);u(V,ga,G,U,ha,da);v(V,ga,G,U,ha,da,1,0,1,1,0,1,Pa)}else{Y.r=Ca.r;Y.g=Ca.g;Y.b=Ca.b;o(i,ka.centroidWorld,ka.normalWorld,Y);Y.r=Math.max(0,Math.min(X.color.r*Y.r,1));Y.g=Math.max(0,Math.min(X.color.g*Y.g,1));Y.b=Math.max(0,Math.min(X.color.b*Y.b,1));Sb(D,I,Q,L,G,U,O,K);X.wireframe===true?r(Y,X.wireframeLinewidth,X.wireframeLinecap,X.wireframeLinejoin):s(Y)}else{Sb(D,I,Q,L,G,U,O,K);X.wireframe===true?r(X.color,X.wireframeLinewidth,X.wireframeLinecap,X.wireframeLinejoin):s(X.color)}else if(X instanceof
THREE.MeshNormalMaterial){Y.r=ic(ka.normalWorld.x);Y.g=ic(ka.normalWorld.y);Y.b=ic(ka.normalWorld.z);Sb(D,I,Q,L,G,U,O,K);X.wireframe===true?r(Y,X.wireframeLinewidth,X.wireframeLinecap,X.wireframeLinejoin):s(Y)}else if(X instanceof THREE.MeshDepthMaterial){qa=j.near;Fa=j.far;ba.r=ba.g=ba.b=1-dc(ia.positionScreen.z,qa,Fa);$.r=$.g=$.b=1-dc(va.positionScreen.z,qa,Fa);ca.r=ca.g=ca.b=1-dc(ob.positionScreen.z,qa,Fa);ma.r=ma.g=ma.b=1-dc(nb.positionScreen.z,qa,Fa);Pa=A(ba,$,ca,ma);u(D,I,Q,L,O,K);v(D,I,Q,L,
O,K,0,0,1,0,0,1,Pa);u(V,ga,G,U,ha,da);v(V,ga,G,U,ha,da,1,0,1,1,0,1,Pa)}}}}Ha.addRectangle(Ba)}}n.setTransform(1,0,0,1,0,0)}}};
255),i=~~(c.r*255),j=~~(c.g*255),c=~~(c.b*255),k=~~(d.r*255),m=~~(d.g*255),d=~~(d.b*255);Va[0]=f<0?0:f>255?255:f;Va[1]=e<0?0:e>255?255:e;Va[2]=a<0?0:a>255?255:a;Va[4]=g<0?0:g>255?255:g;Va[5]=h<0?0:h>255?255:h;Va[6]=b<0?0:b>255?255:b;Va[8]=i<0?0:i>255?255:i;Va[9]=j<0?0:j>255?255:j;Va[10]=c<0?0:c>255?255:c;Va[12]=k<0?0:k>255?255:k;Va[13]=m<0?0:m>255?255:m;Va[14]=d<0?0:d>255?255:d;l.putImageData(bb,0,0);gb.drawImage(fb,0,0);return Kb}function dc(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function ic(a){a=
(a+1)*0.5;return a<0?0:a>1?1:a}function Tb(a,b){var c=b.x-a.x,d=b.y-a.y,f=c*c+d*d;if(f!==0){f=1/Math.sqrt(f);c=c*f;d=d*f;b.x=b.x+c;b.y=b.y+d;a.x=a.x-c;a.y=a.y-d}}if(j instanceof THREE.Camera===false)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");else{var ec,jc,ja,W;this.autoClear===true?this.clear():n.setTransform(1,0,0,-1,q,p);e.info.render.vertices=0;e.info.render.faces=0;g=k.projectScene(a,j,this.sortElements);h=g.elements;i=g.lights;Xa=i.length>0;if(Xa===
true){ec=i;var ha,va;Da.setRGB(0,0,0);Ra.setRGB(0,0,0);Ja.setRGB(0,0,0);jc=0;for(W=ec.length;jc<W;jc++){ha=ec[jc];va=ha.color;if(ha instanceof THREE.AmbientLight){Da.r=Da.r+va.r;Da.g=Da.g+va.g;Da.b=Da.b+va.b}else if(ha instanceof THREE.DirectionalLight){Ra.r=Ra.r+va.r;Ra.g=Ra.g+va.g;Ra.b=Ra.b+va.b}else if(ha instanceof THREE.PointLight){Ja.r=Ja.r+va.r;Ja.g=Ja.g+va.g;Ja.b=Ja.b+va.b}}}ec=0;for(jc=h.length;ec<jc;ec++){ja=h[ec];W=ja.material;if(!(W===void 0||W.visible===false)){Ca.empty();if(ja instanceof
THREE.RenderableParticle){w=ja;w.x=w.x*q;w.y=w.y*p;ha=w;va=ja;b(W.opacity);c(W.blending);var nb=void 0,ob=void 0,hb=void 0,ib=void 0,kc=ja=void 0,Qc=void 0;if(W instanceof THREE.ParticleBasicMaterial)if(W.map===null){hb=va.object.scale.x;ib=va.object.scale.y;hb=hb*va.scale.x*q;ib=ib*va.scale.y*p;Ca.set(ha.x-hb,ha.y-ib,ha.x+hb,ha.y+ib);if(eb.intersects(Ca)!==false){f(W.color.getContextStyle());n.save();n.translate(ha.x,ha.y);n.rotate(-va.rotation);n.scale(hb,ib);n.fillRect(-1,-1,2,2);n.restore()}}else{ja=
W.map.image;kc=ja.width>>1;Qc=ja.height>>1;hb=va.scale.x*q;ib=va.scale.y*p;nb=hb*kc;ob=ib*Qc;Ca.set(ha.x-nb,ha.y-ob,ha.x+nb,ha.y+ob);if(eb.intersects(Ca)!==false){n.save();n.translate(ha.x,ha.y);n.rotate(-va.rotation);n.scale(hb,-ib);n.translate(-kc,-Qc);n.drawImage(ja,0,0);n.restore()}}else if(W instanceof THREE.ParticleCanvasMaterial){nb=va.scale.x*q;ob=va.scale.y*p;Ca.set(ha.x-nb,ha.y-ob,ha.x+nb,ha.y+ob);if(eb.intersects(Ca)!==false){d(W.color.getContextStyle());f(W.color.getContextStyle());n.save();
n.translate(ha.x,ha.y);n.rotate(-va.rotation);n.scale(nb,ob);W.program(n);n.restore()}}}else if(ja instanceof THREE.RenderableLine){w=ja.v1;J=ja.v2;w.positionScreen.x=w.positionScreen.x*q;w.positionScreen.y=w.positionScreen.y*p;J.positionScreen.x=J.positionScreen.x*q;J.positionScreen.y=J.positionScreen.y*p;Ca.addPoint(w.positionScreen.x,w.positionScreen.y);Ca.addPoint(J.positionScreen.x,J.positionScreen.y);if(eb.intersects(Ca)===true){ha=w;va=J;b(W.opacity);c(W.blending);n.beginPath();n.moveTo(ha.positionScreen.x,
ha.positionScreen.y);n.lineTo(va.positionScreen.x,va.positionScreen.y);if(W instanceof THREE.LineBasicMaterial){ha=W.linewidth;if(y!==ha)y=n.lineWidth=ha;ha=W.linecap;if(B!==ha)B=n.lineCap=ha;ha=W.linejoin;if(C!==ha)C=n.lineJoin=ha;d(W.color.getContextStyle());n.stroke();Ca.inflate(W.linewidth*2)}}}else if(ja instanceof THREE.RenderableFace3){w=ja.v1;J=ja.v2;F=ja.v3;w.positionScreen.x=w.positionScreen.x*q;w.positionScreen.y=w.positionScreen.y*p;J.positionScreen.x=J.positionScreen.x*q;J.positionScreen.y=
J.positionScreen.y*p;F.positionScreen.x=F.positionScreen.x*q;F.positionScreen.y=F.positionScreen.y*p;if(W.overdraw===true){Tb(w.positionScreen,J.positionScreen);Tb(J.positionScreen,F.positionScreen);Tb(F.positionScreen,w.positionScreen)}Ca.add3Points(w.positionScreen.x,w.positionScreen.y,J.positionScreen.x,J.positionScreen.y,F.positionScreen.x,F.positionScreen.y);eb.intersects(Ca)===true&&m(w,J,F,0,1,2,ja,W,a)}else if(ja instanceof THREE.RenderableFace4){w=ja.v1;J=ja.v2;F=ja.v3;N=ja.v4;w.positionScreen.x=
w.positionScreen.x*q;w.positionScreen.y=w.positionScreen.y*p;J.positionScreen.x=J.positionScreen.x*q;J.positionScreen.y=J.positionScreen.y*p;F.positionScreen.x=F.positionScreen.x*q;F.positionScreen.y=F.positionScreen.y*p;N.positionScreen.x=N.positionScreen.x*q;N.positionScreen.y=N.positionScreen.y*p;M.positionScreen.copy(J.positionScreen);H.positionScreen.copy(N.positionScreen);if(W.overdraw===true){Tb(w.positionScreen,J.positionScreen);Tb(J.positionScreen,N.positionScreen);Tb(N.positionScreen,w.positionScreen);
Tb(F.positionScreen,M.positionScreen);Tb(F.positionScreen,H.positionScreen)}Ca.addPoint(w.positionScreen.x,w.positionScreen.y);Ca.addPoint(J.positionScreen.x,J.positionScreen.y);Ca.addPoint(F.positionScreen.x,F.positionScreen.y);Ca.addPoint(N.positionScreen.x,N.positionScreen.y);if(eb.intersects(Ca)===true){ha=w;va=J;nb=F;ob=N;hb=M;ib=H;kc=a;e.info.render.vertices=e.info.render.vertices+4;e.info.render.faces++;b(W.opacity);c(W.blending);if(W.map!==void 0&&W.map!==null||W.envMap!==void 0&&W.envMap!==
null){m(ha,va,ob,0,1,3,ja,W,kc);m(hb,nb,ib,1,2,3,ja,W,kc)}else{D=ha.positionScreen.x;I=ha.positionScreen.y;Q=va.positionScreen.x;L=va.positionScreen.y;G=nb.positionScreen.x;U=nb.positionScreen.y;O=ob.positionScreen.x;K=ob.positionScreen.y;X=hb.positionScreen.x;ga=hb.positionScreen.y;da=ib.positionScreen.x;sa=ib.positionScreen.y;if(W instanceof THREE.MeshBasicMaterial){Sb(D,I,Q,L,G,U,O,K);W.wireframe===true?r(W.color,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):s(W.color)}else if(W instanceof
THREE.MeshLambertMaterial)if(Xa===true)if(!W.wireframe&&W.shading==THREE.SmoothShading&&ja.vertexNormalsLength==4){ba.r=$.r=ca.r=na.r=Da.r;ba.g=$.g=ca.g=na.g=Da.g;ba.b=$.b=ca.b=na.b=Da.b;o(i,ja.v1.positionWorld,ja.vertexNormalsWorld[0],ba);o(i,ja.v2.positionWorld,ja.vertexNormalsWorld[1],$);o(i,ja.v4.positionWorld,ja.vertexNormalsWorld[3],ca);o(i,ja.v3.positionWorld,ja.vertexNormalsWorld[2],na);ba.r=Math.max(0,Math.min(W.color.r*ba.r,1));ba.g=Math.max(0,Math.min(W.color.g*ba.g,1));ba.b=Math.max(0,
Math.min(W.color.b*ba.b,1));$.r=Math.max(0,Math.min(W.color.r*$.r,1));$.g=Math.max(0,Math.min(W.color.g*$.g,1));$.b=Math.max(0,Math.min(W.color.b*$.b,1));ca.r=Math.max(0,Math.min(W.color.r*ca.r,1));ca.g=Math.max(0,Math.min(W.color.g*ca.g,1));ca.b=Math.max(0,Math.min(W.color.b*ca.b,1));na.r=Math.max(0,Math.min(W.color.r*na.r,1));na.g=Math.max(0,Math.min(W.color.g*na.g,1));na.b=Math.max(0,Math.min(W.color.b*na.b,1));Qa=A(ba,$,ca,na);u(D,I,Q,L,O,K);v(D,I,Q,L,O,K,0,0,1,0,0,1,Qa);u(X,ga,G,U,da,sa);v(X,
ga,G,U,da,sa,1,0,1,1,0,1,Qa)}else{Y.r=Da.r;Y.g=Da.g;Y.b=Da.b;o(i,ja.centroidWorld,ja.normalWorld,Y);Y.r=Math.max(0,Math.min(W.color.r*Y.r,1));Y.g=Math.max(0,Math.min(W.color.g*Y.g,1));Y.b=Math.max(0,Math.min(W.color.b*Y.b,1));Sb(D,I,Q,L,G,U,O,K);W.wireframe===true?r(Y,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):s(Y)}else{Sb(D,I,Q,L,G,U,O,K);W.wireframe===true?r(W.color,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):s(W.color)}else if(W instanceof THREE.MeshNormalMaterial){Y.r=
ic(ja.normalWorld.x);Y.g=ic(ja.normalWorld.y);Y.b=ic(ja.normalWorld.z);Sb(D,I,Q,L,G,U,O,K);W.wireframe===true?r(Y,W.wireframeLinewidth,W.wireframeLinecap,W.wireframeLinejoin):s(Y)}else if(W instanceof THREE.MeshDepthMaterial){oa=j.near;Ga=j.far;ba.r=ba.g=ba.b=1-dc(ha.positionScreen.z,oa,Ga);$.r=$.g=$.b=1-dc(va.positionScreen.z,oa,Ga);ca.r=ca.g=ca.b=1-dc(ob.positionScreen.z,oa,Ga);na.r=na.g=na.b=1-dc(nb.positionScreen.z,oa,Ga);Qa=A(ba,$,ca,na);u(D,I,Q,L,O,K);v(D,I,Q,L,O,K,0,0,1,0,0,1,Qa);u(X,ga,G,
U,da,sa);v(X,ga,G,U,da,sa,1,0,1,1,0,1,Qa)}}}}Ia.addRectangle(Ca)}}n.setTransform(1,0,0,1,0,0)}}};
THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform float flipEnvMap;\nuniform int combine;\n#ifdef USE_BUMPMAP\nuniform bool useRefract;\nuniform float refractionRatio;\n#else\nvarying vec3 vReflect;\n#endif\n#endif",
envmap_fragment:"#ifdef USE_ENVMAP\nvec3 reflectVec;\n#ifdef USE_BUMPMAP\nvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\nif ( useRefract ) {\nreflectVec = refract( cameraToVertex, normal, refractionRatio );\n} else { \nreflectVec = reflect( cameraToVertex, normal );\n}\n#else\nreflectVec = vReflect;\n#endif\n#ifdef DOUBLE_SIDED\nfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\nvec4 cubeColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#else\nvec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n#endif\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\nif ( combine == 1 ) {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularStrength * reflectivity );\n} else {\ngl_FragColor.xyz = mix( gl_FragColor.xyz, gl_FragColor.xyz * cubeColor.xyz, specularStrength * reflectivity );\n}\n#endif",
envmap_pars_vertex:"#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP )\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\nvec4 mPosition = modelMatrix * vec4( position, 1.0 );\n#endif\n#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP )\nvec3 nWorld = mat3( modelMatrix[ 0 ].xyz, modelMatrix[ 1 ].xyz, modelMatrix[ 2 ].xyz ) * normal;\nif ( useRefract ) {\nvReflect = refract( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ), refractionRatio );\n} else {\nvReflect = reflect( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ) );\n}\n#endif",
......@@ -328,18 +328,18 @@ THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( p
THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:"vec4 pack_depth( const in float depth ) {\nconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\nconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\nvec4 res = fract( depth * bit_shift );\nres -= res.xxyz * bit_mask;\nreturn res;\n}\nvoid main() {\ngl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n}"}};
THREE.WebGLRenderer=function(a){function b(a,b){var c=a.vertices.length,d=b.material;if(d.attributes){if(a.__webglCustomAttributesList===void 0)a.__webglCustomAttributesList=[];for(var f in d.attributes){var e=d.attributes[f];if(!e.__webglInitialized||e.createUniqueBuffers){e.__webglInitialized=true;var g=1;e.type==="v2"?g=2:e.type==="v3"?g=3:e.type==="v4"?g=4:e.type==="c"&&(g=3);e.size=g;e.array=new Float32Array(c*g);e.buffer=l.createBuffer();e.buffer.belongsToAttribute=f;e.needsUpdate=true}a.__webglCustomAttributesList.push(e)}}}
function c(a,b){if(a.material&&!(a.material instanceof THREE.MeshFaceMaterial))return a.material;if(b.materialIndex>=0)return a.geometry.materials[b.materialIndex]}function d(a){return a instanceof THREE.MeshBasicMaterial&&!a.envMap||a instanceof THREE.MeshDepthMaterial?false:a&&a.shading!==void 0&&a.shading===THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading}function f(a){return a.map||a.lightMap||a.bumpMap||a.specularMap||a instanceof THREE.ShaderMaterial?true:false}function e(a,b,c){var d,
f,e,g,h=a.vertices;g=h.length;var i=a.colors,j=i.length,k=a.__vertexArray,m=a.__colorArray,n=a.__sortArray,o=a.verticesNeedUpdate,p=a.colorsNeedUpdate,q=a.__webglCustomAttributesList;if(c.sortParticles){Ca.copy(Wa);Ca.multiplySelf(c.matrixWorld);for(d=0;d<g;d++){f=h[d];Qa.copy(f);Ca.multiplyVector3(Qa);n[d]=[Qa.z,d]}n.sort(function(a,b){return b[0]-a[0]});for(d=0;d<g;d++){f=h[n[d][1]];e=d*3;k[e]=f.x;k[e+1]=f.y;k[e+2]=f.z}for(d=0;d<j;d++){e=d*3;f=i[n[d][1]];m[e]=f.r;m[e+1]=f.g;m[e+2]=f.b}if(q){i=0;
f,e,g,h=a.vertices;g=h.length;var i=a.colors,j=i.length,k=a.__vertexArray,m=a.__colorArray,n=a.__sortArray,o=a.verticesNeedUpdate,p=a.colorsNeedUpdate,q=a.__webglCustomAttributesList;if(c.sortParticles){Da.copy(Xa);Da.multiplySelf(c.matrixWorld);for(d=0;d<g;d++){f=h[d];Ra.copy(f);Da.multiplyVector3(Ra);n[d]=[Ra.z,d]}n.sort(function(a,b){return b[0]-a[0]});for(d=0;d<g;d++){f=h[n[d][1]];e=d*3;k[e]=f.x;k[e+1]=f.y;k[e+2]=f.z}for(d=0;d<j;d++){e=d*3;f=i[n[d][1]];m[e]=f.r;m[e+1]=f.g;m[e+2]=f.b}if(q){i=0;
for(j=q.length;i<j;i++){h=q[i];if(h.boundTo===void 0||h.boundTo==="vertices"){e=0;f=h.value.length;if(h.size===1)for(d=0;d<f;d++){g=n[d][1];h.array[d]=h.value[g]}else if(h.size===2)for(d=0;d<f;d++){g=n[d][1];g=h.value[g];h.array[e]=g.x;h.array[e+1]=g.y;e=e+2}else if(h.size===3)if(h.type==="c")for(d=0;d<f;d++){g=n[d][1];g=h.value[g];h.array[e]=g.r;h.array[e+1]=g.g;h.array[e+2]=g.b;e=e+3}else for(d=0;d<f;d++){g=n[d][1];g=h.value[g];h.array[e]=g.x;h.array[e+1]=g.y;h.array[e+2]=g.z;e=e+3}else if(h.size===
4)for(d=0;d<f;d++){g=n[d][1];g=h.value[g];h.array[e]=g.x;h.array[e+1]=g.y;h.array[e+2]=g.z;h.array[e+3]=g.w;e=e+4}}}}}else{if(o)for(d=0;d<g;d++){f=h[d];e=d*3;k[e]=f.x;k[e+1]=f.y;k[e+2]=f.z}if(p)for(d=0;d<j;d++){f=i[d];e=d*3;m[e]=f.r;m[e+1]=f.g;m[e+2]=f.b}if(q){i=0;for(j=q.length;i<j;i++){h=q[i];if(h.needsUpdate&&(h.boundTo===void 0||h.boundTo==="vertices")){f=h.value.length;e=0;if(h.size===1)for(d=0;d<f;d++)h.array[d]=h.value[d];else if(h.size===2)for(d=0;d<f;d++){g=h.value[d];h.array[e]=g.x;h.array[e+
1]=g.y;e=e+2}else if(h.size===3)if(h.type==="c")for(d=0;d<f;d++){g=h.value[d];h.array[e]=g.r;h.array[e+1]=g.g;h.array[e+2]=g.b;e=e+3}else for(d=0;d<f;d++){g=h.value[d];h.array[e]=g.x;h.array[e+1]=g.y;h.array[e+2]=g.z;e=e+3}else if(h.size===4)for(d=0;d<f;d++){g=h.value[d];h.array[e]=g.x;h.array[e+1]=g.y;h.array[e+2]=g.z;h.array[e+3]=g.w;e=e+4}}}}}if(o||c.sortParticles){l.bindBuffer(l.ARRAY_BUFFER,a.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,k,b)}if(p||c.sortParticles){l.bindBuffer(l.ARRAY_BUFFER,
a.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,m,b)}if(q){i=0;for(j=q.length;i<j;i++){h=q[i];if(h.needsUpdate||c.sortParticles){l.bindBuffer(l.ARRAY_BUFFER,h.buffer);l.bufferData(l.ARRAY_BUFFER,h.array,b)}}}}function g(a,b){return b.z-a.z}function h(a,b){return b[1]-a[1]}function i(a,b,c){if(a.length)for(var d=0,f=a.length;d<f;d++){da=K=null;ga=ha=$=ba=Fa=qa=ca=-1;ta=true;a[d].render(b,c,eb,Ha);da=K=null;ga=ha=$=ba=Fa=qa=ca=-1;ta=true}}function k(a,b,c,d,f,e,g,h){var i,l,j,k;if(b){l=a.length-1;
a.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,m,b)}if(q){i=0;for(j=q.length;i<j;i++){h=q[i];if(h.needsUpdate||c.sortParticles){l.bindBuffer(l.ARRAY_BUFFER,h.buffer);l.bufferData(l.ARRAY_BUFFER,h.array,b)}}}}function g(a,b){return b.z-a.z}function h(a,b){return b[1]-a[1]}function i(a,b,c){if(a.length)for(var d=0,f=a.length;d<f;d++){sa=K=null;ga=da=$=ba=Ga=oa=ca=-1;ta=true;a[d].render(b,c,eb,Ia);sa=K=null;ga=da=$=ba=Ga=oa=ca=-1;ta=true}}function k(a,b,c,d,f,e,g,h){var i,l,j,k;if(b){l=a.length-1;
k=b=-1}else{l=0;b=a.length;k=1}for(var m=l;m!==b;m=m+k){i=a[m];if(i.render){l=i.object;j=i.buffer;if(h)i=h;else{i=i[c];if(!i)continue;g&&G.setBlending(i.blending,i.blendEquation,i.blendSrc,i.blendDst);G.setDepthTest(i.depthTest);G.setDepthWrite(i.depthWrite);t(i.polygonOffset,i.polygonOffsetFactor,i.polygonOffsetUnits)}G.setMaterialFaces(i);j instanceof THREE.BufferGeometry?G.renderBufferDirect(d,f,e,i,j,l):G.renderBuffer(d,f,e,i,j,l)}}}function j(a,b,c,d,f,e,g){for(var h,i,l=0,j=a.length;l<j;l++){h=
a[l];i=h.object;if(i.visible){if(g)h=g;else{h=h[b];if(!h)continue;e&&G.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);G.setDepthTest(h.depthTest);G.setDepthWrite(h.depthWrite);t(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}G.renderImmediateObject(c,d,f,h,i)}}}function o(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}function m(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return true;return false}function q(a){for(var b in a.attributes)a.attributes[b].needsUpdate=
false}function p(a,b){for(var c=a.length-1;c>=0;c--)a[c].object===b&&a.splice(c,1)}function n(a,b){for(var c=a.length-1;c>=0;c--)a[c]===b&&a.splice(c,1)}function r(a,b,c,d,f){if(d.needsUpdate){d.program&&G.deallocateMaterial(d);G.initMaterial(d,b,c,f);d.needsUpdate=false}if(d.morphTargets&&!f.__webglMorphTargetInfluences)f.__webglMorphTargetInfluences=new Float32Array(G.maxMorphTargets);var e=false,g=d.program,h=g.uniforms,i=d.uniforms;if(g!==K){l.useProgram(g);K=g;e=true}if(d.id!==ga){ga=d.id;e=
true}if(e||a!==da){l.uniformMatrix4fv(h.projectionMatrix,false,a._projectionMatrixArray);a!==da&&(da=a)}if(e){if(c&&d.fog){i.fogColor.value=c.color;if(c instanceof THREE.Fog){i.fogNear.value=c.near;i.fogFar.value=c.far}else if(c instanceof THREE.FogExp2)i.fogDensity.value=c.density}if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(ta){for(var j,k=0,m=0,n=0,o,p,q,u=fb,r=u.directional.colors,s=u.directional.positions,t=u.point.colors,v=u.point.positions,y=
true}if(e||a!==sa){l.uniformMatrix4fv(h.projectionMatrix,false,a._projectionMatrixArray);a!==sa&&(sa=a)}if(e){if(c&&d.fog){i.fogColor.value=c.color;if(c instanceof THREE.Fog){i.fogNear.value=c.near;i.fogFar.value=c.far}else if(c instanceof THREE.FogExp2)i.fogDensity.value=c.density}if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(ta){for(var j,k=0,m=0,n=0,o,p,q,u=fb,r=u.directional.colors,s=u.directional.positions,t=u.point.colors,v=u.point.positions,y=
u.point.distances,B=u.spot.colors,D=u.spot.positions,I=u.spot.distances,F=u.spot.directions,J=u.spot.angles,M=u.spot.exponents,O=0,Y=0,N=0,H=q=0,c=H=0,e=b.length;c<e;c++){j=b[c];if(!j.onlyShadow&&j.visible){o=j.color;p=j.intensity;q=j.distance;if(j instanceof THREE.AmbientLight)if(G.gammaInput){k=k+o.r*o.r;m=m+o.g*o.g;n=n+o.b*o.b}else{k=k+o.r;m=m+o.g;n=n+o.b}else if(j instanceof THREE.DirectionalLight){q=O*3;if(G.gammaInput){r[q]=o.r*o.r*p*p;r[q+1]=o.g*o.g*p*p;r[q+2]=o.b*o.b*p*p}else{r[q]=o.r*p;r[q+
1]=o.g*p;r[q+2]=o.b*p}Ia.copy(j.matrixWorld.getPosition());Ia.subSelf(j.target.matrixWorld.getPosition());Ia.normalize();s[q]=Ia.x;s[q+1]=Ia.y;s[q+2]=Ia.z;O=O+1}else if(j instanceof THREE.PointLight){H=Y*3;if(G.gammaInput){t[H]=o.r*o.r*p*p;t[H+1]=o.g*o.g*p*p;t[H+2]=o.b*o.b*p*p}else{t[H]=o.r*p;t[H+1]=o.g*p;t[H+2]=o.b*p}o=j.matrixWorld.getPosition();v[H]=o.x;v[H+1]=o.y;v[H+2]=o.z;y[Y]=q;Y=Y+1}else if(j instanceof THREE.SpotLight){H=N*3;if(G.gammaInput){B[H]=o.r*o.r*p*p;B[H+1]=o.g*o.g*p*p;B[H+2]=o.b*
o.b*p*p}else{B[H]=o.r*p;B[H+1]=o.g*p;B[H+2]=o.b*p}o=j.matrixWorld.getPosition();D[H]=o.x;D[H+1]=o.y;D[H+2]=o.z;I[N]=q;Ia.copy(o);Ia.subSelf(j.target.matrixWorld.getPosition());Ia.normalize();F[H]=Ia.x;F[H+1]=Ia.y;F[H+2]=Ia.z;J[N]=Math.cos(j.angle);M[N]=j.exponent;N=N+1}}}c=O*3;for(e=r.length;c<e;c++)r[c]=0;c=Y*3;for(e=t.length;c<e;c++)t[c]=0;c=N*3;for(e=B.length;c<e;c++)B[c]=0;u.directional.length=O;u.point.length=Y;u.spot.length=N;u.ambient[0]=k;u.ambient[1]=m;u.ambient[2]=n;ta=false}c=fb;i.ambientLightColor.value=
1]=o.g*p;r[q+2]=o.b*p}Ja.copy(j.matrixWorld.getPosition());Ja.subSelf(j.target.matrixWorld.getPosition());Ja.normalize();s[q]=Ja.x;s[q+1]=Ja.y;s[q+2]=Ja.z;O=O+1}else if(j instanceof THREE.PointLight){H=Y*3;if(G.gammaInput){t[H]=o.r*o.r*p*p;t[H+1]=o.g*o.g*p*p;t[H+2]=o.b*o.b*p*p}else{t[H]=o.r*p;t[H+1]=o.g*p;t[H+2]=o.b*p}o=j.matrixWorld.getPosition();v[H]=o.x;v[H+1]=o.y;v[H+2]=o.z;y[Y]=q;Y=Y+1}else if(j instanceof THREE.SpotLight){H=N*3;if(G.gammaInput){B[H]=o.r*o.r*p*p;B[H+1]=o.g*o.g*p*p;B[H+2]=o.b*
o.b*p*p}else{B[H]=o.r*p;B[H+1]=o.g*p;B[H+2]=o.b*p}o=j.matrixWorld.getPosition();D[H]=o.x;D[H+1]=o.y;D[H+2]=o.z;I[N]=q;Ja.copy(o);Ja.subSelf(j.target.matrixWorld.getPosition());Ja.normalize();F[H]=Ja.x;F[H+1]=Ja.y;F[H+2]=Ja.z;J[N]=Math.cos(j.angle);M[N]=j.exponent;N=N+1}}}c=O*3;for(e=r.length;c<e;c++)r[c]=0;c=Y*3;for(e=t.length;c<e;c++)t[c]=0;c=N*3;for(e=B.length;c<e;c++)B[c]=0;u.directional.length=O;u.point.length=Y;u.spot.length=N;u.ambient[0]=k;u.ambient[1]=m;u.ambient[2]=n;ta=false}c=fb;i.ambientLightColor.value=
c.ambient;i.directionalLightColor.value=c.directional.colors;i.directionalLightDirection.value=c.directional.positions;i.pointLightColor.value=c.point.colors;i.pointLightPosition.value=c.point.positions;i.pointLightDistance.value=c.point.distances;i.spotLightColor.value=c.spot.colors;i.spotLightPosition.value=c.spot.positions;i.spotLightDistance.value=c.spot.distances;i.spotLightDirection.value=c.spot.directions;i.spotLightAngle.value=c.spot.angles;i.spotLightExponent.value=c.spot.exponents}if(d instanceof
THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){i.opacity.value=d.opacity;G.gammaInput?i.diffuse.value.copyGammaToLinear(d.color):i.diffuse.value=d.color;i.map.texture=d.map;i.lightMap.texture=d.lightMap;i.specularMap.texture=d.specularMap;if(d.bumpMap){i.bumpMap.texture=d.bumpMap;i.bumpScale.value=d.bumpScale}var L;if(d.map)L=d.map;else if(d.specularMap)L=d.specularMap;else if(d.bumpMap)L=d.bumpMap;if(L!==void 0){c=L.offset;L=L.repeat;i.offsetRepeat.value.set(c.x,
c.y,L.x,L.y)}i.envMap.texture=d.envMap;i.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;i.reflectivity.value=d.reflectivity;i.refractionRatio.value=d.refractionRatio;i.combine.value=d.combine;i.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}if(d instanceof THREE.LineBasicMaterial){i.diffuse.value=d.color;i.opacity.value=d.opacity}else if(d instanceof THREE.ParticleBasicMaterial){i.psColor.value=d.color;i.opacity.value=d.opacity;i.size.value=
......@@ -352,8 +352,8 @@ for(m=e.length;k<m;k++)e[k].flattenToArrayOffset(c._array,k*16);l.uniformMatrix4
e;m=j;n=c.image[j];r=Kb;if(!(n.width<=r&&n.height<=r)){s=Math.max(n.width,n.height);u=Math.floor(n.width*r/s);r=Math.floor(n.height*r/s);s=document.createElement("canvas");s.width=u;s.height=r;s.getContext("2d").drawImage(n,0,0,n.width,n.height,0,0,u,r);n=s}k[m]=n}else e[j]=c.image[j];j=e[0];k=(j.width&j.width-1)===0&&(j.height&j.height-1)===0;m=C(c.format);n=C(c.type);A(l.TEXTURE_CUBE_MAP,c,k);for(j=0;j<6;j++)l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+j,0,m,m,n,e[j]);c.generateMipmaps&&k&&l.generateMipmap(l.TEXTURE_CUBE_MAP);
c.needsUpdate=false;if(c.onUpdate)c.onUpdate()}else{l.activeTexture(l.TEXTURE0+e);l.bindTexture(l.TEXTURE_CUBE_MAP,c.image.__webglTextureCube)}}else if(j instanceof THREE.WebGLRenderTargetCube){c=j;l.activeTexture(l.TEXTURE0+e);l.bindTexture(l.TEXTURE_CUBE_MAP,c.__webglTexture)}else G.setTexture(j,e)}else if(k==="tv"){if(c._array===void 0){c._array=[];k=0;for(m=c.texture.length;k<m;k++)c._array[k]=e+k}l.uniform1iv(j,c._array);k=0;for(m=c.texture.length;k<m;k++)(j=c.texture[k])&&G.setTexture(j,c._array[k])}}if((d instanceof
THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&h.cameraPosition!==null){b=a.matrixWorld.getPosition();l.uniform3f(h.cameraPosition,b.x,b.y,b.z)}(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&h.viewMatrix!==null&&l.uniformMatrix4fv(h.viewMatrix,false,a._viewMatrixArray)}if(d.skinning)if(bc&&f.useVertexTexture){if(h.boneTexture!==null){l.uniform1i(h.boneTexture,12);G.setTexture(f.boneTexture,12)}}else h.boneGlobalMatrices!==
null&&l.uniformMatrix4fv(h.boneGlobalMatrices,false,f.boneMatrices);l.uniformMatrix4fv(h.modelViewMatrix,false,f._modelViewMatrix.elements);h.normalMatrix&&l.uniformMatrix3fv(h.normalMatrix,false,f._normalMatrix.elements);h.modelMatrix!==null&&l.uniformMatrix4fv(h.modelMatrix,false,f.matrixWorld.elements);return g}function s(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function t(a,b,c){if(Pa!==a){a?
l.enable(l.POLYGON_OFFSET_FILL):l.disable(l.POLYGON_OFFSET_FILL);Pa=a}if(a&&(Ta!==b||Jb!==c)){l.polygonOffset(b,c);Ta=b;Jb=c}}function v(a){for(var a=a.split("\n"),b=0,c=a.length;b<c;b++)a[b]=b+1+": "+a[b];return a.join("\n")}function u(a,b){var c;a==="fragment"?c=l.createShader(l.FRAGMENT_SHADER):a==="vertex"&&(c=l.createShader(l.VERTEX_SHADER));l.shaderSource(c,b);l.compileShader(c);if(!l.getShaderParameter(c,l.COMPILE_STATUS)){console.error(l.getShaderInfoLog(c));console.error(v(b));return null}return c}
null&&l.uniformMatrix4fv(h.boneGlobalMatrices,false,f.boneMatrices);l.uniformMatrix4fv(h.modelViewMatrix,false,f._modelViewMatrix.elements);h.normalMatrix&&l.uniformMatrix3fv(h.normalMatrix,false,f._normalMatrix.elements);h.modelMatrix!==null&&l.uniformMatrix4fv(h.modelMatrix,false,f.matrixWorld.elements);return g}function s(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function t(a,b,c){if(Qa!==a){a?
l.enable(l.POLYGON_OFFSET_FILL):l.disable(l.POLYGON_OFFSET_FILL);Qa=a}if(a&&(Ua!==b||Jb!==c)){l.polygonOffset(b,c);Ua=b;Jb=c}}function v(a){for(var a=a.split("\n"),b=0,c=a.length;b<c;b++)a[b]=b+1+": "+a[b];return a.join("\n")}function u(a,b){var c;a==="fragment"?c=l.createShader(l.FRAGMENT_SHADER):a==="vertex"&&(c=l.createShader(l.VERTEX_SHADER));l.shaderSource(c,b);l.compileShader(c);if(!l.getShaderParameter(c,l.COMPILE_STATUS)){console.error(l.getShaderInfoLog(c));console.error(v(b));return null}return c}
function A(a,b,c){if(c){l.texParameteri(a,l.TEXTURE_WRAP_S,C(b.wrapS));l.texParameteri(a,l.TEXTURE_WRAP_T,C(b.wrapT));l.texParameteri(a,l.TEXTURE_MAG_FILTER,C(b.magFilter));l.texParameteri(a,l.TEXTURE_MIN_FILTER,C(b.minFilter))}else{l.texParameteri(a,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE);l.texParameteri(a,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE);l.texParameteri(a,l.TEXTURE_MAG_FILTER,B(b.magFilter));l.texParameteri(a,l.TEXTURE_MIN_FILTER,B(b.minFilter))}if(bb&&b.type!==THREE.FloatType&&(b.anisotropy>1||b.__oldAnisotropy)){l.texParameterf(a,
bb.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,gb));b.__oldAnisotropy=b.anisotropy}}function y(a,b){l.bindRenderbuffer(l.RENDERBUFFER,a);if(b.depthBuffer&&!b.stencilBuffer){l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_COMPONENT16,b.width,b.height);l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a)}else if(b.depthBuffer&&b.stencilBuffer){l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_STENCIL,b.width,b.height);l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_STENCIL_ATTACHMENT,
l.RENDERBUFFER,a)}else l.renderbufferStorage(l.RENDERBUFFER,l.RGBA4,b.width,b.height)}function B(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?l.NEAREST:l.LINEAR}function C(a){return a===THREE.RepeatWrapping?l.REPEAT:a===THREE.ClampToEdgeWrapping?l.CLAMP_TO_EDGE:a===THREE.MirroredRepeatWrapping?l.MIRRORED_REPEAT:a===THREE.NearestFilter?l.NEAREST:a===THREE.NearestMipMapNearestFilter?l.NEAREST_MIPMAP_NEAREST:a===THREE.NearestMipMapLinearFilter?
......@@ -362,8 +362,8 @@ l.INT:a===THREE.UnsignedIntType?l.UNSIGNED_INT:a===THREE.FloatType?l.FLOAT:a===T
l.ONE_MINUS_SRC_COLOR:a===THREE.SrcAlphaFactor?l.SRC_ALPHA:a===THREE.OneMinusSrcAlphaFactor?l.ONE_MINUS_SRC_ALPHA:a===THREE.DstAlphaFactor?l.DST_ALPHA:a===THREE.OneMinusDstAlphaFactor?l.ONE_MINUS_DST_ALPHA:a===THREE.DstColorFactor?l.DST_COLOR:a===THREE.OneMinusDstColorFactor?l.ONE_MINUS_DST_COLOR:a===THREE.SrcAlphaSaturateFactor?l.SRC_ALPHA_SATURATE:0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},w=a.canvas!==void 0?a.canvas:document.createElement("canvas"),J=a.precision!==void 0?
a.precision:"highp",F=a.alpha!==void 0?a.alpha:true,N=a.premultipliedAlpha!==void 0?a.premultipliedAlpha:true,M=a.antialias!==void 0?a.antialias:false,H=a.stencil!==void 0?a.stencil:true,D=a.preserveDrawingBuffer!==void 0?a.preserveDrawingBuffer:false,I=a.clearColor!==void 0?new THREE.Color(a.clearColor):new THREE.Color(0),Q=a.clearAlpha!==void 0?a.clearAlpha:0,L=a.maxLights!==void 0?a.maxLights:4;this.domElement=w;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=
this.autoClearDepth=this.autoClearColor=this.autoClear=true;this.shadowMapEnabled=this.physicallyBasedShading=this.gammaOutput=this.gammaInput=false;this.shadowMapCullFrontFaces=this.shadowMapSoft=this.shadowMapAutoUpdate=true;this.shadowMapCascade=this.shadowMapDebug=false;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=true;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};
var G=this,U=[],O=0,K=null,V=null,ga=-1,ha=null,da=null,Y=0,ba=-1,$=-1,ca=-1,ma=-1,sa=-1,$a=-1,qa=-1,Fa=-1,Pa=null,Ta=null,Jb=null,rb=null,Rb=0,sb=0,cb=0,db=0,eb=0,Ha=0,Ba=new THREE.Frustum,Wa=new THREE.Matrix4,Ca=new THREE.Matrix4,Qa=new THREE.Vector4,Ia=new THREE.Vector3,ta=true,fb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]}},l,bb;try{if(!(l=
w.getContext("experimental-webgl",{alpha:F,premultipliedAlpha:N,antialias:M,stencil:H,preserveDrawingBuffer:D})))throw"Error creating WebGL context.";}catch(Ua){console.error(Ua)}a=l.getExtension("OES_texture_float");F=l.getExtension("OES_standard_derivatives");bb=l.getExtension("EXT_texture_filter_anisotropic")||l.getExtension("MOZ_EXT_texture_filter_anisotropic")||l.getExtension("WEBKIT_EXT_texture_filter_anisotropic");a||console.log("THREE.WebGLRenderer: Float textures not supported.");F||console.log("THREE.WebGLRenderer: Standard derivatives not supported.");
var G=this,U=[],O=0,K=null,X=null,ga=-1,da=null,sa=null,Y=0,ba=-1,$=-1,ca=-1,na=-1,qa=-1,Ba=-1,oa=-1,Ga=-1,Qa=null,Ua=null,Jb=null,rb=null,Rb=0,sb=0,cb=0,db=0,eb=0,Ia=0,Ca=new THREE.Frustum,Xa=new THREE.Matrix4,Da=new THREE.Matrix4,Ra=new THREE.Vector4,Ja=new THREE.Vector3,ta=true,fb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]}},l,bb;try{if(!(l=
w.getContext("experimental-webgl",{alpha:F,premultipliedAlpha:N,antialias:M,stencil:H,preserveDrawingBuffer:D})))throw"Error creating WebGL context.";}catch(Va){console.error(Va)}a=l.getExtension("OES_texture_float");F=l.getExtension("OES_standard_derivatives");bb=l.getExtension("EXT_texture_filter_anisotropic")||l.getExtension("MOZ_EXT_texture_filter_anisotropic")||l.getExtension("WEBKIT_EXT_texture_filter_anisotropic");a||console.log("THREE.WebGLRenderer: Float textures not supported.");F||console.log("THREE.WebGLRenderer: Standard derivatives not supported.");
bb||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");l.clearColor(0,0,0,1);l.clearDepth(1);l.clearStencil(0);l.enable(l.DEPTH_TEST);l.depthFunc(l.LEQUAL);l.frontFace(l.CCW);l.cullFace(l.BACK);l.enable(l.CULL_FACE);l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA);l.clearColor(I.r,I.g,I.b,Q);this.context=l;F=l.getParameter(l.MAX_VERTEX_TEXTURE_IMAGE_UNITS);l.getParameter(l.MAX_TEXTURE_SIZE);var Kb=l.getParameter(l.MAX_CUBE_MAP_TEXTURE_SIZE),
gb=bb?l.getParameter(bb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,sc=F>0,bc=sc&&a;this.getContext=function(){return l};this.supportsVertexTextures=function(){return sc};this.getMaxAnisotropy=function(){return gb};this.setSize=function(a,b){w.width=a;w.height=b;this.setViewport(0,0,w.width,w.height)};this.setViewport=function(a,b,c,d){Rb=a!==void 0?a:0;sb=b!==void 0?b:0;cb=c!==void 0?c:w.width;db=d!==void 0?d:w.height;l.viewport(Rb,sb,cb,db)};this.setScissor=function(a,b,c,d){l.scissor(a,b,c,d)};this.enableScissorTest=
function(a){a?l.enable(l.SCISSOR_TEST):l.disable(l.SCISSOR_TEST)};this.setClearColorHex=function(a,b){I.setHex(a);Q=b;l.clearColor(I.r,I.g,I.b,Q)};this.setClearColor=function(a,b){I.copy(a);Q=b;l.clearColor(I.r,I.g,I.b,Q)};this.getClearColor=function(){return I};this.getClearAlpha=function(){return Q};this.clear=function(a,b,c){var d=0;if(a===void 0||a)d=d|l.COLOR_BUFFER_BIT;if(b===void 0||b)d=d|l.DEPTH_BUFFER_BIT;if(c===void 0||c)d=d|l.STENCIL_BUFFER_BIT;l.clear(d)};this.clearTarget=function(a,b,
......@@ -371,14 +371,14 @@ c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a
l.deleteBuffer(c.__webglVertexBuffer);l.deleteBuffer(c.__webglNormalBuffer);l.deleteBuffer(c.__webglTangentBuffer);l.deleteBuffer(c.__webglColorBuffer);l.deleteBuffer(c.__webglUVBuffer);l.deleteBuffer(c.__webglUV2Buffer);l.deleteBuffer(c.__webglSkinIndicesBuffer);l.deleteBuffer(c.__webglSkinWeightsBuffer);l.deleteBuffer(c.__webglFaceBuffer);l.deleteBuffer(c.__webglLineBuffer);var d=void 0,e=void 0;if(c.numMorphTargets){d=0;for(e=c.numMorphTargets;d<e;d++)l.deleteBuffer(c.__webglMorphTargetsBuffers[d])}if(c.numMorphNormals){d=
0;for(e=c.numMorphNormals;d<e;d++)l.deleteBuffer(c.__webglMorphNormalsBuffers[d])}if(c.__webglCustomAttributesList){d=void 0;for(d in c.__webglCustomAttributesList)l.deleteBuffer(c.__webglCustomAttributesList[d].buffer)}G.info.memory.geometries--}else if(a instanceof THREE.Ribbon){a=a.geometry;l.deleteBuffer(a.__webglVertexBuffer);l.deleteBuffer(a.__webglColorBuffer);G.info.memory.geometries--}else if(a instanceof THREE.Line){a=a.geometry;l.deleteBuffer(a.__webglVertexBuffer);l.deleteBuffer(a.__webglColorBuffer);
G.info.memory.geometries--}else if(a instanceof THREE.ParticleSystem){a=a.geometry;l.deleteBuffer(a.__webglVertexBuffer);l.deleteBuffer(a.__webglColorBuffer);G.info.memory.geometries--}}};this.deallocateTexture=function(a){if(a.__webglInit){a.__webglInit=false;l.deleteTexture(a.__webglTexture);G.info.memory.textures--}};this.deallocateRenderTarget=function(a){if(a&&a.__webglTexture){l.deleteTexture(a.__webglTexture);if(a instanceof THREE.WebGLRenderTargetCube)for(var b=0;b<6;b++){l.deleteFramebuffer(a.__webglFramebuffer[b]);
l.deleteRenderbuffer(a.__webglRenderbuffer[b])}else{l.deleteFramebuffer(a.__webglFramebuffer);l.deleteRenderbuffer(a.__webglRenderbuffer)}}};this.deallocateMaterial=function(a){var b=a.program;if(b){a.program=void 0;var c,d,e=false,a=0;for(c=U.length;a<c;a++){d=U[a];if(d.program===b){d.usedTimes--;d.usedTimes===0&&(e=true);break}}if(e){e=[];a=0;for(c=U.length;a<c;a++){d=U[a];d.program!==b&&e.push(d)}U=e;l.deleteProgram(b);G.info.memory.programs--}}};this.updateShadowMap=function(a,b){K=null;ga=ha=
Fa=qa=ca=-1;ta=true;$=ba=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){if(a.hasPositions&&!a.__webglVertexBuffer)a.__webglVertexBuffer=l.createBuffer();if(a.hasNormals&&!a.__webglNormalBuffer)a.__webglNormalBuffer=l.createBuffer();if(a.hasUvs&&!a.__webglUvBuffer)a.__webglUvBuffer=l.createBuffer();if(a.hasColors&&!a.__webglColorBuffer)a.__webglColorBuffer=l.createBuffer();if(a.hasPositions){l.bindBuffer(l.ARRAY_BUFFER,a.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,
l.deleteRenderbuffer(a.__webglRenderbuffer[b])}else{l.deleteFramebuffer(a.__webglFramebuffer);l.deleteRenderbuffer(a.__webglRenderbuffer)}}};this.deallocateMaterial=function(a){var b=a.program;if(b){a.program=void 0;var c,d,e=false,a=0;for(c=U.length;a<c;a++){d=U[a];if(d.program===b){d.usedTimes--;d.usedTimes===0&&(e=true);break}}if(e){e=[];a=0;for(c=U.length;a<c;a++){d=U[a];d.program!==b&&e.push(d)}U=e;l.deleteProgram(b);G.info.memory.programs--}}};this.updateShadowMap=function(a,b){K=null;ga=da=
Ga=oa=ca=-1;ta=true;$=ba=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){if(a.hasPositions&&!a.__webglVertexBuffer)a.__webglVertexBuffer=l.createBuffer();if(a.hasNormals&&!a.__webglNormalBuffer)a.__webglNormalBuffer=l.createBuffer();if(a.hasUvs&&!a.__webglUvBuffer)a.__webglUvBuffer=l.createBuffer();if(a.hasColors&&!a.__webglColorBuffer)a.__webglColorBuffer=l.createBuffer();if(a.hasPositions){l.bindBuffer(l.ARRAY_BUFFER,a.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,
a.positionArray,l.DYNAMIC_DRAW);l.enableVertexAttribArray(b.attributes.position);l.vertexAttribPointer(b.attributes.position,3,l.FLOAT,false,0,0)}if(a.hasNormals){l.bindBuffer(l.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,f,g,h,i,j,k,o,m,n,p=a.count*3;for(n=0;n<p;n=n+9){m=a.normalArray;d=m[n];e=m[n+1];f=m[n+2];g=m[n+3];i=m[n+4];k=m[n+5];h=m[n+6];j=m[n+7];o=m[n+8];d=(d+g+h)/3;e=(e+i+j)/3;f=(f+k+o)/3;m[n]=d;m[n+1]=e;m[n+2]=f;m[n+3]=d;m[n+4]=e;m[n+5]=f;m[n+6]=d;m[n+
7]=e;m[n+8]=f}}l.bufferData(l.ARRAY_BUFFER,a.normalArray,l.DYNAMIC_DRAW);l.enableVertexAttribArray(b.attributes.normal);l.vertexAttribPointer(b.attributes.normal,3,l.FLOAT,false,0,0)}if(a.hasUvs&&c.map){l.bindBuffer(l.ARRAY_BUFFER,a.__webglUvBuffer);l.bufferData(l.ARRAY_BUFFER,a.uvArray,l.DYNAMIC_DRAW);l.enableVertexAttribArray(b.attributes.uv);l.vertexAttribPointer(b.attributes.uv,2,l.FLOAT,false,0,0)}if(a.hasColors&&c.vertexColors!==THREE.NoColors){l.bindBuffer(l.ARRAY_BUFFER,a.__webglColorBuffer);
l.bufferData(l.ARRAY_BUFFER,a.colorArray,l.DYNAMIC_DRAW);l.enableVertexAttribArray(b.attributes.color);l.vertexAttribPointer(b.attributes.color,3,l.FLOAT,false,0,0)}l.drawArrays(l.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(d.visible!==false){c=r(a,b,c,d,f);a=c.attributes;b=false;d=e.id*16777215+c.id*2+(d.wireframe?1:0);if(d!==ha){ha=d;b=true}if(f instanceof THREE.Mesh){f=e.offsets;f.length>1&&(b=true);d=0;for(c=f.length;d<c;++d){var g=f[d].index;if(b){var h=e.attributes.position,
l.bufferData(l.ARRAY_BUFFER,a.colorArray,l.DYNAMIC_DRAW);l.enableVertexAttribArray(b.attributes.color);l.vertexAttribPointer(b.attributes.color,3,l.FLOAT,false,0,0)}l.drawArrays(l.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(d.visible!==false){c=r(a,b,c,d,f);a=c.attributes;b=false;d=e.id*16777215+c.id*2+(d.wireframe?1:0);if(d!==da){da=d;b=true}if(f instanceof THREE.Mesh){f=e.offsets;f.length>1&&(b=true);d=0;for(c=f.length;d<c;++d){var g=f[d].index;if(b){var h=e.attributes.position,
i=h.itemSize;l.bindBuffer(l.ARRAY_BUFFER,h.buffer);l.vertexAttribPointer(a.position,i,l.FLOAT,false,0,g*i*4);h=e.attributes.normal;if(a.normal>=0&&h){i=h.itemSize;l.bindBuffer(l.ARRAY_BUFFER,h.buffer);l.vertexAttribPointer(a.normal,i,l.FLOAT,false,0,g*i*4)}h=e.attributes.uv;if(a.uv>=0&&h)if(h.buffer){i=h.itemSize;l.bindBuffer(l.ARRAY_BUFFER,h.buffer);l.vertexAttribPointer(a.uv,i,l.FLOAT,false,0,g*i*4);l.enableVertexAttribArray(a.uv)}else l.disableVertexAttribArray(a.uv);h=e.attributes.color;if(a.color>=
0&&h){i=h.itemSize;l.bindBuffer(l.ARRAY_BUFFER,h.buffer);l.vertexAttribPointer(a.color,i,l.FLOAT,false,0,g*i*4)}h=e.attributes.tangent;if(a.tangent>=0&&h){i=h.itemSize;l.bindBuffer(l.ARRAY_BUFFER,h.buffer);l.vertexAttribPointer(a.tangent,i,l.FLOAT,false,0,g*i*4)}l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,e.attributes.index.buffer)}l.drawElements(l.TRIANGLES,f[d].count,l.UNSIGNED_SHORT,f[d].start*2);G.info.render.calls++;G.info.render.vertices=G.info.render.vertices+f[d].count;G.info.render.faces=G.info.render.faces+
f[d].count/3}}}};this.renderBuffer=function(a,b,c,d,e,f){if(d.visible!==false){var g,i,c=r(a,b,c,d,f),b=c.attributes,a=false,c=e.id*16777215+c.id*2+(d.wireframe?1:0);if(c!==ha){ha=c;a=true}if(!d.morphTargets&&b.position>=0){if(a){l.bindBuffer(l.ARRAY_BUFFER,e.__webglVertexBuffer);l.vertexAttribPointer(b.position,3,l.FLOAT,false,0,0)}}else if(f.morphTargetBase){c=d.program.attributes;if(f.morphTargetBase!==-1){l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]);l.vertexAttribPointer(c.position,
f[d].count/3}}}};this.renderBuffer=function(a,b,c,d,e,f){if(d.visible!==false){var g,i,c=r(a,b,c,d,f),b=c.attributes,a=false,c=e.id*16777215+c.id*2+(d.wireframe?1:0);if(c!==da){da=c;a=true}if(!d.morphTargets&&b.position>=0){if(a){l.bindBuffer(l.ARRAY_BUFFER,e.__webglVertexBuffer);l.vertexAttribPointer(b.position,3,l.FLOAT,false,0,0)}}else if(f.morphTargetBase){c=d.program.attributes;if(f.morphTargetBase!==-1){l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]);l.vertexAttribPointer(c.position,
3,l.FLOAT,false,0,0)}else if(c.position>=0){l.bindBuffer(l.ARRAY_BUFFER,e.__webglVertexBuffer);l.vertexAttribPointer(c.position,3,l.FLOAT,false,0,0)}if(f.morphTargetForcedOrder.length){var j=0;i=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;j<d.numSupportedMorphTargets&&j<i.length;){l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[i[j]]);l.vertexAttribPointer(c["morphTarget"+j],3,l.FLOAT,false,0,0);if(d.morphNormals){l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[i[j]]);
l.vertexAttribPointer(c["morphNormal"+j],3,l.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[j]=g[i[j]];j++}}else{i=[];g=f.morphTargetInfluences;var k,n=g.length;for(k=0;k<n;k++){j=g[k];j>0&&i.push([k,j])}if(i.length>d.numSupportedMorphTargets){i.sort(h);i.length=d.numSupportedMorphTargets}else i.length>d.numSupportedMorphNormals?i.sort(h):i.length===0&&i.push([0,0]);for(j=0;j<d.numSupportedMorphTargets;){if(i[j]){k=i[j][0];l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[k]);l.vertexAttribPointer(c["morphTarget"+
j],3,l.FLOAT,false,0,0);if(d.morphNormals){l.bindBuffer(l.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[k]);l.vertexAttribPointer(c["morphNormal"+j],3,l.FLOAT,false,0,0)}f.__webglMorphTargetInfluences[j]=g[k]}else{l.vertexAttribPointer(c["morphTarget"+j],3,l.FLOAT,false,0,0);d.morphNormals&&l.vertexAttribPointer(c["morphNormal"+j],3,l.FLOAT,false,0,0);f.__webglMorphTargetInfluences[j]=0}j++}}d.program.uniforms.morphTargetInfluences!==null&&l.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=
......@@ -387,61 +387,61 @@ e.__webglTangentBuffer);l.vertexAttribPointer(b.tangent,4,l.FLOAT,false,0,0)}if(
0&&b.skinWeight>=0){l.bindBuffer(l.ARRAY_BUFFER,e.__webglSkinIndicesBuffer);l.vertexAttribPointer(b.skinIndex,4,l.FLOAT,false,0,0);l.bindBuffer(l.ARRAY_BUFFER,e.__webglSkinWeightsBuffer);l.vertexAttribPointer(b.skinWeight,4,l.FLOAT,false,0,0)}}if(f instanceof THREE.Mesh){if(d.wireframe){d=d.wireframeLinewidth;if(d!==rb){l.lineWidth(d);rb=d}a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer);l.drawElements(l.LINES,e.__webglLineCount,l.UNSIGNED_SHORT,0)}else{a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,
e.__webglFaceBuffer);l.drawElements(l.TRIANGLES,e.__webglFaceCount,l.UNSIGNED_SHORT,0)}G.info.render.calls++;G.info.render.vertices=G.info.render.vertices+e.__webglFaceCount;G.info.render.faces=G.info.render.faces+e.__webglFaceCount/3}else if(f instanceof THREE.Line){f=f.type===THREE.LineStrip?l.LINE_STRIP:l.LINES;d=d.linewidth;if(d!==rb){l.lineWidth(d);rb=d}l.drawArrays(f,0,e.__webglLineCount);G.info.render.calls++}else if(f instanceof THREE.ParticleSystem){l.drawArrays(l.POINTS,0,e.__webglParticleCount);
G.info.render.calls++;G.info.render.points=G.info.render.points+e.__webglParticleCount}else if(f instanceof THREE.Ribbon){l.drawArrays(l.TRIANGLE_STRIP,0,e.__webglVertexCount);G.info.render.calls++}}};this.render=function(a,b,c,d){if(b instanceof THREE.Camera===false)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,h,n,m=a.__lights,o=a.fog;ga=-1;ta=true;this.autoUpdateScene&&a.updateMatrixWorld();b.parent===void 0&&b.updateMatrixWorld();if(!b._viewMatrixArray)b._viewMatrixArray=
new Float32Array(16);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);b.matrixWorldInverse.getInverse(b.matrixWorld);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);Wa.multiply(b.projectionMatrix,b.matrixWorldInverse);Ba.setFromMatrix(Wa);this.autoUpdateObjects&&this.initWebGLObjects(a);i(this.renderPluginsPre,a,b);G.info.render.calls=0;G.info.render.vertices=0;G.info.render.faces=0;G.info.render.points=
0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);n=a.__webglObjects;d=0;for(e=n.length;d<e;d++){f=n[d];h=f.object;f.render=false;if(h.visible&&(!(h instanceof THREE.Mesh||h instanceof THREE.ParticleSystem)||!h.frustumCulled||Ba.contains(h))){s(h,b);var p=f,q=p.object,u=p.buffer,r=void 0,r=r=void 0,r=q.material;if(r instanceof THREE.MeshFaceMaterial){r=u.materialIndex;if(r>=0){r=q.geometry.materials[r];if(r.transparent){p.transparent=
r;p.opaque=null}else{p.opaque=r;p.transparent=null}}}else if(r)if(r.transparent){p.transparent=r;p.opaque=null}else{p.opaque=r;p.transparent=null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{Qa.copy(h.matrixWorld.getPosition());Wa.multiplyVector3(Qa);f.z=Qa.z}}}this.sortObjects&&n.sort(g);n=a.__webglObjectsImmediate;d=0;for(e=n.length;d<e;d++){f=n[d];h=f.object;if(h.visible){s(h,b);h=f.object.material;if(h.transparent){f.transparent=h;f.opaque=null}else{f.opaque=h;f.transparent=
new Float32Array(16);if(!b._projectionMatrixArray)b._projectionMatrixArray=new Float32Array(16);b.matrixWorldInverse.getInverse(b.matrixWorld);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);Xa.multiply(b.projectionMatrix,b.matrixWorldInverse);Ca.setFromMatrix(Xa);this.autoUpdateObjects&&this.initWebGLObjects(a);i(this.renderPluginsPre,a,b);G.info.render.calls=0;G.info.render.vertices=0;G.info.render.faces=0;G.info.render.points=
0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);n=a.__webglObjects;d=0;for(e=n.length;d<e;d++){f=n[d];h=f.object;f.render=false;if(h.visible&&(!(h instanceof THREE.Mesh||h instanceof THREE.ParticleSystem)||!h.frustumCulled||Ca.contains(h))){s(h,b);var p=f,q=p.object,u=p.buffer,r=void 0,r=r=void 0,r=q.material;if(r instanceof THREE.MeshFaceMaterial){r=u.materialIndex;if(r>=0){r=q.geometry.materials[r];if(r.transparent){p.transparent=
r;p.opaque=null}else{p.opaque=r;p.transparent=null}}}else if(r)if(r.transparent){p.transparent=r;p.opaque=null}else{p.opaque=r;p.transparent=null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{Ra.copy(h.matrixWorld.getPosition());Xa.multiplyVector3(Ra);f.z=Ra.z}}}this.sortObjects&&n.sort(g);n=a.__webglObjectsImmediate;d=0;for(e=n.length;d<e;d++){f=n[d];h=f.object;if(h.visible){s(h,b);h=f.object.material;if(h.transparent){f.transparent=h;f.opaque=null}else{f.opaque=h;f.transparent=
null}}}if(a.overrideMaterial){d=a.overrideMaterial;this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst);this.setDepthTest(d.depthTest);this.setDepthWrite(d.depthWrite);t(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits);k(a.__webglObjects,false,"",b,m,o,true,d);j(a.__webglObjectsImmediate,"",b,m,o,false,d)}else{this.setBlending(THREE.NormalBlending);k(a.__webglObjects,true,"opaque",b,m,o,false);j(a.__webglObjectsImmediate,"opaque",b,m,o,false);k(a.__webglObjects,false,"transparent",
b,m,o,true);j(a.__webglObjectsImmediate,"transparent",b,m,o,true)}i(this.renderPluginsPost,a,b);if(c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)if(c instanceof THREE.WebGLRenderTargetCube){l.bindTexture(l.TEXTURE_CUBE_MAP,c.__webglTexture);l.generateMipmap(l.TEXTURE_CUBE_MAP);l.bindTexture(l.TEXTURE_CUBE_MAP,null)}else{l.bindTexture(l.TEXTURE_2D,c.__webglTexture);l.generateMipmap(l.TEXTURE_2D);l.bindTexture(l.TEXTURE_2D,null)}this.setDepthTest(true);this.setDepthWrite(true)}};
this.renderImmediateObject=function(a,b,c,d,e){var f=r(a,b,c,d,e);ha=-1;G.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,l,Ba):e.render(function(a){G.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){if(!a.__webglObjects){a.__webglObjects=[];a.__webglObjectsImmediate=[];a.__webglSprites=[];a.__webglFlares=[]}for(;a.__objectsAdded.length;){var g=a.__objectsAdded[0],h=a,i=void 0,j=void 0,k=void 0;if(!g.__webglInit){g.__webglInit=true;g._modelViewMatrix=new THREE.Matrix4;
this.renderImmediateObject=function(a,b,c,d,e){var f=r(a,b,c,d,e);da=-1;G.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,l,Ca):e.render(function(a){G.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){if(!a.__webglObjects){a.__webglObjects=[];a.__webglObjectsImmediate=[];a.__webglSprites=[];a.__webglFlares=[]}for(;a.__objectsAdded.length;){var g=a.__objectsAdded[0],h=a,i=void 0,j=void 0,k=void 0;if(!g.__webglInit){g.__webglInit=true;g._modelViewMatrix=new THREE.Matrix4;
g._normalMatrix=new THREE.Matrix3;if(g instanceof THREE.Mesh){j=g.geometry;if(j instanceof THREE.Geometry){if(j.geometryGroups===void 0){var r=j,u=void 0,s=void 0,t=void 0,v=void 0,w=void 0,y=void 0,A=void 0,C={},B=r.morphTargets.length,D=r.morphNormals.length;r.geometryGroups={};u=0;for(s=r.faces.length;u<s;u++){t=r.faces[u];v=t.materialIndex;y=v!==void 0?v:-1;C[y]===void 0&&(C[y]={hash:y,counter:0});A=C[y].hash+"_"+C[y].counter;r.geometryGroups[A]===void 0&&(r.geometryGroups[A]={faces3:[],faces4:[],
materialIndex:v,vertices:0,numMorphTargets:B,numMorphNormals:D});w=t instanceof THREE.Face3?3:4;if(r.geometryGroups[A].vertices+w>65535){C[y].counter=C[y].counter+1;A=C[y].hash+"_"+C[y].counter;r.geometryGroups[A]===void 0&&(r.geometryGroups[A]={faces3:[],faces4:[],materialIndex:v,vertices:0,numMorphTargets:B,numMorphNormals:D})}t instanceof THREE.Face3?r.geometryGroups[A].faces3.push(u):r.geometryGroups[A].faces4.push(u);r.geometryGroups[A].vertices=r.geometryGroups[A].vertices+w}r.geometryGroupsList=
[];var I=void 0;for(I in r.geometryGroups){r.geometryGroups[I].id=Y++;r.geometryGroupsList.push(r.geometryGroups[I])}}for(i in j.geometryGroups){k=j.geometryGroups[i];if(!k.__webglVertexBuffer){var F=k;F.__webglVertexBuffer=l.createBuffer();F.__webglNormalBuffer=l.createBuffer();F.__webglTangentBuffer=l.createBuffer();F.__webglColorBuffer=l.createBuffer();F.__webglUVBuffer=l.createBuffer();F.__webglUV2Buffer=l.createBuffer();F.__webglSkinIndicesBuffer=l.createBuffer();F.__webglSkinWeightsBuffer=l.createBuffer();
F.__webglFaceBuffer=l.createBuffer();F.__webglLineBuffer=l.createBuffer();var J=void 0,K=void 0;if(F.numMorphTargets){F.__webglMorphTargetsBuffers=[];J=0;for(K=F.numMorphTargets;J<K;J++)F.__webglMorphTargetsBuffers.push(l.createBuffer())}if(F.numMorphNormals){F.__webglMorphNormalsBuffers=[];J=0;for(K=F.numMorphNormals;J<K;J++)F.__webglMorphNormalsBuffers.push(l.createBuffer())}G.info.memory.geometries++;var H=k,L=g,M=L.geometry,O=H.faces3,N=H.faces4,$=O.length*3+N.length*4,Q=O.length*1+N.length*2,
V=O.length*3+N.length*4,ba=c(L,H),U=f(ba),ca=d(ba),ga=ba.vertexColors?ba.vertexColors:false;H.__vertexArray=new Float32Array($*3);if(ca)H.__normalArray=new Float32Array($*3);if(M.hasTangents)H.__tangentArray=new Float32Array($*4);if(ga)H.__colorArray=new Float32Array($*3);if(U){if(M.faceUvs.length>0||M.faceVertexUvs.length>0)H.__uvArray=new Float32Array($*2);if(M.faceUvs.length>1||M.faceVertexUvs.length>1)H.__uv2Array=new Float32Array($*2)}if(L.geometry.skinWeights.length&&L.geometry.skinIndices.length){H.__skinIndexArray=
new Float32Array($*4);H.__skinWeightArray=new Float32Array($*4)}H.__faceArray=new Uint16Array(Q*3);H.__lineArray=new Uint16Array(V*2);var ma=void 0,ha=void 0;if(H.numMorphTargets){H.__morphTargetsArrays=[];ma=0;for(ha=H.numMorphTargets;ma<ha;ma++)H.__morphTargetsArrays.push(new Float32Array($*3))}if(H.numMorphNormals){H.__morphNormalsArrays=[];ma=0;for(ha=H.numMorphNormals;ma<ha;ma++)H.__morphNormalsArrays.push(new Float32Array($*3))}H.__webglFaceCount=Q*3;H.__webglLineCount=V*2;if(ba.attributes){if(H.__webglCustomAttributesList===
void 0)H.__webglCustomAttributesList=[];var sa=void 0;for(sa in ba.attributes){var qa=ba.attributes[sa],da={},$a;for($a in qa)da[$a]=qa[$a];if(!da.__webglInitialized||da.createUniqueBuffers){da.__webglInitialized=true;var Fa=1;da.type==="v2"?Fa=2:da.type==="v3"?Fa=3:da.type==="v4"?Fa=4:da.type==="c"&&(Fa=3);da.size=Fa;da.array=new Float32Array($*Fa);da.buffer=l.createBuffer();da.buffer.belongsToAttribute=sa;qa.needsUpdate=true;da.__original=qa}H.__webglCustomAttributesList.push(da)}}H.__inittedArrays=
true;j.verticesNeedUpdate=true;j.morphTargetsNeedUpdate=true;j.elementsNeedUpdate=true;j.uvsNeedUpdate=true;j.normalsNeedUpdate=true;j.tangentsNeedUpdate=true;j.colorsNeedUpdate=true}}}else if(j instanceof THREE.BufferGeometry){var ta=j,Ba=void 0,Ca=void 0,Pa=void 0;for(Ba in ta.attributes){Pa=Ba==="index"?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;Ca=ta.attributes[Ba];Ca.buffer=l.createBuffer();l.bindBuffer(Pa,Ca.buffer);l.bufferData(Pa,Ca.array,l.STATIC_DRAW)}}}else if(g instanceof THREE.Ribbon){j=g.geometry;
if(!j.__webglVertexBuffer){var Ia=j;Ia.__webglVertexBuffer=l.createBuffer();Ia.__webglColorBuffer=l.createBuffer();G.info.memory.geometries++;var Ha=j,Ta=Ha.vertices.length;Ha.__vertexArray=new Float32Array(Ta*3);Ha.__colorArray=new Float32Array(Ta*3);Ha.__webglVertexCount=Ta;j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}else if(g instanceof THREE.Line){j=g.geometry;if(!j.__webglVertexBuffer){var Ua=j;Ua.__webglVertexBuffer=l.createBuffer();Ua.__webglColorBuffer=l.createBuffer();G.info.memory.geometries++;
var Qa=j,eb=g,bb=Qa.vertices.length;Qa.__vertexArray=new Float32Array(bb*3);Qa.__colorArray=new Float32Array(bb*3);Qa.__webglLineCount=bb;b(Qa,eb);j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}else if(g instanceof THREE.ParticleSystem){j=g.geometry;if(!j.__webglVertexBuffer){var rb=j;rb.__webglVertexBuffer=l.createBuffer();rb.__webglColorBuffer=l.createBuffer();G.info.geometries++;var Wa=j,Rb=g,sb=Wa.vertices.length;Wa.__vertexArray=new Float32Array(sb*3);Wa.__colorArray=new Float32Array(sb*
3);Wa.__sortArray=[];Wa.__webglParticleCount=sb;b(Wa,Rb);j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}}if(!g.__webglActive){if(g instanceof THREE.Mesh){j=g.geometry;if(j instanceof THREE.BufferGeometry)o(h.__webglObjects,j,g);else for(i in j.geometryGroups){k=j.geometryGroups[i];o(h.__webglObjects,k,g)}}else if(g instanceof THREE.Ribbon||g instanceof THREE.Line||g instanceof THREE.ParticleSystem){j=g.geometry;o(h.__webglObjects,j,g)}else g instanceof THREE.ImmediateRenderObject||g.immediateRenderCallback?
X=O.length*3+N.length*4,ba=c(L,H),U=f(ba),ca=d(ba),ga=ba.vertexColors?ba.vertexColors:false;H.__vertexArray=new Float32Array($*3);if(ca)H.__normalArray=new Float32Array($*3);if(M.hasTangents)H.__tangentArray=new Float32Array($*4);if(ga)H.__colorArray=new Float32Array($*3);if(U){if(M.faceUvs.length>0||M.faceVertexUvs.length>0)H.__uvArray=new Float32Array($*2);if(M.faceUvs.length>1||M.faceVertexUvs.length>1)H.__uv2Array=new Float32Array($*2)}if(L.geometry.skinWeights.length&&L.geometry.skinIndices.length){H.__skinIndexArray=
new Float32Array($*4);H.__skinWeightArray=new Float32Array($*4)}H.__faceArray=new Uint16Array(Q*3);H.__lineArray=new Uint16Array(X*2);var da=void 0,na=void 0;if(H.numMorphTargets){H.__morphTargetsArrays=[];da=0;for(na=H.numMorphTargets;da<na;da++)H.__morphTargetsArrays.push(new Float32Array($*3))}if(H.numMorphNormals){H.__morphNormalsArrays=[];da=0;for(na=H.numMorphNormals;da<na;da++)H.__morphNormalsArrays.push(new Float32Array($*3))}H.__webglFaceCount=Q*3;H.__webglLineCount=X*2;if(ba.attributes){if(H.__webglCustomAttributesList===
void 0)H.__webglCustomAttributesList=[];var Ba=void 0;for(Ba in ba.attributes){var qa=ba.attributes[Ba],oa={},sa;for(sa in qa)oa[sa]=qa[sa];if(!oa.__webglInitialized||oa.createUniqueBuffers){oa.__webglInitialized=true;var Ga=1;oa.type==="v2"?Ga=2:oa.type==="v3"?Ga=3:oa.type==="v4"?Ga=4:oa.type==="c"&&(Ga=3);oa.size=Ga;oa.array=new Float32Array($*Ga);oa.buffer=l.createBuffer();oa.buffer.belongsToAttribute=Ba;qa.needsUpdate=true;oa.__original=qa}H.__webglCustomAttributesList.push(oa)}}H.__inittedArrays=
true;j.verticesNeedUpdate=true;j.morphTargetsNeedUpdate=true;j.elementsNeedUpdate=true;j.uvsNeedUpdate=true;j.normalsNeedUpdate=true;j.tangentsNeedUpdate=true;j.colorsNeedUpdate=true}}}else if(j instanceof THREE.BufferGeometry){var ta=j,Ca=void 0,Da=void 0,Qa=void 0;for(Ca in ta.attributes){Qa=Ca==="index"?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;Da=ta.attributes[Ca];Da.buffer=l.createBuffer();l.bindBuffer(Qa,Da.buffer);l.bufferData(Qa,Da.array,l.STATIC_DRAW)}}}else if(g instanceof THREE.Ribbon){j=g.geometry;
if(!j.__webglVertexBuffer){var Ja=j;Ja.__webglVertexBuffer=l.createBuffer();Ja.__webglColorBuffer=l.createBuffer();G.info.memory.geometries++;var Ia=j,Ua=Ia.vertices.length;Ia.__vertexArray=new Float32Array(Ua*3);Ia.__colorArray=new Float32Array(Ua*3);Ia.__webglVertexCount=Ua;j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}else if(g instanceof THREE.Line){j=g.geometry;if(!j.__webglVertexBuffer){var Va=j;Va.__webglVertexBuffer=l.createBuffer();Va.__webglColorBuffer=l.createBuffer();G.info.memory.geometries++;
var Ra=j,eb=g,bb=Ra.vertices.length;Ra.__vertexArray=new Float32Array(bb*3);Ra.__colorArray=new Float32Array(bb*3);Ra.__webglLineCount=bb;b(Ra,eb);j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}else if(g instanceof THREE.ParticleSystem){j=g.geometry;if(!j.__webglVertexBuffer){var rb=j;rb.__webglVertexBuffer=l.createBuffer();rb.__webglColorBuffer=l.createBuffer();G.info.geometries++;var Xa=j,Rb=g,sb=Xa.vertices.length;Xa.__vertexArray=new Float32Array(sb*3);Xa.__colorArray=new Float32Array(sb*
3);Xa.__sortArray=[];Xa.__webglParticleCount=sb;b(Xa,Rb);j.verticesNeedUpdate=true;j.colorsNeedUpdate=true}}}if(!g.__webglActive){if(g instanceof THREE.Mesh){j=g.geometry;if(j instanceof THREE.BufferGeometry)o(h.__webglObjects,j,g);else for(i in j.geometryGroups){k=j.geometryGroups[i];o(h.__webglObjects,k,g)}}else if(g instanceof THREE.Ribbon||g instanceof THREE.Line||g instanceof THREE.ParticleSystem){j=g.geometry;o(h.__webglObjects,j,g)}else g instanceof THREE.ImmediateRenderObject||g.immediateRenderCallback?
h.__webglObjectsImmediate.push({object:g,opaque:null,transparent:null}):g instanceof THREE.Sprite?h.__webglSprites.push(g):g instanceof THREE.LensFlare&&h.__webglFlares.push(g);g.__webglActive=true}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var jb=a.__objectsRemoved[0],fb=a;jb instanceof THREE.Mesh||jb instanceof THREE.ParticleSystem||jb instanceof THREE.Ribbon||jb instanceof THREE.Line?p(fb.__webglObjects,jb):jb instanceof THREE.Sprite?n(fb.__webglSprites,jb):jb instanceof THREE.LensFlare?
n(fb.__webglFlares,jb):(jb instanceof THREE.ImmediateRenderObject||jb.immediateRenderCallback)&&p(fb.__webglObjectsImmediate,jb);jb.__webglActive=false;a.__objectsRemoved.splice(0,1)}for(var Jb=0,Kb=a.__webglObjects.length;Jb<Kb;Jb++){var pb=a.__webglObjects[Jb].object,ea=pb.geometry,gb=void 0,cb=void 0,Xa=void 0;if(pb instanceof THREE.Mesh)if(ea instanceof THREE.BufferGeometry){if(ea.verticesNeedUpdate||ea.elementsNeedUpdate||ea.uvsNeedUpdate||ea.normalsNeedUpdate||ea.colorsNeedUpdate||ea.tangentsNeedUpdate){var Lb=
n(fb.__webglFlares,jb):(jb instanceof THREE.ImmediateRenderObject||jb.immediateRenderCallback)&&p(fb.__webglObjectsImmediate,jb);jb.__webglActive=false;a.__objectsRemoved.splice(0,1)}for(var Jb=0,Kb=a.__webglObjects.length;Jb<Kb;Jb++){var pb=a.__webglObjects[Jb].object,ea=pb.geometry,gb=void 0,cb=void 0,Ya=void 0;if(pb instanceof THREE.Mesh)if(ea instanceof THREE.BufferGeometry){if(ea.verticesNeedUpdate||ea.elementsNeedUpdate||ea.uvsNeedUpdate||ea.normalsNeedUpdate||ea.colorsNeedUpdate||ea.tangentsNeedUpdate){var Lb=
ea,db=l.DYNAMIC_DRAW,sc=!ea.dynamic,lc=Lb.attributes,bc=lc.index,Rc=lc.position,Sc=lc.normal,Tc=lc.uv,Uc=lc.color,Vc=lc.tangent;if(Lb.elementsNeedUpdate&&bc!==void 0){l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,bc.buffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,bc.array,db)}if(Lb.verticesNeedUpdate&&Rc!==void 0){l.bindBuffer(l.ARRAY_BUFFER,Rc.buffer);l.bufferData(l.ARRAY_BUFFER,Rc.array,db)}if(Lb.normalsNeedUpdate&&Sc!==void 0){l.bindBuffer(l.ARRAY_BUFFER,Sc.buffer);l.bufferData(l.ARRAY_BUFFER,Sc.array,db)}if(Lb.uvsNeedUpdate&&
Tc!==void 0){l.bindBuffer(l.ARRAY_BUFFER,Tc.buffer);l.bufferData(l.ARRAY_BUFFER,Tc.array,db)}if(Lb.colorsNeedUpdate&&Uc!==void 0){l.bindBuffer(l.ARRAY_BUFFER,Uc.buffer);l.bufferData(l.ARRAY_BUFFER,Uc.array,db)}if(Lb.tangentsNeedUpdate&&Vc!==void 0){l.bindBuffer(l.ARRAY_BUFFER,Vc.buffer);l.bufferData(l.ARRAY_BUFFER,Vc.array,db)}if(sc){var ed=void 0;for(ed in Lb.attributes)delete Lb.attributes[ed].array}}ea.verticesNeedUpdate=false;ea.elementsNeedUpdate=false;ea.uvsNeedUpdate=false;ea.normalsNeedUpdate=
false;ea.colorsNeedUpdate=false;ea.tangentsNeedUpdate=false}else{for(var Wc=0,qd=ea.geometryGroupsList.length;Wc<qd;Wc++){gb=ea.geometryGroupsList[Wc];Xa=c(pb,gb);cb=Xa.attributes&&m(Xa);if(ea.verticesNeedUpdate||ea.morphTargetsNeedUpdate||ea.elementsNeedUpdate||ea.uvsNeedUpdate||ea.normalsNeedUpdate||ea.colorsNeedUpdate||ea.tangentsNeedUpdate||cb){var la=gb,rd=pb,kb=l.DYNAMIC_DRAW,sd=!ea.dynamic,fc=Xa;if(la.__inittedArrays){var fd=d(fc),Xc=fc.vertexColors?fc.vertexColors:false,gd=f(fc),Ec=fd===THREE.SmoothShading,
E=void 0,W=void 0,Ub=void 0,P=void 0,mc=void 0,Vb=void 0,qb=void 0,Fc=void 0,Mb=void 0,nc=void 0,oc=void 0,R=void 0,S=void 0,T=void 0,ja=void 0,tb=void 0,ub=void 0,vb=void 0,tc=void 0,wb=void 0,xb=void 0,yb=void 0,uc=void 0,zb=void 0,Ab=void 0,Bb=void 0,vc=void 0,Cb=void 0,Db=void 0,Eb=void 0,wc=void 0,Fb=void 0,Gb=void 0,Hb=void 0,xc=void 0,pa=void 0,hd=void 0,Wb=void 0,pc=void 0,qc=void 0,La=void 0,id=void 0,Ja=void 0,Ka=void 0,Xb=void 0,Nb=void 0,Da=0,Ga=0,Ob=0,Pb=0,lb=0,Ra=0,ua=0,Va=0,Ea=0,aa=
0,fa=0,z=0,ra=void 0,Ma=la.__vertexArray,yc=la.__uvArray,zc=la.__uv2Array,mb=la.__normalArray,xa=la.__tangentArray,Na=la.__colorArray,ya=la.__skinIndexArray,za=la.__skinWeightArray,Yc=la.__morphTargetsArrays,Zc=la.__morphNormalsArrays,$c=la.__webglCustomAttributesList,x=void 0,Ib=la.__faceArray,ab=la.__lineArray,Ya=rd.geometry,td=Ya.elementsNeedUpdate,jd=Ya.uvsNeedUpdate,ud=Ya.normalsNeedUpdate,vd=Ya.tangentsNeedUpdate,wd=Ya.colorsNeedUpdate,xd=Ya.morphTargetsNeedUpdate,gc=Ya.vertices,na=la.faces3,
oa=la.faces4,Sa=Ya.faces,ad=Ya.faceVertexUvs[0],bd=Ya.faceVertexUvs[1],hc=Ya.skinIndices,Yb=Ya.skinWeights,Zb=Ya.morphTargets,Gc=Ya.morphNormals;if(Ya.verticesNeedUpdate){E=0;for(W=na.length;E<W;E++){P=Sa[na[E]];R=gc[P.a];S=gc[P.b];T=gc[P.c];Ma[Ga]=R.x;Ma[Ga+1]=R.y;Ma[Ga+2]=R.z;Ma[Ga+3]=S.x;Ma[Ga+4]=S.y;Ma[Ga+5]=S.z;Ma[Ga+6]=T.x;Ma[Ga+7]=T.y;Ma[Ga+8]=T.z;Ga=Ga+9}E=0;for(W=oa.length;E<W;E++){P=Sa[oa[E]];R=gc[P.a];S=gc[P.b];T=gc[P.c];ja=gc[P.d];Ma[Ga]=R.x;Ma[Ga+1]=R.y;Ma[Ga+2]=R.z;Ma[Ga+3]=S.x;Ma[Ga+
4]=S.y;Ma[Ga+5]=S.z;Ma[Ga+6]=T.x;Ma[Ga+7]=T.y;Ma[Ga+8]=T.z;Ma[Ga+9]=ja.x;Ma[Ga+10]=ja.y;Ma[Ga+11]=ja.z;Ga=Ga+12}l.bindBuffer(l.ARRAY_BUFFER,la.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Ma,kb)}if(xd){La=0;for(id=Zb.length;La<id;La++){E=fa=0;for(W=na.length;E<W;E++){Xb=na[E];P=Sa[Xb];R=Zb[La].vertices[P.a];S=Zb[La].vertices[P.b];T=Zb[La].vertices[P.c];Ja=Yc[La];Ja[fa]=R.x;Ja[fa+1]=R.y;Ja[fa+2]=R.z;Ja[fa+3]=S.x;Ja[fa+4]=S.y;Ja[fa+5]=S.z;Ja[fa+6]=T.x;Ja[fa+7]=T.y;Ja[fa+8]=T.z;if(fc.morphNormals){if(Ec){Nb=
Gc[La].vertexNormals[Xb];wb=Nb.a;xb=Nb.b;yb=Nb.c}else yb=xb=wb=Gc[La].faceNormals[Xb];Ka=Zc[La];Ka[fa]=wb.x;Ka[fa+1]=wb.y;Ka[fa+2]=wb.z;Ka[fa+3]=xb.x;Ka[fa+4]=xb.y;Ka[fa+5]=xb.z;Ka[fa+6]=yb.x;Ka[fa+7]=yb.y;Ka[fa+8]=yb.z}fa=fa+9}E=0;for(W=oa.length;E<W;E++){Xb=oa[E];P=Sa[Xb];R=Zb[La].vertices[P.a];S=Zb[La].vertices[P.b];T=Zb[La].vertices[P.c];ja=Zb[La].vertices[P.d];Ja=Yc[La];Ja[fa]=R.x;Ja[fa+1]=R.y;Ja[fa+2]=R.z;Ja[fa+3]=S.x;Ja[fa+4]=S.y;Ja[fa+5]=S.z;Ja[fa+6]=T.x;Ja[fa+7]=T.y;Ja[fa+8]=T.z;Ja[fa+9]=
ja.x;Ja[fa+10]=ja.y;Ja[fa+11]=ja.z;if(fc.morphNormals){if(Ec){Nb=Gc[La].vertexNormals[Xb];wb=Nb.a;xb=Nb.b;yb=Nb.c;uc=Nb.d}else uc=yb=xb=wb=Gc[La].faceNormals[Xb];Ka=Zc[La];Ka[fa]=wb.x;Ka[fa+1]=wb.y;Ka[fa+2]=wb.z;Ka[fa+3]=xb.x;Ka[fa+4]=xb.y;Ka[fa+5]=xb.z;Ka[fa+6]=yb.x;Ka[fa+7]=yb.y;Ka[fa+8]=yb.z;Ka[fa+9]=uc.x;Ka[fa+10]=uc.y;Ka[fa+11]=uc.z}fa=fa+12}l.bindBuffer(l.ARRAY_BUFFER,la.__webglMorphTargetsBuffers[La]);l.bufferData(l.ARRAY_BUFFER,Yc[La],kb);if(fc.morphNormals){l.bindBuffer(l.ARRAY_BUFFER,la.__webglMorphNormalsBuffers[La]);
l.bufferData(l.ARRAY_BUFFER,Zc[La],kb)}}}if(Yb.length){E=0;for(W=na.length;E<W;E++){P=Sa[na[E]];Cb=Yb[P.a];Db=Yb[P.b];Eb=Yb[P.c];za[aa]=Cb.x;za[aa+1]=Cb.y;za[aa+2]=Cb.z;za[aa+3]=Cb.w;za[aa+4]=Db.x;za[aa+5]=Db.y;za[aa+6]=Db.z;za[aa+7]=Db.w;za[aa+8]=Eb.x;za[aa+9]=Eb.y;za[aa+10]=Eb.z;za[aa+11]=Eb.w;Fb=hc[P.a];Gb=hc[P.b];Hb=hc[P.c];ya[aa]=Fb.x;ya[aa+1]=Fb.y;ya[aa+2]=Fb.z;ya[aa+3]=Fb.w;ya[aa+4]=Gb.x;ya[aa+5]=Gb.y;ya[aa+6]=Gb.z;ya[aa+7]=Gb.w;ya[aa+8]=Hb.x;ya[aa+9]=Hb.y;ya[aa+10]=Hb.z;ya[aa+11]=Hb.w;aa=
aa+12}E=0;for(W=oa.length;E<W;E++){P=Sa[oa[E]];Cb=Yb[P.a];Db=Yb[P.b];Eb=Yb[P.c];wc=Yb[P.d];za[aa]=Cb.x;za[aa+1]=Cb.y;za[aa+2]=Cb.z;za[aa+3]=Cb.w;za[aa+4]=Db.x;za[aa+5]=Db.y;za[aa+6]=Db.z;za[aa+7]=Db.w;za[aa+8]=Eb.x;za[aa+9]=Eb.y;za[aa+10]=Eb.z;za[aa+11]=Eb.w;za[aa+12]=wc.x;za[aa+13]=wc.y;za[aa+14]=wc.z;za[aa+15]=wc.w;Fb=hc[P.a];Gb=hc[P.b];Hb=hc[P.c];xc=hc[P.d];ya[aa]=Fb.x;ya[aa+1]=Fb.y;ya[aa+2]=Fb.z;ya[aa+3]=Fb.w;ya[aa+4]=Gb.x;ya[aa+5]=Gb.y;ya[aa+6]=Gb.z;ya[aa+7]=Gb.w;ya[aa+8]=Hb.x;ya[aa+9]=Hb.y;
ya[aa+10]=Hb.z;ya[aa+11]=Hb.w;ya[aa+12]=xc.x;ya[aa+13]=xc.y;ya[aa+14]=xc.z;ya[aa+15]=xc.w;aa=aa+16}if(aa>0){l.bindBuffer(l.ARRAY_BUFFER,la.__webglSkinIndicesBuffer);l.bufferData(l.ARRAY_BUFFER,ya,kb);l.bindBuffer(l.ARRAY_BUFFER,la.__webglSkinWeightsBuffer);l.bufferData(l.ARRAY_BUFFER,za,kb)}}if(wd&&Xc){E=0;for(W=na.length;E<W;E++){P=Sa[na[E]];qb=P.vertexColors;Fc=P.color;if(qb.length===3&&Xc===THREE.VertexColors){zb=qb[0];Ab=qb[1];Bb=qb[2]}else Bb=Ab=zb=Fc;Na[Ea]=zb.r;Na[Ea+1]=zb.g;Na[Ea+2]=zb.b;
Na[Ea+3]=Ab.r;Na[Ea+4]=Ab.g;Na[Ea+5]=Ab.b;Na[Ea+6]=Bb.r;Na[Ea+7]=Bb.g;Na[Ea+8]=Bb.b;Ea=Ea+9}E=0;for(W=oa.length;E<W;E++){P=Sa[oa[E]];qb=P.vertexColors;Fc=P.color;if(qb.length===4&&Xc===THREE.VertexColors){zb=qb[0];Ab=qb[1];Bb=qb[2];vc=qb[3]}else vc=Bb=Ab=zb=Fc;Na[Ea]=zb.r;Na[Ea+1]=zb.g;Na[Ea+2]=zb.b;Na[Ea+3]=Ab.r;Na[Ea+4]=Ab.g;Na[Ea+5]=Ab.b;Na[Ea+6]=Bb.r;Na[Ea+7]=Bb.g;Na[Ea+8]=Bb.b;Na[Ea+9]=vc.r;Na[Ea+10]=vc.g;Na[Ea+11]=vc.b;Ea=Ea+12}if(Ea>0){l.bindBuffer(l.ARRAY_BUFFER,la.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,
Na,kb)}}if(vd&&Ya.hasTangents){E=0;for(W=na.length;E<W;E++){P=Sa[na[E]];Mb=P.vertexTangents;tb=Mb[0];ub=Mb[1];vb=Mb[2];xa[ua]=tb.x;xa[ua+1]=tb.y;xa[ua+2]=tb.z;xa[ua+3]=tb.w;xa[ua+4]=ub.x;xa[ua+5]=ub.y;xa[ua+6]=ub.z;xa[ua+7]=ub.w;xa[ua+8]=vb.x;xa[ua+9]=vb.y;xa[ua+10]=vb.z;xa[ua+11]=vb.w;ua=ua+12}E=0;for(W=oa.length;E<W;E++){P=Sa[oa[E]];Mb=P.vertexTangents;tb=Mb[0];ub=Mb[1];vb=Mb[2];tc=Mb[3];xa[ua]=tb.x;xa[ua+1]=tb.y;xa[ua+2]=tb.z;xa[ua+3]=tb.w;xa[ua+4]=ub.x;xa[ua+5]=ub.y;xa[ua+6]=ub.z;xa[ua+7]=ub.w;
xa[ua+8]=vb.x;xa[ua+9]=vb.y;xa[ua+10]=vb.z;xa[ua+11]=vb.w;xa[ua+12]=tc.x;xa[ua+13]=tc.y;xa[ua+14]=tc.z;xa[ua+15]=tc.w;ua=ua+16}l.bindBuffer(l.ARRAY_BUFFER,la.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,xa,kb)}if(ud&&fd){E=0;for(W=na.length;E<W;E++){P=Sa[na[E]];mc=P.vertexNormals;Vb=P.normal;if(mc.length===3&&Ec)for(pa=0;pa<3;pa++){Wb=mc[pa];mb[Ra]=Wb.x;mb[Ra+1]=Wb.y;mb[Ra+2]=Wb.z;Ra=Ra+3}else for(pa=0;pa<3;pa++){mb[Ra]=Vb.x;mb[Ra+1]=Vb.y;mb[Ra+2]=Vb.z;Ra=Ra+3}}E=0;for(W=oa.length;E<W;E++){P=
Sa[oa[E]];mc=P.vertexNormals;Vb=P.normal;if(mc.length===4&&Ec)for(pa=0;pa<4;pa++){Wb=mc[pa];mb[Ra]=Wb.x;mb[Ra+1]=Wb.y;mb[Ra+2]=Wb.z;Ra=Ra+3}else for(pa=0;pa<4;pa++){mb[Ra]=Vb.x;mb[Ra+1]=Vb.y;mb[Ra+2]=Vb.z;Ra=Ra+3}}l.bindBuffer(l.ARRAY_BUFFER,la.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,mb,kb)}if(jd&&ad&&gd){E=0;for(W=na.length;E<W;E++){Ub=na[E];nc=ad[Ub];if(nc!==void 0)for(pa=0;pa<3;pa++){pc=nc[pa];yc[Ob]=pc.u;yc[Ob+1]=pc.v;Ob=Ob+2}}E=0;for(W=oa.length;E<W;E++){Ub=oa[E];nc=ad[Ub];if(nc!==void 0)for(pa=
0;pa<4;pa++){pc=nc[pa];yc[Ob]=pc.u;yc[Ob+1]=pc.v;Ob=Ob+2}}if(Ob>0){l.bindBuffer(l.ARRAY_BUFFER,la.__webglUVBuffer);l.bufferData(l.ARRAY_BUFFER,yc,kb)}}if(jd&&bd&&gd){E=0;for(W=na.length;E<W;E++){Ub=na[E];oc=bd[Ub];if(oc!==void 0)for(pa=0;pa<3;pa++){qc=oc[pa];zc[Pb]=qc.u;zc[Pb+1]=qc.v;Pb=Pb+2}}E=0;for(W=oa.length;E<W;E++){Ub=oa[E];oc=bd[Ub];if(oc!==void 0)for(pa=0;pa<4;pa++){qc=oc[pa];zc[Pb]=qc.u;zc[Pb+1]=qc.v;Pb=Pb+2}}if(Pb>0){l.bindBuffer(l.ARRAY_BUFFER,la.__webglUV2Buffer);l.bufferData(l.ARRAY_BUFFER,
zc,kb)}}if(td){E=0;for(W=na.length;E<W;E++){Ib[lb]=Da;Ib[lb+1]=Da+1;Ib[lb+2]=Da+2;lb=lb+3;ab[Va]=Da;ab[Va+1]=Da+1;ab[Va+2]=Da;ab[Va+3]=Da+2;ab[Va+4]=Da+1;ab[Va+5]=Da+2;Va=Va+6;Da=Da+3}E=0;for(W=oa.length;E<W;E++){Ib[lb]=Da;Ib[lb+1]=Da+1;Ib[lb+2]=Da+3;Ib[lb+3]=Da+1;Ib[lb+4]=Da+2;Ib[lb+5]=Da+3;lb=lb+6;ab[Va]=Da;ab[Va+1]=Da+1;ab[Va+2]=Da;ab[Va+3]=Da+3;ab[Va+4]=Da+1;ab[Va+5]=Da+2;ab[Va+6]=Da+2;ab[Va+7]=Da+3;Va=Va+8;Da=Da+4}l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,la.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,
Ib,kb);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,la.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,ab,kb)}if($c){pa=0;for(hd=$c.length;pa<hd;pa++){x=$c[pa];if(x.__original.needsUpdate){z=0;if(x.size===1)if(x.boundTo===void 0||x.boundTo==="vertices"){E=0;for(W=na.length;E<W;E++){P=Sa[na[E]];x.array[z]=x.value[P.a];x.array[z+1]=x.value[P.b];x.array[z+2]=x.value[P.c];z=z+3}E=0;for(W=oa.length;E<W;E++){P=Sa[oa[E]];x.array[z]=x.value[P.a];x.array[z+1]=x.value[P.b];x.array[z+2]=x.value[P.c];x.array[z+
3]=x.value[P.d];z=z+4}}else{if(x.boundTo==="faces"){E=0;for(W=na.length;E<W;E++){ra=x.value[na[E]];x.array[z]=ra;x.array[z+1]=ra;x.array[z+2]=ra;z=z+3}E=0;for(W=oa.length;E<W;E++){ra=x.value[oa[E]];x.array[z]=ra;x.array[z+1]=ra;x.array[z+2]=ra;x.array[z+3]=ra;z=z+4}}}else if(x.size===2)if(x.boundTo===void 0||x.boundTo==="vertices"){E=0;for(W=na.length;E<W;E++){P=Sa[na[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=S.x;x.array[z+3]=S.y;x.array[z+4]=T.x;
x.array[z+5]=T.y;z=z+6}E=0;for(W=oa.length;E<W;E++){P=Sa[oa[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];ja=x.value[P.d];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=S.x;x.array[z+3]=S.y;x.array[z+4]=T.x;x.array[z+5]=T.y;x.array[z+6]=ja.x;x.array[z+7]=ja.y;z=z+8}}else{if(x.boundTo==="faces"){E=0;for(W=na.length;E<W;E++){T=S=R=ra=x.value[na[E]];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=S.x;x.array[z+3]=S.y;x.array[z+4]=T.x;x.array[z+5]=T.y;z=z+6}E=0;for(W=oa.length;E<W;E++){ja=T=S=R=ra=x.value[oa[E]];
x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=S.x;x.array[z+3]=S.y;x.array[z+4]=T.x;x.array[z+5]=T.y;x.array[z+6]=ja.x;x.array[z+7]=ja.y;z=z+8}}}else if(x.size===3){var Z;Z=x.type==="c"?["r","g","b"]:["x","y","z"];if(x.boundTo===void 0||x.boundTo==="vertices"){E=0;for(W=na.length;E<W;E++){P=Sa[na[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+
7]=T[Z[1]];x.array[z+8]=T[Z[2]];z=z+9}E=0;for(W=oa.length;E<W;E++){P=Sa[oa[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];ja=x.value[P.d];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];x.array[z+9]=ja[Z[0]];x.array[z+10]=ja[Z[1]];x.array[z+11]=ja[Z[2]];z=z+12}}else if(x.boundTo==="faces"){E=0;for(W=na.length;E<W;E++){T=S=R=ra=x.value[na[E]];x.array[z]=R[Z[0]];
x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];z=z+9}E=0;for(W=oa.length;E<W;E++){ja=T=S=R=ra=x.value[oa[E]];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];x.array[z+9]=ja[Z[0]];x.array[z+10]=ja[Z[1]];x.array[z+11]=ja[Z[2]];z=z+12}}else if(x.boundTo===
"faceVertices"){E=0;for(W=na.length;E<W;E++){ra=x.value[na[E]];R=ra[0];S=ra[1];T=ra[2];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];z=z+9}E=0;for(W=oa.length;E<W;E++){ra=x.value[oa[E]];R=ra[0];S=ra[1];T=ra[2];ja=ra[3];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];
x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];x.array[z+9]=ja[Z[0]];x.array[z+10]=ja[Z[1]];x.array[z+11]=ja[Z[2]];z=z+12}}}else if(x.size===4)if(x.boundTo===void 0||x.boundTo==="vertices"){E=0;for(W=na.length;E<W;E++){P=Sa[na[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;z=z+12}E=0;for(W=oa.length;E<
W;E++){P=Sa[oa[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];ja=x.value[P.d];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;x.array[z+12]=ja.x;x.array[z+13]=ja.y;x.array[z+14]=ja.z;x.array[z+15]=ja.w;z=z+16}}else if(x.boundTo==="faces"){E=0;for(W=na.length;E<W;E++){T=S=R=ra=x.value[na[E]];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+
3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;z=z+12}E=0;for(W=oa.length;E<W;E++){ja=T=S=R=ra=x.value[oa[E]];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;x.array[z+12]=ja.x;x.array[z+13]=ja.y;x.array[z+14]=ja.z;x.array[z+15]=ja.w;z=z+16}}else if(x.boundTo===
"faceVertices"){E=0;for(W=na.length;E<W;E++){ra=x.value[na[E]];R=ra[0];S=ra[1];T=ra[2];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;z=z+12}E=0;for(W=oa.length;E<W;E++){ra=x.value[oa[E]];R=ra[0];S=ra[1];T=ra[2];ja=ra[3];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+
7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;x.array[z+12]=ja.x;x.array[z+13]=ja.y;x.array[z+14]=ja.z;x.array[z+15]=ja.w;z=z+16}}l.bindBuffer(l.ARRAY_BUFFER,x.buffer);l.bufferData(l.ARRAY_BUFFER,x.array,kb)}}}if(sd){delete la.__inittedArrays;delete la.__colorArray;delete la.__normalArray;delete la.__tangentArray;delete la.__uvArray;delete la.__uv2Array;delete la.__faceArray;delete la.__vertexArray;delete la.__lineArray;delete la.__skinIndexArray;delete la.__skinWeightArray}}}}ea.verticesNeedUpdate=
false;ea.morphTargetsNeedUpdate=false;ea.elementsNeedUpdate=false;ea.uvsNeedUpdate=false;ea.normalsNeedUpdate=false;ea.colorsNeedUpdate=false;ea.tangentsNeedUpdate=false;Xa.attributes&&q(Xa)}else if(pb instanceof THREE.Ribbon){if(ea.verticesNeedUpdate||ea.colorsNeedUpdate){var $b=ea,kd=l.DYNAMIC_DRAW,Ac=void 0,Bc=void 0,Hc=void 0,ac=void 0,Ic=void 0,ld=$b.vertices,md=$b.colors,yd=ld.length,zd=md.length,Jc=$b.__vertexArray,Kc=$b.__colorArray,Ad=$b.colorsNeedUpdate;if($b.verticesNeedUpdate){for(Ac=
0;Ac<yd;Ac++){Hc=ld[Ac];ac=Ac*3;Jc[ac]=Hc.x;Jc[ac+1]=Hc.y;Jc[ac+2]=Hc.z}l.bindBuffer(l.ARRAY_BUFFER,$b.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Jc,kd)}if(Ad){for(Bc=0;Bc<zd;Bc++){Ic=md[Bc];ac=Bc*3;Kc[ac]=Ic.r;Kc[ac+1]=Ic.g;Kc[ac+2]=Ic.b}l.bindBuffer(l.ARRAY_BUFFER,$b.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,Kc,kd)}}ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false}else if(pb instanceof THREE.Line){Xa=c(pb,gb);cb=Xa.attributes&&m(Xa);if(ea.verticesNeedUpdate||ea.colorsNeedUpdate||
cb){var Qb=ea,cd=l.DYNAMIC_DRAW,Cc=void 0,Dc=void 0,Lc=void 0,Aa=void 0,Mc=void 0,nd=Qb.vertices,od=Qb.colors,Bd=nd.length,Cd=od.length,Nc=Qb.__vertexArray,Oc=Qb.__colorArray,Dd=Qb.colorsNeedUpdate,dd=Qb.__webglCustomAttributesList,Pc=void 0,pd=void 0,Oa=void 0,rc=void 0,Za=void 0,wa=void 0;if(Qb.verticesNeedUpdate){for(Cc=0;Cc<Bd;Cc++){Lc=nd[Cc];Aa=Cc*3;Nc[Aa]=Lc.x;Nc[Aa+1]=Lc.y;Nc[Aa+2]=Lc.z}l.bindBuffer(l.ARRAY_BUFFER,Qb.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Nc,cd)}if(Dd){for(Dc=0;Dc<
Cd;Dc++){Mc=od[Dc];Aa=Dc*3;Oc[Aa]=Mc.r;Oc[Aa+1]=Mc.g;Oc[Aa+2]=Mc.b}l.bindBuffer(l.ARRAY_BUFFER,Qb.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,Oc,cd)}if(dd){Pc=0;for(pd=dd.length;Pc<pd;Pc++){wa=dd[Pc];if(wa.needsUpdate&&(wa.boundTo===void 0||wa.boundTo==="vertices")){Aa=0;rc=wa.value.length;if(wa.size===1)for(Oa=0;Oa<rc;Oa++)wa.array[Oa]=wa.value[Oa];else if(wa.size===2)for(Oa=0;Oa<rc;Oa++){Za=wa.value[Oa];wa.array[Aa]=Za.x;wa.array[Aa+1]=Za.y;Aa=Aa+2}else if(wa.size===3)if(wa.type==="c")for(Oa=
0;Oa<rc;Oa++){Za=wa.value[Oa];wa.array[Aa]=Za.r;wa.array[Aa+1]=Za.g;wa.array[Aa+2]=Za.b;Aa=Aa+3}else for(Oa=0;Oa<rc;Oa++){Za=wa.value[Oa];wa.array[Aa]=Za.x;wa.array[Aa+1]=Za.y;wa.array[Aa+2]=Za.z;Aa=Aa+3}else if(wa.size===4)for(Oa=0;Oa<rc;Oa++){Za=wa.value[Oa];wa.array[Aa]=Za.x;wa.array[Aa+1]=Za.y;wa.array[Aa+2]=Za.z;wa.array[Aa+3]=Za.w;Aa=Aa+4}l.bindBuffer(l.ARRAY_BUFFER,wa.buffer);l.bufferData(l.ARRAY_BUFFER,wa.array,cd)}}}}ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false;Xa.attributes&&q(Xa)}else if(pb instanceof
THREE.ParticleSystem){Xa=c(pb,gb);cb=Xa.attributes&&m(Xa);(ea.verticesNeedUpdate||ea.colorsNeedUpdate||pb.sortParticles||cb)&&e(ea,l.DYNAMIC_DRAW,pb);ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false;Xa.attributes&&q(Xa)}}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,k,n;a instanceof THREE.MeshDepthMaterial?n="depth":a instanceof THREE.MeshNormalMaterial?n="normal":a instanceof THREE.MeshBasicMaterial?n="basic":a instanceof THREE.MeshLambertMaterial?n="lambert":a instanceof THREE.MeshPhongMaterial?
false;ea.colorsNeedUpdate=false;ea.tangentsNeedUpdate=false}else{for(var Wc=0,qd=ea.geometryGroupsList.length;Wc<qd;Wc++){gb=ea.geometryGroupsList[Wc];Ya=c(pb,gb);cb=Ya.attributes&&m(Ya);if(ea.verticesNeedUpdate||ea.morphTargetsNeedUpdate||ea.elementsNeedUpdate||ea.uvsNeedUpdate||ea.normalsNeedUpdate||ea.colorsNeedUpdate||ea.tangentsNeedUpdate||cb){var ka=gb,rd=pb,kb=l.DYNAMIC_DRAW,sd=!ea.dynamic,fc=Ya;if(ka.__inittedArrays){var fd=d(fc),Xc=fc.vertexColors?fc.vertexColors:false,gd=f(fc),Ec=fd===THREE.SmoothShading,
E=void 0,V=void 0,Ub=void 0,P=void 0,mc=void 0,Vb=void 0,qb=void 0,Fc=void 0,Mb=void 0,nc=void 0,oc=void 0,R=void 0,S=void 0,T=void 0,ia=void 0,tb=void 0,ub=void 0,vb=void 0,tc=void 0,wb=void 0,xb=void 0,yb=void 0,uc=void 0,zb=void 0,Ab=void 0,Bb=void 0,vc=void 0,Cb=void 0,Db=void 0,Eb=void 0,wc=void 0,Fb=void 0,Gb=void 0,Hb=void 0,xc=void 0,pa=void 0,hd=void 0,Wb=void 0,pc=void 0,qc=void 0,Ma=void 0,id=void 0,Ka=void 0,La=void 0,Xb=void 0,Nb=void 0,Ea=0,Ha=0,Ob=0,Pb=0,lb=0,Sa=0,ua=0,Wa=0,Fa=0,aa=
0,fa=0,z=0,ra=void 0,Na=ka.__vertexArray,yc=ka.__uvArray,zc=ka.__uv2Array,mb=ka.__normalArray,xa=ka.__tangentArray,Oa=ka.__colorArray,ya=ka.__skinIndexArray,za=ka.__skinWeightArray,Yc=ka.__morphTargetsArrays,Zc=ka.__morphNormalsArrays,$c=ka.__webglCustomAttributesList,x=void 0,Ib=ka.__faceArray,ab=ka.__lineArray,Za=rd.geometry,td=Za.elementsNeedUpdate,jd=Za.uvsNeedUpdate,ud=Za.normalsNeedUpdate,vd=Za.tangentsNeedUpdate,wd=Za.colorsNeedUpdate,xd=Za.morphTargetsNeedUpdate,gc=Za.vertices,la=ka.faces3,
ma=ka.faces4,Ta=Za.faces,ad=Za.faceVertexUvs[0],bd=Za.faceVertexUvs[1],hc=Za.skinIndices,Yb=Za.skinWeights,Zb=Za.morphTargets,Gc=Za.morphNormals;if(Za.verticesNeedUpdate){E=0;for(V=la.length;E<V;E++){P=Ta[la[E]];R=gc[P.a];S=gc[P.b];T=gc[P.c];Na[Ha]=R.x;Na[Ha+1]=R.y;Na[Ha+2]=R.z;Na[Ha+3]=S.x;Na[Ha+4]=S.y;Na[Ha+5]=S.z;Na[Ha+6]=T.x;Na[Ha+7]=T.y;Na[Ha+8]=T.z;Ha=Ha+9}E=0;for(V=ma.length;E<V;E++){P=Ta[ma[E]];R=gc[P.a];S=gc[P.b];T=gc[P.c];ia=gc[P.d];Na[Ha]=R.x;Na[Ha+1]=R.y;Na[Ha+2]=R.z;Na[Ha+3]=S.x;Na[Ha+
4]=S.y;Na[Ha+5]=S.z;Na[Ha+6]=T.x;Na[Ha+7]=T.y;Na[Ha+8]=T.z;Na[Ha+9]=ia.x;Na[Ha+10]=ia.y;Na[Ha+11]=ia.z;Ha=Ha+12}l.bindBuffer(l.ARRAY_BUFFER,ka.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Na,kb)}if(xd){Ma=0;for(id=Zb.length;Ma<id;Ma++){E=fa=0;for(V=la.length;E<V;E++){Xb=la[E];P=Ta[Xb];R=Zb[Ma].vertices[P.a];S=Zb[Ma].vertices[P.b];T=Zb[Ma].vertices[P.c];Ka=Yc[Ma];Ka[fa]=R.x;Ka[fa+1]=R.y;Ka[fa+2]=R.z;Ka[fa+3]=S.x;Ka[fa+4]=S.y;Ka[fa+5]=S.z;Ka[fa+6]=T.x;Ka[fa+7]=T.y;Ka[fa+8]=T.z;if(fc.morphNormals){if(Ec){Nb=
Gc[Ma].vertexNormals[Xb];wb=Nb.a;xb=Nb.b;yb=Nb.c}else yb=xb=wb=Gc[Ma].faceNormals[Xb];La=Zc[Ma];La[fa]=wb.x;La[fa+1]=wb.y;La[fa+2]=wb.z;La[fa+3]=xb.x;La[fa+4]=xb.y;La[fa+5]=xb.z;La[fa+6]=yb.x;La[fa+7]=yb.y;La[fa+8]=yb.z}fa=fa+9}E=0;for(V=ma.length;E<V;E++){Xb=ma[E];P=Ta[Xb];R=Zb[Ma].vertices[P.a];S=Zb[Ma].vertices[P.b];T=Zb[Ma].vertices[P.c];ia=Zb[Ma].vertices[P.d];Ka=Yc[Ma];Ka[fa]=R.x;Ka[fa+1]=R.y;Ka[fa+2]=R.z;Ka[fa+3]=S.x;Ka[fa+4]=S.y;Ka[fa+5]=S.z;Ka[fa+6]=T.x;Ka[fa+7]=T.y;Ka[fa+8]=T.z;Ka[fa+9]=
ia.x;Ka[fa+10]=ia.y;Ka[fa+11]=ia.z;if(fc.morphNormals){if(Ec){Nb=Gc[Ma].vertexNormals[Xb];wb=Nb.a;xb=Nb.b;yb=Nb.c;uc=Nb.d}else uc=yb=xb=wb=Gc[Ma].faceNormals[Xb];La=Zc[Ma];La[fa]=wb.x;La[fa+1]=wb.y;La[fa+2]=wb.z;La[fa+3]=xb.x;La[fa+4]=xb.y;La[fa+5]=xb.z;La[fa+6]=yb.x;La[fa+7]=yb.y;La[fa+8]=yb.z;La[fa+9]=uc.x;La[fa+10]=uc.y;La[fa+11]=uc.z}fa=fa+12}l.bindBuffer(l.ARRAY_BUFFER,ka.__webglMorphTargetsBuffers[Ma]);l.bufferData(l.ARRAY_BUFFER,Yc[Ma],kb);if(fc.morphNormals){l.bindBuffer(l.ARRAY_BUFFER,ka.__webglMorphNormalsBuffers[Ma]);
l.bufferData(l.ARRAY_BUFFER,Zc[Ma],kb)}}}if(Yb.length){E=0;for(V=la.length;E<V;E++){P=Ta[la[E]];Cb=Yb[P.a];Db=Yb[P.b];Eb=Yb[P.c];za[aa]=Cb.x;za[aa+1]=Cb.y;za[aa+2]=Cb.z;za[aa+3]=Cb.w;za[aa+4]=Db.x;za[aa+5]=Db.y;za[aa+6]=Db.z;za[aa+7]=Db.w;za[aa+8]=Eb.x;za[aa+9]=Eb.y;za[aa+10]=Eb.z;za[aa+11]=Eb.w;Fb=hc[P.a];Gb=hc[P.b];Hb=hc[P.c];ya[aa]=Fb.x;ya[aa+1]=Fb.y;ya[aa+2]=Fb.z;ya[aa+3]=Fb.w;ya[aa+4]=Gb.x;ya[aa+5]=Gb.y;ya[aa+6]=Gb.z;ya[aa+7]=Gb.w;ya[aa+8]=Hb.x;ya[aa+9]=Hb.y;ya[aa+10]=Hb.z;ya[aa+11]=Hb.w;aa=
aa+12}E=0;for(V=ma.length;E<V;E++){P=Ta[ma[E]];Cb=Yb[P.a];Db=Yb[P.b];Eb=Yb[P.c];wc=Yb[P.d];za[aa]=Cb.x;za[aa+1]=Cb.y;za[aa+2]=Cb.z;za[aa+3]=Cb.w;za[aa+4]=Db.x;za[aa+5]=Db.y;za[aa+6]=Db.z;za[aa+7]=Db.w;za[aa+8]=Eb.x;za[aa+9]=Eb.y;za[aa+10]=Eb.z;za[aa+11]=Eb.w;za[aa+12]=wc.x;za[aa+13]=wc.y;za[aa+14]=wc.z;za[aa+15]=wc.w;Fb=hc[P.a];Gb=hc[P.b];Hb=hc[P.c];xc=hc[P.d];ya[aa]=Fb.x;ya[aa+1]=Fb.y;ya[aa+2]=Fb.z;ya[aa+3]=Fb.w;ya[aa+4]=Gb.x;ya[aa+5]=Gb.y;ya[aa+6]=Gb.z;ya[aa+7]=Gb.w;ya[aa+8]=Hb.x;ya[aa+9]=Hb.y;
ya[aa+10]=Hb.z;ya[aa+11]=Hb.w;ya[aa+12]=xc.x;ya[aa+13]=xc.y;ya[aa+14]=xc.z;ya[aa+15]=xc.w;aa=aa+16}if(aa>0){l.bindBuffer(l.ARRAY_BUFFER,ka.__webglSkinIndicesBuffer);l.bufferData(l.ARRAY_BUFFER,ya,kb);l.bindBuffer(l.ARRAY_BUFFER,ka.__webglSkinWeightsBuffer);l.bufferData(l.ARRAY_BUFFER,za,kb)}}if(wd&&Xc){E=0;for(V=la.length;E<V;E++){P=Ta[la[E]];qb=P.vertexColors;Fc=P.color;if(qb.length===3&&Xc===THREE.VertexColors){zb=qb[0];Ab=qb[1];Bb=qb[2]}else Bb=Ab=zb=Fc;Oa[Fa]=zb.r;Oa[Fa+1]=zb.g;Oa[Fa+2]=zb.b;
Oa[Fa+3]=Ab.r;Oa[Fa+4]=Ab.g;Oa[Fa+5]=Ab.b;Oa[Fa+6]=Bb.r;Oa[Fa+7]=Bb.g;Oa[Fa+8]=Bb.b;Fa=Fa+9}E=0;for(V=ma.length;E<V;E++){P=Ta[ma[E]];qb=P.vertexColors;Fc=P.color;if(qb.length===4&&Xc===THREE.VertexColors){zb=qb[0];Ab=qb[1];Bb=qb[2];vc=qb[3]}else vc=Bb=Ab=zb=Fc;Oa[Fa]=zb.r;Oa[Fa+1]=zb.g;Oa[Fa+2]=zb.b;Oa[Fa+3]=Ab.r;Oa[Fa+4]=Ab.g;Oa[Fa+5]=Ab.b;Oa[Fa+6]=Bb.r;Oa[Fa+7]=Bb.g;Oa[Fa+8]=Bb.b;Oa[Fa+9]=vc.r;Oa[Fa+10]=vc.g;Oa[Fa+11]=vc.b;Fa=Fa+12}if(Fa>0){l.bindBuffer(l.ARRAY_BUFFER,ka.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,
Oa,kb)}}if(vd&&Za.hasTangents){E=0;for(V=la.length;E<V;E++){P=Ta[la[E]];Mb=P.vertexTangents;tb=Mb[0];ub=Mb[1];vb=Mb[2];xa[ua]=tb.x;xa[ua+1]=tb.y;xa[ua+2]=tb.z;xa[ua+3]=tb.w;xa[ua+4]=ub.x;xa[ua+5]=ub.y;xa[ua+6]=ub.z;xa[ua+7]=ub.w;xa[ua+8]=vb.x;xa[ua+9]=vb.y;xa[ua+10]=vb.z;xa[ua+11]=vb.w;ua=ua+12}E=0;for(V=ma.length;E<V;E++){P=Ta[ma[E]];Mb=P.vertexTangents;tb=Mb[0];ub=Mb[1];vb=Mb[2];tc=Mb[3];xa[ua]=tb.x;xa[ua+1]=tb.y;xa[ua+2]=tb.z;xa[ua+3]=tb.w;xa[ua+4]=ub.x;xa[ua+5]=ub.y;xa[ua+6]=ub.z;xa[ua+7]=ub.w;
xa[ua+8]=vb.x;xa[ua+9]=vb.y;xa[ua+10]=vb.z;xa[ua+11]=vb.w;xa[ua+12]=tc.x;xa[ua+13]=tc.y;xa[ua+14]=tc.z;xa[ua+15]=tc.w;ua=ua+16}l.bindBuffer(l.ARRAY_BUFFER,ka.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,xa,kb)}if(ud&&fd){E=0;for(V=la.length;E<V;E++){P=Ta[la[E]];mc=P.vertexNormals;Vb=P.normal;if(mc.length===3&&Ec)for(pa=0;pa<3;pa++){Wb=mc[pa];mb[Sa]=Wb.x;mb[Sa+1]=Wb.y;mb[Sa+2]=Wb.z;Sa=Sa+3}else for(pa=0;pa<3;pa++){mb[Sa]=Vb.x;mb[Sa+1]=Vb.y;mb[Sa+2]=Vb.z;Sa=Sa+3}}E=0;for(V=ma.length;E<V;E++){P=
Ta[ma[E]];mc=P.vertexNormals;Vb=P.normal;if(mc.length===4&&Ec)for(pa=0;pa<4;pa++){Wb=mc[pa];mb[Sa]=Wb.x;mb[Sa+1]=Wb.y;mb[Sa+2]=Wb.z;Sa=Sa+3}else for(pa=0;pa<4;pa++){mb[Sa]=Vb.x;mb[Sa+1]=Vb.y;mb[Sa+2]=Vb.z;Sa=Sa+3}}l.bindBuffer(l.ARRAY_BUFFER,ka.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,mb,kb)}if(jd&&ad&&gd){E=0;for(V=la.length;E<V;E++){Ub=la[E];nc=ad[Ub];if(nc!==void 0)for(pa=0;pa<3;pa++){pc=nc[pa];yc[Ob]=pc.u;yc[Ob+1]=pc.v;Ob=Ob+2}}E=0;for(V=ma.length;E<V;E++){Ub=ma[E];nc=ad[Ub];if(nc!==void 0)for(pa=
0;pa<4;pa++){pc=nc[pa];yc[Ob]=pc.u;yc[Ob+1]=pc.v;Ob=Ob+2}}if(Ob>0){l.bindBuffer(l.ARRAY_BUFFER,ka.__webglUVBuffer);l.bufferData(l.ARRAY_BUFFER,yc,kb)}}if(jd&&bd&&gd){E=0;for(V=la.length;E<V;E++){Ub=la[E];oc=bd[Ub];if(oc!==void 0)for(pa=0;pa<3;pa++){qc=oc[pa];zc[Pb]=qc.u;zc[Pb+1]=qc.v;Pb=Pb+2}}E=0;for(V=ma.length;E<V;E++){Ub=ma[E];oc=bd[Ub];if(oc!==void 0)for(pa=0;pa<4;pa++){qc=oc[pa];zc[Pb]=qc.u;zc[Pb+1]=qc.v;Pb=Pb+2}}if(Pb>0){l.bindBuffer(l.ARRAY_BUFFER,ka.__webglUV2Buffer);l.bufferData(l.ARRAY_BUFFER,
zc,kb)}}if(td){E=0;for(V=la.length;E<V;E++){Ib[lb]=Ea;Ib[lb+1]=Ea+1;Ib[lb+2]=Ea+2;lb=lb+3;ab[Wa]=Ea;ab[Wa+1]=Ea+1;ab[Wa+2]=Ea;ab[Wa+3]=Ea+2;ab[Wa+4]=Ea+1;ab[Wa+5]=Ea+2;Wa=Wa+6;Ea=Ea+3}E=0;for(V=ma.length;E<V;E++){Ib[lb]=Ea;Ib[lb+1]=Ea+1;Ib[lb+2]=Ea+3;Ib[lb+3]=Ea+1;Ib[lb+4]=Ea+2;Ib[lb+5]=Ea+3;lb=lb+6;ab[Wa]=Ea;ab[Wa+1]=Ea+1;ab[Wa+2]=Ea;ab[Wa+3]=Ea+3;ab[Wa+4]=Ea+1;ab[Wa+5]=Ea+2;ab[Wa+6]=Ea+2;ab[Wa+7]=Ea+3;Wa=Wa+8;Ea=Ea+4}l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,ka.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,
Ib,kb);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,ka.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,ab,kb)}if($c){pa=0;for(hd=$c.length;pa<hd;pa++){x=$c[pa];if(x.__original.needsUpdate){z=0;if(x.size===1)if(x.boundTo===void 0||x.boundTo==="vertices"){E=0;for(V=la.length;E<V;E++){P=Ta[la[E]];x.array[z]=x.value[P.a];x.array[z+1]=x.value[P.b];x.array[z+2]=x.value[P.c];z=z+3}E=0;for(V=ma.length;E<V;E++){P=Ta[ma[E]];x.array[z]=x.value[P.a];x.array[z+1]=x.value[P.b];x.array[z+2]=x.value[P.c];x.array[z+
3]=x.value[P.d];z=z+4}}else{if(x.boundTo==="faces"){E=0;for(V=la.length;E<V;E++){ra=x.value[la[E]];x.array[z]=ra;x.array[z+1]=ra;x.array[z+2]=ra;z=z+3}E=0;for(V=ma.length;E<V;E++){ra=x.value[ma[E]];x.array[z]=ra;x.array[z+1]=ra;x.array[z+2]=ra;x.array[z+3]=ra;z=z+4}}}else if(x.size===2)if(x.boundTo===void 0||x.boundTo==="vertices"){E=0;for(V=la.length;E<V;E++){P=Ta[la[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=S.x;x.array[z+3]=S.y;x.array[z+4]=T.x;
x.array[z+5]=T.y;z=z+6}E=0;for(V=ma.length;E<V;E++){P=Ta[ma[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];ia=x.value[P.d];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=S.x;x.array[z+3]=S.y;x.array[z+4]=T.x;x.array[z+5]=T.y;x.array[z+6]=ia.x;x.array[z+7]=ia.y;z=z+8}}else{if(x.boundTo==="faces"){E=0;for(V=la.length;E<V;E++){T=S=R=ra=x.value[la[E]];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=S.x;x.array[z+3]=S.y;x.array[z+4]=T.x;x.array[z+5]=T.y;z=z+6}E=0;for(V=ma.length;E<V;E++){ia=T=S=R=ra=x.value[ma[E]];
x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=S.x;x.array[z+3]=S.y;x.array[z+4]=T.x;x.array[z+5]=T.y;x.array[z+6]=ia.x;x.array[z+7]=ia.y;z=z+8}}}else if(x.size===3){var Z;Z=x.type==="c"?["r","g","b"]:["x","y","z"];if(x.boundTo===void 0||x.boundTo==="vertices"){E=0;for(V=la.length;E<V;E++){P=Ta[la[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+
7]=T[Z[1]];x.array[z+8]=T[Z[2]];z=z+9}E=0;for(V=ma.length;E<V;E++){P=Ta[ma[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];ia=x.value[P.d];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];x.array[z+9]=ia[Z[0]];x.array[z+10]=ia[Z[1]];x.array[z+11]=ia[Z[2]];z=z+12}}else if(x.boundTo==="faces"){E=0;for(V=la.length;E<V;E++){T=S=R=ra=x.value[la[E]];x.array[z]=R[Z[0]];
x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];z=z+9}E=0;for(V=ma.length;E<V;E++){ia=T=S=R=ra=x.value[ma[E]];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];x.array[z+9]=ia[Z[0]];x.array[z+10]=ia[Z[1]];x.array[z+11]=ia[Z[2]];z=z+12}}else if(x.boundTo===
"faceVertices"){E=0;for(V=la.length;E<V;E++){ra=x.value[la[E]];R=ra[0];S=ra[1];T=ra[2];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];z=z+9}E=0;for(V=ma.length;E<V;E++){ra=x.value[ma[E]];R=ra[0];S=ra[1];T=ra[2];ia=ra[3];x.array[z]=R[Z[0]];x.array[z+1]=R[Z[1]];x.array[z+2]=R[Z[2]];x.array[z+3]=S[Z[0]];x.array[z+4]=S[Z[1]];x.array[z+5]=S[Z[2]];x.array[z+6]=T[Z[0]];
x.array[z+7]=T[Z[1]];x.array[z+8]=T[Z[2]];x.array[z+9]=ia[Z[0]];x.array[z+10]=ia[Z[1]];x.array[z+11]=ia[Z[2]];z=z+12}}}else if(x.size===4)if(x.boundTo===void 0||x.boundTo==="vertices"){E=0;for(V=la.length;E<V;E++){P=Ta[la[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;z=z+12}E=0;for(V=ma.length;E<
V;E++){P=Ta[ma[E]];R=x.value[P.a];S=x.value[P.b];T=x.value[P.c];ia=x.value[P.d];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;x.array[z+12]=ia.x;x.array[z+13]=ia.y;x.array[z+14]=ia.z;x.array[z+15]=ia.w;z=z+16}}else if(x.boundTo==="faces"){E=0;for(V=la.length;E<V;E++){T=S=R=ra=x.value[la[E]];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+
3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;z=z+12}E=0;for(V=ma.length;E<V;E++){ia=T=S=R=ra=x.value[ma[E]];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;x.array[z+12]=ia.x;x.array[z+13]=ia.y;x.array[z+14]=ia.z;x.array[z+15]=ia.w;z=z+16}}else if(x.boundTo===
"faceVertices"){E=0;for(V=la.length;E<V;E++){ra=x.value[la[E]];R=ra[0];S=ra[1];T=ra[2];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;z=z+12}E=0;for(V=ma.length;E<V;E++){ra=x.value[ma[E]];R=ra[0];S=ra[1];T=ra[2];ia=ra[3];x.array[z]=R.x;x.array[z+1]=R.y;x.array[z+2]=R.z;x.array[z+3]=R.w;x.array[z+4]=S.x;x.array[z+5]=S.y;x.array[z+6]=S.z;x.array[z+
7]=S.w;x.array[z+8]=T.x;x.array[z+9]=T.y;x.array[z+10]=T.z;x.array[z+11]=T.w;x.array[z+12]=ia.x;x.array[z+13]=ia.y;x.array[z+14]=ia.z;x.array[z+15]=ia.w;z=z+16}}l.bindBuffer(l.ARRAY_BUFFER,x.buffer);l.bufferData(l.ARRAY_BUFFER,x.array,kb)}}}if(sd){delete ka.__inittedArrays;delete ka.__colorArray;delete ka.__normalArray;delete ka.__tangentArray;delete ka.__uvArray;delete ka.__uv2Array;delete ka.__faceArray;delete ka.__vertexArray;delete ka.__lineArray;delete ka.__skinIndexArray;delete ka.__skinWeightArray}}}}ea.verticesNeedUpdate=
false;ea.morphTargetsNeedUpdate=false;ea.elementsNeedUpdate=false;ea.uvsNeedUpdate=false;ea.normalsNeedUpdate=false;ea.colorsNeedUpdate=false;ea.tangentsNeedUpdate=false;Ya.attributes&&q(Ya)}else if(pb instanceof THREE.Ribbon){if(ea.verticesNeedUpdate||ea.colorsNeedUpdate){var $b=ea,kd=l.DYNAMIC_DRAW,Ac=void 0,Bc=void 0,Hc=void 0,ac=void 0,Ic=void 0,ld=$b.vertices,md=$b.colors,yd=ld.length,zd=md.length,Jc=$b.__vertexArray,Kc=$b.__colorArray,Ad=$b.colorsNeedUpdate;if($b.verticesNeedUpdate){for(Ac=
0;Ac<yd;Ac++){Hc=ld[Ac];ac=Ac*3;Jc[ac]=Hc.x;Jc[ac+1]=Hc.y;Jc[ac+2]=Hc.z}l.bindBuffer(l.ARRAY_BUFFER,$b.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Jc,kd)}if(Ad){for(Bc=0;Bc<zd;Bc++){Ic=md[Bc];ac=Bc*3;Kc[ac]=Ic.r;Kc[ac+1]=Ic.g;Kc[ac+2]=Ic.b}l.bindBuffer(l.ARRAY_BUFFER,$b.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,Kc,kd)}}ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false}else if(pb instanceof THREE.Line){Ya=c(pb,gb);cb=Ya.attributes&&m(Ya);if(ea.verticesNeedUpdate||ea.colorsNeedUpdate||
cb){var Qb=ea,cd=l.DYNAMIC_DRAW,Cc=void 0,Dc=void 0,Lc=void 0,Aa=void 0,Mc=void 0,nd=Qb.vertices,od=Qb.colors,Bd=nd.length,Cd=od.length,Nc=Qb.__vertexArray,Oc=Qb.__colorArray,Dd=Qb.colorsNeedUpdate,dd=Qb.__webglCustomAttributesList,Pc=void 0,pd=void 0,Pa=void 0,rc=void 0,$a=void 0,wa=void 0;if(Qb.verticesNeedUpdate){for(Cc=0;Cc<Bd;Cc++){Lc=nd[Cc];Aa=Cc*3;Nc[Aa]=Lc.x;Nc[Aa+1]=Lc.y;Nc[Aa+2]=Lc.z}l.bindBuffer(l.ARRAY_BUFFER,Qb.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Nc,cd)}if(Dd){for(Dc=0;Dc<
Cd;Dc++){Mc=od[Dc];Aa=Dc*3;Oc[Aa]=Mc.r;Oc[Aa+1]=Mc.g;Oc[Aa+2]=Mc.b}l.bindBuffer(l.ARRAY_BUFFER,Qb.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,Oc,cd)}if(dd){Pc=0;for(pd=dd.length;Pc<pd;Pc++){wa=dd[Pc];if(wa.needsUpdate&&(wa.boundTo===void 0||wa.boundTo==="vertices")){Aa=0;rc=wa.value.length;if(wa.size===1)for(Pa=0;Pa<rc;Pa++)wa.array[Pa]=wa.value[Pa];else if(wa.size===2)for(Pa=0;Pa<rc;Pa++){$a=wa.value[Pa];wa.array[Aa]=$a.x;wa.array[Aa+1]=$a.y;Aa=Aa+2}else if(wa.size===3)if(wa.type==="c")for(Pa=
0;Pa<rc;Pa++){$a=wa.value[Pa];wa.array[Aa]=$a.r;wa.array[Aa+1]=$a.g;wa.array[Aa+2]=$a.b;Aa=Aa+3}else for(Pa=0;Pa<rc;Pa++){$a=wa.value[Pa];wa.array[Aa]=$a.x;wa.array[Aa+1]=$a.y;wa.array[Aa+2]=$a.z;Aa=Aa+3}else if(wa.size===4)for(Pa=0;Pa<rc;Pa++){$a=wa.value[Pa];wa.array[Aa]=$a.x;wa.array[Aa+1]=$a.y;wa.array[Aa+2]=$a.z;wa.array[Aa+3]=$a.w;Aa=Aa+4}l.bindBuffer(l.ARRAY_BUFFER,wa.buffer);l.bufferData(l.ARRAY_BUFFER,wa.array,cd)}}}}ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false;Ya.attributes&&q(Ya)}else if(pb instanceof
THREE.ParticleSystem){Ya=c(pb,gb);cb=Ya.attributes&&m(Ya);(ea.verticesNeedUpdate||ea.colorsNeedUpdate||pb.sortParticles||cb)&&e(ea,l.DYNAMIC_DRAW,pb);ea.verticesNeedUpdate=false;ea.colorsNeedUpdate=false;Ya.attributes&&q(Ya)}}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,k,n;a instanceof THREE.MeshDepthMaterial?n="depth":a instanceof THREE.MeshNormalMaterial?n="normal":a instanceof THREE.MeshBasicMaterial?n="basic":a instanceof THREE.MeshLambertMaterial?n="lambert":a instanceof THREE.MeshPhongMaterial?
n="phong":a instanceof THREE.LineBasicMaterial?n="basic":a instanceof THREE.ParticleBasicMaterial&&(n="particle_basic");if(n){var m=THREE.ShaderLib[n];a.uniforms=THREE.UniformsUtils.clone(m.uniforms);a.vertexShader=m.vertexShader;a.fragmentShader=m.fragmentShader}var o,p;o=g=e=m=0;for(f=b.length;o<f;o++){p=b[o];if(!p.onlyShadow){p instanceof THREE.DirectionalLight&&g++;p instanceof THREE.PointLight&&e++;p instanceof THREE.SpotLight&&m++}}if(e+m+g<=L){o=g;f=e}else{o=Math.ceil(L*g/(e+g));m=f=L-o}e=
o;g=m;m=k=0;for(o=b.length;m<o;m++){p=b[m];if(p.castShadow){p instanceof THREE.SpotLight&&k++;p instanceof THREE.DirectionalLight&&!p.shadowCascade&&k++}}if(bc&&d&&d.useVertexTexture)j=1024;else{b=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS);b=Math.floor((b-20)/4);if(d!==void 0&&d instanceof THREE.SkinnedMesh){b=Math.min(d.bones.length,b);b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")}j=b}var q;a:{p=
a.fragmentShader;o=a.vertexShader;var m=a.uniforms,b=a.attributes,c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:j,useVertexTexture:bc&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,
......@@ -455,21 +455,21 @@ THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define
"modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","morphTargetInfluences"];c.useVertexTexture?d.push("boneTexture"):d.push("boneGlobalMatrices");for(s in m)d.push(s);s=d;d=0;for(m=s.length;d<m;d++){e=s[d];r.uniforms[e]=l.getUniformLocation(r,e)}d=["position","normal","uv","uv2","tangent","color","skinIndex","skinWeight"];for(s=0;s<c.maxMorphTargets;s++)d.push("morphTarget"+s);for(s=0;s<c.maxMorphNormals;s++)d.push("morphNormal"+s);for(q in b)d.push(q);q=d;s=0;for(c=
q.length;s<c;s++){d=q[s];r.attributes[d]=l.getAttribLocation(r,d)}r.id=O++;U.push({program:r,code:n,usedTimes:1});G.info.memory.programs=U.length;q=r}a.program=q;q=a.program.attributes;q.position>=0&&l.enableVertexAttribArray(q.position);q.color>=0&&l.enableVertexAttribArray(q.color);q.normal>=0&&l.enableVertexAttribArray(q.normal);q.tangent>=0&&l.enableVertexAttribArray(q.tangent);if(a.skinning&&q.skinIndex>=0&&q.skinWeight>=0){l.enableVertexAttribArray(q.skinIndex);l.enableVertexAttribArray(q.skinWeight)}if(a.attributes)for(i in a.attributes)q[i]!==
void 0&&q[i]>=0&&l.enableVertexAttribArray(q[i]);if(a.morphTargets){a.numSupportedMorphTargets=0;r="morphTarget";for(i=0;i<this.maxMorphTargets;i++){s=r+i;if(q[s]>=0){l.enableVertexAttribArray(q[s]);a.numSupportedMorphTargets++}}}if(a.morphNormals){a.numSupportedMorphNormals=0;r="morphNormal";for(i=0;i<this.maxMorphNormals;i++){s=r+i;if(q[s]>=0){l.enableVertexAttribArray(q[s]);a.numSupportedMorphNormals++}}}a.uniformsList=[];for(h in a.uniforms)a.uniformsList.push([a.uniforms[h],h])};this.setFaceCulling=
function(a,b){if(a){!b||b==="ccw"?l.frontFace(l.CCW):l.frontFace(l.CW);a==="back"?l.cullFace(l.BACK):a==="front"?l.cullFace(l.FRONT):l.cullFace(l.FRONT_AND_BACK);l.enable(l.CULL_FACE)}else l.disable(l.CULL_FACE)};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide,a=a.side===THREE.BackSide;if(ba!==b){b?l.disable(l.CULL_FACE):l.enable(l.CULL_FACE);ba=b}if($!==a){a?l.frontFace(l.CW):l.frontFace(l.CCW);$=a}};this.setDepthTest=function(a){if(qa!==a){a?l.enable(l.DEPTH_TEST):l.disable(l.DEPTH_TEST);
qa=a}};this.setDepthWrite=function(a){if(Fa!==a){l.depthMask(a);Fa=a}};this.setBlending=function(a,b,c,d){if(a!==ca){if(a===THREE.NoBlending)l.disable(l.BLEND);else if(a===THREE.AdditiveBlending){l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE)}else if(a===THREE.SubtractiveBlending){l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.ZERO,l.ONE_MINUS_SRC_COLOR)}else if(a===THREE.MultiplyBlending){l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.ZERO,
l.SRC_COLOR)}else if(a===THREE.CustomBlending)l.enable(l.BLEND);else{l.enable(l.BLEND);l.blendEquationSeparate(l.FUNC_ADD,l.FUNC_ADD);l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA)}ca=a}if(a===THREE.CustomBlending){if(b!==ma){l.blendEquation(C(b));ma=b}if(c!==sa||d!==$a){l.blendFunc(C(c),C(d));sa=c;$a=d}}else $a=sa=ma=null};this.setTexture=function(a,b){if(a.needsUpdate){if(!a.__webglInit){a.__webglInit=true;a.__webglTexture=l.createTexture();G.info.memory.textures++}l.activeTexture(l.TEXTURE0+
function(a,b){if(a){!b||b==="ccw"?l.frontFace(l.CCW):l.frontFace(l.CW);a==="back"?l.cullFace(l.BACK):a==="front"?l.cullFace(l.FRONT):l.cullFace(l.FRONT_AND_BACK);l.enable(l.CULL_FACE)}else l.disable(l.CULL_FACE)};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide,a=a.side===THREE.BackSide;if(ba!==b){b?l.disable(l.CULL_FACE):l.enable(l.CULL_FACE);ba=b}if($!==a){a?l.frontFace(l.CW):l.frontFace(l.CCW);$=a}};this.setDepthTest=function(a){if(oa!==a){a?l.enable(l.DEPTH_TEST):l.disable(l.DEPTH_TEST);
oa=a}};this.setDepthWrite=function(a){if(Ga!==a){l.depthMask(a);Ga=a}};this.setBlending=function(a,b,c,d){if(a!==ca){if(a===THREE.NoBlending)l.disable(l.BLEND);else if(a===THREE.AdditiveBlending){l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE)}else if(a===THREE.SubtractiveBlending){l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.ZERO,l.ONE_MINUS_SRC_COLOR)}else if(a===THREE.MultiplyBlending){l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.ZERO,
l.SRC_COLOR)}else if(a===THREE.CustomBlending)l.enable(l.BLEND);else{l.enable(l.BLEND);l.blendEquationSeparate(l.FUNC_ADD,l.FUNC_ADD);l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA)}ca=a}if(a===THREE.CustomBlending){if(b!==na){l.blendEquation(C(b));na=b}if(c!==qa||d!==Ba){l.blendFunc(C(c),C(d));qa=c;Ba=d}}else Ba=qa=na=null};this.setTexture=function(a,b){if(a.needsUpdate){if(!a.__webglInit){a.__webglInit=true;a.__webglTexture=l.createTexture();G.info.memory.textures++}l.activeTexture(l.TEXTURE0+
b);l.bindTexture(l.TEXTURE_2D,a.__webglTexture);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,a.flipY);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);var c=a.image,d=(c.width&c.width-1)===0&&(c.height&c.height-1)===0,e=C(a.format),f=C(a.type);A(l.TEXTURE_2D,a,d);a instanceof THREE.DataTexture?l.texImage2D(l.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data):l.texImage2D(l.TEXTURE_2D,0,e,e,f,a.image);a.generateMipmaps&&d&&l.generateMipmap(l.TEXTURE_2D);a.needsUpdate=false;if(a.onUpdate)a.onUpdate()}else{l.activeTexture(l.TEXTURE0+
b);l.bindTexture(l.TEXTURE_2D,a.__webglTexture)}};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){if(a.depthBuffer===void 0)a.depthBuffer=true;if(a.stencilBuffer===void 0)a.stencilBuffer=true;a.__webglTexture=l.createTexture();var c=(a.width&a.width-1)===0&&(a.height&a.height-1)===0,d=C(a.format),e=C(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];l.bindTexture(l.TEXTURE_CUBE_MAP,a.__webglTexture);A(l.TEXTURE_CUBE_MAP,a,c);
for(var f=0;f<6;f++){a.__webglFramebuffer[f]=l.createFramebuffer();a.__webglRenderbuffer[f]=l.createRenderbuffer();l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=l.TEXTURE_CUBE_MAP_POSITIVE_X+f;l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer[f]);l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,h,g.__webglTexture,0);y(a.__webglRenderbuffer[f],a)}c&&l.generateMipmap(l.TEXTURE_CUBE_MAP)}else{a.__webglFramebuffer=l.createFramebuffer();a.__webglRenderbuffer=
l.createRenderbuffer();l.bindTexture(l.TEXTURE_2D,a.__webglTexture);A(l.TEXTURE_2D,a,c);l.texImage2D(l.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null);d=l.TEXTURE_2D;l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer);l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,d,a.__webglTexture,0);y(a.__webglRenderbuffer,a);c&&l.generateMipmap(l.TEXTURE_2D)}b?l.bindTexture(l.TEXTURE_CUBE_MAP,null):l.bindTexture(l.TEXTURE_2D,null);l.bindRenderbuffer(l.RENDERBUFFER,null);l.bindFramebuffer(l.FRAMEBUFFER,
null)}if(a){b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer;c=a.width;a=a.height;e=d=0}else{b=null;c=cb;a=db;d=Rb;e=sb}if(b!==V){l.bindFramebuffer(l.FRAMEBUFFER,b);l.viewport(d,e,c,a);V=b}eb=c;Ha=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};
null)}if(a){b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer;c=a.width;a=a.height;e=d=0}else{b=null;c=cb;a=db;d=Rb;e=sb}if(b!==X){l.bindFramebuffer(l.FRAMEBUFFER,b);l.viewport(d,e,c,a);X=b}eb=c;Ia=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};
THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=c.wrapS!==void 0?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=c.wrapT!==void 0?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=c.magFilter!==void 0?c.magFilter:THREE.LinearFilter;this.minFilter=c.minFilter!==void 0?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=c.anisotropy!==void 0?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=c.format!==void 0?c.format:
THREE.RGBAFormat;this.type=c.type!==void 0?c.type:THREE.UnsignedByteType;this.depthBuffer=c.depthBuffer!==void 0?c.depthBuffer:true;this.stencilBuffer=c.stencilBuffer!==void 0?c.stencilBuffer:true;this.generateMipmaps=true};
THREE.WebGLRenderTarget.prototype.clone=function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.anisotropy=this.anisotropy;a.minFilter=this.minFilter;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps;return a};
THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.RenderableVertex=function(){this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.visible=true};THREE.RenderableVertex.prototype.copy=function(a){this.positionWorld.copy(a.positionWorld);this.positionScreen.copy(a.positionScreen)};
THREE.RenderableFace3=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.material=null;this.uvs=[[]];this.z=null};
THREE.RenderableFace4=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.v4=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.material=null;this.uvs=[[]];this.z=null};THREE.RenderableObject=function(){this.z=this.object=null};
THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=this.object=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.material=null};
THREE.RenderableFace3=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.vertexNormalsLength=0;this.material=null;this.uvs=[[]];this.z=null};
THREE.RenderableFace4=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.v4=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.vertexNormalsLength=0;this.material=null;this.uvs=[[]];this.z=null};
THREE.RenderableObject=function(){this.z=this.object=null};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=this.object=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.material=null};
THREE.ColorUtils={adjustHSV:function(a,b,c,d){var f=THREE.ColorUtils.__hsv;THREE.ColorUtils.rgbToHsv(a,f);f.h=THREE.Math.clamp(f.h+b,0,1);f.s=THREE.Math.clamp(f.s+c,0,1);f.v=THREE.Math.clamp(f.v+d,0,1);a.setHSV(f.h,f.s,f.v)},rgbToHsv:function(a,b){var c=a.r,d=a.g,f=a.b,e=Math.max(Math.max(c,d),f),g=Math.min(Math.min(c,d),f);if(g===e)g=c=0;else{var h=e-g,g=h/e,c=(c===e?(d-f)/h:d===e?2+(f-c)/h:4+(c-d)/h)/6;c<0&&(c=c+1);c>1&&(c=c-1)}b===void 0&&(b={h:0,s:0,v:0});b.h=c;b.s=g;b.v=e;return b}};
THREE.ColorUtils.__hsv={h:0,s:0,v:0};
THREE.GeometryUtils={merge:function(a,b){for(var c,d,f=a.vertices.length,e=b instanceof THREE.Mesh?b.geometry:b,g=a.vertices,h=e.vertices,i=a.faces,k=e.faces,j=a.faceVertexUvs[0],o=e.faceVertexUvs[0],m={},q=0;q<a.materials.length;q++)m[a.materials[q].id]=q;if(b instanceof THREE.Mesh){b.matrixAutoUpdate&&b.updateMatrix();c=b.matrix;d=new THREE.Matrix4;d.extractRotation(c,b.scale)}for(var q=0,p=h.length;q<p;q++){var n=h[q].clone();c&&c.multiplyVector3(n);g.push(n)}q=0;for(p=k.length;q<p;q++){var g=
......@@ -651,7 +651,7 @@ this.rotateLeft(c());var d=d+p,e=e+q,e=Math.max(1E-6,Math.min(Math.PI-1E-6,e)),f
if(a.button===0||a.button===2){t=s.ROTATE;h.set(a.clientX,a.clientY)}else if(a.button===1){t=s.ZOOM;j.set(a.clientX,a.clientY)}document.addEventListener("mousemove",d,false);document.addEventListener("mouseup",f,false)}},false);this.domElement.addEventListener("mousewheel",function(a){e.userZoom&&(a.wheelDelta>0?e.zoomOut():e.zoomIn())},false)};
THREE.CircleGeometry=function(a,b,c,d){THREE.Geometry.call(this);var a=a||50,c=c!==void 0?c:0,d=d!==void 0?d:Math.PI*2,b=b!==void 0?Math.max(3,b):8,f,e=[];f=new THREE.Vector3;var g=new THREE.UV(0.5,0.5);this.vertices.push(f);e.push(g);for(f=0;f<=b;f++){var h=new THREE.Vector3;h.x=a*Math.cos(c+f/b*d);h.y=a*Math.sin(c+f/b*d);this.vertices.push(h);e.push(new THREE.UV((h.x/a+1)/2,-(h.y/a+1)/2+1))}c=new THREE.Vector3(0,0,-1);for(f=1;f<=b;f++){this.faces.push(new THREE.Face3(f,f+1,0,[c,c,c]));this.faceVertexUvs[0].push([e[f],
e[f+1],g])}this.computeCentroids();this.computeFaceNormals();this.boundingSphere={radius:a}};THREE.CircleGeometry.prototype=Object.create(THREE.Geometry.prototype);
THREE.CubeGeometry=function(a,b,c,d,f,e,g,h){function i(a,b,c,g,h,i,j,m){var n,o=d||1,p=f||1,q=h/2,r=i/2,s=k.vertices.length;if(a==="x"&&b==="y"||a==="y"&&b==="x")n="z";else if(a==="x"&&b==="z"||a==="z"&&b==="x"){n="y";p=e||1}else if(a==="z"&&b==="y"||a==="y"&&b==="z"){n="x";o=e||1}var t=o+1,v=p+1,U=h/o,O=i/p,K=new THREE.Vector3;K[n]=j>0?1:-1;for(h=0;h<v;h++)for(i=0;i<t;i++){var V=new THREE.Vector3;V[a]=(i*U-q)*c;V[b]=(h*O-r)*g;V[n]=j;k.vertices.push(V)}for(h=0;h<p;h++)for(i=0;i<o;i++){a=new THREE.Face4(i+
THREE.CubeGeometry=function(a,b,c,d,f,e,g,h){function i(a,b,c,g,h,i,j,m){var n,o=d||1,p=f||1,q=h/2,r=i/2,s=k.vertices.length;if(a==="x"&&b==="y"||a==="y"&&b==="x")n="z";else if(a==="x"&&b==="z"||a==="z"&&b==="x"){n="y";p=e||1}else if(a==="z"&&b==="y"||a==="y"&&b==="z"){n="x";o=e||1}var t=o+1,v=p+1,U=h/o,O=i/p,K=new THREE.Vector3;K[n]=j>0?1:-1;for(h=0;h<v;h++)for(i=0;i<t;i++){var X=new THREE.Vector3;X[a]=(i*U-q)*c;X[b]=(h*O-r)*g;X[n]=j;k.vertices.push(X)}for(h=0;h<p;h++)for(i=0;i<o;i++){a=new THREE.Face4(i+
t*h+s,i+t*(h+1)+s,i+1+t*(h+1)+s,i+1+t*h+s);a.normal.copy(K);a.vertexNormals.push(K.clone(),K.clone(),K.clone(),K.clone());a.materialIndex=m;k.faces.push(a);k.faceVertexUvs[0].push([new THREE.UV(i/o,1-h/p),new THREE.UV(i/o,1-(h+1)/p),new THREE.UV((i+1)/o,1-(h+1)/p),new THREE.UV((i+1)/o,1-h/p)])}}THREE.Geometry.call(this);var k=this,j=a/2,o=b/2,m=c/2,q,p,n,r,s,t;if(g!==void 0){if(g instanceof Array)this.materials=g;else{this.materials=[];for(q=0;q<6;q++)this.materials.push(g)}q=0;r=1;p=2;s=3;n=4;t=
5}else this.materials=[];this.sides={px:true,nx:true,py:true,ny:true,pz:true,nz:true};if(h!=void 0)for(var v in h)this.sides[v]!==void 0&&(this.sides[v]=h[v]);this.sides.px&&i("z","y",-1,-1,c,b,j,q);this.sides.nx&&i("z","y",1,-1,c,b,-j,r);this.sides.py&&i("x","z",1,1,a,c,o,p);this.sides.ny&&i("x","z",1,-1,a,c,-o,s);this.sides.pz&&i("x","y",1,-1,a,b,m,n);this.sides.nz&&i("x","y",-1,-1,a,b,-m,t);this.computeCentroids();this.mergeVertices()};THREE.CubeGeometry.prototype=Object.create(THREE.Geometry.prototype);
THREE.CylinderGeometry=function(a,b,c,d,f,e){THREE.Geometry.call(this);var a=a!==void 0?a:20,b=b!==void 0?b:20,c=c!==void 0?c:100,g=c/2,d=d||8,f=f||1,h,i,k=[],j=[];for(i=0;i<=f;i++){var o=[],m=[],q=i/f,p=q*(b-a)+a;for(h=0;h<=d;h++){var n=h/d,r=new THREE.Vector3;r.x=p*Math.sin(n*Math.PI*2);r.y=-q*c+g;r.z=p*Math.cos(n*Math.PI*2);this.vertices.push(r);o.push(this.vertices.length-1);m.push(new THREE.UV(n,1-q))}k.push(o);j.push(m)}c=(b-a)/c;for(h=0;h<d;h++){if(a!==0){o=this.vertices[k[0][h]].clone();m=
......@@ -663,10 +663,10 @@ THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||cons
h.copy(b).addSelf(f);i.copy(c).addSelf(g);f=d.dot(g);g=i.subSelf(h).dot(g);if(f===0){console.log("Either infinite or no solutions!");g===0?console.log("Its finite solutions."):console.log("Too bad, no solutions.")}g=g/f;if(g<0){b=Math.atan2(b.y-a.y,b.x-a.x);a=Math.atan2(c.y-a.y,c.x-a.x);b>a&&(a=a+Math.PI*2);c=(b+a)/2;a=-Math.cos(c);c=-Math.sin(c);return new THREE.Vector2(a,c)}return d.multiplyScalar(g).addSelf(h).subSelf(a).clone()}function f(c,d){var e,f;for(K=c.length;--K>=0;){e=K;f=K-1;f<0&&(f=
c.length-1);for(var g=0,h=m+j*2,g=0;g<h;g++){var i=G*g,k=G*(g+1),o=d+e+i,i=d+f+i,n=d+f+k,k=d+e+k,p=c,q=g,r=h,s=e,u=f,o=o+N,i=i+N,n=n+N,k=k+N;F.faces.push(new THREE.Face4(o,i,n,k,null,null,t));o=v.generateSideWallUV(F,a,p,b,o,i,n,k,q,r,s,u);F.faceVertexUvs[0].push(o)}}}function e(a,b,c){F.vertices.push(new THREE.Vector3(a,b,c))}function g(c,d,e,f){c=c+N;d=d+N;e=e+N;F.faces.push(new THREE.Face3(c,d,e,null,null,s));c=f?v.generateBottomUV(F,a,b,c,d,e):v.generateTopUV(F,a,b,c,d,e);F.faceVertexUvs[0].push(c)}
var h=b.amount!==void 0?b.amount:100,i=b.bevelThickness!==void 0?b.bevelThickness:6,k=b.bevelSize!==void 0?b.bevelSize:i-2,j=b.bevelSegments!==void 0?b.bevelSegments:3,o=b.bevelEnabled!==void 0?b.bevelEnabled:true,m=b.steps!==void 0?b.steps:1,q=b.bendPath,p=b.extrudePath,n,r=false,s=b.material,t=b.extrudeMaterial,v=b.UVGenerator!==void 0?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,u,A,y,B;if(p){n=p.getSpacedPoints(m);r=true;o=false;u=b.frames!==void 0?b.frames:new THREE.TubeGeometry.FrenetFrames(p,
m,false);A=new THREE.Vector3;y=new THREE.Vector3;B=new THREE.Vector3}if(!o)k=i=j=0;var C,w,J,F=this,N=this.vertices.length;q&&a.addWrapPath(q);var q=a.extractPoints(),M=q.shape,q=q.holes;if(p=!THREE.Shape.Utils.isClockWise(M)){M=M.reverse();w=0;for(J=q.length;w<J;w++){C=q[w];THREE.Shape.Utils.isClockWise(C)&&(q[w]=C.reverse())}p=false}var H=THREE.Shape.Utils.triangulateShape(M,q),p=M;w=0;for(J=q.length;w<J;w++){C=q[w];M=M.concat(C)}var D,I,Q,L,G=M.length,U=H.length,O=[],K=0,V=p.length;D=V-1;for(I=
K+1;K<V;K++,D++,I++){D===V&&(D=0);I===V&&(I=0);O[K]=d(p[K],p[D],p[I])}var ga=[],ha,da=O.concat();w=0;for(J=q.length;w<J;w++){C=q[w];ha=[];K=0;V=C.length;D=V-1;for(I=K+1;K<V;K++,D++,I++){D===V&&(D=0);I===V&&(I=0);ha[K]=d(C[K],C[D],C[I])}ga.push(ha);da=da.concat(ha)}for(D=0;D<j;D++){C=D/j;Q=i*(1-C);I=k*Math.sin(C*Math.PI/2);K=0;for(V=p.length;K<V;K++){L=c(p[K],O[K],I);e(L.x,L.y,-Q)}w=0;for(J=q.length;w<J;w++){C=q[w];ha=ga[w];K=0;for(V=C.length;K<V;K++){L=c(C[K],ha[K],I);e(L.x,L.y,-Q)}}}I=k;for(K=0;K<
G;K++){L=o?c(M[K],da[K],I):M[K];if(r){y.copy(u.normals[0]).multiplyScalar(L.x);A.copy(u.binormals[0]).multiplyScalar(L.y);B.copy(n[0]).addSelf(y).addSelf(A);e(B.x,B.y,B.z)}else e(L.x,L.y,0)}for(C=1;C<=m;C++)for(K=0;K<G;K++){L=o?c(M[K],da[K],I):M[K];if(r){y.copy(u.normals[C]).multiplyScalar(L.x);A.copy(u.binormals[C]).multiplyScalar(L.y);B.copy(n[C]).addSelf(y).addSelf(A);e(B.x,B.y,B.z)}else e(L.x,L.y,h/m*C)}for(D=j-1;D>=0;D--){C=D/j;Q=i*(1-C);I=k*Math.sin(C*Math.PI/2);K=0;for(V=p.length;K<V;K++){L=
c(p[K],O[K],I);e(L.x,L.y,h+Q)}w=0;for(J=q.length;w<J;w++){C=q[w];ha=ga[w];K=0;for(V=C.length;K<V;K++){L=c(C[K],ha[K],I);r?e(L.x,L.y+n[m-1].y,n[m-1].x+Q):e(L.x,L.y,h+Q)}}}if(o){i=G*0;for(K=0;K<U;K++){h=H[K];g(h[2]+i,h[1]+i,h[0]+i,true)}i=G*(m+j*2);for(K=0;K<U;K++){h=H[K];g(h[0]+i,h[1]+i,h[2]+i,false)}}else{for(K=0;K<U;K++){h=H[K];g(h[2],h[1],h[0],true)}for(K=0;K<U;K++){h=H[K];g(h[0]+G*m,h[1]+G*m,h[2]+G*m,false)}}h=0;f(p,h);h=h+p.length;w=0;for(J=q.length;w<J;w++){C=q[w];f(C,h);h=h+C.length}};
m,false);A=new THREE.Vector3;y=new THREE.Vector3;B=new THREE.Vector3}if(!o)k=i=j=0;var C,w,J,F=this,N=this.vertices.length;q&&a.addWrapPath(q);var q=a.extractPoints(),M=q.shape,q=q.holes;if(p=!THREE.Shape.Utils.isClockWise(M)){M=M.reverse();w=0;for(J=q.length;w<J;w++){C=q[w];THREE.Shape.Utils.isClockWise(C)&&(q[w]=C.reverse())}p=false}var H=THREE.Shape.Utils.triangulateShape(M,q),p=M;w=0;for(J=q.length;w<J;w++){C=q[w];M=M.concat(C)}var D,I,Q,L,G=M.length,U=H.length,O=[],K=0,X=p.length;D=X-1;for(I=
K+1;K<X;K++,D++,I++){D===X&&(D=0);I===X&&(I=0);O[K]=d(p[K],p[D],p[I])}var ga=[],da,sa=O.concat();w=0;for(J=q.length;w<J;w++){C=q[w];da=[];K=0;X=C.length;D=X-1;for(I=K+1;K<X;K++,D++,I++){D===X&&(D=0);I===X&&(I=0);da[K]=d(C[K],C[D],C[I])}ga.push(da);sa=sa.concat(da)}for(D=0;D<j;D++){C=D/j;Q=i*(1-C);I=k*Math.sin(C*Math.PI/2);K=0;for(X=p.length;K<X;K++){L=c(p[K],O[K],I);e(L.x,L.y,-Q)}w=0;for(J=q.length;w<J;w++){C=q[w];da=ga[w];K=0;for(X=C.length;K<X;K++){L=c(C[K],da[K],I);e(L.x,L.y,-Q)}}}I=k;for(K=0;K<
G;K++){L=o?c(M[K],sa[K],I):M[K];if(r){y.copy(u.normals[0]).multiplyScalar(L.x);A.copy(u.binormals[0]).multiplyScalar(L.y);B.copy(n[0]).addSelf(y).addSelf(A);e(B.x,B.y,B.z)}else e(L.x,L.y,0)}for(C=1;C<=m;C++)for(K=0;K<G;K++){L=o?c(M[K],sa[K],I):M[K];if(r){y.copy(u.normals[C]).multiplyScalar(L.x);A.copy(u.binormals[C]).multiplyScalar(L.y);B.copy(n[C]).addSelf(y).addSelf(A);e(B.x,B.y,B.z)}else e(L.x,L.y,h/m*C)}for(D=j-1;D>=0;D--){C=D/j;Q=i*(1-C);I=k*Math.sin(C*Math.PI/2);K=0;for(X=p.length;K<X;K++){L=
c(p[K],O[K],I);e(L.x,L.y,h+Q)}w=0;for(J=q.length;w<J;w++){C=q[w];da=ga[w];K=0;for(X=C.length;K<X;K++){L=c(C[K],da[K],I);r?e(L.x,L.y+n[m-1].y,n[m-1].x+Q):e(L.x,L.y,h+Q)}}}if(o){i=G*0;for(K=0;K<U;K++){h=H[K];g(h[2]+i,h[1]+i,h[0]+i,true)}i=G*(m+j*2);for(K=0;K<U;K++){h=H[K];g(h[0]+i,h[1]+i,h[2]+i,false)}}else{for(K=0;K<U;K++){h=H[K];g(h[2],h[1],h[0],true)}for(K=0;K<U;K++){h=H[K];g(h[0]+G*m,h[1]+G*m,h[2]+G*m,false)}}h=0;f(p,h);h=h+p.length;w=0;for(J=q.length;w<J;w++){C=q[w];f(C,h);h=h+C.length}};
THREE.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(a,b,c,d,f,e){b=a.vertices[f].x;f=a.vertices[f].y;c=a.vertices[e].x;e=a.vertices[e].y;return[new THREE.UV(a.vertices[d].x,a.vertices[d].y),new THREE.UV(b,f),new THREE.UV(c,e)]},generateBottomUV:function(a,b,c,d,f,e){return this.generateTopUV(a,b,c,d,f,e)},generateSideWallUV:function(a,b,c,d,f,e,g,h){var b=a.vertices[f].x,c=a.vertices[f].y,f=a.vertices[f].z,d=a.vertices[e].x,i=a.vertices[e].y,e=a.vertices[e].z,k=a.vertices[g].x,j=a.vertices[g].y,
g=a.vertices[g].z,o=a.vertices[h].x,m=a.vertices[h].y,a=a.vertices[h].z;return Math.abs(c-i)<0.01?[new THREE.UV(b,1-f),new THREE.UV(d,1-e),new THREE.UV(k,1-g),new THREE.UV(o,1-a)]:[new THREE.UV(c,1-f),new THREE.UV(i,1-e),new THREE.UV(j,1-g),new THREE.UV(m,1-a)]}};THREE.ExtrudeGeometry.__v1=new THREE.Vector2;THREE.ExtrudeGeometry.__v2=new THREE.Vector2;THREE.ExtrudeGeometry.__v3=new THREE.Vector2;THREE.ExtrudeGeometry.__v4=new THREE.Vector2;THREE.ExtrudeGeometry.__v5=new THREE.Vector2;
THREE.ExtrudeGeometry.__v6=new THREE.Vector2;
......
......@@ -293,6 +293,8 @@ THREE.Projector = function() {
}
face.vertexNormalsLength = faceVertexNormals.length;
for ( c = 0, cl = faceVertexUvs.length; c < cl; c ++ ) {
uvs = faceVertexUvs[ c ][ f ];
......
......@@ -528,7 +528,6 @@ THREE.CanvasRenderer = function ( parameters ) {
_context.beginPath();
_context.moveTo( v1.positionScreen.x, v1.positionScreen.y );
_context.lineTo( v2.positionScreen.x, v2.positionScreen.y );
_context.closePath();
if ( material instanceof THREE.LineBasicMaterial ) {
......@@ -607,7 +606,7 @@ THREE.CanvasRenderer = function ( parameters ) {
if ( _enableLighting === true ) {
if ( material.wireframe === false && material.shading == THREE.SmoothShading && element.vertexNormalsWorld.length == 3 ) {
if ( material.wireframe === false && material.shading == THREE.SmoothShading && element.vertexNormalsLength == 3 ) {
_color1.r = _color2.r = _color3.r = _ambientLight.r;
_color1.g = _color2.g = _color3.g = _ambientLight.g;
......@@ -724,7 +723,7 @@ THREE.CanvasRenderer = function ( parameters ) {
if ( _enableLighting === true ) {
if ( !material.wireframe && material.shading == THREE.SmoothShading && element.vertexNormalsWorld.length == 4 ) {
if ( !material.wireframe && material.shading == THREE.SmoothShading && element.vertexNormalsLength == 4 ) {
_color1.r = _color2.r = _color3.r = _color4.r = _ambientLight.r;
_color1.g = _color2.g = _color3.g = _color4.g = _ambientLight.g;
......@@ -829,7 +828,7 @@ THREE.CanvasRenderer = function ( parameters ) {
_context.moveTo( x0, y0 );
_context.lineTo( x1, y1 );
_context.lineTo( x2, y2 );
_context.lineTo( x0, y0 );
_context.closePath();
}
......@@ -840,7 +839,7 @@ THREE.CanvasRenderer = function ( parameters ) {
_context.lineTo( x1, y1 );
_context.lineTo( x2, y2 );
_context.lineTo( x3, y3 );
_context.lineTo( x0, y0 );
_context.closePath();
}
......
......@@ -13,6 +13,7 @@ THREE.RenderableFace3 = function () {
this.normalWorld = new THREE.Vector3();
this.vertexNormalsWorld = [ new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3() ];
this.vertexNormalsLength = 0;
this.material = null;
this.uvs = [[]];
......
......@@ -14,6 +14,7 @@ THREE.RenderableFace4 = function () {
this.normalWorld = new THREE.Vector3();
this.vertexNormalsWorld = [ new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3() ];
this.vertexNormalsLength = 0;
this.material = null;
this.uvs = [[]];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册