＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝



　ＰＳＹ　メタルギアソリッドシステム　モデルフォーマット



　Ver.1.00	1999.5.25	K.Takabe

　$Id: mdl_fmt.txt,v 1.1.1.3 2002/11/19 11:41:43 Yoshizawa1 Exp $



＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝



－－－－－－－－－－－－－－－－

　　　　名称定義

－－－－－－－－－－－－－－－－



[オブジェクト]

　モデルをある程度の固まりでまとめたもの。基本的にはオブジェクトは

同一属性を持つ必要がある。また、関節型モデルの場合には１つの関節が

１つのオブジェクトに対応するようにしなければならない。

　モデル属性には現在

　　・グロー（必須）

	・両面（現在のデフォルト）

　が存在する。





[オブジェクトパケット]

　実機上で一回に処理するプリミティブパケットを便宜上オブジェクト

パケットとして定義する。オブジェクトパケットは同一のフラグ、同一の

テクスチャＩＤを持つ必要がある。

　１つのオブジェクトパケットに含まれる最大頂点数は６４頂点までなので、

それ以上の頂点数は切り離して別のオブジェクトパケットとして定義しなければ

ならない。

　フラグには現在

　　・通常処理

　　・エンベロープ処理対応

　が存在する。







－－－－－－－－－－－－－－－－

　　　　定義定数

－－－－－－－－－－－－－－－－



オブジェクト属性種類

　現在、旧モデルフォーマット（*.kmd）と同じ内容にしているが、

場合によっては大幅な変更もありえるので注意。

enum {

	DG_TYPE_FT4		= 0x0000,	/* フラット（禁止）	*/

	DG_TYPE_GT4		= 0x0001,	/* グーロー（必須）	*/

	DG_TYPE_TRANS	= 0x0002,	/* 半透明化			*/

	DG_TYPE_NOSHADE	= 0x0004,	/* 光源なし			*/

	DG_TYPE_RAISED	= 0x0100,	/* 優先アップ		*/

	DG_TYPE_SUNKEN	= 0x0200,	/* 優先ダウン		*/

	DG_TYPE_TWOSIDE	= 0x0400,	/* 両面あり			*/

	DG_TYPE_TWOCLIP	= 0x0800,	/* （予約）			*/

	DG_TYPE_LINK	= 0x00010000,	/* リンクポリゴン使用	*/

} ;



オブジェクトパケットフラグ種類

enum {

	DG_PACKET_NORMAL	= 0x00000000,	/* 通常処理 */

	DG_PACKET_ENVELOPE	= 0x00000001,	/* エンベロープ処理有効 */

	DG_PACKET_CULLRIGHT	= 0x00010000,	/* ストリップの右回りスタート */

	DG_PACKET_CULLLEFT	= 0x00020000,	/* ストリップの左回りスタート */

} ;







－－－－－－－－－－－－－－－－

　　　モデルデータ構造

－－－－－－－－－－－－－－－－



＜データ格納順番＞

　[ファイルヘッダ]

　[オブジェクト情報データ]×総オブジェクト数

　[オブジェクトパケット情報データ]×総オブジェクトパケット数

　[頂点データ]

　[法線データ]

　[ＵＶデータ]





＜各データの詳細＞



[ファイルヘッダフォーマット]

long32	n_models	オブジェクト数

long32	pad			リザーブ

float	lx,ly,lz	全体バウンディング

float	ux,uy,uz	全体バウンディング



[オブジェクト情報データフォーマット]

long32	type		オブジェクト属性

long32	n_packs		オブジェクトパケット数

float	lx,ly,lz	オブジェクトバウンディング

float	ux,uy,uz	オブジェクトバウンディング

float	tx,ty,tz	親オブジェクトからの相対座標

long32	parent		親オブジェクト番号

long32	packs		先頭オブジェクトパケットのオフセット

long32	pad0		リザーブ

long32	pad1		リザーブ

long32	pad2		リザーブ





[オブジェクトパケット情報データフォーマット]

long32	flag		オブジェクトパケットフラグ

long32	n_verts		頂点数（最大６４頂点）

long32	tex_id		テクスチャＩＤ

long32	pad			リザーブ

long32	verts		頂点データへのオフセット

long32	norms		法線データへのオフセット

long32	uvs			ＵＶデータへのオフセット

long32	rgbs		プリシェードデータへのオフセット（未使用）



[頂点データフォーマット]

（１２８ビット境界から開始すること）

short	vx	Ｘ座標（１６ビット符号付き整数 -32768～32767）

short	vy	Ｙ座標（１６ビット符号付き整数 -32768～32767）

short	vz	Ｚ座標（１６ビット符号付き整数 -32768～32767）

short	vw	エンベロープ重み（小数点以下１２ビット固定小数点 0.0～1.0 ）



[法線データフォーマット]

（１２８ビット境界から開始すること）

short	vx	Ｘ成分（小数点以下１２ビット固定小数点 -1.0～1.0 ）

short	vy	Ｙ成分（小数点以下１２ビット固定小数点 -1.0～1.0 ）

short	vz	Ｚ成分（小数点以下１２ビット固定小数点 -1.0～1.0 ）

short	vw	頂点描画フラグ（描画頂点：0x0fff 非描画頂点：0x8fff）



[ＵＶデータフォーマット]

（１２８ビット境界から開始すること）

short	u	テクスチャＵ座標（小数点以下１２ビット固定小数点 0.0～1.0 ）

short	v	テクスチャＶ座標（小数点以下１２ビット固定小数点 0.0～1.0 ）



