Chapter4. 拡張関数


4.6 3Dグラフィックス関数

関数名
G3@MESHSET
機能
メッシュにパラメータを設定する。
書式
G3@MESHSET( meshnum , type , data1 )
《パラメーター》
meshnumint。メッシュ番号を設定する。
type int。設定する項目を何れか一つを指定する。
LG3_SRCBLEND
ソースのブレンディング係数を設定する。
LG3_DESTBLEND
デスティネーションのブレンディング係数を設定する。
LG3_CKEY
透明色を設定する。テクスチャの黒色(rgb=0,0,0)を透明にするかどうかを設定する。
data1 int。typeの設定に関連したパラメタを設定する。パラメータの数は各設定項目で異なる。
LG3_SRCBLEND
data1:メッシュのブレンディング係数を設定する。デフォルトはLG3_BLEND_SRCALPHAである。
指定値 ブレンディング係数
LG3_BLEND_ZERO (0, 0, 0, 0)
LG3_BLEND_ONE (1, 1, 1, 1)
LG3_BLEND_SRCCOLOR (Rs, Gs, Bs, As)
LG3_BLEND_INVSRCCOLOR (1-Rs, 1-Gs, 1-Bs, 1-As)
LG3_BLEND_SRCALPHA (As, As, As, As)
LG3_BLEND_INVSRCALPHA (1-As, 1-As, 1-As, 1-As)
LG3_BLEND_DESTALPHA (Ad, Ad, Ad, Ad)
LG3_BLEND_INVDESTALPHA (1-Ad, 1-Ad, 1-Ad, 1-Ad)
LG3_BLEND_DESTCOLOR (Rd, Gd, Bd, Ad)
LG3_BLEND_INVDESTCOLOR (1-Rd, 1-Gd, 1-Bd, 1-Ad)
LG3_BLEND_SRCALPHASAT (f, f, f, 1)。f = min(As, 1-Ad)
LG3_SP_BLEND_BOTHINVSRCALPHA (1-As, 1-As, 1-As, 1-As)
この指定値はLG3_SP_SRCBLENDでのみサポートされる。

LG3_DESTBLEND
data1:メッシュを書き込むバック画像のブレンディング係数を設定する。LG3_SRCBLENDを参照。デフォルトはLG3_BLEND_INVSRCALPHAである。

LG3_CKEY
data1:0(透明色を使用しない)、1(透明色を使用する)。デフォルトは0である。
解説
メッシュのパラメータを設定する。G3@MESHMAKE関数やG3@MESHLOADで生成したメッシュにアルファーブレンディング値などの各種情報を設定する。
特殊機能
1 メッシュの表示で背景との合成方法を指定できます。本設定はLG3_SRCBLENDとLG3_SP_DESTBLENDで指定します。LG3_SRCBLENDはスプライトの指定、LG3_DESTBLENDは背景の指定を指定し、2つの組み合わせで指定します。
例えば、LG3_SRCBLENDとLG3_DESTBLENDにそれぞれLG3_BLEND_ONEを指定するとレーザ光線の輝きのような表現が出来ます。
また、LG3_SRCBLENDにLG3_BLEND_SRCCOLOR、LG3_DESTBLENDにLG3_BLEND_INVSRCALPHAを指定するとメッシュが透明になります。透明度はG3@FRMSETCOLORA関数で指定したアルファー値で指定します。

用例
半透明の球体(Kyuutai.x)を表示する。
CH=G@SETUP(640,480,16,1)
LT=G3@LIGHTMAKE(3,65536,65536,65536)
G3@ADD( LT , 0 )
FM=G3@FRMMAKE()
MS=G3@MESHLOAD("Kyuutai.x")
G3@ADD( FM , 0 )
G3@ADD( MS , FM )
G3@FRMSETPOS( FM , 0 , 0 , 10.0 )
G3@MESHSETCOLORA( MS , 1.0 , 1.0 , 1.0 , 0.5)
G3@MESHSET( MS , LG3_SRCBLEND , LG3_BLEND_SRCCOLOR )
G3@MESHSET( MS , LG3_DESTBLEND , LG3_BLEND_INVSRCCOLOR )
G3@FRMSETMATERIALMODE( FM , 0 )
LOOP
G@CHRCLEAR(CH)
G3@RENDER()
G@FLIP()
ENDLOOP