rendered paste body// writes a version 2 vrml file by Lawrence Glaister VE7IT Nov 2008void myfon_writewrl(MYMESH *mymesh_,FILE *fileout_){ int i_,ii_,j_,k_,ilast_; fprintf(fileout_,"#VRML V2.0 utf8\n"); fprintf(fileout_,"Transform\n"); fprintf(fileout_,"{\n"); fprintf(fileout_," children\n"); fprintf(fileout_," [\n"); fprintf(fileout_," Shape\n"); fprintf(fileout_," {\n"); fprintf(fileout_," # number of triangles %d\n",mymesh_->ntriangles); fprintf(fileout_," appearance Appearance\n"); fprintf(fileout_," {\n"); fprintf(fileout_," material Material\n"); fprintf(fileout_," {\n"); fprintf(fileout_," diffuseColor 0 1 1\n"); fprintf(fileout_," }\n"); fprintf(fileout_," }\n"); fprintf(fileout_," geometry IndexedFaceSet\n"); fprintf(fileout_," {\n"); fprintf(fileout_," coordIndex\n"); fprintf(fileout_," [\n"); ilast_=(mymesh_->ntriangles)-1; // loop to write out all the index points .. really just 0,1,3... 998,999,1000... for(i_=0; i_<mymesh_->ntriangles; i_++) { fprintf(fileout_," %d,%d,%d",3*i_,3*i_+1,3*i_+2); if(i_==ilast_) fprintf(fileout_,"\n"); else fprintf(fileout_,",-1,\n"); } fprintf(fileout_," ] #end of coordIndex list\n"); fprintf(fileout_," coord Coordinate\n"); fprintf(fileout_," {\n"); fprintf(fileout_," point\n"); fprintf(fileout_," [\n"); // loop to write out all vertices in mesh for(ii_=0; ii_<mymesh_->ntriangles; ii_++) { i_=ii_; for(j_=0; j_<3; j_++) { k_=mymesh_->triangles[i_].v[j_]; fprintf(fileout_," %9.4f %9.4f %9.4f", (mymesh_->vertices[k_].x[0]), (mymesh_->vertices[k_].x[1]), (mymesh_->vertices[k_].x[2])); if(j_==2) { if(i_==ilast_) fprintf(fileout_,"\n"); else fprintf(fileout_,",\n"); } else { fprintf(fileout_,",\n"); } } } fprintf(fileout_," ] #end of triangle point list\n"); fprintf(fileout_," } #end of triangle verticles list\n"); fprintf(fileout_," } # end of IndexedFaceSet\n"); fprintf(fileout_," } #end of shape\n"); fprintf(fileout_," ] # end of children\n"); fprintf(fileout_,"} # end of Transform\n"); fflush(fileout_);}