; ; HSP help manager用 HELPソースファイル ; (先頭が「;」の行はコメントとして処理されます) ; %type 拡張命令 %ver 3.4 %note hgimg4.asをインクルードすること。 %date 2013/07/01 %author onitama %dll hgimg4 %url http://www.onionsoft.net/ %port Win %portinfo Windows+OpenGL3.1以降のシステム上でのみ動作します。 %index gpreset HGIMG4の初期化 %group 拡張画面制御命令 %prm option option(0) : 初期化オプション %inst HGIMG4の初期化を行ないます。 シーンを再構築する場合に使用してください。 optionで設定した内容によって初期化の内容が変わります。 ^p オプション値 内容 --------------------------------------------------------------- 0 すべてのオブジェクトを破棄して初期状態に戻す 1 シーンに存在するオブジェクトのみ破棄する ^p %href %index gpdraw シーン内の全オブジェクトを描画する %group 拡張画面制御命令 %prm option option(0) : 描画オプション %inst シーン内のオブジェクトをすべて描画します。 optionパラメーターを指定することで、限られた項目の描画だけを行なうことができます。 ^p マクロ名 内容 -------------------------------------------------------------------- GPDRAW_OPT_OBJUPDATE オブジェクトの自動移動処理 GPDRAW_OPT_DRAWSCENE 3Dシーン描画処理 GPDRAW_OPT_DRAWSCENE_LATE 3Dシーン描画処理(OBJ_LATE) GPDRAW_OPT_DRAW2D 2Dスプライト描画処理 GPDRAW_OPT_DRAW2D_LATE 2Dスプライト描画処理(OBJ_LATE) ^p optionパラメーターを省略した場合は、すべての項目が選択されている状態になります。 通常は、optionパラメーターを指定しなくても問題ありません。 また、2Dの直接描画命令だけを使用して、オブジェクトによる描画が不要な場合は、gpdraw命令を記述する必要もありません。 OBJ_LATEのモードが付加されたもの(半透明α値が設定されているものを含む)は、不透明のオブジェクトよりも後に描画するため、項目が分けられています。 複数の項目を「|」で区切って指定することもできます。 ^p 例: gpdraw GPDRAW_OPT_DRAW2D|GPDRAW_OPT_DRAW2D_LATE ^p 上の例では、2Dスプライト描画処理、2Dスプライト描画処理(OBJ_LATE)だけを実行します。 これを利用すると、3Dシーン描画と2Dスプライト描画の間にgcopy命令など別な描画命令による 表示を行なうことが可能になります。 %href %index gpusescene シーンの切り替え %group 拡張画面制御命令 %prm id id(0) : 選択するシーンID %inst (今後のバージョンでサポートするための予約キーワードです。機能は現在まだ実装されていません。) %href %index gpsetprm オブジェクトのコアパラメーター設定 %group 拡張画面制御命令 %prm objid,prmid,value objid(0) : オブジェクトID prmid(0) : コアパラメーターID value(0) : 設定する値(整数値) %inst オブジェクトごとに保持されているコアパラメーターに値を設定します。 コアパラメーターは、32bit整数値で、様々な情報を管理しています。 コアパラメーターIDとして指定可能な項目は以下の通りです。 ^p マクロ名 | 内容 -------------------------------------------------------------- PRMSET_FLAG オブジェクト登録フラグ(*) PRMSET_MODE モード値 PRMSET_ID オブジェクトID(*) PRMSET_ALPHA 透明度(α値) PRMSET_TIMER タイマー値 PRMSET_MYGROUP 自身のコリジョングループ PRMSET_COLGROUP 衝突検出するコリジョングループ PRMSET_SHAPE 形状ID(*) PRMSET_USEGPMAT マテリアルID PRMSET_USEGPPHY 物理設定ID PRMSET_COLILOG コリジョンログID(*) PRMSET_SPRID ソースバッファID(スプライトのみ) PRMSET_SPRCELID ソースのセルID(スプライトのみ) PRMSET_SPRGMODE コピーモード(スプライトのみ) (*)の項目は読み出しのみ ^p %href gpgetprm %index gpgetprm オブジェクトのコアパラメーター取得 %group 拡張画面制御命令 %prm var,objid,prmid var : 値が代入される変数名 objid(0) : オブジェクトID prmid(0) : コアパラメーターID %inst オブジェクトごとに保持されているコアパラメーターに値を取得します。 コアパラメーターは、32bit整数値で、様々な情報を管理しています。 コアパラメーターIDとして指定可能な項目は以下の通りです。 ^p マクロ名 | 内容 -------------------------------------------------------------- PRMSET_FLAG オブジェクト登録フラグ(*) PRMSET_MODE モード値 PRMSET_ID オブジェクトID(*) PRMSET_ALPHA 透明度(α値) PRMSET_TIMER タイマー値 PRMSET_MYGROUP 自身のコリジョングループ PRMSET_COLGROUP 衝突検出するコリジョングループ PRMSET_SHAPE 形状ID(*) PRMSET_USEGPMAT マテリアルID PRMSET_USEGPPHY 物理設定ID PRMSET_COLILOG コリジョンログID(*) PRMSET_SPRID ソースバッファID(スプライトのみ) PRMSET_SPRCELID ソースのセルID(スプライトのみ) PRMSET_SPRGMODE コピーモード(スプライトのみ) (*)の項目は読み出しのみ ^p %href gpsetprm %index gppostefx ポストエフェクト生成 %group 拡張画面制御命令 %prm var var : エフェクトIDが代入される変数名 %inst (今後のバージョンでサポートするための予約キーワードです。機能は現在まだ実装されていません。) %href %index gpuselight ライトオブジェクトの切り替え %group 拡張画面制御命令 %prm id id(0) : 選択するライトオブジェクトのID %inst 指定したノードオブジェクトを有効なライトオブジェクトとして選択します。 必ず、ライトとして初期化されているノードオブジェクトを指定する必要があります。 ライトを切り替えることで、以降に生成されるオブジェクトを照らすライトが変更されます。 %href gpusecamera %index gpusecamera カメラオブジェクトの切り替え %group 拡張画面制御命令 %prm id id(0) : 選択するカメラオブジェクトのID %inst 指定したノードオブジェクトを有効なカメラオブジェクトとして選択します。 必ず、カメラとして初期化されているノードオブジェクトを指定する必要があります。 以降は、切り替えられたカメラを視点としてシーンの描画が行なわれます。 %href gpuselight %index gpmatprm マテリアルのパラメーター設定 %group 拡張画面制御命令 %prm id,"name",x,y,z id(0) : マテリアルID "name" : パラメーター名 x(0.0) : Xの設定値(実数値) y(0.0) : Yの設定値(実数値) z(0.0) : Zの設定値(実数値) %inst 生成されたマテリアルのシェーダーパラメーターを設定します。 ^p 例: gpmatprm objid,"u_diffuseColor",1,0,0.5 ; マテリアルのパラメーター設定 ^p 上の例では、u_diffuseColorという名称のパラメーターに( 1.0, 0.0, 0.5 )のベクトル値を設定します。 シェーダーパラメーターに設定する項目の数に応じて、gpmatprm1、gpmatprm4命令が用意されています。 (x,y,z)の3項目を設定する場合は、gpmatprmを使用してください。 %href gpmat gpmatprm1 gpmatprm4 %index gpmatstate マテリアルのステート設定 %group 拡張画面制御命令 %prm objid,"name","value" id(0) : マテリアルID "name" : 設定項目名(文字列) "value" : 設定値(文字列) %inst 生成されたマテリアルの表示ステート設定を変更します。 文字列としてnameで指定された項目に対して、valueで指定された内容を設定します。 項目名と設定内容はすべて文字列で行なうので注意してください。 項目名と設定内容はすべて文字列で行なうので注意してください。(項目名及び設定値は大文字小文字を区別しません。) ^p name value -------------------------------------------------------------------- "blend" プレンドの有効/無効切り替え (true または false を指定) "blendSrc" ブレンド元を選択(下記参照) "blendDst" ブレンド先を選択(下記参照) "cullFace" 隠面除去(カリング)の有効/無効切り替え (true または false を指定) "cullFaceSide" 隠面除去(カリング)の面指定 "depthTest" true または false (true または false を指定) "depthWrite" Zバッファ書き込みの有効/無効切り替え (true または false を指定) "depthFunc" Z値比較方法を選択(下記参照) (*)blendSrc,blendDstで設定できる文字列 "ZERO" 即値(0) "ONE" 即値(1) "SRC_COLOR" 書き込み元カラー "ONE_MINUS_SRC_COLOR" 書き込み元カラー(反転値) "DST_COLOR" 書き込み先カラー "ONE_MINUS_DST_COLOR" 書き込み先カラー(反転値) "SRC_ALPHA" 書き込み元α "ONE_MINUS_SRC_ALPHA" 書き込み元α(反転値) "DST_ALPHA" 書き込み先α "ONE_MINUS_DST_ALPHA" 書き込み先α(反転値) "CONSTANT_ALPHA" α固定値 "ONE_MINUS_CONSTANT_ALPHA" α固定値(反転値) "SRC_ALPHA_SATURATE" 書き込み元α反転値 (*)cullFaceSideで設定できる文字列 BACK 裏面をカリング FRONT 表面をカリング FRONT_AND_BACK 両面をカリング (*)depthFuncで設定できる文字列 NEVER 常に拒否 LESS 小さい値の時のみ許可 EQUAL 同一値のみ許可 LEQUAL 同一か小さい値の時のみ許可 GREATER 大きい値の時のみ許可 NOTEQUAL 同一でない値のみ許可 GEQUAL 同一か大きい値の時のみ許可 ALWAYS 常に許可 ^p %href %index gpviewport ビューポート設定 %group 拡張画面制御命令 %prm x,y,sx,sy x(0) : ビューポート左上X座標 y(0) : ビューポート左上Y座標 sx : ビューポートのXサイズ sy : ビューポートのYサイズ %inst HGIMG4が描画を行なう領域(ビューポート)を設定します。 スクリーン座標の(x,y)から(sx,sy)で指定したサイズの領域に対して描画が行なわれます。 sx,syを省略すると、現在の表示X,Yサイズがデフォルトとして指定されます。 %href %index setobjname オブジェクトのノード名を設定する %group 拡張画面制御命令 %prm objid,"name" objid(0) : オブジェクトのID "name" : 設定される名称(文字列) %inst ノードオブジェクトに指定された名称を設定します。 すべてのノードオブジェクトは、任意に指定した名称を設定することが可能です。 %href getobjname %index getobjname オブジェクトのノード名を取得する %group 拡張画面制御命令 %prm var,objid var : 結果が代入される変数名 objid(0) : オブジェクトのID %inst ノードオブジェクトに指定された名称を取得します。 varで指定された変数に名称が文字列型として代入されます。 すべてのノードオブジェクトは、任意に指定した名称が設定されています。 %href setobjname %index gpcolormat カラーマテリアルの生成 %group 拡張画面制御命令 %prm var,color,opt var : 生成されたマテリアルIDが代入される変数名 color(0) : マテリアルカラー(24bitRGB値) opt(0) : マテリアルオプション値 %inst 指定された色を持つカラーマテリアルの生成を行ないます。 colorパラメーターは、24bitRGB値(0xRRGGBBで示される値)を指定します。省略した場合は、白色(0xffffff)が設定されます。 マテリアルを独自に生成することにより、詳細な質感の設定が可能になります。 ^p 例: gpcolormat mat_id,0xff00ff,GPOBJ_MATOPT_NOLIGHT gpbox id_model, 1, , mat_id ^p 上の例では、RGBカラーが0xff00ff(紫)の、ライティングを行なわないマテリアルを持った、立方体のノードオブジェクトが生成されます。 optパラメーターにより、マテリアルの設定を変更することができます。 これらの設定は、gpmatstate命令で別途設定することも可能です。 ^p マクロ名 内容 ------------------------------------------------------------------- GPOBJ_MATOPT_NOLIGHT ライティングを行なわない GPOBJ_MATOPT_NOMIPMAP MIPMAPを生成しない GPOBJ_MATOPT_NOCULL カリングを無効にする GPOBJ_MATOPT_NOZTEST Zテストを無効にする GPOBJ_MATOPT_NOZWRITE Zバッファ書き込みを無効にする GPOBJ_MATOPT_BLENDADD プレンドモードを加算に設定する ^p 正常にマテリアルが生成できなかった場合は、エラー3(パラメータの値が異常です)が発生します。 正しく生成された場合は、varで指定された変数にマテリアルID(整数値)が代入されます。 %href gptexmat gpusermat %index gptexmat テクスチャマテリアルの生成 %group 拡張画面制御命令 %prm var,"file",opt var : 生成されたマテリアルIDが代入される変数名 opt(0) : マテリアルオプション値 %inst テクスチャ(画像)マテリアルの生成を行ないます。 マテリアルを独自に生成することにより、詳細な質感の設定が可能になります。 ^p 例: gptexmat id_texmat, "res/qbox.png" ; テクスチャマテリアル作成 gpbox id_model, 1, , id_texmat ; 箱ノードを追加 ^p 上の例では、resフォルダ内のqbox.pngをテクスチャとして持ったマテリアルを持った、立方体のノードオブジェクトが生成されます。 optパラメーターにより、マテリアルの設定を変更することができます。 これらの設定は、gpmatstate命令で別途設定することも可能です。 ^p マクロ名 内容 ------------------------------------------------------------------- GPOBJ_MATOPT_NOLIGHT ライティングを行なわない GPOBJ_MATOPT_NOMIPMAP MIPMAPを生成しない GPOBJ_MATOPT_NOCULL カリングを無効にする GPOBJ_MATOPT_NOZTEST Zテストを無効にする GPOBJ_MATOPT_NOZWRITE Zバッファ書き込みを無効にする GPOBJ_MATOPT_BLENDADD プレンドモードを加算に設定する ^p 正常にマテリアルが生成できなかった場合は、エラー3(パラメータの値が異常です)が発生します。 正しく生成された場合は、varで指定された変数にマテリアルID(整数値)が代入されます。 %href gpcolormat gpusermat %index gpusermat カスタムマテリアルの生成 %group 拡張画面制御命令 %prm var,"vsh","fsh","defs",color,opt var : 生成されたマテリアルIDが代入される変数名 "vsh" : バーテックスシェーダーファイル名 "fsh" : フラグメントシェーダーファイル名 "defs" : 追加のラベル定義 color(-1) : マテリアルカラー(24bitRGB値) opt(0) : マテリアルオプション値 %inst カスタムマテリアルを生成します。 カスタムマテリアルは、バーテックスシェーダー及びフラグメントシェーダーを指定した独自の描画を行ないます。 OpenGLのシェーダー言語(GLSL)で記述されたシェーダーファイル名を、"vsh"、"fsh"パラメーターに指定します。 "defs"パラメーターには、シェーダーコンパイル時に追加されるラベル定義を記述します。 colorパラメーターでデフォルトのカラーを設定することができます。省略した場合は、白色(0xffffff)が設定されます。 optパラメーターにより、マテリアルの設定を変更することができます。 これらの設定は、gpmatstate命令で別途設定することも可能です。 ^p マクロ名 内容 ------------------------------------------------------------------- GPOBJ_MATOPT_NOLIGHT ライティングを行なわない GPOBJ_MATOPT_NOMIPMAP MIPMAPを生成しない GPOBJ_MATOPT_NOCULL カリングを無効にする GPOBJ_MATOPT_NOZTEST Zテストを無効にする GPOBJ_MATOPT_NOZWRITE Zバッファ書き込みを無効にする GPOBJ_MATOPT_BLENDADD プレンドモードを加算に設定する ^p 正常にマテリアルが生成できなかった場合は、エラー3(パラメータの値が異常です)が発生します。 正しく生成された場合は、varで指定された変数にマテリアルID(整数値)が代入されます。 ^ カスタムマテリアルにより、任意のシェーダーを使って描画のすべてをコントロールすることができるようになります。 これは、シェーダーについての知識がある上級者向けの拡張機能ですので、通常は使用する必要はありません。 カスタムマテリアルを生成した場合は、gpmatprm命令によってシェーダーパラメーターに渡すための値を設定することができます。 %href gpmatprm gpcolormat gptexmat %index gpclone ノードを複製 %group 拡張画面制御命令 %prm var,objid var : 複製されたオブジェクトのIDが代入される変数名 objid(0) : 複製元のオブジェクトID %inst 既に存在するオブジェクトと同じ設定で、新しいオブジェクトを生成します。 varで指定された変数に、複製されたオブジェクトのIDが代入されます。 同一の形状、パラメーター設定(物理設定を除く)を持ちますが座標や角度などを新しく設定することができます。 同一の物体を複数生成する場合に、設定や読み込みを何度も行なう手間を軽減し高速化にもつながります。 ^p 例: gpload id_model,"res/duck" ; モデル読み込み gpclone i, id_model ; 同じものをクローン ^p 上の例では、res/duck.gpbファイルによる3Dモデルノード(id_model)をクローンして変数iに新しいオブジェクトIDを代入します。 ※現在のバージョンでは、シーン内に存在する表示可能なオブジェクト以外はクローンすることができませんので注意してください。%href gpdraw %index gpnull ヌルノードを生成 %group 拡張画面制御命令 %prm var var : 生成されたオブジェクトIDが代入される変数名 %inst 空のノードオブジェクト(ヌルノード)を生成します。 varで指定された変数に、複製されたオブジェクトのIDが代入されます。 ヌルノードは、カメラやライトなどモデルを持つ必要のないノードを作成する場合などに使用します。 生成されたノードは、他のノードと同様に3D空間の中で自由に操作することが可能になります。 %href gpcamera gplight %index gpload 3Dモデルノードを生成 %group 拡張画面制御命令 %prm var,"file","name" var : 生成されたオブジェクトIDが代入される変数名 "file" : 読み込みを行なうgpbファイル名 "name" : 読み込み対象となるノード名 %inst ファイル化された3Dモデルデータ(.gpbファイル)をノードとして生成します。 varで指定された変数に、生成されたオブジェクトのIDが代入されます。 生成されたノードは3D空間の中で自由に操作することが可能になります。 "file"でフォルダ及びファイル名を指定します。「.gpb」などの拡張子は指定する必要ありません。 ファイルの中で特定の名前を持ったノードだけを読み込みたい場合は、"name"で指定することができます。 "name"の指定を省略した場合は、ファイルに含まれている階層構造をすべて読み込みノードとして生成します。 ノードに物理設定を行なう場合は、gppbind命令を使用してください。 3Dモデルデータの接触判定は、全体を包む球(バウンディング球)が使用されます。 ^ 生成されたオブジェクト(ノード)の描画はgpdraw命令によりまとめて行なわれます。 ^p 例: gpload id_model,"res/duck" ; モデル読み込み ^p 上の例では、resフォルダ内にあるduck.gpbファイルを読み込みます。 その際に、マテリアル情報が書かれているduck.materialファイルが参照されます。 さらに、テクスチャが必要な場合は、同じフォルダ内の画像ファイルも読み込まれます。 ^ gpload命令で読み込むためのファイル(.gpb形式)は、gameplay3Dで標準的に使用されているデータ形式です。 HGIMG4では、.gpb形式を生成するためのGPBコンバーター(gpbconv.exe)を用意しています。 詳しくは、HGIMG4マニュアルを参照してください。 %href gpdraw gppbind %index gpplate 板ノードを生成 %group 拡張画面制御命令 %prm var,sizex,sizey,color,matobj var : 生成されたオブジェクトIDが代入される変数名 sizex(1) : 生成されるXサイズ sizey(1) : 生成されるYサイズ color(-1) : マテリアルカラー(24bitRGB値) matobj(-1) : マテリアルID %inst 垂直に立った1枚の板(四角形)を3Dモデルデータとしてノードを生成します。 varで指定された変数に、生成されたオブジェクトのIDが代入されます。 生成されたノードは3D空間の中で自由に操作することが可能になります。 モデルのX,Yサイズをsizex,sizeyパラメーターで指定することができます。 colorパラメーターでモデルの色(マテリアルカラー)を24bitRGB値(0xRRGGBBで示される値)により指定します。 colorパラメーターが省略された場合は、白色(0xffffff)が使用されます。 matobjパラメーターで、マテリアルIDを指定することができます。 gpcolormat命令などにより、ユーザーが生成したマテリアルを使用する場合は指定してください。 matobjパラメーターが省略された場合は、標準のマテリアルが使用されます。 ^ 生成されたオブジェクト(ノード)の描画はgpdraw命令によりまとめて行なわれます。 ^ ノードに物理設定を行なう場合は、gppbind命令を使用してください。 ノードの接触判定は、もとのモデルと同じ形状が使用されます。 %href gpdraw gppbind %index gpfloor 床ノードを生成 %group 拡張画面制御命令 %prm var,sizex,sizey,color,matobj var : 生成されたオブジェクトIDが代入される変数名 %inst 1枚の床(四角形)を3Dモデルデータとしてノードを生成します。 varで指定された変数に、生成されたオブジェクトのIDが代入されます。 生成されたノードは3D空間の中で自由に操作することが可能になります。 モデルのX,Yサイズをsizex,sizeyパラメーターで指定することができます。 colorパラメーターでモデルの色(マテリアルカラー)を24bitRGB値(0xRRGGBBで示される値)により指定します。 colorパラメーターが省略された場合は、白色(0xffffff)が使用されます。 matobjパラメーターで、マテリアルIDを指定することができます。 gpcolormat命令などにより、ユーザーが生成したマテリアルを使用する場合は指定してください。 matobjパラメーターが省略された場合は、標準のマテリアルが使用されます。 ^ 生成されたオブジェクト(ノード)の描画はgpdraw命令によりまとめて行なわれます。 ^ ノードに物理設定を行なう場合は、gppbind命令を使用してください。 (床モデルは標準で、同じ場所に固定された物理特性が設定されます) ノードの接触判定は、もとのモデルと同じ形状が使用されます。 %href gpdraw gppbind %index gpbox 箱ノードを生成 %group 拡張画面制御命令 %prm var,size,color,matobj var : 生成されたオブジェクトIDが代入される変数名 %inst 指定サイズの立方体を3Dモデルデータとしてノードを生成します。 varで指定された変数に、生成されたオブジェクトのIDが代入されます。 生成されたノードは3D空間の中で自由に操作することが可能になります。 モデルのX,Yサイズをsizex,sizeyパラメーターで指定することができます。 colorパラメーターでモデルの色(マテリアルカラー)を24bitRGB値(0xRRGGBBで示される値)により指定します。 colorパラメーターが省略された場合は、白色(0xffffff)が使用されます。 matobjパラメーターで、マテリアルIDを指定することができます。 gpcolormat命令などにより、ユーザーが生成したマテリアルを使用する場合は指定してください。 matobjパラメーターが省略された場合は、標準のマテリアルが使用されます。 ^ 生成されたオブジェクト(ノード)の描画はgpdraw命令によりまとめて行なわれます。 ^ ノードに物理設定を行なう場合は、gppbind命令を使用してください。 ノードの接触判定は、もとのモデルと同じ形状が使用されます。 %href gpdraw gppbind %index gpspr 2Dスプライトノード生成 %group 拡張画面制御命令 %prm var,bufid,celid,gmode var : 生成されたオブジェクトIDが代入される変数名 %inst 2Dスプライトを表示するためのノードははを生成します。 varで指定された変数に、生成されたオブジェクトのIDが代入されます。 生成されたノードは2Dスクリーンの中で自由に操作することが可能になります。 bufidパラメーターで表示元の画像が読み込まれているバッファIDを、celidパラメーターで表示するセルIDを指定します。 また、gmodeパラメーターでgcopy命令で指定するものと同様のコピーモードを指定します。 ^p gmode値 | 内容 --------------------------------------------------- 0,1 アルファチャンネル無効 2 アルファチャンネル有効 5 色加算・アルファチャンネル有効 ^p 生成されたオブジェクト(ノード)の描画はgpdraw命令によりまとめて行なわれます。 ^p ; スプライト1個あたりの描画 gmode [gmode設定値] pos [ノードX座標],[ノードY座標] celput [バッファID], [セルID], [ノードXスケール], [ノードYスケール], [ノードZ回転] ^p つまり、2Dスプライトノードは上のような処理をあらかじめ登録した設定をまとめて行なう機能と考えることができます。 また、getcoli命令による2Dスプライトノード同士の接触判定を手軽に行なうことが可能です。 %href gpdraw %index gplight ライトノードを設定 %group 拡張画面制御命令 %prm id,opt,range,inner,outer id(0) : オブジェクトのID opt(0) : ライト生成オプション range(1) : 影響範囲パラメーター inner(0.5): 内側の減衰パラメーター outer(1) : 外側の減衰パラメーター %inst 生成済みのノードにライトとしての機能を追加します。 idパラメーターで、ノードのオブジェクトIDを指定します。 optパラメーターでライト生成オプション値を指定することができます。 ^p opt値 | 内容 -------------------------------------------------------------- GPOBJ_LGTOPT_NORMAL 平行光源(ディレクショナルライト) GPOBJ_LGTOPT_POINT 点光源(ポイントライト) GPOBJ_LGTOPT_SPOT スポットライト ^p rangeパラメーターは、点光源及びスポットライトの影響範囲に関する設定を行ないます。 また、inner,outerパラメーターは、スポットライトの減衰効果に関する設定を行ないます。 現在のバージョンでは平行光源のみサポートされています。 ^p 例: gpnull id_alight ; ヌルノードを生成する gplight id_alight, GPOBJ_LGTOPT_NORMAL ; ライトとして登録する gpuselight id_alight ; デフォルトのライトに設定 ^p シーン内に配置されたライトは、gpuselight命令により切り替えてからマテリアルを生成することで反映されます。 %href gpuselight gpnull %index gpcamera カメラノードを設定 %group 拡張画面制御命令 %prm id,fov,aspect,near,far id(0) : オブジェクトのID fov(45) : 視野(FOV)パラメーター aspect(1.5): アスペクト比 near(0.5) : ニアクリップZ値 far(768) : ファークリップZ値 %inst 生成済みのノードにカメラとしての機能を追加します。 idパラメーターで、ノードのオブジェクトIDを指定します。 fovパラメーターで視野(FOV)を設定します。45を指定した場合は、45度の視野となります。 aspectパラメーターでアスペクト比(縦横比)を指定します。 また、near,farパラメーターにより近くと遠くのZ座標(クリッピングに使われるZ座標)を指定することができます。 ^p 例: gpnull id_camera ; ヌルノードを生成する gpcamera id_camera, 45, 1.5, 0.5, 768 ; カメラとして設定する gpusecamera id_camera ; 使用するカメラを選択する setpos id_camera, 0,20,20 ; カメラ位置を設定する ^p シーン内に配置されたカメラは、gpusecamera命令により切り替えることができます。 %href gpusecamera gpnull %index gplookat 指定座標に向けてノードを回転 %group 拡張画面制御命令 %prm objid,x,y,z objid(0) : オブジェクトID x(0) : 目標となるX座標 y(0) : 目標となるY座標 z(0) : 目標となるZ座標 %inst 3Dノードを、指定した座標に向けて回転させます。 カメラに適用した場合は、指定座標を注視する角度に設定されます。 %href %index gppbind ノードに標準的な物理特性を設定 %group 拡張画面制御命令 %prm objid,mass,friction objid(0) : オブジェクトID mass(1) : 重さ friction(0.5) : 摩擦係数 %inst ノードオブジェクトに対して、基本的な物理設定を行ないます。 massパラメーターは物体の重さ。frictionパラメーターは摩擦係数です。値を省略した場合は、デフォルト値が使用されます。 重さ(mass)を0にすることで静的剛体(衝突はするが、動かない)として設定されます。 それ以外の場合は、物理法則に従って床のある場所まで落下します。 ^ ※物理挙動を設定する場合は、必ず床(地面)となる部分を作成しておいてください。 gpfloor命令によって生成された床に標準的な物理特性を設定することで、固定された床面を生成することができます。 床が存在しなかった場合、物体は永遠に落下を続けることになります。 ^ 物理設定を行なったノードオブジェクトは、それ以降自立して動作するようになり、setposなどの座標変更は無効となります。 物体に力を加えたい場合は、gppapply命令を使用してください。 %href gppapply %index getwork2 ノードワーク値2を取得 %group 拡張画面制御命令 %prm id,x,y,z id : オブジェクトID (x,y,z) : 取得する変数 %inst オブジェクトの持つwork2パラメーターを取得します。 (x,y,z)は、実数型の変数として設定されます。 命令の最後に「i」を付加することで、整数値として値を取得することができます。 %href getwork2i %index getwork2i ノードワーク値2を取得(整数値) %group 拡張画面制御命令 %prm id,x,y,z id : オブジェクトID (x,y,z) : 取得する変数 %inst オブジェクトの持つwork2パラメーターを取得します。 (x,y,z)は、整数型の変数として設定されます。 getwork2命令を使用することで、実数値として値を取得することができます。 %href getwork2 %index selquat オブジェク回転情報をMOC情報に設定 %group 拡張画面制御命令 %prm id id(0) : オブジェクトID %inst MOC設定命令の対象となるMOCグループをquat(クォータニオン回転情報)に設定します idは、オブジェクトIDとなります。 %href %index selwork2 オブジェクトワーク2をMOC情報に設定 %group 拡張画面制御命令 %prm id id(0) : オブジェクトID %inst MOC設定命令の対象となるMOCグループをwork2(ワーク2)に設定します idは、オブジェクトIDとなります。 %href %index setwork2 work2グループ情報を設定 %group 拡張画面制御命令 %prm id,x,y,z id : オブジェクトID (x,y,z) : 設定する値 (デフォルト=0) %inst オブジェクトの持つパラメーターを設定します。 work2グループ(ワーク2値)に(x,y,z)で指定された値を設定します。 (x,y,z)には、実数または整数値を指定することができます。 %href setwork %index addwork2 work2グループ情報を加算 %group 拡張画面制御命令 %prm id,x,y,z id : オブジェクトID (x,y,z) : 設定する値 (デフォルト=0) %inst オブジェクトの持つパラメーターを設定します。 work2グループ(ワーク2値)に(x,y,z)で指定された値を加算します。 (x,y,z)には、実数または整数値を指定することができます。 %href addwork %index gpcnvaxis 3D座標の変換を行なう %group 拡張画面制御命令 %prm var_x,var_y,var_z,x,y,z,mode var_x : X値が代入される変数 var_y : Y値が代入される変数 var_z : Z値が代入される変数 x(0.0) : 変換元のX値 y(0.0) : 変換元のY値 z(0.0) : 変換元のZ値 mode(0) : 変換モード %inst (今後のバージョンでサポートするための予約キーワードです。機能は現在まだ実装されていません。) %href %index gppset ノードの物理パラメーターを設定 %group 拡張画面制御命令 %prm objid,prmid,x,y,z objid(0) : オブジェクトID prmid(0) : パラメーターID x(0.0) : 設定パラメーターX値 y(0.0) : 設定パラメーターY値 z(0.0) : 設定パラメーターZ値 %inst objidで指定されたノードの詳細な物理パラメーターを設定します。 prmidパラメーターで、設定する項目を指定し、X,Y,Zに指定された値が、それぞれの項目に対応した値として適用されます。 ^p マクロ名 内容 ---------------------------------------------------------------------------- GPPSET_ENABLE X=物理挙動のON/OFF(0=無効) GPPSET_FRICTION X=摩擦係数, Y=弾力設定 GPPSET_DAMPING X=linear反発(0〜1.0), Y=angular反発(0〜1.0) GPPSET_KINEMATIC X=Kinematic設定のON/OFF(0=無効) GPPSET_ANISOTROPIC_FRICTION X,Y,Z=異方性の摩擦 GPPSET_GRAVITY X,Y,Z=重力 GPPSET_LINEAR_FACTOR X,Y,Z=ベクトルに沿った移動の設定 GPPSET_ANGULAR_FACTOR X,Y,Z=ベクトルに沿った回転の設定 GPPSET_ANGULAR_VELOCITY X,Y,Z=回転ベロシティー GPPSET_LINEAR_VELOCITY X,Y,Z=リニアベロシティー ^p 必ずgppbind命令で基本的な物理特性を設定した後で詳細設定を行なうようにしてください。 設定値が正しくない場合は、エラーが発生します。 %href gppbind %index gpobjpool オブジェクトID生成の設定 %group 拡張画面制御命令 %prm start,num start(0) : 割り当て開始番号 num(-1) : 最大割り当て数 %inst オブジェクトIDの割り当て方法を変更します。 オブジェクトIDは、あらかじめ決められた最大数の中で、使用されていないID番号が割り当てられます。 オブジェクト最大数は、デフォルトで1024個となっており、sysreq命令によって拡張することが可能です。 ^p 例: setreq SYSREQ_MAXOBJ,4096 ; オブジェクト最大数を4096に拡張する ^p gpobjpool命令は、ID番号の割り当て範囲を任意に変更することができます。 startパラメーターで指定された番号を割り当て開始番号に設定します。 numパラメーターで指定された番号を割り当てられる最大数に設定します。 numパラメーターがマイナス値か省略されていた場合は、割り当て開始番号から最大限取れる範囲が設定されます。 ^p 例: gpobjpool 100,50 ; オブジェクトID生成の設定変更 ^p 上の例では、ID番号100〜150のみを割り当て対象に変更します。 これ以降のオブジェクト生成命令(gpboxやgpnullなど)では、指定された範囲内のオブジェクトIDのみが割り当てられます。 オブジェクト全体の中で特定の個数までしか生成されないように制限したい場合や、 表示順序をある程度コントロールしたい場合に利用できます。 gpobjpool命令によって、あらかじめ設定されたオブジェクト最大数を拡張することはできません。 必ず最大数の範囲内で設定を行なうよう注意してください。 %href delobj %index gppapply ノードに物理的な力を適用する %group 拡張画面制御命令 %prm objid,action,x,y,z objid(0) : オブジェクトID action(0) : 力の種類(タイプ) x(0.0) : 設定パラメーターX値 y(0.0) : 設定パラメーターY値 z(0.0) : 設定パラメーターZ値 %inst ノードに対して(x,y,z)で指定したベクトルの物理的な力を適用します。 actionパラメーターで設定できるタイプは、以下の通りです。 ^p マクロ名 内容 ---------------------------------------------------------------------------- GPPAPPLY_FORCE 移動しようとする力を加算する GPPAPPLY_IMPULSE 瞬間的な衝撃を与える GPPAPPLY_TORQUE トルク(ねじる)力を与える GPPAPPLY_TORQUE_IMPULSE トルク+衝撃を与える ^p 必ずgppbind命令で基本的な物理特性を設定した後で力を適用するようにしてください。 設定値が正しくない場合は、エラーが発生します。 %href gppbind %index gpmatprm1 マテリアルのパラメーター設定(2) %group 拡張画面制御命令 %prm id,"name",value id(0) : マテリアルID "name" : パラメーター名 value(0.0) : Xの設定値(実数値) %inst 生成されたマテリアルのシェーダーパラメーターを設定します。 gpmatprm命令と基本的に同じ機能です。 gpmatprm1命令は、1項目のみの実数パラメーターを指定します。 %href gpmat gpmatprm gpmatprm4 %index gpmatprm4 マテリアルのパラメーター設定(3) %group 拡張画面制御命令 %prm id,"name",x,y,z,w id(0) : マテリアルID "name" : パラメーター名 x(0.0) : Xの設定値(実数値) y(0.0) : Yの設定値(実数値) z(0.0) : Zの設定値(実数値) w(0.0) : Wの設定値(実数値) %inst 生成されたマテリアルのシェーダーパラメーターを設定します。 gpmatprm命令と基本的に同じ機能です。 gpmatprm4命令は、4項目(x,y,z,w)の実数パラメーターを指定します。 %href gpmat gpmatprm gpmatprm1 %index setalpha オブジェクトの透明度(α値)設定 %group 拡張画面制御命令 %prm objid,value objid(0) : オブジェクトID value(255) : 設定する値(整数値)(0〜255) %inst オブジェクトの透明度(α値)を設定します。 valueパラメーターで指定された値を、objidパラメーターのオブジェクトに設定します。 valueパラメーターで指定する値は、透明度を示す0〜255の整数値(α値)となります。 0は完全な透明、255は不透明が適用されます。 α値が255以外(半透明)の状態となったオブジェクトは、描画順序が前面に変更されます。 (OBJ_LATEのモードが指定されたのと同じ状態) %href gpsetprm