Project DIVA IGB
解析

先頭ヘッダから途中までのデータは追えてますがポリゴン、テクスチャまでの間が不明なので省略します。

例としてskin00を使って説明します。
それぞれのパーツデータ表を参照してください。
各オプジェクトの先頭アドレス、フェース数、フォーマット、フェースタイプが必要ですが、この情報がどこにあるのかが不明です。
その為、ダンプエディタでデータ構造を見て展開します。

フェース数の割り出しは必ずある頂点の数値から求めます。
頂点と法線は32bitのfloatでXYZ(12byte)が並んでいます。
法線は-1.0〜1.0の範囲しかありませんので頂点と法線は明らかに数値が異なります。
次に続く数値は頂点カラーです。頂点カラーはRGBA 4byteです。これも判別しやすい値です。
これらを手掛かりに逆算して求めます。

「フォーマット」はオプジェクトのデータ構造ですがこれも不明なので数値を追いかけて最後のUV値まで求めます。
V 頂点
N 法線
C 頂点カラー
U UV
B1〜B5 (不明データ)
不明なデータは飛ばします。

どうも頂点インデックスデータは持っていないようなので自分で生成します。
トライアングルリストとトライアングルストリップの2種類です。

skin00_head
パーツ オフセット フェース数 フォーマット フェースタイプ
眉毛 0x3ff2a 0x24 V N C U リスト
0x411ae 0x8be V N C U リスト
0x6b50e 0x1a4 V N C U リスト
0x6f816 0x3fb V N C B2 U ストリップ

skin00
パーツ オフセット フェース数 フォーマット フェースタイプ
0x57c1e 0x1a1 V N U ストリップ
0x5b03e 0xdc V N C B4 U ストリップ
0x5d29e 0x160 V C B1 B5 U ストリップ
0x61ab6 0x236 V N C B1 B4 U ストリップ
スカート 0x67792 0x166 V N C B1 B2 U ストリップ
0x6b90a 0x35d V N C B1 B2 B3 U ストリップ
左足 0x753c2 0x34f V N C B1 B2 B3 U ストリップ
右足 0x7ebf6 0x91 V N B2 U ストリップ
ネクタイ 0x80642 0x9b V N B2 U ストリップ
左手&ネギ 0x81e7a 0x3fc V N C U リスト
右手&ネギ2 0x93d5a 0x3fc V N C U リスト


データ構造
頂点
float(32bit) x
float(32bit) y
float(32bit) z

法線
float(32bit) x
float(32bit) y
float(32bit) z

頂点カラー
u8 r
u8 g
u8 b
u8 a

不明データ1 (B1) 2 * フェース数
不明データ1 (B2) 8 * フェース数
不明データ1 (B3) 2
不明データ1 (B4) 4 * フェース数
不明データ1 (B5) 20 * フェース数

UV
float(32bit) u
float(32bit) v

フェース1(リスト)
順にフェース数分トライアングルリストで生成します。
1 0 2
4 3 5
7 6 8
10 9 11
13 12 11
16 15 17


フェース2(ストリップ)
終点がないので順にトライアングルストリップからトライアングルリストに変換しながら生成します。
1 0 2
1 2 3
3 2 4
3 4 5
5 4 6
5 6 7