to home

Ninjaライブラリ

モデル&モーション構造体


NJS_MATERIAL構造体


[定義]
モデルのマテリアルデータを格納する構造体
[記述]

typedef struct {
        NJS_COLOR       diffuse;        /* ディフューズ(拡散反射)色(0-255)*/
        NJS_COLOR       specular;       /* スペキュラ(鏡面反射)色(0-255)*/
        Float           exponent;       /* 指数(ハイライトの広がり)   */
        Uint32          attr_texId;     /* アトリビュートとテクスチャID 
                                           31-29:予約
                                           0-28:テクスチャリストにおけるテクスチャ番号
                                        */
        Uint32          attrflags;      /* アトリビュートフラグ 
                                           31-29:αブレンディングパラメータ(SRC)
                                           28-26:αブレンディングパラメータ(DST)
                                           25   :光源無視フラグ(1の時無視)            
                                           24   :フラットシェーディング(オン・オフ)
                                           23   :両面ポリゴン(オン・オフ)
                                           22   :環境マッピング(オン・オフ)
                                           21   :テクスチャ(有効・無効)
                                           20   :α(有効・無効)
                                           19   :スペキュラ無視(1の時無視)
                                           18-17:フリップ制御
                                           16-15:クランプ制御
                                           14-13:0...Point Sampled
                                                 1...Bilinear Filter
                                                 2...Trilinear Filter
                                           11- 8:Anisotropic Filter
                                           7    :ミップマップレンジの調整16段階
                                           6 - 0:未使用                         
                                       */
} NJS_MATERIAL;


NJS_MESHSET構造体


[定義]
ポリゴン・データを格納する構造体
[記述]

typedef struct {
	Uint16		type_matId;	/* メッシュのタイプとマテリアルID	
					  15-14:メッシュタイプ
					  13- 0:マテリアルID(0-4095)
					*/
	Uint16		nbMesh;		/* ポリゴン数・連続ポリゴン数	*/
	Sint16		*meshes;	/* ポリゴンリスト		*/
	Uint32		*attrs;		/* ポリゴンアトリビュート	*/
	NJS_VECTOR	*normals;	/* ポリゴンの法線ベクトルリスト	*/
	NJS_COLOR	*vertcolor;	/* ポリゴン頂点の色リスト	*/
	NJS_COLOR	*vertuv;	/* ポリゴン頂点のUVリスト	*/
} NJS_MESHSET;

NJS_MODEL構造体


[定義]
モデルデータ格納構造体
[記述]

typedef struct {
	NJS_POINT3	*points;	/* 頂点リスト		*/
	NJS_VECTOR	*normals;	/* 法線リスト		*/
	Sint32		nbPoint;	/* 頂点数		*/
	NJS_MESHSET	*meshsets;	/* ポリゴンリスト	*/
	NJS_MATERIAL	*mats;		/* マテリアルリスト	*/
	Uint16		nbMeshset;	/* メッシュセット数	*/
	Uint16		nbMat;		/* マテリアル数		*/
	NJS_POINT3	center;		/* モデルの中心位置	*/
	Float		r;		/* モデルの中心からの外接球半径	*/
} NJS_MODEL;

NJS_OBJECT構造体


[定義]
オブジェクトデータ格納構造体
[記述]

typedef struct obj {
	Uint32		evalflags;	/* 評価方法の最適化フラグ
					 0:NJD_EVAL_UNIT_POS
					 1:NJD_EVAL_UNIT_ANG
					 2:NJD_EVAL_UNIT_SCL
					 3:NJD_EVAL_HIDE
					 4:NJD_EVAL_BREAK
					 5:NJD_EVAL_ZXY_ANG 
					 6:NJD_EVAL_SKIP
					*/

	NJS_MODEL	*model;		/* モデル構造体へのポインタ	*/
	Float		pos[3];		/* 平行移動	*/
	Angle		ang[3];		/* 回転		*/
	Float		scl[3];		/* スケール	*/
	struct obj	*child;		/* 子供オブジェクトへのポインタ	*/
	struct obj	*sibling;	/* 兄弟オブジェクトへのポインタ	*/
} NJS_OBJECT;

