diff --git a/build/Three.js b/build/Three.js index bd276339bb24315775571edcfb16ecb63c78bc97..89b52f517d3fad5274cbeb84576f7cc83164e645 100644 --- a/build/Three.js +++ b/build/Three.js @@ -78,12 +78,12 @@ THREE.Projector=function(){function a(a,c){g=0;C.objects.length=0;C.sprites.leng THREE.Light&&C.lights.push(a);for(var c=0,d=a.children.length;c=0&&e>=0&&g>=0&&h>=0)return true;if(f<0&&e<0||g<0&&h<0)return false; f<0?c=Math.max(c,f/(f-e)):e<0&&(d=Math.min(d,f/(f-e)));g<0?c=Math.max(c,g/(g-h)):h<0&&(d=Math.min(d,g/(g-h)));if(dh&&i.positionScreen.z0)){da=l[j-2];M.copy(I.positionScreen);O.copy(da.positionScreen); +oa;w=s=r=n=0;C.elements.length=0;b.updateMatrixWorld();f.parent===void 0&&f.updateMatrixWorld();f.matrixWorldInverse.getInverse(f.matrixWorld);u.multiply(f.projectionMatrix,f.matrixWorldInverse);J.setFromMatrix(u);C=a(b,false);b=0;for(X=C.objects.length;bh&&i.positionScreen.z0)){da=l[j-2];M.copy(I.positionScreen);O.copy(da.positionScreen); if(e(M,O)===true){M.multiplyScalar(1/M.w);O.multiplyScalar(1/O.w);ga=void 0;if(s===x.length){ga=new THREE.RenderableLine;x.push(ga)}else ga=x[s];s++;q=ga;q.v1.positionScreen.copy(M);q.v2.positionScreen.copy(O);q.z=Math.max(M.z,O.z);q.material=U.material;C.elements.push(q)}}}}}b=0;for(X=C.sprites.length;b0&&A.z<1){h=void 0;if(w=== z.length){h=new THREE.RenderableParticle;z.push(h)}else h=z[w];w++;t=h;t.object=U;t.x=A.x/A.w;t.y=A.y/A.w;t.z=A.z;t.rotation=U.rotation.z;t.scale.x=U.scale.x*Math.abs(t.x-(A.x+f.projectionMatrix.elements[0])/(A.w+f.projectionMatrix.elements[12]));t.scale.y=U.scale.y*Math.abs(t.y-(A.y+f.projectionMatrix.elements[5])/(A.w+f.projectionMatrix.elements[13]));t.material=U.material;C.elements.push(t)}}}g&&C.elements.sort(d);return C}}; THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=d!==void 0?d:1}; @@ -368,28 +368,28 @@ e.__webglColorBuffer);k.vertexAttribPointer(b.color,3,k.FLOAT,false,0,0)}if(b.no if(b.uv2>=0)if(e.__webglUV2Buffer){k.bindBuffer(k.ARRAY_BUFFER,e.__webglUV2Buffer);k.vertexAttribPointer(b.uv2,2,k.FLOAT,false,0,0);k.enableVertexAttribArray(b.uv2)}else k.disableVertexAttribArray(b.uv2);if(d.skinning&&b.skinVertexA>=0&&b.skinVertexB>=0&&b.skinIndex>=0&&b.skinWeight>=0){k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinVertexABuffer);k.vertexAttribPointer(b.skinVertexA,4,k.FLOAT,false,0,0);k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinVertexBBuffer);k.vertexAttribPointer(b.skinVertexB,4,k.FLOAT, false,0,0);k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinIndicesBuffer);k.vertexAttribPointer(b.skinIndex,4,k.FLOAT,false,0,0);k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinWeightsBuffer);k.vertexAttribPointer(b.skinWeight,4,k.FLOAT,false,0,0)}}if(f instanceof THREE.Mesh){if(d.wireframe){d=d.wireframeLinewidth;if(d!==nb){k.lineWidth(d);nb=d}a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer);k.drawElements(k.LINES,e.__webglLineCount,k.UNSIGNED_SHORT,0)}else{a&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer); k.drawElements(k.TRIANGLES,e.__webglFaceCount,k.UNSIGNED_SHORT,0)}F.info.render.calls++;F.info.render.vertices=F.info.render.vertices+e.__webglFaceCount;F.info.render.faces=F.info.render.faces+e.__webglFaceCount/3}else if(f instanceof THREE.Line){f=f.type===THREE.LineStrip?k.LINE_STRIP:k.LINES;d=d.linewidth;if(d!==nb){k.lineWidth(d);nb=d}k.drawArrays(f,0,e.__webglLineCount);F.info.render.calls++}else if(f instanceof THREE.ParticleSystem){k.drawArrays(k.POINTS,0,e.__webglParticleCount);F.info.render.calls++; -F.info.render.points=F.info.render.points+e.__webglParticleCount}else if(f instanceof THREE.Ribbon){k.drawArrays(k.TRIANGLE_STRIP,0,e.__webglVertexCount);F.info.render.calls++}}};this.render=function(a,b,c,d){var e,f,h,m,n=a.__lights,o=a.fog;ca=-1;Ta=true;if(b.parent===void 0){console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it...");a.add(b)}this.autoUpdateScene&&a.updateMatrixWorld();if(!b._viewMatrixArray)b._viewMatrixArray=new Float32Array(16);if(!b._projectionMatrixArray)b._projectionMatrixArray= -new Float32Array(16);b.matrixWorldInverse.getInverse(b.matrixWorld);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);ta.multiply(b.projectionMatrix,b.matrixWorldInverse);Ea.setFromMatrix(ta);this.autoUpdateObjects&&this.initWebGLObjects(a);i(this.renderPluginsPre,a,b);F.info.render.calls=0;F.info.render.vertices=0;F.info.render.faces=0;F.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor, -this.autoClearDepth,this.autoClearStencil);m=a.__webglObjects;d=0;for(e=m.length;d=0){u=r.geometry.materials[u];if(u.transparent){p.transparent=u;p.opaque=null}else{p.opaque=u;p.transparent=null}}}else if(u)if(u.transparent){p.transparent= -u;p.opaque=null}else{p.opaque=u;p.transparent=null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{ra.copy(h.matrixWorld.getPosition());ta.multiplyVector3(ra);f.z=ra.z}}}this.sortObjects&&m.sort(g);m=a.__webglObjectsImmediate;d=0;for(e=m.length;d65535){C[z].counter=C[z].counter+1;A=C[z].hash+"_"+C[z].counter;q.geometryGroups[A]===void 0&&(q.geometryGroups[A]={faces3:[],faces4:[],materialIndex:w,vertices:0,numMorphTargets:E,numMorphNormals:B})}t instanceof THREE.Face3?q.geometryGroups[A].faces3.push(s):q.geometryGroups[A].faces4.push(s);q.geometryGroups[A].vertices=q.geometryGroups[A].vertices+x}q.geometryGroupsList=[];var U=void 0;for(U in q.geometryGroups){q.geometryGroups[U].id= -ia++;q.geometryGroupsList.push(q.geometryGroups[U])}}for(i in j.geometryGroups){l=j.geometryGroups[i];if(!l.__webglVertexBuffer){var I=l;I.__webglVertexBuffer=k.createBuffer();I.__webglNormalBuffer=k.createBuffer();I.__webglTangentBuffer=k.createBuffer();I.__webglColorBuffer=k.createBuffer();I.__webglUVBuffer=k.createBuffer();I.__webglUV2Buffer=k.createBuffer();I.__webglSkinVertexABuffer=k.createBuffer();I.__webglSkinVertexBBuffer=k.createBuffer();I.__webglSkinIndicesBuffer=k.createBuffer();I.__webglSkinWeightsBuffer= -k.createBuffer();I.__webglFaceBuffer=k.createBuffer();I.__webglLineBuffer=k.createBuffer();var H=void 0,P=void 0;if(I.numMorphTargets){I.__webglMorphTargetsBuffers=[];H=0;for(P=I.numMorphTargets;H0||Y.faceVertexUvs.length>0)G.__uvArray=new Float32Array(O*2);if(Y.faceUvs.length>1||Y.faceVertexUvs.length>1)G.__uv2Array=new Float32Array(O*2)}if(J.geometry.skinWeights.length&&J.geometry.skinIndices.length){G.__skinVertexAArray= -new Float32Array(O*4);G.__skinVertexBArray=new Float32Array(O*4);G.__skinIndexArray=new Float32Array(O*4);G.__skinWeightArray=new Float32Array(O*4)}G.__faceArray=new Uint16Array(Z*3);G.__lineArray=new Uint16Array(W*2);var ga=void 0,da=void 0;if(G.numMorphTargets){G.__morphTargetsArrays=[];ga=0;for(da=G.numMorphTargets;ga=0){u=r.geometry.materials[u];if(u.transparent){p.transparent=u;p.opaque=null}else{p.opaque=u;p.transparent=null}}}else if(u)if(u.transparent){p.transparent=u;p.opaque=null}else{p.opaque=u;p.transparent= +null}f.render=true;if(this.sortObjects)if(h.renderDepth)f.z=h.renderDepth;else{ra.copy(h.matrixWorld.getPosition());ta.multiplyVector3(ra);f.z=ra.z}}}this.sortObjects&&m.sort(g);m=a.__webglObjectsImmediate;d=0;for(e=m.length;d65535){C[z].counter= +C[z].counter+1;A=C[z].hash+"_"+C[z].counter;q.geometryGroups[A]===void 0&&(q.geometryGroups[A]={faces3:[],faces4:[],materialIndex:w,vertices:0,numMorphTargets:E,numMorphNormals:B})}t instanceof THREE.Face3?q.geometryGroups[A].faces3.push(s):q.geometryGroups[A].faces4.push(s);q.geometryGroups[A].vertices=q.geometryGroups[A].vertices+x}q.geometryGroupsList=[];var U=void 0;for(U in q.geometryGroups){q.geometryGroups[U].id=ia++;q.geometryGroupsList.push(q.geometryGroups[U])}}for(i in j.geometryGroups){l= +j.geometryGroups[i];if(!l.__webglVertexBuffer){var I=l;I.__webglVertexBuffer=k.createBuffer();I.__webglNormalBuffer=k.createBuffer();I.__webglTangentBuffer=k.createBuffer();I.__webglColorBuffer=k.createBuffer();I.__webglUVBuffer=k.createBuffer();I.__webglUV2Buffer=k.createBuffer();I.__webglSkinVertexABuffer=k.createBuffer();I.__webglSkinVertexBBuffer=k.createBuffer();I.__webglSkinIndicesBuffer=k.createBuffer();I.__webglSkinWeightsBuffer=k.createBuffer();I.__webglFaceBuffer=k.createBuffer();I.__webglLineBuffer= +k.createBuffer();var H=void 0,P=void 0;if(I.numMorphTargets){I.__webglMorphTargetsBuffers=[];H=0;for(P=I.numMorphTargets;H0||Y.faceVertexUvs.length>0)G.__uvArray=new Float32Array(O*2);if(Y.faceUvs.length>1||Y.faceVertexUvs.length>1)G.__uv2Array=new Float32Array(O*2)}if(J.geometry.skinWeights.length&&J.geometry.skinIndices.length){G.__skinVertexAArray=new Float32Array(O*4);G.__skinVertexBArray= +new Float32Array(O*4);G.__skinIndexArray=new Float32Array(O*4);G.__skinWeightArray=new Float32Array(O*4)}G.__faceArray=new Uint16Array(Z*3);G.__lineArray=new Uint16Array(W*2);var ga=void 0,da=void 0;if(G.numMorphTargets){G.__morphTargetsArrays=[];ga=0;for(da=G.numMorphTargets;ga=0&&g>=0&&f>=0&&h>=0)return true;if(e<0&&g<0||f<0&&h<0)return false; e<0?c=Math.max(c,e/(e-g)):g<0&&(d=Math.min(d,e/(e-g)));f<0?c=Math.max(c,f/(f-h)):h<0&&(d=Math.min(d,f/(f-h)));if(dj&&m.positionScreen.z0)){U=h[k-2];J.copy(O.positionScreen);L.copy(U.positionScreen);if(f(J, -L)===true){J.multiplyScalar(1/J.w);L.multiplyScalar(1/L.w);R=void 0;if(r===u.length){R=new THREE.RenderableLine;u.push(R)}else R=u[r];r++;p=R;p.v1.positionScreen.copy(J);p.v2.positionScreen.copy(L);p.z=Math.max(J.z,L.z);p.material=C.material;A.elements.push(p)}}}}}b=0;for(S=A.sprites.length;b0&&F.z<1){j=void 0;if(B===x.length){j= -new THREE.RenderableParticle;x.push(j)}else j=x[B];B++;v=j;v.object=C;v.x=F.x/F.w;v.y=F.y/F.w;v.z=F.z;v.rotation=C.rotation.z;v.scale.x=C.scale.x*Math.abs(v.x-(F.x+e.projectionMatrix.elements[0])/(F.w+e.projectionMatrix.elements[12]));v.scale.y=C.scale.y*Math.abs(v.y-(F.y+e.projectionMatrix.elements[5])/(F.w+e.projectionMatrix.elements[13]));v.material=C.material;A.elements.push(v)}}}g&&A.elements.sort(d);return A}}; -THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=d!==void 0?d:1}; +B=r=q=i=0;A.elements.length=0;b.updateMatrixWorld();e.parent===void 0&&e.updateMatrixWorld();e.matrixWorldInverse.getInverse(e.matrixWorld);s.multiply(e.projectionMatrix,e.matrixWorldInverse);D.setFromMatrix(s);A=a(b,false);b=0;for(S=A.objects.length;bj&&m.positionScreen.z0)){U=h[k-2];J.copy(O.positionScreen);L.copy(U.positionScreen);if(f(J,L)===true){J.multiplyScalar(1/J.w); +L.multiplyScalar(1/L.w);R=void 0;if(r===u.length){R=new THREE.RenderableLine;u.push(R)}else R=u[r];r++;p=R;p.v1.positionScreen.copy(J);p.v2.positionScreen.copy(L);p.z=Math.max(J.z,L.z);p.material=C.material;A.elements.push(p)}}}}}b=0;for(S=A.sprites.length;b0&&F.z<1){j=void 0;if(B===x.length){j=new THREE.RenderableParticle;x.push(j)}else j= +x[B];B++;v=j;v.object=C;v.x=F.x/F.w;v.y=F.y/F.w;v.z=F.z;v.rotation=C.rotation.z;v.scale.x=C.scale.x*Math.abs(v.x-(F.x+e.projectionMatrix.elements[0])/(F.w+e.projectionMatrix.elements[12]));v.scale.y=C.scale.y*Math.abs(v.y-(F.y+e.projectionMatrix.elements[5])/(F.w+e.projectionMatrix.elements[13]));v.material=C.material;A.elements.push(v)}}}g&&A.elements.sort(d);return A}};THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=d!==void 0?d:1}; THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w;return this},setFromEuler:function(a,b){var c=Math.cos(a.x/2),d=Math.cos(a.y/2),f=Math.cos(a.z/2),e=Math.sin(a.x/2),g=Math.sin(a.y/2),j=Math.sin(a.z/2);if(b===void 0||b==="XYZ"){this.x=e*d*f+c*g*j;this.y=c*g*f-e*d*j;this.z=c*d*j+e*g*f;this.w=c*d*f-e*g*j}else if(b==="YXZ"){this.x=e*d*f+c*g*j;this.y=c*g*f-e*d*j;this.z= c*d*j-e*g*f;this.w=c*d*f+e*g*j}else if(b==="ZXY"){this.x=e*d*f-c*g*j;this.y=c*g*f+e*d*j;this.z=c*d*j+e*g*f;this.w=c*d*f-e*g*j}else if(b==="ZYX"){this.x=e*d*f-c*g*j;this.y=c*g*f+e*d*j;this.z=c*d*j-e*g*f;this.w=c*d*f+e*g*j}else if(b==="YZX"){this.x=e*d*f+c*g*j;this.y=c*g*f+e*d*j;this.z=c*d*j-e*g*f;this.w=c*d*f-e*g*j}else if(b==="XZY"){this.x=e*d*f-c*g*j;this.y=c*g*f-e*d*j;this.z=c*d*j+e*g*f;this.w=c*d*f+e*g*j}return this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);this.x=a.x*d;this.y=a.y* d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0],a=b[4],d=b[8],f=b[1],e=b[5],g=b[9],j=b[2],m=b[6],b=b[10],k=c+e+b;if(k>0){c=0.5/Math.sqrt(k+1);this.w=0.25/c;this.x=(m-g)*c;this.y=(d-j)*c;this.z=(f-a)*c}else if(c>e&&c>b){c=2*Math.sqrt(1+c-e-b);this.w=(m-g)/c;this.x=0.25*c;this.y=(a+f)/c;this.z=(d+j)/c}else if(e>b){c=2*Math.sqrt(1+e-c-b);this.w=(d-j)/c;this.x=(a+f)/c;this.y=0.25*c;this.z=(g+m)/c}else{c=2*Math.sqrt(1+b-c-e);this.w=(f-a)/c;this.x= diff --git a/build/custom/ThreeExtras.js b/build/custom/ThreeExtras.js index 5eb0a1ca4ccbae9918bd5da4c0cdf1d8adef30d6..8579facb408427d31a3f318f830af02332fc3fb2 100644 --- a/build/custom/ThreeExtras.js +++ b/build/custom/ThreeExtras.js @@ -296,8 +296,8 @@ a.uniform3f(s.screenPosition,(v.position.x-k)/k,(t-v.position.y)/t,Math.max(0,Ma a.uniform1f(s.opacity,v.opacity);a.uniform3f(s.color,v.color.r,v.color.g,v.color.b);a.uniform1f(s.rotation,v.rotation);a.uniform2fv(s.scale,z);if(v.mergeWith3D&&!r){a.enable(a.DEPTH_TEST);r=true}else if(!v.mergeWith3D&&r){a.disable(a.DEPTH_TEST);r=false}c.setBlending(v.blending,v.blendEquation,v.blendSrc,v.blendDst);c.setTexture(v.map,0);a.drawElements(a.TRIANGLES,6,a.UNSIGNED_SHORT,0)}}a.enable(a.CULL_FACE);a.enable(a.DEPTH_TEST);a.depthMask(true)}}}; THREE.DepthPassPlugin=function(){this.enabled=false;this.renderTarget=null;var b,a,c,d,e=new THREE.Frustum,f=new THREE.Matrix4;this.init=function(e){b=e.context;a=e;var e=THREE.ShaderLib.depthRGBA,f=THREE.UniformsUtils.clone(e.uniforms);c=new THREE.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:f});d=new THREE.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:f,morphTargets:true});c._shadowPass=true;d._shadowPass=true};this.render= function(a,b){this.enabled&&this.update(a,b)};this.update=function(g,h){var i,j,l,m,n,k;b.clearColor(1,1,1,1);b.disable(b.BLEND);a.setDepthTest(true);a.autoUpdateScene&&g.updateMatrixWorld();if(!h._viewMatrixArray)h._viewMatrixArray=new Float32Array(16);if(!h._projectionMatrixArray)h._projectionMatrixArray=new Float32Array(16);h.matrixWorldInverse.getInverse(h.matrixWorld);h.matrixWorldInverse.flattenToArray(h._viewMatrixArray);h.projectionMatrix.flattenToArray(h._projectionMatrixArray);f.multiply(h.projectionMatrix, -h.matrixWorldInverse);e.setFromMatrix(f);a.setRenderTarget(this.renderTarget);a.clear();k=g.__webglObjects;i=0;for(j=k.length;i=0&&h>=0&&e>=0&&j>=0)return true;if(f<0&&h<0||e<0&&j<0)return false; f<0?c=Math.max(c,f/(f-h)):h<0&&(d=Math.min(d,f/(f-h)));e<0?c=Math.max(c,e/(e-j)):j<0&&(d=Math.min(d,e/(e-j)));if(dj&&l.positionScreen.z0)){da=i[k-2];U.copy(T.positionScreen);W.copy(da.positionScreen);if(e(U,W)===true){U.multiplyScalar(1/U.w);W.multiplyScalar(1/W.w);ma=void 0;if(p===x.length){ma=new THREE.RenderableLine;x.push(ma)}else ma=x[p];p++;r=ma;r.v1.positionScreen.copy(U);r.v2.positionScreen.copy(W);r.z=Math.max(U.z,W.z);r.material=N.material;E.elements.push(r)}}}}}b=0;for(ja=E.sprites.length;b0&&G.z<1){j=void 0;if(H===v.length){j=new THREE.RenderableParticle;v.push(j)}else j=v[H];H++;w=j;w.object=N;w.x=G.x/G.w;w.y=G.y/G.w;w.z=G.z;w.rotation=N.rotation.z;w.scale.x=N.scale.x*Math.abs(w.x-(G.x+f.projectionMatrix.elements[0])/(G.w+f.projectionMatrix.elements[12]));w.scale.y=N.scale.y*Math.abs(w.y-(G.y+f.projectionMatrix.elements[5])/(G.w+f.projectionMatrix.elements[13]));w.material=N.material;E.elements.push(w)}}}h&& -E.elements.sort(d);return E}};THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=d!==void 0?d:1}; +Ja,Ia,Ca;H=p=u=n=0;E.elements.length=0;b.updateMatrixWorld();f.parent===void 0&&f.updateMatrixWorld();f.matrixWorldInverse.getInverse(f.matrixWorld);C.multiply(f.projectionMatrix,f.matrixWorldInverse);I.setFromMatrix(C);E=a(b,false);b=0;for(ja=E.objects.length;bj&&l.positionScreen.z0)){da=i[k-2];U.copy(T.positionScreen); +W.copy(da.positionScreen);if(e(U,W)===true){U.multiplyScalar(1/U.w);W.multiplyScalar(1/W.w);ma=void 0;if(p===x.length){ma=new THREE.RenderableLine;x.push(ma)}else ma=x[p];p++;r=ma;r.v1.positionScreen.copy(U);r.v2.positionScreen.copy(W);r.z=Math.max(U.z,W.z);r.material=N.material;E.elements.push(r)}}}}}b=0;for(ja=E.sprites.length;b0&&G.z<1){j=void 0;if(H===v.length){j=new THREE.RenderableParticle;v.push(j)}else j=v[H];H++;w=j;w.object=N;w.x=G.x/G.w;w.y=G.y/G.w;w.z=G.z;w.rotation=N.rotation.z;w.scale.x=N.scale.x*Math.abs(w.x-(G.x+f.projectionMatrix.elements[0])/(G.w+f.projectionMatrix.elements[12]));w.scale.y=N.scale.y*Math.abs(w.y-(G.y+f.projectionMatrix.elements[5])/(G.w+f.projectionMatrix.elements[13]));w.material=N.material;E.elements.push(w)}}}h&&E.elements.sort(d);return E}}; +THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=d!==void 0?d:1}; THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w;return this},setFromEuler:function(a,b){var c=Math.cos(a.x/2),d=Math.cos(a.y/2),e=Math.cos(a.z/2),f=Math.sin(a.x/2),h=Math.sin(a.y/2),j=Math.sin(a.z/2);if(b===void 0||b==="XYZ"){this.x=f*d*e+c*h*j;this.y=c*h*e-f*d*j;this.z=c*d*j+f*h*e;this.w=c*d*e-f*h*j}else if(b==="YXZ"){this.x=f*d*e+c*h*j;this.y=c*h*e-f*d*j;this.z= c*d*j-f*h*e;this.w=c*d*e+f*h*j}else if(b==="ZXY"){this.x=f*d*e-c*h*j;this.y=c*h*e+f*d*j;this.z=c*d*j+f*h*e;this.w=c*d*e-f*h*j}else if(b==="ZYX"){this.x=f*d*e-c*h*j;this.y=c*h*e+f*d*j;this.z=c*d*j-f*h*e;this.w=c*d*e+f*h*j}else if(b==="YZX"){this.x=f*d*e+c*h*j;this.y=c*h*e+f*d*j;this.z=c*d*j-f*h*e;this.w=c*d*e-f*h*j}else if(b==="XZY"){this.x=f*d*e-c*h*j;this.y=c*h*e-f*d*j;this.z=c*d*j+f*h*e;this.w=c*d*e+f*h*j}return this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);this.x=a.x*d;this.y=a.y* d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRotationMatrix:function(a){var b=a.elements,c=b[0],a=b[4],d=b[8],e=b[1],f=b[5],h=b[9],j=b[2],l=b[6],b=b[10],k=c+f+b;if(k>0){c=0.5/Math.sqrt(k+1);this.w=0.25/c;this.x=(l-h)*c;this.y=(d-j)*c;this.z=(e-a)*c}else if(c>f&&c>b){c=2*Math.sqrt(1+c-f-b);this.w=(l-h)/c;this.x=0.25*c;this.y=(a+e)/c;this.z=(d+j)/c}else if(f>b){c=2*Math.sqrt(1+f-c-b);this.w=(d-j)/c;this.x=(a+e)/c;this.y=0.25*c;this.z=(h+l)/c}else{c=2*Math.sqrt(1+b-c-f);this.w=(e-a)/c;this.x= @@ -330,72 +330,71 @@ e.__webglColorBuffer);g.vertexAttribPointer(b.color,3,g.FLOAT,false,0,0)}if(b.no if(b.uv2>=0)if(e.__webglUV2Buffer){g.bindBuffer(g.ARRAY_BUFFER,e.__webglUV2Buffer);g.vertexAttribPointer(b.uv2,2,g.FLOAT,false,0,0);g.enableVertexAttribArray(b.uv2)}else g.disableVertexAttribArray(b.uv2);if(d.skinning&&b.skinVertexA>=0&&b.skinVertexB>=0&&b.skinIndex>=0&&b.skinWeight>=0){g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinVertexABuffer);g.vertexAttribPointer(b.skinVertexA,4,g.FLOAT,false,0,0);g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinVertexBBuffer);g.vertexAttribPointer(b.skinVertexB,4,g.FLOAT, false,0,0);g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinIndicesBuffer);g.vertexAttribPointer(b.skinIndex,4,g.FLOAT,false,0,0);g.bindBuffer(g.ARRAY_BUFFER,e.__webglSkinWeightsBuffer);g.vertexAttribPointer(b.skinWeight,4,g.FLOAT,false,0,0)}}if(f instanceof THREE.Mesh){if(d.wireframe){d=d.wireframeLinewidth;if(d!==Mb){g.lineWidth(d);Mb=d}a&&g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer);g.drawElements(g.LINES,e.__webglLineCount,g.UNSIGNED_SHORT,0)}else{a&&g.bindBuffer(g.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer); g.drawElements(g.TRIANGLES,e.__webglFaceCount,g.UNSIGNED_SHORT,0)}F.info.render.calls++;F.info.render.vertices=F.info.render.vertices+e.__webglFaceCount;F.info.render.faces=F.info.render.faces+e.__webglFaceCount/3}else if(f instanceof THREE.Line){f=f.type===THREE.LineStrip?g.LINE_STRIP:g.LINES;d=d.linewidth;if(d!==Mb){g.lineWidth(d);Mb=d}g.drawArrays(f,0,e.__webglLineCount);F.info.render.calls++}else if(f instanceof THREE.ParticleSystem){g.drawArrays(g.POINTS,0,e.__webglParticleCount);F.info.render.calls++; -F.info.render.points=F.info.render.points+e.__webglParticleCount}else if(f instanceof THREE.Ribbon){g.drawArrays(g.TRIANGLE_STRIP,0,e.__webglVertexCount);F.info.render.calls++}}};this.render=function(a,b,c,d){var e,f,j,m,n=a.__lights,o=a.fog;aa=-1;Wa=true;if(b.parent===void 0){console.warn("DEPRECATED: Camera hasn't been added to a Scene. Adding it...");a.add(b)}this.autoUpdateScene&&a.updateMatrixWorld();if(!b._viewMatrixArray)b._viewMatrixArray=new Float32Array(16);if(!b._projectionMatrixArray)b._projectionMatrixArray= -new Float32Array(16);b.matrixWorldInverse.getInverse(b.matrixWorld);b.matrixWorldInverse.flattenToArray(b._viewMatrixArray);b.projectionMatrix.flattenToArray(b._projectionMatrixArray);Wb.multiply(b.projectionMatrix,b.matrixWorldInverse);ic.setFromMatrix(Wb);this.autoUpdateObjects&&this.initWebGLObjects(a);l(this.renderPluginsPre,a,b);F.info.render.calls=0;F.info.render.vertices=0;F.info.render.faces=0;F.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor, -this.autoClearDepth,this.autoClearStencil);m=a.__webglObjects;d=0;for(e=m.length;d=0){v=r.geometry.materials[v];if(v.transparent){q.transparent=v;q.opaque=null}else{q.opaque=v;q.transparent=null}}}else if(v)if(v.transparent){q.transparent= -v;q.opaque=null}else{q.opaque=v;q.transparent=null}f.render=true;if(this.sortObjects)if(j.renderDepth)f.z=j.renderDepth;else{pb.copy(j.matrixWorld.getPosition());Wb.multiplyVector3(pb);f.z=pb.z}}}this.sortObjects&&m.sort(h);m=a.__webglObjectsImmediate;d=0;for(e=m.length;d65535){E[A].counter=E[A].counter+1;C=E[A].hash+"_"+E[A].counter;p.geometryGroups[C]===void 0&&(p.geometryGroups[C]={faces3:[],faces4:[],materialIndex:x,vertices:0,numMorphTargets:H,numMorphNormals:P})}w instanceof THREE.Face3?p.geometryGroups[C].faces3.push(r):p.geometryGroups[C].faces4.push(r);p.geometryGroups[C].vertices=p.geometryGroups[C].vertices+z}p.geometryGroupsList=[];var O=void 0;for(O in p.geometryGroups){p.geometryGroups[O].id= -ta++;p.geometryGroupsList.push(p.geometryGroups[O])}}for(j in k.geometryGroups){l=k.geometryGroups[j];if(!l.__webglVertexBuffer){var G=l;G.__webglVertexBuffer=g.createBuffer();G.__webglNormalBuffer=g.createBuffer();G.__webglTangentBuffer=g.createBuffer();G.__webglColorBuffer=g.createBuffer();G.__webglUVBuffer=g.createBuffer();G.__webglUV2Buffer=g.createBuffer();G.__webglSkinVertexABuffer=g.createBuffer();G.__webglSkinVertexBBuffer=g.createBuffer();G.__webglSkinIndicesBuffer=g.createBuffer();G.__webglSkinWeightsBuffer= -g.createBuffer();G.__webglFaceBuffer=g.createBuffer();G.__webglLineBuffer=g.createBuffer();var N=void 0,Q=void 0;if(G.numMorphTargets){G.__webglMorphTargetsBuffers=[];N=0;for(Q=G.numMorphTargets;N0||T.faceVertexUvs.length>0)I.__uvArray=new Float32Array(V*2);if(T.faceUvs.length>1||T.faceVertexUvs.length>1)I.__uv2Array=new Float32Array(V*2)}if(S.geometry.skinWeights.length&&S.geometry.skinIndices.length){I.__skinVertexAArray= -new Float32Array(V*4);I.__skinVertexBArray=new Float32Array(V*4);I.__skinIndexArray=new Float32Array(V*4);I.__skinWeightArray=new Float32Array(V*4)}I.__faceArray=new Uint16Array(da*3);I.__lineArray=new Uint16Array(ea*2);var ja=void 0,Lb=void 0;if(I.numMorphTargets){I.__morphTargetsArrays=[];ja=0;for(Lb=I.numMorphTargets;ja0){g.bindBuffer(g.ARRAY_BUFFER,Z.__webglSkinVertexABuffer);g.bufferData(g.ARRAY_BUFFER,oa,Pa);g.bindBuffer(g.ARRAY_BUFFER,Z.__webglSkinVertexBBuffer);g.bufferData(g.ARRAY_BUFFER,pa,Pa);g.bindBuffer(g.ARRAY_BUFFER,Z.__webglSkinIndicesBuffer);g.bufferData(g.ARRAY_BUFFER,qa,Pa);g.bindBuffer(g.ARRAY_BUFFER,Z.__webglSkinWeightsBuffer);g.bufferData(g.ARRAY_BUFFER,ra,Pa)}}if(rd&&Yc){y=0;for(M=ba.length;y0){g.bindBuffer(g.ARRAY_BUFFER,Z.__webglColorBuffer);g.bufferData(g.ARRAY_BUFFER,Fa,Pa)}}if(qd&&La.hasTangents){y=0;for(M=ba.length;y0){g.bindBuffer(g.ARRAY_BUFFER,Z.__webglUVBuffer);g.bufferData(g.ARRAY_BUFFER,rc,Pa)}}if(jd&&cd&&gd){y=0;for(M=ba.length;y0){g.bindBuffer(g.ARRAY_BUFFER,Z.__webglUV2Buffer);g.bufferData(g.ARRAY_BUFFER,sc,Pa)}}if(Pc){y=0;for(M=ba.length;y=0){v=r.geometry.materials[v];if(v.transparent){q.transparent=v;q.opaque=null}else{q.opaque=v;q.transparent=null}}}else if(v)if(v.transparent){q.transparent=v;q.opaque=null}else{q.opaque=v;q.transparent= +null}f.render=true;if(this.sortObjects)if(j.renderDepth)f.z=j.renderDepth;else{pb.copy(j.matrixWorld.getPosition());Wb.multiplyVector3(pb);f.z=pb.z}}}this.sortObjects&&m.sort(h);m=a.__webglObjectsImmediate;d=0;for(e=m.length;d65535){E[A].counter= +E[A].counter+1;C=E[A].hash+"_"+E[A].counter;p.geometryGroups[C]===void 0&&(p.geometryGroups[C]={faces3:[],faces4:[],materialIndex:x,vertices:0,numMorphTargets:H,numMorphNormals:P})}w instanceof THREE.Face3?p.geometryGroups[C].faces3.push(r):p.geometryGroups[C].faces4.push(r);p.geometryGroups[C].vertices=p.geometryGroups[C].vertices+z}p.geometryGroupsList=[];var O=void 0;for(O in p.geometryGroups){p.geometryGroups[O].id=ta++;p.geometryGroupsList.push(p.geometryGroups[O])}}for(j in k.geometryGroups){l= +k.geometryGroups[j];if(!l.__webglVertexBuffer){var G=l;G.__webglVertexBuffer=g.createBuffer();G.__webglNormalBuffer=g.createBuffer();G.__webglTangentBuffer=g.createBuffer();G.__webglColorBuffer=g.createBuffer();G.__webglUVBuffer=g.createBuffer();G.__webglUV2Buffer=g.createBuffer();G.__webglSkinVertexABuffer=g.createBuffer();G.__webglSkinVertexBBuffer=g.createBuffer();G.__webglSkinIndicesBuffer=g.createBuffer();G.__webglSkinWeightsBuffer=g.createBuffer();G.__webglFaceBuffer=g.createBuffer();G.__webglLineBuffer= +g.createBuffer();var N=void 0,Q=void 0;if(G.numMorphTargets){G.__webglMorphTargetsBuffers=[];N=0;for(Q=G.numMorphTargets;N0||T.faceVertexUvs.length>0)I.__uvArray=new Float32Array(V*2);if(T.faceUvs.length>1||T.faceVertexUvs.length>1)I.__uv2Array=new Float32Array(V*2)}if(S.geometry.skinWeights.length&&S.geometry.skinIndices.length){I.__skinVertexAArray=new Float32Array(V*4);I.__skinVertexBArray= +new Float32Array(V*4);I.__skinIndexArray=new Float32Array(V*4);I.__skinWeightArray=new Float32Array(V*4)}I.__faceArray=new Uint16Array(da*3);I.__lineArray=new Uint16Array(ea*2);var ja=void 0,Lb=void 0;if(I.numMorphTargets){I.__morphTargetsArrays=[];ja=0;for(Lb=I.numMorphTargets;ja0){g.bindBuffer(g.ARRAY_BUFFER,Z.__webglSkinVertexABuffer);g.bufferData(g.ARRAY_BUFFER,oa,Pa);g.bindBuffer(g.ARRAY_BUFFER,Z.__webglSkinVertexBBuffer);g.bufferData(g.ARRAY_BUFFER,pa,Pa);g.bindBuffer(g.ARRAY_BUFFER,Z.__webglSkinIndicesBuffer);g.bufferData(g.ARRAY_BUFFER,qa,Pa);g.bindBuffer(g.ARRAY_BUFFER,Z.__webglSkinWeightsBuffer);g.bufferData(g.ARRAY_BUFFER,ra,Pa)}}if(rd&&Yc){y=0;for(M=ba.length;y0){g.bindBuffer(g.ARRAY_BUFFER,Z.__webglColorBuffer);g.bufferData(g.ARRAY_BUFFER,Fa,Pa)}}if(qd&&La.hasTangents){y=0;for(M=ba.length;y0){g.bindBuffer(g.ARRAY_BUFFER,Z.__webglUVBuffer);g.bufferData(g.ARRAY_BUFFER,rc,Pa)}}if(jd&&cd&&gd){y=0;for(M=ba.length;y0){g.bindBuffer(g.ARRAY_BUFFER,Z.__webglUV2Buffer);g.bufferData(g.ARRAY_BUFFER,sc,Pa)}}if(Pc){y=0;for(M=ba.length;y