Write whole model information to menu.
This commit is contained in:
parent
eed59c22e9
commit
4397d7ec02
@ -1,11 +1,11 @@
|
||||
/* JSModeler 0.33.229 - http://www.github.com/kovacsv/JSModeler */ 'use strict';var JSM={mainVersion:0,subVersion:33,Eps:1E-8,Inf:9999999999,RadDeg:57.29577951308232,DegRad:0.017453292519943,IsZero:function(a){return Math.abs(a)<JSM.Eps},IsPositive:function(a){return a>JSM.Eps},IsNegative:function(a){return a<-JSM.Eps},IsLower:function(a,b){return b-a>JSM.Eps},IsGreater:function(a,b){return a-b>JSM.Eps},IsEqual:function(a,b){return Math.abs(b-a)<JSM.Eps},IsEqualWithEps:function(a,b,c){return Math.abs(b-a)<c},IsLowerOrEqual:function(a,b){return JSM.IsLower(a,b)||
|
||||
/* JSModeler 0.33.232 - http://www.github.com/kovacsv/JSModeler */ 'use strict';var JSM={mainVersion:0,subVersion:33,Eps:1E-8,Inf:9999999999,RadDeg:57.29577951308232,DegRad:0.017453292519943,IsZero:function(a){return Math.abs(a)<JSM.Eps},IsPositive:function(a){return a>JSM.Eps},IsNegative:function(a){return a<-JSM.Eps},IsLower:function(a,b){return b-a>JSM.Eps},IsGreater:function(a,b){return a-b>JSM.Eps},IsEqual:function(a,b){return Math.abs(b-a)<JSM.Eps},IsEqualWithEps:function(a,b,c){return Math.abs(b-a)<c},IsLowerOrEqual:function(a,b){return JSM.IsLower(a,b)||
|
||||
JSM.IsEqual(a,b)},IsGreaterOrEqual:function(a,b){return JSM.IsGreater(a,b)||JSM.IsEqual(a,b)},Minimum:function(a,b){return JSM.IsLower(a,b)?a:b},Maximum:function(a,b){return JSM.IsGreater(a,b)?a:b},ArcSin:function(a){return JSM.IsGreaterOrEqual(a,1)?Math.PI/2:JSM.IsLowerOrEqual(a,-1)?-Math.PI/2:Math.asin(a)},ArcCos:function(a){return JSM.IsGreaterOrEqual(a,1)?0:JSM.IsLowerOrEqual(a,-1)?Math.PI:Math.acos(a)},RandomNumber:function(a,b){return Math.random()*(b-a)+a},RandomInt:function(a,b){return Math.floor(Math.random()*
|
||||
(b-a+1)+a)},SeededRandomInt:function(a,b,c){return Math.floor((9301*c+49297)%233280/233280*(b-a+1)+a)},ValueOrDefault:function(a,b){return void 0===a||null===a?b:a},CopyObjectProperties:function(a,b,c){if(!(void 0===a||null===a||void 0===b||null===b))for(var d in a)if(a.hasOwnProperty(d)&&(c||void 0===b[d]||null===b[d]))b[d]=a[d]},Assert:function(a,b){if(!a){var c="Assertion failed.";void 0!==b&&null!==b&&(c+=" "+b);alert(c)}},Timer:function(){this.stop=this.start=0}};
|
||||
JSM.Timer.prototype.Start=function(){this.start=(new Date).getTime()};JSM.Timer.prototype.Stop=function(){this.end=(new Date).getTime()};JSM.Timer.prototype.Result=function(){return this.end-this.start};JSM.FPSCounter=function(){this.current=this.frames=this.start=null};
|
||||
JSM.FPSCounter.prototype.Get=function(a){var b=(new Date).getTime();null===this.start&&(this.start=b,this.current=this.frames=0);if(null===a||void 0===a)a=1E3;this.frames+=1;var c=b-this.start;c>=a&&(this.current=1E3*(this.frames/c),this.start=b,this.frames=0);return parseInt(this.current,10)};JSM.BubbleSort=function(a,b){if(!(2>a.length||void 0===b||null===b)){var c,d;for(c=0;c<a.length-1;c++)for(d=0;d<a.length-c-1;d++)if(!b(a[d],a[d+1])){var e=a,f=d+1,g=e[d];e[d]=e[f];e[f]=g}}};
|
||||
JSM.AsyncEnvironment=function(a){this.parameters=a};JSM.AsyncEnvironment.prototype.OnStart=function(a,b){if(void 0!==this.parameters&&void 0!==this.parameters.onStart)this.parameters.onStart(a,b)};JSM.AsyncEnvironment.prototype.OnProcess=function(a,b){if(void 0!==this.parameters&&void 0!==this.parameters.onProcess)this.parameters.onProcess(a,b)};JSM.AsyncEnvironment.prototype.OnFinish=function(a){if(void 0!==this.parameters&&void 0!==this.parameters.onFinish)this.parameters.onFinish(a)};
|
||||
JSM.AsyncRunTask=function(a,b,c,d,e){function f(g){var h=a();b.OnProcess(g,e);h&&g<c-1?setTimeout(function(){f(g+1)},d):setTimeout(function(){b.OnFinish(e)},d)}if(void 0===b||null===b){var g,h;for(g=0;g<c&&!(h=a(),!h);g++);}else b.OnStart(c,e),f(0)};JSM.IsWebGLEnabled=function(a){if(!window.WebGLRenderingContext)return!1;try{var b=document.createElement("canvas");if(!b.getContext("experimental-webgl")&&!b.getContext("webgl"))return!1}catch(c){return!1}return!0};
|
||||
JSM.IsFileApiEnabled=function(a){return!window.File||!window.FileReader||!window.FileList||!window.Blob||!window.URL?!1:!0};JSM.Coord2D=function(a,b){this.x=a;this.y=b};JSM.Coord2D.prototype.Set=function(a,b){this.x=a;this.y=b};JSM.Coord2D.prototype.ToString=function(){return"("+this.x+", "+this.y+")"};JSM.Coord2D.prototype.Clone=function(){return new JSM.Coord2D(this.x,this.y)};JSM.PolarCoord=function(a,b){this.radius=a;this.angle=b};
|
||||
JSM.AsyncRunTask=function(a,b,c,d,e){function f(g){var h=a();b.OnProcess(g,e);h&&g<c-1?setTimeout(function(){f(g+1)},d):setTimeout(function(){b.OnFinish(e)},d)}if(void 0===b||null===b){var g,h;for(g=0;g<c&&!(h=a(),!h);g++);}else b.OnStart(c,e),f(0)};JSM.IsWebGLEnabled=function(){if(!window.WebGLRenderingContext)return!1;try{var a=document.createElement("canvas");if(!a.getContext("experimental-webgl")&&!a.getContext("webgl"))return!1}catch(b){return!1}return!0};
|
||||
JSM.IsFileApiEnabled=function(){return!window.File||!window.FileReader||!window.FileList||!window.Blob||!window.URL?!1:!0};JSM.Coord2D=function(a,b){this.x=a;this.y=b};JSM.Coord2D.prototype.Set=function(a,b){this.x=a;this.y=b};JSM.Coord2D.prototype.ToString=function(){return"("+this.x+", "+this.y+")"};JSM.Coord2D.prototype.Clone=function(){return new JSM.Coord2D(this.x,this.y)};JSM.PolarCoord=function(a,b){this.radius=a;this.angle=b};
|
||||
JSM.PolarCoord.prototype.Set=function(a,b){this.radius=a;this.angle=b};JSM.PolarCoord.prototype.ToString=function(){return"("+this.radius+", "+this.angle+")"};JSM.PolarCoord.prototype.Clone=function(){return new JSM.PolarCoord(this.radius,this.angle)};JSM.Coord=function(a,b,c){this.x=a;this.y=b;this.z=c};JSM.Coord.prototype.Set=function(a,b,c){this.x=a;this.y=b;this.z=c};JSM.Coord.prototype.ToString=function(){return"("+this.x+", "+this.y+", "+this.z+")"};
|
||||
JSM.Coord.prototype.Clone=function(){return new JSM.Coord(this.x,this.y,this.z)};JSM.SphericalCoord=function(a,b,c){this.radius=a;this.theta=b;this.phi=c};JSM.SphericalCoord.prototype.Set=function(a,b,c){this.radius=a;this.theta=b;this.phi=c};JSM.SphericalCoord.prototype.ToString=function(){return"("+this.radius+", "+this.theta+", "+this.phi+")"};JSM.SphericalCoord.prototype.Clone=function(){return new JSM.SphericalCoord(this.radius,this.theta,this.phi)};JSM.Vector2D=JSM.Coord2D;JSM.Vector=JSM.Coord;
|
||||
JSM.MatrixDeterminant2x2=function(a,b,c,d){return a*d-b*c};JSM.MatrixDeterminant3x3=function(a,b,c,d,e,f,g,h,k){var l=JSM.MatrixDeterminant2x2(e,f,h,k);f=JSM.MatrixDeterminant2x2(d,f,g,k);d=JSM.MatrixDeterminant2x2(d,e,g,h);return a*l-b*f+c*d};
|
||||
@ -26,9 +26,9 @@ JSM.CartesianToSpherical=function(a,b,c){var d=new JSM.SphericalCoord(0,0,0);d.r
|
||||
JSM.MoveCoordOnSphere=function(a,b,c,d){a=JSM.CartesianToSphericalWithOrigo(a,b);a.theta+=c;a.phi+=d;return JSM.SphericalToCartesianWithOrigo(a,b)};JSM.CylindricalToCartesian=function(a,b,c){var d=new JSM.Coord(0,0,0);d.x=a*Math.cos(c);d.y=a*Math.sin(c);d.z=b;return d};JSM.GetArcLength=function(a,b,c){return JSM.GetVectorsAngle(a,b)*c};JSM.GetFullArcLength=function(a,b,c,d){return JSM.GetVectorsFullAngle(a,b,d)*c};JSM.MatrixIdentity=function(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]};
|
||||
JSM.MatrixClone=function(a){var b=[];b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return b};JSM.MatrixTranspose=function(a){var b=[];b[0]=a[0];b[1]=a[4];b[2]=a[8];b[3]=a[12];b[4]=a[1];b[5]=a[5];b[6]=a[9];b[7]=a[13];b[8]=a[2];b[9]=a[6];b[10]=a[10];b[11]=a[14];b[12]=a[3];b[13]=a[7];b[14]=a[11];b[15]=a[15];return b};
|
||||
JSM.MatrixVectorMultiply=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=a[1],h=a[2],k=a[3],l=a[5],m=a[6],n=a[7],p=a[9],q=a[10],r=a[11],t=a[13],w=a[14],u=a[15],s=[];s[0]=c*a[0]+d*a[4]+e*a[8]+f*a[12];s[1]=c*g+d*l+e*p+f*t;s[2]=c*h+d*m+e*q+f*w;s[3]=c*k+d*n+e*r+f*u;return s};
|
||||
JSM.MatrixMultiply=function(a,b){var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],k=a[6],l=a[7],m=a[8],n=a[9],p=a[10],q=a[11],r=a[12],t=a[13],w=a[14],u=a[15],s=b[0],x=b[1],B=b[2],C=b[3],v=b[4],G=b[5],z=b[6],L=b[7],N=b[8],D=b[9],y=b[10],A=b[11],J=b[12],O=b[13],M=b[14],H=b[15],F=[];F[0]=c*s+d*v+e*N+f*J;F[1]=c*x+d*G+e*D+f*O;F[2]=c*B+d*z+e*y+f*M;F[3]=c*C+d*L+e*A+f*H;F[4]=g*s+h*v+k*N+l*J;F[5]=g*x+h*G+k*D+l*O;F[6]=g*B+h*z+k*y+l*M;F[7]=g*C+h*L+k*A+l*H;F[8]=m*s+n*v+p*N+q*J;F[9]=m*x+n*G+p*D+q*O;F[10]=m*B+n*z+
|
||||
p*y+q*M;F[11]=m*C+n*L+p*A+q*H;F[12]=r*s+t*v+w*N+u*J;F[13]=r*x+t*G+w*D+u*O;F[14]=r*B+t*z+w*y+u*M;F[15]=r*C+t*L+w*A+u*H;return F};JSM.MatrixDeterminant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],k=a[7],l=a[8],m=a[9],n=a[10],p=a[11],q=a[12],r=a[13],t=a[14];a=a[15];return(b*g-c*f)*(n*a-p*t)-(b*h-d*f)*(m*a-p*r)+(b*k-e*f)*(m*t-n*r)+(c*h-d*g)*(l*a-p*q)-(c*k-e*g)*(l*t-n*q)+(d*k-e*h)*(l*r-m*q)};
|
||||
JSM.MatrixInvert=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],k=a[7],l=a[8],m=a[9],n=a[10],p=a[11],q=a[12],r=a[13],t=a[14];a=a[15];var w=b*g-c*f,u=b*h-d*f,s=b*k-e*f,x=c*h-d*g,B=c*k-e*g,C=d*k-e*h,v=l*r-m*q,G=l*t-n*q,z=l*a-p*q,L=m*t-n*r,N=m*a-p*r,D=n*a-p*t,y=w*D-u*N+s*L+x*z-B*G+C*v;if(JSM.IsZero(y))return null;var A=[];A[0]=(g*D-h*N+k*L)/y;A[1]=(d*N-c*D-e*L)/y;A[2]=(r*C-t*B+a*x)/y;A[3]=(n*B-m*C-p*x)/y;A[4]=(h*z-f*D-k*G)/y;A[5]=(b*D-d*z+e*G)/y;A[6]=(t*s-q*C-a*u)/y;A[7]=(l*C-n*s+p*
|
||||
JSM.MatrixMultiply=function(a,b){var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],k=a[6],l=a[7],m=a[8],n=a[9],p=a[10],q=a[11],r=a[12],t=a[13],w=a[14],u=a[15],s=b[0],x=b[1],B=b[2],C=b[3],v=b[4],G=b[5],z=b[6],L=b[7],N=b[8],E=b[9],y=b[10],A=b[11],J=b[12],O=b[13],M=b[14],H=b[15],F=[];F[0]=c*s+d*v+e*N+f*J;F[1]=c*x+d*G+e*E+f*O;F[2]=c*B+d*z+e*y+f*M;F[3]=c*C+d*L+e*A+f*H;F[4]=g*s+h*v+k*N+l*J;F[5]=g*x+h*G+k*E+l*O;F[6]=g*B+h*z+k*y+l*M;F[7]=g*C+h*L+k*A+l*H;F[8]=m*s+n*v+p*N+q*J;F[9]=m*x+n*G+p*E+q*O;F[10]=m*B+n*z+
|
||||
p*y+q*M;F[11]=m*C+n*L+p*A+q*H;F[12]=r*s+t*v+w*N+u*J;F[13]=r*x+t*G+w*E+u*O;F[14]=r*B+t*z+w*y+u*M;F[15]=r*C+t*L+w*A+u*H;return F};JSM.MatrixDeterminant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],k=a[7],l=a[8],m=a[9],n=a[10],p=a[11],q=a[12],r=a[13],t=a[14];a=a[15];return(b*g-c*f)*(n*a-p*t)-(b*h-d*f)*(m*a-p*r)+(b*k-e*f)*(m*t-n*r)+(c*h-d*g)*(l*a-p*q)-(c*k-e*g)*(l*t-n*q)+(d*k-e*h)*(l*r-m*q)};
|
||||
JSM.MatrixInvert=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],k=a[7],l=a[8],m=a[9],n=a[10],p=a[11],q=a[12],r=a[13],t=a[14];a=a[15];var w=b*g-c*f,u=b*h-d*f,s=b*k-e*f,x=c*h-d*g,B=c*k-e*g,C=d*k-e*h,v=l*r-m*q,G=l*t-n*q,z=l*a-p*q,L=m*t-n*r,N=m*a-p*r,E=n*a-p*t,y=w*E-u*N+s*L+x*z-B*G+C*v;if(JSM.IsZero(y))return null;var A=[];A[0]=(g*E-h*N+k*L)/y;A[1]=(d*N-c*E-e*L)/y;A[2]=(r*C-t*B+a*x)/y;A[3]=(n*B-m*C-p*x)/y;A[4]=(h*z-f*E-k*G)/y;A[5]=(b*E-d*z+e*G)/y;A[6]=(t*s-q*C-a*u)/y;A[7]=(l*C-n*s+p*
|
||||
u)/y;A[8]=(f*N-g*z+k*v)/y;A[9]=(c*z-b*N-e*v)/y;A[10]=(q*B-r*s+a*w)/y;A[11]=(m*s-l*B-p*w)/y;A[12]=(g*G-f*L-h*v)/y;A[13]=(b*L-c*G+d*v)/y;A[14]=(r*u-q*x-t*w)/y;A[15]=(l*x-m*u+n*w)/y;return A};JSM.MatrixTranslation=function(a,b,c){var d=[1,0,0,0,0,1,0,0,0,0,1,0];d[12]=a;d[13]=b;d[14]=c;d[15]=1;return d};
|
||||
JSM.MatrixRotation=function(a,b,c){var d=JSM.VectorNormalize(a);a=d.x;var e=d.y,d=d.z,f=a*a,g=e*e,h=d*d,k=Math.sin(b);b=Math.cos(b);var l=[];if(void 0===c||null===c)l[0]=f+(g+h)*b,l[1]=a*e*(1-b)+d*k,l[2]=a*d*(1-b)-e*k,l[3]=0,l[4]=a*e*(1-b)-d*k,l[5]=g+(f+h)*b,l[6]=e*d*(1-b)+a*k,l[7]=0,l[8]=a*d*(1-b)+e*k,l[9]=e*d*(1-b)-a*k,l[10]=h+(f+g)*b,l[11]=0,l[12]=0,l[13]=0,l[14]=0;else{var m=c.x,n=c.y;c=c.z;l[0]=f+(g+h)*b;l[1]=a*e*(1-b)+d*k;l[2]=a*d*(1-b)-e*k;l[3]=0;l[4]=a*e*(1-b)-d*k;l[5]=g+(f+h)*b;l[6]=e*d*
|
||||
(1-b)+a*k;l[7]=0;l[8]=a*d*(1-b)+e*k;l[9]=e*d*(1-b)-a*k;l[10]=h+(f+g)*b;l[11]=0;l[12]=(m*(g+h)-a*(n*e+c*d))*(1-b)+(n*d-c*e)*k;l[13]=(n*(f+h)-e*(m*a+c*d))*(1-b)+(c*a-m*d)*k;l[14]=(c*(f+g)-d*(m*a+n*e))*(1-b)+(m*e-n*a)*k}l[15]=1;return l};
|
||||
@ -194,9 +194,9 @@ JSM.GenerateFunctionSurfaceSolid=function(a,b,c,d,e,f){var g=new JSM.Sector(new
|
||||
JSM.Camera=function(a,b,c,d,e,f){this.eye=JSM.ValueOrDefault(a,new JSM.Coord(1,1,1));this.center=JSM.ValueOrDefault(b,new JSM.Coord(0,0,0));this.up=JSM.ValueOrDefault(c,new JSM.Vector(0,0,1));this.fieldOfView=JSM.ValueOrDefault(d,45);this.nearClippingPlane=JSM.ValueOrDefault(e,0.1);this.farClippingPlane=JSM.ValueOrDefault(f,1E3)};
|
||||
JSM.Camera.prototype.Set=function(a,b,c,d,e,f){this.eye=a;this.center=b;this.up=c;this.fieldOfView=JSM.ValueOrDefault(d,45);this.nearClippingPlane=JSM.ValueOrDefault(e,0.1);this.farClippingPlane=JSM.ValueOrDefault(f,1E3)};JSM.Camera.prototype.Clone=function(){var a=new JSM.Camera;a.eye=this.eye;a.center=this.center;a.up=this.up;a.fieldOfView=this.fieldOfView;a.nearClippingPlane=this.nearClippingPlane;a.farClippingPlane=this.farClippingPlane;return a};
|
||||
JSM.ExplodeBodyToTriangles=function(a,b,c){if(void 0===c||null===c)return!1;var d=JSM.CalculateBodyVertexNormals(a),e,f,g=!1;if(void 0!==b&&null!==b)for(e=0;e<b.Count();e++)if(null!==b.GetMaterial(e).texture){g=!0;break}var h,k;if(g){h=JSM.CalculateBodyTextureCoords(a);for(e=0;e<h.length;e++)if(f=a.GetPolygon(e),f.HasMaterialIndex()){k=b.GetMaterial(f.GetMaterialIndex());for(f=0;f<h[e].length;f++)h[e][f].x/=k.textureWidth,h[e][f].y/=-k.textureHeight}}var l=!0;void 0!==c.hasConvexPolygons&&null!==
|
||||
c.hasConvexPolygons&&(l=c.hasConvexPolygons);(function(a,b,c,d,e){function f(h,k){var w=b.GetMaterial(k);if(void 0!==e.onGeometryStart&&null!==e.onGeometryStart)e.onGeometryStart(w);var t;for(t=0;t<h.length;t++){var s=h[t],x=a.GetPolygon(s),u=x.VertexIndexCount();if(!(3>u)){var D=void 0,y=void 0,A=void 0,J=void 0,O=void 0,M=void 0,H=void 0,F=void 0,I=void 0,K=void 0;if(3==u||l)for(K=0;K<u-2;K++){if(D=a.GetVertex(x.GetVertexIndex(0)).position,y=a.GetVertex(x.GetVertexIndex((K+1)%u)).position,A=a.GetVertex(x.GetVertexIndex((K+
|
||||
2)%u)).position,J=c[s][0],O=c[s][(K+1)%u],M=c[s][(K+2)%u],I=F=H=null,g&&(H=d[s][0],F=d[s][(K+1)%u],I=d[s][(K+2)%u]),void 0!==e.onTriangle&&null!==e.onTriangle)e.onTriangle(D,y,A,J,O,M,H,F,I)}else{D=new JSM.Polygon;y=void 0;for(K=0;K<u;K++)y=a.GetVertex(x.vertices[K]),D.AddVertex(y.position.x,y.position.y,y.position.z);for(var K=JSM.CalculateBodyPolygonNormal(a,s),u=JSM.PolygonTriangulate(D,K),P=void 0,K=0;K<u.length;K++)if(P=u[K],D=a.GetVertex(x.GetVertexIndex(P[0])).position,y=a.GetVertex(x.GetVertexIndex(P[1])).position,
|
||||
A=a.GetVertex(x.GetVertexIndex(P[2])).position,J=c[s][P[0]],O=c[s][P[1]],M=c[s][P[2]],I=F=H=null,g&&(H=d[s][P[0]],F=d[s][P[1]],I=d[s][P[2]]),void 0!==e.onTriangle&&null!==e.onTriangle)e.onTriangle(D,y,A,J,O,M,H,F,I)}}}if(void 0!==e.onGeometryEnd&&null!==e.onGeometryEnd)e.onGeometryEnd(w)}var h,k=[],s=[];if(void 0===b||null===b)b=new JSM.Materials;for(h=0;h<b.Count();h++)k[h]=[];var x;for(h=0;h<a.PolygonCount();h++)x=a.GetPolygon(h),x.HasMaterialIndex()?(x=x.GetMaterialIndex(),k[x].push(h)):s.push(h);
|
||||
c.hasConvexPolygons&&(l=c.hasConvexPolygons);(function(a,b,c,d,e){function f(h,k){var w=b.GetMaterial(k);if(void 0!==e.onGeometryStart&&null!==e.onGeometryStart)e.onGeometryStart(w);var t;for(t=0;t<h.length;t++){var s=h[t],x=a.GetPolygon(s),u=x.VertexIndexCount();if(!(3>u)){var E=void 0,y=void 0,A=void 0,J=void 0,O=void 0,M=void 0,H=void 0,F=void 0,I=void 0,K=void 0;if(3==u||l)for(K=0;K<u-2;K++){if(E=a.GetVertex(x.GetVertexIndex(0)).position,y=a.GetVertex(x.GetVertexIndex((K+1)%u)).position,A=a.GetVertex(x.GetVertexIndex((K+
|
||||
2)%u)).position,J=c[s][0],O=c[s][(K+1)%u],M=c[s][(K+2)%u],I=F=H=null,g&&(H=d[s][0],F=d[s][(K+1)%u],I=d[s][(K+2)%u]),void 0!==e.onTriangle&&null!==e.onTriangle)e.onTriangle(E,y,A,J,O,M,H,F,I)}else{E=new JSM.Polygon;y=void 0;for(K=0;K<u;K++)y=a.GetVertex(x.vertices[K]),E.AddVertex(y.position.x,y.position.y,y.position.z);for(var K=JSM.CalculateBodyPolygonNormal(a,s),u=JSM.PolygonTriangulate(E,K),P=void 0,K=0;K<u.length;K++)if(P=u[K],E=a.GetVertex(x.GetVertexIndex(P[0])).position,y=a.GetVertex(x.GetVertexIndex(P[1])).position,
|
||||
A=a.GetVertex(x.GetVertexIndex(P[2])).position,J=c[s][P[0]],O=c[s][P[1]],M=c[s][P[2]],I=F=H=null,g&&(H=d[s][P[0]],F=d[s][P[1]],I=d[s][P[2]]),void 0!==e.onTriangle&&null!==e.onTriangle)e.onTriangle(E,y,A,J,O,M,H,F,I)}}}if(void 0!==e.onGeometryEnd&&null!==e.onGeometryEnd)e.onGeometryEnd(w)}var h,k=[],s=[];if(void 0===b||null===b)b=new JSM.Materials;for(h=0;h<b.Count();h++)k[h]=[];var x;for(h=0;h<a.PolygonCount();h++)x=a.GetPolygon(h),x.HasMaterialIndex()?(x=x.GetMaterialIndex(),k[x].push(h)):s.push(h);
|
||||
for(h=0;h<k.length;h++)x=k[h],0!==x.length&&f(x,h);0!==s.length&&f(s,-1)})(a,b,d,h,c);return!0};
|
||||
JSM.ExportBodyContentToStl=function(a,b,c){function d(a){g+=a+"\n"}function e(a,b,c,e){d("\tfacet normal "+a.x+" "+a.y+" "+a.z);d("\t\touter loop");d("\t\t\tvertex "+b.x+" "+b.y+" "+b.z);d("\t\t\tvertex "+c.x+" "+c.y+" "+c.z);d("\t\t\tvertex "+e.x+" "+e.y+" "+e.z);d("\t\tendloop");d("\tendfacet")}function f(b){var d=a.GetPolygon(b),f=d.VertexIndexCount();if(!(3>f)){var g,n,p,q=null;if(3===f)q=JSM.CalculateBodyPolygonNormal(a,b),g=a.GetVertex(d.GetVertexIndex(0)).position,n=a.GetVertex(d.GetVertexIndex(1)).position,
|
||||
p=a.GetVertex(d.GetVertexIndex(2)).position,e(q,g,n,p);else if(g=!0,void 0!==c&&c&&(g=!1),q=JSM.CalculateBodyPolygonNormal(a,b),g){g=new JSM.Polygon;for(b=0;b<f;b++)n=a.GetVertex(d.vertices[b]),g.AddVertex(n.position.x,n.position.y,n.position.z);f=JSM.PolygonTriangulate(g,q);for(b=0;b<f.length;b++)p=f[b],g=a.GetVertex(d.GetVertexIndex(p[0])).position,n=a.GetVertex(d.GetVertexIndex(p[1])).position,p=a.GetVertex(d.GetVertexIndex(p[2])).position,e(q,g,n,p)}else for(b=0;b<f-2;b++)g=a.GetVertex(d.GetVertexIndex(0)).position,
|
||||
@ -229,27 +229,27 @@ parameters:[]};for(e=0;e<p.length;e++)f=b.GetTriangle(p[e]),q.parameters.push(f.
|
||||
d.scale,e.rotation=d.rotation),b.push(e)})(a,c.materials);var d,e,f;for(d=0;d<a.BodyCount();d++)e=a.GetBody(d),0!==e.TriangleCount()&&(f={name:e.GetName(),vertices:[],normals:[],uvs:[],triangles:[]},b(a,e,f),c.meshes.push(f));return c};
|
||||
JSM.MergeJsonDataMeshes=function(a){function b(a,b,c){function d(a,b,c){var h=b.material,k=c[h];void 0===k&&(a.triangles.push({material:h,parameters:[]}),k=a.triangles.length-1,c[h]=k);a=a.triangles[k].parameters;for(c=0;c<b.parameters.length;c+=9)a.push(b.parameters[c]+e,b.parameters[c+1]+e,b.parameters[c+2]+e,b.parameters[c+3]+f,b.parameters[c+4]+f,b.parameters[c+5]+f,b.parameters[c+6]+g,b.parameters[c+7]+g,b.parameters[c+8]+g)}var e=a.vertices.length/3,f=a.normals.length/3,g=a.uvs.length/2;(function(a,
|
||||
b){var c;for(c=0;c<b.vertices.length;c++)a.vertices.push(b.vertices[c]);for(c=0;c<b.normals.length;c++)a.normals.push(b.normals[c]);for(c=0;c<b.uvs.length;c++)a.uvs.push(b.uvs[c])})(a,b);var r,t;for(r=0;r<b.triangles.length;r++)t=b.triangles[r],d(a,t,c)}var c={version:a.version,materials:a.materials,meshes:[]},d={name:"Merged",vertices:[],normals:[],uvs:[],triangles:[]},e={},f,g;for(f=0;f<a.meshes.length;f++)g=a.meshes[f],b(d,g,e);c.meshes.push(d);return c};
|
||||
JSM.Read3dsFile=function(a,b){var c,d,e,f,g,h,k,l,m,n,p,q,r,t,w,u,s,x,B,C,v,G,z,L,N,D,y,A,J,O,M,H,F,I,K,P,S,T,W;function E(a,c){if(void 0!==b.onLog&&null!==b.onLog)b.onLog(a,c)}function R(a){for(var b="",c=0,d=0;64>d;){c=a.ReadCharacter();if(0===c)break;b+=String.fromCharCode(c);d+=1}return b}function V(a){var b=[],c;for(c=0;3>c;c++)b[c]=a.ReadFloat32();return b}function Q(a,b,c){for(;a.GetPosition()<=b-6;){var d=a,e=c,f=d.ReadUnsignedInteger16(),d=d.ReadUnsignedInteger32();e(f,d)}}if(void 0===b||
|
||||
null===b)b={};c=15677;d=45055;e=40960;f=40976;g=40992;h=41008;k=41024;l=41040;m=16;n=17;p=18;q=19;r=41472;t=41728;w=41816;u=41818;s=41812;x=41814;B=41820;C=48;v=49;G=16384;z=16640;L=17920;N=18176;D=16656;y=16704;A=16672;J=16736;O=16688;M=16720;H=45056;F=45058;I=45072;K=45075;P=45088;S=45089;T=45090;W=45104;(function(a){function U(a,b,c){var d=[0,0,0];b=a.GetPosition()+c-6;var e=!1;Q(a,b,function(b,c){b==n?e||(d[0]=a.ReadUnsignedCharacter()/255,d[1]=a.ReadUnsignedCharacter()/255,d[2]=a.ReadUnsignedCharacter()/
|
||||
255):b==p?(d[0]=a.ReadUnsignedCharacter()/255,d[1]=a.ReadUnsignedCharacter()/255,d[2]=a.ReadUnsignedCharacter()/255,e=!0):b==m?e||(d[0]=a.ReadFloat32(),d[1]=a.ReadFloat32(),d[2]=a.ReadFloat32()):b==q?(d[0]=a.ReadFloat32(),d[1]=a.ReadFloat32(),d[2]=a.ReadFloat32(),e=!0):a.Skip(c-6)});return d}function X(a,b,c){var d=0;b=a.GetPosition()+c-6;Q(a,b,function(b,c){b==C?d=a.ReadUnsignedInteger16()/100:b==v?d=a.ReadFloat32():a.Skip(c-6)});return d}function Y(a,b,c,d){d.texture=null;d.offset=[0,0];d.scale=
|
||||
[1,1];d.rotation=0;b=a.GetPosition()+c-6;Q(a,b,function(b,c){b==t?d.texture=R(a):b==w?d.offset[0]=a.ReadFloat32():b==u?d.offset[1]=a.ReadFloat32():b==s?d.scale[0]=a.ReadFloat32():b==x?d.scale[1]=a.ReadFloat32():b==B?d.rotation=a.ReadFloat32():a.Skip(c-6)})}function Z(a,c,d){E("Read material chunk ("+c.toString(16)+", "+d+")",2);var m={},n=a.GetPosition()+d-6;Q(a,n,function(b,n){b==e?(E("Read material name chunk ("+c.toString(16)+", "+d+")",3),m.name=R(a)):b==f?(E("Read material ambient chunk ("+c.toString(16)+
|
||||
", "+d+")",3),m.ambient=U(a,b,n)):b==g?(E("Read material diffuse chunk ("+c.toString(16)+", "+d+")",3),m.diffuse=U(a,b,n)):b==h?(E("Read material specular chunk ("+c.toString(16)+", "+d+")",3),m.specular=U(a,b,n)):b==k?(E("Read material shininess chunk ("+c.toString(16)+", "+d+")",3),m.shininess=X(a,b,n)):b==l?(E("Read material transparency chunk ("+c.toString(16)+", "+d+")",3),m.transparency=X(a,b,n)):b==r?(E("Read material texture map chunk ("+c.toString(16)+", "+d+")",3),Y(a,b,n,m)):(E("Skip chunk ("+
|
||||
b.toString(16)+", "+n+")",3),a.Skip(n-6))});if(void 0!==b.onMaterial&&null!==b.onMaterial)b.onMaterial(m)}function $(a,c,d){E("Read faces chunk ("+c.toString(16)+", "+d+")",4);c=a.GetPosition()+d-6;var e=a.ReadUnsignedInteger16(),f,g,h,k;for(d=0;d<e;d++)if(f=a.ReadUnsignedInteger16(),g=a.ReadUnsignedInteger16(),h=a.ReadUnsignedInteger16(),k=a.ReadUnsignedInteger16(),void 0!==b.onFace&&null!==b.onFace)b.onFace(f,g,h,k);Q(a,c,function(c,d){if(c==O){E("Read face materials chunk ("+c.toString(16)+", "+
|
||||
d+")",5);var f=R(a),g=a.ReadUnsignedInteger16(),h,k;for(h=0;h<g;h++)if(k=a.ReadUnsignedInteger16(),void 0!==b.onFaceMaterial&&null!==b.onFaceMaterial)b.onFaceMaterial(k,f)}else if(c==M){E("Read face smoothing groups chunk ("+c.toString(16)+", "+d+")",5);for(f=0;f<e;f++)if(g=a.ReadUnsignedInteger32(),void 0!==b.onFaceSmoothingGroup&&null!==b.onFaceSmoothingGroup)b.onFaceSmoothingGroup(f,g)}else E("Skip chunk ("+c.toString(16)+", "+d+")",5),a.Skip(d-6)})}function aa(a,c,d,e){E("Read mesh chunk ("+c+
|
||||
", "+d.toString(16)+", "+e+")",3);if(void 0!==b.onMesh&&null!==b.onMesh)b.onMesh(c);c=a.GetPosition()+e-6;Q(a,c,function(c,d){if(c==D){E("Read vertices chunk ("+c.toString(16)+", "+d+")",4);var e=a.ReadUnsignedInteger16(),f,g,h,k;for(f=0;f<e;f++)if(g=a.ReadFloat32(),h=a.ReadFloat32(),k=a.ReadFloat32(),void 0!==b.onVertex&&null!==b.onVertex)b.onVertex(g,h,k)}else if(c==y){E("Read texture vertices chunk ("+c.toString(16)+", "+d+")",4);e=a.ReadUnsignedInteger16();for(f=0;f<e;f++)if(g=a.ReadFloat32(),
|
||||
h=a.ReadFloat32(),void 0!==b.onTextureVertex&&null!==b.onTextureVertex)b.onTextureVertex(g,h)}else if(c==A)$(a,c,d);else if(c==J){E("Read transformation chunk ("+c.toString(16)+", "+d+")",4);e=[];for(f=0;4>f;f++){for(g=0;3>g;g++)e.push(a.ReadFloat32());3>f?e.push(0):e.push(1)}if(void 0!==b.onTransformation&&null!==b.onTransformation)b.onTransformation(e)}else E("Skip chunk ("+c.toString(16)+", "+d+")",4),a.Skip(d-6)})}function ba(a,b,c){E("Read object chunk ("+b.toString(16)+", "+c+")",2);b=a.GetPosition()+
|
||||
c-6;var d=R(a);Q(a,b,function(b,c){b==z?aa(a,d,b,c):(b==L?E("Skip light chunk ("+d+", "+b.toString(16)+", "+c+")",3):b==N?E("Skip camera chunk ("+d+", "+b.toString(16)+", "+c+")",3):E("Skip chunk ("+b.toString(16)+", "+c+")",3),a.Skip(c-6))})}function ca(a,b,c){E("Read editor chunk ("+b.toString(16)+", "+c+")",1);b=a.GetPosition()+c-6;Q(a,b,function(b,c){b==d?Z(a,b,c):b==G?ba(a,b,c):(E("Skip chunk ("+b.toString(16)+", "+c+")",2),a.Skip(c-6))})}function da(a,c,d){function e(a,b){var c=[];a.Skip(10);
|
||||
var d,f,g,h=a.ReadInteger32();for(d=0;d<h;d++)a.ReadInteger32(),f=a.ReadUnsignedInteger16(),0!==f&&a.ReadFloat32(),b==S?(g=a.ReadFloat32(),f=V(a),f[3]=g):f=V(a),c.push(f);return c}E("Read object node chunk ("+c.toString(16)+", "+d+")",2);var f={name:"",nodeId:-1,flags:-1,userId:-1,pivot:[0,0,0],positions:[],rotations:[],scales:[]};c=a.GetPosition()+d-6;Q(a,c,function(b,c){b==I?(f.name=R(a),f.flags=a.ReadUnsignedInteger32(),f.userId=a.ReadUnsignedInteger16()):b==K?f.pivot=V(a):b==P?f.positions=e(a,
|
||||
P):b==S?f.rotations=e(a,S):b==T?f.scales=e(a,T):b==W?f.nodeId=a.ReadUnsignedInteger16():(E("Skip chunk ("+b.toString(16)+", "+c+")",3),a.Skip(c-6))});if(void 0!==b.onObjectNode&&null!==b.onObjectNode)b.onObjectNode(f)}function ea(a,b,c){E("Read keyframe chunk ("+b.toString(16)+", "+c+")",1);b=a.GetPosition()+c-6;Q(a,b,function(b,c){b==F?da(a,b,c):(E("Skip chunk ("+b.toString(16)+", "+c+")",2),a.Skip(c-6))})}function fa(a,b,d){E("Read main chunk ("+b.toString(16)+", "+d+")",0);b=a.GetPosition()+d-
|
||||
6;Q(a,b,function(b,d){b==c?ca(a,b,d):b==H?ea(a,b,d):(E("Skip chunk ("+b.toString(16)+", "+d+")",1),a.Skip(d-6))})}var ga=a.GetByteLength();Q(a,ga,function(b,c){19789==b?fa(a,b,c):(E("Skip chunk ("+b.toString(16)+", "+c+")",0),a.Skip(c-6))})})(new JSM.BinaryReader(a,!0))};
|
||||
JSM.Convert3dsToJsonData=function(a,b){function c(a){return void 0!==b.onFileRequested&&null!==b.onFileRequested?b.onFileRequested(a):null}var d=new JSM.TriangleModel,e=null,f={},g={},h={nodes:[],nodeIdToIndex:{}};JSM.Read3dsFile(a,{onMaterial:function(a){var b=d.AddMaterial({name:a.name,ambient:a.ambient,diffuse:a.diffuse,specular:a.specular,shininess:void 0===a.shininess||null===a.shininess?0:a.shininess,opacity:void 0===a.transparency||null===a.transparency?1:1-a.transparency}),e=d.GetMaterial(b);
|
||||
if(void 0!==a.texture&&null!==a.texture){var g=c(a.texture);null!==g&&(g=new window.Blob([g]),g=window.URL.createObjectURL(g),e.texture=g,e.offset=a.offset,e.scale=a.scale,e.rotation=-a.rotation)}void 0===f[a.name]&&(f[a.name]=b)},onMesh:function(a){var b=d.AddBody(new JSM.TriangleBody(a));e=d.GetBody(b);e.meshData={faceToMaterial:{},faceToSmoothingGroup:{},objectNodes:[],transformation:null};g[a]=b},onTransformation:function(a){null!==e&&(e.meshData.transformation=a)},onObjectNode:function(a){var b=
|
||||
h.nodes.length;h.nodes.push(a);h.nodeIdToIndex[a.nodeId]=b;a=g[a.name];void 0!==a&&d.GetBody(a).meshData.objectNodes.push(b)},onVertex:function(a,b,c){null!==e&&e.AddVertex(a,b,c)},onTextureVertex:function(a,b){null!==e&&e.AddUV(a,b)},onFace:function(a,b,c){null!==e&&e.AddTriangle(a,b,c)},onFaceMaterial:function(a,b){null!==e&&(e.meshData.faceToMaterial[a]=b)},onFaceSmoothingGroup:function(a,b){null!==e&&(e.meshData.faceToSmoothingGroup[a]=b)},onFileRequested:c});(function(a,b,c){function d(a,b,c){function e(a,
|
||||
b){var c=b[0],d=b[1],f=b[2],g;for(g=0;4>g;g++)a[0+g]*=c,a[4+g]*=d,a[8+g]*=f;return a}function f(a,b){var c=b[0],d=b[1],e=b[2],g;for(g=0;3>g;g++)a[12+g]+=a[0+g]*c+a[4+g]*d+a[8+g]*e;return a}function g(a,b){var c,d;for(c=0;c<a.VertexCount();c++)d=a.GetVertex(c),d=JSM.ApplyTransformation(b,d),a.SetVertex(c,d.x,d.y,d.z)}function h(a,b,c){var d=JSM.MatrixDeterminant(b);JSM.IsNegative(d)&&(b=JSM.MatrixClone(b),e(b,[-1,1,1]),c=JSM.MatrixMultiply(c,b),g(a,c))}function k(a,b){if(void 0!==a.matrix)return a.matrix;
|
||||
var c=JSM.MatrixIdentity(),d;d=0===a.positions.length?[0,0,0]:a.positions[0];c=f(c,d);if(0===a.rotations.length)d=[0,0,0,0];else{d=a.rotations[0];var g=[0,0,0,1],h=Math.sqrt(d[0]*d[0]+d[1]*d[1]+d[2]*d[2]);JSM.IsPositive(h)&&(g=-0.5*d[3],h=Math.sin(g)/h,g=[h*d[0],h*d[1],h*d[2],Math.cos(g)]);d=g}d=JSM.MatrixRotationQuaternion(d);c=JSM.MatrixMultiply(d,c);d=0===a.scales.length?[0,0,0,0]:a.scales[0];c=e(c,d);65535!=a.userId&&(d=b.nodeIdToIndex[a.userId],void 0!==d&&(d=k(b.nodes[d],b),c=JSM.MatrixMultiply(c,
|
||||
d)));return a.matrix=c}var l=a.meshData;l=void 0===l||null===l?null:l.transformation;if(null!==l){var m=null,m=null!==b?k(b,c):l;c=JSM.MatrixClone(m);m=JSM.MatrixClone(l);l=JSM.MatrixInvert(m);null!==l&&(h(a,m,l),b=void 0===b||null===b?[0,0,0]:b.pivot,f(c,[-b[0],-b[1],-b[2]]),b=JSM.MatrixMultiply(l,c),g(a,b))}}function e(a,b,c,f){d(a,b,f);b=a.UVCount()==a.VertexCount();f=a.meshData;var g,h,k;for(g=0;g<a.TriangleCount();g++)h=a.GetTriangle(g),b&&(h.u0=h.v0,h.u1=h.v1,h.u2=h.v2),k=f.faceToMaterial[g],
|
||||
void 0!==k&&(k=c[k],void 0!==k&&(h.mat=k)),k=f.faceToSmoothingGroup[g],void 0!==k&&(h.curve=k)}function f(a,b,c,d){b=b.Clone();b.SetName(b.GetName()+" ("+d+")");c<a.BodyCount()?a.AddBodyToIndex(b,c):a.AddBody(b);return b}var g,h,w,u,s,x,B;for(g=0;g<b.BodyCount();g++)if(w=b.GetBody(g),u=w.meshData,0===u.objectNodes.length)e(w,null,c,a);else{x=a.nodes[u.objectNodes[0]];for(h=1;h<u.objectNodes.length;h++)s=a.nodes[u.objectNodes[h]],B=f(b,w,g+1,h+1),B.meshData=w.meshData,e(B,s,c,a),g+=1;e(w,x,c,a)}})(h,
|
||||
d,f);d.Finalize();return JSM.ConvertTriangleModelToJsonData(d)};
|
||||
JSM.Read3dsFile=function(a,b){var c,d,e,f,g,h,k,l,m,n,p,q,r,t,w,u,s,x,B,C,v,G,z,L,N,E,y,A,J,O,M,H,F,I,K,P,T,S,U,Y;function D(a,c){if(void 0!==b.onLog&&null!==b.onLog)b.onLog(a,c)}function R(a){for(var b="",c=0,d=0;64>d;){c=a.ReadCharacter();if(0===c)break;b+=String.fromCharCode(c);d+=1}return b}function X(a){var b=[],c;for(c=0;3>c;c++)b[c]=a.ReadFloat32();return b}function Q(a,b,c){for(;a.GetPosition()<=b-6;){var d=a,e=c,f=d.ReadUnsignedInteger16(),d=d.ReadUnsignedInteger32();e(f,d)}}if(void 0===
|
||||
b||null===b)b={};c=15677;d=45055;e=40960;f=40976;g=40992;h=41008;k=41024;l=41025;m=41040;n=16;p=17;q=18;r=19;t=41472;w=41728;u=41816;s=41818;x=41812;B=41814;C=41820;v=48;G=49;z=16384;L=16640;N=17920;E=18176;y=16656;A=16704;J=16672;O=16736;M=16688;H=16720;F=45056;I=45058;K=45072;P=45075;T=45088;S=45089;U=45090;Y=45104;(function(a){function V(a,b,c){var d=[0,0,0];b=a.GetPosition()+c-6;var e=!1;Q(a,b,function(b,c){b==p?e||(d[0]=a.ReadUnsignedCharacter()/255,d[1]=a.ReadUnsignedCharacter()/255,d[2]=a.ReadUnsignedCharacter()/
|
||||
255):b==q?(d[0]=a.ReadUnsignedCharacter()/255,d[1]=a.ReadUnsignedCharacter()/255,d[2]=a.ReadUnsignedCharacter()/255,e=!0):b==n?e||(d[0]=a.ReadFloat32(),d[1]=a.ReadFloat32(),d[2]=a.ReadFloat32()):b==r?(d[0]=a.ReadFloat32(),d[1]=a.ReadFloat32(),d[2]=a.ReadFloat32(),e=!0):a.Skip(c-6)});return d}function W(a,b,c){var d=0;b=a.GetPosition()+c-6;Q(a,b,function(b,c){b==v?d=a.ReadUnsignedInteger16()/100:b==G?d=a.ReadFloat32():a.Skip(c-6)});return d}function Z(a,b,c,d){d.texture=null;d.offset=[0,0];d.scale=
|
||||
[1,1];d.rotation=0;b=a.GetPosition()+c-6;Q(a,b,function(b,c){b==w?d.texture=R(a):b==u?d.offset[0]=a.ReadFloat32():b==s?d.offset[1]=a.ReadFloat32():b==x?d.scale[0]=a.ReadFloat32():b==B?d.scale[1]=a.ReadFloat32():b==C?d.rotation=a.ReadFloat32():a.Skip(c-6)})}function $(a,c,d){D("Read material chunk ("+c.toString(16)+", "+d+")",2);var n={},p=a.GetPosition()+d-6;Q(a,p,function(b,p){b==e?(D("Read material name chunk ("+c.toString(16)+", "+d+")",3),n.name=R(a)):b==f?(D("Read material ambient chunk ("+c.toString(16)+
|
||||
", "+d+")",3),n.ambient=V(a,b,p)):b==g?(D("Read material diffuse chunk ("+c.toString(16)+", "+d+")",3),n.diffuse=V(a,b,p)):b==h?(D("Read material specular chunk ("+c.toString(16)+", "+d+")",3),n.specular=V(a,b,p)):b==k?(D("Read material shininess chunk ("+c.toString(16)+", "+d+")",3),n.shininess=W(a,b,p)):b==l?(D("Read material shininess strength chunk ("+c.toString(16)+", "+d+")",3),n.shininessStrength=W(a,b,p)):b==m?(D("Read material transparency chunk ("+c.toString(16)+", "+d+")",3),n.transparency=
|
||||
W(a,b,p)):b==t?(D("Read material texture map chunk ("+c.toString(16)+", "+d+")",3),Z(a,b,p,n)):(D("Skip chunk ("+b.toString(16)+", "+p+")",3),a.Skip(p-6))});if(void 0!==b.onMaterial&&null!==b.onMaterial)b.onMaterial(n)}function aa(a,c,d){D("Read faces chunk ("+c.toString(16)+", "+d+")",4);c=a.GetPosition()+d-6;var e=a.ReadUnsignedInteger16(),f,g,h,k;for(d=0;d<e;d++)if(f=a.ReadUnsignedInteger16(),g=a.ReadUnsignedInteger16(),h=a.ReadUnsignedInteger16(),k=a.ReadUnsignedInteger16(),void 0!==b.onFace&&
|
||||
null!==b.onFace)b.onFace(f,g,h,k);Q(a,c,function(c,d){if(c==M){D("Read face materials chunk ("+c.toString(16)+", "+d+")",5);var f=R(a),g=a.ReadUnsignedInteger16(),h,k;for(h=0;h<g;h++)if(k=a.ReadUnsignedInteger16(),void 0!==b.onFaceMaterial&&null!==b.onFaceMaterial)b.onFaceMaterial(k,f)}else if(c==H){D("Read face smoothing groups chunk ("+c.toString(16)+", "+d+")",5);for(f=0;f<e;f++)if(g=a.ReadUnsignedInteger32(),void 0!==b.onFaceSmoothingGroup&&null!==b.onFaceSmoothingGroup)b.onFaceSmoothingGroup(f,
|
||||
g)}else D("Skip chunk ("+c.toString(16)+", "+d+")",5),a.Skip(d-6)})}function ba(a,c,d,e){D("Read mesh chunk ("+c+", "+d.toString(16)+", "+e+")",3);if(void 0!==b.onMesh&&null!==b.onMesh)b.onMesh(c);c=a.GetPosition()+e-6;Q(a,c,function(c,d){if(c==y){D("Read vertices chunk ("+c.toString(16)+", "+d+")",4);var e=a.ReadUnsignedInteger16(),f,g,h,k;for(f=0;f<e;f++)if(g=a.ReadFloat32(),h=a.ReadFloat32(),k=a.ReadFloat32(),void 0!==b.onVertex&&null!==b.onVertex)b.onVertex(g,h,k)}else if(c==A){D("Read texture vertices chunk ("+
|
||||
c.toString(16)+", "+d+")",4);e=a.ReadUnsignedInteger16();for(f=0;f<e;f++)if(g=a.ReadFloat32(),h=a.ReadFloat32(),void 0!==b.onTextureVertex&&null!==b.onTextureVertex)b.onTextureVertex(g,h)}else if(c==J)aa(a,c,d);else if(c==O){D("Read transformation chunk ("+c.toString(16)+", "+d+")",4);e=[];for(f=0;4>f;f++){for(g=0;3>g;g++)e.push(a.ReadFloat32());3>f?e.push(0):e.push(1)}if(void 0!==b.onTransformation&&null!==b.onTransformation)b.onTransformation(e)}else D("Skip chunk ("+c.toString(16)+", "+d+")",4),
|
||||
a.Skip(d-6)})}function ca(a,b,c){D("Read object chunk ("+b.toString(16)+", "+c+")",2);b=a.GetPosition()+c-6;var d=R(a);Q(a,b,function(b,c){b==L?ba(a,d,b,c):(b==N?D("Skip light chunk ("+d+", "+b.toString(16)+", "+c+")",3):b==E?D("Skip camera chunk ("+d+", "+b.toString(16)+", "+c+")",3):D("Skip chunk ("+b.toString(16)+", "+c+")",3),a.Skip(c-6))})}function da(a,b,c){D("Read editor chunk ("+b.toString(16)+", "+c+")",1);b=a.GetPosition()+c-6;Q(a,b,function(b,c){b==d?$(a,b,c):b==z?ca(a,b,c):(D("Skip chunk ("+
|
||||
b.toString(16)+", "+c+")",2),a.Skip(c-6))})}function ea(a,c,d){function e(a,b){var c=[];a.Skip(10);var d,f,g,h=a.ReadInteger32();for(d=0;d<h;d++)a.ReadInteger32(),f=a.ReadUnsignedInteger16(),0!==f&&a.ReadFloat32(),b==S?(g=a.ReadFloat32(),f=X(a),f[3]=g):f=X(a),c.push(f);return c}D("Read object node chunk ("+c.toString(16)+", "+d+")",2);var f={name:"",nodeId:-1,flags:-1,userId:-1,pivot:[0,0,0],positions:[],rotations:[],scales:[]};c=a.GetPosition()+d-6;Q(a,c,function(b,c){b==K?(f.name=R(a),f.flags=a.ReadUnsignedInteger32(),
|
||||
f.userId=a.ReadUnsignedInteger16()):b==P?f.pivot=X(a):b==T?f.positions=e(a,T):b==S?f.rotations=e(a,S):b==U?f.scales=e(a,U):b==Y?f.nodeId=a.ReadUnsignedInteger16():(D("Skip chunk ("+b.toString(16)+", "+c+")",3),a.Skip(c-6))});if(void 0!==b.onObjectNode&&null!==b.onObjectNode)b.onObjectNode(f)}function fa(a,b,c){D("Read keyframe chunk ("+b.toString(16)+", "+c+")",1);b=a.GetPosition()+c-6;Q(a,b,function(b,c){b==I?ea(a,b,c):(D("Skip chunk ("+b.toString(16)+", "+c+")",2),a.Skip(c-6))})}function ga(a,b,
|
||||
d){D("Read main chunk ("+b.toString(16)+", "+d+")",0);b=a.GetPosition()+d-6;Q(a,b,function(b,d){b==c?da(a,b,d):b==F?fa(a,b,d):(D("Skip chunk ("+b.toString(16)+", "+d+")",1),a.Skip(d-6))})}var ha=a.GetByteLength();Q(a,ha,function(b,c){19789==b?ga(a,b,c):(D("Skip chunk ("+b.toString(16)+", "+c+")",0),a.Skip(c-6))})})(new JSM.BinaryReader(a,!0))};
|
||||
JSM.Convert3dsToJsonData=function(a,b){function c(a){return void 0!==b.onFileRequested&&null!==b.onFileRequested?b.onFileRequested(a):null}var d=new JSM.TriangleModel,e=null,f={},g={},h={nodes:[],nodeIdToIndex:{}};JSM.Read3dsFile(a,{onMaterial:function(a){if(void 0===f[a.name]){var b=d.AddMaterial({name:a.name,ambient:a.ambient,diffuse:a.diffuse,specular:a.specular,shininess:void 0===a.shininess||null===a.shininess||void 0===a.shininessStrength||null===a.shininessStrength?0:a.shininess*a.shininessStrength,
|
||||
opacity:void 0===a.transparency||null===a.transparency?1:1-a.transparency}),e=d.GetMaterial(b);if(void 0!==a.texture&&null!==a.texture){var g=c(a.texture);null!==g&&(g=new window.Blob([g]),g=window.URL.createObjectURL(g),e.texture=g,e.offset=a.offset,e.scale=a.scale,e.rotation=-a.rotation)}f[a.name]=b}},onMesh:function(a){if(void 0===g[a]){var b=d.AddBody(new JSM.TriangleBody(a));e=d.GetBody(b);e.meshData={faceToMaterial:{},faceToSmoothingGroup:{},objectNodes:[],transformation:null};g[a]=b}},onTransformation:function(a){null!==
|
||||
e&&(e.meshData.transformation=a)},onObjectNode:function(a){var b=h.nodes.length;h.nodes.push(a);h.nodeIdToIndex[a.nodeId]=b;a=g[a.name];void 0!==a&&d.GetBody(a).meshData.objectNodes.push(b)},onVertex:function(a,b,c){null!==e&&e.AddVertex(a,b,c)},onTextureVertex:function(a,b){null!==e&&e.AddUV(a,b)},onFace:function(a,b,c){null!==e&&e.AddTriangle(a,b,c)},onFaceMaterial:function(a,b){null!==e&&(e.meshData.faceToMaterial[a]=b)},onFaceSmoothingGroup:function(a,b){null!==e&&(e.meshData.faceToSmoothingGroup[a]=
|
||||
b)},onFileRequested:c});(function(a,b,c){function d(a,b,c){function e(a,b){var c=b[0],d=b[1],f=b[2],g;for(g=0;4>g;g++)a[0+g]*=c,a[4+g]*=d,a[8+g]*=f;return a}function f(a,b){var c=b[0],d=b[1],e=b[2],g;for(g=0;3>g;g++)a[12+g]+=a[0+g]*c+a[4+g]*d+a[8+g]*e;return a}function g(a,b){var c,d;for(c=0;c<a.VertexCount();c++)d=a.GetVertex(c),d=JSM.ApplyTransformation(b,d),a.SetVertex(c,d.x,d.y,d.z)}function h(a,b,c){var d=JSM.MatrixDeterminant(b);JSM.IsNegative(d)&&(b=JSM.MatrixClone(b),e(b,[-1,1,1]),c=JSM.MatrixMultiply(c,
|
||||
b),g(a,c))}function k(a,b){if(void 0!==a.matrix)return a.matrix;var c=JSM.MatrixIdentity(),d;d=0===a.positions.length?[0,0,0]:a.positions[0];c=f(c,d);if(0===a.rotations.length)d=[0,0,0,0];else{d=a.rotations[0];var g=[0,0,0,1],h=Math.sqrt(d[0]*d[0]+d[1]*d[1]+d[2]*d[2]);JSM.IsPositive(h)&&(g=-0.5*d[3],h=Math.sin(g)/h,g=[h*d[0],h*d[1],h*d[2],Math.cos(g)]);d=g}d=JSM.MatrixRotationQuaternion(d);c=JSM.MatrixMultiply(d,c);d=0===a.scales.length?[0,0,0,0]:a.scales[0];c=e(c,d);65535!=a.userId&&(d=b.nodeIdToIndex[a.userId],
|
||||
void 0!==d&&(d=k(b.nodes[d],b),c=JSM.MatrixMultiply(c,d)));return a.matrix=c}var l=a.meshData;l=void 0===l||null===l?null:l.transformation;if(null!==l){var m=null,m=null!==b?k(b,c):l;c=JSM.MatrixClone(m);m=JSM.MatrixClone(l);l=JSM.MatrixInvert(m);null!==l&&(h(a,m,l),b=void 0===b||null===b?[0,0,0]:b.pivot,f(c,[-b[0],-b[1],-b[2]]),b=JSM.MatrixMultiply(l,c),g(a,b))}}function e(a,b,c,f){d(a,b,f);b=a.UVCount()==a.VertexCount();f=a.meshData;var g,h,k;for(g=0;g<a.TriangleCount();g++)h=a.GetTriangle(g),b&&
|
||||
(h.u0=h.v0,h.u1=h.v1,h.u2=h.v2),k=f.faceToMaterial[g],void 0!==k&&(k=c[k],void 0!==k&&(h.mat=k)),k=f.faceToSmoothingGroup[g],void 0!==k&&(h.curve=k)}function f(a,b,c,d){b=b.Clone();b.SetName(b.GetName()+" ("+d+")");c<a.BodyCount()?a.AddBodyToIndex(b,c):a.AddBody(b);return b}var g,h,w,u,s,x,B;for(g=0;g<b.BodyCount();g++)if(w=b.GetBody(g),u=w.meshData,0===u.objectNodes.length)e(w,null,c,a);else{x=a.nodes[u.objectNodes[0]];for(h=1;h<u.objectNodes.length;h++)s=a.nodes[u.objectNodes[h]],B=f(b,w,g+1,h+
|
||||
1),B.meshData=w.meshData,e(B,s,c,a),g+=1;e(w,x,c,a)}})(h,d,f);d.Finalize();return JSM.ConvertTriangleModelToJsonData(d)};
|
||||
JSM.ReadObjFile=function(a,b){function c(a,c,d,e){if(void 0!==b.onMaterialComponent&&null!==b.onMaterialComponent)b.onMaterialComponent(a,c,d,e)}function d(a,c,d){if(void 0!==b.onVertex&&null!==b.onVertex)b.onVertex(a,c,d)}function e(a,c,d){if(void 0!==b.onNormal&&null!==b.onNormal)b.onNormal(a,c,d)}function f(a,c){if(void 0!==b.onTexCoord&&null!==b.onTexCoord)b.onTexCoord(a,c)}function g(a){return void 0!==b.onFileRequested&&null!==b.onFileRequested?b.onFileRequested(a):null}function h(a){function h(a,
|
||||
b){var c=a.indexOf(b)+b.length;return a.substr(c,a.length-c).trim()}if(0!==a.length&&"#"!=a[0]){var n=a.split(/\s+/);if(!(0===n.length||"#"==n[0][0]))if("g"==n[0]){if(!(2>n.length)){var p="";for(a=1;a<n.length;a++)p+=n[a],a<n.length-1&&(p+=" ");if(void 0!==b.onMesh&&null!==b.onMesh)b.onMesh(p)}}else if("v"==n[0])4>n.length||d(parseFloat(n[1]),parseFloat(n[2]),parseFloat(n[3]));else if("vn"==n[0])4>n.length||e(parseFloat(n[1]),parseFloat(n[2]),parseFloat(n[3]));else if("vt"==n[0])3>n.length||f(parseFloat(n[1]),
|
||||
parseFloat(n[2]));else if("f"==n[0]){if(!(4>n.length)){var p=[],q=[],r=[],t;for(a=1;a<n.length;a++)t=n[a].split("/"),p.push(parseInt(t[0],10)-1),1<t.length&&0<t[1].length&&r.push(parseInt(t[1],10)-1),2<t.length&&0<t[2].length&&q.push(parseInt(t[2],10)-1);if(void 0!==b.onFace&&null!==b.onFace)b.onFace(p,q,r)}}else if("usemtl"==n[0]){if(!(2>n.length)&&void 0!==b.onUseMaterial&&null!==b.onUseMaterial)b.onUseMaterial(n[1])}else if("newmtl"==n[0]){if(!(2>n.length)&&void 0!==b.onNewMaterial&&null!==b.onNewMaterial)b.onNewMaterial(n[1])}else if("Ka"==
|
||||
@ -265,9 +265,9 @@ if(void 0!==b.onFace&&null!==b.onFace)b.onFace(e[0],e[1],e[2],d);return l}return
|
||||
JSM.ConvertStlToJsonData=function(a,b){var c=new JSM.TriangleModel,d=c.AddBody(new JSM.TriangleBody("Default")),e=c.GetBody(d);null!==a?JSM.ReadBinaryStlFile(a,{onFace:function(a,b,c,d){a=e.AddVertex(a[0],a[1],a[2]);b=e.AddVertex(b[0],b[1],b[2]);c=e.AddVertex(c[0],c[1],c[2]);d=JSM.VectorNormalize(new JSM.Vector(d[0],d[1],d[2]));d=e.AddNormal(d.x,d.y,d.z);e.AddTriangle(a,b,c,d,d,d)}}):null!==b&&JSM.ReadAsciiStlFile(b,{onFace:function(a,b,c,d){a=e.AddVertex(a[0],a[1],a[2]);b=e.AddVertex(b[0],b[1],b[2]);
|
||||
c=e.AddVertex(c[0],c[1],c[2]);d=JSM.VectorNormalize(new JSM.Vector(d[0],d[1],d[2]));d=e.AddNormal(d.x,d.y,d.z);e.AddTriangle(a,b,c,d,d,d)}});c.Finalize();return JSM.ConvertTriangleModelToJsonData(c)};JSM.ImportFileList=function(){this.isFile=this.descriptors=this.originalList=null};
|
||||
JSM.ImportFileList.prototype.InitFromFiles=function(a){this.originalList=a;this.descriptors=[];var b,c;for(b=0;b<a.length;b++)c=a[b],c={originalObject:c,originalFileName:c.name,fileName:c.name.toUpperCase(),extension:this.GetFileExtension(c.name)},this.descriptors.push(c);this.isFile=!0};
|
||||
JSM.ImportFileList.prototype.InitFromURLs=function(a){this.originalList=a;this.descriptors=[];var b,c,d;for(b=0;b<a.length;b++)c=a[b],d=this.GetFileName(c),c={originalObject:c,originalFileName:d,fileName:d.toUpperCase(),extension:this.GetFileExtension(d)},this.descriptors.push(c);this.isFile=!1};JSM.ImportFileList.prototype.GetOriginalList=function(a){return this.originalList};
|
||||
JSM.ImportFileList.prototype.GetInputList=function(a){a=[];var b,c,d;for(b=0;b<this.descriptors.length;b++){c=this.descriptors[b];d=c.originalObject;var e=this.IsFile();c=".OBJ"==c.extension||".MTL"==c.extension?!1:!0;d={originalObject:d,isFile:e,isArrayBuffer:c};a.push(d)}return a};JSM.ImportFileList.prototype.GetFileName=function(a){var b=a.split("/");1==b.length&&(b=a.split("\\"));return 0===b.length?"":b[b.length-1]};JSM.ImportFileList.prototype.GetFileDescriptor=function(a){return this.descriptors[a]};
|
||||
JSM.ImportFileList.prototype.IsFile=function(a){return this.isFile};JSM.ImportFileList.prototype.GetMainFileIndex=function(a){var b;for(a=0;a<this.descriptors.length;a++)if(b=this.descriptors[a],this.IsSupportedExtension(b.extension))return a;return-1};JSM.ImportFileList.prototype.GetFileIndexByName=function(a){var b,c,d;for(b=0;b<this.descriptors.length;b++)if(c=this.descriptors[b],d=this.GetFileName(a),c.fileName==d.toUpperCase())return b;return-1};
|
||||
JSM.ImportFileList.prototype.InitFromURLs=function(a){this.originalList=a;this.descriptors=[];var b,c,d;for(b=0;b<a.length;b++)c=a[b],d=this.GetFileName(c),c={originalObject:c,originalFileName:d,fileName:d.toUpperCase(),extension:this.GetFileExtension(d)},this.descriptors.push(c);this.isFile=!1};JSM.ImportFileList.prototype.GetOriginalList=function(){return this.originalList};
|
||||
JSM.ImportFileList.prototype.GetInputList=function(){var a=[],b,c,d;for(b=0;b<this.descriptors.length;b++){c=this.descriptors[b];d=c.originalObject;var e=this.IsFile();c=".OBJ"==c.extension||".MTL"==c.extension?!1:!0;d={originalObject:d,isFile:e,isArrayBuffer:c};a.push(d)}return a};JSM.ImportFileList.prototype.GetFileName=function(a){var b=a.split("/");1==b.length&&(b=a.split("\\"));return 0===b.length?"":b[b.length-1]};JSM.ImportFileList.prototype.GetFileDescriptor=function(a){return this.descriptors[a]};
|
||||
JSM.ImportFileList.prototype.IsFile=function(){return this.isFile};JSM.ImportFileList.prototype.GetMainFileIndex=function(){var a,b;for(a=0;a<this.descriptors.length;a++)if(b=this.descriptors[a],this.IsSupportedExtension(b.extension))return a;return-1};JSM.ImportFileList.prototype.GetFileIndexByName=function(a){var b,c,d;for(b=0;b<this.descriptors.length;b++)if(c=this.descriptors[b],d=this.GetFileName(a),c.fileName==d.toUpperCase())return b;return-1};
|
||||
JSM.ImportFileList.prototype.IsSupportedExtension=function(a){return".3DS"==a||".OBJ"==a||".STL"==a?!0:!1};JSM.ImportFileList.prototype.GetFileExtension=function(a){var b=a.lastIndexOf(".");if(-1==b)return"";a=a.substr(b);return a=a.toUpperCase()};
|
||||
JSM.ConvertImportFileListToJsonData=function(a,b){function c(){if(void 0!==b.onError&&null!==b.onError)b.onError()}function d(a,c){if(void 0!==b.onReady&&null!==b.onReady)b.onReady(a,c)}function e(a,b,c,d){var e=a.GetFileIndexByName(c);a=a.GetFileName(c);if(-1==e)return d.missing.push(a),null;d.requested.push(a);return b[e]}var f=a.GetMainFileIndex();if(-1===f)c();else{var g=a.GetFileDescriptor(f),h={main:g.originalFileName,requested:[],missing:[]},k=a.GetInputList();try{".3DS"==g.extension?JSM.LoadMultipleBuffers(k,
|
||||
function(b){var c=JSM.Convert3dsToJsonData(b[f],{onFileRequested:function(c){return e(a,b,c,h)}});d(h,c)}):".OBJ"==g.extension?JSM.LoadMultipleBuffers(k,function(b){var c=JSM.ConvertObjToJsonData(b[f],{onFileRequested:function(c){return e(a,b,c,h)}});d(h,c)}):".STL"==g.extension&&JSM.LoadMultipleBuffers(k,function(a){a=a[f];if(JSM.IsBinaryStlFile(a))a=JSM.ConvertStlToJsonData(a,null),d(h,a);else{for(a=0;a<k.length;a++)k[a].isArrayBuffer=!1;JSM.LoadMultipleBuffers(k,function(a){a=JSM.ConvertStlToJsonData(null,
|
||||
@ -507,8 +507,8 @@ l.map=m}f.computeFaceNormals();a=new THREE.Mesh(f,l);e.push(a)},onTriangle:funct
|
||||
a);null!==p&&(null!==q&&null!==r)&&(d=[],d.push(new THREE.Vector2(p.x,-p.y)),d.push(new THREE.Vector2(q.x,-q.y)),d.push(new THREE.Vector2(r.x,-r.y)),f.faceVertexUvs[0].push(d))}});return e};JSM.ConvertModelToThreeMeshes=function(a,b,c){var d=[],e=[],f,g;for(f=0;f<a.BodyCount();f++){e=a.GetBody(f);e=JSM.ConvertBodyToThreeMeshes(e,b,c);for(g=0;g<e.length;g++)d.push(e[g])}return d};
|
||||
JSM.ConvertJSONDataToThreeMeshes=function(a,b,c){function d(a,c){function d(a){function k(a,b,c,d,e){c=new THREE.Vector2(a,b);JSM.IsZero(e)||(d=Math.sin(e*JSM.DegRad),e=Math.cos(e*JSM.DegRad),c.x=e*a-d*b,c.y=d*a+e*b);c.x=t[0]+c.x*C[0];c.y=t[1]+c.y*C[1];return c}var m=a.parameters,r=f[a.material];a=r.texture;var t=r.offset,C=r.scale,v=r.rotation,G=new THREE.Color,z=new THREE.Color,L=new THREE.Color,N=r.shininess;G.setRGB(r.ambient[0],r.ambient[1],r.ambient[2]);z.setRGB(r.diffuse[0],r.diffuse[1],r.diffuse[2]);
|
||||
L.setRGB(r.specular[0],r.specular[1],r.specular[2]);if(void 0!==a&&null!==a){G.setRGB(1,1,1);z.setRGB(1,1,1);L.setRGB(1,1,1);if(void 0===t||null===t)t=[0,0];if(void 0===C||null===C)C=[1,1];if(void 0===v||null===v)v=0}G=new THREE.MeshPhongMaterial({ambient:z.getHex(),color:z.getHex(),specular:L.getHex(),shininess:N,side:THREE.DoubleSide});1!==r.opacity&&(G.opacity=r.opacity,G.transparent=!0);void 0!==a&&null!==a&&(r=THREE.ImageUtils.loadTexture(a,new THREE.UVMapping,function(a){a.image=JSM.ResizeImageToPowerOfTwoSides(a.image);
|
||||
void 0!==b&&null!==b&&b()}),r.wrapS=THREE.RepeatWrapping,r.wrapT=THREE.RepeatWrapping,G.map=r);var r=new THREE.Geometry,D,y,A,J,O,M,H,F,I;for(I=0;I<m.length;I+=9)D=3*m[I+0],y=3*m[I+1],A=3*m[I+2],J=3*m[I+3],O=3*m[I+4],M=3*m[I+5],z=2*m[I+6],L=2*m[I+7],N=2*m[I+8],H=r.vertices.length,F=r.faces.length,r.vertices.push(new THREE.Vector3(g[D+0],g[D+1],g[D+2])),r.vertices.push(new THREE.Vector3(g[y+0],g[y+1],g[y+2])),r.vertices.push(new THREE.Vector3(g[A+0],g[A+1],g[A+2])),r.faces.push(new THREE.Face3(H+0,
|
||||
H+1,H+2)),D=[],D.push(new THREE.Vector3(h[J+0],h[J+1],h[J+2])),D.push(new THREE.Vector3(h[O+0],h[O+1],h[O+2])),D.push(new THREE.Vector3(h[M+0],h[M+1],h[M+2])),r.faces[F].vertexNormals=D,void 0!==a&&null!==a&&(J=[],J.push(k(q[z+0],q[z+1],t,C,v)),J.push(k(q[L+0],q[L+1],t,C,v)),J.push(k(q[N+0],q[N+1],t,C,v)),r.faceVertexUvs[0].push(J));m=new THREE.Mesh(r,G);m.originalJsonIndex=c;e.push(m)}var g=a.vertices;if(void 0!==g){var h=a.normals;if(void 0!==h){var q=a.uvs;if(void 0!==q){var r=a.triangles,t;for(t=
|
||||
void 0!==b&&null!==b&&b()}),r.wrapS=THREE.RepeatWrapping,r.wrapT=THREE.RepeatWrapping,G.map=r);var r=new THREE.Geometry,E,y,A,J,O,M,H,F,I;for(I=0;I<m.length;I+=9)E=3*m[I+0],y=3*m[I+1],A=3*m[I+2],J=3*m[I+3],O=3*m[I+4],M=3*m[I+5],z=2*m[I+6],L=2*m[I+7],N=2*m[I+8],H=r.vertices.length,F=r.faces.length,r.vertices.push(new THREE.Vector3(g[E+0],g[E+1],g[E+2])),r.vertices.push(new THREE.Vector3(g[y+0],g[y+1],g[y+2])),r.vertices.push(new THREE.Vector3(g[A+0],g[A+1],g[A+2])),r.faces.push(new THREE.Face3(H+0,
|
||||
H+1,H+2)),E=[],E.push(new THREE.Vector3(h[J+0],h[J+1],h[J+2])),E.push(new THREE.Vector3(h[O+0],h[O+1],h[O+2])),E.push(new THREE.Vector3(h[M+0],h[M+1],h[M+2])),r.faces[F].vertexNormals=E,void 0!==a&&null!==a&&(J=[],J.push(k(q[z+0],q[z+1],t,C,v)),J.push(k(q[L+0],q[L+1],t,C,v)),J.push(k(q[N+0],q[N+1],t,C,v)),r.faceVertexUvs[0].push(J));m=new THREE.Mesh(r,G);m.originalJsonIndex=c;e.push(m)}var g=a.vertices;if(void 0!==g){var h=a.normals;if(void 0!==h){var q=a.uvs;if(void 0!==q){var r=a.triangles,t;for(t=
|
||||
0;t<r.length;t++)d(r[t])}}}}var e=[],f=a.materials;if(void 0===f)return e;var g=a.meshes;if(void 0===g)return e;var h=0;JSM.AsyncRunTask(function(){d(g[h],h);h+=1;return!0},c,g.length,0,e);return e};JSM.JSONFileConverter=function(a,b){this.onReady=a;this.onTextureLoaded=b};JSM.JSONFileConverter.prototype.Convert=function(a){(new JSM.JSONFileLoader(this.OnReady.bind(this))).Load(a)};
|
||||
JSM.JSONFileConverter.prototype.OnReady=function(a){null!==this.onReady&&(a=JSM.ConvertJSONDataToThreeMeshes(a,this.onTextureLoaded),this.onReady(a))};JSM.ThreeViewer=function(){this.enableDraw=this.drawLoop=this.settings=this.navigation=this.cameraMove=this.runAfterRender=this.runBeforeRender=this.directionalLight=this.ambientLight=this.renderer=this.camera=this.scene=this.canvas=null};
|
||||
JSM.ThreeViewer.prototype.Start=function(a,b){if(!JSM.IsWebGLEnabled()||!this.InitSettings(b)||!this.InitThree(a)||!this.InitCamera(b)||!this.InitLights())return!1;this.drawLoop=!1;this.enableDraw=!0;this.DrawIfNeeded();return!0};
|
||||
|
||||
@ -147,6 +147,29 @@ ImporterApp.prototype.GenerateMenu = function ()
|
||||
return group;
|
||||
}
|
||||
|
||||
function AddInformation (infoGroup, jsonData)
|
||||
{
|
||||
var infoTable = new InfoTable (infoGroup);
|
||||
|
||||
var materialCount = jsonData.materials.length;
|
||||
var vertexCount = 0;
|
||||
var triangleCount = 0;
|
||||
|
||||
var i, j, mesh, triangles;
|
||||
for (i = 0; i < jsonData.meshes.length; i++) {
|
||||
mesh = jsonData.meshes[i];
|
||||
vertexCount += mesh.vertices.length / 3;
|
||||
for (j = 0; j < mesh.triangles.length; j++) {
|
||||
triangles = mesh.triangles[j];
|
||||
triangleCount += triangles.parameters.length / 9;
|
||||
}
|
||||
}
|
||||
|
||||
infoTable.AddRow ('Material count', materialCount);
|
||||
infoTable.AddRow ('Vertex count', vertexCount);
|
||||
infoTable.AddRow ('Triangle count', triangleCount);
|
||||
}
|
||||
|
||||
function AddMaterial (importerMenu, material)
|
||||
{
|
||||
importerMenu.AddSubItem (materialsGroup, material.name, {
|
||||
@ -240,6 +263,9 @@ ImporterApp.prototype.GenerateMenu = function ()
|
||||
}
|
||||
}
|
||||
|
||||
var infoGroup = AddDefaultGroup (importerMenu, 'Information');
|
||||
AddInformation (infoGroup, jsonData);
|
||||
|
||||
var materialsGroup = AddDefaultGroup (importerMenu, 'Materials');
|
||||
var material;
|
||||
for (i = 0; i < jsonData.materials.length; i++) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user