NJS_MKEY_F構造体


[定義]
キー・データ格納用構造体
[記述]

typedef struct {
	Uint32	keyframe;	/* キーフレーム		*/
	Float	key[3];		/* 浮動小数点型のデータ
				   使用データ:移動・スケール・ベクトル等
				*/
} NJS_MKEY_F;

NJS_MKEY_A構造体


[定義]
キー・データ格納用構造体
[記述]

typedef struct {
	Uint32	keyframe;	/* キーフレーム		*/
	Angle	key[3];		/* アングル型のデータ	
				   使用データ:回転等	
				*/
} NJS_MKEY_A;

NJS_MKEY_P構造体


[定義]
キー・データ格納用構造体
[記述]

typedef struct 
{
	Uint32	keyframe;	/* キーフレーム		*/
	void	*key;		/* ポインタ型のデータ	
				   使用データ:シェープ等
				*/
} NJS_MKEY_P;

NJS_MKEY_F1構造体


[定義]
キー・データ格納用構造体
[記述]

typedef struct {
	Uint32	keyframe;	/* キーフレーム		*/
	Float	key;		/* 浮動小数点型のデータ	
				   使用データ:ライト・インテンシティ等
				*/
} NJS_MKEY_F1;

NJS_MKEY_F2構造体


[定義]
キー・データ格納用構造体
[記述]

typedef struct {
	Uint32	keyframe;	/* キーフレーム		*/
	Float	key[2];		/* 浮動小数点型のデータ	
				   使用データ:点光源用距離減衰データ等
				*/
} NJS_MKEY_F2;

NJS_MKEY_SPOT構造体


[定義]
キー・データ格納用構造体
[記述]

typedef struct {
	Uint32	keyframe;	/* キーフレーム		*/
	Float	nrang;		/* スポットライトの減衰の始まる距離	*/
	Float	frang;		/* スポットライトの効果がなくなる距離	*/
	Angle	iang;		/* スポットライトが最大強度である角度	*/
	Angle	oang;		/* スポットライトの効果がなくなる角度
				   使用データ:スポットライト・固有データのみ
				*/
} NJS_MKEY_SPOT;

NJS_MKEY_UI32構造体


[定義]
キー・データ格納用構造体
[記述]

typedef struct {
	Uint32	keyframe;	/* キーフレーム		*/
	Uint32	key;		/* unsigned long型のデータ
				   使用データ:ライト・カラーデータ等
				*/
} NJS_MKEY_UI32;

NJS_MKEY_SI32, NJS_MKEY_A1構造体


[定義]
キー・データ格納用構造体
[記述]

typedef struct {
	Uint32	keyframe;	/* キーフレーム		*/
	Sint32	key;		/* signed long型のデータ	*/
				   使用データ:カメラ・ロールデータ等
				*/
} NJS_MKEY_SI32, NJS_MKEY_A1;

NJS_MDATA1構造体


[定義]
要素数ごとの管理構造体
[記述]

typedef struct {
	void	*p[1];		/* NJS_MKEY型のポインタ配列	*/
	Uint32	nb[1];		/* キー数の配列
				   p[i]の示すポインタとキー数
				   nb[i]が対応
				*/
} NJS_MDATA1;

NJS_MDATA2構造体


[定義]
要素数ごとの管理構造体
[記述]

typedef struct {
	void	*p[2];		/* NJS_MKEY型のポインタ配列	*/
	Uint32	nb[2];		/* キー数の配列	
				   p[i]の示すポインタとキー数
				   nb[i]が対応
				*/
} NJS_MDATA2;

NJS_MDATA3構造体


[定義]
要素数ごとの管理構造体
[記述]

