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;
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;
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;
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;
typedef struct { Uint32 keyframe; /* キーフレーム */ Float key[3]; /* 浮動小数点型のデータ 使用データ:移動・スケール・ベクトル等 */ } NJS_MKEY_F;
typedef struct { Uint32 keyframe; /* キーフレーム */ Angle key[3]; /* アングル型のデータ 使用データ:回転等 */ } NJS_MKEY_A;
typedef struct { Uint32 keyframe; /* キーフレーム */ void *key; /* ポインタ型のデータ 使用データ:シェープ等 */ } NJS_MKEY_P;
typedef struct { Uint32 keyframe; /* キーフレーム */ Float key; /* 浮動小数点型のデータ 使用データ:ライト・インテンシティ等 */ } NJS_MKEY_F1;
typedef struct { Uint32 keyframe; /* キーフレーム */ Float key[2]; /* 浮動小数点型のデータ 使用データ:点光源用距離減衰データ等 */ } NJS_MKEY_F2;
typedef struct { Uint32 keyframe; /* キーフレーム */ Float nrang; /* スポットライトの減衰の始まる距離 */ Float frang; /* スポットライトの効果がなくなる距離 */ Angle iang; /* スポットライトが最大強度である角度 */ Angle oang; /* スポットライトの効果がなくなる角度 使用データ:スポットライト・固有データのみ */ } NJS_MKEY_SPOT;
typedef struct { Uint32 keyframe; /* キーフレーム */ Uint32 key; /* unsigned long型のデータ 使用データ:ライト・カラーデータ等 */ } NJS_MKEY_UI32;
typedef struct { Uint32 keyframe; /* キーフレーム */ Sint32 key; /* signed long型のデータ */ 使用データ:カメラ・ロールデータ等 */ } NJS_MKEY_SI32, NJS_MKEY_A1;
typedef struct { void *p[1]; /* NJS_MKEY型のポインタ配列 */ Uint32 nb[1]; /* キー数の配列 p[i]の示すポインタとキー数 nb[i]が対応 */ } NJS_MDATA1;
typedef struct { void *p[2]; /* NJS_MKEY型のポインタ配列 */ Uint32 nb[2]; /* キー数の配列 p[i]の示すポインタとキー数 nb[i]が対応 */ } NJS_MDATA2;
typedef struct { void *p[3]; /* NJS_MKEY型のポインタ配列 */ Uint32 nb[3]; /* キー数の配列 p[i]の示すポインタとキー数 nb[i]が対応 */ } NJS_MDATA3;
typedef struct { void *p[4]; /* NJS_MKEY型のポインタ配列 */ Uint32 nb[4]; /* キー数の配列 p[i]の示すポインタとキー数 nb[i]が対応 */ } NJS_MDATA4;
typedef struct { void *p[5]; /* NJS_MKEY型のポインタ配列 */ Uint32 nb[5]; /* キー数の配列 */ p[i]の示すポインタとキー数 nb[i]が対応 */ } NJS_MDATA5;
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;
typedef struct { NJS_OBJECT *object; /* オブジェクト・ツリーの先頭ポインタ */ NJS_MOTION *motion; /* モーションリストのポインタ */ } NJS_ACTION;
typedef struct{ NJS_MOTION *motion[2]; /* モーションリストポインタ配列 */ Float frame[2]; /* リンク・フレーム配列 motion[i]の示すモーションリストのポインタと リンクするフレームframe[i]が対応 i = 0:リンク元 i = 1:リンク先 */ } NJS_MOTION_LINK;
typedef struct{ NJS_OBJECT *object; /* オブジェクト・ツリーの先頭ポインタ */ NJS_MOTION_LINK *motionlink; /* モーションリンクポインタ */ } NJS_ACTION_LINK;
typedef struct { Float *pos; /* 移動データ配列の先頭ポインタ */ Angle *ang; /* 回転データ配列の先頭ポインタ */ Float *scl; /* スケールデータ配列の先頭ポインタ */ } NJS_MOTION_DATA;