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

Updated builds.

上级 3ced32af
......@@ -60,8 +60,7 @@ THREE.extend = function ( obj, source ) {
}
}
else {
} else {
var safeHasOwnProperty = {}.hasOwnProperty;
......@@ -101,7 +100,7 @@ THREE.extend = function ( obj, source ) {
if ( window.requestAnimationFrame === undefined ) {
window.requestAnimationFrame = function ( callback, element ) {
window.requestAnimationFrame = function ( callback ) {
var currTime = Date.now(), timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) );
var id = window.setTimeout( function() { callback( currTime + timeToCall ); }, timeToCall );
......@@ -4343,7 +4342,6 @@ THREE.extend( THREE.Matrix4.prototype, {
var m11 = te[0], m21 = te[1], m31 = te[2], m41 = te[3];
var m12 = te[4], m22 = te[5], m32 = te[6], m42 = te[7];
var m13 = te[8], m23 = te[9], m33 = te[10], m43 = te[11];
var m14 = te[12], m24 = te[13], m34 = te[14], m44 = te[15];
te[0] = r11 * m11 + r21 * m12 + r31 * m13;
te[1] = r11 * m21 + r21 * m22 + r31 * m23;
......@@ -6468,9 +6466,7 @@ THREE.Projector = function () {
_frustum = new THREE.Frustum(),
_clippedVertex1PositionScreen = new THREE.Vector4(),
_clippedVertex2PositionScreen = new THREE.Vector4(),
_face3VertexNormals;
_clippedVertex2PositionScreen = new THREE.Vector4();
this.projectVector = function ( vector, camera ) {
......@@ -6611,8 +6607,7 @@ THREE.Projector = function () {
var visible = false,
o, ol, v, vl, f, fl, n, nl, c, cl, u, ul, object,
geometry, vertices, vertex, vertexPositionScreen,
faces, face, faceVertexNormals, faceVertexUvs, uvs,
geometry, vertices, faces, face, faceVertexNormals, faceVertexUvs, uvs,
v1, v2, v3, v4, isFaceMaterial, objectMaterials;
_face3Count = 0;
......@@ -7315,16 +7310,15 @@ THREE.Geometry.prototype = {
computeFaceNormals: function () {
var n, nl, v, vl, vertex, f, fl, face, vA, vB, vC,
cb = new THREE.Vector3(), ab = new THREE.Vector3();
var cb = new THREE.Vector3(), ab = new THREE.Vector3();
for ( f = 0, fl = this.faces.length; f < fl; f ++ ) {
for ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {
face = this.faces[ f ];
var face = this.faces[ f ];
vA = this.vertices[ face.a ];
vB = this.vertices[ face.b ];
vC = this.vertices[ face.c ];
var vA = this.vertices[ face.a ];
var vB = this.vertices[ face.b ];
var vC = this.vertices[ face.c ];
cb.subVectors( vC, vB );
ab.subVectors( vA, vB );
......@@ -8490,7 +8484,6 @@ THREE.BufferGeometry.prototype = {
var tmp = new THREE.Vector3(), tmp2 = new THREE.Vector3();
var n = new THREE.Vector3(), n2 = new THREE.Vector3();
var w, t, test;
var nx, ny, nz;
function handleVertex( v ) {
......@@ -13309,7 +13302,6 @@ THREE.CanvasRenderer = function ( parameters ) {
_directionalLights = new THREE.Color(),
_pointLights = new THREE.Color(),
_pi2 = Math.PI * 2,
_vector3 = new THREE.Vector3(), // Needed for PointLight
_pixelMap, _pixelMapContext, _pixelMapImage, _pixelMapData,
......@@ -13348,7 +13340,7 @@ THREE.CanvasRenderer = function ( parameters ) {
} else {
_context.setLineDash = function ( values ) {}
_context.setLineDash = function () {}
}
......@@ -13541,7 +13533,7 @@ THREE.CanvasRenderer = function ( parameters ) {
_v1 = element;
_v1.x *= _canvasWidthHalf; _v1.y *= _canvasHeightHalf;
renderParticle( _v1, element, material, scene );
renderParticle( _v1, element, material );
} else if ( element instanceof THREE.RenderableLine ) {
......@@ -13554,7 +13546,7 @@ THREE.CanvasRenderer = function ( parameters ) {
if ( _clipBox.isIntersectionBox( _elemBox ) === true ) {
renderLine( _v1, _v2, element, material, scene );
renderLine( _v1, _v2, element, material );
}
......@@ -13580,7 +13572,7 @@ THREE.CanvasRenderer = function ( parameters ) {
_elemBox.setFromPoints( [ _v1.positionScreen, _v2.positionScreen, _v3.positionScreen ] );
renderFace3( _v1, _v2, _v3, 0, 1, 2, element, material, scene );
renderFace3( _v1, _v2, _v3, 0, 1, 2, element, material );
} else if ( element instanceof THREE.RenderableFace4 ) {
......@@ -13711,7 +13703,7 @@ THREE.CanvasRenderer = function ( parameters ) {
}
function renderParticle( v1, element, material, scene ) {
function renderParticle( v1, element, material ) {
setOpacity( material.opacity );
setBlending( material.blending );
......@@ -13823,7 +13815,7 @@ THREE.CanvasRenderer = function ( parameters ) {
}
function renderLine( v1, v2, element, material, scene ) {
function renderLine( v1, v2, element, material ) {
setOpacity( material.opacity );
setBlending( material.blending );
......@@ -13858,7 +13850,7 @@ THREE.CanvasRenderer = function ( parameters ) {
}
function renderFace3( v1, v2, v3, uv1, uv2, uv3, element, material, scene ) {
function renderFace3( v1, v2, v3, uv1, uv2, uv3, element, material ) {
_this.info.render.vertices += 3;
_this.info.render.faces ++;
......@@ -14038,7 +14030,7 @@ THREE.CanvasRenderer = function ( parameters ) {
}
function renderFace4( v1, v2, v3, v4, v5, v6, element, material, scene ) {
function renderFace4( v1, v2, v3, v4, v5, v6, element, material ) {
_this.info.render.vertices += 4;
_this.info.render.faces ++;
......@@ -14050,8 +14042,8 @@ THREE.CanvasRenderer = function ( parameters ) {
// Let renderFace3() handle this
renderFace3( v1, v2, v4, 0, 1, 3, element, material, scene );
renderFace3( v5, v3, v6, 1, 2, 3, element, material, scene );
renderFace3( v1, v2, v4, 0, 1, 3, element, material );
renderFace3( v5, v3, v6, 1, 2, 3, element, material );
return;
......
......@@ -141,7 +141,7 @@ f.renderDepth:(N.getPositionFromMatrix(f.matrixWorld),N.applyProjection(M),e.z=N
i.positionScreen.x/=i.positionScreen.w,i.positionScreen.y/=i.positionScreen.w,i.positionScreen.z/=i.positionScreen.w,i.visible=!(-1>i.positionScreen.x||1<i.positionScreen.x||-1>i.positionScreen.y||1<i.positionScreen.y||-1>i.positionScreen.z||1<i.positionScreen.z);ba=0;for(T=Aa.length;ba<T;ba++){$=Aa[ba];var Ga=!0===sa?la.materials[$.materialIndex]:fa.material;if(void 0!==Ga){ca=Ga.side;if($ instanceof THREE.Face3)if(P=k[$.a],Z=k[$.b],da=k[$.c],G[0]=P.positionScreen,G[1]=Z.positionScreen,G[2]=da.positionScreen,
!0===P.visible||!0===Z.visible||!0===da.visible||Q.isIntersectionBox(C.setFromPoints(G)))if(U=0>(da.positionScreen.x-P.positionScreen.x)*(Z.positionScreen.y-P.positionScreen.y)-(da.positionScreen.y-P.positionScreen.y)*(Z.positionScreen.x-P.positionScreen.x),ca===THREE.DoubleSide||U===(ca===THREE.FrontSide))s===p?(ea=new THREE.RenderableFace3,u.push(ea),p++,s++,m=ea):m=u[s++],m.v1.copy(P),m.v2.copy(Z),m.v3.copy(da);else continue;else continue;else if($ instanceof THREE.Face4)if(P=k[$.a],Z=k[$.b],da=
k[$.c],ea=k[$.d],t[0]=P.positionScreen,t[1]=Z.positionScreen,t[2]=da.positionScreen,t[3]=ea.positionScreen,!0===P.visible||!0===Z.visible||!0===da.visible||!0===ea.visible||Q.isIntersectionBox(C.setFromPoints(t)))if(U=0>(ea.positionScreen.x-P.positionScreen.x)*(Z.positionScreen.y-P.positionScreen.y)-(ea.positionScreen.y-P.positionScreen.y)*(Z.positionScreen.x-P.positionScreen.x)||0>(Z.positionScreen.x-da.positionScreen.x)*(ea.positionScreen.y-da.positionScreen.y)-(Z.positionScreen.y-da.positionScreen.y)*
(ea.positionScreen.x-da.positionScreen.x),ca===THREE.DoubleSide||U===(ca===THREE.FrontSide)){if(q===v){var Ja=new THREE.RenderableFace4;w.push(Ja);v++;q++;m=Ja}else m=w[q++];m.v1.copy(P);m.v2.copy(Z);m.v3.copy(da);m.v4.copy(ea)}else continue;else continue;m.normalModel.copy($.normal);!1===U&&(ca===THREE.BackSide||ca===THREE.DoubleSide)&&m.normalModel.negate();m.normalModel.applyMatrix3(K).normalize();m.normalModelView.copy(m.normalModel).applyMatrix3(S);m.centroidModel.copy($.centroid).applyMatrix4(J);
(ea.positionScreen.x-da.positionScreen.x),ca===THREE.DoubleSide||U===(ca===THREE.FrontSide)){if(q===v){var Ia=new THREE.RenderableFace4;w.push(Ia);v++;q++;m=Ia}else m=w[q++];m.v1.copy(P);m.v2.copy(Z);m.v3.copy(da);m.v4.copy(ea)}else continue;else continue;m.normalModel.copy($.normal);!1===U&&(ca===THREE.BackSide||ca===THREE.DoubleSide)&&m.normalModel.negate();m.normalModel.applyMatrix3(K).normalize();m.normalModelView.copy(m.normalModel).applyMatrix3(S);m.centroidModel.copy($.centroid).applyMatrix4(J);
da=$.vertexNormals;P=0;for(Z=da.length;P<Z;P++)ea=m.vertexNormalsModel[P],ea.copy(da[P]),!1===U&&(ca===THREE.BackSide||ca===THREE.DoubleSide)&&ea.negate(),ea.applyMatrix3(K).normalize(),m.vertexNormalsModelView[P].copy(ea).applyMatrix3(S);m.vertexNormalsLength=da.length;P=0;for(Z=pa.length;P<Z;P++)if(ea=pa[P][ba],void 0!==ea){ca=0;for(da=ea.length;ca<da;ca++)m.uvs[P][ca]=ea[ca]}m.color=$.color;m.material=Ga;aa.copy(m.centroidModel).applyProjection(M);m.z=aa.z;B.elements.push(m)}}}else if(fa instanceof
THREE.Line){x.multiplyMatrices(M,J);ba=fa.geometry.vertices;P=b();P.positionScreen.copy(ba[0]).applyMatrix4(x);Aa=fa.type===THREE.LinePieces?2:1;T=1;for($=ba.length;T<$;T++)P=b(),P.positionScreen.copy(ba[T]).applyMatrix4(x),0<(T+1)%Aa||(Z=k[j-2],V.copy(P.positionScreen),L.copy(Z.positionScreen),!0===d(V,L)&&(V.multiplyScalar(1/V.w),L.multiplyScalar(1/L.w),z===E?(pa=new THREE.RenderableLine,r.push(pa),E++,z++,y=pa):y=r[z++],y.v1.positionScreen.copy(V),y.v2.positionScreen.copy(L),y.z=Math.max(V.z,L.z),
y.material=fa.material,B.elements.push(y)))}g=0;for(n=B.sprites.length;g<n;g++)fa=B.sprites[g].object,J=fa.matrixWorld,fa instanceof THREE.Particle&&(A.set(J.elements[12],J.elements[13],J.elements[14],1),A.applyMatrix4(M),A.z/=A.w,0<A.z&&1>A.z&&(l===F?(U=new THREE.RenderableParticle,H.push(U),F++,l++,D=U):D=H[l++],D.object=fa,D.x=A.x/A.w,D.y=A.y/A.w,D.z=A.z,D.rotation=fa.rotation.z,D.scale.x=fa.scale.x*Math.abs(D.x-(A.x+h.projectionMatrix.elements[0])/(A.w+h.projectionMatrix.elements[12])),D.scale.y=
......@@ -152,15 +152,15 @@ THREE.Face4.prototype={constructor:THREE.Face4,clone:function(){var a=new THREE.
return a}};THREE.Geometry=function(){THREE.EventDispatcher.call(this);this.id=THREE.GeometryIdCount++;this.name="";this.vertices=[];this.colors=[];this.normals=[];this.faces=[];this.faceUvs=[[]];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1;this.dynamic=!0;this.buffersNeedUpdate=this.lineDistancesNeedUpdate=this.colorsNeedUpdate=this.tangentsNeedUpdate=
this.normalsNeedUpdate=this.uvsNeedUpdate=this.elementsNeedUpdate=this.verticesNeedUpdate=!1};
THREE.Geometry.prototype={constructor:THREE.Geometry,applyMatrix:function(a){for(var b=(new THREE.Matrix3).getInverse(a).transpose(),c=0,d=this.vertices.length;c<d;c++)this.vertices[c].applyMatrix4(a);c=0;for(d=this.faces.length;c<d;c++){var e=this.faces[c];e.normal.applyMatrix3(b).normalize();for(var f=0,g=e.vertexNormals.length;f<g;f++)e.vertexNormals[f].applyMatrix3(b).normalize();e.centroid.applyMatrix4(a)}},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.add(this.vertices[c.a]),c.centroid.add(this.vertices[c.b]),c.centroid.add(this.vertices[c.c]),c.centroid.divideScalar(3)):c instanceof THREE.Face4&&(c.centroid.add(this.vertices[c.a]),c.centroid.add(this.vertices[c.b]),c.centroid.add(this.vertices[c.c]),c.centroid.add(this.vertices[c.d]),c.centroid.divideScalar(4))},computeFaceNormals:function(){var a,b,c,d,e,f,g=new THREE.Vector3,h=new THREE.Vector3;a=0;for(b=this.faces.length;a<b;a++)c=
this.faces[a],d=this.vertices[c.a],e=this.vertices[c.b],f=this.vertices[c.c],g.subVectors(f,e),h.subVectors(d,e),g.cross(h),g.normalize(),c.normal.copy(g)},computeVertexNormals:function(a){var b,c,d,e;if(void 0===this.__tmpVertices){e=this.__tmpVertices=Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)e[b]=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?d.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]:d instanceof
THREE.Face4&&(d.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3])}else{e=this.__tmpVertices;b=0;for(c=this.vertices.length;b<c;b++)e[b].set(0,0,0)}if(a){var f,g,h,i=new THREE.Vector3,j=new THREE.Vector3,k=new THREE.Vector3,n=new THREE.Vector3,m=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?(a=this.vertices[d.a],f=this.vertices[d.b],g=this.vertices[d.c],i.subVectors(g,f),j.subVectors(a,f),i.cross(j),e[d.a].add(i),
e[d.b].add(i),e[d.c].add(i)):d instanceof THREE.Face4&&(a=this.vertices[d.a],f=this.vertices[d.b],g=this.vertices[d.c],h=this.vertices[d.d],k.subVectors(h,f),j.subVectors(a,f),k.cross(j),e[d.a].add(k),e[d.b].add(k),e[d.d].add(k),n.subVectors(h,g),m.subVectors(f,g),n.cross(m),e[d.b].add(n),e[d.c].add(n),e[d.d].add(n))}else{b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?(e[d.a].add(d.normal),e[d.b].add(d.normal),e[d.c].add(d.normal)):d instanceof THREE.Face4&&(e[d.a].add(d.normal),
e[d.b].add(d.normal),e[d.c].add(d.normal),e[d.d].add(d.normal))}b=0;for(c=this.vertices.length;b<c;b++)e[b].normalize();b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?(d.vertexNormals[0].copy(e[d.a]),d.vertexNormals[1].copy(e[d.b]),d.vertexNormals[2].copy(e[d.c])):d instanceof THREE.Face4&&(d.vertexNormals[0].copy(e[d.a]),d.vertexNormals[1].copy(e[d.b]),d.vertexNormals[2].copy(e[d.c]),d.vertexNormals[3].copy(e[d.d]))},computeMorphNormals:function(){var a,b,c,d,e;c=0;
for(d=this.faces.length;c<d;c++){e=this.faces[c];e.__originalFaceNormal?e.__originalFaceNormal.copy(e.normal):e.__originalFaceNormal=e.normal.clone();e.__originalVertexNormals||(e.__originalVertexNormals=[]);a=0;for(b=e.vertexNormals.length;a<b;a++)e.__originalVertexNormals[a]?e.__originalVertexNormals[a].copy(e.vertexNormals[a]):e.__originalVertexNormals[a]=e.vertexNormals[a].clone()}var f=new THREE.Geometry;f.faces=this.faces;a=0;for(b=this.morphTargets.length;a<b;a++){if(!this.morphNormals[a]){this.morphNormals[a]=
{};this.morphNormals[a].faceNormals=[];this.morphNormals[a].vertexNormals=[];var g=this.morphNormals[a].faceNormals,h=this.morphNormals[a].vertexNormals,i,j;c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],i=new THREE.Vector3,j=e instanceof THREE.Face3?{a:new THREE.Vector3,b:new THREE.Vector3,c:new THREE.Vector3}:{a:new THREE.Vector3,b:new THREE.Vector3,c:new THREE.Vector3,d:new THREE.Vector3},g.push(i),h.push(j)}g=this.morphNormals[a];f.vertices=this.morphTargets[a].vertices;f.computeFaceNormals();
f.computeVertexNormals();c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],i=g.faceNormals[c],j=g.vertexNormals[c],i.copy(e.normal),e instanceof THREE.Face3?(j.a.copy(e.vertexNormals[0]),j.b.copy(e.vertexNormals[1]),j.c.copy(e.vertexNormals[2])):(j.a.copy(e.vertexNormals[0]),j.b.copy(e.vertexNormals[1]),j.c.copy(e.vertexNormals[2]),j.d.copy(e.vertexNormals[3]))}c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],e.normal=e.__originalFaceNormal,e.vertexNormals=e.__originalVertexNormals},computeTangents:function(){function a(a,
b,c,d,e,f,l){h=a.vertices[b];i=a.vertices[c];j=a.vertices[d];k=g[e];n=g[f];m=g[l];s=i.x-h.x;u=j.x-h.x;p=i.y-h.y;q=j.y-h.y;w=i.z-h.z;v=j.z-h.z;y=n.x-k.x;z=m.x-k.x;r=n.y-k.y;E=m.y-k.y;D=1/(y*E-z*r);B.set((E*s-r*u)*D,(E*p-r*q)*D,(E*w-r*v)*D);N.set((y*u-z*s)*D,(y*q-z*p)*D,(y*v-z*w)*D);H[b].add(B);H[c].add(B);H[d].add(B);F[b].add(N);F[c].add(N);F[d].add(N)}var b,c,d,e,f,g,h,i,j,k,n,m,s,u,p,q,w,v,y,z,r,E,D,l,H=[],F=[],B=new THREE.Vector3,N=new THREE.Vector3,A=new THREE.Vector3,Q=new THREE.Vector3,C=new THREE.Vector3;
c.centroid.set(0,0,0),c instanceof THREE.Face3?(c.centroid.add(this.vertices[c.a]),c.centroid.add(this.vertices[c.b]),c.centroid.add(this.vertices[c.c]),c.centroid.divideScalar(3)):c instanceof THREE.Face4&&(c.centroid.add(this.vertices[c.a]),c.centroid.add(this.vertices[c.b]),c.centroid.add(this.vertices[c.c]),c.centroid.add(this.vertices[c.d]),c.centroid.divideScalar(4))},computeFaceNormals:function(){for(var a=new THREE.Vector3,b=new THREE.Vector3,c=0,d=this.faces.length;c<d;c++){var e=this.faces[c],
f=this.vertices[e.a],g=this.vertices[e.b];a.subVectors(this.vertices[e.c],g);b.subVectors(f,g);a.cross(b);a.normalize();e.normal.copy(a)}},computeVertexNormals:function(a){var b,c,d,e;if(void 0===this.__tmpVertices){e=this.__tmpVertices=Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)e[b]=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?d.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]:d instanceof THREE.Face4&&
(d.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3])}else{e=this.__tmpVertices;b=0;for(c=this.vertices.length;b<c;b++)e[b].set(0,0,0)}if(a){var f,g,h,i=new THREE.Vector3,j=new THREE.Vector3,k=new THREE.Vector3,n=new THREE.Vector3,m=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?(a=this.vertices[d.a],f=this.vertices[d.b],g=this.vertices[d.c],i.subVectors(g,f),j.subVectors(a,f),i.cross(j),e[d.a].add(i),e[d.b].add(i),
e[d.c].add(i)):d instanceof THREE.Face4&&(a=this.vertices[d.a],f=this.vertices[d.b],g=this.vertices[d.c],h=this.vertices[d.d],k.subVectors(h,f),j.subVectors(a,f),k.cross(j),e[d.a].add(k),e[d.b].add(k),e[d.d].add(k),n.subVectors(h,g),m.subVectors(f,g),n.cross(m),e[d.b].add(n),e[d.c].add(n),e[d.d].add(n))}else{b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?(e[d.a].add(d.normal),e[d.b].add(d.normal),e[d.c].add(d.normal)):d instanceof THREE.Face4&&(e[d.a].add(d.normal),e[d.b].add(d.normal),
e[d.c].add(d.normal),e[d.d].add(d.normal))}b=0;for(c=this.vertices.length;b<c;b++)e[b].normalize();b=0;for(c=this.faces.length;b<c;b++)d=this.faces[b],d instanceof THREE.Face3?(d.vertexNormals[0].copy(e[d.a]),d.vertexNormals[1].copy(e[d.b]),d.vertexNormals[2].copy(e[d.c])):d instanceof THREE.Face4&&(d.vertexNormals[0].copy(e[d.a]),d.vertexNormals[1].copy(e[d.b]),d.vertexNormals[2].copy(e[d.c]),d.vertexNormals[3].copy(e[d.d]))},computeMorphNormals:function(){var a,b,c,d,e;c=0;for(d=this.faces.length;c<
d;c++){e=this.faces[c];e.__originalFaceNormal?e.__originalFaceNormal.copy(e.normal):e.__originalFaceNormal=e.normal.clone();e.__originalVertexNormals||(e.__originalVertexNormals=[]);a=0;for(b=e.vertexNormals.length;a<b;a++)e.__originalVertexNormals[a]?e.__originalVertexNormals[a].copy(e.vertexNormals[a]):e.__originalVertexNormals[a]=e.vertexNormals[a].clone()}var f=new THREE.Geometry;f.faces=this.faces;a=0;for(b=this.morphTargets.length;a<b;a++){if(!this.morphNormals[a]){this.morphNormals[a]={};this.morphNormals[a].faceNormals=
[];this.morphNormals[a].vertexNormals=[];var g=this.morphNormals[a].faceNormals,h=this.morphNormals[a].vertexNormals,i,j;c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],i=new THREE.Vector3,j=e instanceof THREE.Face3?{a:new THREE.Vector3,b:new THREE.Vector3,c:new THREE.Vector3}:{a:new THREE.Vector3,b:new THREE.Vector3,c:new THREE.Vector3,d:new THREE.Vector3},g.push(i),h.push(j)}g=this.morphNormals[a];f.vertices=this.morphTargets[a].vertices;f.computeFaceNormals();f.computeVertexNormals();c=0;for(d=
this.faces.length;c<d;c++)e=this.faces[c],i=g.faceNormals[c],j=g.vertexNormals[c],i.copy(e.normal),e instanceof THREE.Face3?(j.a.copy(e.vertexNormals[0]),j.b.copy(e.vertexNormals[1]),j.c.copy(e.vertexNormals[2])):(j.a.copy(e.vertexNormals[0]),j.b.copy(e.vertexNormals[1]),j.c.copy(e.vertexNormals[2]),j.d.copy(e.vertexNormals[3]))}c=0;for(d=this.faces.length;c<d;c++)e=this.faces[c],e.normal=e.__originalFaceNormal,e.vertexNormals=e.__originalVertexNormals},computeTangents:function(){function a(a,b,c,
d,e,f,l){h=a.vertices[b];i=a.vertices[c];j=a.vertices[d];k=g[e];n=g[f];m=g[l];s=i.x-h.x;u=j.x-h.x;p=i.y-h.y;q=j.y-h.y;w=i.z-h.z;v=j.z-h.z;y=n.x-k.x;z=m.x-k.x;r=n.y-k.y;E=m.y-k.y;D=1/(y*E-z*r);B.set((E*s-r*u)*D,(E*p-r*q)*D,(E*w-r*v)*D);N.set((y*u-z*s)*D,(y*q-z*p)*D,(y*v-z*w)*D);H[b].add(B);H[c].add(B);H[d].add(B);F[b].add(N);F[c].add(N);F[d].add(N)}var b,c,d,e,f,g,h,i,j,k,n,m,s,u,p,q,w,v,y,z,r,E,D,l,H=[],F=[],B=new THREE.Vector3,N=new THREE.Vector3,A=new THREE.Vector3,Q=new THREE.Vector3,C=new THREE.Vector3;
b=0;for(c=this.vertices.length;b<c;b++)H[b]=new THREE.Vector3,F[b]=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)f=this.faces[b],g=this.faceVertexUvs[0][b],f instanceof THREE.Face3?a(this,f.a,f.b,f.c,0,1,2):f instanceof THREE.Face4&&(a(this,f.a,f.b,f.d,0,1,3),a(this,f.b,f.c,f.d,1,2,3));var G=["a","b","c","d"];b=0;for(c=this.faces.length;b<c;b++){f=this.faces[b];for(d=0;d<f.vertexNormals.length;d++)C.copy(f.vertexNormals[d]),e=f[G[d]],l=H[e],A.copy(l),A.sub(C.multiplyScalar(C.dot(l))).normalize(),
Q.crossVectors(f.vertexNormals[d],l),e=Q.dot(F[e]),e=0>e?-1:1,f.vertexTangents[d]=new THREE.Vector4(A.x,A.y,A.z,e)}this.hasTangents=!0},computeLineDistances:function(){for(var a=0,b=this.vertices,c=0,d=b.length;c<d;c++)0<c&&(a+=b[c].distanceTo(b[c-1])),this.lineDistances[c]=a},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new THREE.Box3);this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere);
this.boundingSphere.setFromCenterAndPoints(this.boundingSphere.center,this.vertices)},mergeVertices:function(){var a={},b=[],c=[],d,e=Math.pow(10,4),f,g,h,i,j;this.__tmpVertices=void 0;f=0;for(g=this.vertices.length;f<g;f++)d=this.vertices[f],d=[Math.round(d.x*e),Math.round(d.y*e),Math.round(d.z*e)].join("_"),void 0===a[d]?(a[d]=f,b.push(this.vertices[f]),c[f]=b.length-1):c[f]=c[a[d]];e=[];f=0;for(g=this.faces.length;f<g;f++)if(a=this.faces[f],a instanceof THREE.Face3){a.a=c[a.a];a.b=c[a.b];a.c=c[a.c];
......@@ -263,15 +263,15 @@ THREE.Sprite.prototype.clone=function(a){void 0===a&&(a=new THREE.Sprite(this.ma
THREE.Scene.prototype.__addObject=function(a){if(a instanceof THREE.Light)-1===this.__lights.indexOf(a)&&this.__lights.push(a),a.target&&void 0===a.target.parent&&this.add(a.target);else if(!(a instanceof THREE.Camera||a instanceof THREE.Bone)&&-1===this.__objects.indexOf(a)){this.__objects.push(a);this.__objectsAdded.push(a);var b=this.__objectsRemoved.indexOf(a);-1!==b&&this.__objectsRemoved.splice(b,1)}for(b=0;b<a.children.length;b++)this.__addObject(a.children[b])};
THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){var b=this.__lights.indexOf(a);-1!==b&&this.__lights.splice(b,1)}else a instanceof THREE.Camera||(b=this.__objects.indexOf(a),-1!==b&&(this.__objects.splice(b,1),this.__objectsRemoved.push(a),b=this.__objectsAdded.indexOf(a),-1!==b&&this.__objectsAdded.splice(b,1)));for(b=0;b<a.children.length;b++)this.__removeObject(a.children[b])};THREE.Fog=function(a,b,c){this.name="";this.color=new THREE.Color(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3};THREE.Fog.prototype.clone=function(){return new THREE.Fog(this.color.getHex(),this.near,this.far)};THREE.FogExp2=function(a,b){this.name="";this.color=new THREE.Color(a);this.density=void 0!==b?b:2.5E-4};THREE.FogExp2.prototype.clone=function(){return new THREE.FogExp2(this.color.getHex(),this.density)};THREE.CanvasRenderer=function(a){function b(a){E!==a&&(E=y.globalAlpha=a)}function c(a){D!==a&&(a===THREE.NormalBlending?y.globalCompositeOperation="source-over":a===THREE.AdditiveBlending?y.globalCompositeOperation="lighter":a===THREE.SubtractiveBlending&&(y.globalCompositeOperation="darker"),D=a)}function d(a){F!==a&&(F=y.lineWidth=a)}function e(a){B!==a&&(B=y.lineCap=a)}function f(a){N!==a&&(N=y.lineJoin=a)}function g(a){l!==a&&(l=y.strokeStyle=a)}function h(a){H!==a&&(H=y.fillStyle=a)}function i(a,
b){if(A!==a||Q!==b)y.setLineDash([a,b]),A=a,Q=b}console.log("THREE.CanvasRenderer",THREE.REVISION);var a=a||{},j=this,k,n,m,s=new THREE.Projector,u=void 0!==a.canvas?a.canvas:document.createElement("canvas"),p,q,w,v,y=u.getContext("2d"),z=new THREE.Color(0),r=0,E=1,D=0,l=null,H=null,F=null,B=null,N=null,A=null,Q=0,C,G,t,I,M=new THREE.RenderableVertex,J=new THREE.RenderableVertex,x,K,S,aa,Y,V,L,ka,qa,ra,X,U,T=new THREE.Color,$=new THREE.Color,ba=new THREE.Color,P=new THREE.Color,Z=new THREE.Color,
ca=new THREE.Color,da=new THREE.Color,fa=new THREE.Color,pa={},Aa={},ea,sa,la,ya,Ga,Ja,La,Ma,Na,Oa,Ha=new THREE.Box2,ia=new THREE.Box2,ma=new THREE.Box2,Ba=!1,oa=new THREE.Color,Ea=new THREE.Color,Ca=new THREE.Color,ga=new THREE.Vector3,xa,Da,Fa,na,za,ha,O=16;xa=document.createElement("canvas");xa.width=xa.height=2;Da=xa.getContext("2d");Da.fillStyle="rgba(0,0,0,1)";Da.fillRect(0,0,2,2);Fa=Da.getImageData(0,0,2,2);na=Fa.data;za=document.createElement("canvas");za.width=za.height=O;ha=za.getContext("2d");
ca=new THREE.Color,da=new THREE.Color,fa=new THREE.Color,pa={},Aa={},ea,sa,la,ya,Ga,Ia,La,Ma,Na,Oa,Ha=new THREE.Box2,ia=new THREE.Box2,ma=new THREE.Box2,Ba=!1,oa=new THREE.Color,Ea=new THREE.Color,Ca=new THREE.Color,ga=new THREE.Vector3,xa,Da,Fa,na,za,ha,O=16;xa=document.createElement("canvas");xa.width=xa.height=2;Da=xa.getContext("2d");Da.fillStyle="rgba(0,0,0,1)";Da.fillRect(0,0,2,2);Fa=Da.getImageData(0,0,2,2);na=Fa.data;za=document.createElement("canvas");za.width=za.height=O;ha=za.getContext("2d");
ha.translate(-O/2,-O/2);ha.scale(O,O);O--;void 0===y.setLineDash&&(y.setLineDash=void 0!==y.mozDash?function(a){y.mozDash=null!==a[0]?a:null}:function(){});this.domElement=u;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==window.devicePixelRatio?window.devicePixelRatio:1;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.supportsVertexTextures=function(){};this.setFaceCulling=function(){};this.setSize=function(a,b){p=a*this.devicePixelRatio;
q=b*this.devicePixelRatio;w=Math.floor(p/2);v=Math.floor(q/2);u.width=p;u.height=q;u.style.width=a+"px";u.style.height=b+"px";Ha.set(new THREE.Vector2(-w,-v),new THREE.Vector2(w,v));ia.set(new THREE.Vector2(-w,-v),new THREE.Vector2(w,v));E=1;D=0;N=B=F=H=l=null};this.setClearColor=function(a,b){z.copy(a);r=void 0!==b?b:1;ia.set(new THREE.Vector2(-w,-v),new THREE.Vector2(w,v))};this.setClearColorHex=function(a,b){z.setHex(a);r=void 0!==b?b:1;ia.set(new THREE.Vector2(-w,-v),new THREE.Vector2(w,v))};
this.getMaxAnisotropy=function(){return 0};this.clear=function(){y.setTransform(1,0,0,-1,w,v);!1===ia.empty()&&(ia.intersect(Ha),ia.expandByScalar(2),1>r&&y.clearRect(ia.min.x|0,ia.min.y|0,ia.max.x-ia.min.x|0,ia.max.y-ia.min.y|0),0<r&&(c(THREE.NormalBlending),b(1),h("rgba("+Math.floor(255*z.r)+","+Math.floor(255*z.g)+","+Math.floor(255*z.b)+","+r+")"),y.fillRect(ia.min.x|0,ia.min.y|0,ia.max.x-ia.min.x|0,ia.max.y-ia.min.y|0)),ia.makeEmpty())};this.render=function(a,l){function p(a,b,c){for(var d=0,
e=m.length;d<e;d++){var f=m[d];fa.copy(f.color);if(f instanceof THREE.DirectionalLight){var g=ga.getPositionFromMatrix(f.matrixWorld).normalize(),i=b.dot(g);0>=i||(i*=f.intensity,c.add(fa.multiplyScalar(i)))}else f instanceof THREE.PointLight&&(g=ga.getPositionFromMatrix(f.matrixWorld),i=b.dot(ga.subVectors(g,a).normalize()),0>=i||(i*=0==f.distance?1:1-Math.min(a.distanceTo(g)/f.distance,1),0!=i&&(i*=f.intensity,c.add(fa.multiplyScalar(i)))))}}function q(a,d,e,f,g,i,h,k){j.info.render.vertices+=3;
j.info.render.faces++;b(k.opacity);c(k.blending);x=a.positionScreen.x;K=a.positionScreen.y;S=d.positionScreen.x;aa=d.positionScreen.y;Y=e.positionScreen.x;V=e.positionScreen.y;r(x,K,S,aa,Y,V);(k instanceof THREE.MeshLambertMaterial||k instanceof THREE.MeshPhongMaterial)&&null===k.map?(ca.copy(k.color),da.copy(k.emissive),k.vertexColors===THREE.FaceColors&&ca.multiply(h.color),!0===Ba?!1===k.wireframe&&k.shading==THREE.SmoothShading&&3==h.vertexNormalsLength?($.copy(oa),ba.copy(oa),P.copy(oa),p(h.v1.positionWorld,
h.vertexNormalsModel[0],$),p(h.v2.positionWorld,h.vertexNormalsModel[1],ba),p(h.v3.positionWorld,h.vertexNormalsModel[2],P),$.multiply(ca).add(da),ba.multiply(ca).add(da),P.multiply(ca).add(da),Z.addColors(ba,P).multiplyScalar(0.5),la=E($,ba,P,Z),D(x,K,S,aa,Y,V,0,0,1,0,0,1,la)):(T.copy(oa),p(h.centroidModel,h.normalModel,T),T.multiply(ca).add(da),!0===k.wireframe?z(T,k.wireframeLinewidth,k.wireframeLinecap,k.wireframeLinejoin):A(T)):!0===k.wireframe?z(k.color,k.wireframeLinewidth,k.wireframeLinecap,
k.wireframeLinejoin):A(k.color)):k instanceof THREE.MeshBasicMaterial||k instanceof THREE.MeshLambertMaterial||k instanceof THREE.MeshPhongMaterial?null!==k.map?k.map.mapping instanceof THREE.UVMapping&&(ya=h.uvs[0],B(x,K,S,aa,Y,V,ya[f].x,ya[f].y,ya[g].x,ya[g].y,ya[i].x,ya[i].y,k.map)):null!==k.envMap?k.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(ga.copy(h.vertexNormalsModelView[f]),Ga=0.5*ga.x+0.5,Ja=0.5*ga.y+0.5,ga.copy(h.vertexNormalsModelView[g]),La=0.5*ga.x+0.5,Ma=0.5*ga.y+0.5,
ga.copy(h.vertexNormalsModelView[i]),Na=0.5*ga.x+0.5,Oa=0.5*ga.y+0.5,B(x,K,S,aa,Y,V,Ga,Ja,La,Ma,Na,Oa,k.envMap)):(T.copy(k.color),k.vertexColors===THREE.FaceColors&&T.multiply(h.color),!0===k.wireframe?z(T,k.wireframeLinewidth,k.wireframeLinecap,k.wireframeLinejoin):A(T)):k instanceof THREE.MeshDepthMaterial?(ea=l.near,sa=l.far,g=1-H(a.positionScreen.z*a.positionScreen.w,ea,sa),$.setRGB(g,g,g),g=1-H(d.positionScreen.z*d.positionScreen.w,ea,sa),ba.setRGB(g,g,g),g=1-H(e.positionScreen.z*e.positionScreen.w,
k.wireframeLinejoin):A(k.color)):k instanceof THREE.MeshBasicMaterial||k instanceof THREE.MeshLambertMaterial||k instanceof THREE.MeshPhongMaterial?null!==k.map?k.map.mapping instanceof THREE.UVMapping&&(ya=h.uvs[0],B(x,K,S,aa,Y,V,ya[f].x,ya[f].y,ya[g].x,ya[g].y,ya[i].x,ya[i].y,k.map)):null!==k.envMap?k.envMap.mapping instanceof THREE.SphericalReflectionMapping&&(ga.copy(h.vertexNormalsModelView[f]),Ga=0.5*ga.x+0.5,Ia=0.5*ga.y+0.5,ga.copy(h.vertexNormalsModelView[g]),La=0.5*ga.x+0.5,Ma=0.5*ga.y+0.5,
ga.copy(h.vertexNormalsModelView[i]),Na=0.5*ga.x+0.5,Oa=0.5*ga.y+0.5,B(x,K,S,aa,Y,V,Ga,Ia,La,Ma,Na,Oa,k.envMap)):(T.copy(k.color),k.vertexColors===THREE.FaceColors&&T.multiply(h.color),!0===k.wireframe?z(T,k.wireframeLinewidth,k.wireframeLinecap,k.wireframeLinejoin):A(T)):k instanceof THREE.MeshDepthMaterial?(ea=l.near,sa=l.far,g=1-H(a.positionScreen.z*a.positionScreen.w,ea,sa),$.setRGB(g,g,g),g=1-H(d.positionScreen.z*d.positionScreen.w,ea,sa),ba.setRGB(g,g,g),g=1-H(e.positionScreen.z*e.positionScreen.w,
ea,sa),P.setRGB(g,g,g),Z.addColors(ba,P).multiplyScalar(0.5),la=E($,ba,P,Z),D(x,K,S,aa,Y,V,0,0,1,0,0,1,la)):k instanceof THREE.MeshNormalMaterial&&(k.shading==THREE.FlatShading?(d=h.normalModelView,T.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),!0===k.wireframe?z(T,k.wireframeLinewidth,k.wireframeLinecap,k.wireframeLinejoin):A(T)):k.shading==THREE.SmoothShading&&(d=h.vertexNormalsModelView[f],$.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),d=h.vertexNormalsModelView[g],ba.setRGB(d.x,
d.y,d.z).multiplyScalar(0.5).addScalar(0.5),d=h.vertexNormalsModelView[i],P.setRGB(d.x,d.y,d.z).multiplyScalar(0.5).addScalar(0.5),Z.addColors(ba,P).multiplyScalar(0.5),la=E($,ba,P,Z),D(x,K,S,aa,Y,V,0,0,1,0,0,1,la)))}function r(a,b,c,d,e,f){y.beginPath();y.moveTo(a,b);y.lineTo(c,d);y.lineTo(e,f);y.closePath()}function u(a,b,c,d,e,f,g,i){y.beginPath();y.moveTo(a,b);y.lineTo(c,d);y.lineTo(e,f);y.lineTo(g,i);y.closePath()}function z(a,b,c,i){d(b);e(c);f(i);g(a.getStyle());y.stroke();ma.expandByScalar(2*
b)}function A(a){h(a.getStyle());y.fill()}function B(a,b,c,d,e,f,g,i,j,k,l,P,m){if(!(m instanceof THREE.DataTexture||void 0===m.image||0==m.image.width)){if(!0===m.needsUpdate){var n=m.wrapS==THREE.RepeatWrapping,p=m.wrapT==THREE.RepeatWrapping;pa[m.id]=y.createPattern(m.image,!0===n&&!0===p?"repeat":!0===n&&!1===p?"repeat-x":!1===n&&!0===p?"repeat-y":"no-repeat");m.needsUpdate=!1}void 0===pa[m.id]?h("rgba(0,0,0,1)"):h(pa[m.id]);var n=m.offset.x/m.repeat.x,p=m.offset.y/m.repeat.y,s=m.image.width*
......@@ -279,13 +279,13 @@ m.repeat.x,L=m.image.height*m.repeat.y,g=(g+n)*s,i=(1-i+p)*L,c=c-a,d=d-b,e=e-a,f
f)*n,c=(j*e-l*c)*n,d=(j*f-l*d)*n,a=a-m*g-c*i,g=b-k*g-d*i,y.save(),y.transform(m,k,c,d,a,g),y.fill(),y.restore())}}function D(a,b,c,d,e,f,g,i,h,j,k,l,P){var m,n;m=P.width-1;n=P.height-1;g*=m;i*=n;c-=a;d-=b;e-=a;f-=b;h=h*m-g;j=j*n-i;k=k*m-g;l=l*n-i;n=1/(h*l-k*j);m=(l*c-j*e)*n;j=(l*d-j*f)*n;c=(h*e-k*c)*n;d=(h*f-k*d)*n;a=a-m*g-c*i;b=b-j*g-d*i;y.save();y.transform(m,j,c,d,a,b);y.clip();y.drawImage(P,0,0);y.restore()}function E(a,b,c,d){na[0]=255*a.r|0;na[1]=255*a.g|0;na[2]=255*a.b|0;na[4]=255*b.r|0;na[5]=
255*b.g|0;na[6]=255*b.b|0;na[8]=255*c.r|0;na[9]=255*c.g|0;na[10]=255*c.b|0;na[12]=255*d.r|0;na[13]=255*d.g|0;na[14]=255*d.b|0;Da.putImageData(Fa,0,0);ha.drawImage(xa,0,0);return za}function H(a,b,c){a=(a-b)/(c-b);return a*a*(3-2*a)}function F(a,b){var c=b.x-a.x,d=b.y-a.y,e=c*c+d*d;0!==e&&(e=1/Math.sqrt(e),c*=e,d*=e,b.x+=c,b.y+=d,a.x-=c,a.y-=d)}if(!1===l instanceof THREE.Camera)console.error("THREE.CanvasRenderer.render: camera is not an instance of THREE.Camera.");else{!0===this.autoClear&&this.clear();
y.setTransform(1,0,0,-1,w,v);j.info.render.vertices=0;j.info.render.faces=0;k=s.projectScene(a,l,this.sortObjects,this.sortElements);n=k.elements;m=k.lights;Ba=0<m.length;if(!0===Ba){oa.setRGB(0,0,0);Ea.setRGB(0,0,0);Ca.setRGB(0,0,0);for(var N=0,Q=m.length;N<Q;N++){var R=m[N],W=R.color;R instanceof THREE.AmbientLight?oa.add(W):R instanceof THREE.DirectionalLight?Ea.add(W):R instanceof THREE.PointLight&&Ca.add(W)}}N=0;for(Q=n.length;N<Q;N++){var O=n[N],R=O.material;if(!(void 0===R||!1===R.visible)){ma.makeEmpty();
if(O instanceof THREE.RenderableParticle){C=O;C.x*=w;C.y*=v;var W=C,ja=O;b(R.opacity);c(R.blending);var ta=void 0,ua=void 0,va=void 0,wa=void 0,Ia=O=void 0,Ka=void 0;R instanceof THREE.ParticleBasicMaterial?null===R.map?(va=ja.object.scale.x,wa=ja.object.scale.y,va*=ja.scale.x*w,wa*=ja.scale.y*v,ma.min.set(W.x-va,W.y-wa),ma.max.set(W.x+va,W.y+wa),!1!==Ha.isIntersectionBox(ma)&&(h(R.color.getStyle()),y.save(),y.translate(W.x,W.y),y.rotate(-ja.rotation),y.scale(va,wa),y.fillRect(-1,-1,2,2),y.restore())):
(O=R.map.image,Ia=O.width>>1,Ka=O.height>>1,va=ja.scale.x*w,wa=ja.scale.y*v,ta=va*Ia,ua=wa*Ka,ma.min.set(W.x-ta,W.y-ua),ma.max.set(W.x+ta,W.y+ua),!1!==Ha.isIntersectionBox(ma)&&(y.save(),y.translate(W.x,W.y),y.rotate(-ja.rotation),y.scale(va,-wa),y.translate(-Ia,-Ka),y.drawImage(O,0,0),y.restore())):R instanceof THREE.ParticleCanvasMaterial&&(ta=ja.scale.x*w,ua=ja.scale.y*v,ma.min.set(W.x-ta,W.y-ua),ma.max.set(W.x+ta,W.y+ua),!1!==Ha.isIntersectionBox(ma)&&(g(R.color.getStyle()),h(R.color.getStyle()),
if(O instanceof THREE.RenderableParticle){C=O;C.x*=w;C.y*=v;var W=C,ja=O;b(R.opacity);c(R.blending);var ta=void 0,ua=void 0,va=void 0,wa=void 0,Ja=O=void 0,Ka=void 0;R instanceof THREE.ParticleBasicMaterial?null===R.map?(va=ja.object.scale.x,wa=ja.object.scale.y,va*=ja.scale.x*w,wa*=ja.scale.y*v,ma.min.set(W.x-va,W.y-wa),ma.max.set(W.x+va,W.y+wa),!1!==Ha.isIntersectionBox(ma)&&(h(R.color.getStyle()),y.save(),y.translate(W.x,W.y),y.rotate(-ja.rotation),y.scale(va,wa),y.fillRect(-1,-1,2,2),y.restore())):
(O=R.map.image,Ja=O.width>>1,Ka=O.height>>1,va=ja.scale.x*w,wa=ja.scale.y*v,ta=va*Ja,ua=wa*Ka,ma.min.set(W.x-ta,W.y-ua),ma.max.set(W.x+ta,W.y+ua),!1!==Ha.isIntersectionBox(ma)&&(y.save(),y.translate(W.x,W.y),y.rotate(-ja.rotation),y.scale(va,-wa),y.translate(-Ja,-Ka),y.drawImage(O,0,0),y.restore())):R instanceof THREE.ParticleCanvasMaterial&&(ta=ja.scale.x*w,ua=ja.scale.y*v,ma.min.set(W.x-ta,W.y-ua),ma.max.set(W.x+ta,W.y+ua),!1!==Ha.isIntersectionBox(ma)&&(g(R.color.getStyle()),h(R.color.getStyle()),
y.save(),y.translate(W.x,W.y),y.rotate(-ja.rotation),y.scale(ta,ua),R.program(y),y.restore()))}else if(O instanceof THREE.RenderableLine)C=O.v1,G=O.v2,C.positionScreen.x*=w,C.positionScreen.y*=v,G.positionScreen.x*=w,G.positionScreen.y*=v,ma.setFromPoints([C.positionScreen,G.positionScreen]),!0===Ha.isIntersectionBox(ma)&&(W=C,ja=G,b(R.opacity),c(R.blending),y.beginPath(),y.moveTo(W.positionScreen.x,W.positionScreen.y),y.lineTo(ja.positionScreen.x,ja.positionScreen.y),R instanceof THREE.LineBasicMaterial?
(d(R.linewidth),e(R.linecap),f(R.linejoin),g(R.color.getStyle()),i(null,null),y.stroke(),ma.expandByScalar(2*R.linewidth)):R instanceof THREE.LineDashedMaterial&&(d(R.linewidth),e(R.linecap),f(R.linejoin),g(R.color.getStyle()),i(R.dashSize,R.gapSize),y.stroke(),ma.expandByScalar(2*R.linewidth)));else if(O instanceof THREE.RenderableFace3){C=O.v1;G=O.v2;t=O.v3;if(-1>C.positionScreen.z||1<C.positionScreen.z)continue;if(-1>G.positionScreen.z||1<G.positionScreen.z)continue;if(-1>t.positionScreen.z||1<
t.positionScreen.z)continue;C.positionScreen.x*=w;C.positionScreen.y*=v;G.positionScreen.x*=w;G.positionScreen.y*=v;t.positionScreen.x*=w;t.positionScreen.y*=v;!0===R.overdraw&&(F(C.positionScreen,G.positionScreen),F(G.positionScreen,t.positionScreen),F(t.positionScreen,C.positionScreen));ma.setFromPoints([C.positionScreen,G.positionScreen,t.positionScreen]);q(C,G,t,0,1,2,O,R,a)}else if(O instanceof THREE.RenderableFace4){C=O.v1;G=O.v2;t=O.v3;I=O.v4;if(-1>C.positionScreen.z||1<C.positionScreen.z)continue;
t.positionScreen.z)continue;C.positionScreen.x*=w;C.positionScreen.y*=v;G.positionScreen.x*=w;G.positionScreen.y*=v;t.positionScreen.x*=w;t.positionScreen.y*=v;!0===R.overdraw&&(F(C.positionScreen,G.positionScreen),F(G.positionScreen,t.positionScreen),F(t.positionScreen,C.positionScreen));ma.setFromPoints([C.positionScreen,G.positionScreen,t.positionScreen]);q(C,G,t,0,1,2,O,R)}else if(O instanceof THREE.RenderableFace4){C=O.v1;G=O.v2;t=O.v3;I=O.v4;if(-1>C.positionScreen.z||1<C.positionScreen.z)continue;
if(-1>G.positionScreen.z||1<G.positionScreen.z)continue;if(-1>t.positionScreen.z||1<t.positionScreen.z)continue;if(-1>I.positionScreen.z||1<I.positionScreen.z)continue;C.positionScreen.x*=w;C.positionScreen.y*=v;G.positionScreen.x*=w;G.positionScreen.y*=v;t.positionScreen.x*=w;t.positionScreen.y*=v;I.positionScreen.x*=w;I.positionScreen.y*=v;M.positionScreen.copy(G.positionScreen);J.positionScreen.copy(I.positionScreen);!0===R.overdraw&&(F(C.positionScreen,G.positionScreen),F(G.positionScreen,I.positionScreen),
F(I.positionScreen,C.positionScreen),F(t.positionScreen,M.positionScreen),F(t.positionScreen,J.positionScreen));ma.setFromPoints([C.positionScreen,G.positionScreen,t.positionScreen,I.positionScreen]);W=C;ja=G;ta=t;ua=I;va=M;wa=J;Ia=a;j.info.render.vertices+=4;j.info.render.faces++;b(R.opacity);c(R.blending);void 0!==R.map&&null!==R.map||void 0!==R.envMap&&null!==R.envMap?(q(W,ja,ua,0,1,3,O,R,Ia),q(va,ta,wa,1,2,3,O,R,Ia)):(x=W.positionScreen.x,K=W.positionScreen.y,S=ja.positionScreen.x,aa=ja.positionScreen.y,
F(I.positionScreen,C.positionScreen),F(t.positionScreen,M.positionScreen),F(t.positionScreen,J.positionScreen));ma.setFromPoints([C.positionScreen,G.positionScreen,t.positionScreen,I.positionScreen]);W=C;ja=G;ta=t;ua=I;va=M;wa=J;j.info.render.vertices+=4;j.info.render.faces++;b(R.opacity);c(R.blending);void 0!==R.map&&null!==R.map||void 0!==R.envMap&&null!==R.envMap?(q(W,ja,ua,0,1,3,O,R),q(va,ta,wa,1,2,3,O,R)):(x=W.positionScreen.x,K=W.positionScreen.y,S=ja.positionScreen.x,aa=ja.positionScreen.y,
Y=ta.positionScreen.x,V=ta.positionScreen.y,L=ua.positionScreen.x,ka=ua.positionScreen.y,qa=va.positionScreen.x,ra=va.positionScreen.y,X=wa.positionScreen.x,U=wa.positionScreen.y,R instanceof THREE.MeshLambertMaterial||R instanceof THREE.MeshPhongMaterial?(ca.copy(R.color),da.copy(R.emissive),R.vertexColors===THREE.FaceColors&&ca.multiply(O.color),!0===Ba?!1===R.wireframe&&R.shading==THREE.SmoothShading&&4==O.vertexNormalsLength?($.copy(oa),ba.copy(oa),P.copy(oa),Z.copy(oa),p(O.v1.positionWorld,O.vertexNormalsModel[0],
$),p(O.v2.positionWorld,O.vertexNormalsModel[1],ba),p(O.v4.positionWorld,O.vertexNormalsModel[3],P),p(O.v3.positionWorld,O.vertexNormalsModel[2],Z),$.multiply(ca).add(da),ba.multiply(ca).add(da),P.multiply(ca).add(da),Z.multiply(ca).add(da),la=E($,ba,P,Z),r(x,K,S,aa,L,ka),D(x,K,S,aa,L,ka,0,0,1,0,0,1,la),r(qa,ra,Y,V,X,U),D(qa,ra,Y,V,X,U,1,0,1,1,0,1,la)):(T.copy(oa),p(O.centroidModel,O.normalModel,T),T.multiply(ca).add(da),u(x,K,S,aa,Y,V,L,ka),!0===R.wireframe?z(T,R.wireframeLinewidth,R.wireframeLinecap,
R.wireframeLinejoin):A(T)):(T.addColors(ca,da),u(x,K,S,aa,Y,V,L,ka),!0===R.wireframe?z(T,R.wireframeLinewidth,R.wireframeLinecap,R.wireframeLinejoin):A(T))):R instanceof THREE.MeshBasicMaterial?(T.copy(R.color),R.vertexColors===THREE.FaceColors&&T.multiply(O.color),u(x,K,S,aa,Y,V,L,ka),!0===R.wireframe?z(T,R.wireframeLinewidth,R.wireframeLinecap,R.wireframeLinejoin):A(T)):R instanceof THREE.MeshNormalMaterial?(W=void 0,R.shading==THREE.FlatShading?(W=O.normalModelView,T.setRGB(W.x,W.y,W.z).multiplyScalar(0.5).addScalar(0.5),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册