typedef struct {
	void	*p[3];		/* NJS_MKEY型のポインタ配列	*/
	Uint32	nb[3];		/* キー数の配列
				   p[i]の示すポインタとキー数
				   nb[i]が対応
				*/
} NJS_MDATA3;

NJS_MDATA4構造体


[定義]
要素数ごとの管理構造体
[記述]

typedef struct {
	void	*p[4];		/* NJS_MKEY型のポインタ配列	*/
	Uint32	nb[4];		/* キー数の配列
				   p[i]の示すポインタとキー数
				   nb[i]が対応
				*/
} NJS_MDATA4;

NJS_MDATA5構造体


[定義]
要素数ごとの管理構造体
[記述]

typedef struct {
	void	*p[5];		/* NJS_MKEY型のポインタ配列	*/
	Uint32	nb[5];		/* キー数の配列		*/
				   p[i]の示すポインタとキー数
				   nb[i]が対応
				*/
} NJS_MDATA5;

NJS_MOTION構造体


[定義]
1モーションデータを管理する構造体
[記述]

typedef struct {
	void	*mdata;		/* NJS_MDATA型のポインタ配列
				   通常オブジェクトツリー分の配列をもつ
				*/
	Uint32	nbFrame;	/* フレーム数	*/
	Uint16	type;		/* モーションのタイプ
				   0:NJD_MTYPE_POS_0
				   1:NJD_MTYPE_ANG_1
				   2:NJD_MTYPE_SCL_2
				   3:NJD_MTYPE_VEC_3
				   4:NJD_MTYPE_VERT_4
				   5:NJD_MTYPE_NORM_5
				   6:NJD_MTYPE_TARGET_3
				   7:NJD_MTYPE_ROLL_6
				   8:NJD_MTYPE_ANGLE_7
				   9:NJD_MTYPE_RGB_8
				  10:NJD_MTYPE_INTENSITY_9
				  11:NJD_MTYPE_SPOT_10
				  12:NJD_MTYPE_POINT_10
				*/
	Uint16	inp_fn;		/* 要素数および補間方法
				   0-3:要素数
				   6-7:補間方法(00:線形、01:スプライン)
				*/
} NJS_MOTION;

NJS_ACTION構造体


[定義]
オブジェクトとモーションのデータを統括した構造体
(通常、ベーシック・モデルのみに適用されます)
[記述]

typedef struct {
	NJS_OBJECT	*object;	/* オブジェクト・ツリーの先頭ポインタ */
	NJS_MOTION	*motion;	/* モーションリストのポインタ	*/
} NJS_ACTION;

NJS_MOTION_LINK構造体


[定義]
リンクさせる2つのモーションおよびフレームを格納する構造体
[記述]

typedef struct{
	NJS_MOTION	*motion[2];    	/* モーションリストポインタ配列	*/
	Float		frame[2];	/* リンク・フレーム配列	
					   motion[i]の示すモーションリストのポインタと
					   リンクするフレームframe[i]が対応							   i = 0:リンク元
					   i = 1:リンク先
					*/
} NJS_MOTION_LINK;

NJS_ACTION_LINK構造体


[定義]
オブジェクトとモーションリンクのデータを統括した構造体
(通常、ベーシック・モデルのみに適用されます)
[記述]

typedef struct{
	NJS_OBJECT	*object;	/* オブジェクト・ツリーの先頭ポインタ */
	NJS_MOTION_LINK	*motionlink;	/* モーションリンクポインタ	*/
} NJS_ACTION_LINK;

NJS_MOTION_DATA構造体


[定義]
モーション関数で計算されたカレント・フレームのデータ格納構造体
[記述]

typedef struct {
	Float	*pos;		/* 移動データ配列の先頭ポインタ		*/
	Angle	*ang;		/* 回転データ配列の先頭ポインタ		*/
	Float	*scl;		/* スケールデータ配列の先頭ポインタ	*/
} NJS_MOTION_DATA;

Copyright SEGA ENTERPRISES, LTD., 1998