Ian Porter opened this issue on Aug 03, 2003 ยท 47 posts
Ian Porter posted Sun, 03 August 2003 at 1:29 PM
Apologies that this section is a bit long, It would have been awkward to split. To progress from here I am going to make use of a couple more shareware programs which are available on the 'net. They are:- I3DSTEST.EXE A program which partially decodes 3DS files. and Fairdell HexCmp A hex file compare program by Fairdell software Grateful thanks to the creators of these programs, they are far cleverer that I. If you want to verify my results, then you can download these programs. If you are nervous about downloading exe files off the net, then you may just want to watch what happens next. Lets clear our Poser workspace, and bring in another cube, scale it up to 1000%, and then export it as an .OBJ file and also as a 3DS file. Since these two files describe the same object, if we can decode both files we should be able to find some common ground. First let's look at the .OBJ file. That's easy because it is ASCII format. Looking at the start of the file we see... # InternalName: box_1 # ExternalName: box_1 # Num verts: 486 # Num sets: 1536 # Num elems: 384 # Num tverts: 116 # Num tsets: 1536 # Num tElems: 384 v -0.5 1 0.5 v -0.5 1 0.375 v -0.5 0.875 0.375 v -0.5 0.875 0.5 v -0.5 1 0.25 v -0.5 0.875 0.25 v -0.5 1 0.125 v -0.5 0.875 0.125 v -0.5 1 0 etc. Okay, lets set I3DSTEST loose on our 3DS file. To do that we open a DOS box, go into a directory where we have the I3DSTEST.EXE and our 3DS file (which I am calling 1pucube.3ds), and enter the command:- I3DSTEST 1pucube.3ds the program responds with >> Everything went OK. Oh, I thought it was going to decode the 3DS file for me? Never fear, it has created a file called 3dsload.log, whic we can load up in notepad, and we see... Inquisition 3D Engine for Free Pascal - 3DS LOADER DEBUG LOG FILE Loader code by Karoly Balogh (a.k.a. Charlie/Inquisition) and others Loader version : 0.4.7 .3DS Filename : 1pucube.3ds Main chunk ID $4D4D at 0, size: 20768 bytes. Unknown chunk ID $2 at 6, size: 10 bytes. Editor chunk ID $3D3D at 16, size: 20752 bytes. Unknown chunk ID $3D3E at 22, size: 10 bytes. Unknown chunk ID $100 at 32, size: 10 bytes. Material block chunk ID $AFFF at 42, size: 190 bytes. Material name chunk ID $A000 at 48, size: 14 bytes. - Material name: Preview Material ambient color chunk ID $A010 at 62, size: 24 bytes. RGB byte color chunk ID $11 at 68, size: 9 bytes. - RGB byte color values: R:0 G:0 B:0 Unknown chunk ID $12 at 77, size: 9 bytes. Unknown chunk ID $A020 at 86, size: 24 bytes. Unknown chunk ID $A030 at 110, size: 24 bytes. Unknown chunk ID $A040 at 134, size: 14 bytes. Unknown chunk ID $A041 at 148, size: 14 bytes. Unknown chunk ID $A050 at 162, size: 14 bytes. Unknown chunk ID $A052 at 176, size: 14 bytes. Unknown chunk ID $A053 at 190, size: 14 bytes. Unknown chunk ID $A100 at 204, size: 8 bytes. Unknown chunk ID $A084 at 212, size: 14 bytes. Unknown chunk ID $A08A at 226, size: 6 bytes. Object block chunk ID $4000 at 232, size: 20536 bytes. - Object name: box_1 Object mesh chunk ID $4100 at 244, size: 20524 bytes. Vertex list chunk ID $4110 at 250, size: 5840 bytes. - Found 486 vertexes. - Vertex 0. X:-0.500 Y:1.000 Z:-0.500 - Vertex 1. X:-0.500 Y:1.000 Z:-0.375 - Vertex 2. X:-0.500 Y:0.875 Z:-0.375 - Vertex 3. X:-0.500 Y:0.875 Z:-0.500 - Vertex 4. X:-0.500 Y:1.000 Z:-0.250 - Vertex 5. X:-0.500 Y:0.875 Z:-0.250 - Vertex 6. X:-0.500 Y:1.000 Z:-0.125 - Vertex 7. X:-0.500 Y:0.875 Z:-0.125 - Vertex 8. X:-0.500 Y:1.000 Z:-0.000 Well there's quite a lot of unknown chunks there, presumably the author has only been able to unscamble part of the format, but we can see the beginning of the list of vertices and happily the number of vertices match ;-), The vertex coordinates in the 3DS file match the vertices coordinates from our OBJ file, except that the Z coordinate is negative. But there is no sign of any kind of conversion factor here, or elsewhere in the decode. The full decode of the 3DS is 131K, so forgive me for not including it here. I looked all through it, and no conversion factor could I find...