English
SGL User's Manualデータの受け渡し
戻る|  ■
データの受け渡し

4.データ構造


 本章ではセガサターンで扱うモデルデータ、マテリアル名の仕様、テクスチャデータの構造について解説します。

4-1. モデルデータの仕様

 ここでいうモデルデータとは、3次元座標(x,y,x)のポイントデータ、その内の4点で形成されるポリゴンデータ、そのポリゴンの属性を表すアトリビュートデータの3つのデータの集合をいいます。
以下にモデル名を仮に“label”とした場合の一般的なフォーマットを示します。

ポイントデータ


POINT point_label[]={   
      POStoFIXED(x,y,z),
      POStoFIXED(x,y,z),
      POStoFIXED(x,y,z),
      POStoFIXED(x,y,z),
           .............
      };                
	
POINT:ポイントデータ   x,y,z:フロート型の座標値

 上から順番に0、1、2、3のポイントデータのインデックスとなります。

ポリゴンデータ


POLYGON polygon_label[]={
     NORMAL(x,y,z),      
     VERTICES(0,1,2,3),  
                         
     NORMAL(x,y,z),      
     VERTICES(0,1,2,3),  
          .............  
    };                   
	
NORMAL :法線ベクトル              x,y,z :フロート型の座標値           VERTICES :ポリゴンを形成する4点のポイントデータ

 3角形ポリゴンの場合は、最後の1点を繰り返し、4点のポリゴンデータとします。

 例)4角形ポリゴンの場合
VERTICES(0,1,2,3)

 例)3角形ポリゴンの場合
VERTICES(0,1,2,2)

アトリビュートデータ


ATTR attribute_label=[]={                                           
        ATTRIBUTE(Plane,Sort,Texture,Color,Gouraud,Mode,Dir,Option),
         .......   ....  .....  ...  ... .....  ...  .....          
                                                                    
        };                                                          
	
ATTR : 属性            Plane : 裏面判定ありかなしかの属性 Sort : Zソートの代表点      Texture : テクスチャ名(No.)   Color : カラーデータ        Gouraud : グーローシェーデングの属性 Mode : 描画モード         Dir : ポリゴンやテクスチャの状態 Option : オプション、その他の機能 

 属性には以上の8つのパラメータがあります。ここでそれぞれのパラメータで実際出力されるべきシンボルとその内容を記します。

 [Plane]
Single_Plane:裏面判定あり
Dual_Plane:裏面判定なし

 [Sort]
SORT_MIN:最近点
SORT_CEN:中心点
SORT_MAX:最遠点
SORT_BFR:直前に登録したポリゴンの手前で表示

 [Texture]
No_Texture:ポリゴンの場合
テクスチャ名:テクスチャの場合(テクスチャデータを示すマクロ)

詳細については、“4-3項:テクスチャデータの仕様”を参照してください。

 [Color]
