|
@@ -78,15 +78,15 @@ a.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate;a.quaternion.copy(this.quat
|
|
|
THREE.Object3D.defaultEulerOrder="XYZ";THREE.Object3DIdCount=0;THREE.Object3DLibrary=[];
|
|
|
THREE.Projector=function(){function a(){if(e===h){var a=new THREE.RenderableObject;g.push(a);h++;e++;return a}return g[e++]}function b(){if(j===m){var a=new THREE.RenderableVertex;l.push(a);m++;j++;return a}return l[j++]}function c(a,b){return b.z-a.z}function d(a,b){var c=0,d=1,f=a.z+a.w,e=b.z+b.w,g=-a.z+a.w,h=-b.z+b.w;if(0<=f&&0<=e&&0<=g&&0<=h)return!0;if(0>f&&0>e||0>g&&0>h)return!1;0>f?c=Math.max(c,f/(f-e)):0>e&&(d=Math.min(d,f/(f-e)));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 f,e,g=[],h=0,i,j,l=[],m=0,n,p,o=[],q=0,s,t=[],A=0,u,r,B=[],y=0,w,z,C=[],D=0,F={objects:[],sprites:[],lights:[],elements:[]},I=new THREE.Vector3,G=new THREE.Vector4,M=new THREE.Matrix4,J=new THREE.Matrix4,K=new THREE.Frustum,N=new THREE.Vector4,O=new THREE.Vector4;this.projectVector=function(a,b){b.matrixWorldInverse.getInverse(b.matrixWorld);M.multiply(b.projectionMatrix,b.matrixWorldInverse);M.multiplyVector3(a);return a};this.unprojectVector=
|
|
|
-function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);M.multiply(b.matrixWorld,b.projectionMatrixInverse);M.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,m,H){var fa=h.near,sa=h.far,R=!1,oa,Q,ha,W,aa,Z,$,da,Ka,La,Ea,ua,ra,Ma,kb,cb;z=r=s=p=0;F.elements.length=0;g.updateMatrixWorld();void 0===
|
|
|
+function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);M.multiply(b.matrixWorld,b.projectionMatrixInverse);M.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,m,H){var fa=h.near,sa=h.far,R=!1,oa,Q,ha,T,aa,Z,$,da,Ka,La,Ea,ua,ra,Ma,kb,cb;z=r=s=p=0;F.elements.length=0;g.updateMatrixWorld();void 0===
|
|
|
h.parent&&h.updateMatrixWorld();h.matrixWorldInverse.getInverse(h.matrixWorld);M.multiply(h.projectionMatrix,h.matrixWorldInverse);K.setFromMatrix(M);e=0;F.objects.length=0;F.sprites.length=0;F.lights.length=0;var Ua=function(b){for(var c=0,d=b.children.length;c<d;c++){var e=b.children[c];if(!1!==e.visible){if(e instanceof THREE.Light)F.lights.push(e);else if(e instanceof THREE.Mesh||e instanceof THREE.Line){if(!1===e.frustumCulled||!0===K.contains(e))f=a(),f.object=e,null!==e.renderDepth?f.z=e.renderDepth:
|
|
|
(I.copy(e.matrixWorld.getPosition()),M.multiplyVector3(I),f.z=I.z),F.objects.push(f)}else e instanceof THREE.Sprite||e instanceof THREE.Particle?(f=a(),f.object=e,null!==e.renderDepth?f.z=e.renderDepth:(I.copy(e.matrixWorld.getPosition()),M.multiplyVector3(I),f.z=I.z),F.sprites.push(f)):(f=a(),f.object=e,null!==e.renderDepth?f.z=e.renderDepth:(I.copy(e.matrixWorld.getPosition()),M.multiplyVector3(I),f.z=I.z),F.objects.push(f));Ua(e)}}};Ua(g);!0===m&&F.objects.sort(c);g=0;for(m=F.objects.length;g<
|
|
|
m;g++)if(da=F.objects[g].object,Ka=da.matrixWorld,j=0,da instanceof THREE.Mesh){La=da.geometry;Ea=da.geometry.materials;ha=La.vertices;ua=La.faces;Ma=La.faceVertexUvs;La=da.matrixRotationWorld.extractRotation(Ka);kb=da.material instanceof THREE.MeshFaceMaterial;oa=0;for(Q=ha.length;oa<Q;oa++)i=b(),i.positionWorld.copy(ha[oa]),Ka.multiplyVector3(i.positionWorld),i.positionScreen.copy(i.positionWorld),M.multiplyVector4(i.positionScreen),i.positionScreen.x/=i.positionScreen.w,i.positionScreen.y/=i.positionScreen.w,
|
|
|
-i.visible=i.positionScreen.z>fa&&i.positionScreen.z<sa;ha=0;for(oa=ua.length;ha<oa;ha++)if(Q=ua[ha],cb=!0===kb?Ea[Q.materialIndex]:da.material,void 0!==cb){Z=cb.side;if(Q instanceof THREE.Face3)if(W=l[Q.a],aa=l[Q.b],$=l[Q.c],!0===W.visible&&!0===aa.visible&&!0===$.visible)if(R=0>($.positionScreen.x-W.positionScreen.x)*(aa.positionScreen.y-W.positionScreen.y)-($.positionScreen.y-W.positionScreen.y)*(aa.positionScreen.x-W.positionScreen.x),Z===THREE.DoubleSide||R===(Z===THREE.FrontSide))p===q?(ra=new THREE.RenderableFace3,
|
|
|
-o.push(ra),q++,p++,n=ra):n=o[p++],n.v1.copy(W),n.v2.copy(aa),n.v3.copy($);else continue;else continue;else if(Q instanceof THREE.Face4)if(W=l[Q.a],aa=l[Q.b],$=l[Q.c],ra=l[Q.d],!0===W.visible&&!0===aa.visible&&!0===$.visible&&!0===ra.visible)if(R=0>(ra.positionScreen.x-W.positionScreen.x)*(aa.positionScreen.y-W.positionScreen.y)-(ra.positionScreen.y-W.positionScreen.y)*(aa.positionScreen.x-W.positionScreen.x)||0>(aa.positionScreen.x-$.positionScreen.x)*(ra.positionScreen.y-$.positionScreen.y)-(aa.positionScreen.y-
|
|
|
-$.positionScreen.y)*(ra.positionScreen.x-$.positionScreen.x),Z===THREE.DoubleSide||R===(Z===THREE.FrontSide)){if(s===A){var gb=new THREE.RenderableFace4;t.push(gb);A++;s++;n=gb}else n=t[s++];n.v1.copy(W);n.v2.copy(aa);n.v3.copy($);n.v4.copy(ra)}else continue;else continue;n.normalWorld.copy(Q.normal);!1===R&&(Z===THREE.BackSide||Z===THREE.DoubleSide)&&n.normalWorld.negate();La.multiplyVector3(n.normalWorld);n.centroidWorld.copy(Q.centroid);Ka.multiplyVector3(n.centroidWorld);n.centroidScreen.copy(n.centroidWorld);
|
|
|
-M.multiplyVector3(n.centroidScreen);$=Q.vertexNormals;W=0;for(aa=$.length;W<aa;W++)ra=n.vertexNormalsWorld[W],ra.copy($[W]),!1===R&&(Z===THREE.BackSide||Z===THREE.DoubleSide)&&ra.negate(),La.multiplyVector3(ra);n.vertexNormalsLength=$.length;W=0;for(aa=Ma.length;W<aa;W++)if(ra=Ma[W][ha],void 0!==ra){Z=0;for($=ra.length;Z<$;Z++)n.uvs[W][Z]=ra[Z]}n.color=Q.color;n.material=cb;n.z=n.centroidScreen.z;F.elements.push(n)}}else if(da instanceof THREE.Line){J.multiply(M,Ka);ha=da.geometry.vertices;W=b();
|
|
|
-W.positionScreen.copy(ha[0]);J.multiplyVector4(W.positionScreen);Ka=da.type===THREE.LinePieces?2:1;oa=1;for(Q=ha.length;oa<Q;oa++)W=b(),W.positionScreen.copy(ha[oa]),J.multiplyVector4(W.positionScreen),0<(oa+1)%Ka||(aa=l[j-2],N.copy(W.positionScreen),O.copy(aa.positionScreen),!0===d(N,O)&&(N.multiplyScalar(1/N.w),O.multiplyScalar(1/O.w),r===y?(Ea=new THREE.RenderableLine,B.push(Ea),y++,r++,u=Ea):u=B[r++],u.v1.positionScreen.copy(N),u.v2.positionScreen.copy(O),u.z=Math.max(N.z,O.z),u.material=da.material,
|
|
|
+i.visible=i.positionScreen.z>fa&&i.positionScreen.z<sa;ha=0;for(oa=ua.length;ha<oa;ha++)if(Q=ua[ha],cb=!0===kb?Ea[Q.materialIndex]:da.material,void 0!==cb){Z=cb.side;if(Q instanceof THREE.Face3)if(T=l[Q.a],aa=l[Q.b],$=l[Q.c],!0===T.visible&&!0===aa.visible&&!0===$.visible)if(R=0>($.positionScreen.x-T.positionScreen.x)*(aa.positionScreen.y-T.positionScreen.y)-($.positionScreen.y-T.positionScreen.y)*(aa.positionScreen.x-T.positionScreen.x),Z===THREE.DoubleSide||R===(Z===THREE.FrontSide))p===q?(ra=new THREE.RenderableFace3,
|
|
|
+o.push(ra),q++,p++,n=ra):n=o[p++],n.v1.copy(T),n.v2.copy(aa),n.v3.copy($);else continue;else continue;else if(Q instanceof THREE.Face4)if(T=l[Q.a],aa=l[Q.b],$=l[Q.c],ra=l[Q.d],!0===T.visible&&!0===aa.visible&&!0===$.visible&&!0===ra.visible)if(R=0>(ra.positionScreen.x-T.positionScreen.x)*(aa.positionScreen.y-T.positionScreen.y)-(ra.positionScreen.y-T.positionScreen.y)*(aa.positionScreen.x-T.positionScreen.x)||0>(aa.positionScreen.x-$.positionScreen.x)*(ra.positionScreen.y-$.positionScreen.y)-(aa.positionScreen.y-
|
|
|
+$.positionScreen.y)*(ra.positionScreen.x-$.positionScreen.x),Z===THREE.DoubleSide||R===(Z===THREE.FrontSide)){if(s===A){var gb=new THREE.RenderableFace4;t.push(gb);A++;s++;n=gb}else n=t[s++];n.v1.copy(T);n.v2.copy(aa);n.v3.copy($);n.v4.copy(ra)}else continue;else continue;n.normalWorld.copy(Q.normal);!1===R&&(Z===THREE.BackSide||Z===THREE.DoubleSide)&&n.normalWorld.negate();La.multiplyVector3(n.normalWorld);n.centroidWorld.copy(Q.centroid);Ka.multiplyVector3(n.centroidWorld);n.centroidScreen.copy(n.centroidWorld);
|
|
|
+M.multiplyVector3(n.centroidScreen);$=Q.vertexNormals;T=0;for(aa=$.length;T<aa;T++)ra=n.vertexNormalsWorld[T],ra.copy($[T]),!1===R&&(Z===THREE.BackSide||Z===THREE.DoubleSide)&&ra.negate(),La.multiplyVector3(ra);n.vertexNormalsLength=$.length;T=0;for(aa=Ma.length;T<aa;T++)if(ra=Ma[T][ha],void 0!==ra){Z=0;for($=ra.length;Z<$;Z++)n.uvs[T][Z]=ra[Z]}n.color=Q.color;n.material=cb;n.z=n.centroidScreen.z;F.elements.push(n)}}else if(da instanceof THREE.Line){J.multiply(M,Ka);ha=da.geometry.vertices;T=b();
|
|
|
+T.positionScreen.copy(ha[0]);J.multiplyVector4(T.positionScreen);Ka=da.type===THREE.LinePieces?2:1;oa=1;for(Q=ha.length;oa<Q;oa++)T=b(),T.positionScreen.copy(ha[oa]),J.multiplyVector4(T.positionScreen),0<(oa+1)%Ka||(aa=l[j-2],N.copy(T.positionScreen),O.copy(aa.positionScreen),!0===d(N,O)&&(N.multiplyScalar(1/N.w),O.multiplyScalar(1/O.w),r===y?(Ea=new THREE.RenderableLine,B.push(Ea),y++,r++,u=Ea):u=B[r++],u.v1.positionScreen.copy(N),u.v2.positionScreen.copy(O),u.z=Math.max(N.z,O.z),u.material=da.material,
|
|
|
F.elements.push(u)))}g=0;for(m=F.sprites.length;g<m;g++)da=F.sprites[g].object,Ka=da.matrixWorld,da instanceof THREE.Particle&&(G.set(Ka.elements[12],Ka.elements[13],Ka.elements[14],1),M.multiplyVector4(G),G.z/=G.w,0<G.z&&1>G.z&&(z===D?(fa=new THREE.RenderableParticle,C.push(fa),D++,z++,w=fa):w=C[z++],w.object=da,w.x=G.x/G.w,w.y=G.y/G.w,w.z=G.z,w.rotation=da.rotation.z,w.scale.x=da.scale.x*Math.abs(w.x-(G.x+h.projectionMatrix.elements[0])/(G.w+h.projectionMatrix.elements[12])),w.scale.y=da.scale.y*
|
|
|
Math.abs(w.y-(G.y+h.projectionMatrix.elements[5])/(G.w+h.projectionMatrix.elements[13])),w.material=da.material,F.elements.push(w)));!0===H&&F.elements.sort(c);return F}};THREE.Quaternion=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.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w;return this},setFromEuler:function(a,b){var c=Math.cos(a.x/2),d=Math.cos(a.y/2),f=Math.cos(a.z/2),e=Math.sin(a.x/2),g=Math.sin(a.y/2),h=Math.sin(a.z/2);void 0===b||"XYZ"===b?(this.x=e*d*f+c*g*h,this.y=c*g*f-e*d*h,this.z=c*d*h+e*g*f,this.w=c*d*f-e*g*h):"YXZ"===b?(this.x=e*d*f+c*g*h,this.y=c*g*f-e*d*h,this.z=c*d*
|
|
@@ -102,7 +102,7 @@ THREE.Face3.prototype={constructor:THREE.Face3,clone:function(){var a=new THREE.
|
|
|
return a}};THREE.Face4=function(a,b,c,d,f,e,g){this.a=a;this.b=b;this.c=c;this.d=d;this.normal=f instanceof THREE.Vector3?f:new THREE.Vector3;this.vertexNormals=f instanceof Array?f:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=g;this.centroid=new THREE.Vector3};
|
|
|
THREE.Face4.prototype={constructor:THREE.Face4,clone:function(){var a=new THREE.Face4(this.a,this.b,this.c,this.d);a.normal.copy(this.normal);a.color.copy(this.color);a.centroid.copy(this.centroid);a.materialIndex=this.materialIndex;var b,c;b=0;for(c=this.vertexNormals.length;b<c;b++)a.vertexNormals[b]=this.vertexNormals[b].clone();b=0;for(c=this.vertexColors.length;b<c;b++)a.vertexColors[b]=this.vertexColors[b].clone();b=0;for(c=this.vertexTangents.length;b<c;b++)a.vertexTangents[b]=this.vertexTangents[b].clone();
|
|
|
return a}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};THREE.UV.prototype={constructor:THREE.UV,set:function(a,b){this.u=a;this.v=b;return this},copy:function(a){this.u=a.u;this.v=a.v;return this},lerpSelf:function(a,b){this.u+=(a.u-this.u)*b;this.v+=(a.v-this.v)*b;return this},clone:function(){return new THREE.UV(this.u,this.v)}};
|
|
|
-THREE.Geometry=function(){THREE.GeometryLibrary.push(this);this.id=THREE.GeometryIdCount++;this.name="";this.vertices=[];this.colors=[];this.materials=[];this.faces=[];this.faceUvs=[[]];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1;this.dynamic=!0;this.buffersNeedUpdate=this.colorsNeedUpdate=this.tangentsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=
|
|
|
+THREE.Geometry=function(){THREE.GeometryLibrary.push(this);this.id=THREE.GeometryIdCount++;this.name="";this.vertices=[];this.colors=[];this.normals=[];this.materials=[];this.faces=[];this.faceUvs=[[]];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1;this.dynamic=!0;this.buffersNeedUpdate=this.colorsNeedUpdate=this.tangentsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=
|
|
|
this.elementsNeedUpdate=this.verticesNeedUpdate=!1};
|
|
|
THREE.Geometry.prototype={constructor:THREE.Geometry,applyMatrix:function(a){var b=new THREE.Matrix4;b.extractRotation(a);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 f=this.faces[c];b.multiplyVector3(f.normal);for(var e=0,g=f.vertexNormals.length;e<g;e++)b.multiplyVector3(f.vertexNormals[e]);a.multiplyVector3(f.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,f,e,g=new THREE.Vector3,h=new THREE.Vector3;a=0;for(b=this.faces.length;a<
|
|
@@ -162,10 +162,10 @@ w(r,P+20+24);A=w(r,P+20+28);b=w(r,P+20+32);u=w(r,P+20+36);r=w(r,P+20+40);J+=c;P=
|
|
|
n);if(p){J=new Float32Array(a,J,2*p);for(m=0;m<p;m++)L=J[2*m],X=J[2*m+1],N.push(L,X)}p=J=n+2*p*Float32Array.BYTES_PER_ELEMENT;O=p+O+B(2*o);n=O+c+B(2*q);c=n+f+B(2*s);f=c+l+B(2*t);P=f+P+B(2*A);l=P+i+B(2*b);i=l+j+B(2*u);s&&(j=n+3*s*Uint32Array.BYTES_PER_ELEMENT,D(s,n,j+3*s*Uint32Array.BYTES_PER_ELEMENT),z(s,j));t&&(s=c+3*t*Uint32Array.BYTES_PER_ELEMENT,j=s+3*t*Uint32Array.BYTES_PER_ELEMENT,I(t,c,s,j+3*t*Uint32Array.BYTES_PER_ELEMENT),z(t,j));u&&(t=l+4*u*Uint32Array.BYTES_PER_ELEMENT,F(u,l,t+4*u*Uint32Array.BYTES_PER_ELEMENT),
|
|
|
C(u,t));r&&(u=i+4*r*Uint32Array.BYTES_PER_ELEMENT,t=u+4*r*Uint32Array.BYTES_PER_ELEMENT,G(r,i,u,t+4*r*Uint32Array.BYTES_PER_ELEMENT),C(r,t));o&&D(o,p,p+3*o*Uint32Array.BYTES_PER_ELEMENT);q&&(o=O+3*q*Uint32Array.BYTES_PER_ELEMENT,I(q,O,o,o+3*q*Uint32Array.BYTES_PER_ELEMENT));A&&F(A,f,f+4*A*Uint32Array.BYTES_PER_ELEMENT);b&&(q=P+4*b*Uint32Array.BYTES_PER_ELEMENT,G(b,P,q,q+4*b*Uint32Array.BYTES_PER_ELEMENT));this.computeCentroids();this.computeFaceNormals();THREE.Loader.prototype.hasNormals(this)&&this.computeTangents()};
|
|
|
f.prototype=Object.create(THREE.Geometry.prototype);b(new f(c))};THREE.ImageLoader=function(){THREE.EventTarget.call(this);this.crossOrigin=null};
|
|
|
-THREE.ImageLoader.prototype={constructor:THREE.ImageLoader,load:function(a,b){var c=this;void 0===b&&(b=new Image);b.addEventListener("load",function(){c.dispatchEvent({type:"load",content:b})},!1);b.addEventListener("error",function(){c.dispatchEvent({type:"error",message:"Couldn't load URL ["+a+"]"})},!1);c.crossOrigin&&(b.crossOrigin=c.crossOrigin);b.src=a}};THREE.JSONLoader=function(a){THREE.Loader.call(this,a)};THREE.JSONLoader.prototype=Object.create(THREE.Loader.prototype);
|
|
|
+THREE.ImageLoader.prototype={constructor:THREE.ImageLoader,load:function(a,b){var c=this;void 0===b&&(b=new Image);b.addEventListener("load",function(){c.dispatchEvent({type:"load",content:b})},!1);b.addEventListener("error",function(){c.dispatchEvent({type:"error",message:"Couldn't load URL ["+a+"]"})},!1);c.crossOrigin&&(b.crossOrigin=c.crossOrigin);b.src=a}};THREE.JSONLoader=function(a){THREE.Loader.call(this,a);this.withCredentials=!1};THREE.JSONLoader.prototype=Object.create(THREE.Loader.prototype);
|
|
|
THREE.JSONLoader.prototype.load=function(a,b,c){c=c?c:this.extractUrlBase(a);this.onLoadStart();this.loadAjaxJSON(this,a,b,c)};
|
|
|
-THREE.JSONLoader.prototype.loadAjaxJSON=function(a,b,c,d,f){var e=new XMLHttpRequest,g=0;e.onreadystatechange=function(){if(e.readyState===e.DONE)if(200===e.status||0===e.status){if(e.responseText){var h=JSON.parse(e.responseText);a.createModel(h,c,d)}else console.warn("THREE.JSONLoader: ["+b+"] seems to be unreachable or file there is empty");a.onLoadComplete()}else console.error("THREE.JSONLoader: Couldn't load ["+b+"] ["+e.status+"]");else e.readyState===e.LOADING?f&&(0===g&&(g=e.getResponseHeader("Content-Length")),
|
|
|
-f({total:g,loaded:e.responseText.length})):e.readyState===e.HEADERS_RECEIVED&&(g=e.getResponseHeader("Content-Length"))};e.open("GET",b,!0);e.send(null)};
|
|
|
+THREE.JSONLoader.prototype.loadAjaxJSON=function(a,b,c,d,f){var e=new XMLHttpRequest,g=0;e.withCredentials=this.withCredentials;e.onreadystatechange=function(){if(e.readyState===e.DONE)if(200===e.status||0===e.status){if(e.responseText){var h=JSON.parse(e.responseText);a.createModel(h,c,d)}else console.warn("THREE.JSONLoader: ["+b+"] seems to be unreachable or file there is empty");a.onLoadComplete()}else console.error("THREE.JSONLoader: Couldn't load ["+b+"] ["+e.status+"]");else e.readyState===
|
|
|
+e.LOADING?f&&(0===g&&(g=e.getResponseHeader("Content-Length")),f({total:g,loaded:e.responseText.length})):e.readyState===e.HEADERS_RECEIVED&&(g=e.getResponseHeader("Content-Length"))};e.open("GET",b,!0);e.send(null)};
|
|
|
THREE.JSONLoader.prototype.createModel=function(a,b,c){var d=new THREE.Geometry,f=void 0!==a.scale?1/a.scale:1;this.initMaterials(d,a.materials,c);var e,g,h,i,j,l,m,n,p,o,q,s,t,A,u=a.faces;p=a.vertices;var r=a.normals,B=a.colors,y=0;for(e=0;e<a.uvs.length;e++)a.uvs[e].length&&y++;for(e=0;e<y;e++)d.faceUvs[e]=[],d.faceVertexUvs[e]=[];c=0;for(i=p.length;c<i;)j=new THREE.Vector3,j.x=p[c++]*f,j.y=p[c++]*f,j.z=p[c++]*f,d.vertices.push(j);c=0;for(i=u.length;c<i;){p=u[c++];j=p&1;h=p&2;e=p&4;g=p&8;m=p&16;
|
|
|
l=p&32;o=p&64;p&=128;j?(q=new THREE.Face4,q.a=u[c++],q.b=u[c++],q.c=u[c++],q.d=u[c++],j=4):(q=new THREE.Face3,q.a=u[c++],q.b=u[c++],q.c=u[c++],j=3);h&&(h=u[c++],q.materialIndex=h);h=d.faces.length;if(e)for(e=0;e<y;e++)s=a.uvs[e],n=u[c++],A=s[2*n],n=s[2*n+1],d.faceUvs[e][h]=new THREE.UV(A,n);if(g)for(e=0;e<y;e++){s=a.uvs[e];t=[];for(g=0;g<j;g++)n=u[c++],A=s[2*n],n=s[2*n+1],t[g]=new THREE.UV(A,n);d.faceVertexUvs[e][h]=t}m&&(m=3*u[c++],g=new THREE.Vector3,g.x=r[m++],g.y=r[m++],g.z=r[m],q.normal=g);if(l)for(e=
|
|
|
0;e<j;e++)m=3*u[c++],g=new THREE.Vector3,g.x=r[m++],g.y=r[m++],g.z=r[m],q.vertexNormals.push(g);o&&(l=u[c++],l=new THREE.Color(B[l]),q.color=l);if(p)for(e=0;e<j;e++)l=u[c++],l=new THREE.Color(B[l]),q.vertexColors.push(l);d.faces.push(q)}if(a.skinWeights){c=0;for(i=a.skinWeights.length;c<i;c+=2)u=a.skinWeights[c],r=a.skinWeights[c+1],d.skinWeights.push(new THREE.Vector4(u,r,0,0))}if(a.skinIndices){c=0;for(i=a.skinIndices.length;c<i;c+=2)u=a.skinIndices[c],r=a.skinIndices[c+1],d.skinIndices.push(new THREE.Vector4(u,
|
|
@@ -269,34 +269,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.color=new THREE.Color(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3};THREE.FogExp2=function(a,b){this.color=new THREE.Color(a);this.density=void 0!==b?b:2.5E-4};
|
|
|
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){r!==a&&(r=q.strokeStyle=a)}function f(a){B!==a&&(B=q.fillStyle=a)}console.log("THREE.CanvasRenderer",THREE.REVISION);var a=a||{},e=this,g,h,i,j=new THREE.Projector,l=void 0!==a.canvas?a.canvas:
|
|
|
-document.createElement("canvas"),m,n,p,o,q=l.getContext("2d"),s=new THREE.Color(0),t=0,A=1,u=0,r=null,B=null,y=null,w=null,z=null,C,D,F,I,G=new THREE.RenderableVertex,M=new THREE.RenderableVertex,J,K,N,O,P,L,X,H,fa,sa,R,oa,Q=new THREE.Color,ha=new THREE.Color,W=new THREE.Color,aa=new THREE.Color,Z=new THREE.Color,$=new THREE.Color,da=new THREE.Color,Ka={},La={},Ea,ua,ra,Ma,kb,cb,Ua,gb,vb,Sb,ab=new THREE.Rectangle,Pa=new THREE.Rectangle,Ga=new THREE.Rectangle,lb=!1,Ia=new THREE.Color,bb=new THREE.Color,
|
|
|
+document.createElement("canvas"),m,n,p,o,q=l.getContext("2d"),s=new THREE.Color(0),t=0,A=1,u=0,r=null,B=null,y=null,w=null,z=null,C,D,F,I,G=new THREE.RenderableVertex,M=new THREE.RenderableVertex,J,K,N,O,P,L,X,H,fa,sa,R,oa,Q=new THREE.Color,ha=new THREE.Color,T=new THREE.Color,aa=new THREE.Color,Z=new THREE.Color,$=new THREE.Color,da=new THREE.Color,Ka={},La={},Ea,ua,ra,Ma,kb,cb,Ua,gb,xb,Ub,ab=new THREE.Rectangle,Pa=new THREE.Rectangle,Ga=new THREE.Rectangle,lb=!1,Ia=new THREE.Color,bb=new THREE.Color,
|
|
|
Ya=new THREE.Color,la=new THREE.Vector3,hb,db,Va,ya,ib,nb,a=16;hb=document.createElement("canvas");hb.width=hb.height=2;db=hb.getContext("2d");db.fillStyle="rgba(0,0,0,1)";db.fillRect(0,0,2,2);Va=db.getImageData(0,0,2,2);ya=Va.data;ib=document.createElement("canvas");ib.width=ib.height=a;nb=ib.getContext("2d");nb.translate(-a/2,-a/2);nb.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){m=a;n=b;p=
|
|
|
Math.floor(m/2);o=Math.floor(n/2);l.width=m;l.height=n;ab.set(-p,-o,p,o);Pa.set(-p,-o,p,o);A=1;u=0;z=w=y=B=r=null};this.setClearColor=function(a,b){s.copy(a);t=void 0!==b?b:1;Pa.set(-p,-o,p,o)};this.setClearColorHex=function(a,b){s.setHex(a);t=void 0!==b?b:1;Pa.set(-p,-o,p,o)};this.getMaxAnisotropy=function(){return 0};this.clear=function(){q.setTransform(1,0,0,-1,p,o);!1===Pa.isEmpty()&&(Pa.minSelf(ab),Pa.inflate(2),1>t&&q.clearRect(Math.floor(Pa.getX()),Math.floor(Pa.getY()),Math.floor(Pa.getWidth()),
|
|
|
Math.floor(Pa.getHeight())),0<t&&(c(THREE.NormalBlending),b(1),f("rgba("+Math.floor(255*s.r)+","+Math.floor(255*s.g)+","+Math.floor(255*s.b)+","+t+")"),q.fillRect(Math.floor(Pa.getX()),Math.floor(Pa.getY()),Math.floor(Pa.getWidth()),Math.floor(Pa.getHeight()))),Pa.empty())};this.render=function(a,l){function n(a,b,c){for(var d=0,f=i.length;d<f;d++){var e=i[d],g=e.color;if(e instanceof THREE.DirectionalLight){var h=e.matrixWorld.getPosition().normalize(),k=b.dot(h);0>=k||(k*=e.intensity,c.r+=g.r*k,
|
|
|
c.g+=g.g*k,c.b+=g.b*k)}else e instanceof THREE.PointLight&&(h=e.matrixWorld.getPosition(),k=b.dot(la.sub(h,a).normalize()),0>=k||(k*=0==e.distance?1:1-Math.min(a.distanceTo(h)/e.distance,1),0!=k&&(k*=e.intensity,c.r+=g.r*k,c.g+=g.g*k,c.b+=g.b*k)))}}function m(a,d,f,g,h,k,i,j){e.info.render.vertices+=3;e.info.render.faces++;b(j.opacity);c(j.blending);J=a.positionScreen.x;K=a.positionScreen.y;N=d.positionScreen.x;O=d.positionScreen.y;P=f.positionScreen.x;L=f.positionScreen.y;r(J,K,N,O,P,L);(j instanceof
|
|
|
-THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial)&&null===j.map&&null===j.map?($.copy(j.color),da.copy(j.emissive),j.vertexColors===THREE.FaceColors&&($.r*=i.color.r,$.g*=i.color.g,$.b*=i.color.b),!0===lb)?!1===j.wireframe&&j.shading==THREE.SmoothShading&&3==i.vertexNormalsLength?(ha.r=W.r=aa.r=Ia.r,ha.g=W.g=aa.g=Ia.g,ha.b=W.b=aa.b=Ia.b,n(i.v1.positionWorld,i.vertexNormalsWorld[0],ha),n(i.v2.positionWorld,i.vertexNormalsWorld[1],W),n(i.v3.positionWorld,i.vertexNormalsWorld[2],aa),ha.r=
|
|
|
-ha.r*$.r+da.r,ha.g=ha.g*$.g+da.g,ha.b=ha.b*$.b+da.b,W.r=W.r*$.r+da.r,W.g=W.g*$.g+da.g,W.b=W.b*$.b+da.b,aa.r=aa.r*$.r+da.r,aa.g=aa.g*$.g+da.g,aa.b=aa.b*$.b+da.b,Z.r=0.5*(W.r+aa.r),Z.g=0.5*(W.g+aa.g),Z.b=0.5*(W.b+aa.b),ra=rc(ha,W,aa,Z),wa(J,K,N,O,P,L,0,0,1,0,0,1,ra)):(Q.r=Ia.r,Q.g=Ia.g,Q.b=Ia.b,n(i.centroidWorld,i.normalWorld,Q),Q.r=Q.r*$.r+da.r,Q.g=Q.g*$.g+da.g,Q.b=Q.b*$.b+da.b,!0===j.wireframe?s(Q,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(Q)):!0===j.wireframe?s(j.color,j.wireframeLinewidth,
|
|
|
+THREE.MeshLambertMaterial||j instanceof THREE.MeshPhongMaterial)&&null===j.map&&null===j.map?($.copy(j.color),da.copy(j.emissive),j.vertexColors===THREE.FaceColors&&($.r*=i.color.r,$.g*=i.color.g,$.b*=i.color.b),!0===lb)?!1===j.wireframe&&j.shading==THREE.SmoothShading&&3==i.vertexNormalsLength?(ha.r=T.r=aa.r=Ia.r,ha.g=T.g=aa.g=Ia.g,ha.b=T.b=aa.b=Ia.b,n(i.v1.positionWorld,i.vertexNormalsWorld[0],ha),n(i.v2.positionWorld,i.vertexNormalsWorld[1],T),n(i.v3.positionWorld,i.vertexNormalsWorld[2],aa),ha.r=
|
|
|
+ha.r*$.r+da.r,ha.g=ha.g*$.g+da.g,ha.b=ha.b*$.b+da.b,T.r=T.r*$.r+da.r,T.g=T.g*$.g+da.g,T.b=T.b*$.b+da.b,aa.r=aa.r*$.r+da.r,aa.g=aa.g*$.g+da.g,aa.b=aa.b*$.b+da.b,Z.r=0.5*(T.r+aa.r),Z.g=0.5*(T.g+aa.g),Z.b=0.5*(T.b+aa.b),ra=sc(ha,T,aa,Z),wa(J,K,N,O,P,L,0,0,1,0,0,1,ra)):(Q.r=Ia.r,Q.g=Ia.g,Q.b=Ia.b,n(i.centroidWorld,i.normalWorld,Q),Q.r=Q.r*$.r+da.r,Q.g=Q.g*$.g+da.g,Q.b=Q.b*$.b+da.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&&(Ma=i.uvs[0],A(J,K,N,O,P,L,Ma[g].u,Ma[g].v,Ma[h].u,Ma[h].v,Ma[k].u,Ma[k].v,j.map)):null!==j.envMap?j.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(a=l.matrixWorldInverse,la.copy(i.vertexNormalsWorld[g]),kb=0.5*(la.x*a.elements[0]+la.y*a.elements[4]+la.z*a.elements[8])+
|
|
|
-0.5,cb=0.5*(la.x*a.elements[1]+la.y*a.elements[5]+la.z*a.elements[9])+0.5,la.copy(i.vertexNormalsWorld[h]),Ua=0.5*(la.x*a.elements[0]+la.y*a.elements[4]+la.z*a.elements[8])+0.5,gb=0.5*(la.x*a.elements[1]+la.y*a.elements[5]+la.z*a.elements[9])+0.5,la.copy(i.vertexNormalsWorld[k]),vb=0.5*(la.x*a.elements[0]+la.y*a.elements[4]+la.z*a.elements[8])+0.5,Sb=0.5*(la.x*a.elements[1]+la.y*a.elements[5]+la.z*a.elements[9])+0.5,A(J,K,N,O,P,L,kb,cb,Ua,gb,vb,Sb,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?(Ea=l.near,ua=l.far,ha.r=ha.g=ha.b=1-wb(a.positionScreen.z,Ea,ua),W.r=W.g=W.b=1-wb(d.positionScreen.z,Ea,ua),aa.r=aa.g=aa.b=1-wb(f.positionScreen.z,Ea,ua),Z.r=0.5*(W.r+aa.r),Z.g=0.5*(W.g+aa.g),Z.b=0.5*(W.b+aa.b),ra=rc(ha,W,aa,Z),wa(J,K,N,O,P,L,0,0,1,0,0,1,ra)):j instanceof THREE.MeshNormalMaterial&&(Q.r=ec(i.normalWorld.x),Q.g=
|
|
|
+0.5,cb=0.5*(la.x*a.elements[1]+la.y*a.elements[5]+la.z*a.elements[9])+0.5,la.copy(i.vertexNormalsWorld[h]),Ua=0.5*(la.x*a.elements[0]+la.y*a.elements[4]+la.z*a.elements[8])+0.5,gb=0.5*(la.x*a.elements[1]+la.y*a.elements[5]+la.z*a.elements[9])+0.5,la.copy(i.vertexNormalsWorld[k]),xb=0.5*(la.x*a.elements[0]+la.y*a.elements[4]+la.z*a.elements[8])+0.5,Ub=0.5*(la.x*a.elements[1]+la.y*a.elements[5]+la.z*a.elements[9])+0.5,A(J,K,N,O,P,L,kb,cb,Ua,gb,xb,Ub,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?(Ea=l.near,ua=l.far,ha.r=ha.g=ha.b=1-yb(a.positionScreen.z,Ea,ua),T.r=T.g=T.b=1-yb(d.positionScreen.z,Ea,ua),aa.r=aa.g=aa.b=1-yb(f.positionScreen.z,Ea,ua),Z.r=0.5*(T.r+aa.r),Z.g=0.5*(T.g+aa.g),Z.b=0.5*(T.b+aa.b),ra=sc(ha,T,aa,Z),wa(J,K,N,O,P,L,0,0,1,0,0,1,ra)):j instanceof THREE.MeshNormalMaterial&&(Q.r=ec(i.normalWorld.x),Q.g=
|
|
|
ec(i.normalWorld.y),Q.b=ec(i.normalWorld.z),!0===j.wireframe?s(Q,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):u(Q))}function r(a,b,c,d,f,e){q.beginPath();q.moveTo(a,b);q.lineTo(c,d);q.lineTo(f,e);q.closePath()}function t(a,b,c,d,f,e,g,h){q.beginPath();q.moveTo(a,b);q.lineTo(c,d);q.lineTo(f,e);q.lineTo(g,h);q.closePath()}function s(a,b,c,f){y!==b&&(y=q.lineWidth=b);w!==c&&(w=q.lineCap=c);z!==f&&(z=q.lineJoin=f);d(a.getContextStyle());q.stroke();Ga.inflate(2*b)}function u(a){f(a.getContextStyle());
|
|
|
-q.fill()}function A(a,b,c,d,e,g,h,k,i,j,l,n,m){if(!(m instanceof THREE.DataTexture||void 0===m.image||0==m.image.width)){if(!0===m.needsUpdate){var wa=m.wrapS==THREE.RepeatWrapping,o=m.wrapT==THREE.RepeatWrapping;Ka[m.id]=q.createPattern(m.image,!0===wa&&!0===o?"repeat":!0===wa&&!1===o?"repeat-x":!1===wa&&!0===o?"repeat-y":"no-repeat");m.needsUpdate=!1}void 0===Ka[m.id]?f("rgba(0,0,0,1)"):f(Ka[m.id]);var wa=m.offset.x/m.repeat.x,o=m.offset.y/m.repeat.y,p=m.image.width*m.repeat.x,wb=m.image.height*
|
|
|
-m.repeat.y,h=(h+wa)*p,k=(1-k+o)*wb,c=c-a,d=d-b,e=e-a,g=g-b,i=(i+wa)*p-h,j=(1-j+o)*wb-k,l=(l+wa)*p-h,n=(1-n+o)*wb-k,wa=i*n-l*j;0===wa?(void 0===La[m.id]&&(b=document.createElement("canvas"),b.width=m.image.width,b.height=m.image.height,b=b.getContext("2d"),b.drawImage(m.image,0,0),La[m.id]=b.getImageData(0,0,m.image.width,m.image.height).data),b=La[m.id],h=4*(Math.floor(h)+Math.floor(k)*m.image.width),Q.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255),u(Q)):(wa=1/wa,m=(n*c-j*e)*wa,j=(n*d-j*g)*wa,c=(i*e-l*c)*
|
|
|
-wa,d=(i*g-l*d)*wa,a=a-m*h-c*k,h=b-j*h-d*k,q.save(),q.transform(m,j,c,d,a,h),q.fill(),q.restore())}}function wa(a,b,c,d,f,e,g,h,k,i,j,l,n){var m,wa;m=n.width-1;wa=n.height-1;g*=m;h*=wa;c-=a;d-=b;f-=a;e-=b;k=k*m-g;i=i*wa-h;j=j*m-g;l=l*wa-h;wa=1/(k*l-j*i);m=(l*c-i*f)*wa;i=(l*d-i*e)*wa;c=(k*f-j*c)*wa;d=(k*e-j*d)*wa;a=a-m*g-c*h;b=b-i*g-d*h;q.save();q.transform(m,i,c,d,a,b);q.clip();q.drawImage(n,0,0);q.restore()}function rc(a,b,c,d){ya[0]=255*a.r|0;ya[1]=255*a.g|0;ya[2]=255*a.b|0;ya[4]=255*b.r|0;ya[5]=
|
|
|
-255*b.g|0;ya[6]=255*b.b|0;ya[8]=255*c.r|0;ya[9]=255*c.g|0;ya[10]=255*c.b|0;ya[12]=255*d.r|0;ya[13]=255*d.g|0;ya[14]=255*d.b|0;db.putImageData(Va,0,0);nb.drawImage(hb,0,0);return ib}function wb(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function ec(a){a=0.5*(a+1);return 0>a?0:1<a?1:a}function Tb(a,b){var c=b.x-a.x,d=b.y-a.y,f=c*c+d*d;0!==f&&(f=1/Math.sqrt(f),c*=f,d*=f,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 Ub,B,ja,ba;!0===this.autoClear?this.clear():q.setTransform(1,0,0,-1,p,o);e.info.render.vertices=0;e.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){Ia.setRGB(0,0,0);bb.setRGB(0,0,0);Ya.setRGB(0,0,0);Ub=0;for(B=i.length;Ub<B;Ub++){ba=i[Ub];var ka=ba.color;ba instanceof THREE.AmbientLight?(Ia.r+=ka.r,Ia.g+=ka.g,Ia.b+=ka.b):ba instanceof THREE.DirectionalLight?(bb.r+=ka.r,bb.g+=ka.g,bb.b+=ka.b):ba instanceof THREE.PointLight&&
|
|
|
-(Ya.r+=ka.r,Ya.g+=ka.g,Ya.b+=ka.b)}}Ub=0;for(B=h.length;Ub<B;Ub++)if(ja=h[Ub],ba=ja.material,!(void 0===ba||!1===ba.visible)){Ga.empty();if(ja instanceof THREE.RenderableParticle){C=ja;C.x*=p;C.y*=o;var ka=C,Za=ja;b(ba.opacity);c(ba.blending);var tb=void 0,ub=void 0,ob=void 0,pb=void 0,fc=ja=void 0,Ec=void 0;ba instanceof THREE.ParticleBasicMaterial?null===ba.map?(ob=Za.object.scale.x,pb=Za.object.scale.y,ob*=Za.scale.x*p,pb*=Za.scale.y*o,Ga.set(ka.x-ob,ka.y-pb,ka.x+ob,ka.y+pb),!1!==ab.intersects(Ga)&&
|
|
|
-(f(ba.color.getContextStyle()),q.save(),q.translate(ka.x,ka.y),q.rotate(-Za.rotation),q.scale(ob,pb),q.fillRect(-1,-1,2,2),q.restore())):(ja=ba.map.image,fc=ja.width>>1,Ec=ja.height>>1,ob=Za.scale.x*p,pb=Za.scale.y*o,tb=ob*fc,ub=pb*Ec,Ga.set(ka.x-tb,ka.y-ub,ka.x+tb,ka.y+ub),!1!==ab.intersects(Ga)&&(q.save(),q.translate(ka.x,ka.y),q.rotate(-Za.rotation),q.scale(ob,-pb),q.translate(-fc,-Ec),q.drawImage(ja,0,0),q.restore())):ba instanceof THREE.ParticleCanvasMaterial&&(tb=Za.scale.x*p,ub=Za.scale.y*
|
|
|
+q.fill()}function A(a,b,c,d,e,g,h,k,i,j,l,n,m){if(!(m instanceof THREE.DataTexture||void 0===m.image||0==m.image.width)){if(!0===m.needsUpdate){var wa=m.wrapS==THREE.RepeatWrapping,o=m.wrapT==THREE.RepeatWrapping;Ka[m.id]=q.createPattern(m.image,!0===wa&&!0===o?"repeat":!0===wa&&!1===o?"repeat-x":!1===wa&&!0===o?"repeat-y":"no-repeat");m.needsUpdate=!1}void 0===Ka[m.id]?f("rgba(0,0,0,1)"):f(Ka[m.id]);var wa=m.offset.x/m.repeat.x,o=m.offset.y/m.repeat.y,p=m.image.width*m.repeat.x,yb=m.image.height*
|
|
|
+m.repeat.y,h=(h+wa)*p,k=(1-k+o)*yb,c=c-a,d=d-b,e=e-a,g=g-b,i=(i+wa)*p-h,j=(1-j+o)*yb-k,l=(l+wa)*p-h,n=(1-n+o)*yb-k,wa=i*n-l*j;0===wa?(void 0===La[m.id]&&(b=document.createElement("canvas"),b.width=m.image.width,b.height=m.image.height,b=b.getContext("2d"),b.drawImage(m.image,0,0),La[m.id]=b.getImageData(0,0,m.image.width,m.image.height).data),b=La[m.id],h=4*(Math.floor(h)+Math.floor(k)*m.image.width),Q.setRGB(b[h]/255,b[h+1]/255,b[h+2]/255),u(Q)):(wa=1/wa,m=(n*c-j*e)*wa,j=(n*d-j*g)*wa,c=(i*e-l*c)*
|
|
|
+wa,d=(i*g-l*d)*wa,a=a-m*h-c*k,h=b-j*h-d*k,q.save(),q.transform(m,j,c,d,a,h),q.fill(),q.restore())}}function wa(a,b,c,d,f,e,g,h,k,i,j,l,n){var m,wa;m=n.width-1;wa=n.height-1;g*=m;h*=wa;c-=a;d-=b;f-=a;e-=b;k=k*m-g;i=i*wa-h;j=j*m-g;l=l*wa-h;wa=1/(k*l-j*i);m=(l*c-i*f)*wa;i=(l*d-i*e)*wa;c=(k*f-j*c)*wa;d=(k*e-j*d)*wa;a=a-m*g-c*h;b=b-i*g-d*h;q.save();q.transform(m,i,c,d,a,b);q.clip();q.drawImage(n,0,0);q.restore()}function sc(a,b,c,d){ya[0]=255*a.r|0;ya[1]=255*a.g|0;ya[2]=255*a.b|0;ya[4]=255*b.r|0;ya[5]=
|
|
|
+255*b.g|0;ya[6]=255*b.b|0;ya[8]=255*c.r|0;ya[9]=255*c.g|0;ya[10]=255*c.b|0;ya[12]=255*d.r|0;ya[13]=255*d.g|0;ya[14]=255*d.b|0;db.putImageData(Va,0,0);nb.drawImage(hb,0,0);return ib}function yb(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function ec(a){a=0.5*(a+1);return 0>a?0:1<a?1:a}function Vb(a,b){var c=b.x-a.x,d=b.y-a.y,f=c*c+d*d;0!==f&&(f=1/Math.sqrt(f),c*=f,d*=f,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 Wb,B,ja,ba;!0===this.autoClear?this.clear():q.setTransform(1,0,0,-1,p,o);e.info.render.vertices=0;e.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){Ia.setRGB(0,0,0);bb.setRGB(0,0,0);Ya.setRGB(0,0,0);Wb=0;for(B=i.length;Wb<B;Wb++){ba=i[Wb];var ka=ba.color;ba instanceof THREE.AmbientLight?(Ia.r+=ka.r,Ia.g+=ka.g,Ia.b+=ka.b):ba instanceof THREE.DirectionalLight?(bb.r+=ka.r,bb.g+=ka.g,bb.b+=ka.b):ba instanceof THREE.PointLight&&
|
|
|
+(Ya.r+=ka.r,Ya.g+=ka.g,Ya.b+=ka.b)}}Wb=0;for(B=h.length;Wb<B;Wb++)if(ja=h[Wb],ba=ja.material,!(void 0===ba||!1===ba.visible)){Ga.empty();if(ja instanceof THREE.RenderableParticle){C=ja;C.x*=p;C.y*=o;var ka=C,Za=ja;b(ba.opacity);c(ba.blending);var tb=void 0,ub=void 0,ob=void 0,pb=void 0,fc=ja=void 0,Hc=void 0;ba instanceof THREE.ParticleBasicMaterial?null===ba.map?(ob=Za.object.scale.x,pb=Za.object.scale.y,ob*=Za.scale.x*p,pb*=Za.scale.y*o,Ga.set(ka.x-ob,ka.y-pb,ka.x+ob,ka.y+pb),!1!==ab.intersects(Ga)&&
|
|
|
+(f(ba.color.getContextStyle()),q.save(),q.translate(ka.x,ka.y),q.rotate(-Za.rotation),q.scale(ob,pb),q.fillRect(-1,-1,2,2),q.restore())):(ja=ba.map.image,fc=ja.width>>1,Hc=ja.height>>1,ob=Za.scale.x*p,pb=Za.scale.y*o,tb=ob*fc,ub=pb*Hc,Ga.set(ka.x-tb,ka.y-ub,ka.x+tb,ka.y+ub),!1!==ab.intersects(Ga)&&(q.save(),q.translate(ka.x,ka.y),q.rotate(-Za.rotation),q.scale(ob,-pb),q.translate(-fc,-Hc),q.drawImage(ja,0,0),q.restore())):ba instanceof THREE.ParticleCanvasMaterial&&(tb=Za.scale.x*p,ub=Za.scale.y*
|
|
|
o,Ga.set(ka.x-tb,ka.y-ub,ka.x+tb,ka.y+ub),!1!==ab.intersects(Ga)&&(d(ba.color.getContextStyle()),f(ba.color.getContextStyle()),q.save(),q.translate(ka.x,ka.y),q.rotate(-Za.rotation),q.scale(tb,ub),ba.program(q),q.restore()))}else if(ja instanceof THREE.RenderableLine){if(C=ja.v1,D=ja.v2,C.positionScreen.x*=p,C.positionScreen.y*=o,D.positionScreen.x*=p,D.positionScreen.y*=o,Ga.addPoint(C.positionScreen.x,C.positionScreen.y),Ga.addPoint(D.positionScreen.x,D.positionScreen.y),!0===ab.intersects(Ga)&&
|
|
|
(ka=C,Za=D,b(ba.opacity),c(ba.blending),q.beginPath(),q.moveTo(ka.positionScreen.x,ka.positionScreen.y),q.lineTo(Za.positionScreen.x,Za.positionScreen.y),ba instanceof THREE.LineBasicMaterial))ka=ba.linewidth,y!==ka&&(y=q.lineWidth=ka),ka=ba.linecap,w!==ka&&(w=q.lineCap=ka),ka=ba.linejoin,z!==ka&&(z=q.lineJoin=ka),d(ba.color.getContextStyle()),q.stroke(),Ga.inflate(2*ba.linewidth)}else if(ja instanceof THREE.RenderableFace3)C=ja.v1,D=ja.v2,F=ja.v3,C.positionScreen.x*=p,C.positionScreen.y*=o,D.positionScreen.x*=
|
|
|
-p,D.positionScreen.y*=o,F.positionScreen.x*=p,F.positionScreen.y*=o,!0===ba.overdraw&&(Tb(C.positionScreen,D.positionScreen),Tb(D.positionScreen,F.positionScreen),Tb(F.positionScreen,C.positionScreen)),Ga.add3Points(C.positionScreen.x,C.positionScreen.y,D.positionScreen.x,D.positionScreen.y,F.positionScreen.x,F.positionScreen.y),!0===ab.intersects(Ga)&&m(C,D,F,0,1,2,ja,ba,a);else if(ja instanceof THREE.RenderableFace4&&(C=ja.v1,D=ja.v2,F=ja.v3,I=ja.v4,C.positionScreen.x*=p,C.positionScreen.y*=o,D.positionScreen.x*=
|
|
|
-p,D.positionScreen.y*=o,F.positionScreen.x*=p,F.positionScreen.y*=o,I.positionScreen.x*=p,I.positionScreen.y*=o,G.positionScreen.copy(D.positionScreen),M.positionScreen.copy(I.positionScreen),!0===ba.overdraw&&(Tb(C.positionScreen,D.positionScreen),Tb(D.positionScreen,I.positionScreen),Tb(I.positionScreen,C.positionScreen),Tb(F.positionScreen,G.positionScreen),Tb(F.positionScreen,M.positionScreen)),Ga.addPoint(C.positionScreen.x,C.positionScreen.y),Ga.addPoint(D.positionScreen.x,D.positionScreen.y),
|
|
|
+p,D.positionScreen.y*=o,F.positionScreen.x*=p,F.positionScreen.y*=o,!0===ba.overdraw&&(Vb(C.positionScreen,D.positionScreen),Vb(D.positionScreen,F.positionScreen),Vb(F.positionScreen,C.positionScreen)),Ga.add3Points(C.positionScreen.x,C.positionScreen.y,D.positionScreen.x,D.positionScreen.y,F.positionScreen.x,F.positionScreen.y),!0===ab.intersects(Ga)&&m(C,D,F,0,1,2,ja,ba,a);else if(ja instanceof THREE.RenderableFace4&&(C=ja.v1,D=ja.v2,F=ja.v3,I=ja.v4,C.positionScreen.x*=p,C.positionScreen.y*=o,D.positionScreen.x*=
|
|
|
+p,D.positionScreen.y*=o,F.positionScreen.x*=p,F.positionScreen.y*=o,I.positionScreen.x*=p,I.positionScreen.y*=o,G.positionScreen.copy(D.positionScreen),M.positionScreen.copy(I.positionScreen),!0===ba.overdraw&&(Vb(C.positionScreen,D.positionScreen),Vb(D.positionScreen,I.positionScreen),Vb(I.positionScreen,C.positionScreen),Vb(F.positionScreen,G.positionScreen),Vb(F.positionScreen,M.positionScreen)),Ga.addPoint(C.positionScreen.x,C.positionScreen.y),Ga.addPoint(D.positionScreen.x,D.positionScreen.y),
|
|
|
Ga.addPoint(F.positionScreen.x,F.positionScreen.y),Ga.addPoint(I.positionScreen.x,I.positionScreen.y),!0===ab.intersects(Ga)))(ka=C,Za=D,tb=F,ub=I,ob=G,pb=M,fc=a,e.info.render.vertices+=4,e.info.render.faces++,b(ba.opacity),c(ba.blending),void 0!==ba.map&&null!==ba.map||void 0!==ba.envMap&&null!==ba.envMap)?(m(ka,Za,ub,0,1,3,ja,ba,fc),m(ob,tb,pb,1,2,3,ja,ba,fc)):(J=ka.positionScreen.x,K=ka.positionScreen.y,N=Za.positionScreen.x,O=Za.positionScreen.y,P=tb.positionScreen.x,L=tb.positionScreen.y,X=ub.positionScreen.x,
|
|
|
-H=ub.positionScreen.y,fa=ob.positionScreen.x,sa=ob.positionScreen.y,R=pb.positionScreen.x,oa=pb.positionScreen.y,ba instanceof THREE.MeshLambertMaterial||ba instanceof THREE.MeshPhongMaterial)?($.copy(ba.color),da.copy(ba.emissive),ba.vertexColors===THREE.FaceColors&&($.r*=ja.color.r,$.g*=ja.color.g,$.b*=ja.color.b),!0===lb)?!1===ba.wireframe&&ba.shading==THREE.SmoothShading&&4==ja.vertexNormalsLength?(ha.r=W.r=aa.r=Z.r=Ia.r,ha.g=W.g=aa.g=Z.g=Ia.g,ha.b=W.b=aa.b=Z.b=Ia.b,n(ja.v1.positionWorld,ja.vertexNormalsWorld[0],
|
|
|
-ha),n(ja.v2.positionWorld,ja.vertexNormalsWorld[1],W),n(ja.v4.positionWorld,ja.vertexNormalsWorld[3],aa),n(ja.v3.positionWorld,ja.vertexNormalsWorld[2],Z),ha.r=ha.r*$.r+da.r,ha.g=ha.g*$.g+da.g,ha.b=ha.b*$.b+da.b,W.r=W.r*$.r+da.r,W.g=W.g*$.g+da.g,W.b=W.b*$.b+da.b,aa.r=aa.r*$.r+da.r,aa.g=aa.g*$.g+da.g,aa.b=aa.b*$.b+da.b,Z.r=Z.r*$.r+da.r,Z.g=Z.g*$.g+da.g,Z.b=Z.b*$.b+da.b,ra=rc(ha,W,aa,Z),r(J,K,N,O,X,H),wa(J,K,N,O,X,H,0,0,1,0,0,1,ra),r(fa,sa,P,L,R,oa),wa(fa,sa,P,L,R,oa,1,0,1,1,0,1,ra)):(Q.r=Ia.r,Q.g=
|
|
|
+H=ub.positionScreen.y,fa=ob.positionScreen.x,sa=ob.positionScreen.y,R=pb.positionScreen.x,oa=pb.positionScreen.y,ba instanceof THREE.MeshLambertMaterial||ba instanceof THREE.MeshPhongMaterial)?($.copy(ba.color),da.copy(ba.emissive),ba.vertexColors===THREE.FaceColors&&($.r*=ja.color.r,$.g*=ja.color.g,$.b*=ja.color.b),!0===lb)?!1===ba.wireframe&&ba.shading==THREE.SmoothShading&&4==ja.vertexNormalsLength?(ha.r=T.r=aa.r=Z.r=Ia.r,ha.g=T.g=aa.g=Z.g=Ia.g,ha.b=T.b=aa.b=Z.b=Ia.b,n(ja.v1.positionWorld,ja.vertexNormalsWorld[0],
|
|
|
+ha),n(ja.v2.positionWorld,ja.vertexNormalsWorld[1],T),n(ja.v4.positionWorld,ja.vertexNormalsWorld[3],aa),n(ja.v3.positionWorld,ja.vertexNormalsWorld[2],Z),ha.r=ha.r*$.r+da.r,ha.g=ha.g*$.g+da.g,ha.b=ha.b*$.b+da.b,T.r=T.r*$.r+da.r,T.g=T.g*$.g+da.g,T.b=T.b*$.b+da.b,aa.r=aa.r*$.r+da.r,aa.g=aa.g*$.g+da.g,aa.b=aa.b*$.b+da.b,Z.r=Z.r*$.r+da.r,Z.g=Z.g*$.g+da.g,Z.b=Z.b*$.b+da.b,ra=sc(ha,T,aa,Z),r(J,K,N,O,X,H),wa(J,K,N,O,X,H,0,0,1,0,0,1,ra),r(fa,sa,P,L,R,oa),wa(fa,sa,P,L,R,oa,1,0,1,1,0,1,ra)):(Q.r=Ia.r,Q.g=
|
|
|
Ia.g,Q.b=Ia.b,n(ja.centroidWorld,ja.normalWorld,Q),Q.r=Q.r*$.r+da.r,Q.g=Q.g*$.g+da.g,Q.b=Q.b*$.b+da.b,t(J,K,N,O,P,L,X,H),!0===ba.wireframe?s(Q,ba.wireframeLinewidth,ba.wireframeLinecap,ba.wireframeLinejoin):u(Q)):(Q.r=$.r+da.r,Q.g=$.g+da.g,Q.b=$.b+da.b,t(J,K,N,O,P,L,X,H),!0===ba.wireframe?s(Q,ba.wireframeLinewidth,ba.wireframeLinecap,ba.wireframeLinejoin):u(Q)):ba instanceof THREE.MeshBasicMaterial?(Q.copy(ba.color),ba.vertexColors===THREE.FaceColors&&(Q.r*=ja.color.r,Q.g*=ja.color.g,Q.b*=ja.color.b),
|
|
|
-t(J,K,N,O,P,L,X,H),!0===ba.wireframe?s(Q,ba.wireframeLinewidth,ba.wireframeLinecap,ba.wireframeLinejoin):u(Q)):ba instanceof THREE.MeshNormalMaterial?(Q.r=ec(ja.normalWorld.x),Q.g=ec(ja.normalWorld.y),Q.b=ec(ja.normalWorld.z),t(J,K,N,O,P,L,X,H),!0===ba.wireframe?s(Q,ba.wireframeLinewidth,ba.wireframeLinecap,ba.wireframeLinejoin):u(Q)):ba instanceof THREE.MeshDepthMaterial&&(Ea=l.near,ua=l.far,ha.r=ha.g=ha.b=1-wb(ka.positionScreen.z,Ea,ua),W.r=W.g=W.b=1-wb(Za.positionScreen.z,Ea,ua),aa.r=aa.g=aa.b=
|
|
|
-1-wb(ub.positionScreen.z,Ea,ua),Z.r=Z.g=Z.b=1-wb(tb.positionScreen.z,Ea,ua),ra=rc(ha,W,aa,Z),r(J,K,N,O,X,H),wa(J,K,N,O,X,H,0,0,1,0,0,1,ra),r(fa,sa,P,L,R,oa),wa(fa,sa,P,L,R,oa,1,0,1,1,0,1,ra));Pa.addRectangle(Ga)}q.setTransform(1,0,0,1,0,0)}}};
|
|
|
+t(J,K,N,O,P,L,X,H),!0===ba.wireframe?s(Q,ba.wireframeLinewidth,ba.wireframeLinecap,ba.wireframeLinejoin):u(Q)):ba instanceof THREE.MeshNormalMaterial?(Q.r=ec(ja.normalWorld.x),Q.g=ec(ja.normalWorld.y),Q.b=ec(ja.normalWorld.z),t(J,K,N,O,P,L,X,H),!0===ba.wireframe?s(Q,ba.wireframeLinewidth,ba.wireframeLinecap,ba.wireframeLinejoin):u(Q)):ba instanceof THREE.MeshDepthMaterial&&(Ea=l.near,ua=l.far,ha.r=ha.g=ha.b=1-yb(ka.positionScreen.z,Ea,ua),T.r=T.g=T.b=1-yb(Za.positionScreen.z,Ea,ua),aa.r=aa.g=aa.b=
|
|
|
+1-yb(ub.positionScreen.z,Ea,ua),Z.r=Z.g=Z.b=1-yb(tb.positionScreen.z,Ea,ua),ra=sc(ha,T,aa,Z),r(J,K,N,O,X,H),wa(J,K,N,O,X,H,0,0,1,0,0,1,ra),r(fa,sa,P,L,R,oa),wa(fa,sa,P,L,R,oa,1,0,1,1,0,1,ra));Pa.addRectangle(Ga)}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 {\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 mPosition = modelMatrix * skinned;\n#endif\n#if defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 mPosition = modelMatrix * vec4( morphed, 1.0 );\n#endif\n#if ! defined( USE_MORPHTARGETS ) && ! defined( USE_SKINNING )\nvec4 mPosition = modelMatrix * vec4( position, 1.0 );\n#endif\n#endif",
|
|
@@ -345,35 +345,35 @@ function c(a,b){var c=b.geometry,g=a.faces3,h=a.faces4,i=3*g.length+4*h.length,j
|
|
|
new Float32Array(2*i)}b.geometry.skinWeights.length&&b.geometry.skinIndices.length&&(a.__skinIndexArray=new Float32Array(4*i),a.__skinWeightArray=new Float32Array(4*i));a.__faceArray=new Uint16Array(3*j);a.__lineArray=new Uint16Array(2*h);if(a.numMorphTargets){a.__morphTargetsArrays=[];c=0;for(l=a.numMorphTargets;c<l;c++)a.__morphTargetsArrays.push(new Float32Array(3*i))}if(a.numMorphNormals){a.__morphNormalsArrays=[];c=0;for(l=a.numMorphNormals;c<l;c++)a.__morphNormalsArrays.push(new Float32Array(3*
|
|
|
i))}a.__webglFaceCount=3*j;a.__webglLineCount=2*h;if(g.attributes){void 0===a.__webglCustomAttributesList&&(a.__webglCustomAttributesList=[]);for(var o in g.attributes){var j=g.attributes[o],c={},p;for(p in j)c[p]=j[p];if(!c.__webglInitialized||c.createUniqueBuffers)c.__webglInitialized=!0,h=1,"v2"===c.type?h=2:"v3"===c.type?h=3:"v4"===c.type?h=4:"c"===c.type&&(h=3),c.size=h,c.array=new Float32Array(i*h),c.buffer=k.createBuffer(),c.buffer.belongsToAttribute=o,j.needsUpdate=!0,c.__original=j;a.__webglCustomAttributesList.push(c)}}a.__inittedArrays=
|
|
|
!0}function d(a,b){if(a.material&&!(a.material instanceof THREE.MeshFaceMaterial))return a.material;if(0<=b.materialIndex)return a.geometry.materials[b.materialIndex]}function f(a){return a instanceof THREE.MeshBasicMaterial&&!a.envMap||a instanceof THREE.MeshDepthMaterial?!1:a&&void 0!==a.shading&&a.shading===THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading}function e(a){return a.map||a.lightMap||a.bumpMap||a.normalMap||a.specularMap||a instanceof THREE.ShaderMaterial?!0:!1}function g(a){var b,
|
|
|
-c,d;for(b in a.attributes)d="index"===b?k.ELEMENT_ARRAY_BUFFER:k.ARRAY_BUFFER,c=a.attributes[b],c.buffer=k.createBuffer(),k.bindBuffer(d,c.buffer),k.bufferData(d,c.array,k.STATIC_DRAW)}function h(a,b,c){var d,f,e,g,h=a.vertices;g=h.length;var i=a.colors,j=i.length,l=a.__vertexArray,n=a.__colorArray,m=a.__sortArray,o=a.verticesNeedUpdate,p=a.colorsNeedUpdate,q=a.__webglCustomAttributesList;if(c.sortParticles){db.copy(hb);db.multiplySelf(c.matrixWorld);for(d=0;d<g;d++)f=h[d],Va.copy(f),db.multiplyVector3(Va),
|
|
|
-m[d]=[Va.z,d];m.sort(function(a,b){return b[0]-a[0]});for(d=0;d<g;d++)f=h[m[d][1]],e=3*d,l[e]=f.x,l[e+1]=f.y,l[e+2]=f.z;for(d=0;d<j;d++)e=3*d,f=i[m[d][1]],n[e]=f.r,n[e+1]=f.g,n[e+2]=f.b;if(q){i=0;for(j=q.length;i<j;i++)if(h=q[i],void 0===h.boundTo||"vertices"===h.boundTo)if(e=0,f=h.value.length,1===h.size)for(d=0;d<f;d++)g=m[d][1],h.array[d]=h.value[g];else if(2===h.size)for(d=0;d<f;d++)g=m[d][1],g=h.value[g],h.array[e]=g.x,h.array[e+1]=g.y,e+=2;else if(3===h.size)if("c"===h.type)for(d=0;d<f;d++)g=
|
|
|
-m[d][1],g=h.value[g],h.array[e]=g.r,h.array[e+1]=g.g,h.array[e+2]=g.b,e+=3;else for(d=0;d<f;d++)g=m[d][1],g=h.value[g],h.array[e]=g.x,h.array[e+1]=g.y,h.array[e+2]=g.z,e+=3;else if(4===h.size)for(d=0;d<f;d++)g=m[d][1],g=h.value[g],h.array[e]=g.x,h.array[e+1]=g.y,h.array[e+2]=g.z,h.array[e+3]=g.w,e+=4}}else{if(o)for(d=0;d<g;d++)f=h[d],e=3*d,l[e]=f.x,l[e+1]=f.y,l[e+2]=f.z;if(p)for(d=0;d<j;d++)f=i[d],e=3*d,n[e]=f.r,n[e+1]=f.g,n[e+2]=f.b;if(q){i=0;for(j=q.length;i<j;i++)if(h=q[i],h.needsUpdate&&(void 0===
|
|
|
-h.boundTo||"vertices"===h.boundTo))if(f=h.value.length,e=0,1===h.size)for(d=0;d<f;d++)h.array[d]=h.value[d];else if(2===h.size)for(d=0;d<f;d++)g=h.value[d],h.array[e]=g.x,h.array[e+1]=g.y,e+=2;else if(3===h.size)if("c"===h.type)for(d=0;d<f;d++)g=h.value[d],h.array[e]=g.r,h.array[e+1]=g.g,h.array[e+2]=g.b,e+=3;else for(d=0;d<f;d++)g=h.value[d],h.array[e]=g.x,h.array[e+1]=g.y,h.array[e+2]=g.z,e+=3;else if(4===h.size)for(d=0;d<f;d++)g=h.value[d],h.array[e]=g.x,h.array[e+1]=g.y,h.array[e+2]=g.z,h.array[e+
|
|
|
-3]=g.w,e+=4}}if(o||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,l,b);if(p||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,n,b);if(q){i=0;for(j=q.length;i<j;i++)if(h=q[i],h.needsUpdate||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.bufferData(k.ARRAY_BUFFER,h.array,b)}}function i(a,b,c){var d=a.attributes,e=d.index,f=d.position,g=d.normal,h=d.uv,i=d.color,d=d.tangent;a.elementsNeedUpdate&&void 0!==
|
|
|
-e&&(k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.buffer),k.bufferData(k.ELEMENT_ARRAY_BUFFER,e.array,b));a.verticesNeedUpdate&&void 0!==f&&(k.bindBuffer(k.ARRAY_BUFFER,f.buffer),k.bufferData(k.ARRAY_BUFFER,f.array,b));a.normalsNeedUpdate&&void 0!==g&&(k.bindBuffer(k.ARRAY_BUFFER,g.buffer),k.bufferData(k.ARRAY_BUFFER,g.array,b));a.uvsNeedUpdate&&void 0!==h&&(k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.bufferData(k.ARRAY_BUFFER,h.array,b));a.colorsNeedUpdate&&void 0!==i&&(k.bindBuffer(k.ARRAY_BUFFER,i.buffer),
|
|
|
-k.bufferData(k.ARRAY_BUFFER,i.array,b));a.tangentsNeedUpdate&&void 0!==d&&(k.bindBuffer(k.ARRAY_BUFFER,d.buffer),k.bufferData(k.ARRAY_BUFFER,d.array,b));if(c)for(var j in a.attributes)delete a.attributes[j].array}function j(a,b){return b.z-a.z}function l(a,b){return b[1]-a[1]}function m(a,b,c){if(a.length)for(var d=0,e=a.length;d<e;d++)$=ha=null,aa=Z=Ea=La=Ua=cb=ua=-1,ib=!0,a[d].render(b,c,bb,Ya),$=ha=null,aa=Z=Ea=La=Ua=cb=ua=-1,ib=!0}function n(a,b,c,d,e,f,g,h){var i,k,j,l;b?(k=a.length-1,l=b=-1):
|
|
|
-(k=0,b=a.length,l=1);for(var n=k;n!==b;n+=l)if(i=a[n],i.render){k=i.object;j=i.buffer;if(h)i=h;else{i=i[c];if(!i)continue;g&&R.setBlending(i.blending,i.blendEquation,i.blendSrc,i.blendDst);R.setDepthTest(i.depthTest);R.setDepthWrite(i.depthWrite);z(i.polygonOffset,i.polygonOffsetFactor,i.polygonOffsetUnits)}R.setMaterialFaces(i);j instanceof THREE.BufferGeometry?R.renderBufferDirect(d,e,f,i,j,k):R.renderBuffer(d,e,f,i,j,k)}}function p(a,b,c,d,e,f,g){for(var h,i,k=0,j=a.length;k<j;k++)if(h=a[k],i=
|
|
|
-h.object,i.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&R.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);R.setDepthTest(h.depthTest);R.setDepthWrite(h.depthWrite);z(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}R.renderImmediateObject(c,d,e,h,i)}}function o(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}function q(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function s(a){for(var b in a.attributes)a.attributes[b].needsUpdate=
|
|
|
-!1}function t(a,b){for(var c=a.length-1;0<=c;c--)a[c].object===b&&a.splice(c,1)}function A(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function u(a,b,c,d,e){Ka=0;d.needsUpdate&&(d.program&&R.deallocateMaterial(d),R.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(R.maxMorphTargets));var f=!1,g=d.program,h=g.uniforms,i=d.uniforms;g!==ha&&(k.useProgram(g),ha=g,f=!0);d.id!==aa&&(aa=d.id,f=!0);if(f||
|
|
|
-a!==$)k.uniformMatrix4fv(h.projectionMatrix,!1,a._projectionMatrixArray),a!==$&&($=a);if(d.skinning)if(ac&&e.useVertexTexture){if(null!==h.boneTexture){var j=r();k.uniform1i(h.boneTexture,j);R.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(ib){for(var l=0,n=0,m=0,o,p,q,t,s=nb,u=s.directional.colors,z=s.directional.positions,A=s.point.colors,B=s.point.positions,D=s.point.distances,C=s.spot.colors,G=s.spot.positions,I=s.spot.distances,H=s.spot.directions,Q=s.spot.angles,K=s.spot.exponents,W=s.hemi.skyColors,L=s.hemi.groundColors,N=s.hemi.positions,da=0,O=0,P=0,X=0,c=o=q=q=p=0,f=b.length;c<f;c++)j=b[c],!j.onlyShadow&&j.visible&&(o=j.color,t=j.intensity,p=j.distance,
|
|
|
+c,d;for(b in a.attributes)d="index"===b?k.ELEMENT_ARRAY_BUFFER:k.ARRAY_BUFFER,c=a.attributes[b],c.buffer=k.createBuffer(),k.bindBuffer(d,c.buffer),k.bufferData(d,c.array,k.STATIC_DRAW)}function h(a,b,c){var d,e,f,g,h=a.vertices;g=h.length;var i=a.colors,j=i.length,l=a.__vertexArray,n=a.__colorArray,m=a.__sortArray,o=a.verticesNeedUpdate,p=a.colorsNeedUpdate,q=a.__webglCustomAttributesList;if(c.sortParticles){db.copy(hb);db.multiplySelf(c.matrixWorld);for(d=0;d<g;d++)e=h[d],Va.copy(e),db.multiplyVector3(Va),
|
|
|
+m[d]=[Va.z,d];m.sort(function(a,b){return b[0]-a[0]});for(d=0;d<g;d++)e=h[m[d][1]],f=3*d,l[f]=e.x,l[f+1]=e.y,l[f+2]=e.z;for(d=0;d<j;d++)f=3*d,e=i[m[d][1]],n[f]=e.r,n[f+1]=e.g,n[f+2]=e.b;if(q){i=0;for(j=q.length;i<j;i++)if(h=q[i],void 0===h.boundTo||"vertices"===h.boundTo)if(f=0,e=h.value.length,1===h.size)for(d=0;d<e;d++)g=m[d][1],h.array[d]=h.value[g];else if(2===h.size)for(d=0;d<e;d++)g=m[d][1],g=h.value[g],h.array[f]=g.x,h.array[f+1]=g.y,f+=2;else if(3===h.size)if("c"===h.type)for(d=0;d<e;d++)g=
|
|
|
+m[d][1],g=h.value[g],h.array[f]=g.r,h.array[f+1]=g.g,h.array[f+2]=g.b,f+=3;else for(d=0;d<e;d++)g=m[d][1],g=h.value[g],h.array[f]=g.x,h.array[f+1]=g.y,h.array[f+2]=g.z,f+=3;else if(4===h.size)for(d=0;d<e;d++)g=m[d][1],g=h.value[g],h.array[f]=g.x,h.array[f+1]=g.y,h.array[f+2]=g.z,h.array[f+3]=g.w,f+=4}}else{if(o)for(d=0;d<g;d++)e=h[d],f=3*d,l[f]=e.x,l[f+1]=e.y,l[f+2]=e.z;if(p)for(d=0;d<j;d++)e=i[d],f=3*d,n[f]=e.r,n[f+1]=e.g,n[f+2]=e.b;if(q){i=0;for(j=q.length;i<j;i++)if(h=q[i],h.needsUpdate&&(void 0===
|
|
|
+h.boundTo||"vertices"===h.boundTo))if(e=h.value.length,f=0,1===h.size)for(d=0;d<e;d++)h.array[d]=h.value[d];else if(2===h.size)for(d=0;d<e;d++)g=h.value[d],h.array[f]=g.x,h.array[f+1]=g.y,f+=2;else if(3===h.size)if("c"===h.type)for(d=0;d<e;d++)g=h.value[d],h.array[f]=g.r,h.array[f+1]=g.g,h.array[f+2]=g.b,f+=3;else for(d=0;d<e;d++)g=h.value[d],h.array[f]=g.x,h.array[f+1]=g.y,h.array[f+2]=g.z,f+=3;else if(4===h.size)for(d=0;d<e;d++)g=h.value[d],h.array[f]=g.x,h.array[f+1]=g.y,h.array[f+2]=g.z,h.array[f+
|
|
|
+3]=g.w,f+=4}}if(o||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,l,b);if(p||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,n,b);if(q){i=0;for(j=q.length;i<j;i++)if(h=q[i],h.needsUpdate||c.sortParticles)k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.bufferData(k.ARRAY_BUFFER,h.array,b)}}function i(a,b,c){var d=a.attributes,f=d.index,e=d.position,g=d.normal,h=d.uv,i=d.color,d=d.tangent;a.elementsNeedUpdate&&void 0!==
|
|
|
+f&&(k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,f.buffer),k.bufferData(k.ELEMENT_ARRAY_BUFFER,f.array,b));a.verticesNeedUpdate&&void 0!==e&&(k.bindBuffer(k.ARRAY_BUFFER,e.buffer),k.bufferData(k.ARRAY_BUFFER,e.array,b));a.normalsNeedUpdate&&void 0!==g&&(k.bindBuffer(k.ARRAY_BUFFER,g.buffer),k.bufferData(k.ARRAY_BUFFER,g.array,b));a.uvsNeedUpdate&&void 0!==h&&(k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.bufferData(k.ARRAY_BUFFER,h.array,b));a.colorsNeedUpdate&&void 0!==i&&(k.bindBuffer(k.ARRAY_BUFFER,i.buffer),
|
|
|
+k.bufferData(k.ARRAY_BUFFER,i.array,b));a.tangentsNeedUpdate&&void 0!==d&&(k.bindBuffer(k.ARRAY_BUFFER,d.buffer),k.bufferData(k.ARRAY_BUFFER,d.array,b));if(c)for(var j in a.attributes)delete a.attributes[j].array}function j(a,b){return b.z-a.z}function l(a,b){return b[1]-a[1]}function m(a,b,c){if(a.length)for(var d=0,f=a.length;d<f;d++)$=ha=null,aa=Z=Ea=La=Ua=cb=ua=-1,ib=!0,a[d].render(b,c,bb,Ya),$=ha=null,aa=Z=Ea=La=Ua=cb=ua=-1,ib=!0}function n(a,b,c,d,f,e,g,h){var k,i,j,l;b?(i=a.length-1,l=b=-1):
|
|
|
+(i=0,b=a.length,l=1);for(var n=i;n!==b;n+=l)if(k=a[n],k.render){i=k.object;j=k.buffer;if(h)k=h;else{k=k[c];if(!k)continue;g&&R.setBlending(k.blending,k.blendEquation,k.blendSrc,k.blendDst);R.setDepthTest(k.depthTest);R.setDepthWrite(k.depthWrite);z(k.polygonOffset,k.polygonOffsetFactor,k.polygonOffsetUnits)}R.setMaterialFaces(k);j instanceof THREE.BufferGeometry?R.renderBufferDirect(d,f,e,k,j,i):R.renderBuffer(d,f,e,k,j,i)}}function p(a,b,c,d,f,e,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;e&&R.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);R.setDepthTest(h.depthTest);R.setDepthWrite(h.depthWrite);z(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}R.renderImmediateObject(c,d,f,h,k)}}function o(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}function q(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function s(a){for(var b in a.attributes)a.attributes[b].needsUpdate=
|
|
|
+!1}function t(a,b){for(var c=a.length-1;0<=c;c--)a[c].object===b&&a.splice(c,1)}function A(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function u(a,b,c,d,f){Ka=0;d.needsUpdate&&(d.program&&R.deallocateMaterial(d),R.initMaterial(d,b,c,f),d.needsUpdate=!1);d.morphTargets&&!f.__webglMorphTargetInfluences&&(f.__webglMorphTargetInfluences=new Float32Array(R.maxMorphTargets));var e=!1,g=d.program,h=g.uniforms,i=d.uniforms;g!==ha&&(k.useProgram(g),ha=g,e=!0);d.id!==aa&&(aa=d.id,e=!0);if(e||
|
|
|
+a!==$)k.uniformMatrix4fv(h.projectionMatrix,!1,a._projectionMatrixArray),a!==$&&($=a);if(d.skinning)if(ac&&f.useVertexTexture){if(null!==h.boneTexture){var j=r();k.uniform1i(h.boneTexture,j);R.setTexture(f.boneTexture,j)}}else null!==h.boneGlobalMatrices&&k.uniformMatrix4fv(h.boneGlobalMatrices,!1,f.boneMatrices);if(e){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(ib){for(var l=0,n=0,m=0,o,p,q,t,s=nb,u=s.directional.colors,z=s.directional.positions,A=s.point.colors,B=s.point.positions,D=s.point.distances,C=s.spot.colors,G=s.spot.positions,I=s.spot.distances,H=s.spot.directions,Q=s.spot.angles,K=s.spot.exponents,T=s.hemi.skyColors,L=s.hemi.groundColors,N=s.hemi.positions,da=0,O=0,P=0,X=0,c=o=q=q=p=0,e=b.length;c<e;c++)j=b[c],!j.onlyShadow&&j.visible&&(o=j.color,t=j.intensity,p=j.distance,
|
|
|
j instanceof THREE.AmbientLight?R.gammaInput?(l+=o.r*o.r,n+=o.g*o.g,m+=o.b*o.b):(l+=o.r,n+=o.g,m+=o.b):j instanceof THREE.DirectionalLight?(p=3*da,R.gammaInput?y(u,p,o,t*t):w(u,p,o,t),ya.copy(j.matrixWorld.getPosition()),ya.subSelf(j.target.matrixWorld.getPosition()),ya.normalize(),z[p]=ya.x,z[p+1]=ya.y,z[p+2]=ya.z,da+=1):j instanceof THREE.PointLight?(q=3*O,R.gammaInput?y(A,q,o,t*t):w(A,q,o,t),t=j.matrixWorld.getPosition(),B[q]=t.x,B[q+1]=t.y,B[q+2]=t.z,D[O]=p,O+=1):j instanceof THREE.SpotLight?
|
|
|
-(q=3*P,R.gammaInput?y(C,q,o,t*t):w(C,q,o,t),t=j.matrixWorld.getPosition(),G[q]=t.x,G[q+1]=t.y,G[q+2]=t.z,I[P]=p,ya.copy(t),ya.subSelf(j.target.matrixWorld.getPosition()),ya.normalize(),H[q]=ya.x,H[q+1]=ya.y,H[q+2]=ya.z,Q[P]=Math.cos(j.angle),K[P]=j.exponent,P+=1):j instanceof THREE.HemisphereLight&&(p=j.color,q=j.groundColor,o=3*X,R.gammaInput?(t*=t,y(W,o,p,t),y(L,o,q,t)):(w(W,o,p,t),w(L,o,q,t)),t=j.matrixWorld.getPosition(),N[o]=t.x,N[o+1]=t.y,N[o+2]=t.z,X+=1));c=3*da;for(f=u.length;c<f;c++)u[c]=
|
|
|
-0;c=3*O;for(f=A.length;c<f;c++)A[c]=0;c=3*P;for(f=C.length;c<f;c++)C[c]=0;c=3*X;for(f=W.length;c<f;c++)W[c]=0;c=3*X;for(f=L.length;c<f;c++)L[c]=0;s.directional.length=da;s.point.length=O;s.spot.length=P;s.hemi.length=X;s.ambient[0]=l;s.ambient[1]=n;s.ambient[2]=m;ib=!1}c=nb;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;
|
|
|
+(q=3*P,R.gammaInput?y(C,q,o,t*t):w(C,q,o,t),t=j.matrixWorld.getPosition(),G[q]=t.x,G[q+1]=t.y,G[q+2]=t.z,I[P]=p,ya.copy(t),ya.subSelf(j.target.matrixWorld.getPosition()),ya.normalize(),H[q]=ya.x,H[q+1]=ya.y,H[q+2]=ya.z,Q[P]=Math.cos(j.angle),K[P]=j.exponent,P+=1):j instanceof THREE.HemisphereLight&&(p=j.color,q=j.groundColor,o=3*X,R.gammaInput?(t*=t,y(T,o,p,t),y(L,o,q,t)):(w(T,o,p,t),w(L,o,q,t)),t=j.matrixWorld.getPosition(),N[o]=t.x,N[o+1]=t.y,N[o+2]=t.z,X+=1));c=3*da;for(e=u.length;c<e;c++)u[c]=
|
|
|
+0;c=3*O;for(e=A.length;c<e;c++)A[c]=0;c=3*P;for(e=C.length;c<e;c++)C[c]=0;c=3*X;for(e=T.length;c<e;c++)T[c]=0;c=3*X;for(e=L.length;c<e;c++)L[c]=0;s.directional.length=da;s.point.length=O;s.spot.length=P;s.hemi.length=X;s.ambient[0]=l;s.ambient[1]=n;s.ambient[2]=m;ib=!1}c=nb;i.ambientLightColor.value=c.ambient;i.directionalLightColor.value=c.directional.colors;i.directionalLightDirection.value=c.directional.positions;i.pointLightColor.value=c.point.colors;i.pointLightPosition.value=c.point.positions;
|
|
|
i.pointLightDistance.value=c.point.distances;i.spotLightColor.value=c.spot.colors;i.spotLightPosition.value=c.spot.positions;i.spotLightDistance.value=c.spot.distances;i.spotLightDirection.value=c.spot.directions;i.spotLightAngle.value=c.spot.angles;i.spotLightExponent.value=c.spot.exponents;i.hemisphereLightSkyColor.value=c.hemi.skyColors;i.hemisphereLightGroundColor.value=c.hemi.groundColors;i.hemisphereLightPosition.value=c.hemi.positions}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||
|
|
|
d instanceof THREE.MeshPhongMaterial){i.opacity.value=d.opacity;R.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 Z;d.map?Z=d.map:d.specularMap?Z=d.specularMap:d.normalMap?Z=d.normalMap:d.bumpMap&&(Z=d.bumpMap);void 0!==Z&&(c=Z.offset,
|
|
|
Z=Z.repeat,i.offsetRepeat.value.set(c.x,c.y,Z.x,Z.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.ParticleBasicMaterial?(i.psColor.value=d.color,i.opacity.value=
|
|
|
d.opacity,i.size.value=d.size,i.scale.value=J.height/2,i.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(i.shininess.value=d.shininess,R.gammaInput?(i.ambient.value.copyGammaToLinear(d.ambient),i.emissive.value.copyGammaToLinear(d.emissive),i.specular.value.copyGammaToLinear(d.specular)):(i.ambient.value=d.ambient,i.emissive.value=d.emissive,i.specular.value=d.specular),d.wrapAround&&i.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(R.gammaInput?(i.ambient.value.copyGammaToLinear(d.ambient),
|
|
|
-i.emissive.value.copyGammaToLinear(d.emissive)):(i.ambient.value=d.ambient,i.emissive.value=d.emissive),d.wrapAround&&i.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?(i.mNear.value=a.near,i.mFar.value=a.far,i.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(i.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&i.shadowMatrix){c=Z=0;for(f=b.length;c<f;c++)if(j=b[c],j.castShadow&&(j instanceof THREE.SpotLight||j instanceof THREE.DirectionalLight&&!j.shadowCascade))i.shadowMap.value[Z]=
|
|
|
-j.shadowMap,i.shadowMapSize.value[Z]=j.shadowMapSize,i.shadowMatrix.value[Z]=j.shadowMatrix,i.shadowDarkness.value[Z]=j.shadowDarkness,i.shadowBias.value[Z]=j.shadowBias,Z++}b=d.uniformsList;i=0;for(Z=b.length;i<Z;i++)if(f=g.uniforms[b[i][1]])if(c=b[i][0],l=c.type,j=c.value,"i"===l)k.uniform1i(f,j);else if("f"===l)k.uniform1f(f,j);else if("v2"===l)k.uniform2f(f,j.x,j.y);else if("v3"===l)k.uniform3f(f,j.x,j.y,j.z);else if("v4"===l)k.uniform4f(f,j.x,j.y,j.z,j.w);else if("c"===l)k.uniform3f(f,j.r,j.g,
|
|
|
-j.b);else if("iv1"===l)k.uniform1iv(f,j);else if("iv"===l)k.uniform3iv(f,j);else if("fv1"===l)k.uniform1fv(f,j);else if("fv"===l)k.uniform3fv(f,j);else if("v2v"===l){void 0===c._array&&(c._array=new Float32Array(2*j.length));l=0;for(n=j.length;l<n;l++)m=2*l,c._array[m]=j[l].x,c._array[m+1]=j[l].y;k.uniform2fv(f,c._array)}else if("v3v"===l){void 0===c._array&&(c._array=new Float32Array(3*j.length));l=0;for(n=j.length;l<n;l++)m=3*l,c._array[m]=j[l].x,c._array[m+1]=j[l].y,c._array[m+2]=j[l].z;k.uniform3fv(f,
|
|
|
-c._array)}else if("v4v"===l){void 0===c._array&&(c._array=new Float32Array(4*j.length));l=0;for(n=j.length;l<n;l++)m=4*l,c._array[m]=j[l].x,c._array[m+1]=j[l].y,c._array[m+2]=j[l].z,c._array[m+3]=j[l].w;k.uniform4fv(f,c._array)}else if("m4"===l)void 0===c._array&&(c._array=new Float32Array(16)),j.flattenToArray(c._array),k.uniformMatrix4fv(f,!1,c._array);else if("m4v"===l){void 0===c._array&&(c._array=new Float32Array(16*j.length));l=0;for(n=j.length;l<n;l++)j[l].flattenToArrayOffset(c._array,16*
|
|
|
-l);k.uniformMatrix4fv(f,!1,c._array)}else if("t"===l){if(m=j,j=r(),k.uniform1i(f,j),m)if(m.image instanceof Array&&6===m.image.length){if(c=m,f=j,6===c.image.length)if(c.needsUpdate){c.image.__webglTextureCube||(c.image.__webglTextureCube=k.createTexture());k.activeTexture(k.TEXTURE0+f);k.bindTexture(k.TEXTURE_CUBE_MAP,c.image.__webglTextureCube);k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,c.flipY);f=c instanceof THREE.CompressedTexture;j=[];for(l=0;6>l;l++)R.autoScaleCubemaps&&!f?(n=j,m=l,s=c.image[l],z=
|
|
|
-Dc,s.width<=z&&s.height<=z||(A=Math.max(s.width,s.height),u=Math.floor(s.width*z/A),z=Math.floor(s.height*z/A),A=document.createElement("canvas"),A.width=u,A.height=z,A.getContext("2d").drawImage(s,0,0,s.width,s.height,0,0,u,z),s=A),n[m]=s):j[l]=c.image[l];l=j[0];n=0===(l.width&l.width-1)&&0===(l.height&l.height-1);m=M(c.format);s=M(c.type);F(k.TEXTURE_CUBE_MAP,c,n);for(l=0;6>l;l++)if(f){z=j[l].mipmaps;A=0;for(B=z.length;A<B;A++)u=z[A],k.compressedTexImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+l,A,m,u.width,
|
|
|
-u.height,0,u.data)}else k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,m,m,s,j[l]);c.generateMipmaps&&n&&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 m instanceof THREE.WebGLRenderTargetCube?(c=m,k.activeTexture(k.TEXTURE0+j),k.bindTexture(k.TEXTURE_CUBE_MAP,c.__webglTexture)):R.setTexture(m,j)}else if("tv"===l){void 0===c._array&&(c._array=[]);l=0;for(n=c.value.length;l<
|
|
|
-n;l++)c._array[l]=r();k.uniform1iv(f,c._array);l=0;for(n=c.value.length;l<n;l++)m=c.value[l],j=c._array[l],m&&R.setTexture(m,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 r(){var a=Ka;a>=qc&&console.warn("Trying to use "+a+" texture units while this GPU supports only "+qc);Ka+=1;return a}function B(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function y(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 w(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function z(a,b,c){gb!==a&&(a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL),gb=a);if(a&&(vb!==b||Sb!==c))k.polygonOffset(b,c),vb=b,Sb=c}function C(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 D(a,b){var c;"fragment"===a?c=k.createShader(k.FRAGMENT_SHADER):"vertex"===a&&(c=k.createShader(k.VERTEX_SHADER));k.shaderSource(c,
|
|
|
+i.emissive.value.copyGammaToLinear(d.emissive)):(i.ambient.value=d.ambient,i.emissive.value=d.emissive),d.wrapAround&&i.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?(i.mNear.value=a.near,i.mFar.value=a.far,i.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(i.opacity.value=d.opacity);if(f.receiveShadow&&!d._shadowPass&&i.shadowMatrix){c=Z=0;for(e=b.length;c<e;c++)if(j=b[c],j.castShadow&&(j instanceof THREE.SpotLight||j instanceof THREE.DirectionalLight&&!j.shadowCascade))i.shadowMap.value[Z]=
|
|
|
+j.shadowMap,i.shadowMapSize.value[Z]=j.shadowMapSize,i.shadowMatrix.value[Z]=j.shadowMatrix,i.shadowDarkness.value[Z]=j.shadowDarkness,i.shadowBias.value[Z]=j.shadowBias,Z++}b=d.uniformsList;i=0;for(Z=b.length;i<Z;i++)if(e=g.uniforms[b[i][1]])if(c=b[i][0],l=c.type,j=c.value,"i"===l)k.uniform1i(e,j);else if("f"===l)k.uniform1f(e,j);else if("v2"===l)k.uniform2f(e,j.x,j.y);else if("v3"===l)k.uniform3f(e,j.x,j.y,j.z);else if("v4"===l)k.uniform4f(e,j.x,j.y,j.z,j.w);else if("c"===l)k.uniform3f(e,j.r,j.g,
|
|
|
+j.b);else if("iv1"===l)k.uniform1iv(e,j);else if("iv"===l)k.uniform3iv(e,j);else if("fv1"===l)k.uniform1fv(e,j);else if("fv"===l)k.uniform3fv(e,j);else if("v2v"===l){void 0===c._array&&(c._array=new Float32Array(2*j.length));l=0;for(n=j.length;l<n;l++)m=2*l,c._array[m]=j[l].x,c._array[m+1]=j[l].y;k.uniform2fv(e,c._array)}else if("v3v"===l){void 0===c._array&&(c._array=new Float32Array(3*j.length));l=0;for(n=j.length;l<n;l++)m=3*l,c._array[m]=j[l].x,c._array[m+1]=j[l].y,c._array[m+2]=j[l].z;k.uniform3fv(e,
|
|
|
+c._array)}else if("v4v"===l){void 0===c._array&&(c._array=new Float32Array(4*j.length));l=0;for(n=j.length;l<n;l++)m=4*l,c._array[m]=j[l].x,c._array[m+1]=j[l].y,c._array[m+2]=j[l].z,c._array[m+3]=j[l].w;k.uniform4fv(e,c._array)}else if("m4"===l)void 0===c._array&&(c._array=new Float32Array(16)),j.flattenToArray(c._array),k.uniformMatrix4fv(e,!1,c._array);else if("m4v"===l){void 0===c._array&&(c._array=new Float32Array(16*j.length));l=0;for(n=j.length;l<n;l++)j[l].flattenToArrayOffset(c._array,16*
|
|
|
+l);k.uniformMatrix4fv(e,!1,c._array)}else if("t"===l){if(m=j,j=r(),k.uniform1i(e,j),m)if(m.image instanceof Array&&6===m.image.length){if(c=m,e=j,6===c.image.length)if(c.needsUpdate){c.image.__webglTextureCube||(c.image.__webglTextureCube=k.createTexture());k.activeTexture(k.TEXTURE0+e);k.bindTexture(k.TEXTURE_CUBE_MAP,c.image.__webglTextureCube);k.pixelStorei(k.UNPACK_FLIP_Y_WEBGL,c.flipY);e=c instanceof THREE.CompressedTexture;j=[];for(l=0;6>l;l++)R.autoScaleCubemaps&&!e?(n=j,m=l,s=c.image[l],z=
|
|
|
+Gc,s.width<=z&&s.height<=z||(A=Math.max(s.width,s.height),u=Math.floor(s.width*z/A),z=Math.floor(s.height*z/A),A=document.createElement("canvas"),A.width=u,A.height=z,A.getContext("2d").drawImage(s,0,0,s.width,s.height,0,0,u,z),s=A),n[m]=s):j[l]=c.image[l];l=j[0];n=0===(l.width&l.width-1)&&0===(l.height&l.height-1);m=M(c.format);s=M(c.type);F(k.TEXTURE_CUBE_MAP,c,n);for(l=0;6>l;l++)if(e){z=j[l].mipmaps;A=0;for(B=z.length;A<B;A++)u=z[A],k.compressedTexImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+l,A,m,u.width,
|
|
|
+u.height,0,u.data)}else k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,m,m,s,j[l]);c.generateMipmaps&&n&&k.generateMipmap(k.TEXTURE_CUBE_MAP);c.needsUpdate=!1;if(c.onUpdate)c.onUpdate()}else k.activeTexture(k.TEXTURE0+e),k.bindTexture(k.TEXTURE_CUBE_MAP,c.image.__webglTextureCube)}else m instanceof THREE.WebGLRenderTargetCube?(c=m,k.activeTexture(k.TEXTURE0+j),k.bindTexture(k.TEXTURE_CUBE_MAP,c.__webglTexture)):R.setTexture(m,j)}else if("tv"===l){void 0===c._array&&(c._array=[]);l=0;for(n=c.value.length;l<
|
|
|
+n;l++)c._array[l]=r();k.uniform1iv(e,c._array);l=0;for(n=c.value.length;l<n;l++)m=c.value[l],j=c._array[l],m&&R.setTexture(m,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,f._modelViewMatrix.elements);h.normalMatrix&&k.uniformMatrix3fv(h.normalMatrix,!1,f._normalMatrix.elements);null!==h.modelMatrix&&k.uniformMatrix4fv(h.modelMatrix,!1,f.matrixWorld.elements);return g}function r(){var a=Ka;a>=rc&&console.warn("Trying to use "+a+" texture units while this GPU supports only "+rc);Ka+=1;return a}function B(a,b){a._modelViewMatrix.multiply(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function y(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 w(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function z(a,b,c){gb!==a&&(a?k.enable(k.POLYGON_OFFSET_FILL):k.disable(k.POLYGON_OFFSET_FILL),gb=a);if(a&&(xb!==b||Ub!==c))k.polygonOffset(b,c),xb=b,Ub=c}function C(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 D(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(C(b)),null):c}function F(a,b,c){c?(k.texParameteri(a,k.TEXTURE_WRAP_S,M(b.wrapS)),k.texParameteri(a,k.TEXTURE_WRAP_T,M(b.wrapT)),k.texParameteri(a,k.TEXTURE_MAG_FILTER,M(b.magFilter)),k.texParameteri(a,k.TEXTURE_MIN_FILTER,M(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,
|
|
|
G(b.magFilter)),k.texParameteri(a,k.TEXTURE_MIN_FILTER,G(b.minFilter)));if(sb&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy))k.texParameterf(a,sb.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,jc)),b.__oldAnisotropy=b.anisotropy}function I(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 G(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?k.NEAREST:k.LINEAR}function M(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;
|
|
@@ -383,90 +383,91 @@ if(a===THREE.AddEquation)return k.FUNC_ADD;if(a===THREE.SubtractEquation)return
|
|
|
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!==mb){if(a===THREE.RGB_S3TC_DXT1_Format)return mb.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return mb.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return mb.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return mb.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}
|
|
|
console.log("THREE.WebGLRenderer",THREE.REVISION);var a=a||{},J=void 0!==a.canvas?a.canvas:document.createElement("canvas"),K=void 0!==a.precision?a.precision:"highp",N=void 0!==a.alpha?a.alpha:!0,O=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,P=void 0!==a.antialias?a.antialias:!1,L=void 0!==a.stencil?a.stencil:!0,X=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,H=void 0!==a.clearColor?new THREE.Color(a.clearColor):new THREE.Color(0),fa=void 0!==a.clearAlpha?a.clearAlpha:0,sa=
|
|
|
void 0!==a.maxLights?a.maxLights:4;this.domElement=J;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 R=this,oa=[],Q=0,ha=null,W=null,aa=-1,Z=null,$=null,da=0,Ka=0,La=-1,Ea=-1,ua=-1,ra=-1,Ma=-1,kb=-1,cb=-1,Ua=-1,gb=null,vb=null,Sb=null,ab=null,Pa=0,Ga=0,lb=0,Ia=0,bb=0,Ya=0,la=new THREE.Frustum,hb=new THREE.Matrix4,db=new THREE.Matrix4,Va=new THREE.Vector4,ya=new THREE.Vector3,ib=!0,nb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],
|
|
|
-positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},k,sb,mb;try{if(!(k=J.getContext("experimental-webgl",{alpha:N,premultipliedAlpha:O,antialias:P,stencil:L,preserveDrawingBuffer:X})))throw"Error creating WebGL context.";}catch(Cc){console.error(Cc)}a=k.getExtension("OES_texture_float");N=k.getExtension("OES_standard_derivatives");sb=k.getExtension("EXT_texture_filter_anisotropic")||
|
|
|
+[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var R=this,oa=[],Q=0,ha=null,T=null,aa=-1,Z=null,$=null,da=0,Ka=0,La=-1,Ea=-1,ua=-1,ra=-1,Ma=-1,kb=-1,cb=-1,Ua=-1,gb=null,xb=null,Ub=null,ab=null,Pa=0,Ga=0,lb=0,Ia=0,bb=0,Ya=0,la=new THREE.Frustum,hb=new THREE.Matrix4,db=new THREE.Matrix4,Va=new THREE.Vector4,ya=new THREE.Vector3,ib=!0,nb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],
|
|
|
+positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],angles:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},k,sb,mb;try{if(!(k=J.getContext("experimental-webgl",{alpha:N,premultipliedAlpha:O,antialias:P,stencil:L,preserveDrawingBuffer:X})))throw"Error creating WebGL context.";}catch(Fc){console.error(Fc)}a=k.getExtension("OES_texture_float");N=k.getExtension("OES_standard_derivatives");sb=k.getExtension("EXT_texture_filter_anisotropic")||
|
|
|
k.getExtension("MOZ_EXT_texture_filter_anisotropic")||k.getExtension("WEBKIT_EXT_texture_filter_anisotropic");mb=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.");sb||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");mb||
|
|
|
-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(H.r,H.g,H.b,fa);this.context=k;var qc=k.getParameter(k.MAX_TEXTURE_IMAGE_UNITS),N=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);
|
|
|
-var Dc=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),jc=sb?k.getParameter(sb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,dc=0<N,ac=dc&&a;mb&&k.getParameter(k.COMPRESSED_TEXTURE_FORMATS);this.getContext=function(){return k};this.supportsVertexTextures=function(){return dc};this.getMaxAnisotropy=function(){return jc};this.setSize=function(a,b){J.width=a;J.height=b;this.setViewport(0,0,J.width,J.height)};this.setViewport=function(a,b,c,d){Pa=void 0!==a?a:0;Ga=void 0!==b?b:0;lb=void 0!==c?c:J.width;Ia=void 0!==d?
|
|
|
+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(H.r,H.g,H.b,fa);this.context=k;var rc=k.getParameter(k.MAX_TEXTURE_IMAGE_UNITS),N=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);
|
|
|
+var Gc=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),jc=sb?k.getParameter(sb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,dc=0<N,ac=dc&&a;mb&&k.getParameter(k.COMPRESSED_TEXTURE_FORMATS);this.getContext=function(){return k};this.supportsVertexTextures=function(){return dc};this.getMaxAnisotropy=function(){return jc};this.setSize=function(a,b){J.width=a;J.height=b;this.setViewport(0,0,J.width,J.height)};this.setViewport=function(a,b,c,d){Pa=void 0!==a?a:0;Ga=void 0!==b?b:0;lb=void 0!==c?c:J.width;Ia=void 0!==d?
|
|
|
d:J.height;k.viewport(Pa,Ga,lb,Ia)};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){H.setHex(a);fa=b;k.clearColor(H.r,H.g,H.b,fa)};this.setClearColor=function(a,b){H.copy(a);fa=b;k.clearColor(H.r,H.g,H.b,fa)};this.getClearColor=function(){return H};this.getClearAlpha=function(){return fa};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 b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];k.deleteBuffer(c.__webglVertexBuffer);k.deleteBuffer(c.__webglNormalBuffer);k.deleteBuffer(c.__webglTangentBuffer);k.deleteBuffer(c.__webglColorBuffer);k.deleteBuffer(c.__webglUVBuffer);k.deleteBuffer(c.__webglUV2Buffer);k.deleteBuffer(c.__webglSkinIndicesBuffer);k.deleteBuffer(c.__webglSkinWeightsBuffer);k.deleteBuffer(c.__webglFaceBuffer);k.deleteBuffer(c.__webglLineBuffer);var d=void 0,f=void 0;if(c.numMorphTargets){d=
|
|
|
-0;for(f=c.numMorphTargets;d<f;d++)k.deleteBuffer(c.__webglMorphTargetsBuffers[d])}if(c.numMorphNormals){d=0;for(f=c.numMorphNormals;d<f;d++)k.deleteBuffer(c.__webglMorphNormalsBuffers[d])}if(c.__webglCustomAttributesList)for(d in d=void 0,c.__webglCustomAttributesList)k.deleteBuffer(c.__webglCustomAttributesList[d].buffer);R.info.memory.geometries--}else a instanceof THREE.Ribbon?(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),R.info.memory.geometries--):a instanceof
|
|
|
-THREE.Line?(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),R.info.memory.geometries--):a instanceof THREE.ParticleSystem&&(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),R.info.memory.geometries--)};this.deallocateTexture=function(a){a.__webglInit&&(a.__webglInit=!1,k.deleteTexture(a.__webglTexture),R.info.memory.textures--)};this.deallocateRenderTarget=function(a){if(a&&a.__webglTexture)if(k.deleteTexture(a.__webglTexture),
|
|
|
-a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)k.deleteFramebuffer(a.__webglFramebuffer[b]),k.deleteRenderbuffer(a.__webglRenderbuffer[b]);else k.deleteFramebuffer(a.__webglFramebuffer),k.deleteRenderbuffer(a.__webglRenderbuffer)};this.deallocateMaterial=function(a){var b=a.program;if(b){a.program=void 0;var c,d,f=!1,a=0;for(c=oa.length;a<c;a++)if(d=oa[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(f=!0);break}if(f){f=[];a=0;for(c=oa.length;a<c;a++)d=oa[a],d.program!==b&&f.push(d);
|
|
|
-oa=f;k.deleteProgram(b);R.info.memory.programs--}}};this.updateShadowMap=function(a,b){ha=null;aa=Z=Ua=cb=ua=-1;ib=!0;Ea=La=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=k.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=k.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=k.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=k.createBuffer());
|
|
|
-a.hasPositions&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,a.positionArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.position),k.vertexAttribPointer(b.attributes.position,3,k.FLOAT,!1,0,0));if(a.hasNormals){k.bindBuffer(k.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,f,e,g,h,i,j,l,n,m,o,p=3*a.count;for(o=0;o<p;o+=9)m=a.normalArray,d=m[o],f=m[o+1],e=m[o+2],g=m[o+3],i=m[o+4],l=m[o+5],h=m[o+6],j=m[o+7],n=m[o+8],d=(d+g+h)/
|
|
|
-3,f=(f+i+j)/3,e=(e+l+n)/3,m[o]=d,m[o+1]=f,m[o+2]=e,m[o+3]=d,m[o+4]=f,m[o+5]=e,m[o+6]=d,m[o+7]=f,m[o+8]=e}k.bufferData(k.ARRAY_BUFFER,a.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.normal);k.vertexAttribPointer(b.attributes.normal,3,k.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglUvBuffer),k.bufferData(k.ARRAY_BUFFER,a.uvArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.uv),k.vertexAttribPointer(b.attributes.uv,2,k.FLOAT,!1,0,0));a.hasColors&&
|
|
|
-c.vertexColors!==THREE.NoColors&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,a.colorArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.color),k.vertexAttribPointer(b.attributes.color,3,k.FLOAT,!1,0,0));k.drawArrays(k.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,f,e){if(!1!==d.visible)if(c=u(a,b,c,d,e),a=c.attributes,b=!1,d=16777215*f.id+2*c.id+(d.wireframe?1:0),d!==Z&&(Z=d,b=!0),e instanceof THREE.Mesh){e=f.offsets;1<e.length&&
|
|
|
-(b=!0);d=0;for(c=e.length;d<c;++d){var g=e[d].index;if(b){var h=f.attributes.position,i=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.position,i,k.FLOAT,!1,0,4*g*i);h=f.attributes.normal;0<=a.normal&&h&&(i=h.itemSize,k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.vertexAttribPointer(a.normal,i,k.FLOAT,!1,0,4*g*i));h=f.attributes.uv;0<=a.uv&&h&&(h.buffer?(i=h.itemSize,k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.vertexAttribPointer(a.uv,i,k.FLOAT,!1,0,4*g*i),k.enableVertexAttribArray(a.uv)):
|
|
|
-k.disableVertexAttribArray(a.uv));i=f.attributes.color;if(0<=a.color&&i){var j=i.itemSize;k.bindBuffer(k.ARRAY_BUFFER,i.buffer);k.vertexAttribPointer(a.color,j,k.FLOAT,!1,0,4*g*j)}h=f.attributes.tangent;0<=a.tangent&&h&&(i=h.itemSize,k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.vertexAttribPointer(a.tangent,i,k.FLOAT,!1,0,4*g*i));k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,f.attributes.index.buffer)}k.drawElements(k.TRIANGLES,e[d].count,k.UNSIGNED_SHORT,2*e[d].start);R.info.render.calls++;R.info.render.vertices+=
|
|
|
-e[d].count;R.info.render.faces+=e[d].count/3}}else e instanceof THREE.ParticleSystem&&b&&(h=f.attributes.position,i=h.itemSize,k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.vertexAttribPointer(a.position,i,k.FLOAT,!1,0,0),i=f.attributes.color,0<=a.color&&i&&(j=i.itemSize,k.bindBuffer(k.ARRAY_BUFFER,i.buffer),k.vertexAttribPointer(a.color,j,k.FLOAT,!1,0,0)),k.drawArrays(k.POINTS,0,h.numItems/3),R.info.render.calls++,R.info.render.points+=h.numItems/3)};this.renderBuffer=function(a,b,c,d,f,e){if(!1!==d.visible){var g,
|
|
|
-h,c=u(a,b,c,d,e),b=c.attributes,a=!1,c=16777215*f.id+2*c.id+(d.wireframe?1:0);c!==Z&&(Z=c,a=!0);if(!d.morphTargets&&0<=b.position)a&&(k.bindBuffer(k.ARRAY_BUFFER,f.__webglVertexBuffer),k.vertexAttribPointer(b.position,3,k.FLOAT,!1,0,0));else if(e.morphTargetBase){c=d.program.attributes;-1!==e.morphTargetBase?(k.bindBuffer(k.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[e.morphTargetBase]),k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0)):0<=c.position&&(k.bindBuffer(k.ARRAY_BUFFER,f.__webglVertexBuffer),
|
|
|
-k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0));if(e.morphTargetForcedOrder.length){var i=0;h=e.morphTargetForcedOrder;for(g=e.morphTargetInfluences;i<d.numSupportedMorphTargets&&i<h.length;)k.bindBuffer(k.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[h[i]]),k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,!1,0,0),d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,f.__webglMorphNormalsBuffers[h[i]]),k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0)),e.__webglMorphTargetInfluences[i]=g[h[i]],
|
|
|
-i++}else{h=[];g=e.morphTargetInfluences;var j,n=g.length;for(j=0;j<n;j++)i=g[j],0<i&&h.push([j,i]);h.length>d.numSupportedMorphTargets?(h.sort(l),h.length=d.numSupportedMorphTargets):h.length>d.numSupportedMorphNormals?h.sort(l):0===h.length&&h.push([0,0]);for(i=0;i<d.numSupportedMorphTargets;)h[i]?(j=h[i][0],k.bindBuffer(k.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[j]),k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,!1,0,0),d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,f.__webglMorphNormalsBuffers[j]),
|
|
|
-k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0)),e.__webglMorphTargetInfluences[i]=g[j]):(k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,!1,0,0),d.morphNormals&&k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0),e.__webglMorphTargetInfluences[i]=0),i++}null!==d.program.uniforms.morphTargetInfluences&&k.uniform1fv(d.program.uniforms.morphTargetInfluences,e.__webglMorphTargetInfluences)}if(a){if(f.__webglCustomAttributesList){g=0;for(h=f.__webglCustomAttributesList.length;g<h;g++)c=
|
|
|
-f.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(k.bindBuffer(k.ARRAY_BUFFER,c.buffer),k.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,k.FLOAT,!1,0,0))}0<=b.color&&(k.bindBuffer(k.ARRAY_BUFFER,f.__webglColorBuffer),k.vertexAttribPointer(b.color,3,k.FLOAT,!1,0,0));0<=b.normal&&(k.bindBuffer(k.ARRAY_BUFFER,f.__webglNormalBuffer),k.vertexAttribPointer(b.normal,3,k.FLOAT,!1,0,0));0<=b.tangent&&(k.bindBuffer(k.ARRAY_BUFFER,f.__webglTangentBuffer),k.vertexAttribPointer(b.tangent,
|
|
|
-4,k.FLOAT,!1,0,0));0<=b.uv&&(f.__webglUVBuffer?(k.bindBuffer(k.ARRAY_BUFFER,f.__webglUVBuffer),k.vertexAttribPointer(b.uv,2,k.FLOAT,!1,0,0),k.enableVertexAttribArray(b.uv)):k.disableVertexAttribArray(b.uv));0<=b.uv2&&(f.__webglUV2Buffer?(k.bindBuffer(k.ARRAY_BUFFER,f.__webglUV2Buffer),k.vertexAttribPointer(b.uv2,2,k.FLOAT,!1,0,0),k.enableVertexAttribArray(b.uv2)):k.disableVertexAttribArray(b.uv2));d.skinning&&(0<=b.skinIndex&&0<=b.skinWeight)&&(k.bindBuffer(k.ARRAY_BUFFER,f.__webglSkinIndicesBuffer),
|
|
|
-k.vertexAttribPointer(b.skinIndex,4,k.FLOAT,!1,0,0),k.bindBuffer(k.ARRAY_BUFFER,f.__webglSkinWeightsBuffer),k.vertexAttribPointer(b.skinWeight,4,k.FLOAT,!1,0,0))}e instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==ab&&(k.lineWidth(d),ab=d),a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,f.__webglLineBuffer),k.drawElements(k.LINES,f.__webglLineCount,k.UNSIGNED_SHORT,0)):(a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,f.__webglFaceBuffer),k.drawElements(k.TRIANGLES,f.__webglFaceCount,k.UNSIGNED_SHORT,0)),
|
|
|
-R.info.render.calls++,R.info.render.vertices+=f.__webglFaceCount,R.info.render.faces+=f.__webglFaceCount/3):e instanceof THREE.Line?(e=e.type===THREE.LineStrip?k.LINE_STRIP:k.LINES,d=d.linewidth,d!==ab&&(k.lineWidth(d),ab=d),k.drawArrays(e,0,f.__webglLineCount),R.info.render.calls++):e instanceof THREE.ParticleSystem?(k.drawArrays(k.POINTS,0,f.__webglParticleCount),R.info.render.calls++,R.info.render.points+=f.__webglParticleCount):e instanceof THREE.Ribbon&&(k.drawArrays(k.TRIANGLE_STRIP,0,f.__webglVertexCount),
|
|
|
-R.info.render.calls++)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var f,e,g,h,i=a.__lights,l=a.fog;aa=-1;ib=!0;this.autoUpdateScene&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b._viewMatrixArray||(b._viewMatrixArray=new Float32Array(16));b._projectionMatrixArray||(b._projectionMatrixArray=new Float32Array(16));b.matrixWorldInverse.getInverse(b.matrixWorld);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);
|
|
|
-b.projectionMatrix.flattenToArray(b._projectionMatrixArray);hb.multiply(b.projectionMatrix,b.matrixWorldInverse);la.setFromMatrix(hb);this.autoUpdateObjects&&this.initWebGLObjects(a);m(this.renderPluginsPre,a,b);R.info.render.calls=0;R.info.render.vertices=0;R.info.render.faces=0;R.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);h=a.__webglObjects;d=0;for(f=h.length;d<f;d++)if(e=h[d],g=e.object,e.render=!1,
|
|
|
-g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||la.contains(g))){B(g,b);var o=e,q=o.object,t=o.buffer,s=void 0,s=s=void 0,s=q.material;s instanceof THREE.MeshFaceMaterial?(s=t.materialIndex,0<=s&&(s=q.geometry.materials[s],s.transparent?(o.transparent=s,o.opaque=null):(o.opaque=s,o.transparent=null))):s&&(s.transparent?(o.transparent=s,o.opaque=null):(o.opaque=s,o.transparent=null));e.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?e.z=g.renderDepth:
|
|
|
-(Va.copy(g.matrixWorld.getPosition()),hb.multiplyVector3(Va),e.z=Va.z))}this.sortObjects&&h.sort(j);h=a.__webglObjectsImmediate;d=0;for(f=h.length;d<f;d++)e=h[d],g=e.object,g.visible&&(B(g,b),g=e.object.material,g.transparent?(e.transparent=g,e.opaque=null):(e.opaque=g,e.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),z(d.polygonOffset,d.polygonOffsetFactor,
|
|
|
+a instanceof THREE.Mesh)for(var b in a.geometry.geometryGroups){var c=a.geometry.geometryGroups[b];k.deleteBuffer(c.__webglVertexBuffer);k.deleteBuffer(c.__webglNormalBuffer);k.deleteBuffer(c.__webglTangentBuffer);k.deleteBuffer(c.__webglColorBuffer);k.deleteBuffer(c.__webglUVBuffer);k.deleteBuffer(c.__webglUV2Buffer);k.deleteBuffer(c.__webglSkinIndicesBuffer);k.deleteBuffer(c.__webglSkinWeightsBuffer);k.deleteBuffer(c.__webglFaceBuffer);k.deleteBuffer(c.__webglLineBuffer);var d=void 0,e=void 0;if(c.numMorphTargets){d=
|
|
|
+0;for(e=c.numMorphTargets;d<e;d++)k.deleteBuffer(c.__webglMorphTargetsBuffers[d])}if(c.numMorphNormals){d=0;for(e=c.numMorphNormals;d<e;d++)k.deleteBuffer(c.__webglMorphNormalsBuffers[d])}if(c.__webglCustomAttributesList)for(d in d=void 0,c.__webglCustomAttributesList)k.deleteBuffer(c.__webglCustomAttributesList[d].buffer);R.info.memory.geometries--}else a instanceof THREE.Ribbon?(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),k.deleteBuffer(a.__webglNormalBuffer),
|
|
|
+R.info.memory.geometries--):a instanceof THREE.Line?(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),R.info.memory.geometries--):a instanceof THREE.ParticleSystem&&(a=a.geometry,k.deleteBuffer(a.__webglVertexBuffer),k.deleteBuffer(a.__webglColorBuffer),R.info.memory.geometries--)};this.deallocateTexture=function(a){a.__webglInit&&(a.__webglInit=!1,k.deleteTexture(a.__webglTexture),R.info.memory.textures--)};this.deallocateRenderTarget=function(a){if(a&&a.__webglTexture)if(k.deleteTexture(a.__webglTexture),
|
|
|
+a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)k.deleteFramebuffer(a.__webglFramebuffer[b]),k.deleteRenderbuffer(a.__webglRenderbuffer[b]);else k.deleteFramebuffer(a.__webglFramebuffer),k.deleteRenderbuffer(a.__webglRenderbuffer)};this.deallocateMaterial=function(a){var b=a.program;if(b){a.program=void 0;var c,d,e=!1,a=0;for(c=oa.length;a<c;a++)if(d=oa[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(e){e=[];a=0;for(c=oa.length;a<c;a++)d=oa[a],d.program!==b&&e.push(d);
|
|
|
+oa=e;k.deleteProgram(b);R.info.memory.programs--}}};this.updateShadowMap=function(a,b){ha=null;aa=Z=Ua=cb=ua=-1;ib=!0;Ea=La=-1;this.shadowMapPlugin.update(a,b)};this.renderBufferImmediate=function(a,b,c){a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=k.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=k.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=k.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=k.createBuffer());
|
|
|
+a.hasPositions&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,a.positionArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.position),k.vertexAttribPointer(b.attributes.position,3,k.FLOAT,!1,0,0));if(a.hasNormals){k.bindBuffer(k.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,f,g,h,i,j,l,n,m,o,p=3*a.count;for(o=0;o<p;o+=9)m=a.normalArray,d=m[o],e=m[o+1],f=m[o+2],g=m[o+3],i=m[o+4],l=m[o+5],h=m[o+6],j=m[o+7],n=m[o+8],d=(d+g+h)/
|
|
|
+3,e=(e+i+j)/3,f=(f+l+n)/3,m[o]=d,m[o+1]=e,m[o+2]=f,m[o+3]=d,m[o+4]=e,m[o+5]=f,m[o+6]=d,m[o+7]=e,m[o+8]=f}k.bufferData(k.ARRAY_BUFFER,a.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.normal);k.vertexAttribPointer(b.attributes.normal,3,k.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglUvBuffer),k.bufferData(k.ARRAY_BUFFER,a.uvArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.uv),k.vertexAttribPointer(b.attributes.uv,2,k.FLOAT,!1,0,0));a.hasColors&&
|
|
|
+c.vertexColors!==THREE.NoColors&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,a.colorArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.color),k.vertexAttribPointer(b.attributes.color,3,k.FLOAT,!1,0,0));k.drawArrays(k.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible)if(c=u(a,b,c,d,f),a=c.attributes,b=!1,d=16777215*e.id+2*c.id+(d.wireframe?1:0),d!==Z&&(Z=d,b=!0),f instanceof THREE.Mesh){f=e.offsets;1<f.length&&
|
|
|
+(b=!0);d=0;for(c=f.length;d<c;++d){var g=f[d].index;if(b){var h=e.attributes.position,i=h.itemSize;k.bindBuffer(k.ARRAY_BUFFER,h.buffer);k.vertexAttribPointer(a.position,i,k.FLOAT,!1,0,4*g*i);h=e.attributes.normal;0<=a.normal&&h&&(i=h.itemSize,k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.vertexAttribPointer(a.normal,i,k.FLOAT,!1,0,4*g*i));h=e.attributes.uv;0<=a.uv&&h&&(h.buffer?(i=h.itemSize,k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.vertexAttribPointer(a.uv,i,k.FLOAT,!1,0,4*g*i),k.enableVertexAttribArray(a.uv)):
|
|
|
+k.disableVertexAttribArray(a.uv));i=e.attributes.color;if(0<=a.color&&i){var j=i.itemSize;k.bindBuffer(k.ARRAY_BUFFER,i.buffer);k.vertexAttribPointer(a.color,j,k.FLOAT,!1,0,4*g*j)}h=e.attributes.tangent;0<=a.tangent&&h&&(i=h.itemSize,k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.vertexAttribPointer(a.tangent,i,k.FLOAT,!1,0,4*g*i));k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.attributes.index.buffer)}k.drawElements(k.TRIANGLES,f[d].count,k.UNSIGNED_SHORT,2*f[d].start);R.info.render.calls++;R.info.render.vertices+=
|
|
|
+f[d].count;R.info.render.faces+=f[d].count/3}}else f instanceof THREE.ParticleSystem&&b&&(h=e.attributes.position,i=h.itemSize,k.bindBuffer(k.ARRAY_BUFFER,h.buffer),k.vertexAttribPointer(a.position,i,k.FLOAT,!1,0,0),i=e.attributes.color,0<=a.color&&i&&(j=i.itemSize,k.bindBuffer(k.ARRAY_BUFFER,i.buffer),k.vertexAttribPointer(a.color,j,k.FLOAT,!1,0,0)),k.drawArrays(k.POINTS,0,h.numItems/3),R.info.render.calls++,R.info.render.points+=h.numItems/3)};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,
|
|
|
+h,c=u(a,b,c,d,f),b=c.attributes,a=!1,c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==Z&&(Z=c,a=!0);if(!d.morphTargets&&0<=b.position)a&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer),k.vertexAttribPointer(b.position,3,k.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;-1!==f.morphTargetBase?(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0)):0<=c.position&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer),
|
|
|
+k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var i=0;h=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;i<d.numSupportedMorphTargets&&i<h.length;)k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[h[i]]),k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,!1,0,0),d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[h[i]]),k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[i]=g[h[i]],
|
|
|
+i++}else{h=[];g=f.morphTargetInfluences;var j,n=g.length;for(j=0;j<n;j++)i=g[j],0<i&&h.push([j,i]);h.length>d.numSupportedMorphTargets?(h.sort(l),h.length=d.numSupportedMorphTargets):h.length>d.numSupportedMorphNormals?h.sort(l):0===h.length&&h.push([0,0]);for(i=0;i<d.numSupportedMorphTargets;)h[i]?(j=h[i][0],k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[j]),k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,!1,0,0),d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[j]),
|
|
|
+k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[i]=g[j]):(k.vertexAttribPointer(c["morphTarget"+i],3,k.FLOAT,!1,0,0),d.morphNormals&&k.vertexAttribPointer(c["morphNormal"+i],3,k.FLOAT,!1,0,0),f.__webglMorphTargetInfluences[i]=0),i++}null!==d.program.uniforms.morphTargetInfluences&&k.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(a){if(e.__webglCustomAttributesList){g=0;for(h=e.__webglCustomAttributesList.length;g<h;g++)c=
|
|
|
+e.__webglCustomAttributesList[g],0<=b[c.buffer.belongsToAttribute]&&(k.bindBuffer(k.ARRAY_BUFFER,c.buffer),k.vertexAttribPointer(b[c.buffer.belongsToAttribute],c.size,k.FLOAT,!1,0,0))}0<=b.color&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglColorBuffer),k.vertexAttribPointer(b.color,3,k.FLOAT,!1,0,0));0<=b.normal&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglNormalBuffer),k.vertexAttribPointer(b.normal,3,k.FLOAT,!1,0,0));0<=b.tangent&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglTangentBuffer),k.vertexAttribPointer(b.tangent,
|
|
|
+4,k.FLOAT,!1,0,0));0<=b.uv&&(e.__webglUVBuffer?(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUVBuffer),k.vertexAttribPointer(b.uv,2,k.FLOAT,!1,0,0),k.enableVertexAttribArray(b.uv)):k.disableVertexAttribArray(b.uv));0<=b.uv2&&(e.__webglUV2Buffer?(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUV2Buffer),k.vertexAttribPointer(b.uv2,2,k.FLOAT,!1,0,0),k.enableVertexAttribArray(b.uv2)):k.disableVertexAttribArray(b.uv2));d.skinning&&(0<=b.skinIndex&&0<=b.skinWeight)&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),
|
|
|
+k.vertexAttribPointer(b.skinIndex,4,k.FLOAT,!1,0,0),k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),k.vertexAttribPointer(b.skinWeight,4,k.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(d=d.wireframeLinewidth,d!==ab&&(k.lineWidth(d),ab=d),a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),k.drawElements(k.LINES,e.__webglLineCount,k.UNSIGNED_SHORT,0)):(a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),k.drawElements(k.TRIANGLES,e.__webglFaceCount,k.UNSIGNED_SHORT,0)),
|
|
|
+R.info.render.calls++,R.info.render.vertices+=e.__webglFaceCount,R.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?k.LINE_STRIP:k.LINES,d=d.linewidth,d!==ab&&(k.lineWidth(d),ab=d),k.drawArrays(f,0,e.__webglLineCount),R.info.render.calls++):f instanceof THREE.ParticleSystem?(k.drawArrays(k.POINTS,0,e.__webglParticleCount),R.info.render.calls++,R.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(k.drawArrays(k.TRIANGLE_STRIP,0,e.__webglVertexCount),
|
|
|
+R.info.render.calls++)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,g,h,i=a.__lights,l=a.fog;aa=-1;ib=!0;this.autoUpdateScene&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b._viewMatrixArray||(b._viewMatrixArray=new Float32Array(16));b._projectionMatrixArray||(b._projectionMatrixArray=new Float32Array(16));b.matrixWorldInverse.getInverse(b.matrixWorld);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);
|
|
|
+b.projectionMatrix.flattenToArray(b._projectionMatrixArray);hb.multiply(b.projectionMatrix,b.matrixWorldInverse);la.setFromMatrix(hb);this.autoUpdateObjects&&this.initWebGLObjects(a);m(this.renderPluginsPre,a,b);R.info.render.calls=0;R.info.render.vertices=0;R.info.render.faces=0;R.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);h=a.__webglObjects;d=0;for(e=h.length;d<e;d++)if(f=h[d],g=f.object,f.render=!1,
|
|
|
+g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||la.contains(g))){B(g,b);var o=f,q=o.object,t=o.buffer,s=void 0,s=s=void 0,s=q.material;s instanceof THREE.MeshFaceMaterial?(s=t.materialIndex,0<=s&&(s=q.geometry.materials[s],s.transparent?(o.transparent=s,o.opaque=null):(o.opaque=s,o.transparent=null))):s&&(s.transparent?(o.transparent=s,o.opaque=null):(o.opaque=s,o.transparent=null));f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:
|
|
|
+(Va.copy(g.matrixWorld.getPosition()),hb.multiplyVector3(Va),f.z=Va.z))}this.sortObjects&&h.sort(j);h=a.__webglObjectsImmediate;d=0;for(e=h.length;d<e;d++)f=h[d],g=f.object,g.visible&&(B(g,b),g=f.object.material,g.transparent?(f.transparent=g,f.opaque=null):(f.opaque=g,f.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),z(d.polygonOffset,d.polygonOffsetFactor,
|
|
|
d.polygonOffsetUnits),n(a.__webglObjects,!1,"",b,i,l,!0,d),p(a.__webglObjectsImmediate,"",b,i,l,!1,d)):(this.setBlending(THREE.NormalBlending),n(a.__webglObjects,!0,"opaque",b,i,l,!1),p(a.__webglObjectsImmediate,"opaque",b,i,l,!1),n(a.__webglObjects,!1,"transparent",b,i,l,!0),p(a.__webglObjectsImmediate,"transparent",b,i,l,!0));m(this.renderPluginsPost,a,b);c&&(c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)&&(c instanceof THREE.WebGLRenderTargetCube?(k.bindTexture(k.TEXTURE_CUBE_MAP,
|
|
|
-c.__webglTexture),k.generateMipmap(k.TEXTURE_CUBE_MAP),k.bindTexture(k.TEXTURE_CUBE_MAP,null)):(k.bindTexture(k.TEXTURE_2D,c.__webglTexture),k.generateMipmap(k.TEXTURE_2D),k.bindTexture(k.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,f){var e=u(a,b,c,d,f);Z=-1;R.setMaterialFaces(d);f.immediateRenderCallback?f.immediateRenderCallback(e,k,la):f.render(function(a){R.renderBufferImmediate(a,e,d)})};this.initWebGLObjects=function(a){a.__webglObjects||
|
|
|
+c.__webglTexture),k.generateMipmap(k.TEXTURE_CUBE_MAP),k.bindTexture(k.TEXTURE_CUBE_MAP,null)):(k.bindTexture(k.TEXTURE_2D,c.__webglTexture),k.generateMipmap(k.TEXTURE_2D),k.bindTexture(k.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=u(a,b,c,d,e);Z=-1;R.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,k,la):e.render(function(a){R.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||
|
|
|
(a.__webglObjects=[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;){var j=a.__objectsAdded[0],l=a,n=void 0,m=void 0,p=void 0;if(!j.__webglInit)if(j.__webglInit=!0,j._modelViewMatrix=new THREE.Matrix4,j._normalMatrix=new THREE.Matrix3,j instanceof THREE.Mesh)if(m=j.geometry,m instanceof THREE.Geometry){if(void 0===m.geometryGroups){var r=m,u=void 0,y=void 0,w=void 0,z=void 0,B=void 0,C=void 0,D=void 0,F={},G=r.morphTargets.length,I=r.morphNormals.length;
|
|
|
r.geometryGroups={};u=0;for(y=r.faces.length;u<y;u++)w=r.faces[u],z=w.materialIndex,C=void 0!==z?z:-1,void 0===F[C]&&(F[C]={hash:C,counter:0}),D=F[C].hash+"_"+F[C].counter,void 0===r.geometryGroups[D]&&(r.geometryGroups[D]={faces3:[],faces4:[],materialIndex:z,vertices:0,numMorphTargets:G,numMorphNormals:I}),B=w instanceof THREE.Face3?3:4,65535<r.geometryGroups[D].vertices+B&&(F[C].counter+=1,D=F[C].hash+"_"+F[C].counter,void 0===r.geometryGroups[D]&&(r.geometryGroups[D]={faces3:[],faces4:[],materialIndex:z,
|
|
|
vertices:0,numMorphTargets:G,numMorphNormals:I})),w instanceof THREE.Face3?r.geometryGroups[D].faces3.push(u):r.geometryGroups[D].faces4.push(u),r.geometryGroups[D].vertices+=B;r.geometryGroupsList=[];var J=void 0;for(J in r.geometryGroups)r.geometryGroups[J].id=da++,r.geometryGroupsList.push(r.geometryGroups[J])}for(n in m.geometryGroups)if(p=m.geometryGroups[n],!p.__webglVertexBuffer){var H=p;H.__webglVertexBuffer=k.createBuffer();H.__webglNormalBuffer=k.createBuffer();H.__webglTangentBuffer=k.createBuffer();
|
|
|
H.__webglColorBuffer=k.createBuffer();H.__webglUVBuffer=k.createBuffer();H.__webglUV2Buffer=k.createBuffer();H.__webglSkinIndicesBuffer=k.createBuffer();H.__webglSkinWeightsBuffer=k.createBuffer();H.__webglFaceBuffer=k.createBuffer();H.__webglLineBuffer=k.createBuffer();var Q=void 0,K=void 0;if(H.numMorphTargets){H.__webglMorphTargetsBuffers=[];Q=0;for(K=H.numMorphTargets;Q<K;Q++)H.__webglMorphTargetsBuffers.push(k.createBuffer())}if(H.numMorphNormals){H.__webglMorphNormalsBuffers=[];Q=0;for(K=H.numMorphNormals;Q<
|
|
|
-K;Q++)H.__webglMorphNormalsBuffers.push(k.createBuffer())}R.info.memory.geometries++;c(p,j);m.verticesNeedUpdate=!0;m.morphTargetsNeedUpdate=!0;m.elementsNeedUpdate=!0;m.uvsNeedUpdate=!0;m.normalsNeedUpdate=!0;m.tangentsNeedUpdate=!0;m.colorsNeedUpdate=!0}}else m instanceof THREE.BufferGeometry&&g(m);else if(j instanceof THREE.Ribbon){if(m=j.geometry,!m.__webglVertexBuffer){var M=m;M.__webglVertexBuffer=k.createBuffer();M.__webglColorBuffer=k.createBuffer();R.info.memory.geometries++;var W=m,L=W.vertices.length;
|
|
|
-W.__vertexArray=new Float32Array(3*L);W.__colorArray=new Float32Array(3*L);W.__webglVertexCount=L;m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0}}else if(j instanceof THREE.Line){if(m=j.geometry,!m.__webglVertexBuffer){var aa=m;aa.__webglVertexBuffer=k.createBuffer();aa.__webglColorBuffer=k.createBuffer();R.info.memory.geometries++;var N=m,P=j,O=N.vertices.length;N.__vertexArray=new Float32Array(3*O);N.__colorArray=new Float32Array(3*O);N.__webglLineCount=O;b(N,P);m.verticesNeedUpdate=!0;m.colorsNeedUpdate=
|
|
|
-!0}}else if(j instanceof THREE.ParticleSystem&&(m=j.geometry,!m.__webglVertexBuffer))if(m instanceof THREE.Geometry){var $=m;$.__webglVertexBuffer=k.createBuffer();$.__webglColorBuffer=k.createBuffer();R.info.memory.geometries++;var Z=m,ha=j,X=Z.vertices.length;Z.__vertexArray=new Float32Array(3*X);Z.__colorArray=new Float32Array(3*X);Z.__sortArray=[];Z.__webglParticleCount=X;b(Z,ha);m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0}else m instanceof THREE.BufferGeometry&&g(m);if(!j.__webglActive){if(j instanceof
|
|
|
-THREE.Mesh)if(m=j.geometry,m instanceof THREE.BufferGeometry)o(l.__webglObjects,m,j);else for(n in m.geometryGroups)p=m.geometryGroups[n],o(l.__webglObjects,p,j);else j instanceof THREE.Ribbon||j instanceof THREE.Line||j instanceof THREE.ParticleSystem?(m=j.geometry,o(l.__webglObjects,m,j)):j instanceof THREE.ImmediateRenderObject||j.immediateRenderCallback?l.__webglObjectsImmediate.push({object:j,opaque:null,transparent:null}):j instanceof THREE.Sprite?l.__webglSprites.push(j):j instanceof THREE.LensFlare&&
|
|
|
-l.__webglFlares.push(j);j.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var fa=a.__objectsRemoved[0],oa=a;fa instanceof THREE.Mesh||fa instanceof THREE.ParticleSystem||fa instanceof THREE.Ribbon||fa instanceof THREE.Line?t(oa.__webglObjects,fa):fa instanceof THREE.Sprite?A(oa.__webglSprites,fa):fa instanceof THREE.LensFlare?A(oa.__webglFlares,fa):(fa instanceof THREE.ImmediateRenderObject||fa.immediateRenderCallback)&&t(oa.__webglObjectsImmediate,fa);fa.__webglActive=
|
|
|
-!1;a.__objectsRemoved.splice(0,1)}for(var Ka=0,ra=a.__webglObjects.length;Ka<ra;Ka++){var sa=a.__webglObjects[Ka].object,ga=sa.geometry,La=void 0,Ea=void 0,la=void 0;if(sa instanceof THREE.Mesh)if(ga instanceof THREE.BufferGeometry)(ga.verticesNeedUpdate||ga.elementsNeedUpdate||ga.uvsNeedUpdate||ga.normalsNeedUpdate||ga.colorsNeedUpdate||ga.tangentsNeedUpdate)&&i(ga,k.DYNAMIC_DRAW,!ga.dynamic),ga.verticesNeedUpdate=!1,ga.elementsNeedUpdate=!1,ga.uvsNeedUpdate=!1,ga.normalsNeedUpdate=!1,ga.colorsNeedUpdate=
|
|
|
-!1,ga.tangentsNeedUpdate=!1;else{for(var ya=0,Ga=ga.geometryGroupsList.length;ya<Ga;ya++)if(La=ga.geometryGroupsList[ya],la=d(sa,La),ga.buffersNeedUpdate&&c(La,sa),Ea=la.attributes&&q(la),ga.verticesNeedUpdate||ga.morphTargetsNeedUpdate||ga.elementsNeedUpdate||ga.uvsNeedUpdate||ga.normalsNeedUpdate||ga.colorsNeedUpdate||ga.tangentsNeedUpdate||Ea){var na=La,Ia=sa,ua=k.DYNAMIC_DRAW,Pa=!ga.dynamic,Ma=la;if(na.__inittedArrays){var cb=f(Ma),ab=Ma.vertexColors?Ma.vertexColors:!1,ib=e(Ma),kb=cb===THREE.SmoothShading,
|
|
|
-E=void 0,Y=void 0,Ua=void 0,S=void 0,bb=void 0,Ya=void 0,xb=void 0,hb=void 0,Va=void 0,db=void 0,gb=void 0,T=void 0,U=void 0,V=void 0,ma=void 0,yb=void 0,zb=void 0,Ab=void 0,lb=void 0,Bb=void 0,Cb=void 0,Db=void 0,mb=void 0,Eb=void 0,Fb=void 0,Gb=void 0,nb=void 0,Hb=void 0,Ib=void 0,Jb=void 0,sb=void 0,Kb=void 0,Lb=void 0,Mb=void 0,vb=void 0,ta=void 0,Sb=void 0,Vb=void 0,gc=void 0,hc=void 0,Qa=void 0,dc=void 0,Na=void 0,Oa=void 0,Wb=void 0,Ob=void 0,Fa=0,Ja=0,Pb=0,Qb=0,qb=0,Wa=0,xa=0,$a=0,Ha=0,ea=
|
|
|
-0,ia=0,x=0,va=void 0,Ra=na.__vertexArray,kc=na.__uvArray,lc=na.__uv2Array,rb=na.__normalArray,Aa=na.__tangentArray,Sa=na.__colorArray,Ba=na.__skinIndexArray,Ca=na.__skinWeightArray,ac=na.__morphTargetsArrays,Fc=na.__morphNormalsArrays,Gc=na.__webglCustomAttributesList,v=void 0,Nb=na.__faceArray,jb=na.__lineArray,eb=Ia.geometry,qc=eb.elementsNeedUpdate,jc=eb.uvsNeedUpdate,Cc=eb.normalsNeedUpdate,Dc=eb.tangentsNeedUpdate,Rc=eb.colorsNeedUpdate,Sc=eb.morphTargetsNeedUpdate,bc=eb.vertices,pa=na.faces3,
|
|
|
-qa=na.faces4,Xa=eb.faces,Hc=eb.faceVertexUvs[0],Ic=eb.faceVertexUvs[1],cc=eb.skinIndices,Xb=eb.skinWeights,Yb=eb.morphTargets,sc=eb.morphNormals;if(eb.verticesNeedUpdate){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],T=bc[S.a],U=bc[S.b],V=bc[S.c],Ra[Ja]=T.x,Ra[Ja+1]=T.y,Ra[Ja+2]=T.z,Ra[Ja+3]=U.x,Ra[Ja+4]=U.y,Ra[Ja+5]=U.z,Ra[Ja+6]=V.x,Ra[Ja+7]=V.y,Ra[Ja+8]=V.z,Ja+=9;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],T=bc[S.a],U=bc[S.b],V=bc[S.c],ma=bc[S.d],Ra[Ja]=T.x,Ra[Ja+1]=T.y,Ra[Ja+2]=T.z,Ra[Ja+3]=U.x,Ra[Ja+4]=
|
|
|
-U.y,Ra[Ja+5]=U.z,Ra[Ja+6]=V.x,Ra[Ja+7]=V.y,Ra[Ja+8]=V.z,Ra[Ja+9]=ma.x,Ra[Ja+10]=ma.y,Ra[Ja+11]=ma.z,Ja+=12;k.bindBuffer(k.ARRAY_BUFFER,na.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Ra,ua)}if(Sc){Qa=0;for(dc=Yb.length;Qa<dc;Qa++){E=ia=0;for(Y=pa.length;E<Y;E++)Wb=pa[E],S=Xa[Wb],T=Yb[Qa].vertices[S.a],U=Yb[Qa].vertices[S.b],V=Yb[Qa].vertices[S.c],Na=ac[Qa],Na[ia]=T.x,Na[ia+1]=T.y,Na[ia+2]=T.z,Na[ia+3]=U.x,Na[ia+4]=U.y,Na[ia+5]=U.z,Na[ia+6]=V.x,Na[ia+7]=V.y,Na[ia+8]=V.z,Ma.morphNormals&&(kb?(Ob=
|
|
|
-sc[Qa].vertexNormals[Wb],Bb=Ob.a,Cb=Ob.b,Db=Ob.c):Db=Cb=Bb=sc[Qa].faceNormals[Wb],Oa=Fc[Qa],Oa[ia]=Bb.x,Oa[ia+1]=Bb.y,Oa[ia+2]=Bb.z,Oa[ia+3]=Cb.x,Oa[ia+4]=Cb.y,Oa[ia+5]=Cb.z,Oa[ia+6]=Db.x,Oa[ia+7]=Db.y,Oa[ia+8]=Db.z),ia+=9;E=0;for(Y=qa.length;E<Y;E++)Wb=qa[E],S=Xa[Wb],T=Yb[Qa].vertices[S.a],U=Yb[Qa].vertices[S.b],V=Yb[Qa].vertices[S.c],ma=Yb[Qa].vertices[S.d],Na=ac[Qa],Na[ia]=T.x,Na[ia+1]=T.y,Na[ia+2]=T.z,Na[ia+3]=U.x,Na[ia+4]=U.y,Na[ia+5]=U.z,Na[ia+6]=V.x,Na[ia+7]=V.y,Na[ia+8]=V.z,Na[ia+9]=ma.x,
|
|
|
-Na[ia+10]=ma.y,Na[ia+11]=ma.z,Ma.morphNormals&&(kb?(Ob=sc[Qa].vertexNormals[Wb],Bb=Ob.a,Cb=Ob.b,Db=Ob.c,mb=Ob.d):mb=Db=Cb=Bb=sc[Qa].faceNormals[Wb],Oa=Fc[Qa],Oa[ia]=Bb.x,Oa[ia+1]=Bb.y,Oa[ia+2]=Bb.z,Oa[ia+3]=Cb.x,Oa[ia+4]=Cb.y,Oa[ia+5]=Cb.z,Oa[ia+6]=Db.x,Oa[ia+7]=Db.y,Oa[ia+8]=Db.z,Oa[ia+9]=mb.x,Oa[ia+10]=mb.y,Oa[ia+11]=mb.z),ia+=12;k.bindBuffer(k.ARRAY_BUFFER,na.__webglMorphTargetsBuffers[Qa]);k.bufferData(k.ARRAY_BUFFER,ac[Qa],ua);Ma.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,na.__webglMorphNormalsBuffers[Qa]),
|
|
|
-k.bufferData(k.ARRAY_BUFFER,Fc[Qa],ua))}}if(Xb.length){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],Hb=Xb[S.a],Ib=Xb[S.b],Jb=Xb[S.c],Ca[ea]=Hb.x,Ca[ea+1]=Hb.y,Ca[ea+2]=Hb.z,Ca[ea+3]=Hb.w,Ca[ea+4]=Ib.x,Ca[ea+5]=Ib.y,Ca[ea+6]=Ib.z,Ca[ea+7]=Ib.w,Ca[ea+8]=Jb.x,Ca[ea+9]=Jb.y,Ca[ea+10]=Jb.z,Ca[ea+11]=Jb.w,Kb=cc[S.a],Lb=cc[S.b],Mb=cc[S.c],Ba[ea]=Kb.x,Ba[ea+1]=Kb.y,Ba[ea+2]=Kb.z,Ba[ea+3]=Kb.w,Ba[ea+4]=Lb.x,Ba[ea+5]=Lb.y,Ba[ea+6]=Lb.z,Ba[ea+7]=Lb.w,Ba[ea+8]=Mb.x,Ba[ea+9]=Mb.y,Ba[ea+10]=Mb.z,Ba[ea+11]=Mb.w,ea+=
|
|
|
-12;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],Hb=Xb[S.a],Ib=Xb[S.b],Jb=Xb[S.c],sb=Xb[S.d],Ca[ea]=Hb.x,Ca[ea+1]=Hb.y,Ca[ea+2]=Hb.z,Ca[ea+3]=Hb.w,Ca[ea+4]=Ib.x,Ca[ea+5]=Ib.y,Ca[ea+6]=Ib.z,Ca[ea+7]=Ib.w,Ca[ea+8]=Jb.x,Ca[ea+9]=Jb.y,Ca[ea+10]=Jb.z,Ca[ea+11]=Jb.w,Ca[ea+12]=sb.x,Ca[ea+13]=sb.y,Ca[ea+14]=sb.z,Ca[ea+15]=sb.w,Kb=cc[S.a],Lb=cc[S.b],Mb=cc[S.c],vb=cc[S.d],Ba[ea]=Kb.x,Ba[ea+1]=Kb.y,Ba[ea+2]=Kb.z,Ba[ea+3]=Kb.w,Ba[ea+4]=Lb.x,Ba[ea+5]=Lb.y,Ba[ea+6]=Lb.z,Ba[ea+7]=Lb.w,Ba[ea+8]=Mb.x,Ba[ea+9]=Mb.y,Ba[ea+
|
|
|
-10]=Mb.z,Ba[ea+11]=Mb.w,Ba[ea+12]=vb.x,Ba[ea+13]=vb.y,Ba[ea+14]=vb.z,Ba[ea+15]=vb.w,ea+=16;0<ea&&(k.bindBuffer(k.ARRAY_BUFFER,na.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,Ba,ua),k.bindBuffer(k.ARRAY_BUFFER,na.__webglSkinWeightsBuffer),k.bufferData(k.ARRAY_BUFFER,Ca,ua))}if(Rc&&ab){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],xb=S.vertexColors,hb=S.color,3===xb.length&&ab===THREE.VertexColors?(Eb=xb[0],Fb=xb[1],Gb=xb[2]):Gb=Fb=Eb=hb,Sa[Ha]=Eb.r,Sa[Ha+1]=Eb.g,Sa[Ha+2]=Eb.b,Sa[Ha+3]=Fb.r,Sa[Ha+
|
|
|
-4]=Fb.g,Sa[Ha+5]=Fb.b,Sa[Ha+6]=Gb.r,Sa[Ha+7]=Gb.g,Sa[Ha+8]=Gb.b,Ha+=9;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],xb=S.vertexColors,hb=S.color,4===xb.length&&ab===THREE.VertexColors?(Eb=xb[0],Fb=xb[1],Gb=xb[2],nb=xb[3]):nb=Gb=Fb=Eb=hb,Sa[Ha]=Eb.r,Sa[Ha+1]=Eb.g,Sa[Ha+2]=Eb.b,Sa[Ha+3]=Fb.r,Sa[Ha+4]=Fb.g,Sa[Ha+5]=Fb.b,Sa[Ha+6]=Gb.r,Sa[Ha+7]=Gb.g,Sa[Ha+8]=Gb.b,Sa[Ha+9]=nb.r,Sa[Ha+10]=nb.g,Sa[Ha+11]=nb.b,Ha+=12;0<Ha&&(k.bindBuffer(k.ARRAY_BUFFER,na.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,Sa,ua))}if(Dc&&
|
|
|
-eb.hasTangents){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],Va=S.vertexTangents,yb=Va[0],zb=Va[1],Ab=Va[2],Aa[xa]=yb.x,Aa[xa+1]=yb.y,Aa[xa+2]=yb.z,Aa[xa+3]=yb.w,Aa[xa+4]=zb.x,Aa[xa+5]=zb.y,Aa[xa+6]=zb.z,Aa[xa+7]=zb.w,Aa[xa+8]=Ab.x,Aa[xa+9]=Ab.y,Aa[xa+10]=Ab.z,Aa[xa+11]=Ab.w,xa+=12;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],Va=S.vertexTangents,yb=Va[0],zb=Va[1],Ab=Va[2],lb=Va[3],Aa[xa]=yb.x,Aa[xa+1]=yb.y,Aa[xa+2]=yb.z,Aa[xa+3]=yb.w,Aa[xa+4]=zb.x,Aa[xa+5]=zb.y,Aa[xa+6]=zb.z,Aa[xa+7]=zb.w,Aa[xa+8]=Ab.x,Aa[xa+
|
|
|
-9]=Ab.y,Aa[xa+10]=Ab.z,Aa[xa+11]=Ab.w,Aa[xa+12]=lb.x,Aa[xa+13]=lb.y,Aa[xa+14]=lb.z,Aa[xa+15]=lb.w,xa+=16;k.bindBuffer(k.ARRAY_BUFFER,na.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,Aa,ua)}if(Cc&&cb){E=0;for(Y=pa.length;E<Y;E++)if(S=Xa[pa[E]],bb=S.vertexNormals,Ya=S.normal,3===bb.length&&kb)for(ta=0;3>ta;ta++)Vb=bb[ta],rb[Wa]=Vb.x,rb[Wa+1]=Vb.y,rb[Wa+2]=Vb.z,Wa+=3;else for(ta=0;3>ta;ta++)rb[Wa]=Ya.x,rb[Wa+1]=Ya.y,rb[Wa+2]=Ya.z,Wa+=3;E=0;for(Y=qa.length;E<Y;E++)if(S=Xa[qa[E]],bb=S.vertexNormals,
|
|
|
-Ya=S.normal,4===bb.length&&kb)for(ta=0;4>ta;ta++)Vb=bb[ta],rb[Wa]=Vb.x,rb[Wa+1]=Vb.y,rb[Wa+2]=Vb.z,Wa+=3;else for(ta=0;4>ta;ta++)rb[Wa]=Ya.x,rb[Wa+1]=Ya.y,rb[Wa+2]=Ya.z,Wa+=3;k.bindBuffer(k.ARRAY_BUFFER,na.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,rb,ua)}if(jc&&Hc&&ib){E=0;for(Y=pa.length;E<Y;E++)if(Ua=pa[E],db=Hc[Ua],void 0!==db)for(ta=0;3>ta;ta++)gc=db[ta],kc[Pb]=gc.u,kc[Pb+1]=gc.v,Pb+=2;E=0;for(Y=qa.length;E<Y;E++)if(Ua=qa[E],db=Hc[Ua],void 0!==db)for(ta=0;4>ta;ta++)gc=db[ta],kc[Pb]=gc.u,
|
|
|
-kc[Pb+1]=gc.v,Pb+=2;0<Pb&&(k.bindBuffer(k.ARRAY_BUFFER,na.__webglUVBuffer),k.bufferData(k.ARRAY_BUFFER,kc,ua))}if(jc&&Ic&&ib){E=0;for(Y=pa.length;E<Y;E++)if(Ua=pa[E],gb=Ic[Ua],void 0!==gb)for(ta=0;3>ta;ta++)hc=gb[ta],lc[Qb]=hc.u,lc[Qb+1]=hc.v,Qb+=2;E=0;for(Y=qa.length;E<Y;E++)if(Ua=qa[E],gb=Ic[Ua],void 0!==gb)for(ta=0;4>ta;ta++)hc=gb[ta],lc[Qb]=hc.u,lc[Qb+1]=hc.v,Qb+=2;0<Qb&&(k.bindBuffer(k.ARRAY_BUFFER,na.__webglUV2Buffer),k.bufferData(k.ARRAY_BUFFER,lc,ua))}if(qc){E=0;for(Y=pa.length;E<Y;E++)Nb[qb]=
|
|
|
-Fa,Nb[qb+1]=Fa+1,Nb[qb+2]=Fa+2,qb+=3,jb[$a]=Fa,jb[$a+1]=Fa+1,jb[$a+2]=Fa,jb[$a+3]=Fa+2,jb[$a+4]=Fa+1,jb[$a+5]=Fa+2,$a+=6,Fa+=3;E=0;for(Y=qa.length;E<Y;E++)Nb[qb]=Fa,Nb[qb+1]=Fa+1,Nb[qb+2]=Fa+3,Nb[qb+3]=Fa+1,Nb[qb+4]=Fa+2,Nb[qb+5]=Fa+3,qb+=6,jb[$a]=Fa,jb[$a+1]=Fa+1,jb[$a+2]=Fa,jb[$a+3]=Fa+3,jb[$a+4]=Fa+1,jb[$a+5]=Fa+2,jb[$a+6]=Fa+2,jb[$a+7]=Fa+3,$a+=8,Fa+=4;k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,na.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Nb,ua);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,na.__webglLineBuffer);
|
|
|
-k.bufferData(k.ELEMENT_ARRAY_BUFFER,jb,ua)}if(Gc){ta=0;for(Sb=Gc.length;ta<Sb;ta++)if(v=Gc[ta],v.__original.needsUpdate){x=0;if(1===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],v.array[x]=v.value[S.a],v.array[x+1]=v.value[S.b],v.array[x+2]=v.value[S.c],x+=3;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],v.array[x]=v.value[S.a],v.array[x+1]=v.value[S.b],v.array[x+2]=v.value[S.c],v.array[x+3]=v.value[S.d],x+=4}else{if("faces"===v.boundTo){E=0;for(Y=pa.length;E<
|
|
|
-Y;E++)va=v.value[pa[E]],v.array[x]=va,v.array[x+1]=va,v.array[x+2]=va,x+=3;E=0;for(Y=qa.length;E<Y;E++)va=v.value[qa[E]],v.array[x]=va,v.array[x+1]=va,v.array[x+2]=va,v.array[x+3]=va,x+=4}}else if(2===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],T=v.value[S.a],U=v.value[S.b],V=v.value[S.c],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=U.x,v.array[x+3]=U.y,v.array[x+4]=V.x,v.array[x+5]=V.y,x+=6;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],T=v.value[S.a],U=
|
|
|
-v.value[S.b],V=v.value[S.c],ma=v.value[S.d],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=U.x,v.array[x+3]=U.y,v.array[x+4]=V.x,v.array[x+5]=V.y,v.array[x+6]=ma.x,v.array[x+7]=ma.y,x+=8}else{if("faces"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)V=U=T=va=v.value[pa[E]],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=U.x,v.array[x+3]=U.y,v.array[x+4]=V.x,v.array[x+5]=V.y,x+=6;E=0;for(Y=qa.length;E<Y;E++)ma=V=U=T=va=v.value[qa[E]],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=U.x,v.array[x+3]=U.y,v.array[x+
|
|
|
-4]=V.x,v.array[x+5]=V.y,v.array[x+6]=ma.x,v.array[x+7]=ma.y,x+=8}}else if(3===v.size){var ca;ca="c"===v.type?["r","g","b"]:["x","y","z"];if(void 0===v.boundTo||"vertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],T=v.value[S.a],U=v.value[S.b],V=v.value[S.c],v.array[x]=T[ca[0]],v.array[x+1]=T[ca[1]],v.array[x+2]=T[ca[2]],v.array[x+3]=U[ca[0]],v.array[x+4]=U[ca[1]],v.array[x+5]=U[ca[2]],v.array[x+6]=V[ca[0]],v.array[x+7]=V[ca[1]],v.array[x+8]=V[ca[2]],x+=9;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],
|
|
|
-T=v.value[S.a],U=v.value[S.b],V=v.value[S.c],ma=v.value[S.d],v.array[x]=T[ca[0]],v.array[x+1]=T[ca[1]],v.array[x+2]=T[ca[2]],v.array[x+3]=U[ca[0]],v.array[x+4]=U[ca[1]],v.array[x+5]=U[ca[2]],v.array[x+6]=V[ca[0]],v.array[x+7]=V[ca[1]],v.array[x+8]=V[ca[2]],v.array[x+9]=ma[ca[0]],v.array[x+10]=ma[ca[1]],v.array[x+11]=ma[ca[2]],x+=12}else if("faces"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)V=U=T=va=v.value[pa[E]],v.array[x]=T[ca[0]],v.array[x+1]=T[ca[1]],v.array[x+2]=T[ca[2]],v.array[x+3]=U[ca[0]],
|
|
|
-v.array[x+4]=U[ca[1]],v.array[x+5]=U[ca[2]],v.array[x+6]=V[ca[0]],v.array[x+7]=V[ca[1]],v.array[x+8]=V[ca[2]],x+=9;E=0;for(Y=qa.length;E<Y;E++)ma=V=U=T=va=v.value[qa[E]],v.array[x]=T[ca[0]],v.array[x+1]=T[ca[1]],v.array[x+2]=T[ca[2]],v.array[x+3]=U[ca[0]],v.array[x+4]=U[ca[1]],v.array[x+5]=U[ca[2]],v.array[x+6]=V[ca[0]],v.array[x+7]=V[ca[1]],v.array[x+8]=V[ca[2]],v.array[x+9]=ma[ca[0]],v.array[x+10]=ma[ca[1]],v.array[x+11]=ma[ca[2]],x+=12}else if("faceVertices"===v.boundTo){E=0;for(Y=pa.length;E<
|
|
|
-Y;E++)va=v.value[pa[E]],T=va[0],U=va[1],V=va[2],v.array[x]=T[ca[0]],v.array[x+1]=T[ca[1]],v.array[x+2]=T[ca[2]],v.array[x+3]=U[ca[0]],v.array[x+4]=U[ca[1]],v.array[x+5]=U[ca[2]],v.array[x+6]=V[ca[0]],v.array[x+7]=V[ca[1]],v.array[x+8]=V[ca[2]],x+=9;E=0;for(Y=qa.length;E<Y;E++)va=v.value[qa[E]],T=va[0],U=va[1],V=va[2],ma=va[3],v.array[x]=T[ca[0]],v.array[x+1]=T[ca[1]],v.array[x+2]=T[ca[2]],v.array[x+3]=U[ca[0]],v.array[x+4]=U[ca[1]],v.array[x+5]=U[ca[2]],v.array[x+6]=V[ca[0]],v.array[x+7]=V[ca[1]],
|
|
|
-v.array[x+8]=V[ca[2]],v.array[x+9]=ma[ca[0]],v.array[x+10]=ma[ca[1]],v.array[x+11]=ma[ca[2]],x+=12}}else if(4===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],T=v.value[S.a],U=v.value[S.b],V=v.value[S.c],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=T.z,v.array[x+3]=T.w,v.array[x+4]=U.x,v.array[x+5]=U.y,v.array[x+6]=U.z,v.array[x+7]=U.w,v.array[x+8]=V.x,v.array[x+9]=V.y,v.array[x+10]=V.z,v.array[x+11]=V.w,x+=12;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],
|
|
|
-T=v.value[S.a],U=v.value[S.b],V=v.value[S.c],ma=v.value[S.d],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=T.z,v.array[x+3]=T.w,v.array[x+4]=U.x,v.array[x+5]=U.y,v.array[x+6]=U.z,v.array[x+7]=U.w,v.array[x+8]=V.x,v.array[x+9]=V.y,v.array[x+10]=V.z,v.array[x+11]=V.w,v.array[x+12]=ma.x,v.array[x+13]=ma.y,v.array[x+14]=ma.z,v.array[x+15]=ma.w,x+=16}else if("faces"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)V=U=T=va=v.value[pa[E]],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=T.z,v.array[x+3]=T.w,v.array[x+
|
|
|
-4]=U.x,v.array[x+5]=U.y,v.array[x+6]=U.z,v.array[x+7]=U.w,v.array[x+8]=V.x,v.array[x+9]=V.y,v.array[x+10]=V.z,v.array[x+11]=V.w,x+=12;E=0;for(Y=qa.length;E<Y;E++)ma=V=U=T=va=v.value[qa[E]],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=T.z,v.array[x+3]=T.w,v.array[x+4]=U.x,v.array[x+5]=U.y,v.array[x+6]=U.z,v.array[x+7]=U.w,v.array[x+8]=V.x,v.array[x+9]=V.y,v.array[x+10]=V.z,v.array[x+11]=V.w,v.array[x+12]=ma.x,v.array[x+13]=ma.y,v.array[x+14]=ma.z,v.array[x+15]=ma.w,x+=16}else if("faceVertices"===v.boundTo){E=
|
|
|
-0;for(Y=pa.length;E<Y;E++)va=v.value[pa[E]],T=va[0],U=va[1],V=va[2],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=T.z,v.array[x+3]=T.w,v.array[x+4]=U.x,v.array[x+5]=U.y,v.array[x+6]=U.z,v.array[x+7]=U.w,v.array[x+8]=V.x,v.array[x+9]=V.y,v.array[x+10]=V.z,v.array[x+11]=V.w,x+=12;E=0;for(Y=qa.length;E<Y;E++)va=v.value[qa[E]],T=va[0],U=va[1],V=va[2],ma=va[3],v.array[x]=T.x,v.array[x+1]=T.y,v.array[x+2]=T.z,v.array[x+3]=T.w,v.array[x+4]=U.x,v.array[x+5]=U.y,v.array[x+6]=U.z,v.array[x+7]=U.w,v.array[x+
|
|
|
-8]=V.x,v.array[x+9]=V.y,v.array[x+10]=V.z,v.array[x+11]=V.w,v.array[x+12]=ma.x,v.array[x+13]=ma.y,v.array[x+14]=ma.z,v.array[x+15]=ma.w,x+=16}k.bindBuffer(k.ARRAY_BUFFER,v.buffer);k.bufferData(k.ARRAY_BUFFER,v.array,ua)}}Pa&&(delete na.__inittedArrays,delete na.__colorArray,delete na.__normalArray,delete na.__tangentArray,delete na.__uvArray,delete na.__uv2Array,delete na.__faceArray,delete na.__vertexArray,delete na.__lineArray,delete na.__skinIndexArray,delete na.__skinWeightArray)}}ga.verticesNeedUpdate=
|
|
|
-!1;ga.morphTargetsNeedUpdate=!1;ga.elementsNeedUpdate=!1;ga.uvsNeedUpdate=!1;ga.normalsNeedUpdate=!1;ga.colorsNeedUpdate=!1;ga.tangentsNeedUpdate=!1;ga.buffersNeedUpdate=!1;la.attributes&&s(la)}else if(sa instanceof THREE.Ribbon){if(ga.verticesNeedUpdate||ga.colorsNeedUpdate){var Zb=ga,Lc=k.DYNAMIC_DRAW,mc=void 0,nc=void 0,tc=void 0,$b=void 0,uc=void 0,Mc=Zb.vertices,Nc=Zb.colors,Tc=Mc.length,Uc=Nc.length,vc=Zb.__vertexArray,wc=Zb.__colorArray,Vc=Zb.colorsNeedUpdate;if(Zb.verticesNeedUpdate){for(mc=
|
|
|
-0;mc<Tc;mc++)tc=Mc[mc],$b=3*mc,vc[$b]=tc.x,vc[$b+1]=tc.y,vc[$b+2]=tc.z;k.bindBuffer(k.ARRAY_BUFFER,Zb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,vc,Lc)}if(Vc){for(nc=0;nc<Uc;nc++)uc=Nc[nc],$b=3*nc,wc[$b]=uc.r,wc[$b+1]=uc.g,wc[$b+2]=uc.b;k.bindBuffer(k.ARRAY_BUFFER,Zb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,wc,Lc)}}ga.verticesNeedUpdate=!1;ga.colorsNeedUpdate=!1}else if(sa instanceof THREE.Line){la=d(sa,La);Ea=la.attributes&&q(la);if(ga.verticesNeedUpdate||ga.colorsNeedUpdate||Ea){var Rb=
|
|
|
-ga,Jc=k.DYNAMIC_DRAW,oc=void 0,pc=void 0,xc=void 0,Da=void 0,yc=void 0,Oc=Rb.vertices,Pc=Rb.colors,Wc=Oc.length,Xc=Pc.length,zc=Rb.__vertexArray,Ac=Rb.__colorArray,Yc=Rb.colorsNeedUpdate,Kc=Rb.__webglCustomAttributesList,Bc=void 0,Qc=void 0,Ta=void 0,ic=void 0,fb=void 0,za=void 0;if(Rb.verticesNeedUpdate){for(oc=0;oc<Wc;oc++)xc=Oc[oc],Da=3*oc,zc[Da]=xc.x,zc[Da+1]=xc.y,zc[Da+2]=xc.z;k.bindBuffer(k.ARRAY_BUFFER,Rb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,zc,Jc)}if(Yc){for(pc=0;pc<Xc;pc++)yc=
|
|
|
-Pc[pc],Da=3*pc,Ac[Da]=yc.r,Ac[Da+1]=yc.g,Ac[Da+2]=yc.b;k.bindBuffer(k.ARRAY_BUFFER,Rb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Ac,Jc)}if(Kc){Bc=0;for(Qc=Kc.length;Bc<Qc;Bc++)if(za=Kc[Bc],za.needsUpdate&&(void 0===za.boundTo||"vertices"===za.boundTo)){Da=0;ic=za.value.length;if(1===za.size)for(Ta=0;Ta<ic;Ta++)za.array[Ta]=za.value[Ta];else if(2===za.size)for(Ta=0;Ta<ic;Ta++)fb=za.value[Ta],za.array[Da]=fb.x,za.array[Da+1]=fb.y,Da+=2;else if(3===za.size)if("c"===za.type)for(Ta=0;Ta<ic;Ta++)fb=
|
|
|
-za.value[Ta],za.array[Da]=fb.r,za.array[Da+1]=fb.g,za.array[Da+2]=fb.b,Da+=3;else for(Ta=0;Ta<ic;Ta++)fb=za.value[Ta],za.array[Da]=fb.x,za.array[Da+1]=fb.y,za.array[Da+2]=fb.z,Da+=3;else if(4===za.size)for(Ta=0;Ta<ic;Ta++)fb=za.value[Ta],za.array[Da]=fb.x,za.array[Da+1]=fb.y,za.array[Da+2]=fb.z,za.array[Da+3]=fb.w,Da+=4;k.bindBuffer(k.ARRAY_BUFFER,za.buffer);k.bufferData(k.ARRAY_BUFFER,za.array,Jc)}}}ga.verticesNeedUpdate=!1;ga.colorsNeedUpdate=!1;la.attributes&&s(la)}else sa instanceof THREE.ParticleSystem&&
|
|
|
-(ga instanceof THREE.BufferGeometry?((ga.verticesNeedUpdate||ga.colorsNeedUpdate)&&i(ga,k.DYNAMIC_DRAW,!ga.dynamic),ga.verticesNeedUpdate=!1,ga.colorsNeedUpdate=!1):(la=d(sa,La),Ea=la.attributes&&q(la),(ga.verticesNeedUpdate||ga.colorsNeedUpdate||sa.sortParticles||Ea)&&h(ga,k.DYNAMIC_DRAW,sa),ga.verticesNeedUpdate=!1,ga.colorsNeedUpdate=!1,la.attributes&&s(la)))}};this.initMaterial=function(a,b,c,d){var f,e,g,h,i,j,l,m,n;a instanceof THREE.MeshDepthMaterial?n="depth":a instanceof THREE.MeshNormalMaterial?
|
|
|
-n="normal":a instanceof THREE.MeshBasicMaterial?n="basic":a instanceof THREE.MeshLambertMaterial?n="lambert":a instanceof THREE.MeshPhongMaterial?n="phong":a instanceof THREE.LineBasicMaterial?n="basic":a instanceof THREE.ParticleBasicMaterial&&(n="particle_basic");if(n){var o=THREE.ShaderLib[n];a.uniforms=THREE.UniformsUtils.clone(o.uniforms);a.vertexShader=o.vertexShader;a.fragmentShader=o.fragmentShader}var p,q,s;f=p=q=s=o=0;for(e=b.length;f<e;f++)g=b[f],g.onlyShadow||(g instanceof THREE.DirectionalLight&&
|
|
|
-p++,g instanceof THREE.PointLight&&q++,g instanceof THREE.SpotLight&&s++,g instanceof THREE.HemisphereLight&&o++);q+s+p+o<=sa?f=p:(f=Math.ceil(sa*p/(q+p)),s=q=sa-f,o=f);e=q;g=s;h=o;o=p=0;for(s=b.length;o<s;o++)q=b[o],q.castShadow&&(q instanceof THREE.SpotLight&&p++,q instanceof THREE.DirectionalLight&&!q.shadowCascade&&p++);m=p;ac&&d&&d.useVertexTexture?l=1024:(b=k.getParameter(k.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,
|
|
|
-b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),l=b);var t;a:{q=a.fragmentShader;s=a.vertexShader;o=a.uniforms;b=a.attributes;p=a.defines;var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:l,useVertexTexture:ac&&
|
|
|
-d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:f,maxPointLights:e,maxSpotLights:g,maxHemiLights:h,maxShadows:m,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,
|
|
|
-perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide},r,u,y,d=[];n?d.push(n):(d.push(q),d.push(s));for(u in p)d.push(u),d.push(p[u]);for(r in c)d.push(r),d.push(c[r]);n=d.join();r=0;for(u=oa.length;r<u;r++)if(d=oa[r],d.code===n){d.usedTimes++;t=d.program;break a}r=[];for(y in p)u=p[y],!1!==u&&(u="#define "+y+" "+u,r.push(u));u=r.join("\n");y=k.createProgram();r=["precision "+K+" float;",u,dc?"#define VERTEX_TEXTURES":"",R.gammaInput?"#define GAMMA_INPUT":
|
|
|
-"",R.gammaOutput?"#define GAMMA_OUTPUT":"",R.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":
|
|
|
-"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+c.boneTextureHeight.toFixed(1):"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?
|
|
|
-"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
+K;Q++)H.__webglMorphNormalsBuffers.push(k.createBuffer())}R.info.memory.geometries++;c(p,j);m.verticesNeedUpdate=!0;m.morphTargetsNeedUpdate=!0;m.elementsNeedUpdate=!0;m.uvsNeedUpdate=!0;m.normalsNeedUpdate=!0;m.tangentsNeedUpdate=!0;m.colorsNeedUpdate=!0}}else m instanceof THREE.BufferGeometry&&g(m);else if(j instanceof THREE.Ribbon){if(m=j.geometry,!m.__webglVertexBuffer){var M=m;M.__webglVertexBuffer=k.createBuffer();M.__webglColorBuffer=k.createBuffer();M.__webglNormalBuffer=k.createBuffer();
|
|
|
+R.info.memory.geometries++;var T=m,L=T.vertices.length;T.__vertexArray=new Float32Array(3*L);T.__colorArray=new Float32Array(3*L);T.__normalArray=new Float32Array(3*L);T.__webglVertexCount=L;m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0;m.normalsNeedUpdate=!0}}else if(j instanceof THREE.Line){if(m=j.geometry,!m.__webglVertexBuffer){var aa=m;aa.__webglVertexBuffer=k.createBuffer();aa.__webglColorBuffer=k.createBuffer();R.info.memory.geometries++;var N=m,P=j,O=N.vertices.length;N.__vertexArray=new Float32Array(3*
|
|
|
+O);N.__colorArray=new Float32Array(3*O);N.__webglLineCount=O;b(N,P);m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0}}else if(j instanceof THREE.ParticleSystem&&(m=j.geometry,!m.__webglVertexBuffer))if(m instanceof THREE.Geometry){var $=m;$.__webglVertexBuffer=k.createBuffer();$.__webglColorBuffer=k.createBuffer();R.info.memory.geometries++;var Z=m,ha=j,X=Z.vertices.length;Z.__vertexArray=new Float32Array(3*X);Z.__colorArray=new Float32Array(3*X);Z.__sortArray=[];Z.__webglParticleCount=X;b(Z,ha);m.verticesNeedUpdate=
|
|
|
+!0;m.colorsNeedUpdate=!0}else m instanceof THREE.BufferGeometry&&g(m);if(!j.__webglActive){if(j instanceof THREE.Mesh)if(m=j.geometry,m instanceof THREE.BufferGeometry)o(l.__webglObjects,m,j);else for(n in m.geometryGroups)p=m.geometryGroups[n],o(l.__webglObjects,p,j);else j instanceof THREE.Ribbon||j instanceof THREE.Line||j instanceof THREE.ParticleSystem?(m=j.geometry,o(l.__webglObjects,m,j)):j instanceof THREE.ImmediateRenderObject||j.immediateRenderCallback?l.__webglObjectsImmediate.push({object:j,
|
|
|
+opaque:null,transparent:null}):j instanceof THREE.Sprite?l.__webglSprites.push(j):j instanceof THREE.LensFlare&&l.__webglFlares.push(j);j.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var fa=a.__objectsRemoved[0],oa=a;fa instanceof THREE.Mesh||fa instanceof THREE.ParticleSystem||fa instanceof THREE.Ribbon||fa instanceof THREE.Line?t(oa.__webglObjects,fa):fa instanceof THREE.Sprite?A(oa.__webglSprites,fa):fa instanceof THREE.LensFlare?A(oa.__webglFlares,fa):(fa instanceof
|
|
|
+THREE.ImmediateRenderObject||fa.immediateRenderCallback)&&t(oa.__webglObjectsImmediate,fa);fa.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var Ka=0,ra=a.__webglObjects.length;Ka<ra;Ka++){var sa=a.__webglObjects[Ka].object,ga=sa.geometry,La=void 0,Ea=void 0,la=void 0;if(sa instanceof THREE.Mesh)if(ga instanceof THREE.BufferGeometry)(ga.verticesNeedUpdate||ga.elementsNeedUpdate||ga.uvsNeedUpdate||ga.normalsNeedUpdate||ga.colorsNeedUpdate||ga.tangentsNeedUpdate)&&i(ga,k.DYNAMIC_DRAW,!ga.dynamic),
|
|
|
+ga.verticesNeedUpdate=!1,ga.elementsNeedUpdate=!1,ga.uvsNeedUpdate=!1,ga.normalsNeedUpdate=!1,ga.colorsNeedUpdate=!1,ga.tangentsNeedUpdate=!1;else{for(var ya=0,Ga=ga.geometryGroupsList.length;ya<Ga;ya++)if(La=ga.geometryGroupsList[ya],la=d(sa,La),ga.buffersNeedUpdate&&c(La,sa),Ea=la.attributes&&q(la),ga.verticesNeedUpdate||ga.morphTargetsNeedUpdate||ga.elementsNeedUpdate||ga.uvsNeedUpdate||ga.normalsNeedUpdate||ga.colorsNeedUpdate||ga.tangentsNeedUpdate||Ea){var na=La,Ia=sa,ua=k.DYNAMIC_DRAW,Pa=!ga.dynamic,
|
|
|
+Ma=la;if(na.__inittedArrays){var cb=f(Ma),ab=Ma.vertexColors?Ma.vertexColors:!1,ib=e(Ma),kb=cb===THREE.SmoothShading,E=void 0,Y=void 0,Ua=void 0,S=void 0,bb=void 0,Ya=void 0,zb=void 0,hb=void 0,Va=void 0,db=void 0,gb=void 0,U=void 0,V=void 0,W=void 0,ma=void 0,Ab=void 0,Bb=void 0,Cb=void 0,lb=void 0,Db=void 0,Eb=void 0,Fb=void 0,mb=void 0,Gb=void 0,Hb=void 0,Ib=void 0,nb=void 0,Jb=void 0,Kb=void 0,Lb=void 0,sb=void 0,Mb=void 0,Nb=void 0,Ob=void 0,xb=void 0,ta=void 0,Ub=void 0,Xb=void 0,gc=void 0,
|
|
|
+hc=void 0,Qa=void 0,dc=void 0,Na=void 0,Oa=void 0,Yb=void 0,Qb=void 0,Fa=0,Ja=0,Rb=0,Sb=0,qb=0,Wa=0,xa=0,$a=0,Ha=0,ea=0,ia=0,x=0,va=void 0,Ra=na.__vertexArray,kc=na.__uvArray,lc=na.__uv2Array,rb=na.__normalArray,Aa=na.__tangentArray,Sa=na.__colorArray,Ba=na.__skinIndexArray,Ca=na.__skinWeightArray,ac=na.__morphTargetsArrays,Ic=na.__morphNormalsArrays,Jc=na.__webglCustomAttributesList,v=void 0,Pb=na.__faceArray,jb=na.__lineArray,eb=Ia.geometry,rc=eb.elementsNeedUpdate,jc=eb.uvsNeedUpdate,Fc=eb.normalsNeedUpdate,
|
|
|
+Gc=eb.tangentsNeedUpdate,Vc=eb.colorsNeedUpdate,Wc=eb.morphTargetsNeedUpdate,bc=eb.vertices,pa=na.faces3,qa=na.faces4,Xa=eb.faces,Kc=eb.faceVertexUvs[0],Lc=eb.faceVertexUvs[1],cc=eb.skinIndices,Zb=eb.skinWeights,$b=eb.morphTargets,tc=eb.morphNormals;if(eb.verticesNeedUpdate){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],U=bc[S.a],V=bc[S.b],W=bc[S.c],Ra[Ja]=U.x,Ra[Ja+1]=U.y,Ra[Ja+2]=U.z,Ra[Ja+3]=V.x,Ra[Ja+4]=V.y,Ra[Ja+5]=V.z,Ra[Ja+6]=W.x,Ra[Ja+7]=W.y,Ra[Ja+8]=W.z,Ja+=9;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],
|
|
|
+U=bc[S.a],V=bc[S.b],W=bc[S.c],ma=bc[S.d],Ra[Ja]=U.x,Ra[Ja+1]=U.y,Ra[Ja+2]=U.z,Ra[Ja+3]=V.x,Ra[Ja+4]=V.y,Ra[Ja+5]=V.z,Ra[Ja+6]=W.x,Ra[Ja+7]=W.y,Ra[Ja+8]=W.z,Ra[Ja+9]=ma.x,Ra[Ja+10]=ma.y,Ra[Ja+11]=ma.z,Ja+=12;k.bindBuffer(k.ARRAY_BUFFER,na.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Ra,ua)}if(Wc){Qa=0;for(dc=$b.length;Qa<dc;Qa++){E=ia=0;for(Y=pa.length;E<Y;E++)Yb=pa[E],S=Xa[Yb],U=$b[Qa].vertices[S.a],V=$b[Qa].vertices[S.b],W=$b[Qa].vertices[S.c],Na=ac[Qa],Na[ia]=U.x,Na[ia+1]=U.y,Na[ia+2]=U.z,Na[ia+
|
|
|
+3]=V.x,Na[ia+4]=V.y,Na[ia+5]=V.z,Na[ia+6]=W.x,Na[ia+7]=W.y,Na[ia+8]=W.z,Ma.morphNormals&&(kb?(Qb=tc[Qa].vertexNormals[Yb],Db=Qb.a,Eb=Qb.b,Fb=Qb.c):Fb=Eb=Db=tc[Qa].faceNormals[Yb],Oa=Ic[Qa],Oa[ia]=Db.x,Oa[ia+1]=Db.y,Oa[ia+2]=Db.z,Oa[ia+3]=Eb.x,Oa[ia+4]=Eb.y,Oa[ia+5]=Eb.z,Oa[ia+6]=Fb.x,Oa[ia+7]=Fb.y,Oa[ia+8]=Fb.z),ia+=9;E=0;for(Y=qa.length;E<Y;E++)Yb=qa[E],S=Xa[Yb],U=$b[Qa].vertices[S.a],V=$b[Qa].vertices[S.b],W=$b[Qa].vertices[S.c],ma=$b[Qa].vertices[S.d],Na=ac[Qa],Na[ia]=U.x,Na[ia+1]=U.y,Na[ia+2]=
|
|
|
+U.z,Na[ia+3]=V.x,Na[ia+4]=V.y,Na[ia+5]=V.z,Na[ia+6]=W.x,Na[ia+7]=W.y,Na[ia+8]=W.z,Na[ia+9]=ma.x,Na[ia+10]=ma.y,Na[ia+11]=ma.z,Ma.morphNormals&&(kb?(Qb=tc[Qa].vertexNormals[Yb],Db=Qb.a,Eb=Qb.b,Fb=Qb.c,mb=Qb.d):mb=Fb=Eb=Db=tc[Qa].faceNormals[Yb],Oa=Ic[Qa],Oa[ia]=Db.x,Oa[ia+1]=Db.y,Oa[ia+2]=Db.z,Oa[ia+3]=Eb.x,Oa[ia+4]=Eb.y,Oa[ia+5]=Eb.z,Oa[ia+6]=Fb.x,Oa[ia+7]=Fb.y,Oa[ia+8]=Fb.z,Oa[ia+9]=mb.x,Oa[ia+10]=mb.y,Oa[ia+11]=mb.z),ia+=12;k.bindBuffer(k.ARRAY_BUFFER,na.__webglMorphTargetsBuffers[Qa]);k.bufferData(k.ARRAY_BUFFER,
|
|
|
+ac[Qa],ua);Ma.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,na.__webglMorphNormalsBuffers[Qa]),k.bufferData(k.ARRAY_BUFFER,Ic[Qa],ua))}}if(Zb.length){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],Jb=Zb[S.a],Kb=Zb[S.b],Lb=Zb[S.c],Ca[ea]=Jb.x,Ca[ea+1]=Jb.y,Ca[ea+2]=Jb.z,Ca[ea+3]=Jb.w,Ca[ea+4]=Kb.x,Ca[ea+5]=Kb.y,Ca[ea+6]=Kb.z,Ca[ea+7]=Kb.w,Ca[ea+8]=Lb.x,Ca[ea+9]=Lb.y,Ca[ea+10]=Lb.z,Ca[ea+11]=Lb.w,Mb=cc[S.a],Nb=cc[S.b],Ob=cc[S.c],Ba[ea]=Mb.x,Ba[ea+1]=Mb.y,Ba[ea+2]=Mb.z,Ba[ea+3]=Mb.w,Ba[ea+4]=Nb.x,Ba[ea+5]=Nb.y,
|
|
|
+Ba[ea+6]=Nb.z,Ba[ea+7]=Nb.w,Ba[ea+8]=Ob.x,Ba[ea+9]=Ob.y,Ba[ea+10]=Ob.z,Ba[ea+11]=Ob.w,ea+=12;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],Jb=Zb[S.a],Kb=Zb[S.b],Lb=Zb[S.c],sb=Zb[S.d],Ca[ea]=Jb.x,Ca[ea+1]=Jb.y,Ca[ea+2]=Jb.z,Ca[ea+3]=Jb.w,Ca[ea+4]=Kb.x,Ca[ea+5]=Kb.y,Ca[ea+6]=Kb.z,Ca[ea+7]=Kb.w,Ca[ea+8]=Lb.x,Ca[ea+9]=Lb.y,Ca[ea+10]=Lb.z,Ca[ea+11]=Lb.w,Ca[ea+12]=sb.x,Ca[ea+13]=sb.y,Ca[ea+14]=sb.z,Ca[ea+15]=sb.w,Mb=cc[S.a],Nb=cc[S.b],Ob=cc[S.c],xb=cc[S.d],Ba[ea]=Mb.x,Ba[ea+1]=Mb.y,Ba[ea+2]=Mb.z,Ba[ea+3]=Mb.w,
|
|
|
+Ba[ea+4]=Nb.x,Ba[ea+5]=Nb.y,Ba[ea+6]=Nb.z,Ba[ea+7]=Nb.w,Ba[ea+8]=Ob.x,Ba[ea+9]=Ob.y,Ba[ea+10]=Ob.z,Ba[ea+11]=Ob.w,Ba[ea+12]=xb.x,Ba[ea+13]=xb.y,Ba[ea+14]=xb.z,Ba[ea+15]=xb.w,ea+=16;0<ea&&(k.bindBuffer(k.ARRAY_BUFFER,na.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,Ba,ua),k.bindBuffer(k.ARRAY_BUFFER,na.__webglSkinWeightsBuffer),k.bufferData(k.ARRAY_BUFFER,Ca,ua))}if(Vc&&ab){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],zb=S.vertexColors,hb=S.color,3===zb.length&&ab===THREE.VertexColors?(Gb=zb[0],
|
|
|
+Hb=zb[1],Ib=zb[2]):Ib=Hb=Gb=hb,Sa[Ha]=Gb.r,Sa[Ha+1]=Gb.g,Sa[Ha+2]=Gb.b,Sa[Ha+3]=Hb.r,Sa[Ha+4]=Hb.g,Sa[Ha+5]=Hb.b,Sa[Ha+6]=Ib.r,Sa[Ha+7]=Ib.g,Sa[Ha+8]=Ib.b,Ha+=9;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],zb=S.vertexColors,hb=S.color,4===zb.length&&ab===THREE.VertexColors?(Gb=zb[0],Hb=zb[1],Ib=zb[2],nb=zb[3]):nb=Ib=Hb=Gb=hb,Sa[Ha]=Gb.r,Sa[Ha+1]=Gb.g,Sa[Ha+2]=Gb.b,Sa[Ha+3]=Hb.r,Sa[Ha+4]=Hb.g,Sa[Ha+5]=Hb.b,Sa[Ha+6]=Ib.r,Sa[Ha+7]=Ib.g,Sa[Ha+8]=Ib.b,Sa[Ha+9]=nb.r,Sa[Ha+10]=nb.g,Sa[Ha+11]=nb.b,Ha+=12;0<Ha&&
|
|
|
+(k.bindBuffer(k.ARRAY_BUFFER,na.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,Sa,ua))}if(Gc&&eb.hasTangents){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],Va=S.vertexTangents,Ab=Va[0],Bb=Va[1],Cb=Va[2],Aa[xa]=Ab.x,Aa[xa+1]=Ab.y,Aa[xa+2]=Ab.z,Aa[xa+3]=Ab.w,Aa[xa+4]=Bb.x,Aa[xa+5]=Bb.y,Aa[xa+6]=Bb.z,Aa[xa+7]=Bb.w,Aa[xa+8]=Cb.x,Aa[xa+9]=Cb.y,Aa[xa+10]=Cb.z,Aa[xa+11]=Cb.w,xa+=12;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],Va=S.vertexTangents,Ab=Va[0],Bb=Va[1],Cb=Va[2],lb=Va[3],Aa[xa]=Ab.x,Aa[xa+1]=Ab.y,Aa[xa+
|
|
|
+2]=Ab.z,Aa[xa+3]=Ab.w,Aa[xa+4]=Bb.x,Aa[xa+5]=Bb.y,Aa[xa+6]=Bb.z,Aa[xa+7]=Bb.w,Aa[xa+8]=Cb.x,Aa[xa+9]=Cb.y,Aa[xa+10]=Cb.z,Aa[xa+11]=Cb.w,Aa[xa+12]=lb.x,Aa[xa+13]=lb.y,Aa[xa+14]=lb.z,Aa[xa+15]=lb.w,xa+=16;k.bindBuffer(k.ARRAY_BUFFER,na.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,Aa,ua)}if(Fc&&cb){E=0;for(Y=pa.length;E<Y;E++)if(S=Xa[pa[E]],bb=S.vertexNormals,Ya=S.normal,3===bb.length&&kb)for(ta=0;3>ta;ta++)Xb=bb[ta],rb[Wa]=Xb.x,rb[Wa+1]=Xb.y,rb[Wa+2]=Xb.z,Wa+=3;else for(ta=0;3>ta;ta++)rb[Wa]=Ya.x,
|
|
|
+rb[Wa+1]=Ya.y,rb[Wa+2]=Ya.z,Wa+=3;E=0;for(Y=qa.length;E<Y;E++)if(S=Xa[qa[E]],bb=S.vertexNormals,Ya=S.normal,4===bb.length&&kb)for(ta=0;4>ta;ta++)Xb=bb[ta],rb[Wa]=Xb.x,rb[Wa+1]=Xb.y,rb[Wa+2]=Xb.z,Wa+=3;else for(ta=0;4>ta;ta++)rb[Wa]=Ya.x,rb[Wa+1]=Ya.y,rb[Wa+2]=Ya.z,Wa+=3;k.bindBuffer(k.ARRAY_BUFFER,na.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,rb,ua)}if(jc&&Kc&&ib){E=0;for(Y=pa.length;E<Y;E++)if(Ua=pa[E],db=Kc[Ua],void 0!==db)for(ta=0;3>ta;ta++)gc=db[ta],kc[Rb]=gc.u,kc[Rb+1]=gc.v,Rb+=2;E=0;for(Y=
|
|
|
+qa.length;E<Y;E++)if(Ua=qa[E],db=Kc[Ua],void 0!==db)for(ta=0;4>ta;ta++)gc=db[ta],kc[Rb]=gc.u,kc[Rb+1]=gc.v,Rb+=2;0<Rb&&(k.bindBuffer(k.ARRAY_BUFFER,na.__webglUVBuffer),k.bufferData(k.ARRAY_BUFFER,kc,ua))}if(jc&&Lc&&ib){E=0;for(Y=pa.length;E<Y;E++)if(Ua=pa[E],gb=Lc[Ua],void 0!==gb)for(ta=0;3>ta;ta++)hc=gb[ta],lc[Sb]=hc.u,lc[Sb+1]=hc.v,Sb+=2;E=0;for(Y=qa.length;E<Y;E++)if(Ua=qa[E],gb=Lc[Ua],void 0!==gb)for(ta=0;4>ta;ta++)hc=gb[ta],lc[Sb]=hc.u,lc[Sb+1]=hc.v,Sb+=2;0<Sb&&(k.bindBuffer(k.ARRAY_BUFFER,na.__webglUV2Buffer),
|
|
|
+k.bufferData(k.ARRAY_BUFFER,lc,ua))}if(rc){E=0;for(Y=pa.length;E<Y;E++)Pb[qb]=Fa,Pb[qb+1]=Fa+1,Pb[qb+2]=Fa+2,qb+=3,jb[$a]=Fa,jb[$a+1]=Fa+1,jb[$a+2]=Fa,jb[$a+3]=Fa+2,jb[$a+4]=Fa+1,jb[$a+5]=Fa+2,$a+=6,Fa+=3;E=0;for(Y=qa.length;E<Y;E++)Pb[qb]=Fa,Pb[qb+1]=Fa+1,Pb[qb+2]=Fa+3,Pb[qb+3]=Fa+1,Pb[qb+4]=Fa+2,Pb[qb+5]=Fa+3,qb+=6,jb[$a]=Fa,jb[$a+1]=Fa+1,jb[$a+2]=Fa,jb[$a+3]=Fa+3,jb[$a+4]=Fa+1,jb[$a+5]=Fa+2,jb[$a+6]=Fa+2,jb[$a+7]=Fa+3,$a+=8,Fa+=4;k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,na.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,
|
|
|
+Pb,ua);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,na.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,jb,ua)}if(Jc){ta=0;for(Ub=Jc.length;ta<Ub;ta++)if(v=Jc[ta],v.__original.needsUpdate){x=0;if(1===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],v.array[x]=v.value[S.a],v.array[x+1]=v.value[S.b],v.array[x+2]=v.value[S.c],x+=3;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],v.array[x]=v.value[S.a],v.array[x+1]=v.value[S.b],v.array[x+2]=v.value[S.c],v.array[x+3]=
|
|
|
+v.value[S.d],x+=4}else{if("faces"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)va=v.value[pa[E]],v.array[x]=va,v.array[x+1]=va,v.array[x+2]=va,x+=3;E=0;for(Y=qa.length;E<Y;E++)va=v.value[qa[E]],v.array[x]=va,v.array[x+1]=va,v.array[x+2]=va,v.array[x+3]=va,x+=4}}else if(2===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],U=v.value[S.a],V=v.value[S.b],W=v.value[S.c],v.array[x]=U.x,v.array[x+1]=U.y,v.array[x+2]=V.x,v.array[x+3]=V.y,v.array[x+4]=W.x,v.array[x+
|
|
|
+5]=W.y,x+=6;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],U=v.value[S.a],V=v.value[S.b],W=v.value[S.c],ma=v.value[S.d],v.array[x]=U.x,v.array[x+1]=U.y,v.array[x+2]=V.x,v.array[x+3]=V.y,v.array[x+4]=W.x,v.array[x+5]=W.y,v.array[x+6]=ma.x,v.array[x+7]=ma.y,x+=8}else{if("faces"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)W=V=U=va=v.value[pa[E]],v.array[x]=U.x,v.array[x+1]=U.y,v.array[x+2]=V.x,v.array[x+3]=V.y,v.array[x+4]=W.x,v.array[x+5]=W.y,x+=6;E=0;for(Y=qa.length;E<Y;E++)ma=W=V=U=va=v.value[qa[E]],v.array[x]=
|
|
|
+U.x,v.array[x+1]=U.y,v.array[x+2]=V.x,v.array[x+3]=V.y,v.array[x+4]=W.x,v.array[x+5]=W.y,v.array[x+6]=ma.x,v.array[x+7]=ma.y,x+=8}}else if(3===v.size){var ca;ca="c"===v.type?["r","g","b"]:["x","y","z"];if(void 0===v.boundTo||"vertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],U=v.value[S.a],V=v.value[S.b],W=v.value[S.c],v.array[x]=U[ca[0]],v.array[x+1]=U[ca[1]],v.array[x+2]=U[ca[2]],v.array[x+3]=V[ca[0]],v.array[x+4]=V[ca[1]],v.array[x+5]=V[ca[2]],v.array[x+6]=W[ca[0]],v.array[x+7]=W[ca[1]],
|
|
|
+v.array[x+8]=W[ca[2]],x+=9;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],U=v.value[S.a],V=v.value[S.b],W=v.value[S.c],ma=v.value[S.d],v.array[x]=U[ca[0]],v.array[x+1]=U[ca[1]],v.array[x+2]=U[ca[2]],v.array[x+3]=V[ca[0]],v.array[x+4]=V[ca[1]],v.array[x+5]=V[ca[2]],v.array[x+6]=W[ca[0]],v.array[x+7]=W[ca[1]],v.array[x+8]=W[ca[2]],v.array[x+9]=ma[ca[0]],v.array[x+10]=ma[ca[1]],v.array[x+11]=ma[ca[2]],x+=12}else if("faces"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)W=V=U=va=v.value[pa[E]],v.array[x]=U[ca[0]],
|
|
|
+v.array[x+1]=U[ca[1]],v.array[x+2]=U[ca[2]],v.array[x+3]=V[ca[0]],v.array[x+4]=V[ca[1]],v.array[x+5]=V[ca[2]],v.array[x+6]=W[ca[0]],v.array[x+7]=W[ca[1]],v.array[x+8]=W[ca[2]],x+=9;E=0;for(Y=qa.length;E<Y;E++)ma=W=V=U=va=v.value[qa[E]],v.array[x]=U[ca[0]],v.array[x+1]=U[ca[1]],v.array[x+2]=U[ca[2]],v.array[x+3]=V[ca[0]],v.array[x+4]=V[ca[1]],v.array[x+5]=V[ca[2]],v.array[x+6]=W[ca[0]],v.array[x+7]=W[ca[1]],v.array[x+8]=W[ca[2]],v.array[x+9]=ma[ca[0]],v.array[x+10]=ma[ca[1]],v.array[x+11]=ma[ca[2]],
|
|
|
+x+=12}else if("faceVertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)va=v.value[pa[E]],U=va[0],V=va[1],W=va[2],v.array[x]=U[ca[0]],v.array[x+1]=U[ca[1]],v.array[x+2]=U[ca[2]],v.array[x+3]=V[ca[0]],v.array[x+4]=V[ca[1]],v.array[x+5]=V[ca[2]],v.array[x+6]=W[ca[0]],v.array[x+7]=W[ca[1]],v.array[x+8]=W[ca[2]],x+=9;E=0;for(Y=qa.length;E<Y;E++)va=v.value[qa[E]],U=va[0],V=va[1],W=va[2],ma=va[3],v.array[x]=U[ca[0]],v.array[x+1]=U[ca[1]],v.array[x+2]=U[ca[2]],v.array[x+3]=V[ca[0]],v.array[x+4]=V[ca[1]],v.array[x+
|
|
|
+5]=V[ca[2]],v.array[x+6]=W[ca[0]],v.array[x+7]=W[ca[1]],v.array[x+8]=W[ca[2]],v.array[x+9]=ma[ca[0]],v.array[x+10]=ma[ca[1]],v.array[x+11]=ma[ca[2]],x+=12}}else if(4===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)S=Xa[pa[E]],U=v.value[S.a],V=v.value[S.b],W=v.value[S.c],v.array[x]=U.x,v.array[x+1]=U.y,v.array[x+2]=U.z,v.array[x+3]=U.w,v.array[x+4]=V.x,v.array[x+5]=V.y,v.array[x+6]=V.z,v.array[x+7]=V.w,v.array[x+8]=W.x,v.array[x+9]=W.y,v.array[x+10]=W.z,v.array[x+
|
|
|
+11]=W.w,x+=12;E=0;for(Y=qa.length;E<Y;E++)S=Xa[qa[E]],U=v.value[S.a],V=v.value[S.b],W=v.value[S.c],ma=v.value[S.d],v.array[x]=U.x,v.array[x+1]=U.y,v.array[x+2]=U.z,v.array[x+3]=U.w,v.array[x+4]=V.x,v.array[x+5]=V.y,v.array[x+6]=V.z,v.array[x+7]=V.w,v.array[x+8]=W.x,v.array[x+9]=W.y,v.array[x+10]=W.z,v.array[x+11]=W.w,v.array[x+12]=ma.x,v.array[x+13]=ma.y,v.array[x+14]=ma.z,v.array[x+15]=ma.w,x+=16}else if("faces"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)W=V=U=va=v.value[pa[E]],v.array[x]=U.x,v.array[x+
|
|
|
+1]=U.y,v.array[x+2]=U.z,v.array[x+3]=U.w,v.array[x+4]=V.x,v.array[x+5]=V.y,v.array[x+6]=V.z,v.array[x+7]=V.w,v.array[x+8]=W.x,v.array[x+9]=W.y,v.array[x+10]=W.z,v.array[x+11]=W.w,x+=12;E=0;for(Y=qa.length;E<Y;E++)ma=W=V=U=va=v.value[qa[E]],v.array[x]=U.x,v.array[x+1]=U.y,v.array[x+2]=U.z,v.array[x+3]=U.w,v.array[x+4]=V.x,v.array[x+5]=V.y,v.array[x+6]=V.z,v.array[x+7]=V.w,v.array[x+8]=W.x,v.array[x+9]=W.y,v.array[x+10]=W.z,v.array[x+11]=W.w,v.array[x+12]=ma.x,v.array[x+13]=ma.y,v.array[x+14]=ma.z,
|
|
|
+v.array[x+15]=ma.w,x+=16}else if("faceVertices"===v.boundTo){E=0;for(Y=pa.length;E<Y;E++)va=v.value[pa[E]],U=va[0],V=va[1],W=va[2],v.array[x]=U.x,v.array[x+1]=U.y,v.array[x+2]=U.z,v.array[x+3]=U.w,v.array[x+4]=V.x,v.array[x+5]=V.y,v.array[x+6]=V.z,v.array[x+7]=V.w,v.array[x+8]=W.x,v.array[x+9]=W.y,v.array[x+10]=W.z,v.array[x+11]=W.w,x+=12;E=0;for(Y=qa.length;E<Y;E++)va=v.value[qa[E]],U=va[0],V=va[1],W=va[2],ma=va[3],v.array[x]=U.x,v.array[x+1]=U.y,v.array[x+2]=U.z,v.array[x+3]=U.w,v.array[x+4]=V.x,
|
|
|
+v.array[x+5]=V.y,v.array[x+6]=V.z,v.array[x+7]=V.w,v.array[x+8]=W.x,v.array[x+9]=W.y,v.array[x+10]=W.z,v.array[x+11]=W.w,v.array[x+12]=ma.x,v.array[x+13]=ma.y,v.array[x+14]=ma.z,v.array[x+15]=ma.w,x+=16}k.bindBuffer(k.ARRAY_BUFFER,v.buffer);k.bufferData(k.ARRAY_BUFFER,v.array,ua)}}Pa&&(delete na.__inittedArrays,delete na.__colorArray,delete na.__normalArray,delete na.__tangentArray,delete na.__uvArray,delete na.__uv2Array,delete na.__faceArray,delete na.__vertexArray,delete na.__lineArray,delete na.__skinIndexArray,
|
|
|
+delete na.__skinWeightArray)}}ga.verticesNeedUpdate=!1;ga.morphTargetsNeedUpdate=!1;ga.elementsNeedUpdate=!1;ga.uvsNeedUpdate=!1;ga.normalsNeedUpdate=!1;ga.colorsNeedUpdate=!1;ga.tangentsNeedUpdate=!1;ga.buffersNeedUpdate=!1;la.attributes&&s(la)}else if(sa instanceof THREE.Ribbon){if(ga.verticesNeedUpdate||ga.colorsNeedUpdate||ga.normalsNeedUpdate){var vb=ga,Mc=k.DYNAMIC_DRAW,mc=void 0,nc=void 0,oc=void 0,uc=void 0,wb=void 0,vc=void 0,wc=void 0,Pc=vb.vertices,Qc=vb.colors,Rc=vb.normals,Xc=Pc.length,
|
|
|
+Yc=Qc.length,Zc=Rc.length,xc=vb.__vertexArray,yc=vb.__colorArray,zc=vb.__normalArray,$c=vb.colorsNeedUpdate,ad=vb.normalsNeedUpdate;if(vb.verticesNeedUpdate){for(mc=0;mc<Xc;mc++)uc=Pc[mc],wb=3*mc,xc[wb]=uc.x,xc[wb+1]=uc.y,xc[wb+2]=uc.z;k.bindBuffer(k.ARRAY_BUFFER,vb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,xc,Mc)}if($c){for(nc=0;nc<Yc;nc++)vc=Qc[nc],wb=3*nc,yc[wb]=vc.r,yc[wb+1]=vc.g,yc[wb+2]=vc.b;k.bindBuffer(k.ARRAY_BUFFER,vb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,yc,Mc)}if(ad){for(oc=
|
|
|
+0;oc<Zc;oc++)wc=Rc[oc],wb=3*oc,zc[wb]=wc.x,zc[wb+1]=wc.y,zc[wb+2]=wc.z;k.bindBuffer(k.ARRAY_BUFFER,vb.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,zc,Mc)}}ga.verticesNeedUpdate=!1;ga.colorsNeedUpdate=!1;ga.normalsNeedUpdate=!1}else if(sa instanceof THREE.Line){la=d(sa,La);Ea=la.attributes&&q(la);if(ga.verticesNeedUpdate||ga.colorsNeedUpdate||Ea){var Tb=ga,Nc=k.DYNAMIC_DRAW,pc=void 0,qc=void 0,Ac=void 0,Da=void 0,Bc=void 0,Sc=Tb.vertices,Tc=Tb.colors,bd=Sc.length,cd=Tc.length,Cc=Tb.__vertexArray,
|
|
|
+Dc=Tb.__colorArray,dd=Tb.colorsNeedUpdate,Oc=Tb.__webglCustomAttributesList,Ec=void 0,Uc=void 0,Ta=void 0,ic=void 0,fb=void 0,za=void 0;if(Tb.verticesNeedUpdate){for(pc=0;pc<bd;pc++)Ac=Sc[pc],Da=3*pc,Cc[Da]=Ac.x,Cc[Da+1]=Ac.y,Cc[Da+2]=Ac.z;k.bindBuffer(k.ARRAY_BUFFER,Tb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,Cc,Nc)}if(dd){for(qc=0;qc<cd;qc++)Bc=Tc[qc],Da=3*qc,Dc[Da]=Bc.r,Dc[Da+1]=Bc.g,Dc[Da+2]=Bc.b;k.bindBuffer(k.ARRAY_BUFFER,Tb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,Dc,Nc)}if(Oc){Ec=
|
|
|
+0;for(Uc=Oc.length;Ec<Uc;Ec++)if(za=Oc[Ec],za.needsUpdate&&(void 0===za.boundTo||"vertices"===za.boundTo)){Da=0;ic=za.value.length;if(1===za.size)for(Ta=0;Ta<ic;Ta++)za.array[Ta]=za.value[Ta];else if(2===za.size)for(Ta=0;Ta<ic;Ta++)fb=za.value[Ta],za.array[Da]=fb.x,za.array[Da+1]=fb.y,Da+=2;else if(3===za.size)if("c"===za.type)for(Ta=0;Ta<ic;Ta++)fb=za.value[Ta],za.array[Da]=fb.r,za.array[Da+1]=fb.g,za.array[Da+2]=fb.b,Da+=3;else for(Ta=0;Ta<ic;Ta++)fb=za.value[Ta],za.array[Da]=fb.x,za.array[Da+1]=
|
|
|
+fb.y,za.array[Da+2]=fb.z,Da+=3;else if(4===za.size)for(Ta=0;Ta<ic;Ta++)fb=za.value[Ta],za.array[Da]=fb.x,za.array[Da+1]=fb.y,za.array[Da+2]=fb.z,za.array[Da+3]=fb.w,Da+=4;k.bindBuffer(k.ARRAY_BUFFER,za.buffer);k.bufferData(k.ARRAY_BUFFER,za.array,Nc)}}}ga.verticesNeedUpdate=!1;ga.colorsNeedUpdate=!1;la.attributes&&s(la)}else sa instanceof THREE.ParticleSystem&&(ga instanceof THREE.BufferGeometry?((ga.verticesNeedUpdate||ga.colorsNeedUpdate)&&i(ga,k.DYNAMIC_DRAW,!ga.dynamic),ga.verticesNeedUpdate=
|
|
|
+!1,ga.colorsNeedUpdate=!1):(la=d(sa,La),Ea=la.attributes&&q(la),(ga.verticesNeedUpdate||ga.colorsNeedUpdate||sa.sortParticles||Ea)&&h(ga,k.DYNAMIC_DRAW,sa),ga.verticesNeedUpdate=!1,ga.colorsNeedUpdate=!1,la.attributes&&s(la)))}};this.initMaterial=function(a,b,c,d){var e,f,g,h,i,j,l,m,n;a instanceof THREE.MeshDepthMaterial?n="depth":a instanceof THREE.MeshNormalMaterial?n="normal":a instanceof THREE.MeshBasicMaterial?n="basic":a instanceof THREE.MeshLambertMaterial?n="lambert":a instanceof THREE.MeshPhongMaterial?
|
|
|
+n="phong":a instanceof THREE.LineBasicMaterial?n="basic":a instanceof THREE.ParticleBasicMaterial&&(n="particle_basic");if(n){var o=THREE.ShaderLib[n];a.uniforms=THREE.UniformsUtils.clone(o.uniforms);a.vertexShader=o.vertexShader;a.fragmentShader=o.fragmentShader}var p,q,s;e=p=q=s=o=0;for(f=b.length;e<f;e++)g=b[e],g.onlyShadow||(g instanceof THREE.DirectionalLight&&p++,g instanceof THREE.PointLight&&q++,g instanceof THREE.SpotLight&&s++,g instanceof THREE.HemisphereLight&&o++);q+s+p+o<=sa?e=p:(e=
|
|
|
+Math.ceil(sa*p/(q+p)),s=q=sa-e,o=e);f=q;g=s;h=o;o=p=0;for(s=b.length;o<s;o++)q=b[o],q.castShadow&&(q instanceof THREE.SpotLight&&p++,q instanceof THREE.DirectionalLight&&!q.shadowCascade&&p++);m=p;ac&&d&&d.useVertexTexture?l=1024:(b=k.getParameter(k.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),
|
|
|
+l=b);var t;a:{q=a.fragmentShader;s=a.vertexShader;o=a.uniforms;b=a.attributes;p=a.defines;var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:l,useVertexTexture:ac&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,
|
|
|
+maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:h,maxShadows:m,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide},r,u,y,d=[];n?d.push(n):(d.push(q),
|
|
|
+d.push(s));for(u in p)d.push(u),d.push(p[u]);for(r in c)d.push(r),d.push(c[r]);n=d.join();r=0;for(u=oa.length;r<u;r++)if(d=oa[r],d.code===n){d.usedTimes++;t=d.program;break a}r=[];for(y in p)u=p[y],!1!==u&&(u="#define "+y+" "+u,r.push(u));u=r.join("\n");y=k.createProgram();r=["precision "+K+" float;",u,dc?"#define VERTEX_TEXTURES":"",R.gammaInput?"#define GAMMA_INPUT":"",R.gammaOutput?"#define GAMMA_OUTPUT":"",R.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+
|
|
|
+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",
|
|
|
+c.useVertexTexture?"#define BONE_TEXTURE":"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+c.boneTextureHeight.toFixed(1):"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?
|
|
|
+"#define SHADOWMAP_SOFT":"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
u=["precision "+K+" float;",c.bumpMap||c.normalMap?"#extension GL_OES_standard_derivatives : enable":"",u,"#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",R.gammaInput?"#define GAMMA_INPUT":"",R.gammaOutput?"#define GAMMA_OUTPUT":"",R.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"",
|
|
|
c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?
|
|
|
"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapSoft?"#define SHADOWMAP_SOFT":"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");u=D("fragment",u+q);r=D("vertex",r+s);k.attachShader(y,r);k.attachShader(y,u);k.linkProgram(y);k.getProgramParameter(y,k.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+k.getProgramParameter(y,
|
|
@@ -476,11 +477,11 @@ w);for(w=0;w<c.maxMorphNormals;w++)r.push("morphNormal"+w);for(t in b)r.push(t);
|
|
|
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;La!==b&&(b?k.disable(k.CULL_FACE):k.enable(k.CULL_FACE),La=b);Ea!==a&&(a?k.frontFace(k.CW):
|
|
|
k.frontFace(k.CCW),Ea=a)};this.setDepthTest=function(a){cb!==a&&(a?k.enable(k.DEPTH_TEST):k.disable(k.DEPTH_TEST),cb=a)};this.setDepthWrite=function(a){Ua!==a&&(k.depthMask(a),Ua=a)};this.setBlending=function(a,b,c,d){a!==ua&&(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)),ua=a);if(a===THREE.CustomBlending){if(b!==ra&&(k.blendEquation(M(b)),ra=b),c!==Ma||d!==kb)k.blendFunc(M(c),M(d)),Ma=c,kb=d}else kb=Ma=ra=null};this.setTexture=function(a,b){if(a.needsUpdate){a.__webglInit||(a.__webglInit=!0,a.__webglTexture=
|
|
|
-k.createTexture(),R.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),f=M(a.format),e=M(a.type);F(k.TEXTURE_2D,a,d);if(a instanceof THREE.CompressedTexture)for(var e=a.mipmaps,g=0,h=e.length;g<h;g++)c=e[g],k.compressedTexImage2D(k.TEXTURE_2D,g,f,c.width,c.height,0,c.data);
|
|
|
-else a instanceof THREE.DataTexture?k.texImage2D(k.TEXTURE_2D,0,f,c.width,c.height,0,f,e,c.data):k.texImage2D(k.TEXTURE_2D,0,f,f,e,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=M(a.format),f=M(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];k.bindTexture(k.TEXTURE_CUBE_MAP,a.__webglTexture);F(k.TEXTURE_CUBE_MAP,a,c);for(var e=0;6>e;e++){a.__webglFramebuffer[e]=k.createFramebuffer();a.__webglRenderbuffer[e]=k.createRenderbuffer();k.texImage2D(k.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,d,a.width,a.height,0,d,f,null);var g=a,h=k.TEXTURE_CUBE_MAP_POSITIVE_X+e;k.bindFramebuffer(k.FRAMEBUFFER,
|
|
|
-a.__webglFramebuffer[e]);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,h,g.__webglTexture,0);I(a.__webglRenderbuffer[e],a)}c&&k.generateMipmap(k.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=k.createFramebuffer(),a.__webglRenderbuffer=k.createRenderbuffer(),k.bindTexture(k.TEXTURE_2D,a.__webglTexture),F(k.TEXTURE_2D,a,c),k.texImage2D(k.TEXTURE_2D,0,d,a.width,a.height,0,d,f,null),d=k.TEXTURE_2D,k.bindFramebuffer(k.FRAMEBUFFER,a.__webglFramebuffer),k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,
|
|
|
-d,a.__webglTexture,0),I(a.__webglRenderbuffer,a),c&&k.generateMipmap(k.TEXTURE_2D);b?k.bindTexture(k.TEXTURE_CUBE_MAP,null):k.bindTexture(k.TEXTURE_2D,null);k.bindRenderbuffer(k.RENDERBUFFER,null);k.bindFramebuffer(k.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,f=d=0):(b=null,c=lb,a=Ia,d=Pa,f=Ga);b!==W&&(k.bindFramebuffer(k.FRAMEBUFFER,b),k.viewport(d,f,c,a),W=b);bb=c;Ya=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);
|
|
|
+k.createTexture(),R.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=M(a.format),f=M(a.type);F(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=M(a.format),e=M(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];k.bindTexture(k.TEXTURE_CUBE_MAP,a.__webglTexture);F(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,a.height,0,d,e,null);var g=a,h=k.TEXTURE_CUBE_MAP_POSITIVE_X+f;k.bindFramebuffer(k.FRAMEBUFFER,
|
|
|
+a.__webglFramebuffer[f]);k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,h,g.__webglTexture,0);I(a.__webglRenderbuffer[f],a)}c&&k.generateMipmap(k.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=k.createFramebuffer(),a.__webglRenderbuffer=k.createRenderbuffer(),k.bindTexture(k.TEXTURE_2D,a.__webglTexture),F(k.TEXTURE_2D,a,c),k.texImage2D(k.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=k.TEXTURE_2D,k.bindFramebuffer(k.FRAMEBUFFER,a.__webglFramebuffer),k.framebufferTexture2D(k.FRAMEBUFFER,k.COLOR_ATTACHMENT0,
|
|
|
+d,a.__webglTexture,0),I(a.__webglRenderbuffer,a),c&&k.generateMipmap(k.TEXTURE_2D);b?k.bindTexture(k.TEXTURE_CUBE_MAP,null):k.bindTexture(k.TEXTURE_2D,null);k.bindRenderbuffer(k.RENDERBUFFER,null);k.bindFramebuffer(k.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=lb,a=Ia,d=Pa,e=Ga);b!==T&&(k.bindFramebuffer(k.FRAMEBUFFER,b),k.viewport(d,e,c,a),T=b);bb=c;Ya=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);
|
|
|
this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};
|
|
|
THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format:
|
|
|
THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0};
|
|
@@ -496,7 +497,7 @@ s,t,A=g.vertexNormals,u=g.vertexColors;g instanceof THREE.Face3?s=new THREE.Face
|
|
|
n[q]=u,a.materials.push(h)),s.materialIndex=u);s.centroid.copy(g.centroid);c&&c.multiplyVector3(s.centroid);i.push(s)}p=0;for(o=m.length;p<o;p++){c=m[p];d=[];h=0;for(q=c.length;h<q;h++)d.push(new THREE.UV(c[h].u,c[h].v));l.push(d)}},clone:function(a){var b=new THREE.Geometry,c,d=a.vertices,f=a.faces,e=a.faceVertexUvs[0];a.materials&&(b.materials=a.materials.slice());a=0;for(c=d.length;a<c;a++)b.vertices.push(d[a].clone());a=0;for(c=f.length;a<c;a++)b.faces.push(f[a].clone());a=0;for(c=e.length;a<
|
|
|
c;a++){for(var d=e[a],f=[],g=0,h=d.length;g<h;g++)f.push(new THREE.UV(d[g].u,d[g].v));b.faceVertexUvs[0].push(f)}return b},randomPointInTriangle:function(a,b,c){var d,f,e,g=new THREE.Vector3,h=THREE.GeometryUtils.__v1;d=THREE.GeometryUtils.random();f=THREE.GeometryUtils.random();1<d+f&&(d=1-d,f=1-f);e=1-d-f;g.copy(a);g.multiplyScalar(d);h.copy(b);h.multiplyScalar(f);g.addSelf(h);h.copy(c);h.multiplyScalar(e);g.addSelf(h);return g},randomPointInFace:function(a,b,c){var d,f,e;if(a instanceof THREE.Face3)return d=
|
|
|
b.vertices[a.a],f=b.vertices[a.b],e=b.vertices[a.c],THREE.GeometryUtils.randomPointInTriangle(d,f,e);if(a instanceof THREE.Face4){d=b.vertices[a.a];f=b.vertices[a.b];e=b.vertices[a.c];var b=b.vertices[a.d],g;c?a._area1&&a._area2?(c=a._area1,g=a._area2):(c=THREE.GeometryUtils.triangleArea(d,f,b),g=THREE.GeometryUtils.triangleArea(f,e,b),a._area1=c,a._area2=g):(c=THREE.GeometryUtils.triangleArea(d,f,b),g=THREE.GeometryUtils.triangleArea(f,e,b));return THREE.GeometryUtils.random()*(c+g)<c?THREE.GeometryUtils.randomPointInTriangle(d,
|
|
|
-f,b):THREE.GeometryUtils.randomPointInTriangle(f,e,b)}},randomPointsInGeometry:function(a,b){function c(a){function b(c,d){if(d<c)return c;var f=c+Math.floor((d-c)/2);return j[f]>a?b(c,f-1):j[f]<a?b(f+1,d):f}return b(0,j.length-1)}var d,f,e=a.faces,g=a.vertices,h=e.length,i=0,j=[],l,m,n,p;for(f=0;f<h;f++)d=e[f],d instanceof THREE.Face3?(l=g[d.a],m=g[d.b],n=g[d.c],d._area=THREE.GeometryUtils.triangleArea(l,m,n)):d instanceof THREE.Face4&&(l=g[d.a],m=g[d.b],n=g[d.c],p=g[d.d],d._area1=THREE.GeometryUtils.triangleArea(l,
|
|
|
+f,b):THREE.GeometryUtils.randomPointInTriangle(f,e,b)}},randomPointsInGeometry:function(a,b){function c(a){function b(c,d){if(d<c)return c;var e=c+Math.floor((d-c)/2);return j[e]>a?b(c,e-1):j[e]<a?b(e+1,d):e}return b(0,j.length-1)}var d,f,e=a.faces,g=a.vertices,h=e.length,i=0,j=[],l,m,n,p;for(f=0;f<h;f++)d=e[f],d instanceof THREE.Face3?(l=g[d.a],m=g[d.b],n=g[d.c],d._area=THREE.GeometryUtils.triangleArea(l,m,n)):d instanceof THREE.Face4&&(l=g[d.a],m=g[d.b],n=g[d.c],p=g[d.d],d._area1=THREE.GeometryUtils.triangleArea(l,
|
|
|
m,p),d._area2=THREE.GeometryUtils.triangleArea(m,n,p),d._area=d._area1+d._area2),i+=d._area,j[f]=i;d=[];for(f=0;f<b;f++)g=THREE.GeometryUtils.random()*i,g=c(g),d[f]=THREE.GeometryUtils.randomPointInFace(e[g],a,!0);return d},triangleArea:function(a,b,c){var d,f=THREE.GeometryUtils.__v1;f.sub(a,b);d=f.length();f.sub(a,c);a=f.length();f.sub(b,c);c=f.length();b=0.5*(d+a+c);return Math.sqrt(b*(b-d)*(b-a)*(b-c))},center:function(a){a.computeBoundingBox();var b=a.boundingBox,c=new THREE.Vector3;c.add(b.min,
|
|
|
b.max);c.multiplyScalar(-0.5);a.applyMatrix((new THREE.Matrix4).makeTranslation(c.x,c.y,c.z));a.computeBoundingBox();return c},normalizeUVs:function(a){for(var a=a.faceVertexUvs[0],b=0,c=a.length;b<c;b++)for(var d=a[b],f=0,e=d.length;f<e;f++)if(1!==d[f].u&&(d[f].u-=Math.floor(d[f].u)),1!==d[f].v)d[f].v-=Math.floor(d[f].v)},triangulateQuads:function(a){var b,c,d,f,e=[],g=[],h=[];b=0;for(c=a.faceUvs.length;b<c;b++)g[b]=[];b=0;for(c=a.faceVertexUvs.length;b<c;b++)h[b]=[];b=0;for(c=a.faces.length;b<c;b++)if(d=
|
|
|
a.faces[b],d instanceof THREE.Face4){f=d.a;var i=d.b,j=d.c,l=d.d,m=new THREE.Face3,n=new THREE.Face3;m.color.copy(d.color);n.color.copy(d.color);m.materialIndex=d.materialIndex;n.materialIndex=d.materialIndex;m.a=f;m.b=i;m.c=l;n.a=i;n.b=j;n.c=l;4===d.vertexColors.length&&(m.vertexColors[0]=d.vertexColors[0].clone(),m.vertexColors[1]=d.vertexColors[1].clone(),m.vertexColors[2]=d.vertexColors[3].clone(),n.vertexColors[0]=d.vertexColors[1].clone(),n.vertexColors[1]=d.vertexColors[2].clone(),n.vertexColors[2]=
|
|
@@ -619,8 +620,8 @@ THREE.CombinedCamera.prototype.toBackView=function(){this.rotation.x=0;this.rota
|
|
|
THREE.CombinedCamera.prototype.toTopView=function(){this.rotation.x=-Math.PI/2;this.rotation.y=0;this.rotation.z=0;this.rotationAutoUpdate=false};THREE.CombinedCamera.prototype.toBottomView=function(){this.rotation.x=Math.PI/2;this.rotation.y=0;this.rotation.z=0;this.rotationAutoUpdate=false};
|
|
|
THREE.CircleGeometry=function(a,b,c,d){THREE.Geometry.call(this);var a=a||50,c=c!==void 0?c:0,d=d!==void 0?d:Math.PI*2,b=b!==void 0?Math.max(3,b):8,f,e=[];f=new THREE.Vector3;var g=new THREE.UV(0.5,0.5);this.vertices.push(f);e.push(g);for(f=0;f<=b;f++){var h=new THREE.Vector3;h.x=a*Math.cos(c+f/b*d);h.y=a*Math.sin(c+f/b*d);this.vertices.push(h);e.push(new THREE.UV((h.x/a+1)/2,-(h.y/a+1)/2+1))}c=new THREE.Vector3(0,0,-1);for(f=1;f<=b;f++){this.faces.push(new THREE.Face3(f,f+1,0,[c,c,c]));this.faceVertexUvs[0].push([e[f],
|
|
|
e[f+1],g])}this.computeCentroids();this.computeFaceNormals();this.boundingSphere={radius:a}};THREE.CircleGeometry.prototype=Object.create(THREE.Geometry.prototype);
|
|
|
-THREE.CubeGeometry=function(a,b,c,d,f,e,g,h){function i(a,b,c,d,f,e,g,h){var i,l=j.widthSegments,n=j.heightSegments,m=f/2,o=e/2,p=j.vertices.length;if(a==="x"&&b==="y"||a==="y"&&b==="x")i="z";else if(a==="x"&&b==="z"||a==="z"&&b==="x"){i="y";n=j.depthSegments}else if(a==="z"&&b==="y"||a==="y"&&b==="z"){i="x";l=j.depthSegments}var q=l+1,s=n+1,N=f/l,O=e/n,P=new THREE.Vector3;P[i]=g>0?1:-1;for(f=0;f<s;f++)for(e=0;e<q;e++){var L=new THREE.Vector3;L[a]=(e*N-m)*c;L[b]=(f*O-o)*d;L[i]=g;j.vertices.push(L)}for(f=
|
|
|
-0;f<n;f++)for(e=0;e<l;e++){a=new THREE.Face4(e+q*f+p,e+q*(f+1)+p,e+1+q*(f+1)+p,e+1+q*f+p);a.normal.copy(P);a.vertexNormals.push(P.clone(),P.clone(),P.clone(),P.clone());a.materialIndex=h;j.faces.push(a);j.faceVertexUvs[0].push([new THREE.UV(e/l,1-f/n),new THREE.UV(e/l,1-(f+1)/n),new THREE.UV((e+1)/l,1-(f+1)/n),new THREE.UV((e+1)/l,1-f/n)])}}THREE.Geometry.call(this);var j=this;this.width=a;this.height=b;this.depth=c;this.widthSegments=d||1;this.heightSegments=f||1;this.depthSegments=e||1;var a=this.width/
|
|
|
+THREE.CubeGeometry=function(a,b,c,d,f,e,g,h){function i(a,b,c,d,e,f,g,h){var i,l=j.widthSegments,n=j.heightSegments,m=e/2,o=f/2,p=j.vertices.length;if(a==="x"&&b==="y"||a==="y"&&b==="x")i="z";else if(a==="x"&&b==="z"||a==="z"&&b==="x"){i="y";n=j.depthSegments}else if(a==="z"&&b==="y"||a==="y"&&b==="z"){i="x";l=j.depthSegments}var q=l+1,s=n+1,N=e/l,O=f/n,P=new THREE.Vector3;P[i]=g>0?1:-1;for(e=0;e<s;e++)for(f=0;f<q;f++){var L=new THREE.Vector3;L[a]=(f*N-m)*c;L[b]=(e*O-o)*d;L[i]=g;j.vertices.push(L)}for(e=
|
|
|
+0;e<n;e++)for(f=0;f<l;f++){a=new THREE.Face4(f+q*e+p,f+q*(e+1)+p,f+1+q*(e+1)+p,f+1+q*e+p);a.normal.copy(P);a.vertexNormals.push(P.clone(),P.clone(),P.clone(),P.clone());a.materialIndex=h;j.faces.push(a);j.faceVertexUvs[0].push([new THREE.UV(f/l,1-e/n),new THREE.UV(f/l,1-(e+1)/n),new THREE.UV((f+1)/l,1-(e+1)/n),new THREE.UV((f+1)/l,1-e/n)])}}THREE.Geometry.call(this);var j=this;this.width=a;this.height=b;this.depth=c;this.widthSegments=d||1;this.heightSegments=f||1;this.depthSegments=e||1;var a=this.width/
|
|
|
2,b=this.height/2,c=this.depth/2,l,m,n,p,o,q;if(g!==void 0){if(g instanceof Array)this.materials=g;else{this.materials=[];for(l=0;l<6;l++)this.materials.push(g)}l=0;p=1;m=2;o=3;n=4;q=5}else this.materials=[];this.sides={px:true,nx:true,py:true,ny:true,pz:true,nz:true};if(h!=void 0)for(var s in h)this.sides[s]!==void 0&&(this.sides[s]=h[s]);this.sides.px&&i("z","y",-1,-1,this.depth,this.height,a,l);this.sides.nx&&i("z","y",1,-1,this.depth,this.height,-a,p);this.sides.py&&i("x","z",1,1,this.width,this.depth,
|
|
|
b,m);this.sides.ny&&i("x","z",1,-1,this.width,this.depth,-b,o);this.sides.pz&&i("x","y",1,-1,this.width,this.height,c,n);this.sides.nz&&i("x","y",-1,-1,this.width,this.height,-c,q);this.computeCentroids();this.mergeVertices()};THREE.CubeGeometry.prototype=Object.create(THREE.Geometry.prototype);
|
|
|
THREE.CylinderGeometry=function(a,b,c,d,f,e){THREE.Geometry.call(this);var a=a!==void 0?a:20,b=b!==void 0?b:20,c=c!==void 0?c:100,g=c/2,d=d||8,f=f||1,h,i,j=[],l=[];for(i=0;i<=f;i++){var m=[],n=[],p=i/f,o=p*(b-a)+a;for(h=0;h<=d;h++){var q=h/d,s=new THREE.Vector3;s.x=o*Math.sin(q*Math.PI*2);s.y=-p*c+g;s.z=o*Math.cos(q*Math.PI*2);this.vertices.push(s);m.push(this.vertices.length-1);n.push(new THREE.UV(q,1-p))}j.push(m);l.push(n)}c=(b-a)/c;for(h=0;h<d;h++){if(a!==0){m=this.vertices[j[0][h]].clone();n=
|
|
@@ -628,9 +629,9 @@ this.vertices[j[0][h+1]].clone()}else{m=this.vertices[j[1][h]].clone();n=this.ve
|
|
|
0){this.vertices.push(new THREE.Vector3(0,g,0));for(h=0;h<d;h++){p=j[0][h];o=j[0][h+1];q=this.vertices.length-1;t=new THREE.Vector3(0,1,0);A=new THREE.Vector3(0,1,0);u=new THREE.Vector3(0,1,0);B=l[0][h].clone();y=l[0][h+1].clone();w=new THREE.UV(y.u,0);this.faces.push(new THREE.Face3(p,o,q,[t,A,u]));this.faceVertexUvs[0].push([B,y,w])}}if(!e&&b>0){this.vertices.push(new THREE.Vector3(0,-g,0));for(h=0;h<d;h++){p=j[i][h+1];o=j[i][h];q=this.vertices.length-1;t=new THREE.Vector3(0,-1,0);A=new THREE.Vector3(0,
|
|
|
-1,0);u=new THREE.Vector3(0,-1,0);B=l[i][h+1].clone();y=l[i][h].clone();w=new THREE.UV(y.u,1);this.faces.push(new THREE.Face3(p,o,q,[t,A,u]));this.faceVertexUvs[0].push([B,y,w])}}this.computeCentroids();this.computeFaceNormals()};THREE.CylinderGeometry.prototype=Object.create(THREE.Geometry.prototype);
|
|
|
THREE.ExtrudeGeometry=function(a,b){if(typeof a!=="undefined"){THREE.Geometry.call(this);a=a instanceof Array?a:[a];this.shapebb=a[a.length-1].getBoundingBox();this.addShapeList(a,b);this.computeCentroids();this.computeFaceNormals()}};THREE.ExtrudeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ExtrudeGeometry.prototype.addShapeList=function(a,b){for(var c=a.length,d=0;d<c;d++)this.addShape(a[d],b)};
|
|
|
-THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||console.log("die");return b.clone().multiplyScalar(c).addSelf(a)}function d(a,b,c){var d=THREE.ExtrudeGeometry.__v1,f=THREE.ExtrudeGeometry.__v2,e=THREE.ExtrudeGeometry.__v3,g=THREE.ExtrudeGeometry.__v4,h=THREE.ExtrudeGeometry.__v5,i=THREE.ExtrudeGeometry.__v6;d.set(a.x-b.x,a.y-b.y);f.set(a.x-c.x,a.y-c.y);d=d.normalize();f=f.normalize();e.set(-d.y,d.x);g.set(f.y,-f.x);h.copy(a).addSelf(e);i.copy(a).addSelf(g);if(h.equals(i))return g.clone();
|
|
|
-h.copy(b).addSelf(e);i.copy(c).addSelf(g);e=d.dot(g);g=i.subSelf(h).dot(g);if(e===0){console.log("Either infinite or no solutions!");g===0?console.log("Its finite solutions."):console.log("Too bad, no solutions.")}g=g/e;if(g<0){b=Math.atan2(b.y-a.y,b.x-a.x);a=Math.atan2(c.y-a.y,c.x-a.x);b>a&&(a=a+Math.PI*2);c=(b+a)/2;a=-Math.cos(c);c=-Math.sin(c);return new THREE.Vector2(a,c)}return d.multiplyScalar(g).addSelf(h).subSelf(a).clone()}function f(c,d){var f,e;for(H=c.length;--H>=0;){f=H;e=H-1;e<0&&(e=
|
|
|
-c.length-1);for(var g=0,h=n+l*2,g=0;g<h;g++){var i=P*g,j=P*(g+1),m=d+f+i,i=d+e+i,o=d+e+j,j=d+f+j,p=c,q=g,r=h,s=f,u=e,m=m+F,i=i+F,o=o+F,j=j+F;D.faces.push(new THREE.Face4(m,i,o,j,null,null,t));m=A.generateSideWallUV(D,a,p,b,m,i,o,j,q,r,s,u);D.faceVertexUvs[0].push(m)}}}function e(a,b,c){D.vertices.push(new THREE.Vector3(a,b,c))}function g(c,d,e,f){c=c+F;d=d+F;e=e+F;D.faces.push(new THREE.Face3(c,d,e,null,null,s));c=f?A.generateBottomUV(D,a,b,c,d,e):A.generateTopUV(D,a,b,c,d,e);D.faceVertexUvs[0].push(c)}
|
|
|
+THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||console.log("die");return b.clone().multiplyScalar(c).addSelf(a)}function d(a,b,c){var d=THREE.ExtrudeGeometry.__v1,e=THREE.ExtrudeGeometry.__v2,f=THREE.ExtrudeGeometry.__v3,g=THREE.ExtrudeGeometry.__v4,h=THREE.ExtrudeGeometry.__v5,i=THREE.ExtrudeGeometry.__v6;d.set(a.x-b.x,a.y-b.y);e.set(a.x-c.x,a.y-c.y);d=d.normalize();e=e.normalize();f.set(-d.y,d.x);g.set(e.y,-e.x);h.copy(a).addSelf(f);i.copy(a).addSelf(g);if(h.equals(i))return g.clone();
|
|
|
+h.copy(b).addSelf(f);i.copy(c).addSelf(g);f=d.dot(g);g=i.subSelf(h).dot(g);if(f===0){console.log("Either infinite or no solutions!");g===0?console.log("Its finite solutions."):console.log("Too bad, no solutions.")}g=g/f;if(g<0){b=Math.atan2(b.y-a.y,b.x-a.x);a=Math.atan2(c.y-a.y,c.x-a.x);b>a&&(a=a+Math.PI*2);c=(b+a)/2;a=-Math.cos(c);c=-Math.sin(c);return new THREE.Vector2(a,c)}return d.multiplyScalar(g).addSelf(h).subSelf(a).clone()}function f(c,d){var e,f;for(H=c.length;--H>=0;){e=H;f=H-1;f<0&&(f=
|
|
|
+c.length-1);for(var g=0,h=n+l*2,g=0;g<h;g++){var i=P*g,j=P*(g+1),m=d+e+i,i=d+f+i,o=d+f+j,j=d+e+j,p=c,q=g,r=h,s=e,u=f,m=m+F,i=i+F,o=o+F,j=j+F;D.faces.push(new THREE.Face4(m,i,o,j,null,null,t));m=A.generateSideWallUV(D,a,p,b,m,i,o,j,q,r,s,u);D.faceVertexUvs[0].push(m)}}}function e(a,b,c){D.vertices.push(new THREE.Vector3(a,b,c))}function g(c,d,e,f){c=c+F;d=d+F;e=e+F;D.faces.push(new THREE.Face3(c,d,e,null,null,s));c=f?A.generateBottomUV(D,a,b,c,d,e):A.generateTopUV(D,a,b,c,d,e);D.faceVertexUvs[0].push(c)}
|
|
|
var h=b.amount!==void 0?b.amount:100,i=b.bevelThickness!==void 0?b.bevelThickness:6,j=b.bevelSize!==void 0?b.bevelSize:i-2,l=b.bevelSegments!==void 0?b.bevelSegments:3,m=b.bevelEnabled!==void 0?b.bevelEnabled:true,n=b.steps!==void 0?b.steps:1,p=b.extrudePath,o,q=false,s=b.material,t=b.extrudeMaterial,A=b.UVGenerator!==void 0?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,u,r,B,y;if(p){o=p.getSpacedPoints(n);q=true;m=false;u=b.frames!==void 0?b.frames:new THREE.TubeGeometry.FrenetFrames(p,n,
|
|
|
false);r=new THREE.Vector3;B=new THREE.Vector3;y=new THREE.Vector3}if(!m)j=i=l=0;var w,z,C,D=this,F=this.vertices.length,p=a.extractPoints(),I=p.shape,p=p.holes,G=!THREE.Shape.Utils.isClockWise(I);if(G){I=I.reverse();z=0;for(C=p.length;z<C;z++){w=p[z];THREE.Shape.Utils.isClockWise(w)&&(p[z]=w.reverse())}G=false}var M=THREE.Shape.Utils.triangulateShape(I,p),G=I;z=0;for(C=p.length;z<C;z++){w=p[z];I=I.concat(w)}var J,K,N,O,P=I.length,L=M.length,X=[],H=0,fa=G.length;J=fa-1;for(K=H+1;H<fa;H++,J++,K++){J===
|
|
|
fa&&(J=0);K===fa&&(K=0);X[H]=d(G[H],G[J],G[K])}var sa=[],R,oa=X.concat();z=0;for(C=p.length;z<C;z++){w=p[z];R=[];H=0;fa=w.length;J=fa-1;for(K=H+1;H<fa;H++,J++,K++){J===fa&&(J=0);K===fa&&(K=0);R[H]=d(w[H],w[J],w[K])}sa.push(R);oa=oa.concat(R)}for(J=0;J<l;J++){w=J/l;N=i*(1-w);K=j*Math.sin(w*Math.PI/2);H=0;for(fa=G.length;H<fa;H++){O=c(G[H],X[H],K);e(O.x,O.y,-N)}z=0;for(C=p.length;z<C;z++){w=p[z];R=sa[z];H=0;for(fa=w.length;H<fa;H++){O=c(w[H],R[H],K);e(O.x,O.y,-N)}}}K=j;for(H=0;H<P;H++){O=m?c(I[H],oa[H],
|