I'd just like to ask a couple of questions about the current knowledge of the model file format. I'm slowly getting through the guide however some parts are bothering me.
In section 1 I'm having a little trouble understanding the following:
16-byte mode vertex assignment header format: #A #A #A #A PP PP PP PP
16-byte mode vertex assigment format: NV NV 00 00 J1 J1 W1 W1 J2 J2 W2 W2
Where...
#A: Number of assignments that follow.
NV: Next NV Vertices are assigned to J1 J1 and J2 J2.
VO = Offset into the Vertex Pool, relative to the VP offset given in the Construct Header.
J1: Index of the first joint to which the body of vertices is assigned.
W1: Weight of the association between NV and J1 for animation purposes.
J2: Index of the second joint to which the body of vertices is assigned.
W2: Weight of the association between NV and J2 for animation purposes.
Is PP simply the offset into the vertex pool? In other words, is PP equivilent to VO.
Also in the 16-byte assignments are the two zeroed bytes in the assignment format just zeroed bytes (packing to keep to the four byte allignment), or do they contain values and the '00' are a symbol that isn't defined here?
I only ask about the '00' being used as a symbol because lower in the document I believe it is.
If I understand correctly perhaps the VO should be changed to PP (or vise-versa) and maybe the VO and NV definitions could be swapped to better represent the order of the actual bytes. Also maybe the two zeroed bytes (if thats what they are) should have a note just to clarify that they are zeroed bytes or otherwise.
Sorry to nit-pick, you guys have done a fantastic job with all this, just looking for a little clarification
.
Cheers, Jono.
EDIT:
Also I was wondering where the '**' byte is in the vertex pool information. I understand its purpose but don't understand which byte is the direction reversal byte. I think I'm missing something, any explination would be much appreciated.
"8-byte mode" setup...
ZZ ZZ YY YY XX XX 00 00 - ZZ ZZ YY YY XX XX 01 00
ZZ ZZ YY YY XX XX 02 00 - ZZ ZZ YY YY XX XX 03 00
"16-byte mode" setup...
ZZ ZZ YY YY XX XX 00 00 - ZZ ZZ YY YY XX XX 00 00
ZZ ZZ YY YY XX XX 01 00 - ZZ ZZ YY YY XX XX 01 00
Where...
ZZ: Magnitude of coordinate on the up & down axis on the screen plane
YY: Magnitude of coordinate on depth axis; toward or away from you with respect to the
screen.
XX: Magnitude of coordinate on right & left axis on the screen plane
**: A directional reverser byte. If 00, the vertex is placed in one direction on the axis,
and if FF, the vertex gets placed on a coordinate the same "magnitude" but opposite
direction on that axis. (In actuality, it merely specifies whether the value is
positive or negative in hex).
00 00: The vertex index; two bytes per vertex.
Thanks again for all you hard work guys!