|
@@ -14,7 +14,7 @@ this.b=Math.sqrt(this.b);return this},setRGB:function(a,b,c){this.r=a;this.g=b;t
|
|
|
this.r,c=this.g,d=this.b,e=Math.max(Math.max(b,c),d),f=Math.min(Math.min(b,c),d);if(f===e)f=b=0;else{var g=e-f,f=g/e,b=(b===e?(c-d)/g:c===e?2+(d-b)/g:4+(b-c)/g)/6;0>b&&(b+=1);1<b&&(b-=1)}void 0===a&&(a={h:0,s:0,v:0});a.h=b;a.s=f;a.v=e;return a},lerpSelf:function(a,b){this.r+=(a.r-this.r)*b;this.g+=(a.g-this.g)*b;this.b+=(a.b-this.b)*b;return this},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0};
|
|
|
THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(a,b){this.x=a;this.y=b;return this},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a):this.set(0,
|
|
|
0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,a=this.y-a.y;return b*b+a*a},setLength:function(a){return this.normalize().multiplyScalar(a)},lerpSelf:function(a,
|
|
|
-b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},equals:function(a){return a.x===this.x&&a.y===this.y},isZero:function(a){return this.lengthSq()<(void 0!==a?a:1E-4)},clone:function(){return new THREE.Vector2(this.x,this.y)}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0};
|
|
|
+b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},equals:function(a){return a.x===this.x&&a.y===this.y},clone:function(){return new THREE.Vector2(this.x,this.y)}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0};
|
|
|
THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},
|
|
|
sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},multiply:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideSelf:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a):
|
|
|
this.z=this.y=this.x=0;return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.lengthSq())},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},lerpSelf:function(a,b){this.x+=
|
|
@@ -24,7 +24,7 @@ a).lengthSq()},getPositionFromMatrix:function(a){this.x=a.elements[12];this.y=a.
|
|
|
"XZY"===b&&(this.z=Math.asin(-c(f)),0.99999>Math.abs(f)?(this.x=Math.atan2(n,i),this.y=Math.atan2(g,e)):(this.x=Math.atan2(-j,d),this.y=0));return this},setEulerFromQuaternion:function(a,b){function c(a){return Math.min(Math.max(a,-1),1)}var d=a.x*a.x,e=a.y*a.y,f=a.z*a.z,g=a.w*a.w;void 0===b||"XYZ"===b?(this.x=Math.atan2(2*(a.x*a.w-a.y*a.z),g-d-e+f),this.y=Math.asin(c(2*(a.x*a.z+a.y*a.w))),this.z=Math.atan2(2*(a.z*a.w-a.x*a.y),g+d-e-f)):"YXZ"===b?(this.x=Math.asin(c(2*(a.x*a.w-a.y*a.z))),this.y=Math.atan2(2*
|
|
|
(a.x*a.z+a.y*a.w),g-d-e+f),this.z=Math.atan2(2*(a.x*a.y+a.z*a.w),g-d+e-f)):"ZXY"===b?(this.x=Math.asin(c(2*(a.x*a.w+a.y*a.z))),this.y=Math.atan2(2*(a.y*a.w-a.z*a.x),g-d-e+f),this.z=Math.atan2(2*(a.z*a.w-a.x*a.y),g-d+e-f)):"ZYX"===b?(this.x=Math.atan2(2*(a.x*a.w+a.z*a.y),g-d-e+f),this.y=Math.asin(c(2*(a.y*a.w-a.x*a.z))),this.z=Math.atan2(2*(a.x*a.y+a.z*a.w),g+d-e-f)):"YZX"===b?(this.x=Math.atan2(2*(a.x*a.w-a.z*a.y),g-d+e-f),this.y=Math.atan2(2*(a.y*a.w-a.x*a.z),g+d-e-f),this.z=Math.asin(c(2*(a.x*a.y+
|
|
|
a.z*a.w)))):"XZY"===b&&(this.x=Math.atan2(2*(a.x*a.w+a.y*a.z),g-d+e-f),this.y=Math.atan2(2*(a.x*a.z+a.y*a.w),g+d-e-f),this.z=Math.asin(c(2*(a.z*a.w-a.x*a.y))));return this},getScaleFromMatrix:function(a){var b=this.set(a.elements[0],a.elements[1],a.elements[2]).length(),c=this.set(a.elements[4],a.elements[5],a.elements[6]).length(),a=this.set(a.elements[8],a.elements[9],a.elements[10]).length();this.x=b;this.y=c;this.z=a;return this},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},
|
|
|
-isZero:function(a){return this.lengthSq()<(void 0!==a?a:1E-4)},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)}};THREE.Vector4=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1};
|
|
|
+clone:function(){return new THREE.Vector3(this.x,this.y,this.z)}};THREE.Vector4=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1};
|
|
|
THREE.Vector4.prototype={constructor:THREE.Vector4,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=
|
|
|
a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a,this.w/=a):(this.z=this.y=this.x=0,this.w=1);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.dot(this)},length:function(){return Math.sqrt(this.lengthSq())},lengthManhattan:function(){return Math.abs(this.x)+
|
|
|
Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):
|
|
@@ -80,11 +80,11 @@ a.matrixWorld.copy(this.matrixWorld);a.matrixRotationWorld.copy(this.matrixRotat
|
|
|
return a},deallocate:function(){var a=THREE.Object3DLibrary.indexOf(this);-1!==a&&THREE.Object3DLibrary.splice(a,1)}};THREE.Object3D.__m1=new THREE.Matrix4;THREE.Object3D.defaultEulerOrder="XYZ";THREE.Object3DIdCount=0;THREE.Object3DLibrary=[];
|
|
|
THREE.Projector=function(){function a(){if(f===h){var a=new THREE.RenderableObject;g.push(a);h++;f++;return a}return g[f++]}function b(){if(j===n){var a=new THREE.RenderableVertex;l.push(a);n++;j++;return a}return l[j++]}function c(a,b){return b.z-a.z}function d(a,b){var c=0,d=1,e=a.z+a.w,f=b.z+b.w,g=-a.z+a.w,h=-b.z+b.w;if(0<=e&&0<=f&&0<=g&&0<=h)return!0;if(0>e&&0>f||0>g&&0>h)return!1;0>e?c=Math.max(c,e/(e-f)):0>f&&(d=Math.min(d,e/(e-f)));0>g?c=Math.max(c,g/(g-h)):0>h&&(d=Math.min(d,g/(g-h)));if(d<
|
|
|
c)return!1;a.lerpSelf(b,c);b.lerpSelf(a,1-d);return!0}var e,f,g=[],h=0,i,j,l=[],n=0,m,p,o=[],q=0,t,r=[],A=0,u,s,D=[],z=0,w,v,C=[],E=0,G={objects:[],sprites:[],lights:[],elements:[]},L=new THREE.Vector3,B=new THREE.Vector4,J=new THREE.Matrix4,H=new THREE.Matrix4,I=new THREE.Matrix3,O=new THREE.Frustum,N=new THREE.Vector4,M=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);J.multiply(b.projectionMatrix,b.matrixWorldInverse);J.multiplyVector3(a);return a};
|
|
|
-this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);J.multiply(b.matrixWorld,b.projectionMatrixInverse);J.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,n,S){var $=h.near,K=h.far,ja=!1,Q,ha,da,Y,aa,ba,ia,wa,ua,Ca,Ka,va,cb,wb,Ua;v=s=t=p=0;G.elements.length=0;g.updateMatrixWorld();
|
|
|
+this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);J.multiply(b.matrixWorld,b.projectionMatrixInverse);J.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,n,S){var $=h.near,K=h.far,ja=!1,Q,ha,da,Y,aa,ba,ia,wa,ua,Ca,Ka,va,cb,xb,Ua;v=s=t=p=0;G.elements.length=0;g.updateMatrixWorld();
|
|
|
void 0===h.parent&&h.updateMatrixWorld();h.matrixWorldInverse.getInverse(h.matrixWorld);J.multiply(h.projectionMatrix,h.matrixWorldInverse);O.setFromMatrix(J);f=0;G.objects.length=0;G.sprites.length=0;G.lights.length=0;var fb=function(b){for(var c=0,d=b.children.length;c<d;c++){var f=b.children[c];if(!1!==f.visible){if(f instanceof THREE.Light)G.lights.push(f);else if(f instanceof THREE.Mesh||f instanceof THREE.Line){if(!1===f.frustumCulled||!0===O.contains(f))e=a(),e.object=f,null!==f.renderDepth?
|
|
|
e.z=f.renderDepth:(L.copy(f.matrixWorld.getPosition()),J.multiplyVector3(L),e.z=L.z),G.objects.push(e)}else f instanceof THREE.Sprite||f instanceof THREE.Particle?(e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:(L.copy(f.matrixWorld.getPosition()),J.multiplyVector3(L),e.z=L.z),G.sprites.push(e)):(e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:(L.copy(f.matrixWorld.getPosition()),J.multiplyVector3(L),e.z=L.z),G.objects.push(e));fb(f)}}};fb(g);!0===n&&G.objects.sort(c);g=0;for(n=G.objects.length;g<
|
|
|
-n;g++)if(wa=G.objects[g].object,ua=wa.matrixWorld,j=0,wa instanceof THREE.Mesh){Ca=wa.geometry;da=Ca.vertices;Ka=Ca.faces;cb=Ca.faceVertexUvs;I.getInverse(ua);I.transpose();Ca=(wb=wa.material instanceof THREE.MeshFaceMaterial)&&0<wa.material.materials.length?wa.material.materials:wa.geometry.materials;Q=0;for(ha=da.length;Q<ha;Q++)i=b(),i.positionWorld.copy(da[Q]),ua.multiplyVector3(i.positionWorld),i.positionScreen.copy(i.positionWorld),J.multiplyVector4(i.positionScreen),i.positionScreen.x/=i.positionScreen.w,
|
|
|
-i.positionScreen.y/=i.positionScreen.w,i.visible=i.positionScreen.z>$&&i.positionScreen.z<K;da=0;for(Q=Ka.length;da<Q;da++)if(ha=Ka[da],Ua=!0===wb?Ca[ha.materialIndex]:wa.material,void 0!==Ua){ba=Ua.side;if(ha instanceof THREE.Face3)if(Y=l[ha.a],aa=l[ha.b],ia=l[ha.c],!0===Y.visible&&!0===aa.visible&&!0===ia.visible)if(ja=0>(ia.positionScreen.x-Y.positionScreen.x)*(aa.positionScreen.y-Y.positionScreen.y)-(ia.positionScreen.y-Y.positionScreen.y)*(aa.positionScreen.x-Y.positionScreen.x),ba===THREE.DoubleSide||
|
|
|
+n;g++)if(wa=G.objects[g].object,ua=wa.matrixWorld,j=0,wa instanceof THREE.Mesh){Ca=wa.geometry;da=Ca.vertices;Ka=Ca.faces;cb=Ca.faceVertexUvs;I.getInverse(ua);I.transpose();Ca=(xb=wa.material instanceof THREE.MeshFaceMaterial)&&0<wa.material.materials.length?wa.material.materials:wa.geometry.materials;Q=0;for(ha=da.length;Q<ha;Q++)i=b(),i.positionWorld.copy(da[Q]),ua.multiplyVector3(i.positionWorld),i.positionScreen.copy(i.positionWorld),J.multiplyVector4(i.positionScreen),i.positionScreen.x/=i.positionScreen.w,
|
|
|
+i.positionScreen.y/=i.positionScreen.w,i.visible=i.positionScreen.z>$&&i.positionScreen.z<K;da=0;for(Q=Ka.length;da<Q;da++)if(ha=Ka[da],Ua=!0===xb?Ca[ha.materialIndex]:wa.material,void 0!==Ua){ba=Ua.side;if(ha instanceof THREE.Face3)if(Y=l[ha.a],aa=l[ha.b],ia=l[ha.c],!0===Y.visible&&!0===aa.visible&&!0===ia.visible)if(ja=0>(ia.positionScreen.x-Y.positionScreen.x)*(aa.positionScreen.y-Y.positionScreen.y)-(ia.positionScreen.y-Y.positionScreen.y)*(aa.positionScreen.x-Y.positionScreen.x),ba===THREE.DoubleSide||
|
|
|
ja===(ba===THREE.FrontSide))p===q?(va=new THREE.RenderableFace3,o.push(va),q++,p++,m=va):m=o[p++],m.v1.copy(Y),m.v2.copy(aa),m.v3.copy(ia);else continue;else continue;else if(ha instanceof THREE.Face4)if(Y=l[ha.a],aa=l[ha.b],ia=l[ha.c],va=l[ha.d],!0===Y.visible&&!0===aa.visible&&!0===ia.visible&&!0===va.visible)if(ja=0>(va.positionScreen.x-Y.positionScreen.x)*(aa.positionScreen.y-Y.positionScreen.y)-(va.positionScreen.y-Y.positionScreen.y)*(aa.positionScreen.x-Y.positionScreen.x)||0>(aa.positionScreen.x-
|
|
|
ia.positionScreen.x)*(va.positionScreen.y-ia.positionScreen.y)-(aa.positionScreen.y-ia.positionScreen.y)*(va.positionScreen.x-ia.positionScreen.x),ba===THREE.DoubleSide||ja===(ba===THREE.FrontSide)){if(t===A){var kb=new THREE.RenderableFace4;r.push(kb);A++;t++;m=kb}else m=r[t++];m.v1.copy(Y);m.v2.copy(aa);m.v3.copy(ia);m.v4.copy(va)}else continue;else continue;m.normalWorld.copy(ha.normal);!1===ja&&(ba===THREE.BackSide||ba===THREE.DoubleSide)&&m.normalWorld.negate();I.multiplyVector3(m.normalWorld).normalize();
|
|
|
m.centroidWorld.copy(ha.centroid);ua.multiplyVector3(m.centroidWorld);m.centroidScreen.copy(m.centroidWorld);J.multiplyVector3(m.centroidScreen);ia=ha.vertexNormals;Y=0;for(aa=ia.length;Y<aa;Y++)va=m.vertexNormalsWorld[Y],va.copy(ia[Y]),!1===ja&&(ba===THREE.BackSide||ba===THREE.DoubleSide)&&va.negate(),I.multiplyVector3(va).normalize();m.vertexNormalsLength=ia.length;Y=0;for(aa=cb.length;Y<aa;Y++)if(va=cb[Y][da],void 0!==va){ba=0;for(ia=va.length;ba<ia;ba++)m.uvs[Y][ba]=va[ba]}m.color=ha.color;m.material=
|
|
@@ -107,7 +107,7 @@ THREE.Geometry=function(){THREE.GeometryLibrary.push(this);this.id=THREE.Geometr
|
|
|
this.tangentsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=this.elementsNeedUpdate=this.verticesNeedUpdate=!1};
|
|
|
THREE.Geometry.prototype={constructor:THREE.Geometry,applyMatrix:function(a){var b=new THREE.Matrix3;b.getInverse(a).transpose();for(var c=0,d=this.vertices.length;c<d;c++)a.multiplyVector3(this.vertices[c]);c=0;for(d=this.faces.length;c<d;c++){var e=this.faces[c];b.multiplyVector3(e.normal).normalize();for(var f=0,g=e.vertexNormals.length;f<g;f++)b.multiplyVector3(e.vertexNormals[f]).normalize();a.multiplyVector3(e.centroid)}},computeCentroids:function(){var a,b,c;a=0;for(b=this.faces.length;a<b;a++)c=
|
|
|
this.faces[a],c.centroid.set(0,0,0),c instanceof THREE.Face3?(c.centroid.addSelf(this.vertices[c.a]),c.centroid.addSelf(this.vertices[c.b]),c.centroid.addSelf(this.vertices[c.c]),c.centroid.divideScalar(3)):c instanceof THREE.Face4&&(c.centroid.addSelf(this.vertices[c.a]),c.centroid.addSelf(this.vertices[c.b]),c.centroid.addSelf(this.vertices[c.c]),c.centroid.addSelf(this.vertices[c.d]),c.centroid.divideScalar(4))},computeFaceNormals:function(){var a,b,c,d,e,f,g=new THREE.Vector3,h=new THREE.Vector3;
|
|
|
-a=0;for(b=this.faces.length;a<b;a++)c=this.faces[a],d=this.vertices[c.a],e=this.vertices[c.b],f=this.vertices[c.c],g.sub(f,e),h.sub(d,e),g.crossSelf(h),g.isZero()||g.normalize(),c.normal.copy(g)},computeVertexNormals:function(a){var b,c,d,e;if(void 0===this.__tmpVertices){e=this.__tmpVertices=Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)e[b]=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?d.vertexNormals=[new THREE.Vector3,new THREE.Vector3,
|
|
|
+a=0;for(b=this.faces.length;a<b;a++)c=this.faces[a],d=this.vertices[c.a],e=this.vertices[c.b],f=this.vertices[c.c],g.sub(f,e),h.sub(d,e),g.crossSelf(h),g.normalize(),c.normal.copy(g)},computeVertexNormals:function(a){var b,c,d,e;if(void 0===this.__tmpVertices){e=this.__tmpVertices=Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)e[b]=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?d.vertexNormals=[new THREE.Vector3,new THREE.Vector3,
|
|
|
new THREE.Vector3]:d instanceof THREE.Face4&&(d.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3])}else{e=this.__tmpVertices;b=0;for(c=this.vertices.length;b<c;b++)e[b].set(0,0,0)}if(a){var f,g,h,i=new THREE.Vector3,j=new THREE.Vector3,l=new THREE.Vector3,n=new THREE.Vector3,m=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?(a=this.vertices[d.a],f=this.vertices[d.b],g=this.vertices[d.c],i.sub(g,f),j.sub(a,f),i.crossSelf(j),
|
|
|
e[d.a].addSelf(i),e[d.b].addSelf(i),e[d.c].addSelf(i)):d instanceof THREE.Face4&&(a=this.vertices[d.a],f=this.vertices[d.b],g=this.vertices[d.c],h=this.vertices[d.d],l.sub(h,f),j.sub(a,f),l.crossSelf(j),e[d.a].addSelf(l),e[d.b].addSelf(l),e[d.d].addSelf(l),n.sub(h,g),m.sub(f,g),n.crossSelf(m),e[d.b].addSelf(n),e[d.c].addSelf(n),e[d.d].addSelf(n))}else{b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?(e[d.a].addSelf(d.normal),e[d.b].addSelf(d.normal),e[d.c].addSelf(d.normal)):
|
|
|
d instanceof THREE.Face4&&(e[d.a].addSelf(d.normal),e[d.b].addSelf(d.normal),e[d.c].addSelf(d.normal),e[d.d].addSelf(d.normal))}b=0;for(c=this.vertices.length;b<c;b++)e[b].normalize();b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?(d.vertexNormals[0].copy(e[d.a]),d.vertexNormals[1].copy(e[d.b]),d.vertexNormals[2].copy(e[d.c])):d instanceof THREE.Face4&&(d.vertexNormals[0].copy(e[d.a]),d.vertexNormals[1].copy(e[d.b]),d.vertexNormals[2].copy(e[d.c]),d.vertexNormals[3].copy(e[d.d]))},
|
|
@@ -191,27 +191,26 @@ d.morphTargets[f].vertices=[];m=d.morphTargets[f].vertices;j=a.morphTargets[f].v
|
|
|
d.computeFaceNormals();return d}};THREE.SceneLoader=function(){this.onLoadStart=function(){};this.onLoadProgress=function(){};this.onLoadComplete=function(){};this.callbackSync=function(){};this.callbackProgress=function(){};this.geometryHandlerMap={};this.hierarchyHandlerMap={};this.addGeometryHandler("ascii",THREE.JSONLoader);this.addGeometryHandler("binary",THREE.BinaryLoader)};THREE.SceneLoader.prototype.constructor=THREE.SceneLoader;
|
|
|
THREE.SceneLoader.prototype.load=function(a,b){var c=this,d=new XMLHttpRequest;d.onreadystatechange=function(){if(4===d.readyState)if(200===d.status||0===d.status){var e=JSON.parse(d.responseText);c.parse(e,b,a)}else console.error("THREE.SceneLoader: Couldn't load ["+a+"] ["+d.status+"]")};d.open("GET",a,!0);d.send(null)};THREE.SceneLoader.prototype.addGeometryHandler=function(a,b){this.geometryHandlerMap[a]={loaderClass:b}};
|
|
|
THREE.SceneLoader.prototype.addHierarchyHandler=function(a,b){this.hierarchyHandlerMap[a]={loaderClass:b}};
|
|
|
-THREE.SceneLoader.prototype.parse=function(a,b,c){function d(a,b){return"relativeToHTML"==b?a:n+"/"+a}function e(){f(R.scene,S.objects)}function f(a,b){for(var c in b)if(void 0===R.objects[c]){var e=b[c],g=null;if(e.type&&e.type in l.hierarchyHandlerMap&&void 0===e.loading){var i={},j;for(j in t)"type"!==j&&"url"!==j&&(i[j]=t[j]);E=R.materials[e.materials[0]];e.loading=!0;var m=l.hierarchyHandlerMap[e.type].loaderObject;m.addEventListener?(m.addEventListener("load",h(c,a,E,e)),m.load(d(e.url,S.urlBaseType))):
|
|
|
-m.options?m.load(d(e.url,S.urlBaseType),h(c,a,E,e)):m.load(d(e.url,S.urlBaseType),h(c,a,E,e),i)}else if(void 0!==e.geometry){if(C=R.geometries[e.geometry])g=!1,E=R.materials[e.materials[0]],(g=E instanceof THREE.ShaderMaterial)&&C.computeTangents(),u=e.position,s=e.rotation,D=e.quaternion,z=e.scale,r=e.matrix,D=0,0===e.materials.length&&(E=new THREE.MeshFaceMaterial),1<e.materials.length&&(E=new THREE.MeshFaceMaterial),e.skin?g=new THREE.SkinnedMesh(C,E):e.morph?(g=new THREE.MorphAnimMesh(C,E),void 0!==
|
|
|
-e.duration&&(g.duration=e.duration),void 0!==e.time&&(g.time=e.time),void 0!==e.mirroredLoop&&(g.mirroredLoop=e.mirroredLoop),E.morphNormals&&C.computeMorphNormals()):g=new THREE.Mesh(C,E),g.name=c,r?(g.matrixAutoUpdate=!1,g.matrix.set(r[0],r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15])):(g.position.set(u[0],u[1],u[2]),D?(g.quaternion.set(D[0],D[1],D[2],D[3]),g.useQuaternion=!0):g.rotation.set(s[0],s[1],s[2]),g.scale.set(z[0],z[1],z[2])),g.visible=e.visible,g.castShadow=
|
|
|
-e.castShadow,g.receiveShadow=e.receiveShadow,a.add(g),R.objects[c]=g}else"DirectionalLight"===e.type||"PointLight"===e.type||"AmbientLight"===e.type?(H=void 0!==e.color?e.color:16777215,I=void 0!==e.intensity?e.intensity:1,"DirectionalLight"===e.type?(u=e.direction,J=new THREE.DirectionalLight(H,I),J.position.set(u[0],u[1],u[2]),e.target&&(P.push({object:J,targetName:e.target}),J.target=null)):"PointLight"===e.type?(u=e.position,A=e.distance,J=new THREE.PointLight(H,I,A),J.position.set(u[0],u[1],
|
|
|
-u[2])):"AmbientLight"===e.type&&(J=new THREE.AmbientLight(H)),a.add(J),J.name=c,R.lights[c]=J,R.objects[c]=J):"PerspectiveCamera"===e.type||"OrthographicCamera"===e.type?("PerspectiveCamera"===e.type?G=new THREE.PerspectiveCamera(e.fov,e.aspect,e.near,e.far):"OrthographicCamera"===e.type&&(G=new THREE.OrthographicCamera(w.left,w.right,w.top,w.bottom,w.near,w.far)),u=e.position,G.position.set(u[0],u[1],u[2]),a.add(G),G.name=c,R.cameras[c]=G,R.objects[c]=G):(u=e.position,s=e.rotation,D=e.quaternion,
|
|
|
-z=e.scale,D=0,g=new THREE.Object3D,g.name=c,g.position.set(u[0],u[1],u[2]),D?(g.quaternion.set(D[0],D[1],D[2],D[3]),g.useQuaternion=!0):g.rotation.set(s[0],s[1],s[2]),g.scale.set(z[0],z[1],z[2]),g.visible=void 0!==e.visible?e.visible:!1,a.add(g),R.objects[c]=g,R.empties[c]=g);if(g){if(void 0!==e.properties)for(var n in e.properties)g.properties[n]=e.properties[n];void 0!==e.children&&f(g,e.children)}}}function g(a){return function(b){R.geometries[a]=b;e();O-=1;l.onLoadComplete();j()}}function h(a,
|
|
|
-b,c,d){return function(f){var f=f.content?f.content:f.dae?f.scene:f,g=d.position,h=d.rotation,i=d.quaternion,m=d.scale;f.position.set(g[0],g[1],g[2]);i?(f.quaternion.set(i[0],i[1],i[2],i[3]),f.useQuaternion=!0):f.rotation.set(h[0],h[1],h[2]);f.scale.set(m[0],m[1],m[2]);c&&f.traverse(function(a){a.material=c});b.add(f);R.objects[a]=f;e();O-=1;l.onLoadComplete();j()}}function i(a){return function(b){R.geometries[a]=b}}function j(){l.callbackProgress({totalModels:M,totalTextures:T,loadedModels:M-O,loadedTextures:T-
|
|
|
-N},R);l.onLoadProgress();if(0===O&&0===N){for(var a=0;a<P.length;a++){var c=P[a],d=R.objects[c.targetName];d?c.object.target=d:(c.object.target=new THREE.Object3D,R.scene.add(c.object.target));c.object.target.properties.targetInverse=c.object}b(R)}}var l=this,n=THREE.Loader.prototype.extractUrlBase(c),m,p,o,q,t,r,A,u,s,D,z,w,v,C,E,G,L,B,J,H,I,O,N,M,T,R,P=[],S=a,$;for($ in this.geometryHandlerMap)a=this.geometryHandlerMap[$].loaderClass,this.geometryHandlerMap[$].loaderObject=new a;for($ in this.hierarchyHandlerMap)a=
|
|
|
-this.hierarchyHandlerMap[$].loaderClass,this.hierarchyHandlerMap[$].loaderObject=new a;N=O=0;R={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},empties:{}};if(S.transform&&($=S.transform.position,a=S.transform.rotation,c=S.transform.scale,$&&R.scene.position.set($[0],$[1],$[2]),a&&R.scene.rotation.set(a[0],a[1],a[2]),c&&R.scene.scale.set(c[0],c[1],c[2]),$||a||c))R.scene.updateMatrix(),R.scene.updateMatrixWorld();$=function(a){return function(){N-=
|
|
|
-a;j();l.onLoadComplete()}};for(o in S.fogs)a=S.fogs[o],"linear"===a.type?L=new THREE.Fog(0,a.near,a.far):"exp2"===a.type&&(L=new THREE.FogExp2(0,a.density)),w=a.color,L.color.setRGB(w[0],w[1],w[2]),R.fogs[o]=L;for(m in S.geometries)t=S.geometries[m],t.type in this.geometryHandlerMap&&(O+=1,l.onLoadStart());for(var K in S.objects)o=S.objects[K],o.type&&o.type in this.hierarchyHandlerMap&&(O+=1,l.onLoadStart());M=O;for(m in S.geometries)if(t=S.geometries[m],"cube"===t.type)C=new THREE.CubeGeometry(t.width,
|
|
|
-t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments,null,t.flipped,t.sides),R.geometries[m]=C;else if("plane"===t.type)C=new THREE.PlaneGeometry(t.width,t.height,t.widthSegments,t.heightSegments),R.geometries[m]=C;else if("sphere"===t.type)C=new THREE.SphereGeometry(t.radius,t.widthSegments,t.heightSegments),R.geometries[m]=C;else if("cylinder"===t.type)C=new THREE.CylinderGeometry(t.topRad,t.botRad,t.height,t.radSegs,t.heightSegs),R.geometries[m]=C;else if("torus"===t.type)C=new THREE.TorusGeometry(t.radius,
|
|
|
-t.tube,t.segmentsR,t.segmentsT),R.geometries[m]=C;else if("icosahedron"===t.type)C=new THREE.IcosahedronGeometry(t.radius,t.subdivisions),R.geometries[m]=C;else if(t.type in this.geometryHandlerMap){K={};for(B in t)"type"!==B&&"url"!==B&&(K[B]=t[B]);this.geometryHandlerMap[t.type].loaderObject.load(d(t.url,S.urlBaseType),g(m),K)}else"embedded"===t.type&&(K=S.embeds[t.id],K.metadata=S.metadata,K&&this.geometryHandlerMap.ascii.loaderObject.createModel(K,i(m),""));for(q in S.textures)if(m=S.textures[q],
|
|
|
-m.url instanceof Array){N+=m.url.length;for(B=0;B<m.url.length;B++)l.onLoadStart()}else N+=1,l.onLoadStart();T=N;for(q in S.textures){m=S.textures[q];void 0!==m.mapping&&void 0!==THREE[m.mapping]&&(m.mapping=new THREE[m.mapping]);if(m.url instanceof Array){K=m.url.length;o=[];for(B=0;B<K;B++)o[B]=d(m.url[B],S.urlBaseType);B=(B=o[0].endsWith(".dds"))?THREE.ImageUtils.loadCompressedTextureCube(o,m.mapping,$(K)):THREE.ImageUtils.loadTextureCube(o,m.mapping,$(K))}else{B=m.url.toLowerCase().endsWith(".dds");
|
|
|
-K=d(m.url,S.urlBaseType);o=$(1);B=B?THREE.ImageUtils.loadCompressedTexture(K,m.mapping,o):THREE.ImageUtils.loadTexture(K,m.mapping,o);void 0!==THREE[m.minFilter]&&(B.minFilter=THREE[m.minFilter]);void 0!==THREE[m.magFilter]&&(B.magFilter=THREE[m.magFilter]);m.anisotropy&&(B.anisotropy=m.anisotropy);if(m.repeat&&(B.repeat.set(m.repeat[0],m.repeat[1]),1!==m.repeat[0]&&(B.wrapS=THREE.RepeatWrapping),1!==m.repeat[1]))B.wrapT=THREE.RepeatWrapping;m.offset&&B.offset.set(m.offset[0],m.offset[1]);if(m.wrap&&
|
|
|
-(K={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping},void 0!==K[m.wrap[0]]&&(B.wrapS=K[m.wrap[0]]),void 0!==K[m.wrap[1]]))B.wrapT=K[m.wrap[1]]}R.textures[q]=B}for(p in S.materials){r=S.materials[p];for(v in r.parameters)"envMap"===v||"map"===v||"lightMap"===v||"bumpMap"===v?r.parameters[v]=R.textures[r.parameters[v]]:"shading"===v?r.parameters[v]="flat"===r.parameters[v]?THREE.FlatShading:THREE.SmoothShading:"side"===v?r.parameters[v]="double"==r.parameters[v]?THREE.DoubleSide:"back"==
|
|
|
-r.parameters[v]?THREE.BackSide:THREE.FrontSide:"blending"===v?r.parameters[v]=r.parameters[v]in THREE?THREE[r.parameters[v]]:THREE.NormalBlending:"combine"===v?r.parameters[v]="MixOperation"==r.parameters[v]?THREE.MixOperation:THREE.MultiplyOperation:"vertexColors"===v?"face"==r.parameters[v]?r.parameters[v]=THREE.FaceColors:r.parameters[v]&&(r.parameters[v]=THREE.VertexColors):"wrapRGB"===v&&(q=r.parameters[v],r.parameters[v]=new THREE.Vector3(q[0],q[1],q[2]));void 0!==r.parameters.opacity&&1>r.parameters.opacity&&
|
|
|
-(r.parameters.transparent=!0);r.parameters.normalMap?(q=THREE.ShaderUtils.lib.normal,$=THREE.UniformsUtils.clone(q.uniforms),m=r.parameters.color,B=r.parameters.specular,K=r.parameters.ambient,o=r.parameters.shininess,$.tNormal.value=R.textures[r.parameters.normalMap],r.parameters.normalScale&&$.uNormalScale.value.set(r.parameters.normalScale[0],r.parameters.normalScale[1]),r.parameters.map&&($.tDiffuse.value=r.parameters.map,$.enableDiffuse.value=!0),r.parameters.envMap&&($.tCube.value=r.parameters.envMap,
|
|
|
-$.enableReflection.value=!0,$.uReflectivity.value=r.parameters.reflectivity),r.parameters.lightMap&&($.tAO.value=r.parameters.lightMap,$.enableAO.value=!0),r.parameters.specularMap&&($.tSpecular.value=R.textures[r.parameters.specularMap],$.enableSpecular.value=!0),r.parameters.displacementMap&&($.tDisplacement.value=R.textures[r.parameters.displacementMap],$.enableDisplacement.value=!0,$.uDisplacementBias.value=r.parameters.displacementBias,$.uDisplacementScale.value=r.parameters.displacementScale),
|
|
|
-$.uDiffuseColor.value.setHex(m),$.uSpecularColor.value.setHex(B),$.uAmbientColor.value.setHex(K),$.uShininess.value=o,r.parameters.opacity&&($.uOpacity.value=r.parameters.opacity),E=new THREE.ShaderMaterial({fragmentShader:q.fragmentShader,vertexShader:q.vertexShader,uniforms:$,lights:!0,fog:!0})):E=new THREE[r.type](r.parameters);R.materials[p]=E}e();R.cameras&&S.defaults.camera&&(R.currentCamera=R.cameras[S.defaults.camera]);R.fogs&&S.defaults.fog&&(R.scene.fog=R.fogs[S.defaults.fog]);w=S.defaults.bgcolor;
|
|
|
-R.bgColor=new THREE.Color;R.bgColor.setRGB(w[0],w[1],w[2]);R.bgColorAlpha=S.defaults.bgalpha;l.callbackSync(R);j()};THREE.TextureLoader=function(){THREE.EventTarget.call(this);this.crossOrigin=null};
|
|
|
-THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a){var b=this,c=new Image;c.addEventListener("load",function(){var a=new THREE.Texture(c);a.needsUpdate=!0;b.dispatchEvent({type:"load",content:a})},!1);c.addEventListener("error",function(){b.dispatchEvent({type:"error",message:"Couldn't load URL ["+a+"]"})},!1);b.crossOrigin&&(c.crossOrigin=b.crossOrigin);c.src=a}};
|
|
|
+THREE.SceneLoader.prototype.parse=function(a,b,c){function d(a,b){return"relativeToHTML"==b?a:n+"/"+a}function e(){f(R.scene,S.objects)}function f(a,b){for(var c in b)if(void 0===R.objects[c]){var e=b[c],g=null;if(e.type&&e.type in l.hierarchyHandlerMap&&void 0===e.loading){var i={},j;for(j in t)"type"!==j&&"url"!==j&&(i[j]=t[j]);E=R.materials[e.material];e.loading=!0;var m=l.hierarchyHandlerMap[e.type].loaderObject;m.addEventListener?(m.addEventListener("load",h(c,a,E,e)),m.load(d(e.url,S.urlBaseType))):
|
|
|
+m.options?m.load(d(e.url,S.urlBaseType),h(c,a,E,e)):m.load(d(e.url,S.urlBaseType),h(c,a,E,e),i)}else if(void 0!==e.geometry){if(C=R.geometries[e.geometry])g=!1,E=R.materials[e.material],(g=E instanceof THREE.ShaderMaterial)&&C.computeTangents(),u=e.position,s=e.rotation,D=e.quaternion,z=e.scale,r=e.matrix,D=0,e.material||(E=new THREE.MeshFaceMaterial),e.skin?g=new THREE.SkinnedMesh(C,E):e.morph?(g=new THREE.MorphAnimMesh(C,E),void 0!==e.duration&&(g.duration=e.duration),void 0!==e.time&&(g.time=e.time),
|
|
|
+void 0!==e.mirroredLoop&&(g.mirroredLoop=e.mirroredLoop),E.morphNormals&&C.computeMorphNormals()):g=new THREE.Mesh(C,E),g.name=c,r?(g.matrixAutoUpdate=!1,g.matrix.set(r[0],r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15])):(g.position.set(u[0],u[1],u[2]),D?(g.quaternion.set(D[0],D[1],D[2],D[3]),g.useQuaternion=!0):g.rotation.set(s[0],s[1],s[2]),g.scale.set(z[0],z[1],z[2])),g.visible=e.visible,g.castShadow=e.castShadow,g.receiveShadow=e.receiveShadow,a.add(g),R.objects[c]=
|
|
|
+g}else"DirectionalLight"===e.type||"PointLight"===e.type||"AmbientLight"===e.type?(H=void 0!==e.color?e.color:16777215,I=void 0!==e.intensity?e.intensity:1,"DirectionalLight"===e.type?(u=e.direction,J=new THREE.DirectionalLight(H,I),J.position.set(u[0],u[1],u[2]),e.target&&(P.push({object:J,targetName:e.target}),J.target=null)):"PointLight"===e.type?(u=e.position,A=e.distance,J=new THREE.PointLight(H,I,A),J.position.set(u[0],u[1],u[2])):"AmbientLight"===e.type&&(J=new THREE.AmbientLight(H)),a.add(J),
|
|
|
+J.name=c,R.lights[c]=J,R.objects[c]=J):"PerspectiveCamera"===e.type||"OrthographicCamera"===e.type?("PerspectiveCamera"===e.type?G=new THREE.PerspectiveCamera(e.fov,e.aspect,e.near,e.far):"OrthographicCamera"===e.type&&(G=new THREE.OrthographicCamera(w.left,w.right,w.top,w.bottom,w.near,w.far)),u=e.position,G.position.set(u[0],u[1],u[2]),a.add(G),G.name=c,R.cameras[c]=G,R.objects[c]=G):(u=e.position,s=e.rotation,D=e.quaternion,z=e.scale,D=0,g=new THREE.Object3D,g.name=c,g.position.set(u[0],u[1],u[2]),
|
|
|
+D?(g.quaternion.set(D[0],D[1],D[2],D[3]),g.useQuaternion=!0):g.rotation.set(s[0],s[1],s[2]),g.scale.set(z[0],z[1],z[2]),g.visible=void 0!==e.visible?e.visible:!1,a.add(g),R.objects[c]=g,R.empties[c]=g);if(g){if(void 0!==e.properties)for(var n in e.properties)g.properties[n]=e.properties[n];void 0!==e.children&&f(g,e.children)}}}function g(a){return function(b){R.geometries[a]=b;e();O-=1;l.onLoadComplete();j()}}function h(a,b,c,d){return function(f){var f=f.content?f.content:f.dae?f.scene:f,g=d.position,
|
|
|
+h=d.rotation,i=d.quaternion,m=d.scale;f.position.set(g[0],g[1],g[2]);i?(f.quaternion.set(i[0],i[1],i[2],i[3]),f.useQuaternion=!0):f.rotation.set(h[0],h[1],h[2]);f.scale.set(m[0],m[1],m[2]);c&&f.traverse(function(a){a.material=c});b.add(f);R.objects[a]=f;e();O-=1;l.onLoadComplete();j()}}function i(a){return function(b){R.geometries[a]=b}}function j(){l.callbackProgress({totalModels:M,totalTextures:T,loadedModels:M-O,loadedTextures:T-N},R);l.onLoadProgress();if(0===O&&0===N){for(var a=0;a<P.length;a++){var c=
|
|
|
+P[a],d=R.objects[c.targetName];d?c.object.target=d:(c.object.target=new THREE.Object3D,R.scene.add(c.object.target));c.object.target.properties.targetInverse=c.object}b(R)}}var l=this,n=THREE.Loader.prototype.extractUrlBase(c),m,p,o,q,t,r,A,u,s,D,z,w,v,C,E,G,L,B,J,H,I,O,N,M,T,R,P=[],S=a,$;for($ in this.geometryHandlerMap)a=this.geometryHandlerMap[$].loaderClass,this.geometryHandlerMap[$].loaderObject=new a;for($ in this.hierarchyHandlerMap)a=this.hierarchyHandlerMap[$].loaderClass,this.hierarchyHandlerMap[$].loaderObject=
|
|
|
+new a;N=O=0;R={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},empties:{}};if(S.transform&&($=S.transform.position,a=S.transform.rotation,c=S.transform.scale,$&&R.scene.position.set($[0],$[1],$[2]),a&&R.scene.rotation.set(a[0],a[1],a[2]),c&&R.scene.scale.set(c[0],c[1],c[2]),$||a||c))R.scene.updateMatrix(),R.scene.updateMatrixWorld();$=function(a){return function(){N-=a;j();l.onLoadComplete()}};for(o in S.fogs)a=S.fogs[o],"linear"===a.type?L=new THREE.Fog(0,
|
|
|
+a.near,a.far):"exp2"===a.type&&(L=new THREE.FogExp2(0,a.density)),w=a.color,L.color.setRGB(w[0],w[1],w[2]),R.fogs[o]=L;for(m in S.geometries)t=S.geometries[m],t.type in this.geometryHandlerMap&&(O+=1,l.onLoadStart());for(var K in S.objects)o=S.objects[K],o.type&&o.type in this.hierarchyHandlerMap&&(O+=1,l.onLoadStart());M=O;for(m in S.geometries)if(t=S.geometries[m],"cube"===t.type)C=new THREE.CubeGeometry(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments,null,t.flipped,t.sides),
|
|
|
+R.geometries[m]=C;else if("plane"===t.type)C=new THREE.PlaneGeometry(t.width,t.height,t.widthSegments,t.heightSegments),R.geometries[m]=C;else if("sphere"===t.type)C=new THREE.SphereGeometry(t.radius,t.widthSegments,t.heightSegments),R.geometries[m]=C;else if("cylinder"===t.type)C=new THREE.CylinderGeometry(t.topRad,t.botRad,t.height,t.radSegs,t.heightSegs),R.geometries[m]=C;else if("torus"===t.type)C=new THREE.TorusGeometry(t.radius,t.tube,t.segmentsR,t.segmentsT),R.geometries[m]=C;else if("icosahedron"===
|
|
|
+t.type)C=new THREE.IcosahedronGeometry(t.radius,t.subdivisions),R.geometries[m]=C;else if(t.type in this.geometryHandlerMap){K={};for(B in t)"type"!==B&&"url"!==B&&(K[B]=t[B]);this.geometryHandlerMap[t.type].loaderObject.load(d(t.url,S.urlBaseType),g(m),K)}else"embedded"===t.type&&(K=S.embeds[t.id],K.metadata=S.metadata,K&&this.geometryHandlerMap.ascii.loaderObject.createModel(K,i(m),""));for(q in S.textures)if(m=S.textures[q],m.url instanceof Array){N+=m.url.length;for(B=0;B<m.url.length;B++)l.onLoadStart()}else N+=
|
|
|
+1,l.onLoadStart();T=N;for(q in S.textures){m=S.textures[q];void 0!==m.mapping&&void 0!==THREE[m.mapping]&&(m.mapping=new THREE[m.mapping]);if(m.url instanceof Array){K=m.url.length;o=[];for(B=0;B<K;B++)o[B]=d(m.url[B],S.urlBaseType);B=(B=o[0].endsWith(".dds"))?THREE.ImageUtils.loadCompressedTextureCube(o,m.mapping,$(K)):THREE.ImageUtils.loadTextureCube(o,m.mapping,$(K))}else{B=m.url.toLowerCase().endsWith(".dds");K=d(m.url,S.urlBaseType);o=$(1);B=B?THREE.ImageUtils.loadCompressedTexture(K,m.mapping,
|
|
|
+o):THREE.ImageUtils.loadTexture(K,m.mapping,o);void 0!==THREE[m.minFilter]&&(B.minFilter=THREE[m.minFilter]);void 0!==THREE[m.magFilter]&&(B.magFilter=THREE[m.magFilter]);m.anisotropy&&(B.anisotropy=m.anisotropy);if(m.repeat&&(B.repeat.set(m.repeat[0],m.repeat[1]),1!==m.repeat[0]&&(B.wrapS=THREE.RepeatWrapping),1!==m.repeat[1]))B.wrapT=THREE.RepeatWrapping;m.offset&&B.offset.set(m.offset[0],m.offset[1]);if(m.wrap&&(K={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping},void 0!==K[m.wrap[0]]&&
|
|
|
+(B.wrapS=K[m.wrap[0]]),void 0!==K[m.wrap[1]]))B.wrapT=K[m.wrap[1]]}R.textures[q]=B}for(p in S.materials){r=S.materials[p];for(v in r.parameters)"envMap"===v||"map"===v||"lightMap"===v||"bumpMap"===v?r.parameters[v]=R.textures[r.parameters[v]]:"shading"===v?r.parameters[v]="flat"===r.parameters[v]?THREE.FlatShading:THREE.SmoothShading:"side"===v?r.parameters[v]="double"==r.parameters[v]?THREE.DoubleSide:"back"==r.parameters[v]?THREE.BackSide:THREE.FrontSide:"blending"===v?r.parameters[v]=r.parameters[v]in
|
|
|
+THREE?THREE[r.parameters[v]]:THREE.NormalBlending:"combine"===v?r.parameters[v]="MixOperation"==r.parameters[v]?THREE.MixOperation:THREE.MultiplyOperation:"vertexColors"===v?"face"==r.parameters[v]?r.parameters[v]=THREE.FaceColors:r.parameters[v]&&(r.parameters[v]=THREE.VertexColors):"wrapRGB"===v&&(q=r.parameters[v],r.parameters[v]=new THREE.Vector3(q[0],q[1],q[2]));void 0!==r.parameters.opacity&&1>r.parameters.opacity&&(r.parameters.transparent=!0);r.parameters.normalMap?(q=THREE.ShaderUtils.lib.normal,
|
|
|
+$=THREE.UniformsUtils.clone(q.uniforms),m=r.parameters.color,B=r.parameters.specular,K=r.parameters.ambient,o=r.parameters.shininess,$.tNormal.value=R.textures[r.parameters.normalMap],r.parameters.normalScale&&$.uNormalScale.value.set(r.parameters.normalScale[0],r.parameters.normalScale[1]),r.parameters.map&&($.tDiffuse.value=r.parameters.map,$.enableDiffuse.value=!0),r.parameters.envMap&&($.tCube.value=r.parameters.envMap,$.enableReflection.value=!0,$.uReflectivity.value=r.parameters.reflectivity),
|
|
|
+r.parameters.lightMap&&($.tAO.value=r.parameters.lightMap,$.enableAO.value=!0),r.parameters.specularMap&&($.tSpecular.value=R.textures[r.parameters.specularMap],$.enableSpecular.value=!0),r.parameters.displacementMap&&($.tDisplacement.value=R.textures[r.parameters.displacementMap],$.enableDisplacement.value=!0,$.uDisplacementBias.value=r.parameters.displacementBias,$.uDisplacementScale.value=r.parameters.displacementScale),$.uDiffuseColor.value.setHex(m),$.uSpecularColor.value.setHex(B),$.uAmbientColor.value.setHex(K),
|
|
|
+$.uShininess.value=o,r.parameters.opacity&&($.uOpacity.value=r.parameters.opacity),E=new THREE.ShaderMaterial({fragmentShader:q.fragmentShader,vertexShader:q.vertexShader,uniforms:$,lights:!0,fog:!0})):E=new THREE[r.type](r.parameters);R.materials[p]=E}e();R.cameras&&S.defaults.camera&&(R.currentCamera=R.cameras[S.defaults.camera]);R.fogs&&S.defaults.fog&&(R.scene.fog=R.fogs[S.defaults.fog]);w=S.defaults.bgcolor;R.bgColor=new THREE.Color;R.bgColor.setRGB(w[0],w[1],w[2]);R.bgColorAlpha=S.defaults.bgalpha;
|
|
|
+l.callbackSync(R);j()};THREE.TextureLoader=function(){THREE.EventTarget.call(this);this.crossOrigin=null};THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a){var b=this,c=new Image;c.addEventListener("load",function(){var a=new THREE.Texture(c);a.needsUpdate=!0;b.dispatchEvent({type:"load",content:a})},!1);c.addEventListener("error",function(){b.dispatchEvent({type:"error",message:"Couldn't load URL ["+a+"]"})},!1);b.crossOrigin&&(c.crossOrigin=b.crossOrigin);c.src=a}};
|
|
|
THREE.Material=function(){THREE.MaterialLibrary.push(this);this.id=THREE.MaterialIdCount++;this.name="";this.side=THREE.FrontSide;this.opacity=1;this.transparent=!1;this.blending=THREE.NormalBlending;this.blendSrc=THREE.SrcAlphaFactor;this.blendDst=THREE.OneMinusSrcAlphaFactor;this.blendEquation=THREE.AddEquation;this.depthWrite=this.depthTest=!0;this.polygonOffset=!1;this.alphaTest=this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.overdraw=!1;this.needsUpdate=this.visible=!0};
|
|
|
THREE.Material.prototype.setValues=function(a){if(void 0!==a)for(var b in a){var c=a[b];if(void 0===c)console.warn("THREE.Material: '"+b+"' parameter is undefined.");else if(b in this){var d=this[b];d instanceof THREE.Color&&c instanceof THREE.Color?d.copy(c):d instanceof THREE.Color&&"number"===typeof c?d.setHex(c):d instanceof THREE.Vector3&&c instanceof THREE.Vector3?d.copy(c):this[b]=c}}};
|
|
|
THREE.Material.prototype.clone=function(a){void 0===a&&(a=new THREE.Material);a.name=this.name;a.side=this.side;a.opacity=this.opacity;a.transparent=this.transparent;a.blending=this.blending;a.blendSrc=this.blendSrc;a.blendDst=this.blendDst;a.blendEquation=this.blendEquation;a.depthTest=this.depthTest;a.depthWrite=this.depthWrite;a.polygonOffset=this.polygonOffset;a.polygonOffsetFactor=this.polygonOffsetFactor;a.polygonOffsetUnits=this.polygonOffsetUnits;a.alphaTest=this.alphaTest;a.overdraw=this.overdraw;
|
|
@@ -278,34 +277,34 @@ THREE.Scene.prototype.__addObject=function(a){if(a instanceof THREE.Light)-1===t
|
|
|
THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){var b=this.__lights.indexOf(a);-1!==b&&this.__lights.splice(b,1)}else a instanceof THREE.Camera||(b=this.__objects.indexOf(a),-1!==b&&(this.__objects.splice(b,1),this.__objectsRemoved.push(a),b=this.__objectsAdded.indexOf(a),-1!==b&&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.name="";this.color=new THREE.Color(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3};THREE.Fog.prototype.clone=function(){return new THREE.Fog(this.color.getHex(),this.near,this.far)};THREE.FogExp2=function(a,b){this.name="";this.color=new THREE.Color(a);this.density=void 0!==b?b:2.5E-4};THREE.FogExp2.prototype.clone=function(){return new THREE.FogExp2(this.color.getHex(),this.density)};
|
|
|
THREE.CanvasRenderer=function(a){function b(a){A!==a&&(A=q.globalAlpha=a)}function c(a){u!==a&&(a===THREE.NormalBlending?q.globalCompositeOperation="source-over":a===THREE.AdditiveBlending?q.globalCompositeOperation="lighter":a===THREE.SubtractiveBlending&&(q.globalCompositeOperation="darker"),u=a)}function d(a){s!==a&&(s=q.strokeStyle=a)}function e(a){D!==a&&(D=q.fillStyle=a)}console.log("THREE.CanvasRenderer",THREE.REVISION);var a=a||{},f=this,g,h,i,j=new THREE.Projector,l=void 0!==a.canvas?a.canvas:
|
|
|
-document.createElement("canvas"),n,m,p,o,q=l.getContext("2d"),t=new THREE.Color(0),r=0,A=1,u=0,s=null,D=null,z=null,w=null,v=null,C,E,G,L,B=new THREE.RenderableVertex,J=new THREE.RenderableVertex,H,I,O,N,M,T,R,P,S,$,K,ja,Q=new THREE.Color,ha=new THREE.Color,da=new THREE.Color,Y=new THREE.Color,aa=new THREE.Color,ba=new THREE.Color,ia=new THREE.Color,wa={},ua={},Ca,Ka,va,cb,wb,Ua,fb,kb,Ab,Bb,eb=new THREE.Rectangle,xa=new THREE.Rectangle,La=new THREE.Rectangle,lb=!1,Na=new THREE.Color,Za=new THREE.Color,
|
|
|
-db=new THREE.Color,ka=new THREE.Vector3,$a,ab,mb,ta,gb,pb,a=16;$a=document.createElement("canvas");$a.width=$a.height=2;ab=$a.getContext("2d");ab.fillStyle="rgba(0,0,0,1)";ab.fillRect(0,0,2,2);mb=ab.getImageData(0,0,2,2);ta=mb.data;gb=document.createElement("canvas");gb.width=gb.height=a;pb=gb.getContext("2d");pb.translate(-a/2,-a/2);pb.scale(a,a);a--;this.domElement=l;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.setSize=function(a,b){n=a;m=b;p=
|
|
|
+document.createElement("canvas"),n,m,p,o,q=l.getContext("2d"),t=new THREE.Color(0),r=0,A=1,u=0,s=null,D=null,z=null,w=null,v=null,C,E,G,L,B=new THREE.RenderableVertex,J=new THREE.RenderableVertex,H,I,O,N,M,T,R,P,S,$,K,ja,Q=new THREE.Color,ha=new THREE.Color,da=new THREE.Color,Y=new THREE.Color,aa=new THREE.Color,ba=new THREE.Color,ia=new THREE.Color,wa={},ua={},Ca,Ka,va,cb,xb,Ua,fb,kb,Bb,Cb,eb=new THREE.Rectangle,xa=new THREE.Rectangle,La=new THREE.Rectangle,lb=!1,Na=new THREE.Color,Za=new THREE.Color,
|
|
|
+db=new THREE.Color,ka=new THREE.Vector3,$a,ab,mb,ta,gb,qb,a=16;$a=document.createElement("canvas");$a.width=$a.height=2;ab=$a.getContext("2d");ab.fillStyle="rgba(0,0,0,1)";ab.fillRect(0,0,2,2);mb=ab.getImageData(0,0,2,2);ta=mb.data;gb=document.createElement("canvas");gb.width=gb.height=a;qb=gb.getContext("2d");qb.translate(-a/2,-a/2);qb.scale(a,a);a--;this.domElement=l;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.setSize=function(a,b){n=a;m=b;p=
|
|
|
Math.floor(n/2);o=Math.floor(m/2);l.width=n;l.height=m;eb.set(-p,-o,p,o);xa.set(-p,-o,p,o);A=1;u=0;v=w=z=D=s=null};this.setClearColor=function(a,b){t.copy(a);r=void 0!==b?b:1;xa.set(-p,-o,p,o)};this.setClearColorHex=function(a,b){t.setHex(a);r=void 0!==b?b:1;xa.set(-p,-o,p,o)};this.getMaxAnisotropy=function(){return 0};this.clear=function(){q.setTransform(1,0,0,-1,p,o);!1===xa.isEmpty()&&(xa.minSelf(eb),xa.inflate(2),1>r&&q.clearRect(Math.floor(xa.getX()),Math.floor(xa.getY()),Math.floor(xa.getWidth()),
|
|
|
Math.floor(xa.getHeight())),0<r&&(c(THREE.NormalBlending),b(1),e("rgba("+Math.floor(255*t.r)+","+Math.floor(255*t.g)+","+Math.floor(255*t.b)+","+r+")"),q.fillRect(Math.floor(xa.getX()),Math.floor(xa.getY()),Math.floor(xa.getWidth()),Math.floor(xa.getHeight()))),xa.empty())};this.render=function(a,l){function m(a,b,c){for(var d=0,e=i.length;d<e;d++){var f=i[d],g=f.color;if(f instanceof THREE.DirectionalLight){var h=f.matrixWorld.getPosition().normalize(),k=b.dot(h);0>=k||(k*=f.intensity,c.r+=g.r*k,
|
|
|
c.g+=g.g*k,c.b+=g.b*k)}else f instanceof THREE.PointLight&&(h=f.matrixWorld.getPosition(),k=b.dot(ka.sub(h,a).normalize()),0>=k||(k*=0==f.distance?1:1-Math.min(a.distanceTo(h)/f.distance,1),0!=k&&(k*=f.intensity,c.r+=g.r*k,c.g+=g.g*k,c.b+=g.b*k)))}}function n(a,d,e,g,h,k,i,j){f.info.render.vertices+=3;f.info.render.faces++;b(j.opacity);c(j.blending);H=a.positionScreen.x;I=a.positionScreen.y;O=d.positionScreen.x;N=d.positionScreen.y;M=e.positionScreen.x;T=e.positionScreen.y;r(H,I,O,N,M,T);(j instanceof
|
|
|
THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial)&&null===j.map&&null===j.map?(ba.copy(j.color),ia.copy(j.emissive),j.vertexColors===THREE.FaceColors&&(ba.r*=i.color.r,ba.g*=i.color.g,ba.b*=i.color.b),!0===lb)?!1===j.wireframe&&j.shading==THREE.SmoothShading&&3==i.vertexNormalsLength?(ha.r=da.r=Y.r=Na.r,ha.g=da.g=Y.g=Na.g,ha.b=da.b=Y.b=Na.b,m(i.v1.positionWorld,i.vertexNormalsWorld[0],ha),m(i.v2.positionWorld,i.vertexNormalsWorld[1],da),m(i.v3.positionWorld,i.vertexNormalsWorld[2],
|
|
|
Y),ha.r=ha.r*ba.r+ia.r,ha.g=ha.g*ba.g+ia.g,ha.b=ha.b*ba.b+ia.b,da.r=da.r*ba.r+ia.r,da.g=da.g*ba.g+ia.g,da.b=da.b*ba.b+ia.b,Y.r=Y.r*ba.r+ia.r,Y.g=Y.g*ba.g+ia.g,Y.b=Y.b*ba.b+ia.b,aa.r=0.5*(da.r+Y.r),aa.g=0.5*(da.g+Y.g),aa.b=0.5*(da.b+Y.b),va=wc(ha,da,Y,aa),ma(H,I,O,N,M,T,0,0,1,0,0,1,va)):(Q.r=Na.r,Q.g=Na.g,Q.b=Na.b,m(i.centroidWorld,i.normalWorld,Q),Q.r=Q.r*ba.r+ia.r,Q.g=Q.g*ba.g+ia.g,Q.b=Q.b*ba.b+ia.b,!0===j.wireframe?s(Q,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(Q)):!0===j.wireframe?
|
|
|
-s(j.color,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(j.color):j instanceof THREE.MeshBasicMaterial||j instanceof THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial?null!==j.map?j.map.mapping instanceof THREE.UVMapping&&(cb=i.uvs[0],A(H,I,O,N,M,T,cb[g].u,cb[g].v,cb[h].u,cb[h].v,cb[k].u,cb[k].v,j.map)):null!==j.envMap?j.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(a=l.matrixWorldInverse,ka.copy(i.vertexNormalsWorld[g]),wb=0.5*(ka.x*a.elements[0]+ka.y*
|
|
|
-a.elements[4]+ka.z*a.elements[8])+0.5,Ua=0.5*(ka.x*a.elements[1]+ka.y*a.elements[5]+ka.z*a.elements[9])+0.5,ka.copy(i.vertexNormalsWorld[h]),fb=0.5*(ka.x*a.elements[0]+ka.y*a.elements[4]+ka.z*a.elements[8])+0.5,kb=0.5*(ka.x*a.elements[1]+ka.y*a.elements[5]+ka.z*a.elements[9])+0.5,ka.copy(i.vertexNormalsWorld[k]),Ab=0.5*(ka.x*a.elements[0]+ka.y*a.elements[4]+ka.z*a.elements[8])+0.5,Bb=0.5*(ka.x*a.elements[1]+ka.y*a.elements[5]+ka.z*a.elements[9])+0.5,A(H,I,O,N,M,T,wb,Ua,fb,kb,Ab,Bb,j.envMap)):(Q.copy(j.color),
|
|
|
-j.vertexColors===THREE.FaceColors&&(Q.r*=i.color.r,Q.g*=i.color.g,Q.b*=i.color.b),!0===j.wireframe?s(Q,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(Q)):j instanceof THREE.MeshDepthMaterial?(Ca=l.near,Ka=l.far,ha.r=ha.g=ha.b=1-Cb(a.positionScreen.z,Ca,Ka),da.r=da.g=da.b=1-Cb(d.positionScreen.z,Ca,Ka),Y.r=Y.g=Y.b=1-Cb(e.positionScreen.z,Ca,Ka),aa.r=0.5*(da.r+Y.r),aa.g=0.5*(da.g+Y.g),aa.b=0.5*(da.b+Y.b),va=wc(ha,da,Y,aa),ma(H,I,O,N,M,T,0,0,1,0,0,1,va)):j instanceof THREE.MeshNormalMaterial&&
|
|
|
+s(j.color,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(j.color):j instanceof THREE.MeshBasicMaterial||j instanceof THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial?null!==j.map?j.map.mapping instanceof THREE.UVMapping&&(cb=i.uvs[0],A(H,I,O,N,M,T,cb[g].u,cb[g].v,cb[h].u,cb[h].v,cb[k].u,cb[k].v,j.map)):null!==j.envMap?j.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(a=l.matrixWorldInverse,ka.copy(i.vertexNormalsWorld[g]),xb=0.5*(ka.x*a.elements[0]+ka.y*
|
|
|
+a.elements[4]+ka.z*a.elements[8])+0.5,Ua=0.5*(ka.x*a.elements[1]+ka.y*a.elements[5]+ka.z*a.elements[9])+0.5,ka.copy(i.vertexNormalsWorld[h]),fb=0.5*(ka.x*a.elements[0]+ka.y*a.elements[4]+ka.z*a.elements[8])+0.5,kb=0.5*(ka.x*a.elements[1]+ka.y*a.elements[5]+ka.z*a.elements[9])+0.5,ka.copy(i.vertexNormalsWorld[k]),Bb=0.5*(ka.x*a.elements[0]+ka.y*a.elements[4]+ka.z*a.elements[8])+0.5,Cb=0.5*(ka.x*a.elements[1]+ka.y*a.elements[5]+ka.z*a.elements[9])+0.5,A(H,I,O,N,M,T,xb,Ua,fb,kb,Bb,Cb,j.envMap)):(Q.copy(j.color),
|
|
|
+j.vertexColors===THREE.FaceColors&&(Q.r*=i.color.r,Q.g*=i.color.g,Q.b*=i.color.b),!0===j.wireframe?s(Q,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(Q)):j instanceof THREE.MeshDepthMaterial?(Ca=l.near,Ka=l.far,ha.r=ha.g=ha.b=1-nb(a.positionScreen.z,Ca,Ka),da.r=da.g=da.b=1-nb(d.positionScreen.z,Ca,Ka),Y.r=Y.g=Y.b=1-nb(e.positionScreen.z,Ca,Ka),aa.r=0.5*(da.r+Y.r),aa.g=0.5*(da.g+Y.g),aa.b=0.5*(da.b+Y.b),va=wc(ha,da,Y,aa),ma(H,I,O,N,M,T,0,0,1,0,0,1,va)):j instanceof THREE.MeshNormalMaterial&&
|
|
|
(Q.r=gc(i.normalWorld.x),Q.g=gc(i.normalWorld.y),Q.b=gc(i.normalWorld.z),!0===j.wireframe?s(Q,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(Q))}function r(a,b,c,d,e,f){q.beginPath();q.moveTo(a,b);q.lineTo(c,d);q.lineTo(e,f);q.closePath()}function t(a,b,c,d,e,f,g,h){q.beginPath();q.moveTo(a,b);q.lineTo(c,d);q.lineTo(e,f);q.lineTo(g,h);q.closePath()}function s(a,b,c,e){z!==b&&(z=q.lineWidth=b);w!==c&&(w=q.lineCap=c);v!==e&&(v=q.lineJoin=e);d(a.getContextStyle());q.stroke();La.inflate(2*
|
|
|
-b)}function u(a){e(a.getContextStyle());q.fill()}function A(a,b,c,d,f,g,h,k,i,j,l,m,ma){if(!(ma instanceof THREE.DataTexture||void 0===ma.image||0==ma.image.width)){if(!0===ma.needsUpdate){var n=ma.wrapS==THREE.RepeatWrapping,o=ma.wrapT==THREE.RepeatWrapping;wa[ma.id]=q.createPattern(ma.image,!0===n&&!0===o?"repeat":!0===n&&!1===o?"repeat-x":!1===n&&!0===o?"repeat-y":"no-repeat");ma.needsUpdate=!1}void 0===wa[ma.id]?e("rgba(0,0,0,1)"):e(wa[ma.id]);var n=ma.offset.x/ma.repeat.x,o=ma.offset.y/ma.repeat.y,
|
|
|
-Cb=ma.image.width*ma.repeat.x,p=ma.image.height*ma.repeat.y,h=(h+n)*Cb,k=(1-k+o)*p,c=c-a,d=d-b,f=f-a,g=g-b,i=(i+n)*Cb-h,j=(1-j+o)*p-k,l=(l+n)*Cb-h,m=(1-m+o)*p-k,n=i*m-l*j;0===n?(void 0===ua[ma.id]&&(b=document.createElement("canvas"),b.width=ma.image.width,b.height=ma.image.height,b=b.getContext("2d"),b.drawImage(ma.image,0,0),ua[ma.id]=b.getImageData(0,0,ma.image.width,ma.image.height).data),b=ua[ma.id],h=4*(Math.floor(h)+Math.floor(k)*ma.image.width),Q.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255),u(Q)):
|
|
|
-(n=1/n,ma=(m*c-j*f)*n,j=(m*d-j*g)*n,c=(i*f-l*c)*n,d=(i*g-l*d)*n,a=a-ma*h-c*k,h=b-j*h-d*k,q.save(),q.transform(ma,j,c,d,a,h),q.fill(),q.restore())}}function ma(a,b,c,d,e,f,g,h,k,i,j,l,m){var ma,n;ma=m.width-1;n=m.height-1;g*=ma;h*=n;c-=a;d-=b;e-=a;f-=b;k=k*ma-g;i=i*n-h;j=j*ma-g;l=l*n-h;n=1/(k*l-j*i);ma=(l*c-i*e)*n;i=(l*d-i*f)*n;c=(k*e-j*c)*n;d=(k*f-j*d)*n;a=a-ma*g-c*h;b=b-i*g-d*h;q.save();q.transform(ma,i,c,d,a,b);q.clip();q.drawImage(m,0,0);q.restore()}function wc(a,b,c,d){ta[0]=255*a.r|0;ta[1]=255*
|
|
|
-a.g|0;ta[2]=255*a.b|0;ta[4]=255*b.r|0;ta[5]=255*b.g|0;ta[6]=255*b.b|0;ta[8]=255*c.r|0;ta[9]=255*c.g|0;ta[10]=255*c.b|0;ta[12]=255*d.r|0;ta[13]=255*d.g|0;ta[14]=255*d.b|0;ab.putImageData(mb,0,0);pb.drawImage($a,0,0);return gb}function Cb(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function gc(a){a=0.5*(a+1);return 0>a?0:1<a?1:a}function Xb(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;0!==e&&(e=1/Math.sqrt(e),c*=e,d*=e,b.x+=c,b.y+=d,a.x-=c,a.y-=d)}if(!1===l instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");
|
|
|
+b)}function u(a){e(a.getContextStyle());q.fill()}function A(a,b,c,d,f,g,h,k,i,j,l,m,ma){if(!(ma instanceof THREE.DataTexture||void 0===ma.image||0==ma.image.width)){if(!0===ma.needsUpdate){var n=ma.wrapS==THREE.RepeatWrapping,nb=ma.wrapT==THREE.RepeatWrapping;wa[ma.id]=q.createPattern(ma.image,!0===n&&!0===nb?"repeat":!0===n&&!1===nb?"repeat-x":!1===n&&!0===nb?"repeat-y":"no-repeat");ma.needsUpdate=!1}void 0===wa[ma.id]?e("rgba(0,0,0,1)"):e(wa[ma.id]);var n=ma.offset.x/ma.repeat.x,nb=ma.offset.y/
|
|
|
+ma.repeat.y,o=ma.image.width*ma.repeat.x,p=ma.image.height*ma.repeat.y,h=(h+n)*o,k=(1-k+nb)*p,c=c-a,d=d-b,f=f-a,g=g-b,i=(i+n)*o-h,j=(1-j+nb)*p-k,l=(l+n)*o-h,m=(1-m+nb)*p-k,n=i*m-l*j;0===n?(void 0===ua[ma.id]&&(b=document.createElement("canvas"),b.width=ma.image.width,b.height=ma.image.height,b=b.getContext("2d"),b.drawImage(ma.image,0,0),ua[ma.id]=b.getImageData(0,0,ma.image.width,ma.image.height).data),b=ua[ma.id],h=4*(Math.floor(h)+Math.floor(k)*ma.image.width),Q.setRGB(b[h]/255,b[h+1]/255,b[h+
|
|
|
+2]/255),u(Q)):(n=1/n,ma=(m*c-j*f)*n,j=(m*d-j*g)*n,c=(i*f-l*c)*n,d=(i*g-l*d)*n,a=a-ma*h-c*k,h=b-j*h-d*k,q.save(),q.transform(ma,j,c,d,a,h),q.fill(),q.restore())}}function ma(a,b,c,d,e,f,g,h,k,i,j,l,m){var ma,n;ma=m.width-1;n=m.height-1;g*=ma;h*=n;c-=a;d-=b;e-=a;f-=b;k=k*ma-g;i=i*n-h;j=j*ma-g;l=l*n-h;n=1/(k*l-j*i);ma=(l*c-i*e)*n;i=(l*d-i*f)*n;c=(k*e-j*c)*n;d=(k*f-j*d)*n;a=a-ma*g-c*h;b=b-i*g-d*h;q.save();q.transform(ma,i,c,d,a,b);q.clip();q.drawImage(m,0,0);q.restore()}function wc(a,b,c,d){ta[0]=255*
|
|
|
+a.r|0;ta[1]=255*a.g|0;ta[2]=255*a.b|0;ta[4]=255*b.r|0;ta[5]=255*b.g|0;ta[6]=255*b.b|0;ta[8]=255*c.r|0;ta[9]=255*c.g|0;ta[10]=255*c.b|0;ta[12]=255*d.r|0;ta[13]=255*d.g|0;ta[14]=255*d.b|0;ab.putImageData(mb,0,0);qb.drawImage($a,0,0);return gb}function nb(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function gc(a){a=0.5*(a+1);return 0>a?0:1<a?1:a}function Xb(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;0!==e&&(e=1/Math.sqrt(e),c*=e,d*=e,b.x+=c,b.y+=d,a.x-=c,a.y-=d)}if(!1===l instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");
|
|
|
else{var Yb,xc,na,ea;!0===this.autoClear?this.clear():q.setTransform(1,0,0,-1,p,o);f.info.render.vertices=0;f.info.render.faces=0;g=j.projectScene(a,l,this.sortObjects,this.sortElements);h=g.elements;i=g.lights;lb=0<i.length;if(!0===lb){Na.setRGB(0,0,0);Za.setRGB(0,0,0);db.setRGB(0,0,0);Yb=0;for(xc=i.length;Yb<xc;Yb++){ea=i[Yb];var oa=ea.color;ea instanceof THREE.AmbientLight?(Na.r+=oa.r,Na.g+=oa.g,Na.b+=oa.b):ea instanceof THREE.DirectionalLight?(Za.r+=oa.r,Za.g+=oa.g,Za.b+=oa.b):ea instanceof THREE.PointLight&&
|
|
|
-(db.r+=oa.r,db.g+=oa.g,db.b+=oa.b)}}Yb=0;for(xc=h.length;Yb<xc;Yb++)if(na=h[Yb],ea=na.material,!(void 0===ea||!1===ea.visible)){La.empty();if(na instanceof THREE.RenderableParticle){C=na;C.x*=p;C.y*=o;var oa=C,D=na;b(ea.opacity);c(ea.blending);var yb=void 0,zb=void 0,qb=void 0,rb=void 0,hc=na=void 0,Pc=void 0;ea instanceof THREE.ParticleBasicMaterial?null===ea.map?(qb=D.object.scale.x,rb=D.object.scale.y,qb*=D.scale.x*p,rb*=D.scale.y*o,La.set(oa.x-qb,oa.y-rb,oa.x+qb,oa.y+rb),!1!==eb.intersects(La)&&
|
|
|
-(e(ea.color.getContextStyle()),q.save(),q.translate(oa.x,oa.y),q.rotate(-D.rotation),q.scale(qb,rb),q.fillRect(-1,-1,2,2),q.restore())):(na=ea.map.image,hc=na.width>>1,Pc=na.height>>1,qb=D.scale.x*p,rb=D.scale.y*o,yb=qb*hc,zb=rb*Pc,La.set(oa.x-yb,oa.y-zb,oa.x+yb,oa.y+zb),!1!==eb.intersects(La)&&(q.save(),q.translate(oa.x,oa.y),q.rotate(-D.rotation),q.scale(qb,-rb),q.translate(-hc,-Pc),q.drawImage(na,0,0),q.restore())):ea instanceof THREE.ParticleCanvasMaterial&&(yb=D.scale.x*p,zb=D.scale.y*o,La.set(oa.x-
|
|
|
-yb,oa.y-zb,oa.x+yb,oa.y+zb),!1!==eb.intersects(La)&&(d(ea.color.getContextStyle()),e(ea.color.getContextStyle()),q.save(),q.translate(oa.x,oa.y),q.rotate(-D.rotation),q.scale(yb,zb),ea.program(q),q.restore()))}else if(na instanceof THREE.RenderableLine){if(C=na.v1,E=na.v2,C.positionScreen.x*=p,C.positionScreen.y*=o,E.positionScreen.x*=p,E.positionScreen.y*=o,La.addPoint(C.positionScreen.x,C.positionScreen.y),La.addPoint(E.positionScreen.x,E.positionScreen.y),!0===eb.intersects(La)&&(oa=C,D=E,b(ea.opacity),
|
|
|
+(db.r+=oa.r,db.g+=oa.g,db.b+=oa.b)}}Yb=0;for(xc=h.length;Yb<xc;Yb++)if(na=h[Yb],ea=na.material,!(void 0===ea||!1===ea.visible)){La.empty();if(na instanceof THREE.RenderableParticle){C=na;C.x*=p;C.y*=o;var oa=C,D=na;b(ea.opacity);c(ea.blending);var zb=void 0,Ab=void 0,rb=void 0,sb=void 0,hc=na=void 0,Pc=void 0;ea instanceof THREE.ParticleBasicMaterial?null===ea.map?(rb=D.object.scale.x,sb=D.object.scale.y,rb*=D.scale.x*p,sb*=D.scale.y*o,La.set(oa.x-rb,oa.y-sb,oa.x+rb,oa.y+sb),!1!==eb.intersects(La)&&
|
|
|
+(e(ea.color.getContextStyle()),q.save(),q.translate(oa.x,oa.y),q.rotate(-D.rotation),q.scale(rb,sb),q.fillRect(-1,-1,2,2),q.restore())):(na=ea.map.image,hc=na.width>>1,Pc=na.height>>1,rb=D.scale.x*p,sb=D.scale.y*o,zb=rb*hc,Ab=sb*Pc,La.set(oa.x-zb,oa.y-Ab,oa.x+zb,oa.y+Ab),!1!==eb.intersects(La)&&(q.save(),q.translate(oa.x,oa.y),q.rotate(-D.rotation),q.scale(rb,-sb),q.translate(-hc,-Pc),q.drawImage(na,0,0),q.restore())):ea instanceof THREE.ParticleCanvasMaterial&&(zb=D.scale.x*p,Ab=D.scale.y*o,La.set(oa.x-
|
|
|
+zb,oa.y-Ab,oa.x+zb,oa.y+Ab),!1!==eb.intersects(La)&&(d(ea.color.getContextStyle()),e(ea.color.getContextStyle()),q.save(),q.translate(oa.x,oa.y),q.rotate(-D.rotation),q.scale(zb,Ab),ea.program(q),q.restore()))}else if(na instanceof THREE.RenderableLine){if(C=na.v1,E=na.v2,C.positionScreen.x*=p,C.positionScreen.y*=o,E.positionScreen.x*=p,E.positionScreen.y*=o,La.addPoint(C.positionScreen.x,C.positionScreen.y),La.addPoint(E.positionScreen.x,E.positionScreen.y),!0===eb.intersects(La)&&(oa=C,D=E,b(ea.opacity),
|
|
|
c(ea.blending),q.beginPath(),q.moveTo(oa.positionScreen.x,oa.positionScreen.y),q.lineTo(D.positionScreen.x,D.positionScreen.y),ea instanceof THREE.LineBasicMaterial))oa=ea.linewidth,z!==oa&&(z=q.lineWidth=oa),oa=ea.linecap,w!==oa&&(w=q.lineCap=oa),oa=ea.linejoin,v!==oa&&(v=q.lineJoin=oa),d(ea.color.getContextStyle()),q.stroke(),La.inflate(2*ea.linewidth)}else if(na instanceof THREE.RenderableFace3)C=na.v1,E=na.v2,G=na.v3,C.positionScreen.x*=p,C.positionScreen.y*=o,E.positionScreen.x*=p,E.positionScreen.y*=
|
|
|
o,G.positionScreen.x*=p,G.positionScreen.y*=o,!0===ea.overdraw&&(Xb(C.positionScreen,E.positionScreen),Xb(E.positionScreen,G.positionScreen),Xb(G.positionScreen,C.positionScreen)),La.add3Points(C.positionScreen.x,C.positionScreen.y,E.positionScreen.x,E.positionScreen.y,G.positionScreen.x,G.positionScreen.y),!0===eb.intersects(La)&&n(C,E,G,0,1,2,na,ea,a);else if(na instanceof THREE.RenderableFace4&&(C=na.v1,E=na.v2,G=na.v3,L=na.v4,C.positionScreen.x*=p,C.positionScreen.y*=o,E.positionScreen.x*=p,E.positionScreen.y*=
|
|
|
o,G.positionScreen.x*=p,G.positionScreen.y*=o,L.positionScreen.x*=p,L.positionScreen.y*=o,B.positionScreen.copy(E.positionScreen),J.positionScreen.copy(L.positionScreen),!0===ea.overdraw&&(Xb(C.positionScreen,E.positionScreen),Xb(E.positionScreen,L.positionScreen),Xb(L.positionScreen,C.positionScreen),Xb(G.positionScreen,B.positionScreen),Xb(G.positionScreen,J.positionScreen)),La.addPoint(C.positionScreen.x,C.positionScreen.y),La.addPoint(E.positionScreen.x,E.positionScreen.y),La.addPoint(G.positionScreen.x,
|
|
|
-G.positionScreen.y),La.addPoint(L.positionScreen.x,L.positionScreen.y),!0===eb.intersects(La)))(oa=C,D=E,yb=G,zb=L,qb=B,rb=J,hc=a,f.info.render.vertices+=4,f.info.render.faces++,b(ea.opacity),c(ea.blending),void 0!==ea.map&&null!==ea.map||void 0!==ea.envMap&&null!==ea.envMap)?(n(oa,D,zb,0,1,3,na,ea,hc),n(qb,yb,rb,1,2,3,na,ea,hc)):(H=oa.positionScreen.x,I=oa.positionScreen.y,O=D.positionScreen.x,N=D.positionScreen.y,M=yb.positionScreen.x,T=yb.positionScreen.y,R=zb.positionScreen.x,P=zb.positionScreen.y,
|
|
|
-S=qb.positionScreen.x,$=qb.positionScreen.y,K=rb.positionScreen.x,ja=rb.positionScreen.y,ea instanceof THREE.MeshLambertMaterial||ea instanceof THREE.MeshPhongMaterial)?(ba.copy(ea.color),ia.copy(ea.emissive),ea.vertexColors===THREE.FaceColors&&(ba.r*=na.color.r,ba.g*=na.color.g,ba.b*=na.color.b),!0===lb)?!1===ea.wireframe&&ea.shading==THREE.SmoothShading&&4==na.vertexNormalsLength?(ha.r=da.r=Y.r=aa.r=Na.r,ha.g=da.g=Y.g=aa.g=Na.g,ha.b=da.b=Y.b=aa.b=Na.b,m(na.v1.positionWorld,na.vertexNormalsWorld[0],
|
|
|
+G.positionScreen.y),La.addPoint(L.positionScreen.x,L.positionScreen.y),!0===eb.intersects(La)))(oa=C,D=E,zb=G,Ab=L,rb=B,sb=J,hc=a,f.info.render.vertices+=4,f.info.render.faces++,b(ea.opacity),c(ea.blending),void 0!==ea.map&&null!==ea.map||void 0!==ea.envMap&&null!==ea.envMap)?(n(oa,D,Ab,0,1,3,na,ea,hc),n(rb,zb,sb,1,2,3,na,ea,hc)):(H=oa.positionScreen.x,I=oa.positionScreen.y,O=D.positionScreen.x,N=D.positionScreen.y,M=zb.positionScreen.x,T=zb.positionScreen.y,R=Ab.positionScreen.x,P=Ab.positionScreen.y,
|
|
|
+S=rb.positionScreen.x,$=rb.positionScreen.y,K=sb.positionScreen.x,ja=sb.positionScreen.y,ea instanceof THREE.MeshLambertMaterial||ea instanceof THREE.MeshPhongMaterial)?(ba.copy(ea.color),ia.copy(ea.emissive),ea.vertexColors===THREE.FaceColors&&(ba.r*=na.color.r,ba.g*=na.color.g,ba.b*=na.color.b),!0===lb)?!1===ea.wireframe&&ea.shading==THREE.SmoothShading&&4==na.vertexNormalsLength?(ha.r=da.r=Y.r=aa.r=Na.r,ha.g=da.g=Y.g=aa.g=Na.g,ha.b=da.b=Y.b=aa.b=Na.b,m(na.v1.positionWorld,na.vertexNormalsWorld[0],
|
|
|
ha),m(na.v2.positionWorld,na.vertexNormalsWorld[1],da),m(na.v4.positionWorld,na.vertexNormalsWorld[3],Y),m(na.v3.positionWorld,na.vertexNormalsWorld[2],aa),ha.r=ha.r*ba.r+ia.r,ha.g=ha.g*ba.g+ia.g,ha.b=ha.b*ba.b+ia.b,da.r=da.r*ba.r+ia.r,da.g=da.g*ba.g+ia.g,da.b=da.b*ba.b+ia.b,Y.r=Y.r*ba.r+ia.r,Y.g=Y.g*ba.g+ia.g,Y.b=Y.b*ba.b+ia.b,aa.r=aa.r*ba.r+ia.r,aa.g=aa.g*ba.g+ia.g,aa.b=aa.b*ba.b+ia.b,va=wc(ha,da,Y,aa),r(H,I,O,N,R,P),ma(H,I,O,N,R,P,0,0,1,0,0,1,va),r(S,$,M,T,K,ja),ma(S,$,M,T,K,ja,1,0,1,1,0,1,va)):
|
|
|
(Q.r=Na.r,Q.g=Na.g,Q.b=Na.b,m(na.centroidWorld,na.normalWorld,Q),Q.r=Q.r*ba.r+ia.r,Q.g=Q.g*ba.g+ia.g,Q.b=Q.b*ba.b+ia.b,t(H,I,O,N,M,T,R,P),!0===ea.wireframe?s(Q,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(Q)):(Q.r=ba.r+ia.r,Q.g=ba.g+ia.g,Q.b=ba.b+ia.b,t(H,I,O,N,M,T,R,P),!0===ea.wireframe?s(Q,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(Q)):ea instanceof THREE.MeshBasicMaterial?(Q.copy(ea.color),ea.vertexColors===THREE.FaceColors&&(Q.r*=na.color.r,Q.g*=na.color.g,
|
|
|
-Q.b*=na.color.b),t(H,I,O,N,M,T,R,P),!0===ea.wireframe?s(Q,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(Q)):ea instanceof THREE.MeshNormalMaterial?(Q.r=gc(na.normalWorld.x),Q.g=gc(na.normalWorld.y),Q.b=gc(na.normalWorld.z),t(H,I,O,N,M,T,R,P),!0===ea.wireframe?s(Q,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(Q)):ea instanceof THREE.MeshDepthMaterial&&(Ca=l.near,Ka=l.far,ha.r=ha.g=ha.b=1-Cb(oa.positionScreen.z,Ca,Ka),da.r=da.g=da.b=1-Cb(D.positionScreen.z,Ca,
|
|
|
-Ka),Y.r=Y.g=Y.b=1-Cb(zb.positionScreen.z,Ca,Ka),aa.r=aa.g=aa.b=1-Cb(yb.positionScreen.z,Ca,Ka),va=wc(ha,da,Y,aa),r(H,I,O,N,R,P),ma(H,I,O,N,R,P,0,0,1,0,0,1,va),r(S,$,M,T,K,ja),ma(S,$,M,T,K,ja,1,0,1,1,0,1,va));xa.addRectangle(La)}q.setTransform(1,0,0,1,0,0)}}};
|
|
|
+Q.b*=na.color.b),t(H,I,O,N,M,T,R,P),!0===ea.wireframe?s(Q,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(Q)):ea instanceof THREE.MeshNormalMaterial?(Q.r=gc(na.normalWorld.x),Q.g=gc(na.normalWorld.y),Q.b=gc(na.normalWorld.z),t(H,I,O,N,M,T,R,P),!0===ea.wireframe?s(Q,ea.wireframeLinewidth,ea.wireframeLinecap,ea.wireframeLinejoin):u(Q)):ea instanceof THREE.MeshDepthMaterial&&(Ca=l.near,Ka=l.far,ha.r=ha.g=ha.b=1-nb(oa.positionScreen.z,Ca,Ka),da.r=da.g=da.b=1-nb(D.positionScreen.z,Ca,
|
|
|
+Ka),Y.r=Y.g=Y.b=1-nb(Ab.positionScreen.z,Ca,Ka),aa.r=aa.g=aa.b=1-nb(zb.positionScreen.z,Ca,Ka),va=wc(ha,da,Y,aa),r(H,I,O,N,R,P),ma(H,I,O,N,R,P,0,0,1,0,0,1,va),r(S,$,M,T,K,ja),ma(S,$,M,T,K,ja,1,0,1,1,0,1,va));xa.addRectangle(La)}q.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#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nuniform bool useRefract;\nuniform float refractionRatio;\n#else\nvarying vec3 vReflect;\n#endif\n#endif",
|
|
|
envmap_fragment:"#ifdef USE_ENVMAP\nvec3 reflectVec;\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\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 if ( combine == 2 ) {\ngl_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 ) && ! defined( USE_NORMALMAP )\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n#ifdef USE_SKINNING\nvec4 worldPosition = modelMatrix * skinned;\n#endif\n#if defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n#endif\n#if ! defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n#endif\n#endif",
|
|
@@ -367,12 +366,12 @@ b.z?b.z-a.z:b.id-a.id}function n(a,b){return b[1]-a[1]}function m(a,b,c){if(a.le
|
|
|
C(k.polygonOffset,k.polygonOffsetFactor,k.polygonOffsetUnits)}K.setMaterialFaces(k);j instanceof THREE.BufferGeometry?K.renderBufferDirect(d,e,f,k,j,i):K.renderBuffer(d,e,f,k,j,i)}}function o(a,b,c,d,e,f,g){for(var h,k,i=0,j=a.length;i<j;i++)if(h=a[i],k=h.object,k.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&K.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);K.setDepthTest(h.depthTest);K.setDepthWrite(h.depthWrite);C(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}K.renderImmediateObject(c,
|
|
|
d,e,h,k)}}function q(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}function t(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function r(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function A(a,b){for(var c=a.length-1;0<=c;c--)a[c].object===b&&a.splice(c,1)}function u(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function s(a,b,c,d,e){wa=0;d.needsUpdate&&(d.program&&K.deallocateMaterial(d),K.initMaterial(d,b,c,e),d.needsUpdate=
|
|
|
!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(K.maxMorphTargets));var f=!1,g=d.program,h=g.uniforms,i=d.uniforms;g!==ha&&(k.useProgram(g),ha=g,f=!0);d.id!==Y&&(Y=d.id,f=!0);if(f||a!==ba)k.uniformMatrix4fv(h.projectionMatrix,!1,a._projectionMatrixArray),a!==ba&&(ba=a);if(d.skinning)if(fc&&e.useVertexTexture){if(null!==h.boneTexture){var j=D();k.uniform1i(h.boneTexture,j);K.setTexture(e.boneTexture,j)}}else null!==h.boneGlobalMatrices&&k.uniformMatrix4fv(h.boneGlobalMatrices,
|
|
|
-!1,e.boneMatrices);if(f){c&&d.fog&&(i.fogColor.value=c.color,c instanceof THREE.Fog?(i.fogNear.value=c.near,i.fogFar.value=c.far):c instanceof THREE.FogExp2&&(i.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(gb){for(var l=0,m=0,n=0,o,p,q,r=pb,t=r.directional.colors,s=r.directional.positions,u=r.point.colors,z=r.point.positions,A=r.point.distances,B=r.spot.colors,C=r.spot.positions,E=r.spot.distances,G=r.spot.directions,Q=
|
|
|
+!1,e.boneMatrices);if(f){c&&d.fog&&(i.fogColor.value=c.color,c instanceof THREE.Fog?(i.fogNear.value=c.near,i.fogFar.value=c.far):c instanceof THREE.FogExp2&&(i.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(gb){for(var l=0,m=0,n=0,o,p,q,r=qb,t=r.directional.colors,s=r.directional.positions,u=r.point.colors,z=r.point.positions,A=r.point.distances,B=r.spot.colors,C=r.spot.positions,E=r.spot.distances,G=r.spot.directions,Q=
|
|
|
r.spot.anglesCos,J=r.spot.exponents,P=r.hemi.skyColors,N=r.hemi.groundColors,S=r.hemi.positions,M=0,R=0,O=0,da=0,ia=0,$=0,aa=0,ca=0,T=p=0,c=T=T=0,f=b.length;c<f;c++)j=b[c],j.onlyShadow||(o=j.color,q=j.intensity,p=j.distance,j instanceof THREE.AmbientLight?j.visible&&(K.gammaInput?(l+=o.r*o.r,m+=o.g*o.g,n+=o.b*o.b):(l+=o.r,m+=o.g,n+=o.b)):j instanceof THREE.DirectionalLight?(ia+=1,j.visible&&(p=3*M,K.gammaInput?w(t,p,o,q*q):v(t,p,o,q),ta.copy(j.matrixWorld.getPosition()),ta.subSelf(j.target.matrixWorld.getPosition()),
|
|
|
ta.normalize(),s[p]=ta.x,s[p+1]=ta.y,s[p+2]=ta.z,M+=1)):j instanceof THREE.PointLight?($+=1,j.visible&&(T=3*R,K.gammaInput?w(u,T,o,q*q):v(u,T,o,q),q=j.matrixWorld.getPosition(),z[T]=q.x,z[T+1]=q.y,z[T+2]=q.z,A[R]=p,R+=1)):j instanceof THREE.SpotLight?(aa+=1,j.visible&&(T=3*O,K.gammaInput?w(B,T,o,q*q):v(B,T,o,q),q=j.matrixWorld.getPosition(),C[T]=q.x,C[T+1]=q.y,C[T+2]=q.z,E[O]=p,ta.copy(q),ta.subSelf(j.target.matrixWorld.getPosition()),ta.normalize(),G[T]=ta.x,G[T+1]=ta.y,G[T+2]=ta.z,Q[O]=Math.cos(j.angle),
|
|
|
J[O]=j.exponent,O+=1)):j instanceof THREE.HemisphereLight&&(ca+=1,j.visible&&(o=j.color,p=j.groundColor,T=3*da,K.gammaInput?(q*=q,w(P,T,o,q),w(N,T,p,q)):(v(P,T,o,q),v(N,T,p,q)),ta.copy(j.matrixWorld.getPosition()),ta.normalize(),S[T]=ta.x,S[T+1]=ta.y,S[T+2]=ta.z,da+=1)));c=3*M;for(f=Math.max(t.length,3*ia);c<f;c++)t[c]=0;c=3*M;for(f=Math.max(s.length,3*ia);c<f;c++)s[c]=0;c=3*R;for(f=Math.max(u.length,3*$);c<f;c++)u[c]=0;c=3*R;for(f=Math.max(z.length,3*$);c<f;c++)z[c]=0;c=R;for(f=Math.max(A.length,
|
|
|
$);c<f;c++)A[c]=0;c=3*O;for(f=Math.max(B.length,3*aa);c<f;c++)B[c]=0;c=3*O;for(f=Math.max(C.length,3*aa);c<f;c++)C[c]=0;c=3*O;for(f=Math.max(G.length,3*aa);c<f;c++)G[c]=0;c=O;for(f=Math.max(Q.length,aa);c<f;c++)Q[c]=0;c=O;for(f=Math.max(J.length,aa);c<f;c++)J[c]=0;c=O;for(f=Math.max(E.length,aa);c<f;c++)E[c]=0;c=3*da;for(f=Math.max(P.length,3*ca);c<f;c++)P[c]=0;c=3*da;for(f=Math.max(N.length,3*ca);c<f;c++)N[c]=0;c=3*da;for(f=Math.max(S.length,3*ca);c<f;c++)S[c]=0;r.directional.length=M;r.point.length=
|
|
|
-R;r.spot.length=O;r.hemi.length=da;r.ambient[0]=l;r.ambient[1]=m;r.ambient[2]=n;gb=!1}c=pb;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=
|
|
|
+R;r.spot.length=O;r.hemi.length=da;r.ambient[0]=l;r.ambient[1]=m;r.ambient[2]=n;gb=!1}c=qb;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.spotLightAngleCos.value=c.spot.anglesCos;i.spotLightExponent.value=c.spot.exponents;i.hemisphereLightSkyColor.value=c.hemi.skyColors;i.hemisphereLightGroundColor.value=c.hemi.groundColors;i.hemisphereLightDirection.value=c.hemi.positions}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){i.opacity.value=d.opacity;K.gammaInput?i.diffuse.value.copyGammaToLinear(d.color):i.diffuse.value=d.color;i.map.value=d.map;
|
|
|
i.lightMap.value=d.lightMap;i.specularMap.value=d.specularMap;d.bumpMap&&(i.bumpMap.value=d.bumpMap,i.bumpScale.value=d.bumpScale);d.normalMap&&(i.normalMap.value=d.normalMap,i.normalScale.value.copy(d.normalScale));var ja;d.map?ja=d.map:d.specularMap?ja=d.specularMap:d.normalMap?ja=d.normalMap:d.bumpMap&&(ja=d.bumpMap);void 0!==ja&&(c=ja.offset,ja=ja.repeat,i.offsetRepeat.value.set(c.x,c.y,ja.x,ja.y));i.envMap.value=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}d instanceof THREE.LineBasicMaterial?(i.diffuse.value=d.color,i.opacity.value=d.opacity):d instanceof THREE.LineDashedMaterial?(i.diffuse.value=d.color,i.opacity.value=d.opacity,i.dashSize.value=d.dashSize,i.totalSize.value=d.dashSize+d.gapSize,i.scale.value=d.scale):d instanceof THREE.ParticleBasicMaterial?(i.psColor.value=
|
|
@@ -386,21 +385,21 @@ j=[];for(l=0;6>l;l++)K.autoScaleCubemaps&&!f?(m=j,n=l,r=c.image[l],s=Oc,r.width<
|
|
|
s[u],k.compressedTexImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+l,u,n,t.width,t.height,0,t.data)}else k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,n,n,r,j[l]);c.generateMipmaps&&m&&k.generateMipmap(k.TEXTURE_CUBE_MAP);c.needsUpdate=!1;if(c.onUpdate)c.onUpdate()}else k.activeTexture(k.TEXTURE0+f),k.bindTexture(k.TEXTURE_CUBE_MAP,c.image.__webglTextureCube)}else n instanceof THREE.WebGLRenderTargetCube?(c=n,k.activeTexture(k.TEXTURE0+j),k.bindTexture(k.TEXTURE_CUBE_MAP,c.__webglTexture)):K.setTexture(n,
|
|
|
j)}else if("tv"===l){void 0===c._array&&(c._array=[]);l=0;for(m=c.value.length;l<m;l++)c._array[l]=D();k.uniform1iv(f,c._array);l=0;for(m=c.value.length;l<m;l++)n=c.value[l],j=c._array[l],n&&K.setTexture(n,j)}if((d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==h.cameraPosition)b=a.matrixWorld.getPosition(),k.uniform3f(h.cameraPosition,b.x,b.y,b.z);(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||
|
|
|
d.skinning)&&null!==h.viewMatrix&&k.uniformMatrix4fv(h.viewMatrix,!1,a._viewMatrixArray)}k.uniformMatrix4fv(h.modelViewMatrix,!1,e._modelViewMatrix.elements);h.normalMatrix&&k.uniformMatrix3fv(h.normalMatrix,!1,e._normalMatrix.elements);null!==h.modelMatrix&&k.uniformMatrix4fv(h.modelMatrix,!1,e.matrixWorld.elements);return g}function D(){var a=wa;a>=vc&&console.warn("Trying to use "+a+" texture units while this GPU supports only "+vc);wa+=1;return a}function z(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,
|
|
|
-a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function w(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function v(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function C(a,b,c){kb!==a&&(a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL),kb=a);if(a&&(Ab!==b||Bb!==c))k.polygonOffset(b,c),Ab=b,Bb=c}function E(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 G(a,b){var c;"fragment"===
|
|
|
+a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function w(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function v(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function C(a,b,c){kb!==a&&(a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL),kb=a);if(a&&(Bb!==b||Cb!==c))k.polygonOffset(b,c),Bb=b,Cb=c}function E(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 G(a,b){var c;"fragment"===
|
|
|
a?c=k.createShader(k.FRAGMENT_SHADER):"vertex"===a&&(c=k.createShader(k.VERTEX_SHADER));k.shaderSource(c,b);k.compileShader(c);return!k.getShaderParameter(c,k.COMPILE_STATUS)?(console.error(k.getShaderInfoLog(c)),console.error(E(b)),null):c}function L(a,b,c){c?(k.texParameteri(a,k.TEXTURE_WRAP_S,H(b.wrapS)),k.texParameteri(a,k.TEXTURE_WRAP_T,H(b.wrapT)),k.texParameteri(a,k.TEXTURE_MAG_FILTER,H(b.magFilter)),k.texParameteri(a,k.TEXTURE_MIN_FILTER,H(b.minFilter))):(k.texParameteri(a,k.TEXTURE_WRAP_S,
|
|
|
-k.CLAMP_TO_EDGE),k.texParameteri(a,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE),k.texParameteri(a,k.TEXTURE_MAG_FILTER,J(b.magFilter)),k.texParameteri(a,k.TEXTURE_MIN_FILTER,J(b.minFilter)));if(xb&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy))k.texParameterf(a,xb.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,mc)),b.__oldAnisotropy=b.anisotropy}function B(a,b){k.bindRenderbuffer(k.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_COMPONENT16,b.width,
|
|
|
+k.CLAMP_TO_EDGE),k.texParameteri(a,k.TEXTURE_WRAP_T,k.CLAMP_TO_EDGE),k.texParameteri(a,k.TEXTURE_MAG_FILTER,J(b.magFilter)),k.texParameteri(a,k.TEXTURE_MIN_FILTER,J(b.minFilter)));if(yb&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy))k.texParameterf(a,yb.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,mc)),b.__oldAnisotropy=b.anisotropy}function B(a,b){k.bindRenderbuffer(k.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_COMPONENT16,b.width,
|
|
|
b.height),k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_ATTACHMENT,k.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(k.renderbufferStorage(k.RENDERBUFFER,k.DEPTH_STENCIL,b.width,b.height),k.framebufferRenderbuffer(k.FRAMEBUFFER,k.DEPTH_STENCIL_ATTACHMENT,k.RENDERBUFFER,a)):k.renderbufferStorage(k.RENDERBUFFER,k.RGBA4,b.width,b.height)}function J(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?k.NEAREST:k.LINEAR}function H(a){if(a===THREE.RepeatWrapping)return k.REPEAT;
|
|
|
if(a===THREE.ClampToEdgeWrapping)return k.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return k.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return k.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return k.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return k.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return k.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return k.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return k.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return k.UNSIGNED_BYTE;
|
|
|
if(a===THREE.UnsignedShort4444Type)return k.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return k.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return k.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return k.BYTE;if(a===THREE.ShortType)return k.SHORT;if(a===THREE.UnsignedShortType)return k.UNSIGNED_SHORT;if(a===THREE.IntType)return k.INT;if(a===THREE.UnsignedIntType)return k.UNSIGNED_INT;if(a===THREE.FloatType)return k.FLOAT;if(a===THREE.AlphaFormat)return k.ALPHA;if(a===THREE.RGBFormat)return k.RGB;
|
|
|
if(a===THREE.RGBAFormat)return k.RGBA;if(a===THREE.LuminanceFormat)return k.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return k.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return k.FUNC_ADD;if(a===THREE.SubtractEquation)return k.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return k.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return k.ZERO;if(a===THREE.OneFactor)return k.ONE;if(a===THREE.SrcColorFactor)return k.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return k.ONE_MINUS_SRC_COLOR;if(a===
|
|
|
-THREE.SrcAlphaFactor)return k.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return k.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return k.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return k.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return k.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return k.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return k.SRC_ALPHA_SATURATE;if(void 0!==ob){if(a===THREE.RGB_S3TC_DXT1_Format)return ob.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return ob.COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
|
-if(a===THREE.RGBA_S3TC_DXT3_Format)return ob.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return ob.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},I=void 0!==a.canvas?a.canvas:document.createElement("canvas"),O=void 0!==a.precision?a.precision:"highp",N=void 0!==a.alpha?a.alpha:!0,M=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,T=void 0!==a.antialias?a.antialias:!1,R=void 0!==a.stencil?a.stencil:!0,P=void 0!==a.preserveDrawingBuffer?
|
|
|
+THREE.SrcAlphaFactor)return k.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return k.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return k.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return k.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return k.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return k.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return k.SRC_ALPHA_SATURATE;if(void 0!==pb){if(a===THREE.RGB_S3TC_DXT1_Format)return pb.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return pb.COMPRESSED_RGBA_S3TC_DXT1_EXT;
|
|
|
+if(a===THREE.RGBA_S3TC_DXT3_Format)return pb.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return pb.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},I=void 0!==a.canvas?a.canvas:document.createElement("canvas"),O=void 0!==a.precision?a.precision:"highp",N=void 0!==a.alpha?a.alpha:!0,M=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,T=void 0!==a.antialias?a.antialias:!1,R=void 0!==a.stencil?a.stencil:!0,P=void 0!==a.preserveDrawingBuffer?
|
|
|
a.preserveDrawingBuffer:!1,S=void 0!==a.clearColor?new THREE.Color(a.clearColor):new THREE.Color(0),$=void 0!==a.clearAlpha?a.clearAlpha:0;this.domElement=I;this.context=null;this.autoUpdateScene=this.autoUpdateObjects=this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.physicallyBasedShading=this.gammaOutput=this.gammaInput=!1;this.shadowMapCullFrontFaces=this.shadowMapSoft=this.shadowMapAutoUpdate=!0;this.shadowMapCascade=this.shadowMapDebug=
|
|
|
-!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var K=this,ja=[],Q=0,ha=null,da=null,Y=-1,aa=null,ba=null,ia=0,wa=0,ua=-1,Ca=-1,Ka=-1,va=-1,cb=-1,wb=-1,Ua=-1,fb=-1,kb=null,Ab=null,Bb=null,eb=null,xa=0,La=0,lb=0,Na=0,Za=0,db=0,ka=new THREE.Frustum,$a=new THREE.Matrix4,ab=new THREE.Matrix4,mb=new THREE.Vector4,ta=new THREE.Vector3,
|
|
|
-gb=!0,pb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},k,xb,ob;try{if(!(k=I.getContext("experimental-webgl",{alpha:N,premultipliedAlpha:M,antialias:T,stencil:R,preserveDrawingBuffer:P})))throw"Error creating WebGL context.";}catch(Nc){console.error(Nc)}a=k.getExtension("OES_texture_float");
|
|
|
-N=k.getExtension("OES_standard_derivatives");xb=k.getExtension("EXT_texture_filter_anisotropic")||k.getExtension("MOZ_EXT_texture_filter_anisotropic")||k.getExtension("WEBKIT_EXT_texture_filter_anisotropic");ob=k.getExtension("WEBGL_compressed_texture_s3tc")||k.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||k.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");a||console.log("THREE.WebGLRenderer: Float textures not supported.");N||console.log("THREE.WebGLRenderer: Standard derivatives not supported.");
|
|
|
-xb||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");ob||console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");k.clearColor(0,0,0,1);k.clearDepth(1);k.clearStencil(0);k.enable(k.DEPTH_TEST);k.depthFunc(k.LEQUAL);k.frontFace(k.CCW);k.cullFace(k.BACK);k.enable(k.CULL_FACE);k.enable(k.BLEND);k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA);k.clearColor(S.r,S.g,S.b,$);this.context=k;var vc=k.getParameter(k.MAX_TEXTURE_IMAGE_UNITS),
|
|
|
-N=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);var Oc=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),mc=xb?k.getParameter(xb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,ec=0<N,fc=ec&&a;ob&&k.getParameter(k.COMPRESSED_TEXTURE_FORMATS);this.getContext=function(){return k};this.supportsVertexTextures=function(){return ec};this.getMaxAnisotropy=function(){return mc};this.setSize=function(a,b){I.width=a;I.height=b;this.setViewport(0,0,I.width,I.height)};this.setViewport=function(a,
|
|
|
+!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var K=this,ja=[],Q=0,ha=null,da=null,Y=-1,aa=null,ba=null,ia=0,wa=0,ua=-1,Ca=-1,Ka=-1,va=-1,cb=-1,xb=-1,Ua=-1,fb=-1,kb=null,Bb=null,Cb=null,eb=null,xa=0,La=0,lb=0,Na=0,Za=0,db=0,ka=new THREE.Frustum,$a=new THREE.Matrix4,ab=new THREE.Matrix4,mb=new THREE.Vector4,ta=new THREE.Vector3,
|
|
|
+gb=!0,qb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},k,yb,pb;try{if(!(k=I.getContext("experimental-webgl",{alpha:N,premultipliedAlpha:M,antialias:T,stencil:R,preserveDrawingBuffer:P})))throw"Error creating WebGL context.";}catch(Nc){console.error(Nc)}a=k.getExtension("OES_texture_float");
|
|
|
+N=k.getExtension("OES_standard_derivatives");yb=k.getExtension("EXT_texture_filter_anisotropic")||k.getExtension("MOZ_EXT_texture_filter_anisotropic")||k.getExtension("WEBKIT_EXT_texture_filter_anisotropic");pb=k.getExtension("WEBGL_compressed_texture_s3tc")||k.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||k.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");a||console.log("THREE.WebGLRenderer: Float textures not supported.");N||console.log("THREE.WebGLRenderer: Standard derivatives not supported.");
|
|
|
+yb||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");pb||console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");k.clearColor(0,0,0,1);k.clearDepth(1);k.clearStencil(0);k.enable(k.DEPTH_TEST);k.depthFunc(k.LEQUAL);k.frontFace(k.CCW);k.cullFace(k.BACK);k.enable(k.CULL_FACE);k.enable(k.BLEND);k.blendEquation(k.FUNC_ADD);k.blendFunc(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA);k.clearColor(S.r,S.g,S.b,$);this.context=k;var vc=k.getParameter(k.MAX_TEXTURE_IMAGE_UNITS),
|
|
|
+N=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);var Oc=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),mc=yb?k.getParameter(yb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,ec=0<N,fc=ec&&a;pb&&k.getParameter(k.COMPRESSED_TEXTURE_FORMATS);this.getContext=function(){return k};this.supportsVertexTextures=function(){return ec};this.getMaxAnisotropy=function(){return mc};this.setSize=function(a,b){I.width=a;I.height=b;this.setViewport(0,0,I.width,I.height)};this.setViewport=function(a,
|
|
|
b,c,d){xa=void 0!==a?a:0;La=void 0!==b?b:0;lb=void 0!==c?c:I.width;Na=void 0!==d?d:I.height;k.viewport(xa,La,lb,Na)};this.setScissor=function(a,b,c,d){k.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};this.setClearColorHex=function(a,b){S.setHex(a);$=b;k.clearColor(S.r,S.g,S.b,$)};this.setClearColor=function(a,b){S.copy(a);$=b;k.clearColor(S.r,S.g,S.b,$)};this.getClearColor=function(){return S};this.getClearAlpha=function(){return $};this.clear=
|
|
|
function(a,b,c){var d=0;if(void 0===a||a)d|=k.COLOR_BUFFER_BIT;if(void 0===b||b)d|=k.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=k.STENCIL_BUFFER_BIT;k.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.deallocateObject=function(a){if(a.__webglInit)if(a.__webglInit=!1,delete a._modelViewMatrix,delete a._normalMatrix,
|
|
|
delete a._normalMatrixArray,delete a._modelViewMatrixArray,delete a._modelMatrixArray,a instanceof THREE.Mesh)for(var c in a.geometry.geometryGroups){var d=a.geometry.geometryGroups[c];k.deleteBuffer(d.__webglVertexBuffer);k.deleteBuffer(d.__webglNormalBuffer);k.deleteBuffer(d.__webglTangentBuffer);k.deleteBuffer(d.__webglColorBuffer);k.deleteBuffer(d.__webglUVBuffer);k.deleteBuffer(d.__webglUV2Buffer);k.deleteBuffer(d.__webglSkinIndicesBuffer);k.deleteBuffer(d.__webglSkinWeightsBuffer);k.deleteBuffer(d.__webglFaceBuffer);
|
|
@@ -439,23 +438,23 @@ THREE.ParticleSystem&&(n=b.geometry,!n.__webglVertexBuffer))if(n instanceof THRE
|
|
|
b.geometry,n instanceof THREE.BufferGeometry)q(l.__webglObjects,n,b);else for(m in n.geometryGroups)o=n.geometryGroups[m],q(l.__webglObjects,o,b);else b instanceof THREE.Ribbon||b instanceof THREE.Line||b instanceof THREE.ParticleSystem?(n=b.geometry,q(l.__webglObjects,n,b)):b instanceof THREE.ImmediateRenderObject||b.immediateRenderCallback?l.__webglObjectsImmediate.push({object:b,opaque:null,transparent:null}):b instanceof THREE.Sprite?l.__webglSprites.push(b):b instanceof THREE.LensFlare&&l.__webglFlares.push(b);
|
|
|
b.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var aa=a.__objectsRemoved[0],ja=a;aa instanceof THREE.Mesh||aa instanceof THREE.ParticleSystem||aa instanceof THREE.Ribbon||aa instanceof THREE.Line?A(ja.__webglObjects,aa):aa instanceof THREE.Sprite?u(ja.__webglSprites,aa):aa instanceof THREE.LensFlare?u(ja.__webglFlares,aa):(aa instanceof THREE.ImmediateRenderObject||aa.immediateRenderCallback)&&A(ja.__webglObjectsImmediate,aa);aa.__webglActive=!1;a.__objectsRemoved.splice(0,
|
|
|
1)}for(var wa=0,va=a.__webglObjects.length;wa<va;wa++){var ua=a.__webglObjects[wa].object,ca=ua.geometry,ta=void 0,Ca=void 0,ka=void 0;if(ua instanceof THREE.Mesh)if(ca instanceof THREE.BufferGeometry)(ca.verticesNeedUpdate||ca.elementsNeedUpdate||ca.uvsNeedUpdate||ca.normalsNeedUpdate||ca.colorsNeedUpdate||ca.tangentsNeedUpdate)&&j(ca,k.DYNAMIC_DRAW,!ca.dynamic),ca.verticesNeedUpdate=!1,ca.elementsNeedUpdate=!1,ca.uvsNeedUpdate=!1,ca.normalsNeedUpdate=!1,ca.colorsNeedUpdate=!1,ca.tangentsNeedUpdate=
|
|
|
-!1;else{for(var Ka=0,La=ca.geometryGroupsList.length;Ka<La;Ka++)if(ta=ca.geometryGroupsList[Ka],ka=e(ua,ta),ca.buffersNeedUpdate&&d(ta,ua),Ca=ka.attributes&&t(ka),ca.verticesNeedUpdate||ca.morphTargetsNeedUpdate||ca.elementsNeedUpdate||ca.uvsNeedUpdate||ca.normalsNeedUpdate||ca.colorsNeedUpdate||ca.tangentsNeedUpdate||Ca){var qa=ta,Na=ua,xa=k.DYNAMIC_DRAW,cb=!ca.dynamic,Ua=ka;if(qa.__inittedArrays){var eb=f(Ua),gb=Ua.vertexColors?Ua.vertexColors:!1,wb=g(Ua),fb=eb===THREE.SmoothShading,F=void 0,Z=
|
|
|
-void 0,Za=void 0,U=void 0,db=void 0,$a=void 0,Db=void 0,mb=void 0,ab=void 0,kb=void 0,lb=void 0,V=void 0,W=void 0,X=void 0,pa=void 0,Eb=void 0,Fb=void 0,Gb=void 0,ob=void 0,Hb=void 0,Ib=void 0,Jb=void 0,pb=void 0,Kb=void 0,Lb=void 0,Mb=void 0,xb=void 0,Nb=void 0,Ob=void 0,Pb=void 0,Ab=void 0,Qb=void 0,Rb=void 0,Sb=void 0,Bb=void 0,ya=void 0,ec=void 0,Zb=void 0,ic=void 0,jc=void 0,Ra=void 0,fc=void 0,Pa=void 0,Qa=void 0,$b=void 0,Ub=void 0,Ja=0,Oa=0,Vb=0,Wb=0,sb=0,Xa=0,Ba=0,bb=0,Ma=0,ga=0,la=0,y=0,
|
|
|
-za=void 0,Sa=qa.__vertexArray,nc=qa.__uvArray,oc=qa.__uv2Array,tb=qa.__normalArray,Fa=qa.__tangentArray,Ta=qa.__colorArray,Ga=qa.__skinIndexArray,Ha=qa.__skinWeightArray,Qc=qa.__morphTargetsArrays,Rc=qa.__morphNormalsArrays,Sc=qa.__webglCustomAttributesList,x=void 0,Tb=qa.__faceArray,nb=qa.__lineArray,hb=Na.geometry,vc=hb.elementsNeedUpdate,mc=hb.uvsNeedUpdate,Nc=hb.normalsNeedUpdate,Oc=hb.tangentsNeedUpdate,fd=hb.colorsNeedUpdate,gd=hb.morphTargetsNeedUpdate,cc=hb.vertices,ra=qa.faces3,sa=qa.faces4,
|
|
|
+!1;else{for(var Ka=0,La=ca.geometryGroupsList.length;Ka<La;Ka++)if(ta=ca.geometryGroupsList[Ka],ka=e(ua,ta),ca.buffersNeedUpdate&&d(ta,ua),Ca=ka.attributes&&t(ka),ca.verticesNeedUpdate||ca.morphTargetsNeedUpdate||ca.elementsNeedUpdate||ca.uvsNeedUpdate||ca.normalsNeedUpdate||ca.colorsNeedUpdate||ca.tangentsNeedUpdate||Ca){var qa=ta,Na=ua,xa=k.DYNAMIC_DRAW,cb=!ca.dynamic,Ua=ka;if(qa.__inittedArrays){var eb=f(Ua),gb=Ua.vertexColors?Ua.vertexColors:!1,xb=g(Ua),fb=eb===THREE.SmoothShading,F=void 0,Z=
|
|
|
+void 0,Za=void 0,U=void 0,db=void 0,$a=void 0,Db=void 0,mb=void 0,ab=void 0,kb=void 0,lb=void 0,V=void 0,W=void 0,X=void 0,pa=void 0,Eb=void 0,Fb=void 0,Gb=void 0,pb=void 0,Hb=void 0,Ib=void 0,Jb=void 0,qb=void 0,Kb=void 0,Lb=void 0,Mb=void 0,yb=void 0,Nb=void 0,Ob=void 0,Pb=void 0,Bb=void 0,Qb=void 0,Rb=void 0,Sb=void 0,Cb=void 0,ya=void 0,ec=void 0,Zb=void 0,ic=void 0,jc=void 0,Ra=void 0,fc=void 0,Pa=void 0,Qa=void 0,$b=void 0,Ub=void 0,Ja=0,Oa=0,Vb=0,Wb=0,tb=0,Xa=0,Ba=0,bb=0,Ma=0,ga=0,la=0,y=0,
|
|
|
+za=void 0,Sa=qa.__vertexArray,nc=qa.__uvArray,oc=qa.__uv2Array,ub=qa.__normalArray,Fa=qa.__tangentArray,Ta=qa.__colorArray,Ga=qa.__skinIndexArray,Ha=qa.__skinWeightArray,Qc=qa.__morphTargetsArrays,Rc=qa.__morphNormalsArrays,Sc=qa.__webglCustomAttributesList,x=void 0,Tb=qa.__faceArray,ob=qa.__lineArray,hb=Na.geometry,vc=hb.elementsNeedUpdate,mc=hb.uvsNeedUpdate,Nc=hb.normalsNeedUpdate,Oc=hb.tangentsNeedUpdate,fd=hb.colorsNeedUpdate,gd=hb.morphTargetsNeedUpdate,cc=hb.vertices,ra=qa.faces3,sa=qa.faces4,
|
|
|
Ya=hb.faces,Tc=hb.faceVertexUvs[0],Uc=hb.faceVertexUvs[1],dc=hb.skinIndices,ac=hb.skinWeights,bc=hb.morphTargets,yc=hb.morphNormals;if(hb.verticesNeedUpdate){F=0;for(Z=ra.length;F<Z;F++)U=Ya[ra[F]],V=cc[U.a],W=cc[U.b],X=cc[U.c],Sa[Oa]=V.x,Sa[Oa+1]=V.y,Sa[Oa+2]=V.z,Sa[Oa+3]=W.x,Sa[Oa+4]=W.y,Sa[Oa+5]=W.z,Sa[Oa+6]=X.x,Sa[Oa+7]=X.y,Sa[Oa+8]=X.z,Oa+=9;F=0;for(Z=sa.length;F<Z;F++)U=Ya[sa[F]],V=cc[U.a],W=cc[U.b],X=cc[U.c],pa=cc[U.d],Sa[Oa]=V.x,Sa[Oa+1]=V.y,Sa[Oa+2]=V.z,Sa[Oa+3]=W.x,Sa[Oa+4]=W.y,Sa[Oa+5]=
|
|
|
W.z,Sa[Oa+6]=X.x,Sa[Oa+7]=X.y,Sa[Oa+8]=X.z,Sa[Oa+9]=pa.x,Sa[Oa+10]=pa.y,Sa[Oa+11]=pa.z,Oa+=12;k.bindBuffer(k.ARRAY_BUFFER,qa.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Sa,xa)}if(gd){Ra=0;for(fc=bc.length;Ra<fc;Ra++){F=la=0;for(Z=ra.length;F<Z;F++)$b=ra[F],U=Ya[$b],V=bc[Ra].vertices[U.a],W=bc[Ra].vertices[U.b],X=bc[Ra].vertices[U.c],Pa=Qc[Ra],Pa[la]=V.x,Pa[la+1]=V.y,Pa[la+2]=V.z,Pa[la+3]=W.x,Pa[la+4]=W.y,Pa[la+5]=W.z,Pa[la+6]=X.x,Pa[la+7]=X.y,Pa[la+8]=X.z,Ua.morphNormals&&(fb?(Ub=yc[Ra].vertexNormals[$b],
|
|
|
Hb=Ub.a,Ib=Ub.b,Jb=Ub.c):Jb=Ib=Hb=yc[Ra].faceNormals[$b],Qa=Rc[Ra],Qa[la]=Hb.x,Qa[la+1]=Hb.y,Qa[la+2]=Hb.z,Qa[la+3]=Ib.x,Qa[la+4]=Ib.y,Qa[la+5]=Ib.z,Qa[la+6]=Jb.x,Qa[la+7]=Jb.y,Qa[la+8]=Jb.z),la+=9;F=0;for(Z=sa.length;F<Z;F++)$b=sa[F],U=Ya[$b],V=bc[Ra].vertices[U.a],W=bc[Ra].vertices[U.b],X=bc[Ra].vertices[U.c],pa=bc[Ra].vertices[U.d],Pa=Qc[Ra],Pa[la]=V.x,Pa[la+1]=V.y,Pa[la+2]=V.z,Pa[la+3]=W.x,Pa[la+4]=W.y,Pa[la+5]=W.z,Pa[la+6]=X.x,Pa[la+7]=X.y,Pa[la+8]=X.z,Pa[la+9]=pa.x,Pa[la+10]=pa.y,Pa[la+11]=
|
|
|
-pa.z,Ua.morphNormals&&(fb?(Ub=yc[Ra].vertexNormals[$b],Hb=Ub.a,Ib=Ub.b,Jb=Ub.c,pb=Ub.d):pb=Jb=Ib=Hb=yc[Ra].faceNormals[$b],Qa=Rc[Ra],Qa[la]=Hb.x,Qa[la+1]=Hb.y,Qa[la+2]=Hb.z,Qa[la+3]=Ib.x,Qa[la+4]=Ib.y,Qa[la+5]=Ib.z,Qa[la+6]=Jb.x,Qa[la+7]=Jb.y,Qa[la+8]=Jb.z,Qa[la+9]=pb.x,Qa[la+10]=pb.y,Qa[la+11]=pb.z),la+=12;k.bindBuffer(k.ARRAY_BUFFER,qa.__webglMorphTargetsBuffers[Ra]);k.bufferData(k.ARRAY_BUFFER,Qc[Ra],xa);Ua.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,qa.__webglMorphNormalsBuffers[Ra]),k.bufferData(k.ARRAY_BUFFER,
|
|
|
+pa.z,Ua.morphNormals&&(fb?(Ub=yc[Ra].vertexNormals[$b],Hb=Ub.a,Ib=Ub.b,Jb=Ub.c,qb=Ub.d):qb=Jb=Ib=Hb=yc[Ra].faceNormals[$b],Qa=Rc[Ra],Qa[la]=Hb.x,Qa[la+1]=Hb.y,Qa[la+2]=Hb.z,Qa[la+3]=Ib.x,Qa[la+4]=Ib.y,Qa[la+5]=Ib.z,Qa[la+6]=Jb.x,Qa[la+7]=Jb.y,Qa[la+8]=Jb.z,Qa[la+9]=qb.x,Qa[la+10]=qb.y,Qa[la+11]=qb.z),la+=12;k.bindBuffer(k.ARRAY_BUFFER,qa.__webglMorphTargetsBuffers[Ra]);k.bufferData(k.ARRAY_BUFFER,Qc[Ra],xa);Ua.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,qa.__webglMorphNormalsBuffers[Ra]),k.bufferData(k.ARRAY_BUFFER,
|
|
|
Rc[Ra],xa))}}if(ac.length){F=0;for(Z=ra.length;F<Z;F++)U=Ya[ra[F]],Nb=ac[U.a],Ob=ac[U.b],Pb=ac[U.c],Ha[ga]=Nb.x,Ha[ga+1]=Nb.y,Ha[ga+2]=Nb.z,Ha[ga+3]=Nb.w,Ha[ga+4]=Ob.x,Ha[ga+5]=Ob.y,Ha[ga+6]=Ob.z,Ha[ga+7]=Ob.w,Ha[ga+8]=Pb.x,Ha[ga+9]=Pb.y,Ha[ga+10]=Pb.z,Ha[ga+11]=Pb.w,Qb=dc[U.a],Rb=dc[U.b],Sb=dc[U.c],Ga[ga]=Qb.x,Ga[ga+1]=Qb.y,Ga[ga+2]=Qb.z,Ga[ga+3]=Qb.w,Ga[ga+4]=Rb.x,Ga[ga+5]=Rb.y,Ga[ga+6]=Rb.z,Ga[ga+7]=Rb.w,Ga[ga+8]=Sb.x,Ga[ga+9]=Sb.y,Ga[ga+10]=Sb.z,Ga[ga+11]=Sb.w,ga+=12;F=0;for(Z=sa.length;F<Z;F++)U=
|
|
|
-Ya[sa[F]],Nb=ac[U.a],Ob=ac[U.b],Pb=ac[U.c],Ab=ac[U.d],Ha[ga]=Nb.x,Ha[ga+1]=Nb.y,Ha[ga+2]=Nb.z,Ha[ga+3]=Nb.w,Ha[ga+4]=Ob.x,Ha[ga+5]=Ob.y,Ha[ga+6]=Ob.z,Ha[ga+7]=Ob.w,Ha[ga+8]=Pb.x,Ha[ga+9]=Pb.y,Ha[ga+10]=Pb.z,Ha[ga+11]=Pb.w,Ha[ga+12]=Ab.x,Ha[ga+13]=Ab.y,Ha[ga+14]=Ab.z,Ha[ga+15]=Ab.w,Qb=dc[U.a],Rb=dc[U.b],Sb=dc[U.c],Bb=dc[U.d],Ga[ga]=Qb.x,Ga[ga+1]=Qb.y,Ga[ga+2]=Qb.z,Ga[ga+3]=Qb.w,Ga[ga+4]=Rb.x,Ga[ga+5]=Rb.y,Ga[ga+6]=Rb.z,Ga[ga+7]=Rb.w,Ga[ga+8]=Sb.x,Ga[ga+9]=Sb.y,Ga[ga+10]=Sb.z,Ga[ga+11]=Sb.w,Ga[ga+12]=
|
|
|
-Bb.x,Ga[ga+13]=Bb.y,Ga[ga+14]=Bb.z,Ga[ga+15]=Bb.w,ga+=16;0<ga&&(k.bindBuffer(k.ARRAY_BUFFER,qa.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,Ga,xa),k.bindBuffer(k.ARRAY_BUFFER,qa.__webglSkinWeightsBuffer),k.bufferData(k.ARRAY_BUFFER,Ha,xa))}if(fd&&gb){F=0;for(Z=ra.length;F<Z;F++)U=Ya[ra[F]],Db=U.vertexColors,mb=U.color,3===Db.length&&gb===THREE.VertexColors?(Kb=Db[0],Lb=Db[1],Mb=Db[2]):Mb=Lb=Kb=mb,Ta[Ma]=Kb.r,Ta[Ma+1]=Kb.g,Ta[Ma+2]=Kb.b,Ta[Ma+3]=Lb.r,Ta[Ma+4]=Lb.g,Ta[Ma+5]=Lb.b,Ta[Ma+6]=Mb.r,
|
|
|
-Ta[Ma+7]=Mb.g,Ta[Ma+8]=Mb.b,Ma+=9;F=0;for(Z=sa.length;F<Z;F++)U=Ya[sa[F]],Db=U.vertexColors,mb=U.color,4===Db.length&&gb===THREE.VertexColors?(Kb=Db[0],Lb=Db[1],Mb=Db[2],xb=Db[3]):xb=Mb=Lb=Kb=mb,Ta[Ma]=Kb.r,Ta[Ma+1]=Kb.g,Ta[Ma+2]=Kb.b,Ta[Ma+3]=Lb.r,Ta[Ma+4]=Lb.g,Ta[Ma+5]=Lb.b,Ta[Ma+6]=Mb.r,Ta[Ma+7]=Mb.g,Ta[Ma+8]=Mb.b,Ta[Ma+9]=xb.r,Ta[Ma+10]=xb.g,Ta[Ma+11]=xb.b,Ma+=12;0<Ma&&(k.bindBuffer(k.ARRAY_BUFFER,qa.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,Ta,xa))}if(Oc&&hb.hasTangents){F=0;for(Z=ra.length;F<
|
|
|
-Z;F++)U=Ya[ra[F]],ab=U.vertexTangents,Eb=ab[0],Fb=ab[1],Gb=ab[2],Fa[Ba]=Eb.x,Fa[Ba+1]=Eb.y,Fa[Ba+2]=Eb.z,Fa[Ba+3]=Eb.w,Fa[Ba+4]=Fb.x,Fa[Ba+5]=Fb.y,Fa[Ba+6]=Fb.z,Fa[Ba+7]=Fb.w,Fa[Ba+8]=Gb.x,Fa[Ba+9]=Gb.y,Fa[Ba+10]=Gb.z,Fa[Ba+11]=Gb.w,Ba+=12;F=0;for(Z=sa.length;F<Z;F++)U=Ya[sa[F]],ab=U.vertexTangents,Eb=ab[0],Fb=ab[1],Gb=ab[2],ob=ab[3],Fa[Ba]=Eb.x,Fa[Ba+1]=Eb.y,Fa[Ba+2]=Eb.z,Fa[Ba+3]=Eb.w,Fa[Ba+4]=Fb.x,Fa[Ba+5]=Fb.y,Fa[Ba+6]=Fb.z,Fa[Ba+7]=Fb.w,Fa[Ba+8]=Gb.x,Fa[Ba+9]=Gb.y,Fa[Ba+10]=Gb.z,Fa[Ba+11]=Gb.w,
|
|
|
-Fa[Ba+12]=ob.x,Fa[Ba+13]=ob.y,Fa[Ba+14]=ob.z,Fa[Ba+15]=ob.w,Ba+=16;k.bindBuffer(k.ARRAY_BUFFER,qa.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,Fa,xa)}if(Nc&&eb){F=0;for(Z=ra.length;F<Z;F++)if(U=Ya[ra[F]],db=U.vertexNormals,$a=U.normal,3===db.length&&fb)for(ya=0;3>ya;ya++)Zb=db[ya],tb[Xa]=Zb.x,tb[Xa+1]=Zb.y,tb[Xa+2]=Zb.z,Xa+=3;else for(ya=0;3>ya;ya++)tb[Xa]=$a.x,tb[Xa+1]=$a.y,tb[Xa+2]=$a.z,Xa+=3;F=0;for(Z=sa.length;F<Z;F++)if(U=Ya[sa[F]],db=U.vertexNormals,$a=U.normal,4===db.length&&fb)for(ya=
|
|
|
-0;4>ya;ya++)Zb=db[ya],tb[Xa]=Zb.x,tb[Xa+1]=Zb.y,tb[Xa+2]=Zb.z,Xa+=3;else for(ya=0;4>ya;ya++)tb[Xa]=$a.x,tb[Xa+1]=$a.y,tb[Xa+2]=$a.z,Xa+=3;k.bindBuffer(k.ARRAY_BUFFER,qa.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,tb,xa)}if(mc&&Tc&&wb){F=0;for(Z=ra.length;F<Z;F++)if(Za=ra[F],kb=Tc[Za],void 0!==kb)for(ya=0;3>ya;ya++)ic=kb[ya],nc[Vb]=ic.u,nc[Vb+1]=ic.v,Vb+=2;F=0;for(Z=sa.length;F<Z;F++)if(Za=sa[F],kb=Tc[Za],void 0!==kb)for(ya=0;4>ya;ya++)ic=kb[ya],nc[Vb]=ic.u,nc[Vb+1]=ic.v,Vb+=2;0<Vb&&(k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
-qa.__webglUVBuffer),k.bufferData(k.ARRAY_BUFFER,nc,xa))}if(mc&&Uc&&wb){F=0;for(Z=ra.length;F<Z;F++)if(Za=ra[F],lb=Uc[Za],void 0!==lb)for(ya=0;3>ya;ya++)jc=lb[ya],oc[Wb]=jc.u,oc[Wb+1]=jc.v,Wb+=2;F=0;for(Z=sa.length;F<Z;F++)if(Za=sa[F],lb=Uc[Za],void 0!==lb)for(ya=0;4>ya;ya++)jc=lb[ya],oc[Wb]=jc.u,oc[Wb+1]=jc.v,Wb+=2;0<Wb&&(k.bindBuffer(k.ARRAY_BUFFER,qa.__webglUV2Buffer),k.bufferData(k.ARRAY_BUFFER,oc,xa))}if(vc){F=0;for(Z=ra.length;F<Z;F++)Tb[sb]=Ja,Tb[sb+1]=Ja+1,Tb[sb+2]=Ja+2,sb+=3,nb[bb]=Ja,nb[bb+
|
|
|
-1]=Ja+1,nb[bb+2]=Ja,nb[bb+3]=Ja+2,nb[bb+4]=Ja+1,nb[bb+5]=Ja+2,bb+=6,Ja+=3;F=0;for(Z=sa.length;F<Z;F++)Tb[sb]=Ja,Tb[sb+1]=Ja+1,Tb[sb+2]=Ja+3,Tb[sb+3]=Ja+1,Tb[sb+4]=Ja+2,Tb[sb+5]=Ja+3,sb+=6,nb[bb]=Ja,nb[bb+1]=Ja+1,nb[bb+2]=Ja,nb[bb+3]=Ja+3,nb[bb+4]=Ja+1,nb[bb+5]=Ja+2,nb[bb+6]=Ja+2,nb[bb+7]=Ja+3,bb+=8,Ja+=4;k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,qa.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Tb,xa);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,qa.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,
|
|
|
-nb,xa)}if(Sc){ya=0;for(ec=Sc.length;ya<ec;ya++)if(x=Sc[ya],x.__original.needsUpdate){y=0;if(1===x.size)if(void 0===x.boundTo||"vertices"===x.boundTo){F=0;for(Z=ra.length;F<Z;F++)U=Ya[ra[F]],x.array[y]=x.value[U.a],x.array[y+1]=x.value[U.b],x.array[y+2]=x.value[U.c],y+=3;F=0;for(Z=sa.length;F<Z;F++)U=Ya[sa[F]],x.array[y]=x.value[U.a],x.array[y+1]=x.value[U.b],x.array[y+2]=x.value[U.c],x.array[y+3]=x.value[U.d],y+=4}else{if("faces"===x.boundTo){F=0;for(Z=ra.length;F<Z;F++)za=x.value[ra[F]],x.array[y]=
|
|
|
+Ya[sa[F]],Nb=ac[U.a],Ob=ac[U.b],Pb=ac[U.c],Bb=ac[U.d],Ha[ga]=Nb.x,Ha[ga+1]=Nb.y,Ha[ga+2]=Nb.z,Ha[ga+3]=Nb.w,Ha[ga+4]=Ob.x,Ha[ga+5]=Ob.y,Ha[ga+6]=Ob.z,Ha[ga+7]=Ob.w,Ha[ga+8]=Pb.x,Ha[ga+9]=Pb.y,Ha[ga+10]=Pb.z,Ha[ga+11]=Pb.w,Ha[ga+12]=Bb.x,Ha[ga+13]=Bb.y,Ha[ga+14]=Bb.z,Ha[ga+15]=Bb.w,Qb=dc[U.a],Rb=dc[U.b],Sb=dc[U.c],Cb=dc[U.d],Ga[ga]=Qb.x,Ga[ga+1]=Qb.y,Ga[ga+2]=Qb.z,Ga[ga+3]=Qb.w,Ga[ga+4]=Rb.x,Ga[ga+5]=Rb.y,Ga[ga+6]=Rb.z,Ga[ga+7]=Rb.w,Ga[ga+8]=Sb.x,Ga[ga+9]=Sb.y,Ga[ga+10]=Sb.z,Ga[ga+11]=Sb.w,Ga[ga+12]=
|
|
|
+Cb.x,Ga[ga+13]=Cb.y,Ga[ga+14]=Cb.z,Ga[ga+15]=Cb.w,ga+=16;0<ga&&(k.bindBuffer(k.ARRAY_BUFFER,qa.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,Ga,xa),k.bindBuffer(k.ARRAY_BUFFER,qa.__webglSkinWeightsBuffer),k.bufferData(k.ARRAY_BUFFER,Ha,xa))}if(fd&&gb){F=0;for(Z=ra.length;F<Z;F++)U=Ya[ra[F]],Db=U.vertexColors,mb=U.color,3===Db.length&&gb===THREE.VertexColors?(Kb=Db[0],Lb=Db[1],Mb=Db[2]):Mb=Lb=Kb=mb,Ta[Ma]=Kb.r,Ta[Ma+1]=Kb.g,Ta[Ma+2]=Kb.b,Ta[Ma+3]=Lb.r,Ta[Ma+4]=Lb.g,Ta[Ma+5]=Lb.b,Ta[Ma+6]=Mb.r,
|
|
|
+Ta[Ma+7]=Mb.g,Ta[Ma+8]=Mb.b,Ma+=9;F=0;for(Z=sa.length;F<Z;F++)U=Ya[sa[F]],Db=U.vertexColors,mb=U.color,4===Db.length&&gb===THREE.VertexColors?(Kb=Db[0],Lb=Db[1],Mb=Db[2],yb=Db[3]):yb=Mb=Lb=Kb=mb,Ta[Ma]=Kb.r,Ta[Ma+1]=Kb.g,Ta[Ma+2]=Kb.b,Ta[Ma+3]=Lb.r,Ta[Ma+4]=Lb.g,Ta[Ma+5]=Lb.b,Ta[Ma+6]=Mb.r,Ta[Ma+7]=Mb.g,Ta[Ma+8]=Mb.b,Ta[Ma+9]=yb.r,Ta[Ma+10]=yb.g,Ta[Ma+11]=yb.b,Ma+=12;0<Ma&&(k.bindBuffer(k.ARRAY_BUFFER,qa.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,Ta,xa))}if(Oc&&hb.hasTangents){F=0;for(Z=ra.length;F<
|
|
|
+Z;F++)U=Ya[ra[F]],ab=U.vertexTangents,Eb=ab[0],Fb=ab[1],Gb=ab[2],Fa[Ba]=Eb.x,Fa[Ba+1]=Eb.y,Fa[Ba+2]=Eb.z,Fa[Ba+3]=Eb.w,Fa[Ba+4]=Fb.x,Fa[Ba+5]=Fb.y,Fa[Ba+6]=Fb.z,Fa[Ba+7]=Fb.w,Fa[Ba+8]=Gb.x,Fa[Ba+9]=Gb.y,Fa[Ba+10]=Gb.z,Fa[Ba+11]=Gb.w,Ba+=12;F=0;for(Z=sa.length;F<Z;F++)U=Ya[sa[F]],ab=U.vertexTangents,Eb=ab[0],Fb=ab[1],Gb=ab[2],pb=ab[3],Fa[Ba]=Eb.x,Fa[Ba+1]=Eb.y,Fa[Ba+2]=Eb.z,Fa[Ba+3]=Eb.w,Fa[Ba+4]=Fb.x,Fa[Ba+5]=Fb.y,Fa[Ba+6]=Fb.z,Fa[Ba+7]=Fb.w,Fa[Ba+8]=Gb.x,Fa[Ba+9]=Gb.y,Fa[Ba+10]=Gb.z,Fa[Ba+11]=Gb.w,
|
|
|
+Fa[Ba+12]=pb.x,Fa[Ba+13]=pb.y,Fa[Ba+14]=pb.z,Fa[Ba+15]=pb.w,Ba+=16;k.bindBuffer(k.ARRAY_BUFFER,qa.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,Fa,xa)}if(Nc&&eb){F=0;for(Z=ra.length;F<Z;F++)if(U=Ya[ra[F]],db=U.vertexNormals,$a=U.normal,3===db.length&&fb)for(ya=0;3>ya;ya++)Zb=db[ya],ub[Xa]=Zb.x,ub[Xa+1]=Zb.y,ub[Xa+2]=Zb.z,Xa+=3;else for(ya=0;3>ya;ya++)ub[Xa]=$a.x,ub[Xa+1]=$a.y,ub[Xa+2]=$a.z,Xa+=3;F=0;for(Z=sa.length;F<Z;F++)if(U=Ya[sa[F]],db=U.vertexNormals,$a=U.normal,4===db.length&&fb)for(ya=
|
|
|
+0;4>ya;ya++)Zb=db[ya],ub[Xa]=Zb.x,ub[Xa+1]=Zb.y,ub[Xa+2]=Zb.z,Xa+=3;else for(ya=0;4>ya;ya++)ub[Xa]=$a.x,ub[Xa+1]=$a.y,ub[Xa+2]=$a.z,Xa+=3;k.bindBuffer(k.ARRAY_BUFFER,qa.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,ub,xa)}if(mc&&Tc&&xb){F=0;for(Z=ra.length;F<Z;F++)if(Za=ra[F],kb=Tc[Za],void 0!==kb)for(ya=0;3>ya;ya++)ic=kb[ya],nc[Vb]=ic.u,nc[Vb+1]=ic.v,Vb+=2;F=0;for(Z=sa.length;F<Z;F++)if(Za=sa[F],kb=Tc[Za],void 0!==kb)for(ya=0;4>ya;ya++)ic=kb[ya],nc[Vb]=ic.u,nc[Vb+1]=ic.v,Vb+=2;0<Vb&&(k.bindBuffer(k.ARRAY_BUFFER,
|
|
|
+qa.__webglUVBuffer),k.bufferData(k.ARRAY_BUFFER,nc,xa))}if(mc&&Uc&&xb){F=0;for(Z=ra.length;F<Z;F++)if(Za=ra[F],lb=Uc[Za],void 0!==lb)for(ya=0;3>ya;ya++)jc=lb[ya],oc[Wb]=jc.u,oc[Wb+1]=jc.v,Wb+=2;F=0;for(Z=sa.length;F<Z;F++)if(Za=sa[F],lb=Uc[Za],void 0!==lb)for(ya=0;4>ya;ya++)jc=lb[ya],oc[Wb]=jc.u,oc[Wb+1]=jc.v,Wb+=2;0<Wb&&(k.bindBuffer(k.ARRAY_BUFFER,qa.__webglUV2Buffer),k.bufferData(k.ARRAY_BUFFER,oc,xa))}if(vc){F=0;for(Z=ra.length;F<Z;F++)Tb[tb]=Ja,Tb[tb+1]=Ja+1,Tb[tb+2]=Ja+2,tb+=3,ob[bb]=Ja,ob[bb+
|
|
|
+1]=Ja+1,ob[bb+2]=Ja,ob[bb+3]=Ja+2,ob[bb+4]=Ja+1,ob[bb+5]=Ja+2,bb+=6,Ja+=3;F=0;for(Z=sa.length;F<Z;F++)Tb[tb]=Ja,Tb[tb+1]=Ja+1,Tb[tb+2]=Ja+3,Tb[tb+3]=Ja+1,Tb[tb+4]=Ja+2,Tb[tb+5]=Ja+3,tb+=6,ob[bb]=Ja,ob[bb+1]=Ja+1,ob[bb+2]=Ja,ob[bb+3]=Ja+3,ob[bb+4]=Ja+1,ob[bb+5]=Ja+2,ob[bb+6]=Ja+2,ob[bb+7]=Ja+3,bb+=8,Ja+=4;k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,qa.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Tb,xa);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,qa.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,
|
|
|
+ob,xa)}if(Sc){ya=0;for(ec=Sc.length;ya<ec;ya++)if(x=Sc[ya],x.__original.needsUpdate){y=0;if(1===x.size)if(void 0===x.boundTo||"vertices"===x.boundTo){F=0;for(Z=ra.length;F<Z;F++)U=Ya[ra[F]],x.array[y]=x.value[U.a],x.array[y+1]=x.value[U.b],x.array[y+2]=x.value[U.c],y+=3;F=0;for(Z=sa.length;F<Z;F++)U=Ya[sa[F]],x.array[y]=x.value[U.a],x.array[y+1]=x.value[U.b],x.array[y+2]=x.value[U.c],x.array[y+3]=x.value[U.d],y+=4}else{if("faces"===x.boundTo){F=0;for(Z=ra.length;F<Z;F++)za=x.value[ra[F]],x.array[y]=
|
|
|
za,x.array[y+1]=za,x.array[y+2]=za,y+=3;F=0;for(Z=sa.length;F<Z;F++)za=x.value[sa[F]],x.array[y]=za,x.array[y+1]=za,x.array[y+2]=za,x.array[y+3]=za,y+=4}}else if(2===x.size)if(void 0===x.boundTo||"vertices"===x.boundTo){F=0;for(Z=ra.length;F<Z;F++)U=Ya[ra[F]],V=x.value[U.a],W=x.value[U.b],X=x.value[U.c],x.array[y]=V.x,x.array[y+1]=V.y,x.array[y+2]=W.x,x.array[y+3]=W.y,x.array[y+4]=X.x,x.array[y+5]=X.y,y+=6;F=0;for(Z=sa.length;F<Z;F++)U=Ya[sa[F]],V=x.value[U.a],W=x.value[U.b],X=x.value[U.c],pa=x.value[U.d],
|
|
|
x.array[y]=V.x,x.array[y+1]=V.y,x.array[y+2]=W.x,x.array[y+3]=W.y,x.array[y+4]=X.x,x.array[y+5]=X.y,x.array[y+6]=pa.x,x.array[y+7]=pa.y,y+=8}else{if("faces"===x.boundTo){F=0;for(Z=ra.length;F<Z;F++)X=W=V=za=x.value[ra[F]],x.array[y]=V.x,x.array[y+1]=V.y,x.array[y+2]=W.x,x.array[y+3]=W.y,x.array[y+4]=X.x,x.array[y+5]=X.y,y+=6;F=0;for(Z=sa.length;F<Z;F++)pa=X=W=V=za=x.value[sa[F]],x.array[y]=V.x,x.array[y+1]=V.y,x.array[y+2]=W.x,x.array[y+3]=W.y,x.array[y+4]=X.x,x.array[y+5]=X.y,x.array[y+6]=pa.x,x.array[y+
|
|
|
7]=pa.y,y+=8}}else if(3===x.size){var fa;fa="c"===x.type?["r","g","b"]:["x","y","z"];if(void 0===x.boundTo||"vertices"===x.boundTo){F=0;for(Z=ra.length;F<Z;F++)U=Ya[ra[F]],V=x.value[U.a],W=x.value[U.b],X=x.value[U.c],x.array[y]=V[fa[0]],x.array[y+1]=V[fa[1]],x.array[y+2]=V[fa[2]],x.array[y+3]=W[fa[0]],x.array[y+4]=W[fa[1]],x.array[y+5]=W[fa[2]],x.array[y+6]=X[fa[0]],x.array[y+7]=X[fa[1]],x.array[y+8]=X[fa[2]],y+=9;F=0;for(Z=sa.length;F<Z;F++)U=Ya[sa[F]],V=x.value[U.a],W=x.value[U.b],X=x.value[U.c],
|
|
@@ -467,12 +466,12 @@ x.array[y]=V.x,x.array[y+1]=V.y,x.array[y+2]=V.z,x.array[y+3]=V.w,x.array[y+4]=W
|
|
|
x.array[y+8]=X.x,x.array[y+9]=X.y,x.array[y+10]=X.z,x.array[y+11]=X.w,y+=12;F=0;for(Z=sa.length;F<Z;F++)pa=X=W=V=za=x.value[sa[F]],x.array[y]=V.x,x.array[y+1]=V.y,x.array[y+2]=V.z,x.array[y+3]=V.w,x.array[y+4]=W.x,x.array[y+5]=W.y,x.array[y+6]=W.z,x.array[y+7]=W.w,x.array[y+8]=X.x,x.array[y+9]=X.y,x.array[y+10]=X.z,x.array[y+11]=X.w,x.array[y+12]=pa.x,x.array[y+13]=pa.y,x.array[y+14]=pa.z,x.array[y+15]=pa.w,y+=16}else if("faceVertices"===x.boundTo){F=0;for(Z=ra.length;F<Z;F++)za=x.value[ra[F]],V=
|
|
|
za[0],W=za[1],X=za[2],x.array[y]=V.x,x.array[y+1]=V.y,x.array[y+2]=V.z,x.array[y+3]=V.w,x.array[y+4]=W.x,x.array[y+5]=W.y,x.array[y+6]=W.z,x.array[y+7]=W.w,x.array[y+8]=X.x,x.array[y+9]=X.y,x.array[y+10]=X.z,x.array[y+11]=X.w,y+=12;F=0;for(Z=sa.length;F<Z;F++)za=x.value[sa[F]],V=za[0],W=za[1],X=za[2],pa=za[3],x.array[y]=V.x,x.array[y+1]=V.y,x.array[y+2]=V.z,x.array[y+3]=V.w,x.array[y+4]=W.x,x.array[y+5]=W.y,x.array[y+6]=W.z,x.array[y+7]=W.w,x.array[y+8]=X.x,x.array[y+9]=X.y,x.array[y+10]=X.z,x.array[y+
|
|
|
11]=X.w,x.array[y+12]=pa.x,x.array[y+13]=pa.y,x.array[y+14]=pa.z,x.array[y+15]=pa.w,y+=16}k.bindBuffer(k.ARRAY_BUFFER,x.buffer);k.bufferData(k.ARRAY_BUFFER,x.array,xa)}}cb&&(delete qa.__inittedArrays,delete qa.__colorArray,delete qa.__normalArray,delete qa.__tangentArray,delete qa.__uvArray,delete qa.__uv2Array,delete qa.__faceArray,delete qa.__vertexArray,delete qa.__lineArray,delete qa.__skinIndexArray,delete qa.__skinWeightArray)}}ca.verticesNeedUpdate=!1;ca.morphTargetsNeedUpdate=!1;ca.elementsNeedUpdate=
|
|
|
-!1;ca.uvsNeedUpdate=!1;ca.normalsNeedUpdate=!1;ca.colorsNeedUpdate=!1;ca.tangentsNeedUpdate=!1;ca.buffersNeedUpdate=!1;ka.attributes&&r(ka)}else if(ua instanceof THREE.Ribbon){ka=e(ua,ca);Ca=ka.attributes&&t(ka);if(ca.verticesNeedUpdate||ca.colorsNeedUpdate||ca.normalsNeedUpdate||Ca){var ub=ca,zc=k.DYNAMIC_DRAW,pc=void 0,qc=void 0,rc=void 0,Ac=void 0,Aa=void 0,Bc=void 0,Cc=void 0,Dc=void 0,Xc=void 0,Va=void 0,kc=void 0,Da=void 0,ib=void 0,Yc=ub.vertices,Zc=ub.colors,$c=ub.normals,hd=Yc.length,id=
|
|
|
-Zc.length,jd=$c.length,Ec=ub.__vertexArray,Fc=ub.__colorArray,Gc=ub.__normalArray,kd=ub.colorsNeedUpdate,ld=ub.normalsNeedUpdate,Vc=ub.__webglCustomAttributesList;if(ub.verticesNeedUpdate){for(pc=0;pc<hd;pc++)Ac=Yc[pc],Aa=3*pc,Ec[Aa]=Ac.x,Ec[Aa+1]=Ac.y,Ec[Aa+2]=Ac.z;k.bindBuffer(k.ARRAY_BUFFER,ub.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Ec,zc)}if(kd){for(qc=0;qc<id;qc++)Bc=Zc[qc],Aa=3*qc,Fc[Aa]=Bc.r,Fc[Aa+1]=Bc.g,Fc[Aa+2]=Bc.b;k.bindBuffer(k.ARRAY_BUFFER,ub.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
-Fc,zc)}if(ld){for(rc=0;rc<jd;rc++)Cc=$c[rc],Aa=3*rc,Gc[Aa]=Cc.x,Gc[Aa+1]=Cc.y,Gc[Aa+2]=Cc.z;k.bindBuffer(k.ARRAY_BUFFER,ub.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,Gc,zc)}if(Vc){Dc=0;for(Xc=Vc.length;Dc<Xc;Dc++)if(Da=Vc[Dc],Da.needsUpdate&&(void 0===Da.boundTo||"vertices"===Da.boundTo)){Aa=0;kc=Da.value.length;if(1===Da.size)for(Va=0;Va<kc;Va++)Da.array[Va]=Da.value[Va];else if(2===Da.size)for(Va=0;Va<kc;Va++)ib=Da.value[Va],Da.array[Aa]=ib.x,Da.array[Aa+1]=ib.y,Aa+=2;else if(3===Da.size)if("c"===
|
|
|
+!1;ca.uvsNeedUpdate=!1;ca.normalsNeedUpdate=!1;ca.colorsNeedUpdate=!1;ca.tangentsNeedUpdate=!1;ca.buffersNeedUpdate=!1;ka.attributes&&r(ka)}else if(ua instanceof THREE.Ribbon){ka=e(ua,ca);Ca=ka.attributes&&t(ka);if(ca.verticesNeedUpdate||ca.colorsNeedUpdate||ca.normalsNeedUpdate||Ca){var vb=ca,zc=k.DYNAMIC_DRAW,pc=void 0,qc=void 0,rc=void 0,Ac=void 0,Aa=void 0,Bc=void 0,Cc=void 0,Dc=void 0,Xc=void 0,Va=void 0,kc=void 0,Da=void 0,ib=void 0,Yc=vb.vertices,Zc=vb.colors,$c=vb.normals,hd=Yc.length,id=
|
|
|
+Zc.length,jd=$c.length,Ec=vb.__vertexArray,Fc=vb.__colorArray,Gc=vb.__normalArray,kd=vb.colorsNeedUpdate,ld=vb.normalsNeedUpdate,Vc=vb.__webglCustomAttributesList;if(vb.verticesNeedUpdate){for(pc=0;pc<hd;pc++)Ac=Yc[pc],Aa=3*pc,Ec[Aa]=Ac.x,Ec[Aa+1]=Ac.y,Ec[Aa+2]=Ac.z;k.bindBuffer(k.ARRAY_BUFFER,vb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Ec,zc)}if(kd){for(qc=0;qc<id;qc++)Bc=Zc[qc],Aa=3*qc,Fc[Aa]=Bc.r,Fc[Aa+1]=Bc.g,Fc[Aa+2]=Bc.b;k.bindBuffer(k.ARRAY_BUFFER,vb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,
|
|
|
+Fc,zc)}if(ld){for(rc=0;rc<jd;rc++)Cc=$c[rc],Aa=3*rc,Gc[Aa]=Cc.x,Gc[Aa+1]=Cc.y,Gc[Aa+2]=Cc.z;k.bindBuffer(k.ARRAY_BUFFER,vb.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,Gc,zc)}if(Vc){Dc=0;for(Xc=Vc.length;Dc<Xc;Dc++)if(Da=Vc[Dc],Da.needsUpdate&&(void 0===Da.boundTo||"vertices"===Da.boundTo)){Aa=0;kc=Da.value.length;if(1===Da.size)for(Va=0;Va<kc;Va++)Da.array[Va]=Da.value[Va];else if(2===Da.size)for(Va=0;Va<kc;Va++)ib=Da.value[Va],Da.array[Aa]=ib.x,Da.array[Aa+1]=ib.y,Aa+=2;else if(3===Da.size)if("c"===
|
|
|
Da.type)for(Va=0;Va<kc;Va++)ib=Da.value[Va],Da.array[Aa]=ib.r,Da.array[Aa+1]=ib.g,Da.array[Aa+2]=ib.b,Aa+=3;else for(Va=0;Va<kc;Va++)ib=Da.value[Va],Da.array[Aa]=ib.x,Da.array[Aa+1]=ib.y,Da.array[Aa+2]=ib.z,Aa+=3;else if(4===Da.size)for(Va=0;Va<kc;Va++)ib=Da.value[Va],Da.array[Aa]=ib.x,Da.array[Aa+1]=ib.y,Da.array[Aa+2]=ib.z,Da.array[Aa+3]=ib.w,Aa+=4;k.bindBuffer(k.ARRAY_BUFFER,Da.buffer);k.bufferData(k.ARRAY_BUFFER,Da.array,zc)}}}ca.verticesNeedUpdate=!1;ca.colorsNeedUpdate=!1;ca.normalsNeedUpdate=
|
|
|
-!1;ka.attributes&&r(ka)}else if(ua instanceof THREE.Line){ka=e(ua,ca);Ca=ka.attributes&&t(ka);if(ca.verticesNeedUpdate||ca.colorsNeedUpdate||ca.lineDistancesNeedUpdate||Ca){var vb=ca,Hc=k.DYNAMIC_DRAW,sc=void 0,tc=void 0,uc=void 0,Ic=void 0,Ia=void 0,Jc=void 0,ad=vb.vertices,bd=vb.colors,cd=vb.lineDistances,md=ad.length,nd=bd.length,od=cd.length,Kc=vb.__vertexArray,Lc=vb.__colorArray,dd=vb.__lineDistanceArray,pd=vb.colorsNeedUpdate,qd=vb.lineDistancesNeedUpdate,Wc=vb.__webglCustomAttributesList,Mc=
|
|
|
-void 0,ed=void 0,Wa=void 0,lc=void 0,jb=void 0,Ea=void 0;if(vb.verticesNeedUpdate){for(sc=0;sc<md;sc++)Ic=ad[sc],Ia=3*sc,Kc[Ia]=Ic.x,Kc[Ia+1]=Ic.y,Kc[Ia+2]=Ic.z;k.bindBuffer(k.ARRAY_BUFFER,vb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Kc,Hc)}if(pd){for(tc=0;tc<nd;tc++)Jc=bd[tc],Ia=3*tc,Lc[Ia]=Jc.r,Lc[Ia+1]=Jc.g,Lc[Ia+2]=Jc.b;k.bindBuffer(k.ARRAY_BUFFER,vb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Lc,Hc)}if(qd){for(uc=0;uc<od;uc++)dd[uc]=cd[uc];k.bindBuffer(k.ARRAY_BUFFER,vb.__webglLineDistanceBuffer);
|
|
|
+!1;ka.attributes&&r(ka)}else if(ua instanceof THREE.Line){ka=e(ua,ca);Ca=ka.attributes&&t(ka);if(ca.verticesNeedUpdate||ca.colorsNeedUpdate||ca.lineDistancesNeedUpdate||Ca){var wb=ca,Hc=k.DYNAMIC_DRAW,sc=void 0,tc=void 0,uc=void 0,Ic=void 0,Ia=void 0,Jc=void 0,ad=wb.vertices,bd=wb.colors,cd=wb.lineDistances,md=ad.length,nd=bd.length,od=cd.length,Kc=wb.__vertexArray,Lc=wb.__colorArray,dd=wb.__lineDistanceArray,pd=wb.colorsNeedUpdate,qd=wb.lineDistancesNeedUpdate,Wc=wb.__webglCustomAttributesList,Mc=
|
|
|
+void 0,ed=void 0,Wa=void 0,lc=void 0,jb=void 0,Ea=void 0;if(wb.verticesNeedUpdate){for(sc=0;sc<md;sc++)Ic=ad[sc],Ia=3*sc,Kc[Ia]=Ic.x,Kc[Ia+1]=Ic.y,Kc[Ia+2]=Ic.z;k.bindBuffer(k.ARRAY_BUFFER,wb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Kc,Hc)}if(pd){for(tc=0;tc<nd;tc++)Jc=bd[tc],Ia=3*tc,Lc[Ia]=Jc.r,Lc[Ia+1]=Jc.g,Lc[Ia+2]=Jc.b;k.bindBuffer(k.ARRAY_BUFFER,wb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Lc,Hc)}if(qd){for(uc=0;uc<od;uc++)dd[uc]=cd[uc];k.bindBuffer(k.ARRAY_BUFFER,wb.__webglLineDistanceBuffer);
|
|
|
k.bufferData(k.ARRAY_BUFFER,dd,Hc)}if(Wc){Mc=0;for(ed=Wc.length;Mc<ed;Mc++)if(Ea=Wc[Mc],Ea.needsUpdate&&(void 0===Ea.boundTo||"vertices"===Ea.boundTo)){Ia=0;lc=Ea.value.length;if(1===Ea.size)for(Wa=0;Wa<lc;Wa++)Ea.array[Wa]=Ea.value[Wa];else if(2===Ea.size)for(Wa=0;Wa<lc;Wa++)jb=Ea.value[Wa],Ea.array[Ia]=jb.x,Ea.array[Ia+1]=jb.y,Ia+=2;else if(3===Ea.size)if("c"===Ea.type)for(Wa=0;Wa<lc;Wa++)jb=Ea.value[Wa],Ea.array[Ia]=jb.r,Ea.array[Ia+1]=jb.g,Ea.array[Ia+2]=jb.b,Ia+=3;else for(Wa=0;Wa<lc;Wa++)jb=
|
|
|
Ea.value[Wa],Ea.array[Ia]=jb.x,Ea.array[Ia+1]=jb.y,Ea.array[Ia+2]=jb.z,Ia+=3;else if(4===Ea.size)for(Wa=0;Wa<lc;Wa++)jb=Ea.value[Wa],Ea.array[Ia]=jb.x,Ea.array[Ia+1]=jb.y,Ea.array[Ia+2]=jb.z,Ea.array[Ia+3]=jb.w,Ia+=4;k.bindBuffer(k.ARRAY_BUFFER,Ea.buffer);k.bufferData(k.ARRAY_BUFFER,Ea.array,Hc)}}}ca.verticesNeedUpdate=!1;ca.colorsNeedUpdate=!1;ca.lineDistancesNeedUpdate=!1;ka.attributes&&r(ka)}else ua instanceof THREE.ParticleSystem&&(ca instanceof THREE.BufferGeometry?((ca.verticesNeedUpdate||ca.colorsNeedUpdate)&&
|
|
|
j(ca,k.DYNAMIC_DRAW,!ca.dynamic),ca.verticesNeedUpdate=!1,ca.colorsNeedUpdate=!1):(ka=e(ua,ca),Ca=ka.attributes&&t(ka),(ca.verticesNeedUpdate||ca.colorsNeedUpdate||ua.sortParticles||Ca)&&i(ca,k.DYNAMIC_DRAW,ua),ca.verticesNeedUpdate=!1,ca.colorsNeedUpdate=!1,ka.attributes&&r(ka)))}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,l,n,m;a instanceof THREE.MeshDepthMaterial?m="depth":a instanceof THREE.MeshNormalMaterial?m="normal":a instanceof THREE.MeshBasicMaterial?m="basic":a instanceof THREE.MeshLambertMaterial?
|
|
@@ -492,7 +491,7 @@ w);for(w=0;w<c.maxMorphNormals;w++)s.push("morphNormal"+w);for(t in b)s.push(t);
|
|
|
a.skinning&&(0<=t.skinIndex&&0<=t.skinWeight)&&(k.enableVertexAttribArray(t.skinIndex),k.enableVertexAttribArray(t.skinWeight));if(a.attributes)for(j in a.attributes)void 0!==t[j]&&0<=t[j]&&k.enableVertexAttribArray(t[j]);if(a.morphTargets){a.numSupportedMorphTargets=0;v="morphTarget";for(j=0;j<this.maxMorphTargets;j++)w=v+j,0<=t[w]&&(k.enableVertexAttribArray(t[w]),a.numSupportedMorphTargets++)}if(a.morphNormals){a.numSupportedMorphNormals=0;v="morphNormal";for(j=0;j<this.maxMorphNormals;j++)w=v+
|
|
|
j,0<=t[w]&&(k.enableVertexAttribArray(t[w]),a.numSupportedMorphNormals++)}a.uniformsList=[];for(i in a.uniforms)a.uniformsList.push([a.uniforms[i],i])};this.setFaceCulling=function(a,b){a?(!b||"ccw"===b?k.frontFace(k.CCW):k.frontFace(k.CW),"back"===a?k.cullFace(k.BACK):"front"===a?k.cullFace(k.FRONT):k.cullFace(k.FRONT_AND_BACK),k.enable(k.CULL_FACE)):k.disable(k.CULL_FACE)};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide,a=a.side===THREE.BackSide;ua!==b&&(b?k.disable(k.CULL_FACE):
|
|
|
k.enable(k.CULL_FACE),ua=b);Ca!==a&&(a?k.frontFace(k.CW):k.frontFace(k.CCW),Ca=a)};this.setDepthTest=function(a){Ua!==a&&(a?k.enable(k.DEPTH_TEST):k.disable(k.DEPTH_TEST),Ua=a)};this.setDepthWrite=function(a){fb!==a&&(k.depthMask(a),fb=a)};this.setBlending=function(a,b,c,d){a!==Ka&&(a===THREE.NoBlending?k.disable(k.BLEND):a===THREE.AdditiveBlending?(k.enable(k.BLEND),k.blendEquation(k.FUNC_ADD),k.blendFunc(k.SRC_ALPHA,k.ONE)):a===THREE.SubtractiveBlending?(k.enable(k.BLEND),k.blendEquation(k.FUNC_ADD),
|
|
|
-k.blendFunc(k.ZERO,k.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(k.enable(k.BLEND),k.blendEquation(k.FUNC_ADD),k.blendFunc(k.ZERO,k.SRC_COLOR)):a===THREE.CustomBlending?k.enable(k.BLEND):(k.enable(k.BLEND),k.blendEquationSeparate(k.FUNC_ADD,k.FUNC_ADD),k.blendFuncSeparate(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA,k.ONE,k.ONE_MINUS_SRC_ALPHA)),Ka=a);if(a===THREE.CustomBlending){if(b!==va&&(k.blendEquation(H(b)),va=b),c!==cb||d!==wb)k.blendFunc(H(c),H(d)),cb=c,wb=d}else wb=cb=va=null};this.setTexture=
|
|
|
+k.blendFunc(k.ZERO,k.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(k.enable(k.BLEND),k.blendEquation(k.FUNC_ADD),k.blendFunc(k.ZERO,k.SRC_COLOR)):a===THREE.CustomBlending?k.enable(k.BLEND):(k.enable(k.BLEND),k.blendEquationSeparate(k.FUNC_ADD,k.FUNC_ADD),k.blendFuncSeparate(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA,k.ONE,k.ONE_MINUS_SRC_ALPHA)),Ka=a);if(a===THREE.CustomBlending){if(b!==va&&(k.blendEquation(H(b)),va=b),c!==cb||d!==xb)k.blendFunc(H(c),H(d)),cb=c,xb=d}else xb=cb=va=null};this.setTexture=
|
|
|
function(a,b){if(a.needsUpdate){a.__webglInit||(a.__webglInit=!0,a.__webglTexture=k.createTexture(),K.info.memory.textures++);k.activeTexture(k.TEXTURE0+b);k.bindTexture(k.TEXTURE_2D,a.__webglTexture);k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,a.flipY);k.pixelStorei(k.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);var c=a.image,d=0===(c.width&c.width-1)&&0===(c.height&c.height-1),e=H(a.format),f=H(a.type);L(k.TEXTURE_2D,a,d);if(a instanceof THREE.CompressedTexture)for(var f=a.mipmaps,g=0,h=f.length;g<
|
|
|
h;g++)c=f[g],k.compressedTexImage2D(k.TEXTURE_2D,g,e,c.width,c.height,0,c.data);else a instanceof THREE.DataTexture?k.texImage2D(k.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data):k.texImage2D(k.TEXTURE_2D,0,e,e,f,a.image);a.generateMipmaps&&d&&k.generateMipmap(k.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()}else k.activeTexture(k.TEXTURE0+b),k.bindTexture(k.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){void 0===
|
|
|
a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.__webglTexture=k.createTexture();var c=0===(a.width&a.width-1)&&0===(a.height&a.height-1),d=H(a.format),e=H(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];k.bindTexture(k.TEXTURE_CUBE_MAP,a.__webglTexture);L(k.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=k.createFramebuffer();a.__webglRenderbuffer[f]=k.createRenderbuffer();k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,
|
|
@@ -685,9 +684,9 @@ THREE.IcosahedronGeometry=function(a,b){var c=(1+Math.sqrt(5))/2;THREE.Polyhedro
|
|
|
THREE.OctahedronGeometry=function(a,b){THREE.PolyhedronGeometry.call(this,[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],[[0,2,4],[0,4,3],[0,3,5],[0,5,2],[1,2,5],[1,5,3],[1,3,4],[1,4,2]],a,b)};THREE.OctahedronGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.TetrahedronGeometry=function(a,b){THREE.PolyhedronGeometry.call(this,[[1,1,1],[-1,-1,1],[-1,1,-1],[1,-1,-1]],[[2,1,0],[0,3,2],[1,3,0],[2,3,1]],a,b)};THREE.TetrahedronGeometry.prototype=Object.create(THREE.Geometry.prototype);
|
|
|
THREE.ParametricGeometry=function(a,b,c,d){THREE.Geometry.call(this);var e=this.vertices,f=this.faces,g=this.faceVertexUvs[0],d=void 0===d?!1:d,h,i,j,l,n=b+1;for(h=0;h<=c;h++){l=h/c;for(i=0;i<=b;i++)j=i/b,j=a(j,l),e.push(j)}var m,p,o,q;for(h=0;h<c;h++)for(i=0;i<b;i++)a=h*n+i,e=h*n+i+1,l=(h+1)*n+i,j=(h+1)*n+i+1,m=new THREE.UV(i/b,h/c),p=new THREE.UV((i+1)/b,h/c),o=new THREE.UV(i/b,(h+1)/c),q=new THREE.UV((i+1)/b,(h+1)/c),d?(f.push(new THREE.Face3(a,e,l)),f.push(new THREE.Face3(e,j,l)),g.push([m,p,
|
|
|
o]),g.push([p,q,o])):(f.push(new THREE.Face4(a,e,j,l)),g.push([m,p,q,o]));this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.ParametricGeometry.prototype=Object.create(THREE.Geometry.prototype);
|
|
|
-THREE.ConvexGeometry=function(a){function b(a){var b=a.length();return new THREE.UV(a.x/b,a.y/b)}THREE.Geometry.call(this);for(var c=[[0,1,2],[0,2,1]],d=3;d<a.length;d++){var e=d,f=a[e].clone(),g=f.length();f.x+=g*2E-6*(Math.random()-0.5);f.y+=g*2E-6*(Math.random()-0.5);f.z+=g*2E-6*(Math.random()-0.5);for(var g=[],h=0;h<c.length;){var i=c[h],j=f,l=a[i[0]],n;n=l;var m=a[i[1]],p=a[i[2]],o=new THREE.Vector3,q=new THREE.Vector3;o.sub(p,m);q.sub(n,m);o.crossSelf(q);o.isZero()||o.normalize();n=o;l=n.dot(l);
|
|
|
-if(n.dot(j)>=l){for(j=0;3>j;j++){l=[i[j],i[(j+1)%3]];n=!0;for(m=0;m<g.length;m++)if(g[m][0]===l[1]&&g[m][1]===l[0]){g[m]=g[g.length-1];g.pop();n=!1;break}n&&g.push(l)}c[h]=c[c.length-1];c.pop()}else h++}for(m=0;m<g.length;m++)c.push([g[m][0],g[m][1],e])}e=0;f=Array(a.length);for(d=0;d<c.length;d++){g=c[d];for(h=0;3>h;h++)void 0===f[g[h]]&&(f[g[h]]=e++,this.vertices.push(a[g[h]])),g[h]=f[g[h]]}for(d=0;d<c.length;d++)this.faces.push(new THREE.Face3(c[d][0],c[d][1],c[d][2]));for(d=0;d<this.faces.length;d++)g=
|
|
|
-this.faces[d],this.faceVertexUvs[0].push([b(this.vertices[g.a]),b(this.vertices[g.b]),b(this.vertices[g.c])]);this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.ConvexGeometry.prototype=Object.create(THREE.Geometry.prototype);
|
|
|
+THREE.ConvexGeometry=function(a){function b(a){var b=a.length();return new THREE.UV(a.x/b,a.y/b)}THREE.Geometry.call(this);for(var c=[[0,1,2],[0,2,1]],d=3;d<a.length;d++){var e=d,f=a[e].clone(),g=f.length();f.x+=g*2E-6*(Math.random()-0.5);f.y+=g*2E-6*(Math.random()-0.5);f.z+=g*2E-6*(Math.random()-0.5);for(var g=[],h=0;h<c.length;){var i=c[h],j=f,l=a[i[0]],n;n=l;var m=a[i[1]],p=a[i[2]],o=new THREE.Vector3,q=new THREE.Vector3;o.sub(p,m);q.sub(n,m);o.crossSelf(q);o.normalize();n=o;l=n.dot(l);if(n.dot(j)>=
|
|
|
+l){for(j=0;3>j;j++){l=[i[j],i[(j+1)%3]];n=!0;for(m=0;m<g.length;m++)if(g[m][0]===l[1]&&g[m][1]===l[0]){g[m]=g[g.length-1];g.pop();n=!1;break}n&&g.push(l)}c[h]=c[c.length-1];c.pop()}else h++}for(m=0;m<g.length;m++)c.push([g[m][0],g[m][1],e])}e=0;f=Array(a.length);for(d=0;d<c.length;d++){g=c[d];for(h=0;3>h;h++)void 0===f[g[h]]&&(f[g[h]]=e++,this.vertices.push(a[g[h]])),g[h]=f[g[h]]}for(d=0;d<c.length;d++)this.faces.push(new THREE.Face3(c[d][0],c[d][1],c[d][2]));for(d=0;d<this.faces.length;d++)g=this.faces[d],
|
|
|
+this.faceVertexUvs[0].push([b(this.vertices[g.a]),b(this.vertices[g.b]),b(this.vertices[g.c])]);this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.ConvexGeometry.prototype=Object.create(THREE.Geometry.prototype);
|
|
|
THREE.AxisHelper=function(a){var b=new THREE.Geometry;b.vertices.push(new THREE.Vector3,new THREE.Vector3(a||1,0,0),new THREE.Vector3,new THREE.Vector3(0,a||1,0),new THREE.Vector3,new THREE.Vector3(0,0,a||1));b.colors.push(new THREE.Color(16711680),new THREE.Color(16755200),new THREE.Color(65280),new THREE.Color(11206400),new THREE.Color(255),new THREE.Color(43775));a=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors});THREE.Line.call(this,b,a,THREE.LinePieces)};
|
|
|
THREE.AxisHelper.prototype=Object.create(THREE.Line.prototype);
|
|
|
THREE.ArrowHelper=function(a,b,c,d){THREE.Object3D.call(this);void 0===d&&(d=16776960);void 0===c&&(c=20);var e=new THREE.Geometry;e.vertices.push(new THREE.Vector3(0,0,0));e.vertices.push(new THREE.Vector3(0,1,0));this.line=new THREE.Line(e,new THREE.LineBasicMaterial({color:d}));this.add(this.line);e=new THREE.CylinderGeometry(0,0.05,0.25,5,1);this.cone=new THREE.Mesh(e,new THREE.MeshBasicMaterial({color:d}));this.cone.position.set(0,1,0);this.add(this.cone);b instanceof THREE.Vector3&&(this.position=
|