No_Palet:テクスチャの場合
C_RGB( r, g, b:ポリゴンの場合のカラーデータ
r,g,bはそれぞれ三原色を示し、0〜31の十進数値が入ります。

 [Gouraud]
No_Gouraud:グーローなし
アドレス:グーローシェーディングテーブルの相対アドレス

 [Mode]  
グループ マ ク ロ       内  容      
【1】 No_Window Window内の制限を受けない (default)
Window_In Windowの内側に表示する
Window_Out Windowの外側に表示する
【2】 MESHoff 通常表示 (default)
MESHon メッシュで表示する
【3】 ECdis EndCodeを無効にする
ECenb EndCodeを有効にする (default)
【4】 SPdis 透明ピクセルも表示する (default)
SPenb 透明ピクセルは表示しない
【5】 CL16Bnk 16色 カラーバンクモード (default)
CL16Look 16色 ルックアップテーブルモード
CL64Bnk 64色 カラーバンクモード
CL128Bnk 128色 カラーバンクモード
CL256Bnk 256色 カラーバンクモード
CL32KRGB 32768色 RGBモード
【6】 CL_Replace 上書き(標準)モード (default)
CL_Shadow 影モード
CL_Half 半輝度モード
CL_Trans 半透明モード
CL_Gouraudグーローシェーディングモード

 [Dir]
 マ ク ロ       内  容      
sprNoflip テクスチャを通常表示します
sprHflip テクスチャを左右反転します
sprVflip テクスチャを上下反転します
sprHVflip テクスチャを上下左右反転します
sprPorygon ポリゴンを表示します
sprPolyLine ポリラインを表示します
sprLine 初めの2点を利用した直線を表示します

 [Option]  
 マ ク ロ       内  容      
UseLight 光源計算を行う
UseClip 頂点が画面外に出たら表示しない
UsePaletteポリゴンのカラーがパレット形式であることを示す

 上記のパラメータの内、PlaneSortMode は、次項のマテリアル名に指定することによって得られます。

PDATA構造体


PDATA pdata_label[]={   
       point_label,n1,  
       polygon_label,n2,
       attribute_label  
      };                
	
pdata_label :SGLに渡すPDATA型のアドレスを示します。 point_label :POINT型のアドレスを示します。       nl :ポイント数を示します。             polygon_label :POLYGON型のアドレスを示します。     n2 :ポリゴン数を示します。             attribute_label:ATTR型のアドレスを示します。       

OBJECT構造体


OBJECT object_label[]={   
       pdata_label,       
       TRANSLATION(x,y,z),
       ROTATION(x,y,z),   
       SCALING(x,y,z),    
       object_child,      
       object_sibling,    

pdata_label :PDATA型のアドレスを示します。     TRANSLATION :移動量を示します。             ROTATION :回転量を示します。             SCALING :拡大量を示します。             object_child :子供のOBJECT型のアドレスを示します。 object_sibling :兄弟のOBJECT型のアドレスを示します。

 この構造体の使い方については“design 3” のサンプルソースを参照してください。

4-2. マテリアル名の仕様

 マテリアル名には1文字ごとに意味を持たせています。その内容がそのままアトリビュートデータに反映されることになります。その仕様を以下に示します。

 一般的には下記のようになっています。
[Plane][Sort][Mesh] ([] には1文字が入り、マテリアル名は例えば“SSN”のように3文字で表されます。)

 それぞれの文字の属性は、

 [Plane]
S:Single_Plane
D:Dual_Plane

 [Sort]
N:SORT_MIN
C:SORT_CEN
F:SORT_MAX
B:SORT_BFR

 [Mesh]
O:MESHon
N:MESHoff

 例)マテリアル名が“SCN”であるならばアトリビュートデータは、

 

ATTRIBUTE( Single_Plane, SORT_CEN, No_Texture, C_RGB( r, g, b ), No_Gouraud, MESHoff, sprNoflip, NoOption )

となります。

4-3. テクスチャデータの仕様

 これはテクスチャの場合にのみ必要なデータです。アトリビュートデータの“Texture”でのテクスチャ名はこのデータを基にしています。

 テクスチャとするDGTファイルが“sample.dgt”とすると、


TEXDAT sample[]={                      
        rgb,rgb,rgb,rgb,rgb,rgb,rgb,rgb
        rgb,rgb,rgb,rgb,rgb,rgb,rgb,rgb
        .............................  
        };                             

TEXTB :テクスチャのテーブル                     sample :テクスチャデータのあるラベルを示します(ファイル名そのまま) hsize,vsize :テクスチャのサイズです(hsizeは常に8の倍数)      bgr :テクスチャデータの1ピクセル                

 また、3原色はそれぞれ、0〜31の値で5ビットで表現されます。
データ形式は以下の通りです。

BGR
1432104321043210

例)sample.dgtというグラフィックデータファイルが、下図のような8×2サイズの白と黒のチェッカーのテクスチャだったとします。

図4-1 チェッカー模様のテクスチャ

 するとこのテクスチャに対するテクスチャデータは以下のようになります。


TEXDAT sample[]={                                               
        0xffff,0x8000,0xffff,0x8000,0xffff,0x8000,0xffff,0x8000,
        0x8000,0xffff,0x8000,0xffff,0x8000,0xffff,0x8000,0xffff 
        };                                                      
	

 このテクスチャを貼ったマテリアル名“SCN”のポリゴンのアトリビュートデータは、

ATTRIBUTE(Single_Plane, SORT_CEN, SAMPLE, No_Palet, No_Gouraud, MESHoff, SprNoflip, NoOption)

 となります。

注意
 テクスチャに際して、Hサイズは8の倍数でなければいけません。これはサターンのハードの仕様による制限です。


戻る|  ■
SGL User's Manualデータの受け渡し
Copyright SEGA ENTERPRISES, LTD., 1997