Ver código fonte

Updated builds.

Mr.doob 12 anos atrás
pai
commit
0d110e4b3f
2 arquivos alterados com 10 adições e 13 exclusões
  1. 2 5
      build/three.js
  2. 8 8
      build/three.min.js

+ 2 - 5
build/three.js

@@ -6425,16 +6425,13 @@ THREE.Projector = function() {
 				for ( v = 0, vl = vertices.length; v < vl; v ++ ) {
 
 					_vertex = getNextVertexInPool();
-					_vertex.positionWorld.copy( vertices[ v ] );
 
+					_vertex.positionWorld.copy( vertices[ v ] );
 					_vertex.positionWorld.applyMatrix4( _modelMatrix );
 
 					_vertex.positionScreen.copy( _vertex.positionWorld );
 					_vertex.positionScreen.applyMatrix4( _viewProjectionMatrix );
-
-					_vertex.positionScreen.x /= _vertex.positionScreen.w;
-					_vertex.positionScreen.y /= _vertex.positionScreen.w;
-					_vertex.positionScreen.z /= _vertex.positionScreen.w;
+					_vertex.positionScreen.multiplyScalar( 1 / _vertex.positionScreen.w );
 
 					_vertex.visible = _vertex.positionScreen.z > -1 && _vertex.positionScreen.z < 1;
 

+ 8 - 8
build/three.min.js

@@ -132,14 +132,14 @@ c)return!1;a.lerp(b,c);b.lerp(a,1-d);return!0}var e,f,g=[],h=0,i,k,m=[],p=0,n,s,
 b.matrixWorldInverse);return a.applyMatrix4(B)};this.unprojectVector=function(a,b){b.projectionMatrixInverse.getInverse(b.projectionMatrix);B.multiplyMatrices(b.matrixWorld,b.projectionMatrixInverse);return a.applyMatrix4(B)};this.pickingRay=function(a,b){a.z=-1;var c=new THREE.Vector3(a.x,a.y,1);this.unprojectVector(a,b);this.unprojectVector(c,b);c.sub(a).normalize();return new THREE.Raycaster(a,c)};this.projectScene=function(g,h,p,ha){var ta=!1,oa,da,ra,$,la,ib,Ea,ma,wa,xa,ea,Va,ob;y=w=r=s=0;H.elements.length=
 0;g.updateMatrixWorld();void 0===h.parent&&h.updateMatrixWorld();W.copy(h.matrixWorldInverse.getInverse(h.matrixWorld));B.multiplyMatrices(h.projectionMatrix,W);Z.getInverse(W);Z.transpose();Na.setFromMatrix(B);f=0;H.objects.length=0;H.sprites.length=0;H.lights.length=0;var qb=function(b){for(var c=0,d=b.children.length;c<d;c++){var f=b.children[c];if(!1!==f.visible){if(f instanceof THREE.Light)H.lights.push(f);else if(f instanceof THREE.Mesh||f instanceof THREE.Line){if(!1===f.frustumCulled||!0===
 Na.intersectsObject(f))e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:(X.copy(f.matrixWorld.getPosition()),X.applyMatrix4(B),e.z=X.z),H.objects.push(e)}else f instanceof THREE.Sprite||f instanceof THREE.Particle?(e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:(X.copy(f.matrixWorld.getPosition()),X.applyMatrix4(B),e.z=X.z),H.sprites.push(e)):(e=a(),e.object=f,null!==f.renderDepth?e.z=f.renderDepth:(X.copy(f.matrixWorld.getPosition()),X.applyMatrix4(B),e.z=X.z),H.objects.push(e));
-qb(f)}}};qb(g);!0===p&&H.objects.sort(c);g=0;for(p=H.objects.length;g<p;g++)if(ma=H.objects[g].object,K=ma.matrixWorld,k=0,ma instanceof THREE.Mesh){wa=ma.geometry;ra=wa.vertices;xa=wa.faces;wa=wa.faceVertexUvs;S.getInverse(K);S.transpose();Va=ma.material instanceof THREE.MeshFaceMaterial;ob=!0===Va?ma.material:null;oa=0;for(da=ra.length;oa<da;oa++)i=b(),i.positionWorld.copy(ra[oa]),i.positionWorld.applyMatrix4(K),i.positionScreen.copy(i.positionWorld),i.positionScreen.applyMatrix4(B),i.positionScreen.x/=
-i.positionScreen.w,i.positionScreen.y/=i.positionScreen.w,i.positionScreen.z/=i.positionScreen.w,i.visible=-1<i.positionScreen.z&&1>i.positionScreen.z;ra=0;for(oa=xa.length;ra<oa;ra++){da=xa[ra];var tb=!0===Va?ob.materials[da.materialIndex]:ma.material;if(void 0!==tb){ib=tb.side;if(da instanceof THREE.Face3)if($=m[da.a],la=m[da.b],Ea=m[da.c],!0===$.visible&&!0===la.visible&&!0===Ea.visible)if(ta=0>(Ea.positionScreen.x-$.positionScreen.x)*(la.positionScreen.y-$.positionScreen.y)-(Ea.positionScreen.y-
-$.positionScreen.y)*(la.positionScreen.x-$.positionScreen.x),ib===THREE.DoubleSide||ta===(ib===THREE.FrontSide))s===l?(ea=new THREE.RenderableFace3,q.push(ea),l++,s++,n=ea):n=q[s++],n.v1.copy($),n.v2.copy(la),n.v3.copy(Ea);else continue;else continue;else if(da instanceof THREE.Face4)if($=m[da.a],la=m[da.b],Ea=m[da.c],ea=m[da.d],!0===$.visible&&!0===la.visible&&!0===Ea.visible&&!0===ea.visible)if(ta=0>(ea.positionScreen.x-$.positionScreen.x)*(la.positionScreen.y-$.positionScreen.y)-(ea.positionScreen.y-
-$.positionScreen.y)*(la.positionScreen.x-$.positionScreen.x)||0>(la.positionScreen.x-Ea.positionScreen.x)*(ea.positionScreen.y-Ea.positionScreen.y)-(la.positionScreen.y-Ea.positionScreen.y)*(ea.positionScreen.x-Ea.positionScreen.x),ib===THREE.DoubleSide||ta===(ib===THREE.FrontSide)){if(r===x){var rb=new THREE.RenderableFace4;t.push(rb);x++;r++;n=rb}else n=t[r++];n.v1.copy($);n.v2.copy(la);n.v3.copy(Ea);n.v4.copy(ea)}else continue;else continue;n.normalModel.copy(da.normal);!1===ta&&(ib===THREE.BackSide||
-ib===THREE.DoubleSide)&&n.normalModel.negate();n.normalModel.applyMatrix3(S);n.normalModel.normalize();n.normalModelView.copy(n.normalModel);n.normalModelView.applyMatrix3(Z);n.centroidModel.copy(da.centroid);n.centroidModel.applyMatrix4(K);Ea=da.vertexNormals;$=0;for(la=Ea.length;$<la;$++)ea=n.vertexNormalsModel[$],ea.copy(Ea[$]),!1===ta&&(ib===THREE.BackSide||ib===THREE.DoubleSide)&&ea.negate(),ea.applyMatrix3(S),ea.normalize(),rb=n.vertexNormalsModelView[$],rb.copy(ea),rb.applyMatrix3(Z);n.vertexNormalsLength=
-Ea.length;ib=0;for($=wa.length;ib<$;ib++)if(ea=wa[ib][ra],void 0!==ea){la=0;for(Ea=ea.length;la<Ea;la++)n.uvs[ib][la]=ea[la]}n.color=da.color;n.material=tb;sa.copy(n.centroidModel);sa.applyMatrix4(B);n.z=sa.z;H.elements.push(n)}}}else if(ma instanceof THREE.Line){L.multiplyMatrices(B,K);ra=ma.geometry.vertices;$=b();$.positionScreen.copy(ra[0]);$.positionScreen.applyMatrix4(L);xa=ma.type===THREE.LinePieces?2:1;oa=1;for(da=ra.length;oa<da;oa++)$=b(),$.positionScreen.copy(ra[oa]),$.positionScreen.applyMatrix4(L),
-0<(oa+1)%xa||(la=m[k-2],J.copy($.positionScreen),ja.copy(la.positionScreen),!0===d(J,ja)&&(J.multiplyScalar(1/J.w),ja.multiplyScalar(1/ja.w),w===F?(wa=new THREE.RenderableLine,I.push(wa),F++,w++,z=wa):z=I[w++],z.v1.positionScreen.copy(J),z.v2.positionScreen.copy(ja),z.z=Math.max(J.z,ja.z),z.material=ma.material,H.elements.push(z)))}g=0;for(p=H.sprites.length;g<p;g++)ma=H.sprites[g].object,K=ma.matrixWorld,ma instanceof THREE.Particle&&(A.set(K.elements[12],K.elements[13],K.elements[14],1),A.applyMatrix4(B),
-A.z/=A.w,0<A.z&&1>A.z&&(y===G?(ta=new THREE.RenderableParticle,E.push(ta),G++,y++,C=ta):C=E[y++],C.object=ma,C.x=A.x/A.w,C.y=A.y/A.w,C.z=A.z,C.rotation=ma.rotation.z,C.scale.x=ma.scale.x*Math.abs(C.x-(A.x+h.projectionMatrix.elements[0])/(A.w+h.projectionMatrix.elements[12])),C.scale.y=ma.scale.y*Math.abs(C.y-(A.y+h.projectionMatrix.elements[5])/(A.w+h.projectionMatrix.elements[13])),C.material=ma.material,H.elements.push(C)));!0===ha&&H.elements.sort(c);return H}};THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=void 0!==f?f:0;this.centroid=new THREE.Vector3};
+qb(f)}}};qb(g);!0===p&&H.objects.sort(c);g=0;for(p=H.objects.length;g<p;g++)if(ma=H.objects[g].object,K=ma.matrixWorld,k=0,ma instanceof THREE.Mesh){wa=ma.geometry;ra=wa.vertices;xa=wa.faces;wa=wa.faceVertexUvs;S.getInverse(K);S.transpose();Va=ma.material instanceof THREE.MeshFaceMaterial;ob=!0===Va?ma.material:null;oa=0;for(da=ra.length;oa<da;oa++)i=b(),i.positionWorld.copy(ra[oa]),i.positionWorld.applyMatrix4(K),i.positionScreen.copy(i.positionWorld),i.positionScreen.applyMatrix4(B),i.positionScreen.multiplyScalar(1/
+i.positionScreen.w),i.visible=-1<i.positionScreen.z&&1>i.positionScreen.z;ra=0;for(oa=xa.length;ra<oa;ra++){da=xa[ra];var tb=!0===Va?ob.materials[da.materialIndex]:ma.material;if(void 0!==tb){ib=tb.side;if(da instanceof THREE.Face3)if($=m[da.a],la=m[da.b],Ea=m[da.c],!0===$.visible&&!0===la.visible&&!0===Ea.visible)if(ta=0>(Ea.positionScreen.x-$.positionScreen.x)*(la.positionScreen.y-$.positionScreen.y)-(Ea.positionScreen.y-$.positionScreen.y)*(la.positionScreen.x-$.positionScreen.x),ib===THREE.DoubleSide||
+ta===(ib===THREE.FrontSide))s===l?(ea=new THREE.RenderableFace3,q.push(ea),l++,s++,n=ea):n=q[s++],n.v1.copy($),n.v2.copy(la),n.v3.copy(Ea);else continue;else continue;else if(da instanceof THREE.Face4)if($=m[da.a],la=m[da.b],Ea=m[da.c],ea=m[da.d],!0===$.visible&&!0===la.visible&&!0===Ea.visible&&!0===ea.visible)if(ta=0>(ea.positionScreen.x-$.positionScreen.x)*(la.positionScreen.y-$.positionScreen.y)-(ea.positionScreen.y-$.positionScreen.y)*(la.positionScreen.x-$.positionScreen.x)||0>(la.positionScreen.x-
+Ea.positionScreen.x)*(ea.positionScreen.y-Ea.positionScreen.y)-(la.positionScreen.y-Ea.positionScreen.y)*(ea.positionScreen.x-Ea.positionScreen.x),ib===THREE.DoubleSide||ta===(ib===THREE.FrontSide)){if(r===x){var rb=new THREE.RenderableFace4;t.push(rb);x++;r++;n=rb}else n=t[r++];n.v1.copy($);n.v2.copy(la);n.v3.copy(Ea);n.v4.copy(ea)}else continue;else continue;n.normalModel.copy(da.normal);!1===ta&&(ib===THREE.BackSide||ib===THREE.DoubleSide)&&n.normalModel.negate();n.normalModel.applyMatrix3(S);
+n.normalModel.normalize();n.normalModelView.copy(n.normalModel);n.normalModelView.applyMatrix3(Z);n.centroidModel.copy(da.centroid);n.centroidModel.applyMatrix4(K);Ea=da.vertexNormals;$=0;for(la=Ea.length;$<la;$++)ea=n.vertexNormalsModel[$],ea.copy(Ea[$]),!1===ta&&(ib===THREE.BackSide||ib===THREE.DoubleSide)&&ea.negate(),ea.applyMatrix3(S),ea.normalize(),rb=n.vertexNormalsModelView[$],rb.copy(ea),rb.applyMatrix3(Z);n.vertexNormalsLength=Ea.length;ib=0;for($=wa.length;ib<$;ib++)if(ea=wa[ib][ra],void 0!==
+ea){la=0;for(Ea=ea.length;la<Ea;la++)n.uvs[ib][la]=ea[la]}n.color=da.color;n.material=tb;sa.copy(n.centroidModel);sa.applyMatrix4(B);n.z=sa.z;H.elements.push(n)}}}else if(ma instanceof THREE.Line){L.multiplyMatrices(B,K);ra=ma.geometry.vertices;$=b();$.positionScreen.copy(ra[0]);$.positionScreen.applyMatrix4(L);xa=ma.type===THREE.LinePieces?2:1;oa=1;for(da=ra.length;oa<da;oa++)$=b(),$.positionScreen.copy(ra[oa]),$.positionScreen.applyMatrix4(L),0<(oa+1)%xa||(la=m[k-2],J.copy($.positionScreen),ja.copy(la.positionScreen),
+!0===d(J,ja)&&(J.multiplyScalar(1/J.w),ja.multiplyScalar(1/ja.w),w===F?(wa=new THREE.RenderableLine,I.push(wa),F++,w++,z=wa):z=I[w++],z.v1.positionScreen.copy(J),z.v2.positionScreen.copy(ja),z.z=Math.max(J.z,ja.z),z.material=ma.material,H.elements.push(z)))}g=0;for(p=H.sprites.length;g<p;g++)ma=H.sprites[g].object,K=ma.matrixWorld,ma instanceof THREE.Particle&&(A.set(K.elements[12],K.elements[13],K.elements[14],1),A.applyMatrix4(B),A.z/=A.w,0<A.z&&1>A.z&&(y===G?(ta=new THREE.RenderableParticle,E.push(ta),
+G++,y++,C=ta):C=E[y++],C.object=ma,C.x=A.x/A.w,C.y=A.y/A.w,C.z=A.z,C.rotation=ma.rotation.z,C.scale.x=ma.scale.x*Math.abs(C.x-(A.x+h.projectionMatrix.elements[0])/(A.w+h.projectionMatrix.elements[12])),C.scale.y=ma.scale.y*Math.abs(C.y-(A.y+h.projectionMatrix.elements[5])/(A.w+h.projectionMatrix.elements[13])),C.material=ma.material,H.elements.push(C)));!0===ha&&H.elements.sort(c);return H}};THREE.Face3=function(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=e instanceof THREE.Color?e:new THREE.Color;this.vertexColors=e instanceof Array?e:[];this.vertexTangents=[];this.materialIndex=void 0!==f?f:0;this.centroid=new THREE.Vector3};
 THREE.Face3.prototype={constructor:THREE.Face3,clone:function(){var a=new THREE.Face3(this.a,this.b,this.c);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.Face4=function(a,b,c,d,e,f,g){this.a=a;this.b=b;this.c=c;this.d=d;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=f instanceof THREE.Color?f:new THREE.Color;this.vertexColors=f instanceof Array?f:[];this.vertexTangents=[];this.materialIndex=void 0!==g?g:0;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();