Well, I extracted my NG2 image, and all those models work just the same as the DOA ones:
http://img94.imageshack.us/img94/7870/ng2pix.jpg
Lots of elaborate stage models in that one.
I took a like at those .ng2 files too, Surveyor, but I also saw no file index. I looked around at the other file types in the image too for some kind of index list but couldn't find one. I guess it's probable that the lists are hardcoded in the binary...or something encrypted or compressed with a weird compression type somewhere. So I just used your tool to extract the gmd's. Unfortunately, this means the actual animation data is still buried somewhere inside those ng2's (since the GMD ANM chunk is always practically empty, it's probably just referring to another "global" animation table or something).
But anyway, I wanted to figure out the skeletal data, so I've been focusing on DOA still (where the animation data is clearly visible in the mot pack). I checked out those mot files, though, and again, there's no base bone/hierarchy data to be found (again unless it is weirdly encrypted/compressed, which wouldn't make much sense, at least not for the base pose). I've also noted that many pieces on the DOA girl models don't contain ANY weights! This even includes the "breast piece", even though I would've thought for sure those boobies were still boned in addition to utilizing morph targets. I mapped out "vtn1.tpr" (Tina's body) like so in terms of weights-per-mesh (I only noted the actual object counts, but all draw lists under each object happen to have identical counts on this one). Index values omitted means *0* weights:
3 - 2 weights
4 - 2 weights
5 - 2 weights
6 - 4 weights
7 - 2 weights
11 - 3 weights
13 - 2 weights
15 - 2 weights
16 - 2 weights
20 - 2 weights
21 - 3 weights
22 - 2 weights
23 - 2 weights
24 - 2 weights
25 - 4 weights
26 - 2 weights
30 - 3 weights
32 - 2 weights
34 - 2 weights
35 - 2 weights
39 - 2 weights
40 - 3 weights
And here's the kicker: None of the vertex components in Tina's body are *actually* bone indices. I've verified this to be 100% certain by mapping them all out (and the type of data can be determined, 100% of the time, using the decl info...so there's no mistake here). Here's the common cases for vertex sizes 32-48 in Tina (no vertex sizes above 48 exist in the model):
32-byte Vertex
--
00-12: Position
12-16: Normal
16-20: UV1
20-24: UV2 (seems 100% identical to UV1 in DOA models)
24-28: UV3 (seems 100% identical to UV1 in DOA models)
28-32: Tangent/Binormal (decoded just like Normal)
40-byte Vertex
--
00-12: Position
12-16: Normal
16-20: UV1
20-24: UV2 (seems 100% identical to UV1 in DOA models)
24-28: UV3 (seems 100% identical to UV1 in DOA models)
28-32: Tangent/Binormal (decoded just like Normal)
32-40: 2 weights (complete 32-bit floats)
44-byte Vertex
--
00-12: Position
12-16: Normal
16-20: UV1
20-24: UV2 (seems 100% identical to UV1 in DOA models)
24-28: UV3 (seems 100% identical to UV1 in DOA models)
28-32: Tangent/Binormal (decoded just like Normal)
32-44: 3 weights (complete 32-bit floats)
48-byte Vertex
--
00-12: Position
12-16: Normal
16-20: UV1
20-24: UV2 (seems 100% identical to UV1 in DOA models)
24-28: UV3 (seems 100% identical to UV1 in DOA models)
28-32: Tangent/Binormal (decoded just like Normal)
32-48: 4 weights (complete 32-bit floats)
However, those "weight" values seem like they definitely are weights, they always add up to 1.0 and occasionally 0 out components at the start or middle as a way of saying "no weight influence here".
So this leaves us with two possibilities: Either there's a max of 4 bones per draw (this would be insane!), or there's another set of per-vertex bone indices somewhere (actually, this is kind of insane too, but less insane). But where could they possibly be? They damn sure aren't anywhere in the XPR2, and DOAX2 has no concept of "GMD" structure, and they damn sure aren't in the motion data, and...well, I don't see any other files in DOAX2 to even consider searching in.
But I did notice that the Hie chunk contains, after the "bone" index and its parent index, a count WORD, and then WORD's (either "bone" or mesh indices) up to count. I had assumed this was simply "children" or something, but count is always a value from 0-3 (in every single DOA model), and when you consider that the "base bone" plus the "count bones" would add up to 1-4 bones for the weights....crazy as it seems, it does support the "4 bones per draw" theory. So I went ahead and tried those out in various combinations (as both indexes into the "bone" list and into the mesh list) to fill out the bone index array for each surface and supplement the actual weight values, but, nothing I tried looked right.
So, I have no ideas now, really. Surveyor, revelation, any thoughts on this madness?