[ヘッダ] | 必須 |
---|---|
[オブジェクト](1) | 必須 |
[頂 点] | 必須 |
[法 線] | 必須 |
[ポリゴン] | 必須 |
[モデル名] | 拡張 |
........ | |
[オブジェクト](2) | |
[頂 点] | |
[法 線] | |
[ポリゴン] | |
........ | |
[オブジェクト]... | |
............. |
typedef char CHAR; typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned long DWORD; typedef float FLOAT; struct tag_IFF{ CHAR chunk[4]; //4文字のチャンク名 DWORD size; //データサイズ };
[タグ] [データ] [タグ] [データ] ...... ......
内 容 : ファイル識別情報 チャンク : "SG3D" サイズ : 256 データ : タイプ 内容 DWORD バージョン(0x00011000) DWORD オブジェクト数 DWORD[62] 予約
内 容 : 階層情報 チャンク : "OBJT" サイズ : 96 データ : タイプ 内容 FLOAT[4][3] 3x4の変換マトリクス FLOAT[3] トランスレーション(XYZ) FLOAT[3] ローテーション(XYZ) FLOAT[3] スケーリング(XYZ) DWORD ID(0〜n) DWORD 子供のID DWORD 兄弟のID 備 考 : 角度の単位は(度) IDは子供・兄弟がない場合は-1(0xffffffff)
内 容 : 頂点座標 チャンク : "VerF" サイズ : 12x頂点数 データ : タイプ 内容 FLOAT[3] 頂点の座標(XYZ) 備 考 : 上記データを頂点数分セットする
内 容 : 頂点の法線ベクトル チャンク : "NorF" サイズ : 12x頂点数 データ : タイプ 内容 FLOAT[3] 頂点の法線ベクトル(XYZ) 備 考 : 上記データを頂点数分セットする 単位ベクトル
内 容 : ポリゴンの頂点番号 チャンク : "POLY" サイズ : 8xポリゴン数 データ : タイプ 内容 WORD[4] 4点ポリゴンを構成する頂点番号 備 考 : 上記データをポリゴン数分セットする 頂点番号は右回り
内 容 : オブジェクト(階層)名 チャンク : "MoNm" サイズ : 文字列長 データ : タイプ 内容 CHAR[?] オブジェクト名の文字列 備 考 : 文字列は終了コード('¥0')を含めなければならない
内 容 : セガサターン用グーローテーブル チャンク : "SSGr" サイズ : 8xポリゴン数 データ : タイプ 内容 WORD[4] ポリゴン適用されたグーローデータ 備 考 : 上記データをポリゴン数分セットする デフォルトは{0xc210,0xc210,0xc210,0xc210} 詳細別途
内 容 : セガサターン用面属性 チャンク : "SSAt" サイズ : 12xポリゴン数 データ : タイプ 内容 WORD 表裏反転フラグ 0 Single_Plane 1 Dual_Plane WORD Zソートフラグ 0 SORT_CEN (中心点) 1 SORT_MIN (最近点) 2 SORT_MAX (再遠点) 3 SORT_FAR (未使用) 4 SORT_NER (未使用) WORD テクスチャ番号 WORD カラー(R:G:B=5:5:5) DWORD 面属性の種類 BIT 0 texHflip 1 texVflip 2 3 sprTexture 4 sprPolygon 5 sprPolyLine 6 7 UserShade 8 MESHon 9 CL_Shadow 10 CL_Half 11 CL_Trans 12 CL_Gouraud 13 ECdis 14 SPdis 15 CL16Bnk 16 CL16Look 17 CL64Bnk 18 CL128Bnk 19 CL256Bnk 20 CL32KRGB 21 Window_In 22 Window_Out 23 24 UseLight 25 UseClip 26 UsePalette 27 UseNearClip 28 UseDepth 29 30 31 備 考 : 上記データをポリゴン数分セットする デフォルトは{0,0,0,0xc210,0x01100010} 詳細別途