kbr0n wrote:hello shakotay2
hello, kbr0n,
1. How can we tell if a certain value is v, vn or vt? Is there a certain range of values that make sense for one but not for other?
for vn the sum of square components is 1.0
For v, vt we generally can't say much, especially when half floats are used. It's a mix of trial and error and experience.
2. When calculating the "FVF SIZE", if i see something like:
f 1 2 3
f 4 5 6
f 4 7 5
f 8 6 5
how can I know where the block ends to figure out how many 4 bytes are in the block?
I don't see a relationship between FVF size and face indices, so don't know what you mean.
3. How can I identify if the faces are WORD or DWORD type?
in most cases words are used;
when you see something like 00 00 00 00 01 00 00 00 02 00 00 00 then it's DWORDs because 0 0 1 0 2 0 as face indices would not make much sense.
4. How can we check if it's Little Endian or Big Endian? (I know "1000 dec is stored as E8 03 (as opposed to 03 E8 in big endian" but how can I test this?)
you can't - simply toggle the 'litE' button to find it out. Consoles like PS3 use big endian.
When floats are used look at the start of vertices block: if it's like 3F 12 34 99 the it's big endian.
5. What is a "half float"
google helps; half precision floating point that needs 16 bits only
and why it's important to know it uses 2 bytes only??
it*s important to know for every binary format how many bytes it uses. But in fact, it's not important for you because
hex2obj cares for it - you only need to chose float, HFloat, etc.
How can we know when it's a "half float"
we can't - just try it out. In case
hex2obj displays unusual values in the lower left listbox then your choice was probably wrong.
"How can we know whether the values are unusual?" It's a matter of experience.
6. To find the "START ADDRESS OF NORMALS" you used 0x2B2E (WHERE DID THIS VALUE CAME FROM???) - 0x156C (SIZE OF NORMALLS LIST) = 0x15C2
I've have answered this already:
viewtopic.php?f=29&t=14695&p=121012&hilit=2B2E#p121012
7. "This would be the size of the uv list:
8 x 457= 3656 = 0xE48 (8: 2 floats with 4 bytes for uv data)"
Could you explain why did you use 8? Where can we see these 2 floats?
uvs have two components: tx, ty
You'll know it from experience some day that it's floats. Or read the tut again; I explained how to recognize floats.
8. Should the results of GO1 always start with f 1 2 3?
nope
9. what are those 3 mysterious checkboxes with no labels?
click them - most of them should tell you what they're good for (it's for more experienced users only)
10. How exactly can we search for Cloud Points? Which parameters should be tempered with to get it?
there is no recipe. It's trial and error and experience. And it's a matter of giving files a structure.
There's dozens of examples where I showed point clouds. Look at the sample files in a hexeditor
at the vertices start address I used.
I made some notes to get things a bit easier, could you take a look to see if I got this right?
(the ones I didn't comment look ok to me.)
[amount of face indices] = ([end address] - [start address])/size of FIs
[start of vertices] = [start of face index table] + ([face Index Count] * size of FIs)
maybe -
but most samples I checked start with vertices, then FIs to follow (or UVs, then FIs).
UV START ADDRESS = (START ADDRESS -xC) - (SIZE OF UV LIST)
can't remember such a format; would require the uv's block to be located before the vertex block.
SIZE OF NORMALS LIST = 12 X
max face index count; if floats are used
START ADDRESS OF NORMALS = (UVS START ADDRESS ???)- SIZE OF NORMALS LIST (this is the one that I could not follow from the tutorial)
ignore it - try out some of the dozens of samples I've extracted so far.
(
hex2obj doesn't care for normals, btw.)