diff --git a/build/Three.js b/build/Three.js index 6ceac495..d5301c5a 100644 --- a/build/Three.js +++ b/build/Three.js @@ -424,7 +424,7 @@ THREE.TextPath.prototype.toShapes=function(){for(var b=THREE.FontUtils.drawText( THREE.AnimationHandler=function(){var b=[],c={},e={update:function(c){for(var e=0;e=0?b:b+m;c=this.verticalAngleMap.srcRange; b=this.verticalAngleMap.dstRange;c=THREE.Math.mapLinear(this.phi,c[0],c[1],b[0],b[1]);var f=b[1]-b[0];this.phi=e((c-b[0])/f)*f+b[0];c=this.horizontalAngleMap.srcRange;b=this.horizontalAngleMap.dstRange;c=THREE.Math.mapLinear(this.theta,c[0],c[1],b[0],b[1]);f=b[1]-b[0];this.theta=e((c-b[0])/f)*f+b[0];b=this.target.position;b.x=100*Math.sin(this.phi)*Math.cos(this.theta);b.y=100*Math.cos(this.phi);b.z=100*Math.sin(this.phi)*Math.sin(this.theta);this.object.lookAt(this.target.position)};this.onMouseMove= -function(b){this.domElement===document?(this.mouseX=b.pageX-this.viewHalfX,this.mouseY=b.pageY-this.viewHalfY):(this.mouseX=b.pageX-this.domElement.offsetLeft-this.viewHalfX,this.mouseY=b.pageY-this.domElement.offsetTop-this.viewHalfY)};this.init=function(){this.spline=new THREE.Spline;this.spline.initFromArray(this.waypoints);this.useConstantSpeed&&this.spline.reparametrizeByArcLength(this.resamplingCoef);if(this.createDebugDummy){var b=new THREE.MeshLambertMaterial({color:30719}),e=new THREE.MeshLambertMaterial({color:65280}), -c=new THREE.CubeGeometry(10,10,20),m=new THREE.CubeGeometry(2,2,10);this.animationParent=new THREE.Mesh(c,b);b=new THREE.Mesh(m,e);b.position.set(0,10,0);this.animation=h(this.animationParent,this.spline,this.id,this.duration);this.animationParent.add(this.object);this.animationParent.add(this.target);this.animationParent.add(b)}else this.animation=h(this.animationParent,this.spline,this.id,this.duration),this.animationParent.add(this.target),this.animationParent.add(this.object);if(this.createDebugPath){var b= -this.debugPath,e=this.spline,c=k(e,10),m=k(e,10),n=new THREE.LineBasicMaterial({color:16711680,linewidth:3});lineObj=new THREE.Line(c,n);particleObj=new THREE.ParticleSystem(m,new THREE.ParticleBasicMaterial({color:16755200,size:3}));lineObj.scale.set(1,1,1);b.add(lineObj);particleObj.scale.set(1,1,1);b.add(particleObj);m=new THREE.SphereGeometry(1,16,8);n=new THREE.MeshBasicMaterial({color:65280});for(i=0;i0){var e=this.getContainerDimensions(),c=e.size[0]/2,m=e.size[1]/2;this.moveState.yawLeft=-(b.pageX-e.offset[0]-c)/c;this.moveState.pitchDown=(b.pageY-e.offset[1]-m)/m;this.updateRotationVector()}};this.mouseup=function(b){b.preventDefault();b.stopPropagation();if(this.dragToLook)this.mouseStatus--,this.moveState.yawLeft=this.moveState.pitchDown=0;else switch(b.button){case 0:this.moveForward= -!1;break;case 2:this.moveBackward=!1}this.updateRotationVector()};this.update=function(b){var e=b*this.movementSpeed;b*=this.rollSpeed;this.object.translateX(this.moveVector.x*e);this.object.translateY(this.moveVector.y*e);this.object.translateZ(this.moveVector.z*e);this.tmpQuaternion.set(this.rotationVector.x*b,this.rotationVector.y*b,this.rotationVector.z*b,1).normalize();this.object.quaternion.multiplySelf(this.tmpQuaternion);this.object.matrix.setPosition(this.object.position);this.object.matrix.setRotationFromQuaternion(this.object.quaternion); +!0;break;case 2:this.object.moveBackward=!0}};this.mousemove=function(b){if(!this.dragToLook||this.mouseStatus>0){var c=this.getContainerDimensions(),e=c.size[0]/2,m=c.size[1]/2;this.moveState.yawLeft=-(b.pageX-c.offset[0]-e)/e;this.moveState.pitchDown=(b.pageY-c.offset[1]-m)/m;this.updateRotationVector()}};this.mouseup=function(b){b.preventDefault();b.stopPropagation();if(this.dragToLook)this.mouseStatus--,this.moveState.yawLeft=this.moveState.pitchDown=0;else switch(b.button){case 0:this.moveForward= +!1;break;case 2:this.moveBackward=!1}this.updateRotationVector()};this.update=function(b){var c=b*this.movementSpeed;b*=this.rollSpeed;this.object.translateX(this.moveVector.x*c);this.object.translateY(this.moveVector.y*c);this.object.translateZ(this.moveVector.z*c);this.tmpQuaternion.set(this.rotationVector.x*b,this.rotationVector.y*b,this.rotationVector.z*b,1).normalize();this.object.quaternion.multiplySelf(this.tmpQuaternion);this.object.matrix.setPosition(this.object.position);this.object.matrix.setRotationFromQuaternion(this.object.quaternion); this.object.matrixWorldNeedsUpdate=!0};this.updateMovementVector=function(){var b=this.moveState.forward||this.autoForward&&!this.moveState.back?1:0;this.moveVector.x=-this.moveState.left+this.moveState.right;this.moveVector.y=-this.moveState.down+this.moveState.up;this.moveVector.z=-b+this.moveState.back};this.updateRotationVector=function(){this.rotationVector.x=-this.moveState.pitchDown+this.moveState.pitchUp;this.rotationVector.y=-this.moveState.yawRight+this.moveState.yawLeft;this.rotationVector.z= -this.moveState.rollRight+this.moveState.rollLeft};this.getContainerDimensions=function(){return this.domElement!=document?{size:[this.domElement.offsetWidth,this.domElement.offsetHeight],offset:[this.domElement.offsetLeft,this.domElement.offsetTop]}:{size:[window.innerWidth,window.innerHeight],offset:[0,0]}};this.domElement.addEventListener("mousemove",e(this,this.mousemove),!1);this.domElement.addEventListener("mousedown",e(this,this.mousedown),!1);this.domElement.addEventListener("mouseup",e(this, this.mouseup),!1);this.domElement.addEventListener("keydown",e(this,this.keydown),!1);this.domElement.addEventListener("keyup",e(this,this.keyup),!1);this.updateMovementVector();this.updateRotationVector()}; @@ -479,16 +479,16 @@ this.object.matrix.n24=this.object.position.y;this.object.matrix.n34=this.object b;this.object.position.y-=this.object.matrix.n23*b;this.object.position.z-=this.object.matrix.n33*b};this.rotateHorizontally=function(b){e.set(this.object.matrix.n11,this.object.matrix.n21,this.object.matrix.n31);e.multiplyScalar(b);this.forward.subSelf(e);this.forward.normalize()};this.rotateVertically=function(b){f.set(this.object.matrix.n12,this.object.matrix.n22,this.object.matrix.n32);f.multiplyScalar(b);this.forward.addSelf(f);this.forward.normalize()};this.domElement.addEventListener("contextmenu", function(b){b.preventDefault()},!1);this.domElement.addEventListener("mousemove",function(b){u=(b.clientX-v)/window.innerWidth;x=(b.clientY-A)/window.innerHeight},!1);this.domElement.addEventListener("mousedown",function(b){b.preventDefault();b.stopPropagation();switch(b.button){case 0:p=1;break;case 2:p=-1}},!1);this.domElement.addEventListener("mouseup",function(b){b.preventDefault();b.stopPropagation();switch(b.button){case 0:p=0;break;case 2:p=0}},!1);this.domElement.addEventListener("keydown", function(b){switch(b.keyCode){case 38:case 87:p=1;break;case 37:case 65:t=-1;break;case 40:case 83:p=-1;break;case 39:case 68:t=1;break;case 81:m=!0;n=1;break;case 69:m=!0;n=-1;break;case 82:w=1;break;case 70:w=-1}},!1);this.domElement.addEventListener("keyup",function(b){switch(b.keyCode){case 38:case 87:p=0;break;case 37:case 65:t=0;break;case 40:case 83:p=0;break;case 39:case 68:t=0;break;case 81:m=!1;break;case 69:m=!1;break;case 82:w=0;break;case 70:w=0}},!1)}; -THREE.TrackballControls=function(b,c){function e(b,e){return function(){e.apply(b,arguments)}}this.object=b;this.domElement=c!==void 0?c:document;this.screen={width:window.innerWidth,height:window.innerHeight,offsetLeft:0,offsetTop:0};this.radius=(this.screen.width+this.screen.height)/4;this.rotateSpeed=1;this.zoomSpeed=1.2;this.panSpeed=0.3;this.staticMoving=this.noPan=this.noZoom=!1;this.dynamicDampingFactor=0.2;this.minDistance=0;this.maxDistance=Infinity;this.keys=[65,83,68];this.target=new THREE.Vector3(0, -0,0);var f=!1,h=this.STATE.NONE,k=new THREE.Vector3,m=new THREE.Vector3,n=new THREE.Vector3,p=new THREE.Vector2,t=new THREE.Vector2,w=new THREE.Vector2,u=new THREE.Vector2;this.handleEvent=function(b){if(typeof this[b.type]=="function")this[b.type](b)};this.getMouseOnScreen=function(b,e){return new THREE.Vector2((b-this.screen.offsetLeft)/this.radius*0.5,(e-this.screen.offsetTop)/this.radius*0.5)};this.getMouseProjectionOnBall=function(b,e){var c=new THREE.Vector3((b-this.screen.width*0.5-this.screen.offsetLeft)/ -this.radius,(this.screen.height*0.5+this.screen.offsetTop-e)/this.radius,0),f=c.length();f>1?c.normalize():c.z=Math.sqrt(1-f*f);k.copy(this.object.position).subSelf(this.target);f=this.object.up.clone().setLength(c.y);f.addSelf(this.object.up.clone().crossSelf(k).setLength(c.x));f.addSelf(k.setLength(c.z));return f};this.rotateCamera=function(){var b=Math.acos(m.dot(n)/m.length()/n.length());if(b){var e=(new THREE.Vector3).cross(m,n).normalize(),c=new THREE.Quaternion;b*=this.rotateSpeed;c.setFromAxisAngle(e, --b);c.multiplyVector3(k);c.multiplyVector3(this.object.up);c.multiplyVector3(n);this.staticMoving?m=n:(c.setFromAxisAngle(e,b*(this.dynamicDampingFactor-1)),c.multiplyVector3(m))}};this.zoomCamera=function(){var b=1+(t.y-p.y)*this.zoomSpeed;b!==1&&b>0&&(k.multiplyScalar(b),this.staticMoving?p=t:p.y+=(t.y-p.y)*this.dynamicDampingFactor)};this.panCamera=function(){var b=u.clone().subSelf(w);if(b.lengthSq()){b.multiplyScalar(k.length()*this.panSpeed);var e=k.clone().crossSelf(this.object.up).setLength(b.x); -e.addSelf(this.object.up.clone().setLength(b.y));this.object.position.addSelf(e);this.target.addSelf(e);this.staticMoving?w=u:w.addSelf(b.sub(u,w).multiplyScalar(this.dynamicDampingFactor))}};this.checkDistances=function(){if(!this.noZoom||!this.noPan)this.object.position.lengthSq()>this.maxDistance*this.maxDistance&&this.object.position.setLength(this.maxDistance),k.lengthSq()1?e.normalize():e.z=Math.sqrt(1-f*f);k.copy(this.object.position).subSelf(this.target);f=this.object.up.clone().setLength(e.y);f.addSelf(this.object.up.clone().crossSelf(k).setLength(e.x));f.addSelf(k.setLength(e.z));return f};this.rotateCamera=function(){var b=Math.acos(m.dot(n)/m.length()/n.length());if(b){var c=(new THREE.Vector3).cross(m,n).normalize(),e=new THREE.Quaternion;b*=this.rotateSpeed;e.setFromAxisAngle(c, +-b);e.multiplyVector3(k);e.multiplyVector3(this.object.up);e.multiplyVector3(n);this.staticMoving?m=n:(e.setFromAxisAngle(c,b*(this.dynamicDampingFactor-1)),e.multiplyVector3(m))}};this.zoomCamera=function(){var b=1+(t.y-p.y)*this.zoomSpeed;b!==1&&b>0&&(k.multiplyScalar(b),this.staticMoving?p=t:p.y+=(t.y-p.y)*this.dynamicDampingFactor)};this.panCamera=function(){var b=u.clone().subSelf(w);if(b.lengthSq()){b.multiplyScalar(k.length()*this.panSpeed);var c=k.clone().crossSelf(this.object.up).setLength(b.x); +c.addSelf(this.object.up.clone().setLength(b.y));this.object.position.addSelf(c);this.target.addSelf(c);this.staticMoving?w=u:w.addSelf(b.sub(u,w).multiplyScalar(this.dynamicDampingFactor))}};this.checkDistances=function(){if(!this.noZoom||!this.noPan)this.object.position.lengthSq()>this.maxDistance*this.maxDistance&&this.object.position.setLength(this.maxDistance),k.lengthSq()0){this.vertices.push(new THREE.Vertex(new THREE.Vector3(0,-m,0)));for(n=0;nb&&(b+=Math.PI*2),anglec=(e+b)/2,new THREE.Vector2(-Math.cos(anglec),-Math.sin(anglec));return f.multiplyScalar(m).addSelf(n).subSelf(b).clone()}function h(b){for(N=b.length;--N>=0;){la=N;oa=N-1;oa<0&&(oa=b.length- -1);for(var e=0,c=v+w*2,e=0;eb&&(b+=Math.PI*2),anglec=(c+b)/2,new THREE.Vector2(-Math.cos(anglec),-Math.sin(anglec));return f.multiplyScalar(m).addSelf(n).subSelf(b).clone()}function h(b){for(N=b.length;--N>=0;){la=N;oa=N-1;oa<0&&(oa=b.length- +1);for(var c=0,e=v+w*2,c=0;c=0;J--){$=J/w;Z=p*(1-$);$=t*Math.sin($*Math.PI/2);N=0;for(V=E.length;N0;)this.smooth(b)}; -THREE.SubdivisionModifier.prototype.smooth=function(b){function c(b,e,c,f,n,p){var t=new THREE.Face4(b,e,c,f,null,n.color,n.material);if(m.useOldVertexColors){t.vertexColors=[];for(var v,o,w,x=0;x<4;x++){w=p[x];v=new THREE.Color;v.setRGB(0,0,0);for(var y=0;y>7)-127;f|=(k&127)<<16|h<<8;if(f==0&&n==-127)return 0;return(1-2*(m>>7))*(1+f*Math.pow(2,-23))*Math.pow(2,n)}function h(b,e){var c=w(b,e),f=w(b,e+1),k=w(b,e+2);return(w(b,e+3)<<24)+(k<<16)+(f<<8)+c}function p(b,e){var c=w(b,e);return(w(b,e+1)<<8)+c}function t(b,e){var c=w(b,e);return c>127?c-256:c}function w(b,e){return b.charCodeAt(e)&255}function u(e){var c, -f,k;c=h(b,e);f=h(b,e+P);k=h(b,e+K);e=p(b,e+B);D.faces.push(new THREE.Face3(c,f,k,null,null,D.materials[e]))}function x(e){var c,f,k,m,o,t;c=h(b,e);f=h(b,e+P);k=h(b,e+K);m=p(b,e+B);o=h(b,e+O);t=h(b,e+Y);e=h(b,e+N);m=D.materials[m];var u=G[t*3],v=G[t*3+1];t=G[t*3+2];var w=G[e*3],x=G[e*3+1],e=G[e*3+2];D.faces.push(new THREE.Face3(c,f,k,[new THREE.Vector3(G[o*3],G[o*3+1],G[o*3+2]),new THREE.Vector3(u,v,t),new THREE.Vector3(w,x,e)],null,m))}function v(e){var c,f,k,m;c=h(b,e);f=h(b,e+V);k=h(b,e+J);m=h(b, -e+$);e=p(b,e+Z);D.faces.push(new THREE.Face4(c,f,k,m,null,null,D.materials[e]))}function A(e){var c,f,k,m,t,u,v,w;c=h(b,e);f=h(b,e+V);k=h(b,e+J);m=h(b,e+$);t=p(b,e+Z);u=h(b,e+Q);v=h(b,e+o);w=h(b,e+R);e=h(b,e+fa);t=D.materials[t];var x=G[v*3],y=G[v*3+1];v=G[v*3+2];var U=G[w*3],L=G[w*3+1];w=G[w*3+2];var z=G[e*3],A=G[e*3+1],e=G[e*3+2];D.faces.push(new THREE.Face4(c,f,k,m,[new THREE.Vector3(G[u*3],G[u*3+1],G[u*3+2]),new THREE.Vector3(x,y,v),new THREE.Vector3(U,L,w),new THREE.Vector3(z,A,e)],null,t))} -function z(e){var c,f,k,m;c=h(b,e);f=h(b,e+ea);k=h(b,e+ha);e=I[c*2];m=I[c*2+1];c=I[f*2];var o=D.faceVertexUvs[0];f=I[f*2+1];var p=I[k*2];k=I[k*2+1];var t=[];t.push(new THREE.UV(e,m));t.push(new THREE.UV(c,f));t.push(new THREE.UV(p,k));o.push(t)}function y(e){var c,f,k,m,o,p;c=h(b,e);f=h(b,e+ga);k=h(b,e+la);m=h(b,e+oa);e=I[c*2];o=I[c*2+1];c=I[f*2];p=I[f*2+1];f=I[k*2];var t=D.faceVertexUvs[0];k=I[k*2+1];var u=I[m*2];m=I[m*2+1];var v=[];v.push(new THREE.UV(e,o));v.push(new THREE.UV(c,p));v.push(new THREE.UV(f, -k));v.push(new THREE.UV(u,m));t.push(v)}var D=this,E=0,C,G=[],I=[],P,K,B,O,Y,N,V,J,$,Z,Q,o,R,fa,ea,ha,ga,la,oa,aa,T,X,ia,ja,sa;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(D,f,e);C={signature:b.substr(E,8),header_bytes:w(b,E+8),vertex_coordinate_bytes:w(b,E+9),normal_coordinate_bytes:w(b,E+10),uv_coordinate_bytes:w(b,E+11),vertex_index_bytes:w(b,E+12),normal_index_bytes:w(b,E+13),uv_index_bytes:w(b,E+14),material_index_bytes:w(b,E+15),nvertices:h(b,E+16),nnormals:h(b,E+16+4),nuvs:h(b, +THREE.BinaryLoader.prototype.createBinModel=function(b,c,e,f){var h=function(c){function e(b,c){var f=w(b,c),h=w(b,c+1),k=w(b,c+2),m=w(b,c+3),n=(m<<1&255|k>>7)-127;f|=(k&127)<<16|h<<8;if(f==0&&n==-127)return 0;return(1-2*(m>>7))*(1+f*Math.pow(2,-23))*Math.pow(2,n)}function h(b,c){var e=w(b,c),f=w(b,c+1),k=w(b,c+2);return(w(b,c+3)<<24)+(k<<16)+(f<<8)+e}function p(b,c){var e=w(b,c);return(w(b,c+1)<<8)+e}function t(b,c){var e=w(b,c);return e>127?e-256:e}function w(b,c){return b.charCodeAt(c)&255}function u(c){var e, +f,k;e=h(b,c);f=h(b,c+P);k=h(b,c+K);c=p(b,c+B);D.faces.push(new THREE.Face3(e,f,k,null,null,D.materials[c]))}function x(c){var e,f,k,m,o,t;e=h(b,c);f=h(b,c+P);k=h(b,c+K);m=p(b,c+B);o=h(b,c+O);t=h(b,c+Y);c=h(b,c+N);m=D.materials[m];var u=G[t*3],v=G[t*3+1];t=G[t*3+2];var w=G[c*3],x=G[c*3+1],c=G[c*3+2];D.faces.push(new THREE.Face3(e,f,k,[new THREE.Vector3(G[o*3],G[o*3+1],G[o*3+2]),new THREE.Vector3(u,v,t),new THREE.Vector3(w,x,c)],null,m))}function v(c){var e,f,k,m;e=h(b,c);f=h(b,c+V);k=h(b,c+J);m=h(b, +c+$);c=p(b,c+Z);D.faces.push(new THREE.Face4(e,f,k,m,null,null,D.materials[c]))}function A(c){var e,f,k,m,t,u,v,w;e=h(b,c);f=h(b,c+V);k=h(b,c+J);m=h(b,c+$);t=p(b,c+Z);u=h(b,c+Q);v=h(b,c+o);w=h(b,c+R);c=h(b,c+fa);t=D.materials[t];var x=G[v*3],y=G[v*3+1];v=G[v*3+2];var U=G[w*3],L=G[w*3+1];w=G[w*3+2];var z=G[c*3],A=G[c*3+1],c=G[c*3+2];D.faces.push(new THREE.Face4(e,f,k,m,[new THREE.Vector3(G[u*3],G[u*3+1],G[u*3+2]),new THREE.Vector3(x,y,v),new THREE.Vector3(U,L,w),new THREE.Vector3(z,A,c)],null,t))} +function z(c){var e,f,k,m;e=h(b,c);f=h(b,c+ea);k=h(b,c+ha);c=I[e*2];m=I[e*2+1];e=I[f*2];var o=D.faceVertexUvs[0];f=I[f*2+1];var p=I[k*2];k=I[k*2+1];var t=[];t.push(new THREE.UV(c,m));t.push(new THREE.UV(e,f));t.push(new THREE.UV(p,k));o.push(t)}function y(c){var e,f,k,m,o,p;e=h(b,c);f=h(b,c+ga);k=h(b,c+la);m=h(b,c+oa);c=I[e*2];o=I[e*2+1];e=I[f*2];p=I[f*2+1];f=I[k*2];var t=D.faceVertexUvs[0];k=I[k*2+1];var u=I[m*2];m=I[m*2+1];var v=[];v.push(new THREE.UV(c,o));v.push(new THREE.UV(e,p));v.push(new THREE.UV(f, +k));v.push(new THREE.UV(u,m));t.push(v)}var D=this,E=0,C,G=[],I=[],P,K,B,O,Y,N,V,J,$,Z,Q,o,R,fa,ea,ha,ga,la,oa,aa,T,X,ia,ja,sa;THREE.Geometry.call(this);THREE.Loader.prototype.initMaterials(D,f,c);C={signature:b.substr(E,8),header_bytes:w(b,E+8),vertex_coordinate_bytes:w(b,E+9),normal_coordinate_bytes:w(b,E+10),uv_coordinate_bytes:w(b,E+11),vertex_index_bytes:w(b,E+12),normal_index_bytes:w(b,E+13),uv_index_bytes:w(b,E+14),material_index_bytes:w(b,E+15),nvertices:h(b,E+16),nnormals:h(b,E+16+4),nuvs:h(b, E+16+8),ntri_flat:h(b,E+16+12),ntri_smooth:h(b,E+16+16),ntri_flat_uv:h(b,E+16+20),ntri_smooth_uv:h(b,E+16+24),nquad_flat:h(b,E+16+28),nquad_smooth:h(b,E+16+32),nquad_flat_uv:h(b,E+16+36),nquad_smooth_uv:h(b,E+16+40)};E+=C.header_bytes;P=C.vertex_index_bytes;K=C.vertex_index_bytes*2;B=C.vertex_index_bytes*3;O=C.vertex_index_bytes*3+C.material_index_bytes;Y=C.vertex_index_bytes*3+C.material_index_bytes+C.normal_index_bytes;N=C.vertex_index_bytes*3+C.material_index_bytes+C.normal_index_bytes*2;V=C.vertex_index_bytes; -J=C.vertex_index_bytes*2;$=C.vertex_index_bytes*3;Z=C.vertex_index_bytes*4;Q=C.vertex_index_bytes*4+C.material_index_bytes;o=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes;R=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes*2;fa=C.vertex_index_bytes*4+C.material_index_bytes+C.normal_index_bytes*3;ea=C.uv_index_bytes;ha=C.uv_index_bytes*2;ga=C.uv_index_bytes;la=C.uv_index_bytes*2;oa=C.uv_index_bytes*3;e=C.vertex_index_bytes*3+C.material_index_bytes;sa=C.vertex_index_bytes* -4+C.material_index_bytes;aa=C.ntri_flat*e;T=C.ntri_smooth*(e+C.normal_index_bytes*3);X=C.ntri_flat_uv*(e+C.uv_index_bytes*3);ia=C.ntri_smooth_uv*(e+C.normal_index_bytes*3+C.uv_index_bytes*3);ja=C.nquad_flat*sa;e=C.nquad_smooth*(sa+C.normal_index_bytes*4);sa=C.nquad_flat_uv*(sa+C.uv_index_bytes*4);E+=function(e){for(var f,h,k,n=C.vertex_coordinate_bytes*3,o=e+C.nvertices*n;e=0){y=o.invBindMatrices[v];p.invBindMatrix=y;p.skinningMatrix=new THREE.Matrix4;p.skinningMatrix.multiply(p.world,y);p.weights=[];for(y=0;y1){o=new THREE.MeshFaceMaterial;for(j=0;j1){o=new THREE.MeshFaceMaterial;for(j=0;j1?c[1].substr(0,e):"0";c[1].length=0,m=h.indexOf("(")>=0,n;if(k)f=h.split("."),h=f.shift(),f.shift();else if(m){n=h.split("(");h=n.shift(); -for(f=0;fe){t=p.output[o];break}m=t!==void 0?t instanceof THREE.Matrix4? -m.multiply(m,t):m.multiply(m,n.matrix):m.multiply(m,n.matrix)}else m=m.multiply(m,n.matrix);e=m;c.push({time:b,pos:[e.n14,e.n24,e.n34],rotq:[0,0,0,1],scl:[1,1,1]})}this.keys=c}this.updateMatrix();return this};u.prototype.updateMatrix=function(){this.matrix.identity();for(var b=0;b1?e[1].substr(0,c):"0";e[1].length=0,m=h.indexOf("(")>=0,n;if(k)f=h.split("."),h=f.shift(),f.shift();else if(m){n=h.split("(");h=n.shift(); +for(f=0;fc){t=p.output[o];break}m=t!==void 0?t instanceof THREE.Matrix4? +m.multiply(m,t):m.multiply(m,n.matrix):m.multiply(m,n.matrix)}else m=m.multiply(m,n.matrix);c=m;e.push({time:b,pos:[c.n14,c.n24,c.n34],rotq:[0,0,0,1],scl:[1,1,1]})}this.keys=e}this.updateMatrix();return this};u.prototype.updateMatrix=function(){this.matrix.identity();for(var b=0;b0&&(this[c.nodeName]=parseFloat(f[0].textContent))}}this.create();return this};Y.prototype.create=function(){var b={},e=this.transparency!==void 0&&this.transparency<1,c;for(c in this)switch(c){case "ambient":case "emission":case "diffuse":case "specular":var f=this[c];if(f instanceof O)if(f.isTexture()){if(this.effect.sampler&&this.effect.surface&&this.effect.sampler.source==this.effect.surface.sid&&(f=ma[this.effect.surface.init_from]))b.map=THREE.ImageUtils.loadTexture(Ga+f.init_from), -b.map.wrapS=THREE.RepeatWrapping,b.map.wrapT=THREE.RepeatWrapping,b.map.repeat.x=1,b.map.repeat.y=-1}else c=="diffuse"?b.color=f.color.getHex():e||(b[c]=f.color.getHex());break;case "shininess":case "reflectivity":b[c]=this[c];break;case "transparency":if(e)b.transparent=!0,b.opacity=this[c],e=!0}b.shading=za;return this.material=new THREE.MeshLambertMaterial(b)};N.prototype.parse=function(b){for(var e=0;e=0,f=b.indexOf("(")>=0,h,k;if(c)e=b.split("."),b=e.shift(),k=e.shift();else if(f){h=b.split("(");b=h.shift();for(e=0;e0&&(this[e.nodeName]=parseFloat(f[0].textContent))}}this.create();return this};Y.prototype.create=function(){var b={},c=this.transparency!==void 0&&this.transparency<1,e;for(e in this)switch(e){case "ambient":case "emission":case "diffuse":case "specular":var f=this[e];if(f instanceof O)if(f.isTexture()){if(this.effect.sampler&&this.effect.surface&&this.effect.sampler.source==this.effect.surface.sid&&(f=ma[this.effect.surface.init_from]))b.map=THREE.ImageUtils.loadTexture(Ga+f.init_from), +b.map.wrapS=THREE.RepeatWrapping,b.map.wrapT=THREE.RepeatWrapping,b.map.repeat.x=1,b.map.repeat.y=-1}else e=="diffuse"?b.color=f.color.getHex():c||(b[e]=f.color.getHex());break;case "shininess":case "reflectivity":b[e]=this[e];break;case "transparency":if(c)b.transparent=!0,b.opacity=this[e],c=!0}b.shading=za;return this.material=new THREE.MeshLambertMaterial(b)};N.prototype.parse=function(b){for(var c=0;c=0,f=b.indexOf("(")>=0,h,k;if(e)c=b.split("."),b=c.shift(),k=c.shift();else if(f){h=b.split("(");b=h.shift();for(c=0;c1&&(Y=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(P,Y);object.name=v;object.position.set(C[0],C[1],C[2]);q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=E.visible;R.scene.add(object);R.objects[v]=object;E.meshCollider&&(b=THREE.CollisionUtils.MeshColliderWBox(object),R.scene.collisions.colliders.push(b)); if(E.castsShadow)b=new THREE.ShadowVolume(P),R.scene.add(b),b.position=object.position,b.rotation=object.rotation,b.scale=object.scale;E.trigger&&E.trigger.toLowerCase()!="none"&&(b={type:E.trigger,object:E},R.triggers[object.name]=b)}}else C=E.position,r=E.rotation,q=E.quaternion,s=E.scale,q=0,object=new THREE.Object3D,object.name=v,object.position.set(C[0],C[1],C[2]),q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]),object.scale.set(s[0], -s[1],s[2]),object.visible=E.visible!==void 0?E.visible:!1,R.scene.add(object),R.objects[v]=object,R.empties[v]=object,E.trigger&&E.trigger.toLowerCase()!="none"&&(b={type:E.trigger,object:E},R.triggers[object.name]=b)}function p(b){return function(c){R.geometries[b]=c;n();$-=1;e.onLoadComplete();w()}}function t(b){return function(e){R.geometries[b]=e}}function w(){e.callbackProgress({totalModels:Q,totalTextures:o,loadedModels:Q-$,loadedTextures:o-Z},R);e.onLoadProgress();$==0&&Z==0&&c(R)}var u,x, +s[1],s[2]),object.visible=E.visible!==void 0?E.visible:!1,R.scene.add(object),R.objects[v]=object,R.empties[v]=object,E.trigger&&E.trigger.toLowerCase()!="none"&&(b={type:E.trigger,object:E},R.triggers[object.name]=b)}function p(b){return function(c){R.geometries[b]=c;n();$-=1;e.onLoadComplete();w()}}function t(b){return function(c){R.geometries[b]=c}}function w(){e.callbackProgress({totalModels:Q,totalTextures:o,loadedModels:Q-$,loadedTextures:o-Z},R);e.onLoadProgress();$==0&&Z==0&&c(R)}var u,x, v,A,z,y,D,E,C,G,I,P,K,B,O,Y,N,V,J,$,Z,Q,o,R;V=b.data;O=new THREE.BinaryLoader;J=new THREE.JSONLoader;Z=$=0;R={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},triggers:{},empties:{}};b=!1;for(v in V.objects)if(E=V.objects[v],E.meshCollider){b=!0;break}if(b)R.scene.collisions=new THREE.CollisionSystem;if(V.transform){b=V.transform.position;G=V.transform.rotation;var fa=V.transform.scale;b&&R.scene.position.set(b[0],b[1],b[2]);G&&R.scene.rotation.set(G[0], G[1],G[2]);fa&&R.scene.scale.set(fa[0],fa[1],fa[2]);(b||G||fa)&&R.scene.updateMatrix()}b=function(){Z-=1;w();e.onLoadComplete()};for(z in V.cameras)G=V.cameras[z],G.type=="perspective"?K=new THREE.PerspectiveCamera(G.fov,G.aspect,G.near,G.far):G.type=="ortho"&&(K=new THREE.OrthographicCamera(G.left,G.right,G.top,G.bottom,G.near,G.far)),C=G.position,G=G.target,K.position.set(C[0],C[1],C[2]),K.target=new THREE.Vector3(G[0],G[1],G[2]),R.cameras[z]=K;for(A in V.lights)z=V.lights[A],K=z.color!==void 0? z.color:16777215,G=z.intensity!==void 0?z.intensity:1,z.type=="directional"?(C=z.direction,N=new THREE.DirectionalLight(K,G),N.position.set(C[0],C[1],C[2]),N.position.normalize()):z.type=="point"?(C=z.position,d=z.distance,N=new THREE.PointLight(K,G,d),N.position.set(C[0],C[1],C[2])):z.type=="ambient"&&(N=new THREE.AmbientLight(K)),R.scene.add(N),R.lights[A]=N;for(y in V.fogs)A=V.fogs[y],A.type=="linear"?B=new THREE.Fog(0,A.near,A.far):A.type=="exp2"&&(B=new THREE.FogExp2(0,A.density)),G=A.color, B.color.setRGB(G[0],G[1],G[2]),R.fogs[y]=B;if(R.cameras&&V.defaults.camera)R.currentCamera=R.cameras[V.defaults.camera];if(R.fogs&&V.defaults.fog)R.scene.fog=R.fogs[V.defaults.fog];G=V.defaults.bgcolor;R.bgColor=new THREE.Color;R.bgColor.setRGB(G[0],G[1],G[2]);R.bgColorAlpha=V.defaults.bgalpha;for(u in V.geometries)if(y=V.geometries[u],y.type=="bin_mesh"||y.type=="ascii_mesh")$+=1,e.onLoadStart();Q=$;for(u in V.geometries)y=V.geometries[u],y.type=="cube"?(P=new THREE.CubeGeometry(y.width,y.height, y.depth,y.segmentsWidth,y.segmentsHeight,y.segmentsDepth,null,y.flipped,y.sides),R.geometries[u]=P):y.type=="plane"?(P=new THREE.PlaneGeometry(y.width,y.height,y.segmentsWidth,y.segmentsHeight),R.geometries[u]=P):y.type=="sphere"?(P=new THREE.SphereGeometry(y.radius,y.segmentsWidth,y.segmentsHeight),R.geometries[u]=P):y.type=="cylinder"?(P=new THREE.CylinderGeometry(y.topRad,y.botRad,y.height,y.radSegs,y.heightSegs),R.geometries[u]=P):y.type=="torus"?(P=new THREE.TorusGeometry(y.radius,y.tube,y.segmentsR, -y.segmentsT),R.geometries[u]=P):y.type=="icosahedron"?(P=new THREE.IcosahedronGeometry(y.subdivisions),R.geometries[u]=P):y.type=="bin_mesh"?O.load({model:f(y.url,V.urlBaseType),callback:p(u)}):y.type=="ascii_mesh"?J.load({model:f(y.url,V.urlBaseType),callback:p(u)}):y.type=="embedded_mesh"&&(y=V.embeds[y.id])&&J.createModel(y,t(u),"");for(D in V.textures)if(u=V.textures[D],u.url instanceof Array){Z+=u.url.length;for(O=0;O=57344&&(c-=2048);c++;for(var e=new Float32Array(8*c),f=1,h=0;h<8;h++){for(var k=0,m=0;m>1^-(n&1);e[8*m+h]=k}f+=c}c=b.length-f;k=new Uint16Array(c);for(h=m=0;h>7)-127;e|=(f&127)<<16|g<<8;if(e==0&&k==-127)return 0;return(1-2*(h>>7))*(1+e*Math.pow(2,-23))*Math.pow(2,k)}function f(a,c){var b=n(a,c),e=n(a,c+1),g=n(a,c+2);return(n(a,c+3)<<24)+(g<<16)+(e<<8)+b}function l(a,c){var b=n(a,c);return(n(a,c+1)<<8)+b}function m(a,c){var b=n(a,c);return b>127?b-256:b}function n(a,c){return a.charCodeAt(c)&255}function o(c){var b, e,g;b=f(a,c);e=f(a,c+B);g=f(a,c+E);c=l(a,c+I);z.faces.push(new THREE.Face3(b,e,g,null,null,z.materials[c]))}function t(c){var b,e,g,h,m,o;b=f(a,c);e=f(a,c+B);g=f(a,c+E);h=l(a,c+I);m=f(a,c+G);o=f(a,c+K);c=f(a,c+C);h=z.materials[h];var n=A[o*3],p=A[o*3+1];o=A[o*3+2];var t=A[c*3],u=A[c*3+1],c=A[c*3+2];z.faces.push(new THREE.Face3(b,e,g,[new THREE.Vector3(A[m*3],A[m*3+1],A[m*3+2]),new THREE.Vector3(n,p,o),new THREE.Vector3(t,u,c)],null,h))}function u(c){var b,e,g,h;b=f(a,c);e=f(a,c+F);g=f(a,c+J);h=f(a, c+M);c=l(a,c+N);z.faces.push(new THREE.Face4(b,e,g,h,null,null,z.materials[c]))}function v(c){var b,e,g,h,m,o,n,p;b=f(a,c);e=f(a,c+F);g=f(a,c+J);h=f(a,c+M);m=l(a,c+N);o=f(a,c+L);n=f(a,c+O);p=f(a,c+H);c=f(a,c+Q);m=z.materials[m];var t=A[n*3],u=A[n*3+1];n=A[n*3+2];var la=A[p*3],ma=A[p*3+1];p=A[p*3+2];var na=A[c*3],v=A[c*3+1],c=A[c*3+2];z.faces.push(new THREE.Face4(b,e,g,h,[new THREE.Vector3(A[o*3],A[o*3+1],A[o*3+2]),new THREE.Vector3(t,u,n),new THREE.Vector3(la,ma,p),new THREE.Vector3(na,v,c)],null, m))}function y(c){var b,e,g,h;b=f(a,c);e=f(a,c+P);g=f(a,c+T);c=D[b*2];h=D[b*2+1];b=D[e*2];var l=z.faceVertexUvs[0];e=D[e*2+1];var m=D[g*2];g=D[g*2+1];var o=[];o.push(new THREE.UV(c,h));o.push(new THREE.UV(b,e));o.push(new THREE.UV(m,g));l.push(o)}function p(c){var b,e,g,h,l,m;b=f(a,c);e=f(a,c+X);g=f(a,c+R);h=f(a,c+S);c=D[b*2];l=D[b*2+1];b=D[e*2];m=D[e*2+1];e=D[g*2];var o=z.faceVertexUvs[0];g=D[g*2+1];var n=D[h*2];h=D[h*2+1];var p=[];p.push(new THREE.UV(c,l));p.push(new THREE.UV(b,m));p.push(new THREE.UV(e, -g));p.push(new THREE.UV(n,h));o.push(p)}var z=this,x=0,w,A=[],D=[],B,E,I,G,K,C,F,J,M,N,L,O,H,Q,P,T,X,R,S,W,U,Z,Y,$,V;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(z,e,c);w={signature:a.substr(x,8),header_bytes:n(a,x+8),vertex_coordinate_bytes:n(a,x+9),normal_coordinate_bytes:n(a,x+10),uv_coordinate_bytes:n(a,x+11),vertex_index_bytes:n(a,x+12),normal_index_bytes:n(a,x+13),uv_index_bytes:n(a,x+14),material_index_bytes:n(a,x+15),nvertices:f(a,x+16),nnormals:f(a,x+16+4),nuvs:f(a,x+16+ +g));p.push(new THREE.UV(n,h));o.push(p)}var z=this,x=0,w,A=[],D=[],B,E,I,G,K,C,F,J,M,N,L,O,H,Q,P,T,X,R,S,W,U,Z,Y,$,V;THREE.Geometry.call(this);THREE.Loader.prototype.initMaterials(z,e,c);w={signature:a.substr(x,8),header_bytes:n(a,x+8),vertex_coordinate_bytes:n(a,x+9),normal_coordinate_bytes:n(a,x+10),uv_coordinate_bytes:n(a,x+11),vertex_index_bytes:n(a,x+12),normal_index_bytes:n(a,x+13),uv_index_bytes:n(a,x+14),material_index_bytes:n(a,x+15),nvertices:f(a,x+16),nnormals:f(a,x+16+4),nuvs:f(a,x+16+ 8),ntri_flat:f(a,x+16+12),ntri_smooth:f(a,x+16+16),ntri_flat_uv:f(a,x+16+20),ntri_smooth_uv:f(a,x+16+24),nquad_flat:f(a,x+16+28),nquad_smooth:f(a,x+16+32),nquad_flat_uv:f(a,x+16+36),nquad_smooth_uv:f(a,x+16+40)};x+=w.header_bytes;B=w.vertex_index_bytes;E=w.vertex_index_bytes*2;I=w.vertex_index_bytes*3;G=w.vertex_index_bytes*3+w.material_index_bytes;K=w.vertex_index_bytes*3+w.material_index_bytes+w.normal_index_bytes;C=w.vertex_index_bytes*3+w.material_index_bytes+w.normal_index_bytes*2;F=w.vertex_index_bytes; J=w.vertex_index_bytes*2;M=w.vertex_index_bytes*3;N=w.vertex_index_bytes*4;L=w.vertex_index_bytes*4+w.material_index_bytes;O=w.vertex_index_bytes*4+w.material_index_bytes+w.normal_index_bytes;H=w.vertex_index_bytes*4+w.material_index_bytes+w.normal_index_bytes*2;Q=w.vertex_index_bytes*4+w.material_index_bytes+w.normal_index_bytes*3;P=w.uv_index_bytes;T=w.uv_index_bytes*2;X=w.uv_index_bytes;R=w.uv_index_bytes*2;S=w.uv_index_bytes*3;c=w.vertex_index_bytes*3+w.material_index_bytes;V=w.vertex_index_bytes* 4+w.material_index_bytes;W=w.ntri_flat*c;U=w.ntri_smooth*(c+w.normal_index_bytes*3);Z=w.ntri_flat_uv*(c+w.uv_index_bytes*3);Y=w.ntri_smooth_uv*(c+w.normal_index_bytes*3+w.uv_index_bytes*3);$=w.nquad_flat*V;c=w.nquad_smooth*(V+w.normal_index_bytes*4);V=w.nquad_flat_uv*(V+w.uv_index_bytes*4);x+=function(c){for(var e,h,f,k=w.vertex_coordinate_bytes*3,l=c+w.nvertices*k;c=57344&&(b-=2048);b++;for(var c=new Float32Array(8*b),e=1,f=0;f<8;f++){for(var h=0,g=0;g>1^-(k&1);c[8*g+f]=h}e+=b}b=a.length-e;h=new Uint16Array(b);for(f=g=0;f - var camera, cameraTarget, scene, renderer, info, mouse2d, sun, loader, sphere; + var camera, cameraTarget, scene, renderer, info, mouse2d, sun, sphere; var range = 400, speed = 1, sphereSize = 4; @@ -66,8 +66,6 @@ mouse2d = new THREE.Vector3( 0, 0, 1 ); - loader = new THREE.Loader( true ); - scene = new THREE.Scene(); sphere = new THREE.Mesh( new THREE.SphereGeometry( sphereSize, 10, 10 ), new THREE.MeshLambertMaterial( { color: 0xff0000 } ) ); diff --git a/examples/webgl_geometry_large_mesh.html b/examples/webgl_geometry_large_mesh.html index 15ae72f7..08cc7230 100644 --- a/examples/webgl_geometry_large_mesh.html +++ b/examples/webgl_geometry_large_mesh.html @@ -169,8 +169,8 @@ var s = Date.now(), callback = function( geometry ) { createScene( geometry, s ) }; - //loader.load( { model: 'obj/lucy/Lucy100k_slim.js', callback: callback } ); - loader.load( { model: 'obj/lucy/Lucy100k_bin.js', callback: callback } ); + //loader.load( 'obj/lucy/Lucy100k_slim.js', callback ); + loader.load( 'obj/lucy/Lucy100k_bin.js', callback ); } diff --git a/examples/webgl_lights_pointlights.html b/examples/webgl_lights_pointlights.html index 1e378ef0..cbc66f70 100644 --- a/examples/webgl_lights_pointlights.html +++ b/examples/webgl_lights_pointlights.html @@ -78,7 +78,7 @@ }; - loader.load( { model: "obj/walt/WaltHead_bin.js", callback: callback } ); + loader.load( "obj/walt/WaltHead_bin.js", callback ); scene.add( new THREE.AmbientLight( 0x000000 ) ); diff --git a/examples/webgl_materials_cars.html b/examples/webgl_materials_cars.html index 45b2746a..02b1efb2 100644 --- a/examples/webgl_materials_cars.html +++ b/examples/webgl_materials_cars.html @@ -458,7 +458,7 @@ } - loader.load( { model: CARS[ "veyron" ].url, callback: function( geometry ) { createScene( geometry, "veyron" ) } } ); + loader.load( CARS[ "veyron" ].url, function( geometry ) { createScene( geometry, "veyron" ) } ); for( var c in CARS ) initCarButton( c ); @@ -471,7 +471,7 @@ if ( ! CARS[ car ].object ) { loader.statusDomElement.style.display = "block"; - loader.load( { model: CARS[ car ].url, callback: function( geometry ) { createScene( geometry, car ) } } ); + loader.load( CARS[ car ].url, function( geometry ) { createScene( geometry, car ) } ); } else { @@ -479,7 +479,7 @@ } - }, false); + }, false ); } @@ -510,13 +510,13 @@ var buttons, i, src = ""; - for( i = 0; i < materials.length; i++ ) { + for( i = 0; i < materials.length; i ++ ) { src += ' '; } - buttons = document.createElement("div"); + buttons = document.createElement( "div" ); buttons.innerHTML = src; $( "buttons_materials" ).appendChild( buttons ); @@ -527,7 +527,7 @@ function attachButtonMaterials( materials, geometry, material_indices, car ) { - for( var i = 0; i < materials.length; i++ ) { + for( var i = 0; i < materials.length; i ++ ) { $( button_name( car, i ) ).counter = i; $( button_name( car, i ) ).addEventListener( 'click', function() { diff --git a/examples/webgl_materials_cars_anaglyph.html b/examples/webgl_materials_cars_anaglyph.html index bdc68ff8..74c7106e 100644 --- a/examples/webgl_materials_cars_anaglyph.html +++ b/examples/webgl_materials_cars_anaglyph.html @@ -451,7 +451,7 @@ } - loader.load( { model: CARS[ "veyron" ].url, callback: function( geometry ) { createScene( geometry, "veyron" ) } } ); + loader.load( CARS[ "veyron" ].url, function( geometry ) { createScene( geometry, "veyron" ) } ); for( var c in CARS ) initCarButton( c ); @@ -464,7 +464,7 @@ if ( ! CARS[ car ].object ) { loader.statusDomElement.style.display = "block"; - loader.load( { model: CARS[ car ].url, callback: function( geometry ) { createScene( geometry, car ) } } ); + loader.load( CARS[ car ].url, function( geometry ) { createScene( geometry, car ) } ); } else { diff --git a/examples/webgl_materials_cars_camaro.html b/examples/webgl_materials_cars_camaro.html index 51b43e1f..12812459 100644 --- a/examples/webgl_materials_cars_camaro.html +++ b/examples/webgl_materials_cars_camaro.html @@ -136,7 +136,7 @@ camaroMaterials.body.push( [ "Chrome", new THREE.MeshPhongMaterial( { color: 0xffffff, specular:0xffffff, envMap: textureCube, combine: THREE.MultiplyOperation } ) ] ); var loader = new THREE.BinaryLoader(); - loader.load( { model: "obj/camaro/CamaroNoUv_bin.js", callback: function( geometry ) { createScene( geometry, camaroMaterials ) } } ); + loader.load( "obj/camaro/CamaroNoUv_bin.js", function( geometry ) { createScene( geometry, camaroMaterials ) } ); } @@ -155,7 +155,7 @@ parent.innerHTML = src; - for( i = 0; i < materials.length; i++ ) { + for( i = 0; i < materials.length; i ++ ) { $( "m" + i ).counter = i; $( "m" + i ).addEventListener( 'click', function() { geometry.materials[ 0 ][ 0 ] = materials[ this.counter ][ 1 ] }, false ); diff --git a/examples/webgl_materials_cars_camaro_crosseyed.html b/examples/webgl_materials_cars_camaro_crosseyed.html index 939a6a8a..6e307c8f 100644 --- a/examples/webgl_materials_cars_camaro_crosseyed.html +++ b/examples/webgl_materials_cars_camaro_crosseyed.html @@ -143,7 +143,7 @@ camaroMaterials.body.push( [ "Chrome", new THREE.MeshPhongMaterial( { color: 0xffffff, specular:0xffffff, envMap: textureCube, combine: THREE.MultiplyOperation } ) ] ); var loader = new THREE.BinaryLoader(); - loader.load( { model: "obj/camaro/CamaroNoUv_bin.js", callback: function( geometry ) { createScene( geometry, camaroMaterials ) } } ); + loader.load( "obj/camaro/CamaroNoUv_bin.js", function( geometry ) { createScene( geometry, camaroMaterials ) } ); } diff --git a/examples/webgl_materials_cars_parallaxbarrier.html b/examples/webgl_materials_cars_parallaxbarrier.html index f75e1104..686ddc49 100644 --- a/examples/webgl_materials_cars_parallaxbarrier.html +++ b/examples/webgl_materials_cars_parallaxbarrier.html @@ -452,7 +452,7 @@ } - loader.load( { model: CARS[ "veyron" ].url, callback: function( geometry ) { createScene( geometry, "veyron" ) } } ); + loader.load( CARS[ "veyron" ].url, function( geometry ) { createScene( geometry, "veyron" ) } ); for( var c in CARS ) initCarButton( c ); @@ -465,7 +465,7 @@ if ( ! CARS[ car ].object ) { loader.statusDomElement.style.display = "block"; - loader.load( { model: CARS[ car ].url, callback: function( geometry ) { createScene( geometry, car ) } } ); + loader.load( CARS[ car ].url, function( geometry ) { createScene( geometry, car ) } ); } else { diff --git a/examples/webgl_materials_cubemap.html b/examples/webgl_materials_cubemap.html index c8d465a9..4003fef5 100644 --- a/examples/webgl_materials_cubemap.html +++ b/examples/webgl_materials_cubemap.html @@ -152,7 +152,7 @@ loader = new THREE.BinaryLoader( true ); document.body.appendChild( loader.statusDomElement ); - loader.load( { model: "obj/walt/WaltHead_bin.js", callback: function( geometry ) { createScene( geometry, cubeMaterial1, cubeMaterial2, cubeMaterial3 ) } } ); + loader.load( "obj/walt/WaltHead_bin.js", function( geometry ) { createScene( geometry, cubeMaterial1, cubeMaterial2, cubeMaterial3 ) } ); } diff --git a/examples/webgl_materials_cubemap_refraction.html b/examples/webgl_materials_cubemap_refraction.html index 1d1b5896..c0fafefc 100644 --- a/examples/webgl_materials_cubemap_refraction.html +++ b/examples/webgl_materials_cubemap_refraction.html @@ -143,7 +143,7 @@ loader = new THREE.BinaryLoader( true ); document.body.appendChild( loader.statusDomElement ); - loader.load( { model: 'obj/lucy/Lucy100k_bin.js', callback: function( geometry ) { createScene( geometry, cubeMaterial1, cubeMaterial2, cubeMaterial3 ) } } ); + loader.load( 'obj/lucy/Lucy100k_bin.js', function( geometry ) { createScene( geometry, cubeMaterial1, cubeMaterial2, cubeMaterial3 ) } ); document.addEventListener('mousemove', onDocumentMouseMove, false); diff --git a/examples/webgl_materials_normalmap.html b/examples/webgl_materials_normalmap.html index 721963cb..d3eb547c 100644 --- a/examples/webgl_materials_normalmap.html +++ b/examples/webgl_materials_normalmap.html @@ -183,7 +183,7 @@ loader = new THREE.BinaryLoader( true ); document.body.appendChild( loader.statusDomElement ); - loader.load( { model: "obj/ninja/NinjaLo_bin.js", callback: function( geometry ) { createScene( geometry, scale, material1, material2 ) } } ); + loader.load( "obj/ninja/NinjaLo_bin.js", function( geometry ) { createScene( geometry, scale, material1, material2 ) } ); // diff --git a/examples/webgl_morphtargets_horse.html b/examples/webgl_morphtargets_horse.html index 3f487f22..d5c78070 100644 --- a/examples/webgl_morphtargets_horse.html +++ b/examples/webgl_morphtargets_horse.html @@ -62,13 +62,13 @@ scene.add( light ); var loader = new THREE.JSONLoader( true ); - loader.load( { model: "models/animated/horse.js", callback: function( geometry ) { + loader.load( "models/animated/horse.js", function( geometry ) { mesh = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: 0x606060, morphTargets: true } ) ); mesh.scale.set( 1.5, 1.5, 1.5 ); scene.add( mesh ); - } } ); + } ); // diff --git a/examples/webgl_objconvert_test.html b/examples/webgl_objconvert_test.html index 6774d5b5..8f4c5708 100644 --- a/examples/webgl_objconvert_test.html +++ b/examples/webgl_objconvert_test.html @@ -190,11 +190,11 @@ callbackMale = function( geometry ) { createScene( geometry, 90, FLOOR, 50, 105 ) }, callbackFemale = function( geometry ) { createScene( geometry, -80, FLOOR, 50, 0 ) }; - loader.load( { model: "obj/male02/Male02_slim.js", callback: callbackMale } ); - loader.load( { model: "obj/female02/Female02_slim.js", callback: callbackFemale } ); + loader.load( "obj/male02/Male02_slim.js", callbackMale ); + loader.load( "obj/female02/Female02_slim.js", callbackFemale ); - //loader.load( { model: "obj/male02/Male02_bin.js", callback: callbackMale } ); - //loader.load( { model: "obj/female02/Female02_bin.js", callback: callbackFemale } ); + //loader.load( "obj/male02/Male02_bin.js", callbackMale ); + //loader.load( "obj/female02/Female02_bin.js", callbackFemale ); } diff --git a/examples/webgl_particles_dynamic.html b/examples/webgl_particles_dynamic.html index a753b901..c633a6b9 100644 --- a/examples/webgl_particles_dynamic.html +++ b/examples/webgl_particles_dynamic.html @@ -113,9 +113,9 @@ } ); - bloader.load( { model: "obj/veyron/VeyronNoUv_bin.js", callback: function( geometry ) { createMesh( geometry, scene, 6.8, 2200, -200, -100, 0x0055ff, false ) } } ); + bloader.load( "obj/veyron/VeyronNoUv_bin.js", function( geometry ) { createMesh( geometry, scene, 6.8, 2200, -200, -100, 0x0055ff, false ) } ); - bloader.load( { model: "obj/female02/Female02_bin.js", callback: function( geometry ) { + bloader.load( "obj/female02/Female02_bin.js", function( geometry ) { createMesh( geometry, scene, 4.05, -1000, -350, 0, 0xffdd44, true ); createMesh( geometry, scene, 4.05, 0, -350, 0, 0xffffff, true ); @@ -123,16 +123,16 @@ createMesh( geometry, scene, 4.05, 250, -350, 1500, 0xff9955, true ); createMesh( geometry, scene, 4.05, 250, -350, 2500, 0xff77dd, true ); - } } ); + } ); - bloader.load( { model: "obj/male02/Male02_bin.js", callback: function( geometry ) { + bloader.load( "obj/male02/Male02_bin.js", function( geometry ) { createMesh( geometry, scene, 4.05, -500, -350, 600, 0xff7744, true ); createMesh( geometry, scene, 4.05, 500, -350, 0, 0xff5522, true ); createMesh( geometry, scene, 4.05, -250, -350, 1500, 0xff9922, true ); createMesh( geometry, scene, 4.05, -250, -350, -1500, 0xff99ff, true ); - } } ); + } ); // diff --git a/src/extras/loaders/BinaryLoader.js b/src/extras/loaders/BinaryLoader.js index b548a42c..9263a715 100644 --- a/src/extras/loaders/BinaryLoader.js +++ b/src/extras/loaders/BinaryLoader.js @@ -16,26 +16,37 @@ THREE.BinaryLoader.prototype.supr = THREE.Loader.prototype; // Load models generated by slim OBJ converter with BINARY option (converter_obj_three_slim.py -t binary) // - binary models consist of two files: JS and BIN // - parameters -// - model (required) +// - url (required) // - callback (required) -// - bin_path (optional: if not specified, binary file will be assumed to be in the same folder as JS model file) -// - texture_path (optional: if not specified, textures will be assumed to be in the same folder as JS model file) +// - texturePath (optional: if not specified, textures will be assumed to be in the same folder as JS model file) +// - binaryPath (optional: if not specified, binary file will be assumed to be in the same folder as JS model file) -THREE.BinaryLoader.prototype.load = function( parameters ) { +THREE.BinaryLoader.prototype.load = function( url, callback, texturePath, binaryPath ) { + + if ( url instanceof Object ) { + + console.warn( 'DEPRECATED: BinaryLoader( parameters ) is now BinaryLoader( url, callback, texturePath, binaryPath ).' ); + + var parameters = url; + + url = parameters.model; + callback = parameters.callback; + texturePath = parameters.texture_path; + binaryPath = parameters.bin_path; + + } // #1 load JS part via web worker // This isn't really necessary, JS part is tiny, // could be done by more ordinary means. - var url = parameters.model, - callback = parameters.callback, - texture_path = parameters.texture_path ? parameters.texture_path : THREE.Loader.prototype.extractUrlbase( url ), - bin_path = parameters.bin_path ? parameters.bin_path : THREE.Loader.prototype.extractUrlbase( url ), + texturePath = texturePath ? texturePath : this.extractUrlbase( url ); + binaryPath = binaryPath ? binaryPath : this.extractUrlbase( url ); - s = (new Date).getTime(), + var s = Date.now(), worker = new Worker( url ), - callback_progress = this.showProgress ? THREE.Loader.prototype.updateProgress : null; + callbackProgress = this.showProgress ? THREE.Loader.prototype.updateProgress : null; worker.onmessage = function( event ) { @@ -49,11 +60,11 @@ THREE.BinaryLoader.prototype.load = function( parameters ) { // Also, worker loading huge data by Ajax still freezes browser. Go figure, // worker with baked ascii JSON data keeps browser more responsive. - THREE.BinaryLoader.prototype.loadAjaxBuffers( buffers, materials, callback, bin_path, texture_path, callback_progress ); + THREE.BinaryLoader.prototype.loadAjaxBuffers( buffers, materials, callback, binaryPath, texturePath, callbackProgress ); }; - worker.onerror = function (event) { + worker.onerror = function ( event ) { alert( "worker.onerror: " + event.message + "\n" + event.data ); event.preventDefault(); @@ -71,10 +82,10 @@ THREE.BinaryLoader.prototype.load = function( parameters ) { // See also other suggestions by Gregg Tavares // https://groups.google.com/group/o3d-discuss/browse_thread/thread/a8967bc9ce1e0978 -THREE.BinaryLoader.prototype.loadAjaxBuffers = function( buffers, materials, callback, bin_path, texture_path, callback_progress ) { +THREE.BinaryLoader.prototype.loadAjaxBuffers = function( buffers, materials, callback, binaryPath, texturePath, callbackProgress ) { var xhr = new XMLHttpRequest(), - url = bin_path + "/" + buffers; + url = binaryPath + "/" + buffers; var length = 0; @@ -84,7 +95,7 @@ THREE.BinaryLoader.prototype.loadAjaxBuffers = function( buffers, materials, cal if ( xhr.status == 200 || xhr.status == 0 ) { - THREE.BinaryLoader.prototype.createBinModel( xhr.responseText, callback, texture_path, materials ); + THREE.BinaryLoader.prototype.createBinModel( xhr.responseText, callback, texturePath, materials ); } else { @@ -94,7 +105,7 @@ THREE.BinaryLoader.prototype.loadAjaxBuffers = function( buffers, materials, cal } else if ( xhr.readyState == 3 ) { - if ( callback_progress ) { + if ( callbackProgress ) { if ( length == 0 ) { @@ -102,7 +113,7 @@ THREE.BinaryLoader.prototype.loadAjaxBuffers = function( buffers, materials, cal } - callback_progress( { total: length, loaded: xhr.responseText.length } ); + callbackProgress( { total: length, loaded: xhr.responseText.length } ); } @@ -121,9 +132,9 @@ THREE.BinaryLoader.prototype.loadAjaxBuffers = function( buffers, materials, cal }; -THREE.BinaryLoader.prototype.createBinModel = function ( data, callback, texture_path, materials ) { +THREE.BinaryLoader.prototype.createBinModel = function ( data, callback, texturePath, materials ) { - var Model = function ( texture_path ) { + var Model = function ( texturePath ) { //var s = (new Date).getTime(); @@ -144,7 +155,7 @@ THREE.BinaryLoader.prototype.createBinModel = function ( data, callback, texture THREE.Geometry.call( this ); - THREE.Loader.prototype.init_materials( scope, materials, texture_path ); + THREE.Loader.prototype.initMaterials( scope, materials, texturePath ); md = parseMetaData( data, currentOffset ); currentOffset += md.header_bytes; @@ -765,6 +776,6 @@ THREE.BinaryLoader.prototype.createBinModel = function ( data, callback, texture Model.prototype = new THREE.Geometry(); Model.prototype.constructor = Model; - callback( new Model( texture_path ) ); + callback( new Model( texturePath ) ); }; diff --git a/src/extras/loaders/JSONLoader.js b/src/extras/loaders/JSONLoader.js index bc36fa73..ca3a0dd2 100644 --- a/src/extras/loaders/JSONLoader.js +++ b/src/extras/loaders/JSONLoader.js @@ -13,19 +13,19 @@ THREE.JSONLoader.prototype = new THREE.Loader(); THREE.JSONLoader.prototype.constructor = THREE.JSONLoader; THREE.JSONLoader.prototype.supr = THREE.Loader.prototype; - THREE.JSONLoader.prototype.load = function ( url, callback, texturePath ) { - var scope = this, worker; + var worker, scope = this; if ( url instanceof Object ) { console.warn( 'DEPRECATED: JSONLoader( parameters ) is now JSONLoader( url, callback, texturePath ).' ); - var object = url; - url = object.model; - callback = object.callback; - texturePath = object.texture_path; + var parameters = url; + + url = parameters.model; + callback = parameters.callback; + texturePath = parameters.texture_path; } @@ -40,7 +40,7 @@ THREE.JSONLoader.prototype.load = function ( url, callback, texturePath ) { }; this.onLoadStart(); - worker.postMessage( new Date().getTime() ); + worker.postMessage( Date.now() ); }; @@ -50,7 +50,7 @@ THREE.JSONLoader.prototype.createModel = function ( json, callback, texture_path geometry = new THREE.Geometry(), scale = ( json.scale !== undefined ) ? 1.0 / json.scale : 1.0; - this.init_materials( geometry, json.materials, texture_path ); + this.initMaterials( geometry, json.materials, texture_path ); parseModel( scale ); diff --git a/src/extras/loaders/Loader.js b/src/extras/loaders/Loader.js index b015b4c7..c319e7c5 100644 --- a/src/extras/loaders/Loader.js +++ b/src/extras/loaders/Loader.js @@ -65,7 +65,7 @@ THREE.Loader.prototype = { }, - init_materials: function ( scope, materials, texture_path ) { + initMaterials: function ( scope, materials, texture_path ) { scope.materials = []; diff --git a/src/extras/loaders/SceneLoader.js b/src/extras/loaders/SceneLoader.js index e0698639..af9d7a7f 100644 --- a/src/extras/loaders/SceneLoader.js +++ b/src/extras/loaders/SceneLoader.js @@ -516,15 +516,11 @@ THREE.SceneLoader.prototype = { } else if ( g.type == "bin_mesh" ) { - binLoader.load( { model: get_url( g.url, data.urlBaseType ), - callback: create_callback( dg ) - } ); + binLoader.load( get_url( g.url, data.urlBaseType ), create_callback( dg ) ); } else if ( g.type == "ascii_mesh" ) { - jsonLoader.load( { model: get_url( g.url, data.urlBaseType ), - callback: create_callback( dg ) - } ); + jsonLoader.load( get_url( g.url, data.urlBaseType ), create_callback( dg ) ); } else if ( g.type == "embedded_mesh" ) {