Forum: Poser - OFFICIAL


Subject: One Poser unit is absolutely

Ian Porter opened this issue on Aug 03, 2003 ยท 47 posts


Ian Porter posted Sun, 03 August 2003 at 3:04 PM

So the 3DS decode didn't reveal any conversion factor, but I think it was interesting to see 'inside' the file. I'm convinced the conversion factor has to be in the 3DS file somewhere. I need to think of another way of identifying it. Logically it has to be a constant, because I know the Poser world unit is a constant. Therefore the conversion factor is in every 3DS file exported from Poser. Other programs (such as Wings3D, Nendo, etc) will not have this same constant. So... I need to look for some byte sequence which is in every 3DS file I export from Poser, but which is never in any of the 3DS files I export from other programs. This is where I use that handy hex file compare program I mentioned in my previous post. I save two 3DS files out of Poser. One is our trusty 1 Poser unit cube, and the other is an object as different from the cube as I can get, a sphere at its default size. I open both of these files in HexCmp and start looking. Unfortunately I can't show you what I saw without doing a screen capture, which would be very large. Suffice it to say I find two sequences of several bytes which are identical and are not zeroes. One sequence is the word 'Preview' in ASCII, at 036h bytes in. And the other is a sequence '9D 73 CE 42 FF AF BE' at 026h bytes in. At this point you may be wondering why I am looking for a sequence of several bytes. Well, if the conversion factor is here it is not an integer. I know that because the Poser world unit of 8.6 feet is not any exact number of inches, and inches are GMAX's world unit, so it's got to be a floating point number, so it's got to be several bytes. Keeping this sequence of bytes at 026h in mind I open 3DS files created in other applications and look in that same place. None of them have that byte sequence... Interesting... Now better minds than mine might be able to work out the hex representation of floating point numbers, but I wouldn't know where to start. Not to worry, another search round the net reveals yet another shareware program, specifically Hex workshop by breakpoint software, which claims to be able to open a file in hex and interpret byte sequences in a whole range of number formats, just what I'm looking for.. I open one of my 3DS files exported from Poser and point Hex Workshop at that 9D hex byte 026h bytes into the file. Hex workshop shows a whole range of possible interpretations of the bytes from that point in the file, and the ninth one listed is... is.. is.. 'Float 103.22581'. At this point I treat myself to a beer.. Remember at the bottom of the second paragraph, of the second part of this proof we read the size of a 1 Poser unit cube in GMAX as (in inches) 103.226, and I asked you to remember that number? Well here in the 3DS file we have found the floating point equivalent of that exact figure (with a little rounding), and it is a constant in every 3DS file we export from Poser. I reckon we just found our conversion factor.. That floating point is four bytes by the way, so 9D 73 CE 42 is the hex representation of it. But there's more..