diff --git a/application/controllers/projects.php b/application/controllers/projects.php index 0d83fef..a60306e 100644 --- a/application/controllers/projects.php +++ b/application/controllers/projects.php @@ -57,8 +57,6 @@ class Projects extends CI_Controller { $data = array( 'name' => $this->input->post('name'), 'description' => $this->input->post('description'), - 'defaultmodel' => $modelData['file_name'], - 'defaultconfig' => $configData['file_name'], ); $data['project_id'] = $this->project->create($data); @@ -79,7 +77,10 @@ class Projects extends CI_Controller { $config['file_name'] = 'defaultmodel'; $this->upload->initialize($config); - if (!$this->upload->do_upload('defaultmodel')) { + if ($this->upload->do_upload('defaultmodel')) { + $default = $this->upload->data(); + $this->project->update($data['project_id'], array('default_model' => $default['file_name'])); + } else { $this->messages->add(_('The default model could not be uploaded.'), 'error'); } } @@ -87,7 +88,10 @@ class Projects extends CI_Controller { $config['file_name'] = 'defaultconfig'; $this->upload->initialize($config); - if (!$this->upload->do_upload('defaultconfig')) { + if ($this->upload->do_upload('defaultconfig')) { + $default = $this->upload->data(); + $this->project->update($data['project_id'], array('default_config' => $default['file_name'])); + } else { $this->messages->add(_('The default config could not be uploaded.'), 'error'); } } diff --git a/application/views/header.php b/application/views/header.php index 82c8cfc..21ced43 100644 --- a/application/views/header.php +++ b/application/views/header.php @@ -11,12 +11,14 @@ + diff --git a/application/views/projects/detail.php b/application/views/projects/detail.php index d405736..308adb0 100644 --- a/application/views/projects/detail.php +++ b/application/views/projects/detail.php @@ -11,6 +11,29 @@

+ + +

+ + +

diff --git a/assets/js/jsc3d.min.js b/assets/js/jsc3d.min.js new file mode 100644 index 0000000..43ce65f --- /dev/null +++ b/assets/js/jsc3d.min.js @@ -0,0 +1,111 @@ +/* + Copyright (c) 2010 Humu humu2009@gmail.com + jsc3d is freely distributable under the terms of the MIT license. +*/ +var a;JSC3D={}; +JSC3D.Viewer=function(b){this.params={SceneUrl:"",InitRotationX:0,InitRotationY:0,InitRotationZ:0,ModelColor:"#caa618",BackgroundColor1:"#ffffff",BackgroundColor2:"#383840",RenderMode:"flat",Definition:"standard",MipMapping:"off"};this.canvas=b;this.selectionBuffer=this.zBuffer=this.colorBuffer=this.bkgColorBuffer=this.canvasData=this.ctx=null;this.frameWidth=b.width;this.frameHeight=b.height;this.defaultMaterial=this.scene=null;this.isFailed=this.isLoaded=false;this.errorMsg="";this.initRotZ=this.initRotY= +this.initRotX=0;this.zoomFactor=1;this.rotMatrix=new JSC3D.Matrix3x4;this.transformMatrix=new JSC3D.Matrix3x4;this.sceneUrl="";this.modelColor=13280792;this.bkgColor1=16777215;this.bkgColor2=3684416;this.renderMode="flat";this.definition="standard";this.isMipMappingOn=false;this.buttonStates={};this.keyStates={};this.mouseY=this.mouseX=0;this.afterupdate=this.beforeupdate=this.onmousemove=this.onmouseup=this.onmousedown=null;this.isDefaultInputHandlerEnabled=true;var c=this;this.canvas.addEventListener("mousedown", +function(f){c.mouseDownHandler(f)},false);this.canvas.addEventListener("mouseup",function(f){c.mouseUpHandler(f)},false);this.canvas.addEventListener("mousemove",function(f){c.mouseMoveHandler(f)},false);document.addEventListener("keydown",function(f){c.keyDownHandler(f)},false);document.addEventListener("keyup",function(f){c.keyUpHandler(f)},false)};a=JSC3D.Viewer.prototype;a.setParameter=function(b,c){this.params[b]=c}; +a.init=function(){this.sceneUrl=this.params.SceneUrl;this.initRotX=parseFloat(this.params.InitRotationX);this.initRotY=parseFloat(this.params.InitRotationY);this.initRotZ=parseFloat(this.params.InitRotationZ);this.modelColor=parseInt("0x"+this.params.ModelColor.substring(1));this.bkgColor1=parseInt("0x"+this.params.BackgroundColor1.substring(1));this.bkgColor2=parseInt("0x"+this.params.BackgroundColor2.substring(1));this.renderMode=this.params.RenderMode.toLowerCase();this.definition=this.params.Definition.toLowerCase(); +this.isMipMappingOn=this.params.MipMapping.toLowerCase()=="on";try{this.ctx=this.canvas.getContext("2d");this.canvasData=this.ctx.getImageData(0,0,this.canvas.width,this.canvas.height)}catch(b){this.canvasData=this.ctx=null}if(this.canvas.width<=2||this.canvas.height<=2)this.definition="standard";switch(this.definition){case "low":this.frameWidth=~~((this.canvas.width+1)/2);this.frameHeight=~~((this.canvas.height+1)/2);break;case "high":this.frameWidth=this.canvas.width*2;this.frameHeight=this.canvas.height* +2;break;case "standard":default:this.frameWidth=this.canvas.width;this.frameHeight=this.canvas.height;break}this.zoomFactor=1;this.rotMatrix.identity();this.transformMatrix.identity();this.isFailed=this.isLoaded=false;this.errorMsg="";this.scene=null;this.colorBuffer=new Array(this.frameWidth*this.frameHeight);this.zBuffer=new Array(this.frameWidth*this.frameHeight);this.selectionBuffer=new Array(this.frameWidth*this.frameHeight);this.bkgColorBuffer=new Array(this.frameWidth*this.frameHeight);this.generateBackground(); +this.defaultMaterial=new JSC3D.Material;this.defaultMaterial.ambientColor=0;this.defaultMaterial.diffuseColor=this.modelColor;this.defaultMaterial.transparency=0;this.defaultMaterial.simulateSpecular=true;this.drawBackground();this.loadScene()}; +a.update=function(b){if(this.isFailed)this.reportError(this.errorMsg);else{this.beforeupdate!=null&&typeof this.beforeupdate=="function"&&this.beforeupdate();if(this.scene){if(!b&&this.colorBuffer!=null){this.beginScene();this.render();this.endScene()}this.paint()}else this.drawBackground();this.afterupdate!=null&&typeof this.afterupdate=="function"&&this.afterupdate()}};a.rotate=function(b,c,f){this.rotMatrix.rotateAboutXAxis(b);this.rotMatrix.rotateAboutYAxis(c);this.rotMatrix.rotateAboutZAxis(f)}; +a.setRenderMode=function(b){this.renderMode=this.params.RenderMode=b}; +a.setDefinition=function(b){if(this.canvas.width<=2||this.canvas.height<=2)b="standard";if(b!=this.definition){this.definition=this.params.Definition=b;b=this.frameWidth;switch(this.definition){case "low":this.frameWidth=~~((this.canvas.width+1)/2);this.frameHeight=~~((this.canvas.height+1)/2);break;case "high":this.frameWidth=this.canvas.width*2;this.frameHeight=this.canvas.height*2;break;case "standard":default:this.frameWidth=this.canvas.width;this.frameHeight=this.canvas.height;break}var c=this.frameWidth* +this.frameHeight;if(this.colorBuffer.length=0&&b=0&&c0)for(var h=this.scene.getChildren(),i=0;i>8),g=255-(this.bkgColor1&255);f="#"+(255-((this.bkgColor1&16711680)>>16)).toString(16)+f.toString(16)+g.toString(16);this.ctx.strokeStyle=f;this.ctx.fillStyle=f;f=this.canvas.height*0.38;g=this.canvas.width-80;this.ctx.strokeRect(40,f,g,20);this.ctx.fillRect(42,f+2,(g-4)*c,16);this.ctx.font="12px Courier New";this.ctx.textAlign="left";this.ctx.fillText(b,40,f-4,g);this.ctx.restore()}}; +a.reportError=function(b){if(this.ctx){this.drawBackground();this.ctx.save();var c=this.canvas.height*0.38-4,f=255-((this.bkgColor1&65280)>>8),g=255-(this.bkgColor1&255);this.ctx.fillStyle="#"+(255-((this.bkgColor1&16711680)>>16)).toString(16)+f.toString(16)+g.toString(16);this.ctx.font="16px Courier New";this.ctx.textAlign="left";this.ctx.fillText(b,40,c);this.ctx.restore()}}; +a.generateBackground=function(){for(var b=this.frameWidth,c=this.frameHeight,f=this.bkgColorBuffer,g=(this.bkgColor1&16711680)>>16,d=(this.bkgColor1&65280)>>8,e=this.bkgColor1&255,h=(this.bkgColor2&16711680)>>16,i=(this.bkgColor2&65280)>>8,m=this.bkgColor2&255,n=0,q=0;q>1,i=d-h,m=0,n=0;for(e=0;e>16;b[n+1]=(d&65280)>>8;b[n+2]=d&255;b[n+3]=255;m+=q&1;n+=4}m+=e&1?i:-h}break;case "high":for(e=n=m=0;e>18;b[n+ +1]=(h&65280)+(i&65280)+(j&65280)+(A&65280)>>10;b[n+2]=(h&255)+(i&255)+(j&255)+(A&255)>>2;b[n+3]=255;m+=2;n+=4}m+=d}break;case "standard":default:for(n=m=0;m>16;b[n+1]=(d&65280)>>8;b[n+2]=d&255;b[n+3]=255}break}}; +a.render=function(){if(!this.scene.isEmpty()){var b=this.scene.aabb;this.transformMatrix.identity();this.transformMatrix.translate(-(b.minX+b.maxX)/2,-(b.minY+b.maxY)/2,-(b.minZ+b.maxZ)/2);this.transformMatrix.multiply(this.rotMatrix);this.transformMatrix.scale(this.zoomFactor,-this.zoomFactor,this.zoomFactor);this.transformMatrix.translate(this.frameWidth/2,this.frameHeight/2,0);b=this.sortScene(this.transformMatrix);for(var c=0;c0||(d.hasTexture()?d.texture.hasTransparency:false)}}}c.sort(function(h,i){if(!h.sortKey.isTransparnt&&i.sortKey.isTransparnt)return-1;if(h.sortKey.isTransparnt&&!i.sortKey.isTransparnt)return 1;if(h.sortKey.isTransparnt)return h.sortKey.depth- +i.sortKey.depth;return i.sortKey.depth-h.sortKey.depth});return c}; +a.renderPoint=function(b){var c=this.frameWidth,f=c-1,g=this.frameHeight-1,d=b.transformedVertexBuffer,e=b.transformedVertexNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,m=this.selectionBuffer,n=d.length/3,q=b.internalId,j=b.material?b.material.diffuseColor:this.defaultMaterial.diffuseColor;if(!e||e.length0?J:-J;if(J>0){var z=~~(d[k]+0.5),s=~~(d[k+1]+0.5);J=d[k+2];if(z>=0&&z=0&&si[z]){i[z]=J;h[z]=j;m[z]=q}z++;if(J>i[z]){i[z]=J;h[z]=j;m[z]=q}z+=f;if(J>i[z]){i[z]=J;h[z]=j;m[z]=q}z++;if(J>i[z]){i[z]=J;h[z]=j;m[z]=q}}}}}; +a.renderWireframe=function(b){var c=this.frameWidth,f=c-1,g=this.frameHeight-1,d=b.indexBuffer,e=b.transformedVertexBuffer,h=b.transformedFaceNormalZBuffer,i=this.colorBuffer,m=this.zBuffer,n=this.selectionBuffer,q=b.faceCount,j=b.internalId,A=b.material?b.material.diffuseColor:this.defaultMaterial.diffuseColor;if(!h||h.length0?z:-z;if(z<0){do;while(d[J++]!=-1)}else{var s,F;s=d[J++]*3;F=d[J++]*3;z=s;for(var E=false;!E;){var w=~~(e[s]+0.5),r=~~(e[s+1]+0.5),t=e[s+2],v=~~(e[F]+0.5),p=~~(e[F+1]+0.5),u=e[F+2],x=v-w,o=p-r,H=u-t,l,M,K;if(Math.abs(x)>Math.abs(o)){l=x;M=x>0?1:-1;K=x!=0?M*o/x:0;x=x!=0?M*H/x:0}else{l=o;K=o>0?1:-1;M=o!=0?K*x/o:0;x=o!=0?K*H/o:0}w=w;r=r;t=t;if(l<0){w=v;r=p;t=u;l=-l;M=-M;K=-K;x=-x}for(v=0;v=0&&w=0&&rm[p]){m[p]=t;i[p]=A;n[p]=j}}w+= +M;r+=K;t+=x}if(F==z)E=true;else{s=F;F=d[J]!=-1?d[J++]*3:z}}J++}}}; +a.renderSolidFlat=function(b){var c=this.frameWidth,f=this.frameHeight,g=b.indexBuffer,d=b.transformedVertexBuffer,e=b.transformedFaceNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,m=this.selectionBuffer,n=b.faceCount,q=b.internalId,j=b.material?b.material:this.defaultMaterial,A=j.getPalette(),k=j.transparency==0,J=j.transparency*255,z=255-J;if(j.transparency!=1){if(!e||e.length0?r:-r;if(r<0){do;while(g[w++]!=-1)}else{r=A[~~(r*255)];var t,v,p;t=g[w++]*3;v=g[w++]*3;do{p=g[w++]*3;j[0]=~~(d[t]+0.5);s[0]=~~(d[t+1]+0.5);F[0]=d[t+2];j[1]=~~(d[v]+0.5);s[1]=~~(d[v+1]+0.5);F[1]=d[v+2];j[2]=~~(d[p]+0.5);s[2]=~~(d[p+1]+0.5);F[2]=d[p+2];v=s[0]s[1]?0:1;u=s[u]>s[2]?u:2;var x=3-u-v;if(v!=u){var o=j[u],H=F[u],l=s[u]-s[v];l=l!=0?l:1;var M=(j[u]-j[v])/ +l;l=(F[u]-F[v])/l;var K=j[u],y=F[u],B=s[u]-s[x];B=B!=0?B:1;var G=(j[u]-j[x])/B;B=(F[u]-F[x])/B;var N=j[x],I=F[x],D=s[x]-s[v];D=D!=0?D:1;var sa=(j[x]-j[v])/D;D=(F[x]-F[v])/D;var P=s[u]*c;for(u=s[u];u>s[v];u--){if(u>=0&&us[x]){V=~~K;ka=y}else{V=~~N;ka=I}if(T>V){var aa;aa=T;T=V;V=aa;aa=C;C=ka;ka=aa}if(T<0)T=0;if(V>=c)V=c-1;ka=T!=V?(ka-C)/(V-T):1;aa=P+T;if(k){T=T;for(C=C;T<=V;T++,C+=ka){if(C>i[aa]){i[aa]=C;h[aa]=r;m[aa]=q}aa++}}else{T=T;for(C=C;Ti[aa]){var ha= +h[aa];h[aa]=(ha&16711680)*J+(r&16711680)*z>>8&16711680|(ha&65280)*J+(r&65280)*z>>8&65280|(ha&255)*J+(r&255)*z>>8&255;m[aa]=q}aa++}}}o-=M;H-=l;if(u>s[x]){K-=G;y-=B}else{N-=sa;I-=D}P-=c}}v=p}while(g[w]!=-1);w++}}}}; +a.renderSolidSmooth=function(b){var c=this.frameWidth,f=this.frameHeight,g=b.indexBuffer,d=b.transformedVertexBuffer,e=b.transformedVertexNormalZBuffer,h=b.transformedFaceNormalZBuffer,i=this.colorBuffer,m=this.zBuffer,n=this.selectionBuffer,q=b.faceCount,j=d.length/3,A=b.internalId,k=b.material?b.material:this.defaultMaterial,J=k.getPalette(),z=k.transparency==0,s=k.transparency*255,F=255-s;if(k.transparency!=1){if(!e||e.length0?v:-v;if(v<0){do;while(g[t++]!=-1)}else{var p,u,x,o,H;v=g[t++];x=v*3;p=g[t++];o=p*3;do{u=g[t++];H=u*3;j[0]=~~(d[x]+0.5);k[0]=~~(d[x+1]+0.5);E[0]=d[x+2]; +j[1]=~~(d[o]+0.5);k[1]=~~(d[o+1]+0.5);E[1]=d[o+2];j[2]=~~(d[H]+0.5);k[2]=~~(d[H+1]+0.5);E[2]=d[H+2];w[0]=e[v];w[1]=e[p];w[2]=e[u];if(b){if(w[0]<0)w[0]=-w[0];if(w[1]<0)w[1]=-w[1];if(w[2]<0)w[2]=-w[2]}p=k[0]k[1]?0:1;l=k[l]>k[2]?l:2;o=3-l-p;if(p!=l){var M=j[l],K=E[l],y=w[l]*255,B=k[l]-k[p];B=B!=0?B:1;var G=(j[l]-j[p])/B,N=(E[l]-E[p])/B;B=(w[l]-w[p])*255/B;var I=j[l],D=E[l],sa=w[l]*255,P=k[l]-k[o];P=P!=0?P:1;var T=(j[l]-j[o])/P,C=(E[l]-E[o])/P;P=(w[l]-w[o])*255/P; +var V=j[o],ka=E[o],aa=w[o]*255,ha=k[o]-k[p];ha=ha!=0?ha:1;var ma=(j[o]-j[p])/ha,ta=(E[o]-E[p])/ha;ha=(w[o]-w[p])*255/ha;var za=k[l]*c;for(l=k[l];l>k[p];l--){if(l>=0&&lk[o]){fa=~~I;ra=D;na=sa}else{fa=~~V;ra=ka;na=aa}if(X>fa){var Q;Q=X;X=fa;fa=Q;Q=Y;Y=ra;ra=Q;Q=da;da=na;na=Q}ra=X!=fa?(ra-Y)/(fa-X):1;na=X!=fa?(na-da)/(fa-X):1;if(X<0){Y-=X*ra;da-=X*na;X=0}if(fa>=c)fa=c-1;Q=za+X;if(z){X=X;Y=Y;for(da=da;X<=fa;X++,Y+=ra,da+=na){if(Y>m[Q]){m[Q]=Y;i[Q]=J[da>0?~~da:0];n[Q]= +A}Q++}}else{X=X;Y=Y;for(da=da;Xm[Q]){var la=J[da>0?~~da:0],ya=i[Q];i[Q]=(ya&16711680)*s+(la&16711680)*F>>8&16711680|(ya&65280)*s+(la&65280)*F>>8&65280|(ya&255)*s+(la&255)*F>>8&255;n[Q]=A}Q++}}}M-=G;K-=N;y-=B;if(l>k[o]){I-=T;D-=C;sa-=P}else{V-=ma;ka-=ta;aa-=ha}za-=c}}o=H;p=u}while(g[t]!=-1);t++}}}}; +a.renderSolidTexture=function(b){var c=this.frameWidth,f=this.frameHeight,g=b.indexBuffer,d=b.transformedVertexBuffer,e=b.transformedFaceNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,m=this.selectionBuffer,n=b.faceCount,q=b.internalId,j=b.texture,A=!j.hasTransparency,k=b.texCoordBuffer,J=b.texCoordIndexBuffer,z=j.data,s=j.width,F=s-1,E=j.hasMipmap()?j.mipmaps:null,w=E?j.mipentries:null;if(!e||e.length0?H:-H;if(H<0){do;while(g[o++]!=-1)}else{var l,M,K,y,B;H=g[o]*3;K=J[o]*2;o++;l=g[o]*3;y=J[o]*2;o++;if(E){M=g[o]*3;B=J[o]*2;s=j.width;r[0]=d[H];t[0]=d[H+1];r[1]=d[l];t[1]=d[l+1];r[2]=d[M];t[2]=d[M+1];p[0]=k[K]*s;u[0]=k[K+1]*s;p[1]=k[y]*s;u[1]=k[y+1]*s;p[2]=k[B]*s;u[2]=k[B+1]*s;z=(r[1]-r[0])*(t[2]-t[0])-(t[1]-t[0])*(r[2]-r[0]);if(z<0)z=-z;z+=1;F= +(p[1]-p[0])*(u[2]-u[0])-(u[1]-u[0])*(p[2]-p[0]);if(F<0)F=-F;z=F/z;F=0;if(z=w[w.length-1]){F=w.length-1;s=1}else for(;z>=w[F+1];){F++;s/=2}z=E[F];F=s-1}do{M=g[o]*3;B=J[o]*2;o++;r[0]=~~(d[H]+0.5);t[0]=~~(d[H+1]+0.5);v[0]=d[H+2];r[1]=~~(d[l]+0.5);t[1]=~~(d[l+1]+0.5);v[1]=d[l+2];r[2]=~~(d[M]+0.5);t[2]=~~(d[M+1]+0.5);v[2]=d[M+2];p[0]=k[K]*s;u[0]=k[K+1]*s;p[1]=k[y]*s;u[1]=k[y+1]*s;p[2]=k[B]*s;u[2]=k[B+1]*s;l=t[0]t[1]?0:1;G=t[G]>t[2]?G:2;y=3-G-l;if(l!= +G){var N=r[G],I=v[G],D=p[G],sa=u[G],P=t[G]-t[l];P=P!=0?P:1;var T=(r[G]-r[l])/P,C=(v[G]-v[l])/P,V=(p[G]-p[l])/P;P=(u[G]-u[l])/P;var ka=r[G],aa=v[G],ha=p[G],ma=u[G],ta=t[G]-t[y];ta=ta!=0?ta:1;var za=(r[G]-r[y])/ta,X=(v[G]-v[y])/ta,Y=(p[G]-p[y])/ta;ta=(u[G]-u[y])/ta;var da=r[y],fa=v[y],ra=p[y],na=u[y],Q=t[y]-t[l];Q=Q!=0?Q:1;var la=(r[y]-r[l])/Q,ya=(v[y]-v[l])/Q,wa=(p[y]-p[l])/Q;Q=(u[y]-u[l])/Q;var Ga=t[G]*c;for(G=t[G];G>t[l];G--){if(G>=0&&Gt[y]){R=~~ka;ba=aa; +S=ha;$=ma}else{R=~~da;ba=fa;S=ra;$=na}if(Z>R){var U;U=Z;Z=R;R=U;U=oa;oa=ba;ba=U;U=pa;pa=S;S=U;U=L;L=$;$=U}ba=Z!=R?(ba-oa)/(R-Z):1;S=Z!=R?(S-pa)/(R-Z):1;$=Z!=R?($-L)/(R-Z):1;if(Z<0){oa-=Z*ba;pa-=Z*S;L-=Z*$;Z=0}if(R>=c)R=c-1;U=Ga+Z;if(A){Z=Z;oa=oa;pa=pa;for(L=L;Z<=R;Z++,oa+=ba,pa+=S,L+=$){if(oa>i[U]){i[U]=oa;h[U]=z[(L&F)*s+(pa&F)];m[U]=q}U++}}else{Z=Z;oa=oa;pa=pa;for(L=L;Zi[U]){var ua=z[(L&F)*s+(pa&F)],va=h[U],W=ua>>24&255,O=255-W;h[U]=(va&16711680)*O+(ua&16711680)*W>> +8&16711680|(va&65280)*O+(ua&65280)*W>>8&65280|(va&255)*O+(ua&255)*W>>8&255;m[U]=q}U++}}}N-=T;I-=C;D-=V;sa-=P;if(G>t[y]){ka-=za;aa-=X;ha-=Y;ma-=ta}else{da-=la;fa-=ya;ra-=wa;na-=Q}Ga-=c}}l=M;y=B}while(g[o]!=-1);o++}}}; +a.renderTextureFlat=function(b){var c=this.frameWidth,f=this.frameHeight,g=b.indexBuffer,d=b.transformedVertexBuffer,e=b.transformedFaceNormalZBuffer,h=this.colorBuffer,i=this.zBuffer,m=this.selectionBuffer,n=b.faceCount,q=b.internalId,j=b.material?b.material:this.defaultMaterial,A=j.getPalette(),k=b.texture,J=j.transparency==0&&!k.hasTransparency,z=~~((1-j.transparency)*255),s=b.texCoordBuffer,F=b.texCoordIndexBuffer,E=k.data,w=k.width,r=w-1,t=k.hasMipmap()?k.mipmaps:null,v=t?k.mipentries:null;if(j.transparency!= +1){if(!e||e.length0?M:-M;if(M<0){do;while(g[l++]!=-1)}else{M=A[~~(M*255)];var K,y,B,G,N,I;K=g[l]*3;G=F[l]*2;l++;y=g[l]*3;N=F[l]*2;l++;if(t){B=g[l]*3;I=F[l]*2;w=k.width;j[0]=d[K];p[0]=d[K+1];j[1]=d[y];p[1]=d[y+1];j[2]=d[B]; +p[2]=d[B+1];x[0]=s[G]*w;o[0]=s[G+1]*w;x[1]=s[N]*w;o[1]=s[N+1]*w;x[2]=s[I]*w;o[2]=s[I+1]*w;E=(j[1]-j[0])*(p[2]-p[0])-(p[1]-p[0])*(j[2]-j[0]);if(E<0)E=-E;E+=1;r=(x[1]-x[0])*(o[2]-o[0])-(o[1]-o[0])*(x[2]-x[0]);if(r<0)r=-r;E=r/E;r=0;if(E=v[v.length-1]){r=v.length-1;w=1}else for(;E>=v[r+1];){r++;w/=2}E=t[r];r=w-1}do{B=g[l]*3;I=F[l]*2;l++;j[0]=~~(d[K]+0.5);p[0]=~~(d[K+1]+0.5);u[0]=d[K+2];j[1]=~~(d[y]+0.5);p[1]=~~(d[y+1]+0.5);u[1]=d[y+2];j[2]=~~(d[B]+0.5);p[2]=~~(d[B+1]+0.5);u[2]=d[B+ +2];x[0]=s[G]*w;o[0]=s[G+1]*w;x[1]=s[N]*w;o[1]=s[N+1]*w;x[2]=s[I]*w;o[2]=s[I+1]*w;y=p[0]p[1]?0:1;D=p[D]>p[2]?D:2;N=3-D-y;if(y!=D){var sa=j[D],P=u[D],T=x[D],C=o[D],V=p[D]-p[y];V=V!=0?V:1;var ka=(j[D]-j[y])/V,aa=(u[D]-u[y])/V,ha=(x[D]-x[y])/V;V=(o[D]-o[y])/V;var ma=j[D],ta=u[D],za=x[D],X=o[D],Y=p[D]-p[N];Y=Y!=0?Y:1;var da=(j[D]-j[N])/Y,fa=(u[D]-u[N])/Y,ra=(x[D]-x[N])/Y;Y=(o[D]-o[N])/Y;var na=j[N],Q=u[N],la=x[N],ya=o[N],wa=p[N]-p[y];wa=wa!=0?wa:1;var Ga=(j[N]-j[y])/ +wa,Z=(u[N]-u[y])/wa,oa=(x[N]-x[y])/wa;wa=(o[N]-o[y])/wa;var pa=p[D]*c;for(D=p[D];D>p[y];D--){if(D>=0&&Dp[N]){$=~~ma;U=ta;ua=za;va=X}else{$=~~na;U=Q;ua=la;va=ya}if(L>$){var W;W=L;L=$;$=W;W=R;R=U;U=W;W=ba;ba=ua;ua=W;W=S;S=va;va=W}U=L!=$?(U-R)/($-L):1;ua=L!=$?(ua-ba)/($-L):1;va=L!=$?(va-S)/($-L):1;if(L<0){R-=L*U;ba-=L*ua;S-=L*va;L=0}if($>=c)$=c-1;W=pa+L;if(J){L=L;R=R;ba=ba;for(S=S;L<=$;L++,R+=U,ba+=ua,S+=va){if(R>i[W]){i[W]=R;var O=E[(S&r)*w+(ba&r)],ia=((M& +16711680)>>16)*((O&16711680)>>8),qa=((M&65280)>>8)*((O&65280)>>8),ca=(M&255)*(O&255)>>8;h[W]=ia&16711680|qa&65280|ca&255;m[W]=q}W++}}else{L=L;R=R;ba=ba;for(S=S;L<$;L++,R+=U,ba+=ua,S+=va){if(R>i[W]){ca=E[(S&r)*w+(ba&r)];O=h[W];var ja=(ca>>24&255)*(z&255)>>8;ia=((M&16711680)>>16)*((ca&16711680)>>8);qa=((M&65280)>>8)*((ca&65280)>>8);ca=(M&255)*(ca&255)>>8;if(ja>250)i[W]=R;else{var ga=255-ja;ia=ia*ja+(O&16711680)*ga>>8;qa=qa*ja+(O&65280)*ga>>8;ca=ca*ja+(O&255)*ga>>8}h[W]=ia&16711680|qa&65280|ca&255;m[W]= +q}W++}}}sa-=ka;P-=aa;T-=ha;C-=V;if(D>p[N]){ma-=da;ta-=fa;za-=ra;X-=Y}else{na-=Ga;Q-=Z;la-=oa;ya-=wa}pa-=c}}y=B;N=I}while(g[l]!=-1);l++}}}}; +a.renderTextureSmooth=function(b){var c=this.frameWidth,f=this.frameHeight,g=b.indexBuffer,d=b.transformedVertexBuffer,e=b.transformedVertexNormalZBuffer,h=b.transformedFaceNormalZBuffer,i=this.colorBuffer,m=this.zBuffer,n=this.selectionBuffer,q=b.faceCount,j=b.internalId,A=d.length/3,k=b.material?b.material:this.defaultMaterial,J=k.getPalette(),z=b.texture,s=k.transparency==0&&!z.hasTransparency,F=~~((1-k.transparency)*255),E=b.texCoordBuffer,w=b.texCoordIndexBuffer,r=z.data,t=z.width,v=t-1,p=z.hasMipmap()? +z.mipmaps:null,u=p?z.mipentries:null;if(k.transparency!=1){if(!e||e.length0?y:-y;if(y<0){do;while(g[K++]!=-1)}else{var B,G,N,I,D,sa,P,T;y=g[K];N=y*3;sa=w[K]*2;K++;B=g[K];I=B*3;P=w[K]*2;K++;if(p){D=g[K]*3;T=w[K]*2;t=z.width;A[0]=d[N];k[0]=d[N+1];A[1]=d[I];k[1]=d[I+1];A[2]=d[D];k[2]=d[D+1];H[0]=E[sa]*t;l[0]=E[sa+1]*t;H[1]=E[P]*t;l[1]=E[P+1]*t;H[2]=E[T]*t;l[2]=E[T+1]*t;r=(A[1]-A[0])*(k[2]-k[0])-(k[1]-k[0])*(A[2]-A[0]);if(r<0)r=-r;r+=1;v=(H[1]-H[0])*(l[2]-l[0])-(l[1]-l[0])*(H[2]-H[0]);if(v<0)v=-v;r=v/r;v=0;if(r=u[u.length- +1]){v=u.length-1;t=1}else for(;r>=u[v+1];){v++;t/=2}r=p[v];v=t-1}do{G=g[K];D=G*3;T=w[K]*2;K++;A[0]=~~(d[N]+0.5);k[0]=~~(d[N+1]+0.5);x[0]=d[N+2];A[1]=~~(d[I]+0.5);k[1]=~~(d[I+1]+0.5);x[1]=d[I+2];A[2]=~~(d[D]+0.5);k[2]=~~(d[D+1]+0.5);x[2]=d[D+2];H[0]=E[sa]*t;l[0]=E[sa+1]*t;H[1]=E[P]*t;l[1]=E[P+1]*t;H[2]=E[T]*t;l[2]=E[T+1]*t;o[0]=e[y];o[1]=e[B];o[2]=e[G];if(b){if(o[0]<0)o[0]=-o[0];if(o[1]<0)o[1]=-o[1];if(o[2]<0)o[2]=-o[2]}B=k[0]k[1]?0:1;C=k[C]>k[2]?C:2;I=3-C-B;if(B!= +C){P=A[C];var V=x[C],ka=H[C],aa=l[C],ha=o[C]*255,ma=k[C]-k[B];ma=ma!=0?ma:1;var ta=(A[C]-A[B])/ma,za=(x[C]-x[B])/ma,X=(H[C]-H[B])/ma,Y=(l[C]-l[B])/ma;ma=(o[C]-o[B])*255/ma;var da=A[C],fa=x[C],ra=H[C],na=l[C],Q=o[C]*255,la=k[C]-k[I];la=la!=0?la:1;var ya=(A[C]-A[I])/la,wa=(x[C]-x[I])/la,Ga=(H[C]-H[I])/la,Z=(l[C]-l[I])/la;la=(o[C]-o[I])*255/la;var oa=A[I],pa=x[I],L=H[I],R=l[I],ba=o[I]*255,S=k[I]-k[B];S=S!=0?S:1;var $=(A[I]-A[B])/S,U=(x[I]-x[B])/S,ua=(H[I]-H[B])/S,va=(l[I]-l[B])/S;S=(o[I]-o[B])*255/S; +var W=k[C]*c;for(C=k[C];C>k[B];C--){if(C>=0&&Ck[I]){ga=~~da;Aa=fa;Ba=ra;Ca=na;Da=Q}else{ga=~~oa;Aa=pa;Ba=L;Ca=R;Da=ba}if(O>ga){var ea;ea=O;O=ga;ga=ea;ea=ia;ia=Aa;Aa=ea;ea=qa;qa=Ba;Ba=ea;ea=ca;ca=Ca;Ca=ea;ea=ja;ja=Da;Da=ea}Aa=O!=ga?(Aa-ia)/(ga-O):1;Ba=O!=ga?(Ba-qa)/(ga-O):1;Ca=O!=ga?(Ca-ca)/(ga-O):1;Da=O!=ga?(Da-ja)/(ga-O):0;if(O<0){ia-=O*Aa;qa-=O*Ba;ca-=O*Ca;ja-=O*Da;O=0}if(ga>=c)ga=c-1;ea=W+O;if(s){O=O;ia=ia;ja=ja;qa=qa;for(ca=ca;O<=ga;O++, +ia+=Aa,ja+=Da,qa+=Ba,ca+=Ca){if(ia>m[ea]){m[ea]=ia;var xa=J[ja>0?~~ja:0],Fa=r[(ca&v)*t+(qa&v)],Ha=((xa&16711680)>>16)*((Fa&16711680)>>8),Ia=((xa&65280)>>8)*((Fa&65280)>>8);xa=(xa&255)*(Fa&255)>>8;i[ea]=Ha&16711680|Ia&65280|xa&255;n[ea]=j}ea++}}else{O=O;ia=ia;ja=ja;qa=qa;for(ca=ca;Om[ea]){xa=J[ja>0?~~ja:0];var Ea=r[(ca&v)*t+(qa&v)];Fa=i[ea];var Ja=(Ea>>24&255)*(F&255)>>8;Ha=((xa&16711680)>>16)*((Ea&16711680)>>8);Ia=((xa&65280)>>8)*((Ea&65280)>>8);xa=(xa&255)* +(Ea&255)>>8;if(Ja>250)m[ea]=ia;else{Ea=255-Ja;Ha=Ha*Ja+(Fa&16711680)*Ea>>8;Ia=Ia*Ja+(Fa&65280)*Ea>>8;xa=xa*Ja+(Fa&255)*Ea>>8}i[ea]=Ha&16711680|Ia&65280|xa&255;n[ea]=j}ea++}}}P-=ta;V-=za;ka-=X;aa-=Y;ha-=ma;if(C>k[I]){da-=ya;fa-=wa;ra-=Ga;na-=Z;Q-=la}else{oa-=$;pa-=U;L-=ua;R-=va;ba-=S}W-=c}}B=G;I=D;P=T}while(g[K]!=-1);K++}}}};a.params=null;a.canvas=null;a.ctx=null;a.canvasData=null;a.bkgColorBuffer=null;a.colorBuffer=null;a.zBuffer=null;a.selectionBuffer=null;a.frameWidth=0;a.frameHeight=0; +a.scene=null;a.defaultMaterial=null;a.isLoaded=false;a.isFailed=false;a.errorMsg="";a.initRotX=0;a.initRotY=0;a.initRotZ=0;a.zoomFactor=1;a.rotMatrix=null;a.transformMatrix=null;a.sceneUrl="";a.modelColor=13280792;a.bkgColor1=16777215;a.bkgColor2=16777088;a.renderMode="flat";a.definition="standard";a.isMipMappingOn=false;a.buttonStates=null;a.keyStates=null;a.mouseX=0;a.mouseY=0;a.onmousedown=null;a.onmouseup=null;a.onmousemove=null;a.beforeupdate=null;a.afterupdate=null; +a.isDefaultInputHandlerEnabled=false;JSC3D.PickInfo=function(){this.canvasY=this.canvasX=0;this.depth=-Infinity;this.mesh=null};JSC3D.Scene=function(){this.name="";this.aabb=null;this.children=[];this.maxChildId=1};a=JSC3D.Scene.prototype;a.init=function(){if(!this.isEmpty()){for(var b=0;bf)this.aabb.minX=f;if(this.aabb.minY>g)this.aabb.minY=g;if(this.aabb.minZ>d)this.aabb.minZ=d;if(this.aabb.maxX=2&&this.texCoordIndexBuffer!=null&&this.texCoordIndexBuffer.length>=3&&this.texCoordIndexBuffer.length>=this.indexBuffer.length&&this.texture!=null&&this.texture.hasData()}; +a.calcFaceCount=function(){this.faceCount=0;var b=this.indexBuffer;b[b.length-1]!=-1&&b.push(-1);for(var c=0;cc)c=d;if(emaxY)maxY=e;if(hmaxZ)maxZ=h}this.aabb.minX=b;this.aabb.minY=minY;this.aabb.minZ=minZ;this.aabb.maxX=c;this.aabb.maxY=maxY;this.aabb.maxZ=maxZ}; +a.calcFaceNormals=function(){for(var b=this.vertexBuffer,c=this.indexBuffer,f=this.faceNormalBuffer,g=0,d=0;g0){e/=q;m/=q;n/=q}f[d++]=e;f[d++]=m;f[d++]=n;do;while(c[g++]!=-1)}}; +a.calcVertexNormals=function(){if(!this.faceNormalBuffer){this.faceNormalBuffer=new Array(this.faceCount*3);this.calcFaceNormals()}for(var b=this.vertexBuffer,c=this.indexBuffer,f=this.faceNormalBuffer,g=this.vertexNormalBuffer,d=0;d1){c/=i; +f/=i;h/=i}i=Math.sqrt(c*c+f*f+h*h);if(i>0){c/=i;f/=i;h/=i}g[d]=c;g[d+1]=f;g[d+2]=h}};a.checkValid=function(){};a.name="";a.metadata="";a.visible=false;a.aabb=null;a.vertexBuffer=null;a.indexBuffer=null;a.vertexNormalBuffer=null;a.faceNormalBuffer=null;a.texCoordBuffer=null;a.texCoordIndexBuffer=null;a.material=null;a.texture=null;a.faceCount=0;a.isDoubleSided=false;a.internalId=0;a.transformedVertexBuffer=null;a.transformedVertexNormalZBuffer=null;a.transformedFaceNormalZBuffer=null; +JSC3D.Material=function(){this.name="";this.ambientColor=0;this.diffuseColor=8355711;this.transparency=0;this.simulateSpecular=false;this.palette=null};a=JSC3D.Material.prototype;a.getPalette=function(){if(!this.palette){this.palette=new Array(256);this.generatePalette()}return this.palette}; +a.generatePalette=function(){var b=(this.ambientColor&16711680)>>16,c=(this.ambientColor&65280)>>8,f=this.ambientColor&255,g=(this.diffuseColor&16711680)>>16,d=(this.diffuseColor&65280)>>8,e=this.diffuseColor&255;if(this.simulateSpecular){for(var h=0;h<204;){var i=b+h*g/204,m=c+h*d/204,n=f+h*e/204;if(i>255)i=255;if(m>255)m=255;if(n>255)n=255;this.palette[h++]=i<<16|m<<8|n}for(;h<256;){i=b+g+(h-204)*(255-g)/82;m=c+d+(h-204)*(255-d)/82;n=f+e+(h-204)*(255-e)/82;if(i>255)i=255;if(m>255)m=255;if(n>255)n= +255;this.palette[h++]=i<<16|m<<8|n}}else for(h=0;h<256;){i=b+h*g/256;m=c+h*d/256;n=f+h*e/256;if(i>255)i=255;if(m>255)m=255;if(n>255)n=255;this.palette[h++]=i<<16|m<<8|n}};a.name="";a.ambientColor=0;a.diffuseColor=8355711;a.transparency=0;a.simulateSpecular=false;a.palette=null;JSC3D.Texture=function(){this.name="";this.height=this.width=0;this.mipentries=this.mipmaps=this.data=null;this.hasTransparency=false;this.srcUrl="";this.onready=null};a=JSC3D.Texture.prototype; +a.createFromUrl=function(b,c){var f=this,g=new Image;g.onload=function(){f.data=null;f.mipmaps=null;f.mipentries=null;f.width=0;f.height=0;f.hasTransparency=false;f.srcUrl="";f.createFromImage(this,c)};g.onerror=function(){f.data=null;f.mipmaps=null;f.mipentries=null;f.width=0;f.height=0;f.hasTransparency=false;f.srcUrl=""};g.src=b}; +a.createFromImage=function(b,c){if(!(b.width<=0||b.height<=0)){var f=false,g=JSC3D.Texture.cv;if(!g)try{g=document.createElement("canvas");JSC3D.Texture.cv=g;f=true}catch(d){return}var e=b.width>b.height?b.width:b.height;e=e<=32?32:e<=64?64:e<=128?128:e<=256?256:512;if(g.width!=e||g.height!=e){g.width=g.height=e;f=true}var h;try{var i=g.getContext("2d");f||i.clearRect(0,0,e,e);i.drawImage(b,0,0,e,e);h=i.getImageData(0,0,e,e).data}catch(m){return}f=h.length/4;this.data=new Array(f);for(var n=i=0;i< +f;i++,n+=4){g=h[n+3];this.data[i]=g<<24|h[n]<<16|h[n+1]<<8|h[n+2];if(g<255)this.hasTransparency=true}this.height=this.width=e;this.mipmaps=null;c&&this.generateMipmaps();this.srcUrl=b.src;this.onready!=null&&typeof this.onready=="function"&&this.onready()}};a.hasData=function(){return this.data!=null}; +a.generateMipmaps=function(){if(!(this.width<=1||this.data==null||this.mipmaps!=null)){this.mipmaps=[this.data];this.mipentries=[1];for(var b=1+~~(0.1+Math.log(this.width)*Math.LOG2E),c=this.width>>1,f=1;f>>2)+((j&4278190080)>>>2)+((A&4278190080)>>>2)+((k&4278190080)>>>2)&4278190080)+((q&16711680)+(j&16711680)+(A&16711680)+(k&16711680)>> +2&16711680)+((q&65280)+(j&65280)+(A&65280)+(k&65280)>>2&65280)+((q&255)+(j&255)+(A&255)+(k&255)>>2&255);h+=2;i++}h+=e}this.mipmaps.push(g);this.mipentries.push(Math.pow(4,f));c>>=1}}};a.hasMipmap=function(){return this.mipmaps!=null};a.name="";a.data=null;a.mipmaps=null;a.mipentries=null;a.width=0;a.height=0;a.hasTransparency=false;a.srcUrl="";a.onready=null;JSC3D.Texture.cv=null;JSC3D.AABB=function(){this.minZ=this.maxZ=this.minY=this.maxY=this.minX=this.maxX=0}; +JSC3D.AABB.prototype.center=function(){return[(this.minX+this.maxX)/2,(this.minY+this.maxY)/2,(this.minZ+this.maxZ)/2]};JSC3D.AABB.prototype.lengthOfDiagonal=function(){var b=this.maxX-this.minX,c=this.maxY-this.minY,f=this.maxZ-this.minZ;return Math.sqrt(b*b+c*c+f*f)};JSC3D.Matrix3x4=function(){this.m00=1;this.m10=this.m03=this.m02=this.m01=0;this.m11=1;this.m21=this.m20=this.m13=this.m12=0;this.m22=1;this.m23=0};a=JSC3D.Matrix3x4.prototype; +a.identity=function(){this.m00=1;this.m10=this.m03=this.m02=this.m01=0;this.m11=1;this.m21=this.m20=this.m13=this.m12=0;this.m22=1;this.m23=0};a.scale=function(b,c,f){this.m00*=b;this.m01*=b;this.m02*=b;this.m03*=b;this.m10*=c;this.m11*=c;this.m12*=c;this.m13*=c;this.m20*=f;this.m21*=f;this.m22*=f;this.m23*=f};a.translate=function(b,c,f){this.m03+=b;this.m13+=c;this.m23+=f}; +a.rotateAboutXAxis=function(b){if(b!=0){b*=Math.PI/180;var c=Math.cos(b);b=Math.sin(b);var f=c*this.m11+b*this.m21,g=c*this.m12+b*this.m22,d=c*this.m13+b*this.m23,e=c*this.m20-b*this.m10,h=c*this.m21-b*this.m11,i=c*this.m22-b*this.m12,m=c*this.m23-b*this.m13;this.m10=c*this.m10+b*this.m20;this.m11=f;this.m12=g;this.m13=d;this.m20=e;this.m21=h;this.m22=i;this.m23=m}}; +a.rotateAboutYAxis=function(b){if(b!=0){b*=Math.PI/180;var c=Math.cos(b);b=Math.sin(b);var f=c*this.m01+b*this.m21,g=c*this.m02+b*this.m22,d=c*this.m03+b*this.m23,e=c*this.m20-b*this.m00,h=c*this.m21-b*this.m01,i=c*this.m22-b*this.m02,m=c*this.m23-b*this.m03;this.m00=c*this.m00+b*this.m20;this.m01=f;this.m02=g;this.m03=d;this.m20=e;this.m21=h;this.m22=i;this.m23=m}}; +a.rotateAboutZAxis=function(b){if(b!=0){b*=Math.PI/180;var c=Math.cos(b);b=Math.sin(b);var f=c*this.m10+b*this.m00,g=c*this.m11+b*this.m01,d=c*this.m12+b*this.m02,e=c*this.m13+b*this.m03,h=c*this.m01-b*this.m11,i=c*this.m02-b*this.m12,m=c*this.m03-b*this.m13;this.m00=c*this.m00-b*this.m10;this.m01=h;this.m02=i;this.m03=m;this.m10=f;this.m11=g;this.m12=d;this.m13=e}}; +a.multiply=function(b){var c=b.m00*this.m01+b.m01*this.m11+b.m02*this.m21,f=b.m00*this.m02+b.m01*this.m12+b.m02*this.m22,g=b.m00*this.m03+b.m01*this.m13+b.m02*this.m23+b.m03,d=b.m10*this.m00+b.m11*this.m10+b.m12*this.m20,e=b.m10*this.m01+b.m11*this.m11+b.m12*this.m21,h=b.m10*this.m02+b.m11*this.m12+b.m12*this.m22,i=b.m10*this.m03+b.m11*this.m13+b.m12*this.m23+b.m13,m=b.m20*this.m00+b.m21*this.m10+b.m22*this.m20,n=b.m20*this.m01+b.m21*this.m11+b.m22*this.m21,q=b.m20*this.m02+b.m21*this.m12+b.m22*this.m22, +j=b.m20*this.m03+b.m21*this.m13+b.m22*this.m23+b.m23;this.m00=b.m00*this.m00+b.m01*this.m10+b.m02*this.m20;this.m01=c;this.m02=f;this.m03=g;this.m10=d;this.m11=e;this.m12=h;this.m13=i;this.m20=m;this.m21=n;this.m22=q;this.m23=j}; +JSC3D.Math3D={transformVectors:function(b,c,f){for(var g=0;g0)for(var h=0;h0)switch(i[0]){case "v":for(var A=1;A1&&k[1]!=""){if(!e.texCoordIndexBuffer)e.texCoordIndexBuffer= +[];e.texCoordIndexBuffer.push(parseInt(k[1])-1)}}e.indexBuffer.push(-1);e.texCoordIndexBuffer&&e.texCoordIndexBuffer.push(-1);break;case "mtllib":if(i.length>1){h=i[1];g.push(h)}else h="";break;case "usemtl":if(i.length>1&&i[1]!=""&&h!=""){i=i[1];A=h+"-"+i;e=f[A];if(!e){e=new JSC3D.Mesh;e.name="obj-"+d++;e.indexBuffer=[];e.mtllib=h;e.mtl=i;f[A]=e}e=e}else e=q;break;case "#":default:break}}d=m.length>=3?new Array(m.length/3):null;h=n.length>=2?new Array(n.length/2):null;for(id in f){e=f[id];if(m.length>= +3&&e.indexBuffer.length>0){for(c=0;c=2&&e.texCoordIndexBuffer!=null&&e.texCoordIndexBuffer.length>0){for(c=0;c0)switch(d[0]){case "newmtl":f=d[1];d={};d.material=new JSC3D.Material;d.textureFileName="";c[f]=d;break;case "Ka":break;case "Kd":if(d.length==4&&!isNaN(d[1])){var e=parseFloat(d[1])*255&255,h=parseFloat(d[2])*255&255,i=parseFloat(d[3])*255&255;d=c[f];if(d!=null)d.material.diffuseColor=e<<16|h<<8|i}break;case "Ks":break;case "d":if(d.length==2&&!isNaN(d[1])){e=parseFloat(d[1]);d=c[f]; +if(d!=null)d.material.transparency=1-e}break;case "illum":break;case "map_Kd":if(d.length==2){e=d[1];d=c[f];if(d!=null)d.textureFileName=e}break;case "#":default:break}}return c};a.setupTexture=function(b,c){var f=this,g=new JSC3D.Texture;g.onready=function(){for(var d=0;d