njDrawSprite3D English
|INDEX|■
3Dスプライトの描画

書 式

#include <Ninja.h>
void  njDrawSprite3D( sp, n, attr )
NJS_SPRITE  *sp
Int    n
Uint32    attr

引 数

sp
スプライト構造体へのポインタ
n
スプライト番号
attr
アトリビュート

返 値

なし

エラー

なし

機 能

3Dのスプライトを描画します。
スプライトは簡単にテクスチャや、そのアニメーションを描画する事ができます。

スプライトはXYZ空間に描画されます。

アトリビュートは以下の設定が可能です。
NJD_SPRITE_ANGLEテクスチャの回転を有効にします。
NJD_SPRITE_COLORテクスチャのカラー演算を有効にします。 カラーデータはnjSetConstantMaterial()でセットした値を使います。
NJD_SPRITE_HFLIPテクスチャを左右反転します。
NJD_SPRITE_VFLIPテクスチャを上下左右反転します。
NJD_SPRITE_ALPHA半透明を使用する場合にセットします。抜きテクスチャの場合でもセットします。
NJD_SPRITE_SCALE常に画面正面を向きます。

スプライト構造体 

	typedef struct {
	  NJS_POINT3  p;       /* point            */
	  NJS_VECTOR  v;       /* normal           */
	  Float       sx,sy;   /* scale            */
	  Angle       ang;     /* angle            */
	  NJS_TEXLIST *tlist;  /* texture list     */
	  NJS_TEXANIM *tanim;  /* animation list   */
	} NJS_SPRITE;

	p 
	3D座標を設定します。
	v 
	現バージョンでは使用しません。 
	sx,sy
	横縦の拡大率を指定します。 
	ang
	回転角を設定します。ただし、attrにNJD_SPRITE_ANGLEを設定した場合有効になります。 
	tlist
	スプライトで使用するテクスチャのテクスチャリストを設定します。
	テクスチャリストはあらかじめnjLoadTexture()でロードされていなければなりません。 
	tanim
	テクスチャアニメーションパターンを設定します。
	この構造体の並びがテクスチャ番号に対応します。 

テクスチャアニメーション構造体 

	typedef struct {
	  Sint16      sx,sy;   /* size             */
	  Sint16      cx,cy;   /* center           */
	  Sint16      u1,v1;   /* tex1             */
	  Sint16      u2,v2;   /* tex2             */
	  Sint16      texid;   /* texture id       */
	  Sint16      attr;    /* attribute        */
	} NJS_TEXANIM;

	sx,sy
	スプライトのサイズを指定します。
	テクスチャのサイズとは無関係に指定できます。 
	cx,cy
	テクスチャの中心座標を設定します。左上からの相対位置で指定しこの位置が描画位置に対応します。
	また、回転の中心になります。 
	u1,v1
	テクスチャ左上のUV座標を設定します。
	テクスチャサイズに関係なく0〜255を指定します。 
	u2,v2
	テクスチャ右下のUV座標を設定します。
	テクスチャサイズに関係なく0〜255を指定します。 
	texid
	テクスチャリストの何番目のテクスチャを使用するか設定します。 
	attr
	現バージョンでは使用しません。 


用 例

256x256のテクスチャを2枚使用し、それぞれ4分割して8つのテクスチャアニメーションパターンを作成します。
NJS_TEXANIM  anim[] = {
  { 128,128, 64, 64,  0,  0,127,127,  0, 0 },
  { 128,128, 64, 64,128,  0,255,127,  0, 0 },
  { 128,128, 64, 64,  0,128,127,255,  0, 0 },
  { 128,128, 64, 64,128,128,255,255,  0, 0 },
  { 128,128, 64, 64,  0,  0,127,127,  1, 0 },
  { 128,128, 64, 64,128,  0,255,127,  1, 0 },
  { 128,128, 64, 64,  0,128,127,255,  1, 0 },
  { 128,128, 64, 64,128,128,255,255,  1, 0 },
};

main() {
  NJS_SPRITE  sprite;

  各種初期設定

  sprite.tlist = &texlist;
  sprite.tanim = anim;
  sprite.ang = 0;
  sprite.sx = 1.0f;
  sprite.sy = 1.0f;
  sprite.p.x = 0.0f;
  sprite.p.y = 0.0f;
  sprite.p.z = 0.0f;

  njInitSystem( NJD_RESOLUTION_640x480, 1 );
  njInitMatrix( matrix, 128 );
  njInit3D( vbuf, 1024, abuf, fbuf, 32 );
  njInitView( &view );
  njCreateLight( &light, NJD_DIR_LIGHT );
  njSetView( &view );
  njInitTexture( tex, 100 );

  njLoadTexture( &texlist );

  while(1) {
    njClearMatrix();

    njTranslate( NULL, 0.f, 0.f, -400.f );
    njDrawSprite3D( &sprite, 2, NJD_SPRITE_ANGLE );

    sprite.angle += 100;

    ......
  }

}

備 考


関 連

njDrawSprite2D()
njSetConstantMaterial()
njLoadTexture()
njDrawModel()

njDrawSprite3D
|INDEX|■

Copyright SEGA ENTERPRISES, LTD., 1997