Can this be used to create a .dts importer for T2 models?

ultrasonicsite

Veteran XV
Found here: Can someone make a .dts importer for milkshape 3d? | General Discussion | Forums | Community | GarageGames.com

Code:
ConsoleFunction(dumpDTStoObj, void, 3, 3, "(string objfile, string dts)") 
 { 
 Resource<TSShape> shape; 
 shape = ResourceManager->load(argv[2]); 
 const char * str; 
 if(shape.isNull()) 
 return; 

 TSShapeInstance *shapeinst = new TSShapeInstance(shape, true); 
 if(!shapeinst) 
 return; 

 FileStream stream; 
 stream.open(argv[1], FileStream::Write); 

 TSShape* mShape = shapeinst->getShape(); 

 Con::printf("Dumping %s to %s", argv[2], argv[1]); 
 dumpLine("#obj file rn"); 
 U32 i; 
 /*S32 frameCount = 0; 
 for(i = 0; i < mShape->sequences.size(); i++){ 
 frameCount += mShape->sequences[i].numKeyframes; 
 } 
 //dumpLine(avar("Frames: %irn", frameCount)); 
 dumpLine("Frames: 1rn"); //only STATIC meshes for now, kthxbai 
 dumpLine("Frame: 1rnrn"); 

 dumpLine(avar("Meshes: %irn", mShape->meshes.size()));*/ 

 // mesh: name, flags, material index 
 i = 0; //make this loopy eventually 
 TSMesh* tsm = mShape->meshes[i]; 

 // number of vertices 
 dumpLine(avar("#%irnrn", tsm->verts.size())); 

 ToolVector<Point2F> uvs; 
 tsm->getUVs(TSMesh::tDiffuse, uvs); 
 U32 j; // inner loopiness 
 for(j = 0; j<tsm->verts.size(); j++){ 
 Point3F xyz = tsm->verts[j]; 
 // vertex: flags, x, y, z, u, v, bone index 
 dumpLine(avar("v %f %f %frn", xyz.x, xyz.y, xyz.z)); 
 } 
 dumpLine("rn"); 

 for(j = 0; j<tsm->verts.size(); j++){ 
 Point2F uv = uvs[j]; 
 dumpLine(avar("vt %f %frn", uv.x, uv.y)); 
 } 
 dumpLine("rn"); 


 // number of normals 
 U32 normcount = tsm->getFlags(TSMesh::UseEncodedNormals) ? tsm->encodedNorms.size() : tsm->norms.size(); 
 dumpLine(avar("#%irnrn", normcount)); 

 const Point3F * norms = tsm->getNormals(0); 
 for(j = 0; j<normcount; j++){ 
 Point3F xyz = norms[j]; 
 // normal: x, y, z 
 dumpLine(avar("vn %f %f %frn", xyz.x, xyz.y, xyz.z)); 
 } 

 dumpLine("rn"); 

 // number of triangles 
 U32 tris = 0; 
 for(j = 0; j<tsm->primitives.size(); j++) 
 tris += tsm->primitives[j].numElements; 


 dumpLine(avar("# %irnrn",tris)); 

 dumpLine(avar("g Mesh%irnrn",i)); 
 for(j = 0; j<tsm->primitives.size(); j++){ 
 TSDrawPrimitive draw = tsm->primitives[j]; 
 // triangle: flags, vertex index1, vertex index2, vertex index3, normal index1, normal index 2, normal index 3, smoothing group 
 if ( (draw.matIndex & TSDrawPrimitive::TypeMask) == TSDrawPrimitive::Triangles) 
 { 
 for (S32 k=0; k<draw.numElements; ) 
 { 
 U32 idx0 = tsm->indices[draw.start + k + 0]; 
 U32 idx1 =tsm->indices[draw.start + k + 1]; 
 U32 idx2 = tsm->indices[draw.start + k + 2]; 
 dumpLine(avar("f %i/%i/%i %i/%i/%i %i/%i/%irn", (idx0+1), (idx0+1), (idx0+1), (idx1+1), (idx1+1), (idx1+1), (idx2+1), (idx2+1), (idx2+1))); 

 k += 3; 
 } 
 } else if((draw.matIndex & TSDrawPrimitive::TypeMask) == TSDrawPrimitive::Strip){ 
 U32 idx0 = tsm->indices[draw.start + 0]; 
 U32 idx1; 
 U32 idx2 = tsm->indices[draw.start + 1]; 
 U32 * nextIdx = &idx1; 
 for (S32 k=2; k<draw.numElements; k++) 
 { 
 *nextIdx = idx2; 
 nextIdx = (U32*) ( (dsize_t)nextIdx ^ (dsize_t)&idx0 ^ (dsize_t)&idx1); 
 idx2 = tsm->indices[draw.start + k]; 
 if (idx0 == idx1 || idx0 == idx2 || idx1 == idx2) 
 Con::printf("Warning, vertex redundancy: %i, %i, %i", idx0, idx1, idx2); 
 //continue; 
 dumpLine(avar("f %i/%i/%i %i/%i/%i %i/%i/%irn", (idx0+1), (idx0+1), (idx0+1), (idx1+1), (idx1+1), (idx1+1), (idx2+1), (idx2+1), (idx2+1))); 
 } 

 } else{ 
 dumpLine("# oops--don't really know how to handle thisrn"); 
 } 
 } 

 dumpLine("rn"); 

 stream.close(); 
 Con::printf("...dump complete"); 
 }

I'm trying to get the tribes 2 shapes into blender.

Ultimate Unwrap 3D Pro can import tribes 2 files but it can't save it unless you pay fifty bucks.

Also this can theoretically open it but I get an error: http://dl.dropbox.com/u/16353809/Don't Delete/BetaDefaultAnimations/Shaper 1.13.zip Make sure to apply the crack, it's okay the software is abandonware.
 
Last edited:
Back
Top