Easy3D For HSP3 関数の説明
既にEasy3Dを使ったことがある方へ
HSP2.61からHSP3対応になるにあたって、変更した点などは、
変更点について
に書きました。
(スワップチェインについての説明も書いてあります。)
ver3.0.0.1での変更点についてもお読みください。
おおざっぱに説明しますと、
形状データに *.sig ファイルを、モーションデータに *.qua ファイルを使用します。
それぞれのデータは、RokDeBone2で作成可能です。
(詳しくは、RokDeBone2のページをご覧ください。)
さて、e3dhsp.dllの関数の説明ですが、
まず、E3DSigLoadで、モデルデータ(sig file)を読み込むごとに、hsid というものが得られます。
(hsid とは、Handler Set ID の略です。)
各モデルデータを識別したり、モデルデータに対して処理を行う際は、
いつも、この、hsid を使用します。
また、E3DAddMotionで、モーションデータを読み込むごとに、モーションの番号が得られます。
e3dhsp3_fight.hsp 中では、mk1_* などというように、表記しています。
(ちなみに、mk は motion kind の略です。)
モーションのセットや、変更には、いつも、この、モーション番号を使います。
カメラの操作方法は、2種類用意しました。
E3DSetCameraPos と、E3DSetCameraDeg、E3DSetCameraTwist を組で使用する方法と、
E3DSetCameraPos と、E3DSetCameraTarget、E3DSetCameraTwistを組で使用する方法とがあります。
どちらか一方の方法で、統一して、使用することを想定しています。
ver1.0.4.0から、カメラの操作方法が、1種類増えました。
E3DSetCameraPos
E3DCameraLookAt
E3DCameraOnNaviLine
E3DCameraDirUp
E3DCameraDirDown
E3DCameraDirRight
E3DCameraDirLeft
E3DSetCameraTwist
を組で、使用する方法です。
他の2種類の方法と混ぜて使用することは、想定していません。
それぞれの、関数の役割と、引数の説明を表にしました。
関数名 | 種類 | 説明 | 引数 | 備考 |
---|---|---|---|---|
E3DInit | 初期化 | Direct3Dの初期化をする。 フルスクリーンにも対応しています。 フルスクリーンの解像度は、 指定したウインドウIDの幅に 一番近いものを自動で選びます。 640×480、 800×600、 1024×768、 1280×1024、 1400×1050、 1600×1200 の中から選びます。 HAL(ハードウェアの機能)が使えない場合は、エラーになります。 指定したビット数が使えない場合にも、 エラーになります。 エラーでアプリケーションが終了するのが 嫌な場合は、 この命令を呼ぶ前に、E3DCheckFullScreenParamsを呼んで チェックすることをおすすめします。 フルスクリーンの具体的な使用例は、 e3dhsp3_fullscreen.hsp に書きましたので、ご覧ください。 アンチエイリアスについて。 multisamplenumは0または2から16の値を指定してください。 multisamplenumの値が大きいほど、 画像のエッジがなめらかになります。 0を指定するとアンチエイリアスは使えません。 multisamplenumに0以外を指定する場合は、 その前に、 E3DGetMaxMultiSampleNumで 指定できる最大値を取得してください。 アンチエイリアスをオンにすると(0以外を指定すると)、 BMP保存や、AVI保存の命令が使えなくなります。 (E3DWriteDisplay2BMP、E3DCreateAVIFileと他のAVI関連関数が使用できなくなります。) アンチエイリアスを有効にするには、 作成した全てのhsidに対して、 E3DSetRenderState hsid, -1, D3DRS_MULTISAMPLEANTIALIAS, 1 を呼んでください。 アンチエイリアスの具体的な使用例は、 e3dhsp3_antialias.hsp に書きましたので、ご覧ください。 ver5.1.0.2でindex32bit引数を追加しました。 index32bit引数に1を指定すると32ビットインデックスモードで起動し、0を指定すると16ビットインデックスモードで起動します。 32ビットインデックスモードでは65535/3ポリゴンまでの制限がなくなります。 32ビットインデックスモードではビデオカードに能力が無い場合は起動できなくなります。 多くのネットブックなどでは32ビットインデックスモードは動かないようなので注意してください。 ver5.3.1.3でfullscreenflagの値指定を拡張。 |
1. [IN] 変数または、数値 : wid ウインドウのIDを渡してください。 screen命令やbgscr命令に指定したのと同じ番号を 指定してください。 2. [IN] 変数または、数値 : objid オブジェクトID。 HSPでボタンなどのオブジェクトを作り、 その上に3D表示したい場合に、この引数を使います。 HSPでは、オブジェクト作成直後のstat変数に、 オブジェクトIDが入っています。 このIDを指定してください。 widで指定したウインドウ全体に、 3D描画を行いたい場合は、 この引数には-1を指定してください。 3. [IN] 変数または、数値 : fullscreenflag フルスクリーンにするときは1を、 しないとき(ウインドウモード)は0を指定してください。 省略した場合は、ウインドウモードになります。 E3DCheckFullScreenParamsでflagに2を指定した場合は、fullscreenflagにも2を指定してください。 またこの場合、ウインドウの作成はscreen命令ではなくbgscr命令を使ってください。 4. [IN] 変数または、数値 : bits 色数を決めるビット数を指定してください。 16あるいは、32のみ有効です。 fullscreenflagに1または2を指定したときのみ、結果に反映されます。 5. [IN] 変数または、数値 : multisamplenum マルチサンプルの数。 詳しくは、右記をご覧ください。 6. [OUT] 変数 : scid スワップチェインIDが代入されます。 このIDは、どの部分に描画を行うかを指定するのに 使います。 E3DChkInView, E3DRender, E3DBeginScene, E3DPresent などで 必要になります。 7. [IN] 変数または、数値 : gpuflag 1を指定するとビデオカードに頂点シェーダー、 ピクセルシェーダーがある場合には、 それを使って頂点処理します。 0を指定すると、ソフトウェアで頂点処理します。 省略した場合は1が適用されます。 8. [IN] 変数または、数値 : enablereverb 1を指定するとステレオサウンドのリバーブが オンになります。 0を指定するとリバーブがオフになります。 省略した場合は、1が適用されます。 9. [IN] 変数または、数値 : index32bit 1を指定すると32ビットインデックスモードになります。0を指定すると16ビットインデックスモードになります。 省略すると0を指定したのと同じになります。 詳しくは前記をご覧ください。 |
ver1.0.0.1 ver5.1.0.2で拡張 ver5.3.1.3で拡張 |
E3DBye | 後処理 | Direct3Dの後処理をする。 作成したメモリなどの解放を行います。 アプリケーションの終了時に呼んでください。 |
なし | ver1.0.0.1 |
E3DSigLoad | モデルデータ | 形状データ(*.sig)を読み込んで、hsidを得る。 | 1. [IN] 文字列または、文字列の変数 : fname *.sig のパス文字列。 2. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 3. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 4. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 実数。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DCreateSwapChain | スワップチェイン | スワップチェインを作成します。 スワップチェインとは、複数の画面に描画を行うためのものです。 E3DInitで指定したウインドウとオブジェクト以外のところに、 描画したい場合に、この命令を呼びます。 この命令で取得したscidを、 E3DChkInView, E3DBeginScene, E3DRender, E3DPresentなどに渡すことにより、 複数画面に3D描画できるようになります。 具体的な使用例は、 e3dhsp3_SwapChain.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : wid ウインドウのIDを渡してください。 screen命令やbgscr命令に指定したのと同じ番号を 指定してください。 2. [IN] 変数または、数値 : objid オブジェクトID。 HSPでボタンなどのオブジェクトを作り、 その上に3D表示したい場合に、この引数を使います。 HSPでは、オブジェクト作成直後のstat変数に、 オブジェクトIDが入っています。 このIDを指定してください。 widで指定したウインドウ全体に、 3D描画を行いたい場合は、 この引数には-1を指定してください。 3. [OUT] 変数 : scid スワップチェインIDが代入されます。 このIDは、どの部分に描画を行うかを指定するのに 使います。 E3DChkInView, E3DRender, E3DBeginScene, E3DPresent などで 必要になります。 |
ver1.0.0.1 |
E3DDestroySwapChain | スワップチェイン | スワップチェインを破棄します。 E3DCreateSwapChainで作成したスワップチェインが、 もういらなくなった場合に、呼んでください。 E3DInitで取得したscidに対しては、呼び出さないでください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DCreateSwapChainで取得したIDを指定してください。 |
ver1.0.0.1 |
E3DRender | 描画 | バックバッファにレンダリングする。 変更したボーンの中で、 一番親の番号をlastparentに指定すると、 そのボーンツリーの影響を受ける頂点のみを 抽出して、計算します。 lastparentは、高速化のためのものです。 E3DIKRotateBetaで取得できるlastparentの値を 渡すことを想定しています。 キャラクター全体が移動した場合や、 カメラが移動した場合には、使わないでください。 また、E3DRenderの初回の呼び出し時にも 使わないでください。 lastparentを使用したくない場合は、 0をセットしてください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 変数または、数値 : hsid 形状データを識別するid 3. [IN] 変数または、数値 : withalpha 0を指定すると、不透明パーツのみレンダリングする。 1を指定すると、半透明パーツのみレンダリングする。 4. [IN] 変数または、数値 : framecnt E3DSetNewPose実行後のnextframeの値を指定する。 5. [IN] 変数または、数値 : projection mode プロジェクションの、モードを指定する。 0を指定すると、通常の表示。 1を指定すると、画面中央にレンズがあるように表示される。 6. [IN] 変数または、数値 : lastparent 変更が生じた一番親のボーンの番号を指定します。 詳しくは、左記をご覧ください。 7. [IN] 変数または、数値 : sigLightFlag sigのライティング計算を有効にしたいときは1を、 無効にしたいときは0を指定してください。 デフォルトは1です。 背面カリングを行わずに、 全ての頂点の色計算をしたい場合には、 2を指定してください。 8. [IN] 変数または、数値 : transskip transskipに1をセットすると、 頂点変換処理がスキップされます。 不透明、半透明と、2回、E3DRenderを呼び出す場合は、 2回目の呼び出し時に、transskipに1を指定してください。 |
ver1.0.0.1 ver1.0.0.5で引数追加 |
E3DPresent | 描画 | バックバッファの内容を、 プライマリバッファに転送する。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver1.0.0.1 |
E3DBeginScene | 描画 | アプリケーションでは、レンダリングを実行する前には必ずこのメソッドを呼び出し、 レンダリングの終了時、 および再度E3DBeginSceneを呼び出す前には、 必ず E3DEndSceneを呼び出す。 具体的には、 E3DRender, E3DDrawText, E3DDrawBigTextを、 E3DBeginSceneと、E3DEndSceneでサンドイッチするように記述する。 ver5.2.0.8でzscid引数が追加されました。 ver5.2.1.0でskipflagを拡張しました。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 変数または、数値 : skipflag skipflagに0を指定すると色の初期化とZバッファの初期化と背景の描画を行います。 skipflagに1を足すと色の初期化とZバッファの初期化と背景の描画を行いません。 skipflagに2を足すとシェーダー定数のビデオカードへの転送をキャンセルします。 skipflagに4を足すと色の初期化は行いますがZバッファの初期化と背景の描画は行いません。 3. [IN] 変数または、数値 : zscid Zバッファを指定できます。 描画に使用したいZバッファを持つレンダーターゲットテクスチャなどのスワップチェインIDを指定します。 この引数を省略した場合はscidで指定したZバッファが使用されます。 zscidを指定した場合は指定したZバッファはこの命令で初期化されません。 zscidで指定するZバッファはscidで指定したサーフェスの大きさと大きさが同じ時のみ有効です。 |
ver1.0.0.1 ver5.2.0.8で拡張 ver5.2.1.0で拡張 |
E3DEndScene | 描画 | このメソッドが成功すると、シーンがレンダリングされ、レンダリング後のシーンがデバイス サーフェスに保持される。 | なし | ver1.0.0.1 |
E3DCreateBG | 背景 | 画面の一番奥に表示される背景をセットします。 画像ファイルは、2つまで、指定できます。 2個目の画像は、雲や、もや用を想定しています。 1つ目の画像と2つ目の画像は、モジュレートされて、表示されます。 isroundに1をセットすると、 背景が、視点の回転に対応して、回転するようになります。 ビデオカードがマルチテクスチャに対応していない場合、 または、モジュレート処理が出来ない場合は、 1個目のテクスチャーしか表示しないように なっています。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 文字列または、文字列変数 : filename1 1つ目の画像ファイル名。 3. [IN] 文字列または、文字列変数 : filename2 2つ目の画像ファイル名。 2つ目が不必要な場合は、存在しないファイル名を、 渡してください。 4. [IN] 変数または、数値 : u 5. [IN] 変数または、数値 : v 2枚目の画像の、UV座標を、毎フレーム、どれくらい、 移動させるかを指定します。 通常は、0から1までの値を指定してください。 実数。 6. [IN] 変数または、数値 : isround isroundに、1を指定すると、 ビューの回転に対応して、 一つ目の画像ファイルのUV座標が、回転します。 この際、画像ファイルの左端と、右端が、 連続するようなデータでないと、 つなぎ目が見えてしまいますので、注意してください。 isroundに0を指定すると、 1つ目の画像は、回転しません。 7. [IN] 変数または、数値 : fogdist フォグの計算に使う、カメラからの距離を指定します。 この引数に、E3DSetLinearFogParamsで指定する endより小さい値を指定すれば、 背景は、フォグの色に染まりながらも、 うっすらと見えるように出来ます。 |
ver1.0.0.1 ver2.0.0.9で引数追加 |
E3DSetBGU | 背景 | 背景のUV座標のU座標を指定します。 画面の左端のU座標の値をstartu引数に、 画面の右端のU座標の値をendu引数に、 それぞれ、指定してください。 この機能を使った、背景のスクロールの例は、 e3dhsp3_scrollBG.hsp にあります。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : startu 画面左端のU座標の値。 実数。 3. [IN] 数値または、変数 : endu 画面右端のU座標の値。 実数。 |
ver1.0.0.1 |
E3DSetBGV | 背景 | 背景のUV座標のV座標を指定します。 画面の一番上のV座標の値をstartv引数に、 画面の一番下のV座標の値をendv引数に、 それぞれ、指定してください。 この機能を使った、背景のスクロールの例は、 e3dhsp3_scrollBG.hsp にあります。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : startv 画面左端のV座標の値。 実数。 3. [IN] 数値または、変数 : endv 画面右端のV座標の値。 実数。 |
ver1.0.0.1 |
E3DDestroyBG | 背景 | 背景を破棄します。 | 1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver1.0.0.1 |
E3DAddMotion | モーション | モーションデータ(*.qua)を読み込む。 | 1. [IN] 変数または、数値 : hsid どのモデルデータに対するモーションかを指定する。 2. [IN] 文字列または、文字列の変数 : fname *.quaのパス文字列。 3. [OUT] 変数 : mk 読み込んだモーションを識別する番号 4. [OUT] 変数 : maxframe 読み込んだモーションの最大フレーム番号 (総フレーム数 - 1 と同じ) 5. [IN] 変数または、数値 : mvmult モーションの移動成分に掛ける倍率 省略すると1.0 実数 |
ver1.0.0.1 ver4.0.1.6で引数追加 |
E3DSetMotionKind | モーション | カレントの、モーション番号を指定する。 (カレントモーションを変更する。) この関数を実行すると、 モーションのフレーム番号は、 0にセットされる。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : mk モーションを識別する番号 |
ver1.0.0.1 |
E3DGetMotionKind | モーション | カレントの、モーション番号を取得する。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : mk モーションを識別する番号 |
ver1.0.0.1 |
E3DSetNewPose | モーション | カレントのモーションを、 E3DSetMotionStepでセットしたstepフレーム数分、 進ませる。 nextframeに、 次に再生するフレーム番号がセットされる。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : nextframe 次に再生されるフレーム番号が代入されます。 |
ver1.0.0.1 |
E3DSetMotionStep | モーション | モーションのステップ数を指定する。 例えば、stepに、2を指定すると、 2フレームごとに(1フレームおきに)、 モーションを再生するようになる。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : mk モーションを識別する番号 3. [IN] 変数または、数値 : step 何フレームごとに、モーションを再生するかを指定する。 |
ver1.0.0.1 |
E3DChkConflict | 当たり判定 | 2つの形状データが、衝突しているかどうかを判定する。 (判定の元になるデータは、 E3DChkInView命令によって更新される。) hsid1が視野外にある場合は、inviewflagに1が、 hsid2が視野外にある場合は、inviewflagに2が、 両方とも視野外の場合は、inviewflagに3が、 両方とも視野内の場合は、inviewflagに0が代入されます。 現在は、 E3DChkConflict2があります。 パーツ同士のあたり判定が出来るようになりました。 モデル全体のあたり判定も出来ます。 モデル全体のあたり判定をする場合でも、 E3DChkConflict2の方が、パーツごとの計算をするので、この関数よりも計算精度が高いです。 新しい、E3DChkConflict2をお使いください。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数または、数値 : hsid2 形状データを識別するid 3. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 4. [OUT] 変数 : inviewflag hsid1が視野外にある場合は、inviewflagに1を、 hsid2が視野外にある場合は、inviewflagに2を、 両方とも視野外の場合は、inviewflagに3を、 両方とも視野内の場合は、inviewflagに0を代入します。 |
ver1.0.0.1 |
E3DChkConflict2 | 当たり判定 | 2つの形状データの指定したパーツ同士が、衝突しているかどうを判定します。 partno1, partno2には、 E3DGetPartNoByNameで取得した、 パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 (判定の元になるデータは、 E3DChkInView命令によって、更新されます。) hsid1が視野外にある場合は、inviewflagに1が、 hsid2が視野外にある場合は、inviewflagに2が、 両方とも視野外の場合は、inviewflagに3が、 両方とも視野内の場合は、inviewflagに0が代入されます。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数または、数値 : partno1 hsid1のモデル中のパーツの番号 3. [IN] 変数または、数値 : hsid2 形状データを識別するid 4. [IN] 変数または、数値 : partno2 hsid2のモデル中のパーツの番号 5. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は1が、 衝突していない場合は0がセットされる。 6. [OUT] 変数 : inviewflag hsid1が視野外にある場合は、inviewflagに1を、 hsid2が視野外にある場合は、inviewflagに2を、 両方とも視野外の場合は、inviewflagに3を、 両方とも視野内の場合は、inviewflagに0を代入します。 |
ver1.0.0.1 |
E3DCreateAfterImage | 残像 | この関数は、現在、機能していません。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : imagenum 表示する残像の数を指定する。 |
ver1.0.0.1 |
E3DDestroyAfterImage | 残像 | E3DCreateAfterImageで作成した、残像用のオブジェクトを破棄する。 (残像が表示されなくなる。) 必要回数より多く実行しても、害はないが、 実行し忘れると、 メモリリークするので注意してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid |
ver1.0.0.1 |
E3DSetAlpha | 描画パラメータ | 半透明の設定。 この関数は、過去のバージョンとの互換性のためだけに、存在します。 半透明の設定は、 E3DSetAlpha2 関数を、ご使用ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : usealphaflag 0を指定すると、不透明で描画され、 1を指定すると、alpha = 0.5 で描画されます。 3. [IN] 変数または、数値 : updateflag 1を指定してください。 |
ver1.0.0.1 |
E3DSetAlpha2 | 描画パラメータ | ビルボードの頂点のアルファ値を設定します。 sigモデルデータのアルファの設定は E3DSetMaterialAlphaをお使いください。 alphaval が1.0の時は、不透明に、 alphavalが0.0の時は、完全に透明になります。 alphavalに1.0以外の値を指定した場合は、 E3DRenderの2番目の引数withalphaに、 1を指定して描画します。 具体的な使用例はzip中の、 e3dhsp3_alpha.hsp をご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの透明度を設定できます。 2. [IN] 数値または、変数 : alphaval 頂点のアルファ値を指定します。 頂点のアルファ値は、0.0から1.0の値で 指定してください。 範囲外の値は、クランプしてセットします。 実数。 3. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツにアルファをセットできます。 4. [IN] 変数または、数値 : updateflag 1を指定してください。 |
ver1.0.0.1 |
E3DSetPos | モデル位置 | 形状データの位置をセットする。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz 実数。 形状データを ( posx, posy, posz) に移動する。 |
ver1.0.0.1 |
E3DGetPos | モデル位置 | 形状データの位置を取得する。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : posx 3. [OUT] 変数 : posy 4. [OUT] 変数 : posz 実数型の変数。 形状データの位置を取得する。 |
ver1.0.0.1 |
E3DSetDir | モデル向き | 形状データの向きを指定する。 指定した角度だけ回転します。 ver5.2.2.9からZ,X,Y軸の順番で回転するようになりました。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : degx 3. [IN] 変数または、数値 : degy 4. [IN] 変数または、数値 : degz 形状データの向きを、 X,Y,Z軸のそれぞれの角度(degree)で指定する。 実数。 |
ver1.0.0.1 ver5.2.2.9で仕様変更 |
E3DRotateInit | モデル向き | 形状データの向きを初期化します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid |
ver1.0.0.1 |
E3DRotateX | モデル向き | 形状データを、X軸に関して、degx 度だけ回転します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : degx 回転角度。 実数。 |
ver1.0.0.1 |
E3DRotateY | モデル向き | 形状データを、Y軸に関して、degy 度だけ回転します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : degy 回転角度。 実数。 |
ver1.0.0.1 |
E3DRotateZ | モデル向き | 形状データを、Z軸に関して、degz 度だけ回転します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : degz 回転角度。 実数。 |
ver1.0.0.1 |
E3DTwist | モデル向き | 形状データを、現在向いている方向を軸として、deg度だけ、回転します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : deg 回転角度。 実数。 |
ver1.0.0.1 |
E3DPosForward | モデル位置 | 形状データを、現在向いている方向に、stepだけ移動する。 ただし、形状データが、default状態で、 Z軸の方向を向いていると仮定する。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : step 移動距離を指定する。 実数。 |
ver1.0.0.1 |
E3DCloseTo | モデル位置 | hsid1で識別される形状を、hsid2で識別される形状の方向に、動かす。 内部で、E3DDirToTheOtherを呼び出します。 |
1. [IN] 変数または、数値 : hsid1 移動する形状データを、識別するid 2. [IN] 変数または、数値 : hsid2 hsid2で指定した形状データの方向に移動する。 3. [IN] 変数または、数値 : step 移動距離を指定する。 実数。 |
ver1.0.0.1 |
E3DDirToTheOtherXZ | モデル向き | hsid1で識別される形状を、XZ平面で、hsid2で識別される形状の方向を、向くようにする。 ただし、形状データが、初期状態で、 Z軸の負の方向(0.0, 0.0, -1.0)を向いているものと仮定しています。 |
1. [IN] 変数または、数値 : hsid1 向きを変える形状データを、識別するid 2. [IN] 変数または、数値 : hsid2 hsid2で指定した形状データの方向を向く。 |
ver1.0.0.1 |
E3DDirToTheOther | モデル向き | E3DDirToTheOtherXZの3次元版。 ただし、形状データが、初期状態で、 Z軸の負の方向(0.0, 0.0, -1.0)を向いているものと仮定しています。 |
1. [IN] 変数または、数値 : hsid1 向きを変える形状データを、識別するid 2. [IN] 変数または、数値 : hsid2 hsid2で指定した形状データの方向を向く。 |
ver1.0.0.1 |
E3DSeparateFrom | モデル位置 | hsid1で識別される形状を、hsid2で識別される形状と、逆の方向に、動かす。 | 1. [IN] 変数または、数値 : hsid1 移動する形状データを、識別するid 2. [IN] 変数または、数値 : hsid2 hsid2で指定した形状データと反対方向に移動する。 3. [IN] 変数または、数値 : dist 形状同士をどのくらいの距離、離すかを指定する。 実数。 |
ver1.0.0.1 |
E3DGetCameraPos | カメラ | カメラの位置を取得する。 | 1. [OUT] 変数 : posx 2. [OUT] 変数 : posy 3. [OUT] 変数 : posz 実数型の変数。 カメラの位置、 ( posx, posy, posz) を取得する。 |
ver1.0.0.1 |
E3DSetCameraPos | カメラ | カメラの位置を指定する。 | 1. [IN] 変数または、数値 : posx 2. [IN] 変数または、数値 : posy 3. [IN] 変数または、数値 : posz カメラを ( posx, posy, posz) に移動する。 実数。 |
ver1.0.0.1 |
E3DGetCameraDeg | カメラ | カメラの向きを取得する。 | 1. [OUT] 変数 : degxz カメラのXZ平面での角度を取得する。 実数型の変数。 2. [OUT] 変数 : degy カメラの仰ぎ角度を取得する。 実数型の変数。 |
ver1.0.0.1 |
E3DSetCameraDeg | カメラ | カメラの向きを指定する。 | 1. [IN] 変数または、数値 : degxz カメラのXZ平面での角度を指定する。 実数。 2. [IN] 変数または、数値 : degy カメラの仰ぎ角度を指定する。 実数。 |
ver1.0.0.1 |
E3DSetCameraTarget | カメラ | カメラの注視点を指定する。 | 1. [IN] 変数または、数値 : targetx 2. [IN] 変数または、数値 : targety 3. [IN] 変数または、数値 : targetz カメラの注視点を(targetx, targety, targetz)にセットする。 実数。 4. [IN] 変数または、数値 : upvecx 5. [IN] 変数または、数値 : upvecy 6. [IN] 変数または、数値 : upvecz カメラの上方向のベクトルを指定する。 内部で、正規化して使用される。 実数。 |
ver1.0.0.1 |
E3DChkInView | 描画準備 | hsidで識別されるモデルが、視野内にあるかどうかを、判定します。 結果は、E3DHSPの内部データに、セットされます。 視野外のオブジェクトや、パーツは、 E3DRender時に、 自動的に、処理をスキップするようになります。 必ず、E3DSetPosや、E3DSetNewPoseより後、 E3DRenderや、あたり判定より前に、 呼び出してください。 この命令を呼び出した直後のstatシステム変数には、 ひとつも視野内にパーツがない場合は0が、 少なくとも1つは視野内にパーツがある場合は1がセットされます。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 変数または、数値 : hsid 形状データを識別するid |
ver1.0.0.1 |
E3DEnableDbgFile | デバッグ | デバッグ情報を、dbg.txtに出力するように、します。 | なし | ver1.0.0.1 |
E3DSetProjection | 描画パラメータ | プロジェクションを指定する。 この関数を呼び出さなかった場合は、 near面:100.0, far面:10000.0, 視野角:45.0度 がdefaultで適用される。 引数に不正な値が渡された場合も、 default値が適用される。 |
1. [IN] 変数または、数値 : near クリッピングの近い側の距離 実数。 2. [IN] 変数または、数値 : far クリッピングの遠い側の距離 実数。 3. [IN] 変数または、数値 : fovdeg 視野角(degree) 実数。 |
ver1.0.0.1 |
E3DGetKeyboardState | キーボード | 256 個の仮想キーの状態を、指定されたバッファkeybufへコピーします。 keybuf は、この関数を使用する前に、 dim keybuf, 256 で、確保してください。 複数のキーの状態を、一度の呼び出しで、 取得できます。 例えば、Aキーが押されているかどうかを 確かめる場合は、 E3DGetKeyboardState 呼び出し後に、 keybuf('A') の値を調べます。 ( ’ を忘れずに。 ) 0が入っていた場合は、押されていません。 1が入っていた場合は、押されています。 具体的な使用例は、zip中の、hsp ファイルをご覧ください。 バーチャルキー情報は、zip中の、 e3dhsp3.as で、 VK_ で始まる定数として、宣言しています。 |
1. [OUT] 変数 : keybuf keybufに、キーの状態が、代入されます。 keybufは、dim keybuf, 256 で、 作成されている必要があります。 |
ver1.0.0.1 |
E3DCos | 算術 | cosを取得する。 | 1. [IN] 変数または、数値 : degree degree度のcosを計算します。 実数。 2. [OUT] 変数 : ret cos の結果がセットされる。 実数型の変数。 |
ver1.0.0.1 |
E3DSin | 算術 | sinを取得する。 | 1. [IN] 変数または、数値 : degree degree度のsinを計算します。 実数。 2. [OUT] 変数 : ret sin の結果がセットされる。 実数型の変数。 |
ver1.0.0.1 |
E3DACos | 算術 | acosを取得する。 | 1. [IN] 変数または、数値 : dot たとえば、内積をいれる。 2. [OUT] 変数 : degree acos( dot ) が degreeにセットされる。 実数型の変数。 |
ver1.0.0.1 |
E3DDot | 算術 | (vecx1, vecy1, vecz1)と、(vecx2, vecy2, vecz2)を、それぞれ正規化したもの同士の内積を取得する。 |
1. [IN] 変数または、数値 : vecx1 2. [IN] 変数または、数値 : vecy1 3. [IN] 変数または、数値 : vecz1 実数。 4. [IN] 変数または、数値 : vecx2 5. [IN] 変数または、数値 : vecy2 6. [IN] 変数または、数値 : vecz2 実数。 7. [OUT] 変数 : ret 結果が代入される。 実数型の変数。 |
ver1.0.0.1 |
E3DCross | 算術 | (vecx1, vecy1, vecz1)と、(vecx2, vecy2, vecz2)の両方に垂直で、大きさが1 なベクトル(retx, rety,
retz)を取得する。 |
1. [IN] 変数または、数値 : vecx1 2. [IN] 変数または、数値 : vecy1 3. [IN] 変数または、数値 : vecz1 実数。 4. [IN] 変数または、数値 : vecx2 5. [IN] 変数または、数値 : vecy2 6. [IN] 変数または、数値 : vecz2 実数。 7. [OUT] 変数 : retx 8. [OUT] 変数 : rety 9. [OUT] 変数 : retz 結果が代入される。 実数型の変数。 |
ver1.0.0.1 |
E3DAtan | 算術 | atan ( val ) のdegreeを取得します。 | 1. [IN] 変数または、数値 : val 実数。 2. [OUT] 変数 : retdeg retdegに、atan( val ) の角度(degree)が入ります。 実数型の変数。 |
ver1.0.0.1 |
E3DAtan2 | 算術 | atan2( y, x ) のdegreeを取得します。 | 1. [IN] 変数または、数値 : y 2. [IN] 変数または、数値 : x 実数。 3. [OUT] 変数 : retdeg retdegに、atan2( y, x ) の角度(degree)が入ります。 実数型の変数。 |
ver1.0.0.1 |
E3DSqrt | 算術 | sqrt( val ) を取得します。 | 1. [IN] 変数または、数値 : val 実数。 2. [OUT] 変数 : ret retに、sqrt( val ) が入ります。 実数型の変数。 |
ver1.0.0.1 |
E3DDrawText | テキスト | 画面上の(posx, posy) に、r, g, b で指定した色で、strの文字列を書く。 英数字のみ。 scaleが1.0のときは、12ポイントの大きさ。 \nで改行できます。 |
1. [IN] 変数または、数値 : posx 2. [IN] 変数または、数値 : posy 座標。整数。 3. [IN] 変数または、数値 : scale 実数。 4. [IN] 変数または、数値 : r 5. [IN] 変数または、数値 : g 6. [IN] 変数または、数値 : b 色(0から255) 7. [IN] 文字列または、文字列変数 : str 表示文字列。 |
ver1.0.0.1 |
E3DDrawBigText | テキスト | 画面上の(posx, posy) に、r, g, b で指定した色で、strの文字列を書く。 英数字のみ。 scaleが1のときは、36ポイントの大きさ。 |
1. [IN] 変数または、数値 : posx 2. [IN] 変数または、数値 : posy 座標。整数。 3. [IN] 変数または、数値 : scale 実数。 4. [IN] 変数または、数値 : r 5. [IN] 変数または、数値 : g 6. [IN] 変数または、数値 : b 色(0から255) 7. [IN] 文字列または、文字列変数 : str 表示文字列。 |
ver1.0.0.1 |
E3DRand | 算術 | 0から(range - 1)までの間の、乱数を取得する。 | 1. [IN] 変数または、数値 : range 乱数の範囲を指定する。 整数。 2. [OUT] 変数 : rand 乱数がセットされる。 整数。 |
ver1.0.0.1 |
E3DSeed | 算術 | 乱数の初期化をする。 (乱数のseedをセットする。) srand( (unsigned)seed )を実行する。 |
1. [IN] 変数または、数値 : seed srandに渡す値を指定する。 |
ver1.0.0.1 |
E3DWaitByFPS | 同期 | 指定したfpsに、近くなるように、waitします。 fpsとは、1秒間に描画するのこと回数です。 指定したfps以上、 処理を行わないようにするための命令です。 遅いマシンが、速くなるわけではないので、 注意してください。 必ず、HSPの標準命令、”await 0”と セットで使用してください。 実際のfpsが、retfps変数に、代入されます。 |
1. [IN] 変数または、数値 : fps 指定したfpsに、近くなるように、waitします。 整数。 2. [OUT] 変数 : retfps 実際のfpsが代入されます。 整数。 |
ver1.0.0.1 |
E3DGetFPS | 同期 | fpsを計測します。 メインループの最後などで呼び出すことを想定しています。 E3DGetFPSが呼ばれる時間間隔から、 1秒間あたりに、何回呼び出されるかを計算します。 |
1. [OUT] 変数 : retfps fpsが代入されます。 整数。 |
ver1.0.0.1 |
E3DCreateLight | ライト | 光源を作成します。 光源の識別番号、lightIDが取得できます。 以後、光源のパラメータの設定には、 この、lightIDを使用します。 |
1. [OUT] 変数 : lightID 作成したライトを識別するID。 |
ver1.0.0.1 |
E3DSetDirectionalLight | ライト | lightIDで識別される光源に、平行光源のパラメータをセットする。 |
1. [IN] 変数または、数値 : lightID 光源を識別するid 2. [IN] 変数または、数値 : dirx 3. [IN] 変数または、数値 : diry 4. [IN] 変数または、数値 : dirz 平行光源の向きを、 ベクトル(dirx, diry, dirz)を正規化したベクトルに、 設定する。 実数。 5. [IN] 変数または、数値 : r 6. [IN] 変数または、数値 : g 7. [IN] 変数または、数値 : b 平行光源の色を、 (r, g, b)に設定する。 各色の値は、0から255までの値とする。 |
ver1.0.0.1 |
E3DSetPointLight | ライト | lightIDで識別される光源に、ポイントライトのパラメータをセットする。 | 1. [IN] 変数または、数値 : lightID 光源を識別するid 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz ポイントライトの位置を、 (posx, posy, posz)に設定する。 実数。 5. [IN] 変数または、数値 : dist ポイントライトの光が届く距離を設定します。 実数。 6. [IN] 変数または、数値 : r 7. [IN] 変数または、数値 : g 8. [IN] 変数または、数値 : b ポイントライトの色を、 (r, g, b)に設定する。 各色の値は、0から255までの値とする。 |
ver1.0.0.1 |
E3DSetSpotLight | ライト | lightIDで識別される光源に、スポットライトのパラメータをセットする。 この命令は、現在サポートされていません。 |
1. [IN] 変数または、数値 : lightID 光源を識別するid 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz スポットライトの位置を、 (posx, posy, posz)に設定する。 実数。 5. [IN] 変数または、数値 : dirx 6. [IN] 変数または、数値 : diry 7. [IN] 変数または、数値 : dirz スポットライトの向きを、 ベクトル(dirx, diry, dirz)を正規化したベクトルに、 設定する。 実数。 8. [IN] 変数または、数値 : dist スポットライトの光が届く距離を設定します。 実数。 9. [IN] 変数または、数値 : angle スポットライトの照らす角度(degree)を設定します。 実数。 10. [IN] 変数または、数値 : r 11. [IN] 変数または、数値 : g 12. [IN] 変数または、数値 : b スポットライトの色を、 (r, g, b)に設定する。 各色の値は、0から255までの値とする。 |
ver1.0.0.1 |
E3DDestroyLight | ライト | ライトを破棄します。 | 1. [IN] 変数または、数値 : lightID 削除する光源を、識別するid |
ver1.0.0.1 |
E3DClearZ | 描画 | Zバッファーをクリアーします | なし | ver1.0.0.1 |
E3DDestroyHandlerSet | 後処理 | E3DSigLoad, E3DAddMotionで作成した、 オブジェクトを破棄します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid |
ver1.0.0.1 |
E3DSetDispSwitch | 描画パラメータ | ディスプレイスイッチのオン、オフを 行うことが出来ます。 ディスプレイスイッチの詳細は、 ディスプレイスイッチの説明をご覧ください。 mk引数に-1を指定すると、 モーションを読み込んでいなくても、 ディスプレイスイッチをオンオフすることが出来ます。 mkに-1を指定して、 スイッチを一個でもオンにした場合は、 モーションを読み込んだ場合も、 モーションのスイッチ状態よりも優先されます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : mk モーションを識別する番号 3. [IN] 変数または、数値 : switchID 変更したいスイッチの番号 4. [IN] 変数または、数値 : frameno フレーム番号、framenoより後のフレームの スイッチを、 flagに基づいて、オン、オフします。 5. [IN] 変数または、数値 : flag flagに1を指定すると、スイッチをオンに、 0を指定すると、スイッチをオフにします。 |
ver1.0.0.1 |
E3DSetMotionFrameNo | モーション | E3DSetMotionKindの拡張版です。 モーションの種類と、フレーム番号を セットすることが出来ます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : mk モーションを識別する番号 3. [IN] 変数または、数値 : frameno フレーム番号 |
ver1.0.0.1 |
E3DCreateSprite | スプライト | スプライトを作成します。 spriteIDで、スプライトを識別するIDを、 取得できます。 スプライトの操作時には、この、spriteIDを 使用します。 作成されるスプライトのサイズは、 元の画像ファイルの大きさと、 異なる場合があります。 サイズは、E3DGetSpriteSize で、 確認してください。 |
1. [IN] 文字列または、文字列変数 : filename 画像ファイル名。 2. [IN] 変数または、数値 : transparentflag 透過フラグ。 画像ファイルのアルファをもとに透過する場合、 あるいは、画像ファイルにアルファが無く透過もしない場合、 0を指定してください。 1をセットすると、黒色を透過色として色抜きします。 2をセットすると、(tpR, tpG, tpB)で指定した色を 透過色とします この関数のtransparetflagの意味は、 他の関数のtransparentとは、違うので、 気を付けてください。 3. [OUT] 変数 : spriteID 作成したスプライトを識別するID。 4. [IN] 変数または、数値 : tpR 5. [IN] 変数または、数値 : tpG 6. [IN] 変数または、数値 : tpB transparentflag = 2 のとき、 透過色を、(tpR, tpG, tpB)で指定します。 |
ver1.0.0.1 |
E3DBeginSprite | スプライト | スプライトを描画できるように、 デバイスを準備します。 E3DRenderSprite命令を、 E3DBeginSpriteと、E3DEndSpriteで、 サンドイッチするように、記述してください。 E3DBeginSpriteとE3DEndSpriteは、 E3DBeginSceneとE3DEndSceneの間に記述してください。 スプライトを描画すると、レンダーステートが変化するので、 hsidなどを描画した後、最後に、スプライトの描画命令を書くことをおすすめします。 |
なし | ver1.0.0.1 |
E3DEndSprite | スプライト |
E3DRenderSprite命令を、 E3DBeginSpriteと、E3DEndSpriteで、 サンドイッチするように、記述してください。 |
なし | ver1.0.0.1 |
E3DRenderSprite | スプライト | spriteIDで識別される、スプライトを、レンダリングします。 | 1. [IN] 変数または、数値 : spriteID スプライトを識別するID。 2. [IN] 変数または、数値 : scalex 3. [IN] 変数または、数値 : scaley スプライトのx軸、y軸方向の倍率を指定します。 実数を指定。(等倍は1.0) 4. [IN] 変数または、数値 : trax 5. [IN] 変数または、数値 : tray スプライトの描画位置(trax, tray)を指定します。 指定した位置が、スプライトの左上の座標となります。 整数。 6. [IN] 変数または、数値 : traz 描画時の奥行き情報。 3D描画との前後関係にも、反映されます。 0.0から1.0の実数を指定してください。 0.0のとき、一番手前に描画され、 1.0のとき、一番奥に描画されます。 0.0から1.0の間は、均等な効果ではありません。 値を増やしても、あまり効果の無い場所や、 少し、値を増やしただけで、効果が大きくなる範囲が あります。 Easy3Dの場合は、0.99以降が、 少し値を増やしただけで、 効果が大きい範囲となります。 |
ver1.0.0.1 ver2.0.0.4で引数追加 |
E3DGetSpriteSize | スプライト | spriteIDで識別される、スプライトの、サイズを取得します。 | 1. [IN] 変数または、数値 : spriteID スプライトを識別するID。 2. [OUT] 変数 : spriteWidth 3. [OUT] 変数 : spriteHeight 幅と、高さが、それぞれ、spriteWidth, spriteHeightに 代入されます。 整数型変数。 |
ver1.0.0.1 |
E3DSetSpriteRotation | スプライト | E3DCreateSprite命令で作成したスプライトを回転させます。 (centerx, centery)の座標を中心に回転します。 (0, 0)を指定すると、スプライトの左上を中心に回転します。 スプライトの中央を中心に回転したいときは、 まず、E3DGetSpriteSize命令で、 スプライトのサイズ、sizex, sizey を取得します。 centerx = sizex / 2 centery = sizey / 2 の値をこの関数に渡せば、OKです。 回転角度は、絶対量です。 相対量ではありません。 E3DSetSpriteRotation命令は、 一度、呼び出せば、内部で、情報を記憶しますので、次に異なるパラメータで呼び出すまで、 その値が有効になります。 |
1. [IN] 数値または、変数 : spid スプライトデータを識別するID 2. [IN] 数値または、変数 : centerx 3. [IN] 数値または、変数 : centery (centerx, centery)の座標を中心に回転します。 実数対応。 4. [IN] 数値または、変数 : rotdeg rotdeg 度だけ、スプライトを回転します。 実数。 |
ver1.0.0.1 |
E3DSetSpriteARGB | スプライト | スプライトに乗算する色を指定します。 alpha, r, g, b には、それぞれ、 0から255までの値を渡してください。 alpha に255より小さい値を渡せば、 半透明のスプライトの描画が出来ます。 スプライトの色を変えたくない場合には、 r, g, bには、255を渡してください。 |
1. [IN] 数値または、変数 : spid スプライトデータを識別するID 2. [IN] 数値または、変数 : alpha 3. [IN] 数値または、変数 : r 4. [IN] 数値または、変数 : g 5. [IN] 数値または、変数 : b スプライトに乗算する色を指定します。 半透明にする場合には、 alphaに255より小さい値を入れます。 |
ver1.0.0.1 |
E3DDestroySprite | スプライト | spriteIDで識別される、スプライトを、 破棄します。 |
1. [IN] 変数または、数値 : spriteID スプライトを識別するID。 |
ver1.0.0.1 |
E3DChkConfBillboard2 | ビルボード | 指定した境界球(中心と半径)と、全てのビルボードとのあたり判定をします。 hsidの代わりに、境界球を指定すること以外は、 E3DChkConfBillboardと同じです。 衝突したビルボードのIDが取得できます。 |
1. [IN] 変数または、数値 : centerx 2. [IN] 変数または、数値 : centery 3. [IN] 変数または、数値 : centerz 境界球の中心座標( centerx, centery, centerz ) 実数。 4. [IN] 変数または、数値 : r 境界球の半径 実数。 5. [IN] 変数または、数値 : confrate ビルボードの境界球の半径に、掛ける係数 半径 × confrate で計算されます。 実数。 6. [OUT] 変数 : resultptr あたり判定の結果が代入されます。 当たった場合は1が、 当たらなかった場合は0が代入されます。 7. [OUT] 変数 : confbbid 8. [IN] 変数または、数値 : arrayleng 衝突したビルボードのIDを格納するための配列 dim confbbid, arrayleng などの命令で、配列を作成して、 この関数に指定してください。 arrayleng個以上のビルボードと、 同時に衝突した場合には、エラーになるので、 配列長のarraylengは、少し大きめの値にしてください。 9. [OUT] 変数 : confnum 衝突したビルボードの個数が代入されます。 maxno = confnum - 1 とすると、 confbbid(0) から、confbbid(maxno) までの間に、 衝突したビルボードのIDが代入されます。 |
ver1.0.0.1 |
E3DChkConfBillboard | ビルボード | hsidで識別されるモデルデータと、全てのビルボードのあたり判定をします。 境界球による判定を行います。 当たらなかった場合は、 resultに0が代入され、 当たった場合は、 resultに1が代入されます。 confrateで、ビルボードの境界球の大きさを変更することが出来ます。 例えば、confrateに0.5を入れると、 実際の半径×0.5 つまり、半分の半径で計算されます。 confrateに小さな値を入れることで、 モデルがビルボードの近くを すり抜けることが出来るようになります。 衝突したビルボードのIDが取得できます。 具体的な使用例は、 e3dhsp3_ground.hsp をご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 2. [IN] 変数または、数値 : confrate ビルボードの境界球の半径に、掛ける係数 半径 × confrate で計算されます。 実数。 3. [OUT] 変数 : result あたり判定の結果が代入されます。 当たった場合は1が、 当たらなかった場合は0が代入されます。 4. [OUT] 変数 : confbbid 5. [IN] 変数または、数値 : arrayleng 衝突したビルボードのIDを格納するための配列 dim confbbid, arrayleng などの命令で、配列を作成して、 この関数に指定してください。 arrayleng個以上のビルボードと、 同時に衝突した場合には、エラーになるので、 配列長のarraylengは、少し大きめの値にしてください。 6. [OUT] 変数 : confnum 衝突したビルボードの個数が代入されます。 maxno = confnum - 1 とすると、 confbbid(0) から、confbbid(maxno) までの間に、 衝突したビルボードのIDが代入されます。 |
ver1.0.0.1 |
E3DChkConfBySphere | 当たり判定 | 境界球によるあたり判定を行います。 判定の際に、E3DChkInViewでセットした データを使用します。 conflevelに1を指定した場合は、 モデル単位の粗い判定のみを行います。 conflevelに2を指定した場合は、 パーツ単位の判定を行います。 現在は、 任意のパーツ同士のあたり判定の出来る、 E3DChkConfBySphere2があります。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数または、数値 : hsid2 形状データを識別するid 3. [IN] 変数または、数値 : conflevel 1を指定した場合は、モデル単位の判定を、 2を指定した場合は、パーツ単位の判定をします。 4. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 |
ver1.0.0.1 |
E3DChkConfBySphere2 | 当たり判定 | 境界球によるあたり判定を、任意のパーツごとに行います。 判定の際に、E3DChkInViewでセットした データを使用します。 partno1, partno2には、 E3DGetPartNoByNameで取得した パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数または、数値 : partno1 hsid1のモデル中のパーツの番号 3. [IN] 変数または、数値 : hsid2 形状データを識別するid 4. [IN] 変数または、数値 : partno2 hsid2のモデル中のパーツの番号 5. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 |
ver1.0.0.1 |
E3DCreateProgressBar | プログレスバー | メインウインドウの下の部分に、プログレスバーを作ります。 |
なし | ver1.0.0.1 |
E3DSetProgressBar | プログレスバー | 作業の達成率などを、 プログレスバーに表示させます。 newpos は、0から100の間の数を、 セットしてください。 |
1. [IN] 変数または、数値 : newpos 0から100の値。 |
ver1.0.0.1 |
E3DDestroyProgressBar | プログレスバー | プログレスバーを削除します。 |
なし | ver1.0.0.1 |
E3DLoadGroundBMP | 地面 | BMPデータから、地面を生成します。 詳しくは、地面データの作り方をご覧ください。 |
1. [IN] 文字列または、文字列変数 : filename1 地面の座標情報の元となる、BMPファイル名 2. [IN] 文字列または、文字列変数 : filename2 地面の道の情報の元となる、BMPファイル名 3. [IN] 文字列または、文字列変数 : filename3 地面の川の情報の元となる、BMPファイル名 4. [IN] 文字列または、文字列変数 : filename4 地面、道、川の模様を決める、BMPファイル名 5. [IN] 変数または、数値 : maxx 地面のX座標の最大値 実数。 6. [IN] 変数または、数値 : maxz 地面のZ座標の最大値 実数。 7. [IN] 変数または、数値 : divx X方向の分割数 8. [IN] 変数または、数値 : divz Z方向の分割数 9. [IN] 変数または、数値 : maxheight 地面の高さの最大値 実数。 10. [OUT] 変数 : hsid 作成した地面データを識別する、ID |
ver1.0.0.1 |
E3DCameraPosForward | カメラ | カメラを、向いている方向に、 stepの距離だけ 移動させます。 stepにマイナスを与えると、 後ろに進めます。 |
1. [IN] 変数または、数値 : step 進む距離を指定してください。 実数。 |
ver1.0.0.1 |
E3DSetBeforePos | モデル位置 | E3DChkConfGroundで使用する座標を保存します。 一つ前の座標を保存するための命令です。 保存した値は、内部で、当たり判定命令で使用します。 メインループの最後の部分などで、 呼んでください。 一番最初のE3DPosの直後でも、 呼んでください。 |
1. [IN] 変数または、数値 : charahsid 形状データを識別するid |
ver1.0.0.1 |
E3DChkConfGround | 当たり判定 | groundhsidで識別される地面と、charahsidで識別されるキャラクターとのあたり判定をします。 groundhsidは、E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで取得したものでなければいけません。 キャラクターの現在の座標と、E3DSetBeforePosで保存された古い座標とを結ぶ線分と、 地面の各ポリゴンとのあたり判定をします。 地面の上を這うように動くためのモードと、 飛行機のように飛ぶためのモードの 2種類あります。 這うモードの時は、毎回、adjustx,y,zに 地面の座標が返されます。 飛ぶモードの時は、地面と衝突したときに、 その座標がadjustx,y,zに返されます。 |
1. [IN] 変数または、数値 : charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値 : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 3. [IN] 変数または、数値 : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 4. [IN] 変数または、数値 : diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 実数。 5. [IN] 変数または、数値 : mapminy groundhsidで識別されるデータの一番低いY座標の値 通常は、0.0です。 実数。 6. [OUT] 変数 : result あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 となります。 7. [OUT] 変数 : adjustx 8. [OUT] 変数 : adjusty 9. [OUT] 変数 : adjustz result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 10. [OUT] 変数 : nx 11. [OUT] 変数 : ny 12. [OUT] 変数 : nz result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが、 (nx ny, nz)に代入されます。 跳ね返る方向を決めるときなどに 使用できるのではないかと思い、 加えてみました。 実数型の変数。 |
ver1.0.0.1 |
E3DChkConfGround2 | 当たり判定 | befposとnewposを結ぶ線分と、groundhsidで識別される地面との あたり判定をします。 線分の座標を、ユーザーが指定すること以外は、 E3DChkConfGroundと全く、同じです。 |
1. [IN] 変数または、数値 : befposx 2. [IN] 変数または、数値 : befposy 3. [IN] 変数または、数値 : befposz 線分の始点を(befposx, befposy, befposz)で 指定します。 実数。 4. [IN] 変数または、数値 : newposx 5. [IN] 変数または、数値 : newposy 6. [IN] 変数または、数値 : newposz 線分の終点を(newposx, newposy, newposz)で 指定します。 実数。 7. [IN] 変数または、数値 : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 8. [IN] 変数または、数値 : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 9. [IN] 変数または、数値 : diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 実数。 10. [IN] 変数または、数値 : mapminy groundhsidで識別されるデータの一番低いY座標の値 通常は、0.0です。 実数。 11. [OUT] 変数 : result あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 12. [OUT] 変数 : adjustx 13. [OUT] 変数 : adjusty 14. [OUT] 変数 : adjustz result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 15. [OUT] 変数 : nx 16. [OUT] 変数 : ny 17. [OUT] 変数 : nz result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが、 (nx, ny, nz)に代入されます。 跳ね返る方向を決めるときなどに 使用できるのではないかと思い、 加えてみました。 実数型の変数。 |
ver1.0.0.1 |
E3DGetPartNoByName | モデル情報 | モデル内のパーツの名前から、パーツの番号を取得します。 パーツの名前は、RokDeBone2で確認してください。 ver1.0.6.1以前のRokDeBone2では、 メタセコイアから読み込んだデータの、 パーツの名前には、 " が付いているので、 注意してください。 昔のファイルの場合、 例えば、名前が、"obj1" である場合、 引数partname には、 "\"obj1\"" というように、\" を使用しなくては、いけません。 ( 現在のRokDeBone2で新規作成したファイルでは、 パーツ名に”は付いていません。 ) また、同じ名前のパーツが、複数ある場合、 常に、一番最初に、見つかったパーツの番号が、取得されることに、注意してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 文字列または、文字列変数 : partname RokDeBone2で表示される、パーツの名前。 3. [OUT] 変数 : partno 名前がpartnameである、パーツの番号。 |
ver1.0.0.1 |
E3DGetVertNumOfPart | モデル情報 | partnoで識別されるパーツに、いくつの頂点が含まれるかを取得します。 E3DGetVertPos, E3DSetVertPos に渡す、vertno は、 0 〜 (vertnum - 1) の間でなくては、なりません。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号 3. [OUT] 変数 : vertnum パーツに含まれる頂点数。 |
ver1.0.0.1 |
E3DGetVertPos | モデル情報 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標を取得します。 影響を受けていない、 ローカルな座標値が、返されます。 ver5.0.0.4からローカル座標とグローバル座標のどちらかを 取得できるようになりました。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号 3. [IN] 変数または、数値 : vertno 頂点の番号 4. [OUT] 変数 : vertx 5. [OUT] 変数 : verty 6. [OUT] 変数 : vertz 頂点の座標が(vx, vy, vz)に代入されます。 実数型の変数。 7. [IN] 変数または、数値 : kind 0を指定するとローカル座標 1を指定するとグローバル座標が 取得できます。 |
ver1.0.0.1 ver5.0.0.4で拡張 |
E3DSetVertPos | モデル情報 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標(ローカル座標)をセットします。 ユーザーが、座標、姿勢を、 全て、自分で管理することを想定した、 上級者向けの機能です。 例えば、目標地点に頂点座標を近づけていきたい場合などは、 E3DSetPos hsid, 0.0, 0.0, 0.0 E3DSetDir hsid, 0.0, 0.0, 0.0 でワールド変換が行われないようにした状態で、 E3DSetVertPosを使い、希望位置へ、 頂点座標をセットする。 などの、使用方法が、考えられます。 AddMotionを行った、モデルデータにも、 使用しないでください。 (使用しても、ハングしたりはしませんが、 あたり判定が、正確に行われません。) 具体的な使用例は、 zip中の、e3dhsp3_vertpos.hsp をご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号 3. [IN] 変数または、数値 : vertno 頂点の番号 4. [IN] 変数または、数値 : vertx 5. [IN] 変数または、数値 : verty 6. [IN] 変数または、数値 : vertz (vertx, verty, vertz )の座標を、 指定の頂点にセットします。 実数型の変数。 |
ver1.0.0.1 |
E3DSetPosOnGround | モデル位置 | E3DLoadGroundBMP、または、E3DLoadMQOFileAsGroundで作成した地面上の、適切な高さに、モデルデータを配置するための、関数です。 (posx, mapmaxy, posz)と、 (posx, mapminy, posz)を結ぶ線分と、 地面データとの交点を求めて、 その位置に、hsidのモデルデータを配置します。 交点が複数ある場合は、 (posx, mapmaxy, posz)から、一番近い交点が、選ばれます。 この命令を使う前に、少なくとも、一回は、 E3DChkInView groundid が、呼ばれていないと、ちゃんと動作しません。 (groundid部分には、配置する地面のhsidを入れてください。) 現バージョンではgroundidは、 E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGround で取得したものしか、使用できません。 |
1. [IN] 変数または、数値 : hsid 配置したい形状データを識別するid 2. [IN] 変数または、数値 : groundid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した地面を識別するid 3. [IN] 変数または、数値 : mapmaxy 地面データの高さの最大値 実数。 4. [IN] 変数または、数値 : mapminy 地面データの高さの最小値 実数。 5. [IN] 変数または、数値 : posx 6. [IN] 変数または、数値 : posz 地面の高さをYとすると、 (posx, Y,. posz)に、hsidのモデルデータを配置します。 実数。 |
ver1.0.0.1 |
E3DSetPosOnGroundPart | モデル位置 | 地面パーツを指定して、地面にオブジェクトを配置します。 パーツを指定すること以外は、 E3DSetPosOnGroundと同じです。 詳しくは、E3DSetPosOnGroundの説明をお読みください。 |
1. [IN] 変数または、数値 : hsid 配置したい形状データを識別するid 2. [IN] 変数または、数値 : groundid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した地面を識別するid 3. [IN] 変数または、数値 : groundpart 地面のパーツ番号を指定します。 E3DGetPartNoByNameで取得した番号を 指定してください。 4. [IN] 変数または、数値 : mapmaxy 地面データの高さの最大値 実数。 5. [IN] 変数または、数値 : mapminy 地面データの高さの最小値 実数。 6. [IN] 変数または、数値 : posx 7. [IN] 変数または、数値 : posz 地面の高さをYとすると、 (posx, Y,. posz)に、hsidのモデルデータを配置します。 実数。 |
ver1.0.0.1 |
E3DCreateBillboard | ビルボード | ビルボードを作成します。 1500個まで、ビルボードを作ることが出来ます。 billboardidに、作成したビルボードを識別する 番号が、代入されます。 billboardidは、 E3DSetBillboardPos, E3DSetBillboardOnGround, E3DDestroyBillboard, E3DChkConfBillboard の関数で、使用します。 billboardidは、hsidとは、全く異なるものなので、E3DSetPosなどの、hsidを使用する関数には、使えません。 E3DCreateBillboardでは、 transparentflagに、1をセットすれば、 黒色を透過色として、扱えます。 |
1. [IN] 文字列または、文字列変数 : filename ビルボードに貼り付けるテクスチャーのファイル名 2. [IN] 変数または、数値 : width ビルボードの幅。 実数。 3. [IN] 変数または、数値 : height ビルボードの高さ。 実数。 4. [IN] 変数または、数値 : transparentflag 1を指定すると、 テクスチャーの黒色(r = 0, g=0, b=0)を透過色として、 扱います。 0を指定すると、 テクスチャーファイルの、 アルファ値を元に、透過します。 5. [OUT] 変数 : billboardid 作成したビルボードを識別する番号が、代入されます。 6. [IN] 変数または、数値 : dirmode dirmodeに0を指定すると、 ビルボードは、Y軸に関してのみ、回転します。 地面に立っている木などに使用してください。 dirmodeの1を指定すると、 ビルボードは、全方向に回転します。 カメラの高さにかかわらず、カメラの方向を向かせたいもの 例えば、火や煙などに、使用してください。 7. [IN] 変数または、数値 : orgflag ビルボードの原点の位置を指定します。 orgflagに0を指定すると、 原点は、ビルボードの四角形の下の辺の中心になります。 地面に生やす木などの場合に、便利です。 orgflagに1を指定すると、 原点は、ビルボードの中心になります。 爆発などの、特殊効果に使う場合に、便利です。 |
ver1.0.0.1 |
E3DRenderBillboard | ビルボード | E3DCreateBillboard で作成されたビルボード全てを、 描画します。 各ビルボードは、 視線の方向を向くようにセットされます。 また、 視点から、遠い方から順番に、描画されます。 transskip引数の意味については E3DTransformBillboardの説明をお読みください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 変数または、数値 : transskip 描画準備の計算をスキップします。 E3DTransformBillboardを使った場合に使用します。 |
ver1.0.0.1 |
E3DSetBillboardPos | ビルボード | billboardidで識別されるビルボードの、位置を指定します。 |
1. [IN] 変数または、数値 : billboardid ビルボードを識別する番号 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz ビルボードの位置を、(posx, posy, posz) にセットします。 実数。 |
ver1.0.0.1 |
E3DSetBillboardOnGround | ビルボード | billboardidで識別されるビルボードの、位置を、指定したXZ座標の、地面の高さにセットします。 この命令を使う前に、少なくとも、一回は、 E3DChkInView groundid が呼ばれている必要があります。 (groundid部分には、配置する地面のhsidを入れてください。) 現バージョンではgroundidは、 E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGround で取得したものしか、使用できません。 |
1. [IN] 変数または、数値 : billboardid ビルボードを識別する番号 2. [IN] 変数または、数値 : groundid groundidで識別される地面の上に、 ビルボードが配置されます。 3. [IN] 変数または、数値 : mapmaxy 地面データの一番大きなY座標 実数。 4. [IN] 変数または、数値 : mapminy 地面データの一番小さなY座標 (通常0.0) 実数。 5. [IN] 変数または、数値 : posx 6. [IN] 変数または、数値 : posz (posx, mapmaxy, posz)と、(posx, mapminy, posz) と地面データとの交点を求めて、 地面上の適切な高さに、ビルボードを配置します。 実数。 |
ver1.0.0.1 |
E3DDestroyBillboard | ビルボード | billboardidで識別されるビルボードを、削除します。 |
1. [IN] 変数または、数値 : billboardid ビルボードを識別する番号 |
ver1.0.0.1 |
E3DLoadMQOFileAsGround | 地面 | mqo ファイルを地面データとして、読み込みます。 地面データを識別するidが、戻り値となります。 取得したid は、E3DChkConfGroundなどの関数で、使用できます。 |
1. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0 実数。 3. [OUT] 変数 : hsid 作成した地面を識別するhsidが代入されます。 4. [IN] 変数または、数値 : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 何も指定しないときは、0として扱われます。 2を指定すると0.0から1.0の間にクランプします。 5. [IN] 文字列または、文字列変数 : bonetype mqoにボーンが含まれている場合は ボーンのタイプを指定します。 BONETYPE_RDB2を指定するとRokDeBone2形式の 線分をボーンと認識するタイプになります。 BONETYPE_MIKOを指定すると mikoto形式のタイプになります。 省略するとBONETYPE_RDB2になります。 これらの定数はe3dhsp3.asで定義されています。 |
ver1.0.0.1 ver4.0.1.8で引数追加 ver5.0.5.4で拡張 |
E3DSaveMQOFile | モデルデータ | hsidで指定したモデルのデータを、mqoの形式で出力します。 地面データの出力などに、使用してください。 |
1. [IN] 変数または、数値 : hsid 出力するモデルのhsid 2. [IN] 文字列または、文字列変数 : filename 出力するファイル名 |
ver1.0.0.1 |
E3DGetBillboardInfo | ビルボード | 指定した番号の、ビルボード情報を、取得します。 ビルボードの番号には、 E3DCreateBillboardで取得した番号を、 指定してください。 texname には、256以上の大きさの バッファを指定してください。 例えば、 sdim texname, 256, 1 などで、確保した変数を、 指定してください。 |
1. [IN] 変数または、数値 : billboardid 情報を取得したいビルボードの番号。 E3DCreateBillboardで取得した番号を 指定してください。 2. [OUT] 変数 : posx 3. [OUT] 変数 : posy 4. [OUT] 変数 : posz ビルボードの座標が、 (posx, posy, posz)に代入されます。 実数型の変数。 5. [OUT] 変数 : texname ビルボードの、テクスチャファイル名が、 代入されます。 texname には、256以上の大きさのバッファを 指定してください。 例えば、sdim texname, 256, 1 などで、確保した変数を、指定してください。 6. [OUT] 変数 : transparent ビルボードの、透過モードが、代入されます。 transparent == 0 のときは、 ビルボードは、 テクスチャファイルのアルファ情報によって、 透過されます。 transparent == 1 のときは、 ビルボードは、 (R, G, B) == (0, 0, 0)を透過色として、処理されます。 7. [OUT] 変数 : width ビルボードの幅が、代入されます。 実数型の変数。 8. [OUT] 変数 : height ビルボードの高さが、代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DGetNearBillboard | ビルボード | 指定した座標に、一番近いビルボードのIDを取得します。 maxdist で指定した、距離より、遠いビルボードしか存在しない場合は、 IDに、-1 が代入されます。 |
1. [IN] 変数または、数値 : posx 2. [IN] 変数または、数値 : posy 3. [IN] 変数または、数値 : posz 位置座標を、(posx, posy, posz)で指定します。 実数。 4. [IN] 変数または、数値 : maxdist maxdistで、指定した距離より、 遠いビルボードしかない場合は、 nearbbidに-1が代入されます。 実数。 5. [OUT] 変数 : nearbbid (posx, posy, posz) に一番近く、 maxdistより近いビルボードのIDを代入します。 存在しない場合は、-1を代入します。 |
ver1.0.0.1 |
E3DGetInvisibleFlag | モデル情報 | hsidで識別されるモデルの、partnoのパーツのInvisibleFlag(見えないフラグ)を取得します。 InvisibleFlagが、1になっているパーツは、あたり判定は、行われますが、 表示はされません。 進入禁止区域との、境目に置く、見えないオブジェクトとして、使用することなどが、 考えられます。 partno には、E3DGetPartNoByNameで取得した番号を指定してください。 また、hsidに負の値を渡し、partnoに、ビルボードのid を渡すと、 ビルボードのInvisibleFlag を取得することが出来ます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID ビルボードのInvisibleFlagを取得する場合は、負の値 を渡してください。 2. [IN] 変数または、数値 : partno パーツの番号。 E3DGetPartNoByNameで取得した番号、 または、ビルボードのID。 3. [OUT] 変数 : flag 指定したパーツのInvisibleFlag が代入されます。 |
ver1.0.0.1 |
E3DSetInvisibleFlag | モデル情報 | hsidで識別されるモデルの、partnoのパーツのInvisibleFlag(見えないフラグ)をセットします。 partno には、E3DGetPartNoByNameで取得した番号を指定してください。 また、hsidに負の値を渡し、partnoに、ビルボードのid を渡すと、 ビルボードのInvisibleFlag をセットすることが出来ます。 InvisibleFlag == 0 のとき可視状態(デフォルト)で、 InvisibleFlag == 1 のとき、表示されず、あたり判定だけとなります。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID ビルボードのInvisibleFlagを取得する場合は、 負の値を渡してください。 2. [IN] 変数または、数値 : partno パーツの番号。 E3DGetPartNoByNameで取得した番号、 または、ビルボードのID。 3. [IN] 変数または、数値 : flag 指定したパーツのInvisibleFlag をセットします。 |
ver1.0.0.1 |
E3DSetMovableArea | 壁 | 移動可能領域を、BMPファイルから、自動生成します。 (色の付いた部分と、付いていない部分の 境界部分に、地面に垂直な、非表示の壁ポリゴンを生成します。) E3DChkConfWall 命令と併用すれば、 BMPで、濃い色を付けた部分のみ、移動できるようになります。 具体的な使用例は、zip中の、 e3dhsp3_wall.hsp をご覧ください。 メタセコイアデータで、 壁データを作りたい場合は、 メタセコイアのプラグイン、MakeWallをご使用ください。 (おちゃっこLABのトップページにリンクがあります。) |
1. [IN] 文字列または、文字列変数 : filename1 壁の座標情報の元となる、BMPファイル名 2. [IN] 変数または、数値 : maxx 壁のX座標の最大値 実数。 3. [IN] 変数または、数値 : maxz 壁のZ座標の最大値 実数。 4. [IN] 変数または、数値 : divx X方向の分割数 5. [IN] 変数または、数値 : divz Z方向の分割数 6. [IN] 変数または、数値 : wallheight 作成する壁の高さ 実数。 7. [OUT] 変数 : hsid 作成した壁データを識別する、ID |
ver1.0.0.1 |
E3DChkConfWall | 当たり判定 | E3DSetMovableArea, または、E3DLoadMQOFileAsMovableAreaで作成した壁データと、キャラクターのあたり判定を行います。 キャラクターの現在の座標と、E3DSetBeforePosで保存された古い座標とを結ぶ線分と、 壁の各ポリゴンとのあたり判定をします。 壁に沿って位置を移動するために 使用します。 壁の外側から内側へは移動できますが、内側から外側へは移動できないようにします。 具体的な使用例は、zip中の、 e3dhsp3_wall.hsp をご覧ください。 |
1. [IN] 変数または、数値 : charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値 : groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 3. [IN] 変数または、数値 : dist 跳ね返る距離。 distに大きな値を入れると、 ぶつかった際に大きく、跳ね返るようになります。 実数。 4. [OUT] 変数 : result あたり判定の結果が代入されます。 壁とぶつかった場合は、1が、 ぶつからなかった場合は、0が、代入されます。 5. [OUT] 変数 : adjustx 6. [OUT] 変数 : adjusty 7. [OUT] 変数 : adjustz result != 0 のときに、 修正後の座標が、 (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 8. [OUT] 変数 : nx 9. [OUT] 変数 : ny 10. [OUT] 変数 : nz result != 0 のときに、 ぶつかった面の法線ベクトルの値が 代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DChkConfWall2 | 当たり判定 | E3DSetMovableArea, または、E3DLoadMQOFileAsMovableAreaで作成した壁データと、キャラクターのあたり判定を行います。 befposで指定した座標と、 newposで指定した座標を結ぶ線分と、 壁の各ポリゴンとのあたり判定をします。 壁に沿って位置を移動するために 使用します。 壁の外側から内側へは移動できますが、内側から外側へは移動できないようにします。 |
1. [IN] 変数または、数値 : befposx 2. [IN] 変数または、数値 : befposy 3. [IN] 変数または、数値 : befposz 線分の始点を(befposx, befposy, befposz)で 指定します。 実数。 4. [IN] 変数または、数値 : newposx 5. [IN] 変数または、数値 : newposy 6. [IN] 変数または、数値 : newposz 線分の終点を(newposx, newposy, newposz)で 指定します。 実数。 7. [IN] 変数または、数値 : groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 8. [IN] 変数または、数値 : dist 壁からの距離の最小値。 distに大きな値を入れると、 ぶつかった際に大きく、跳ね返るようになります。 実数。 9. [OUT] 変数 : result あたり判定の結果が代入されます。 壁とぶつかった場合は、1が、 ぶつからなかった場合は、0が、代入されます。 10. [OUT] 変数 : adjustx 11. [OUT] 変数 : adjusty 12. [OUT] 変数 : adjustz result != 0 のときに、 修正後の座標が、 (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 13. [OUT] 変数 : nx 14. [OUT] 変数 : ny 15. [OUT] 変数 : nz result != 0 のときに、 ぶつかった面の法線ベクトルの値が、 代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DVec3Normalize | 算術 | 指定したベクトルを、正規化た値を取得します。 つまり、指定したベクトルの向きを持つ、 大きさ1のベクトルが、取得できます。 |
1. [IN] 変数または、数値 : vecx 2. [IN] 変数または、数値 : vecy 3. [IN] 変数または、数値 : vecz ベクトルを、(vecx, vecy, vecz)で指定します。 実数。 4. [OUT] 変数 : newvecx 5. [OUT] 変数 : newvecy 6. [OUT] 変数 : newvecz 向きが(vecx, vecy, vecz)で、 大きさが1な、ベクトルを、 (newvecx, newvecy, newvecz)に代入します。 実数型の変数。 |
ver1.0.0.1 |
E3DVec2CCW | 算術 | vec2 がvec1 に対して、反時計回りの時、 resultに、1を代入し、 時計回りの時、 resultに、-1を代入する。 |
1. [IN] 変数または、数値 : vecx1 2. [IN] 変数または、数値 : vecy1 vec1( vecx1, vecy1 )を指定する。 実数。 3. [IN] 変数または、数値 : vecx2 4. [IN] 変数または、数値 : vecy2 vec2( vecx2, vecy2 )を指定する。 実数。 5. [OUT] 変数 : result vec2 がvec1 に対して、反時計回りの時、 resultに、1を代入し、 時計回りの時、 resultに、-1を代入する。 |
ver1.0.0.1 |
E3DVec3RotateY | 算術 | ベクトルbefvecを、Y軸に関して、degy 度だけ回転したベクトルnewvec を取得します。 |
1. [IN] 変数または、数値 : befvecx 2. [IN] 変数または、数値 : befvecy 3. [IN] 変数または、数値 : befvecz 回転したいベクトルを、 (befvecx, befvecy, befvecz)で指定します。 実数。 4. [IN] 変数または、数値 : degy 回転角度を指定します。 degy の角度だけ回転します。 実数。 5. [OUT] 変数 : newvecx 6. [OUT] 変数 : newvecy 7. [OUT] 変数 : newvecz 回転後のベクトルが、 (newvecx, newvecy, newvecz)に代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DLoadMQOFileAsMovableArea | 壁 | メタセコイアの、MQOファイルで作成した壁のデータを、移動可能領域情報として、読み込みます。 メタセコイアで、データを作る場合には、次の2点に気を付けてください。 1.壁データは、常に、移動可能領域の内側を向くように、面の向きを設定してください。両面ポリゴンは、不可です。 2.壁データは、少しの隙間もないように、 作成してください。 自動的に壁データを作りたい場合は、 メタセコイアのプラグイン、MakeWallをご使用ください。 (おちゃっこLABのトップページにリンクがあります。) |
1. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値 : mult 形状データの座標に掛ける係数の数値。 座標値 * mult で計算されます。 等倍は1.0 実数。 3. [OUT] 変数 : hsid 作成した壁データを識別するhsidが代入されます。 |
ver1.0.0.1 |
E3DLoadSound | サウンド | 音のデータを読み込み、音を識別する番号、soundid、を取得します。 oggとwavを読み込めます。 oggはステレオのみ。 3Dサウンドにも対応しています。 3Dサウンドはモノラルのみです。 MIDIは読み込めません。 ver5.3.0.3でoggdatanum引数追加。 ver5.3.1.6でoggdatanum引数を削除(自動設定に変更) |
1. [IN] 文字列または、文字列変数 : filename 読み込む、サウンド ファイル名。 2. [OUT] 変数 : soundid 作成した音データを識別する番号が代入されます。 3. [IN] 変数または、数値 : use3dflag 3Dサウンドとして読み込む場合は1を指定してください。 デフォルト値は0です。 4. [IN] 変数または、数値 : reverbflag リバーブを有効にしたいときは1を したくないときは0を指定します。 5. [IN] 変数または、数値 : bufnum 同じIDのサウンドを同時にいくつ重ねて再生できるかを指定します。 |
ver1.0.0.1 ver5.3.0.0で仕様変更 ver5.3.0.3で拡張 ver5.3.1.6で修正 |
E3DPlaySound | サウンド | E3DLoadSoundで読み込んだ音データを再生します。 |
1. [IN] 変数または、数値 : soundid 再生したい音を識別する番号を、指定します。 2. [IN] 変数または、数値 : startsample 再生開始位置をサンプル(周波数)単位で指定します。 3. [IN] 変数または、数値 : openo 将来のバッチ処理用の引数です。 現在は0を指定しておいてください。 4. [IN] 変数または、数値 : numloops 繰り返し回数を指定します。 無限ループは255を指定します。 255以下でもあまり大きい値を指定するとハングすることがあります(255はハングしません)。 |
ver1.0.0.1 ver5.3.0.0で仕様変更 |
E3DStopSound | サウンド | 音の再生を停止します。 |
1. [IN] 変数または、数値 : soundid 停止したい音を識別する番号を、指定します。 |
ver1.0.0.1 ver5.3.0.0で仕様変更 |
E3DSetSoundVolume | サウンド | 音の音量を設定します。 |
1. [IN] 変数または、数値 : volume 実数。 ソース音量との比率を指定します。 2. [IN] 変数または、数値 : soundid 設定したい音を識別する番号を指定します。 -1を指定すると、全ての音の音量を設定できます。 何も設定しなかった場合は、-1と見なされます。 |
ver1.0.0.1 ver5.3.0.0で仕様変更 |
E3DDestroySound | サウンド | 読み込んだ音データを破棄します。 破棄した音は、その後、操作することは出来ません。 ただ、再生を終了させる場合は、 E3DStopSound関数を使用してくださ |
1. [IN] 変数または、数値 : soundid 破棄したい音を識別する番号 |
ver1.0.0.1 |
E3DSetSoundFrequency | サウンド | 音の周波数を設定します。 |
1. [IN] 変数または、数値 : soundid 設定したい音を識別する番号 -1を指定すると読み込み済みの全てのサウンドに対して処理します。 2. [IN] 変数または、数値 : freq 実数。 ソース周波数との比率を指定します。 |
ver1.0.0.1 ver5.3.0.0で仕様変更 ver5.3.4.1で拡張 |
E3DGetSoundVolume | サウンド | 現在の音量を取得します。 | 1. [IN] 変数または、数値 : soundid 音を識別する番号 2. [OUT] 変数 : vol 実数型の変数。 音量(ソース音量との比率)が代入されます。 |
ver1.0.0.1 ver5.3.0.0で仕様変更 |
E3DGetSoundFrequency | サウンド | 現在の周波数を取得します。 | 1. [IN] 変数または、数値 : soundid 音を識別する番号 2. [OUT] 変数 : freq 実数型の変数。 ソース周波数との比率が代入されます。 |
ver1.0.0.1 ver5.3.0.0で仕様変更 |
E3DSet3DSoundListenerMovement | サウンド | リスナーの位置と向きを設定します。 hsidにモデルデータの番号を渡した場合には、 そのモデルデータの位置と向きが、 リスナーの位置と向きとして設定されます。 hsidに-1を渡した場合には、 視点の位置と向きが、 リスナーの位置と向きとして設定されます。 一回呼び出せば、ずっと、hsidの更新情報を リスナーに反映させるわけではありません。 情報の更新が必要になるたびに、 呼び出してください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別する番号 -1のときは、視点をリスナーとします。 |
ver1.0.0.1 |
E3DSet3DSoundMovement | サウンド |
3Dサウンドの位置と速度を設定します。 E3DLoadSoundのuse3dflagに1を指定して 読み込んだサウンドのみに対し、有効です。 3Dサウンドの使用例は、 e3dhsp3_3Dsound.hsp をご覧ください。 |
1. [IN] 変数または、数値 : soundid 3Dサウンドを識別する番号 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz 3Dサウンドの位置を(posx, posy, posz)で指定します。 実数。 5. [IN] 変数または、数値 : vx 6. [IN] 変数または、数値 : vy 7. [IN] 変数または、数値 : vz 3Dサウンドの速度を(vx, vy, vz)で指定します。 実数。 |
ver1.0.0.1 |
E3DCreateNaviLine | ナビライン | ナビラインを作成します。 ナビラインとは、複数のナビポイントからなる、双方向リンクリストのことです。 ナビポイントとは、キャラクターの自動走行時に、位置を決める基準となるポイントのことです。 この関数が成功すると、 ナビラインを識別するためのID、nlidが得られます。 失敗すると、nlidに負の値が代入されます。 |
1. [OUT] 変数 : nlid 作成したナビラインを識別するためのIDが 代入されます。 |
ver1.0.0.1 |
E3DDestroyNaviLine | ナビライン | ナビラインを削除します。 | 1. [IN] 数値または、変数 : nlid 削除するラインを識別するID |
ver1.0.0.1 |
E3DAddNaviPoint | ナビライン | ナビラインに、ナビポイントを追加します。 成功すると、新しいナビポイントを識別するためのID、npid が得られます。 befnpidで指定したポイントの次の位置に 追加できる他、 先頭位置や、最後の位置にも追加することができます。 ナビポイントの編集には、 GViewer.exeを使うと便利です。 (おちゃっこLABでDL可能です。) |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : befnpid befnpidで指定したポイントの次の位置に、 新しいポイントを追加します。 befnpidに-1を指定すると、 ナビラインの最後に追加され、 befnpidに-2を指定すると、 ナビラインの先頭に追加されます。 3. [OUT] 変数 : npid 新しく追加したナビポイントのIDが代入されます。 |
ver1.0.0.1 |
E3DRemoveNaviPoint | ナビライン | ナビラインから、ナビポイントを削除します。 | 1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid 削除したいナビポイントのID |
ver1.0.0.1 |
E3DGetNaviPointPos | ナビライン | ナビポイントの座標を取得します。 | 1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [OUT] 変数 : posx 4. [OUT] 変数 : posy 5. [OUT] 変数 : posz ナビポイントの座標が、 (posx, posy, posz)に、代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DSetNaviPointPos | ナビライン | ナビポイントの座標をセットします。 この座標をもとに、 キャラクターが移動することになります。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : poxy 5. [IN] 数値または、変数 : posz ナビポイントの座標を (posx, posy, posz)に設定します。 実数。 |
ver1.0.0.1 |
E3DGetNaviPointOwnerID | ナビライン | ナビポイントのOwnerIDを取得します。 | 1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [OUT] 変数 : OwnerID ナビポイントのOwnerIDが代入されます。 |
ver1.0.0.1 |
E3DSetNaviPointOwnerID | ナビライン | ナビポイントのOwnerIDをセットします。 ナビポイントに、 排他的な、所有権を設定したいときなどに、 自由に、使用してください。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [IN] 変数 : OwnerID ナビポイントのOwnerIDに設定します。 |
ver1.0.0.1 |
E3DGetNextNaviPoint | ナビライン | npidで指定したナビポイントの、一つ後のナビポイントのIDを取得します。 ナビラインは、ナビポイントを、双方向リストで、格納しています。 一つ後のナビポイントが存在しない場合は、nextid には、負の値が代入されます。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [OUT] 変数 : nextid 一つ後のナビポイントのIDが代入されます。 npid に-1が指定されている場合は、 nextidには、先頭のナビポイントのIDが代入されます |
ver1.0.0.1 |
E3DGetPrevNaviPoint | ナビライン | npidで指定したナビポイントの、一つ前のナビポイントのIDを取得します。 ナビラインは、ナビポイントを、双方向リストで、格納しています。 一つ前のナビポイントが存在しない場合は、previd には、負の値が代入されます。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [OUT] 変数 : previd 一つ後のナビポイントのIDが代入されます。 |
ver1.0.0.1 |
E3DGetNearestNaviPoint | ナビライン | 指定した座標に、一番近いナビポイントのIDを取得します。 一番近いナビポイントの前後のポイントの IDも取得できます。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : posx 3. [IN] 数値または、変数 : posy 4. [IN] 数値または、変数 : posz (posx, posy, posz)に一番近いナビポイントを 探します。 実数。 5. [OUT] 変数 : nearid 一番近いナビポイントのIDが代入されます。 6. [OUT] 変数 : previd 一番近いナビポイントの前のポイントのIDが 代入されます。 7. [OUT] 変数 : nextid 一番近いナビポイントの次のポイントのIDが 代入されます。 |
ver1.0.0.1 |
E3DFillUpNaviLine | ナビライン | ナビポイントとナビポイントの間を、指定した分割数で、補間します。 Catmull-Romの公式で、補間します。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : div 何分割して補間するかを指定します。 3. [IN] 数値または、変数 : flag flagに1を指定すると、 チェインの順番にナビポイントのIDをふり直します。 |
ver1.0.0.1 |
E3DSetNaviLineOnGround | ナビライン | ナビライン中の全てのナビポイントの座標を、地面の高さに設定します。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : grounhdis 地面を識別するhsid 3. [IN] 数値または、変数 : mapmaxy 地面データのY座標の最大値を指定します。 実数。 4. [IN] 数値または、変数 : mapminy 地面データのY座標の最小値を指定します。 実際の最小値より、少し小さな値を入れてください。 実数。 |
ver1.0.0.1 |
E3DControlByNaviLine | ナビライン | ナビラインのデータを元に、キャラクターの位置と、向きを、自動的に設定するための関数です。 引数の、モードなどのパラメータを、 色々変化させることで、 一つのナビラインから、複数の(数え切れないくらいの)走行パターンを得ることが、 可能です。 具体的な使用例は、zip中の、 e3dhsp3_autorun.hsp をご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : nlid ラインを識別するID 3. [IN] 数値または、変数 : ctrlmode ビットの和で、モードを指定します。 ビット1が立っていた場合には、 位置を優先した制御が行われます。 引数maxdist, dirstep は無視されます。 出来るだけ、ナビポイントの近くを通るように なります。 ビット1が立っていない場合には、 向きを優先した制御が行われます。 dirstepで指定した角度より大きな角度では、 移動できなくなります。 ただし、そのままだと、キャラクターが、 ナビラインから、遠くに離れすぎてしまうので、 引数maxdistで、ナビラインからどのくらい離れても 良いかを指定します。 maxdistよりも、遠くに離れた場合には、 dirstepで指定したよりも、大きな角度で、 ナビラインに近づくように修正されます。 なので、dirstepに小さな値を指定すると、 ジグザグにナビラインをたどるようになります。 ビット4が立っていた場合には、 向きの設定は、XZ平面のみで行われます。 例えば、ctrlmode に5を指定した場合は、 位置を優先した制御で、XZ平面での向き設定をする ということになります。 4. [IN] 数値または、変数 : roundflag ナビラインの最後のナビポイントに移動した後、 ナビラインの最初のナビポイントの位置を 目指すかどうかを示します。 1を指定すると、円形のナビラインの場合は、 ずっと、ぐるぐる回ることになります。 5. [IN] 数値または、変数 : reverseflag 1を指定すると、 ナビラインのポイントを逆順にたどるようになります。 6. [IN] 数値または、変数 : maxdist ナビラインから、どのくらいまで離れても良いかを 指定します。 ctrlmodeのビット1が立っていない場合のみ有効です。 実数。 7. [IN] 数値または、変数 : posstep キャラクターを一度にどれくらいの距離を移動させるかを 指定します。 ただし、ナビポイント付近では、 posstepより小さな距離しか移動させないことがあります。 実数。 8. [IN] 数値または、変数 : dirstep 一度の移動で、最大何度まで回転できるかを 指定します。 回転角度の値を渡してください。 実数。 9. [OUT] 変数 : newposx 10. [OUT] 変数 : newposy 11. [OUT] 変数 : newposz 移動後の座標が(newposx, newposy, newposz)に 代入されます。 実数。 12. [OUT] 変数 : newqx 13. [OUT] 変数 : newqy 14. [OUT] 変数 : newqz 15. [OUT] 変数 : newqw 移動後の姿勢を表すクォータニオンの値が、 (newqx, newqy, newqz, newqw ) に代入されます。 実数。 16. [IN] [OUT] 変数 : targetpointid 現在目指しているナビポイントのIDを入れます。 移動後は、次に目指すべきナビポイントのIDが 代入されます。 ですので、一番最初の呼び出し時のみ、 自分でtargetpoinidを指定すれば、 あとは、同じ変数を渡すだけで、 自動的に、目指すべきポイントのIDが 代入されていくことになります。 targetpointidに、 存在しないナビポイントのIDを入れた場合は、 (例えば-1など) 自動的に、目指すべきナビポイントを決定します。 ですが、この場合、 向きを重視したモードのときに、 動きがぎこちなくなることがあるので、 なるべく、-1などは、使わない方が良いです。 |
|
E3DSetDirQ | モデル向き | 姿勢をクォータニオンで指定して、設定します。 E3DControlByNaviLineや、 E3DGetDirQ で得た姿勢データを 設定するときに、使用してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : qx 3. [IN] 数値または、変数 : qy 4. [IN] 数値または、変数 : qz 5. [IN] 数値または、変数 : qw 姿勢を表すクォータニオンの値を 指定してください。 実数。 |
ver1.0.0.1 |
E3DGetDirQ | モデル向き | 姿勢をクォータニオンの形式で、取得します。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : qx 3. [OUT] 変数 : qy 4. [OUT] 変数 : qz 5. [OUT] 変数 : qw 姿勢を表すクォータニオンの値が 代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DSetWallOnGround | 壁 | 壁データを地面の高さに配置します。 | 1. [IN] 数値または、変数 : whsid 壁の形状データを識別するID 2. [IN] 数値または、変数 : ghsid 地面の形状データを識別するID 3. [IN] 数値または、変数 : mapmaxy 地面データの最大の高さ 実数。 4. [IN] 数値または、変数 : mapminy 地面データの最低の高さ 実数。 5. [IN] 数値または、変数 : wheight 壁の高さ。 実数。 |
ver1.0.0.1 |
E3DCreateNaviPointClearFlag | ナビライン | キャラクターが、nlidで識別されるナビライン上の点を、どれだけ進んだかということを、格納するためのデータを作成します。 hsidで識別されるモデルのデータとして 作成します。 このデータは、レースの順位を決定するときなどに、役に立ちます。 この命令は、 E3DInitNaviPointClearFlag, E3DSetNaviPointClearFlag E3DGetOrder の命令を呼び出す前に、呼び出されていないといけません。 複数回、続けて呼び出してはいけません。 作り直したい場合は、必ず、 E3DDestroyNaviPointClearFlag を呼び出してから、 E3DCreateNaviPointClearFlag を呼び出してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : nlid ナビラインを識別するID 3. [IN] 数値または、変数 : roundnum ナビライン上を最大、何周するのかを指定します。 |
ver1.0.0.1 |
E3DDestroyNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータを破棄します。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID |
ver1.0.0.1 |
E3DInitNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータを初期化します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID |
ver1.0.0.1 |
E3DSetNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータに、現在どれだけのナビポイントを通過したかを、セットします。 キャラクターとナビポイントとの距離を元に、 データをセットします。 この関数を使う場合は、 毎フレーム、この関数を呼び出す必要があります。 この関数でセットしたデータを元に、 E3DGetOrderが順位を決定します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : posx 3. [IN] 数値または、変数 : posy 4. [IN] 数値または、変数 : posz キャラクターの位置を(posx, posy, posz)で指定します。 実数。 5. [IN] 数値または、変数 : maxdist ナビポイントとの距離がmaxdistより近かった場合、 そのポイントをクリアー(通過)したと見なします。 実数。 6. [OUT] 変数 : npidptr 現在クリアーしているポイントの内、 一番前方のポイントのIDが代入されます。 7. [OUT] 変数 : roundptr キャラクターが何週目かが、代入されます。 8. [OUT] 変数 : distptr npidptrに代入された、IDのポイントから、 どれだけ距離が離れているかが、代入されます。 |
ver1.0.0.1 |
E3DGetOrder | ナビライン | E3DSetNaviPointClearFlagでセットされたデータを元に、順位情報を取得するための関数です。 |
1. [IN] 変数 : hsidptr 順位を調べたい形状データを識別するIDの配列を 指定します。 arraylengの長さの配列でなくてはなりません。 例えば、 dim hsidptr, arrayleng という命令で、作成したデータを渡してください。 2. [IN] 数値または、変数 : arrayleng 配列の長さを指定します。 hsidptr, orderptr, clearnoptrは、 全て、arraylengの長さの配列でなくてはなりません。 3. [OUT] 変数 : orderptr 順位順に、hsidが代入されます。 orderptr(0) には、1位のhsidの番号が、 orderptr(1) には、2位のhsidの番号が代入されます。 4. [OUT] 変数 : clearnoptr 順位順に、クリアーしたポイントの数が代入されます。 clearnoptr(0) には、 1位のモデルがクリアーしたポイント数が、 clearnoptr(1) には、 2位のモデルがクリアーしたポイント数が 代入されます。 |
ver1.0.0.1 |
E3DDestroyAllBillboard | ビルボード | 全てのビルボードを破棄します。 | なし | ver1.0.0.1 |
E3DSetValidFlag | モデル情報 | RokDeBone2の ”このオブジェクトを無効にする”機能を、プログラムで行えるようにしました。 無効にしたパーツは、描画やあたり判定の際に、無視されるようになります。 ジョイントに対して、E3DSetValidFlagをした場合は、 E3DJointRemakeを呼び出してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードのフラグを設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツの有効、無効をセットできます。 3. [IN] 数値または、変数 : flag flagに0を指定すると、指定パーツが無効になります。 flagに1を指定すると、有効になります。 |
ver1.0.0.1 |
E3DSetDiffuse | モデル情報 | パーツのdiffuse色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 diffuseだけかえても、Specular, Ambientを変えないと、意図した色にはならないと思いますので、注意してください。 (E3DSetSpecular, E3DSetAmbient, E3DSetEmissive, E3DSetSpecularPowerもご覧ください。) 頂点単位で色の設定が出来ます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 7. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DSetSpecular | モデル情報 | パーツのspecular色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 頂点単位で色の設定が出来ます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 7. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DSetAmbient | モデル情報 | パーツのambient色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 頂点単位で色の設定が出来ます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 7. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DSetBlendingMode | 描画パラメータ | ビルボードとスプライトの半透明モードを指定します。 加算モードと、頂点アルファ値による半透明モードの2つから選べます。 ver2.0.0.5で、加算モードその2が増えました。 ver5.0.5.0で乗算、減算、スクリーン、ネガ反転モードが増えました。 ver5.1.0.1でオーバーレイ風、覆い焼き風モードが増えました。 sigモデルデータの半透明モードの設定は E3DSetMaterialBlendingModeをお使いください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードのモードを設定できます。 -2を指定すると、スプライトの設定が出来ます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 hsidに-2を指定した場合は、 E3DCreateSpriteで取得した、 スプライトのidを渡してください。 partnoに-1を渡すと、 全てのパーツにモードをセットできます。 3. [IN] 数値または、変数 : blendmode 0を指定すると、 頂点アルファ値による半透明モードになります。 1を指定すると、 アッドモードになります。 2を指定すると、 頂点アルファを考慮したアッドモードになります。 103を指定すると乗算モード。 104を指定すると減算モード。 105を指定するとスクリーンモード。 106を指定するとネガ反転モードになります。 107を指定するとオーバーレイ風合成モード。 108を指定すると覆い焼き風モードになります。 |
ver1.0.0.1 ver2.0.0.5で拡張 ver5.0.5.0で拡張 ver5.1.0.1で拡張 |
E3DSetRenderState | 描画パラメータ | パーツごとに、RenderStateを設定できます。 描画の度に呼ぶ必要はありません。 一度呼べば、描画時に、自動的に、設定されます。 上級者向けの関数です。 詳しくは、DirectXのヘルプの SetRenderStateをご覧ください。 D3DRS_ALPHABLENDENABLE は、E3DRenderのwithalpha引数を元に、 自動的に呼び出すようにしているので、 このタイプは指定しても、反映されません。 また、オリジナルの頂点計算を行っているため、設定しても、効果のないものも、多くあります。 statetypeは、zip中の、 e3dhsp3.as で、D3DRSで始まる定数として宣言していますので、 このファイルの定数を使用してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードのステートを設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツにステートをセットできます。 3. [IN] 数値または、変数 : statetype 設定するタイプを指定してください。 e3dhsp3.as中の定数を使用してください。 4. [IN] 数値または、変数 : value 設定する値を指定してください。 |
ver1.0.0.1 |
E3DSetScale | モデル情報 | パーツ単位で、形状を拡大、縮小できます。 特殊効果用を想定していますので、 地面データには使用できません。 倍率は、形状データ読み込み時の大きさに対する比率です。 その時点で、表示されている大きさに対する比率ではないので、注意してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードのスケールを設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツにスケールをセットできます。 3. [IN] 数値または、変数 : scalex 4. [IN] 数値または、変数 : scaley 5. [IN] 数値または、変数 : scalez X,Y,Zのそれぞれの倍率を指定します。 それぞれ、 scalex、 scaleyt、 scalez 倍されます。 等倍は1.0。 実数。 6. [IN] 数値または、変数 : centerflag 拡大縮小する際の中心を指定します。 0を指定すると、 hsidで指定したモデル全体の中心を拡大の中心とします。 1を指定すると、 それぞれのパーツの中心を拡大の中心とします。 2を指定すると、 原点を拡大の中心とします。 |
ver1.0.0.1 |
E3DGetScreenPos | モデル情報 | 形状データの画面上での2Dの座標を取得する関数です。 パーツ単位、モデル単位、ビルボード単位で 使用できます。 頂点単位での2D座標を取得できます。 3Dキャラクターの位置に、2Dのスプライトを表示する、などの用途に使えます。 E3DChkInViewより後で、呼び出してください。 具体的な使用例は、zip中の、 e3dhsp3_screenpos.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの2D位置を取得できます。 3. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 モデル全体の中心座標の2D座標を 取得できます。 4. [OUT] 変数 : scx 5. [OUT] 変数 : scy 指定したパーツの2Dスクリーン座標が代入されます。 整数。 ただし、以下の場合には、 scx = -1, scy = -1が代入されます。 1,パーツが表示用オブジェクトではない場合 2,パーツ全体が画面外にある場合 3,パーツのディスプレイスイッチがオフの場合 4,パーツが無効になっていた場合 (E3DSetValidFlagで0を指定した場合) 6. [IN] 数値または、変数 : vertno 取得したい頂点の番号を指定します。 この引数を省略した場合や、-1を指定した場合は、 パーツの中心の2D座標を取得します。 7. [IN] 数値または、変数 : calcmode 計算モードを指定します。 1を指定すると、 新しいキャラクターの位置や、カメラの位置で、 新たに計算し直します。 0を指定すると、 calcmode 1 で、すでに計算した結果を取得します。 0を指定した方が、処理が軽く、高速です。 |
ver1.0.0.1 |
E3DGetScreenPos2 | モデル情報 | 任意の3D座標から、スクリーン(2D)座標を取得する関数。 ラインの点の位置や、ボーンの位置に スプライトを表示したりできます。 #表示オブジェクトの頂点や、 パーツの中心の2D座標を取得する場合は、 既にある、E3DGetScreenPosをご利用ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 変数または、数値 : x3d 3. [IN] 変数または、数値 : y3d 4. [IN] 変数または、数値 : z3d 3D座標を、(x3d, y3d, z3d)に指定してください。 実数。 5. [OUT] 変数 : x2d 6. [OUT] 変数 : y2d 7. [OUT] 変数 : validflag 変換後の2D座標が、(x2d, y2d)に代入されます。 整数型の変数。 2D座標が、スクリーンの大きさの内側にあるかどうかは、 ユーザーさんがチェックしてください。 指定した3D座標が、カメラより後ろにある場合や、 見えないくらい遠いところにある場合には、 validflag に 0 が代入されます。 validflagに0が代入されているときの、(x2d, y2d)座標は、 意味のない値が入っています。 |
ver1.0.0.1 |
E3DCreateQ | 算術 | クォータニオンを作成し、操作用のid を取得します。 クォータニオンの各操作には、 この関数で取得した qidを使用します。 クォータニオンを知らない方は、 とりあえず、 姿勢情報 (回転情報)を格納できる 便利なもの、 とくらいに、考えておいてください。 モーションポイントや、モデルなどに、 クォータニオンをセットすることにより、 任意の姿勢を持たせることが出来ます。 作成方法は、工夫してみましたが、 それほど、高速ではありません。 この関数は、メインループの外で、 あらかじめ呼んでおくことが、 望ましいです。 |
1. [OUT] 変数 : qid 新しいクォータニオンを作成し、 そのクォータニオンを、 一意に識別する番号を qid に代入します。 クォータニオン操作関数に、 この番号を渡して使用してください。 |
ver1.0.0.1 |
E3DDestroyQ | 算術 | クォータニオンを削除します。 この関数に渡したqidは、使用できなくなります。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DInitQ | 算術 | クォータニオンを初期化します。 姿勢情報が、初期化されます。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DSetQAxisAndDeg | 算術 | クォータニオンを、指定した軸に関して、指定した角度だけ回転した姿勢をセットします。 既に、qidにセットしてある姿勢情報は、 上書きされます(無視されます)。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : axisx 3. [IN] 数値または、変数 : axisy 4. [IN] 数値または、変数 : axisz 回転の軸のベクトルを、 (axisx, axisy, axisz)に指定します。 軸のベクトルは、内部で正規化されます。 実数。 5. [IN] 数値または、変数 : deg 指定した軸に関して、 deg度だけ回転した姿勢をセットします。 実数。 |
ver1.0.0.1 |
E3DGetQAxisAndDeg | 算術 | クォータニオンにセットされている姿勢情報を解析します。 回転軸と、回転角度が得られます。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [OUT] 変数 : axisxptr 3. [OUT] 変数 : axisyptr 4. [OUT] 変数 : axiszptr 回転の軸のベクトルを、 (axisxptr, axisyptr, axiszptr)に代入します。 実数型の変数。 5. [OUT] 変数 : degptr 回転角度を代入します。 実数型の変数。 |
ver1.0.0.1 |
E3DRotateQX | 算術 | クォータニオンの姿勢情報を、X軸に関して回転します。 既に、qidにセットしてある姿勢情報に対して、 さらに、X軸回転することになります。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : deg X軸に関して、deg度だけ回転します。 実数。 |
ver1.0.0.1 |
E3DRotateQY | 算術 | クォータニオンの姿勢情報を、Y軸に関して回転します。 既に、qidにセットしてある姿勢情報に対して、 さらに、Y軸回転することになります。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : deg Y軸に関して、deg度だけ回転します。 実数。 |
ver1.0.0.1 |
E3DRotateQZ | 算術 | クォータニオンの姿勢情報を、Z軸に関して回転します。 既に、qidにセットしてある姿勢情報に対して、 さらに、Z軸回転することになります。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : deg Z軸に関して、deg度だけ回転します。 実数。 |
ver1.0.0.1 |
E3DMultQ | 算術 | クォータニオンの掛け算をします。 例えば、 qid1にX軸に関して30度回転する姿勢が格納されていて、 qid2には、Y軸に関して20度回転する姿勢が格納されていたとします。 このとき、 E3DMultQ qid3, qid1, qid2 という命令を呼んだとします。 すると、 qid3には、 X軸に関して30度回転した後に、 さらにY軸に関して20度回転した姿勢情報が 格納されます。 気を付けなければいけないのは、 E3DMultQ qid3, qid1, qid2 と E3DMultQ qid3, qid2, qid1 では、qid3に格納される姿勢情報が異なる ということです。 2番目の引数に指定した回転の後に、 3番目の引数に指定した回転を適用するからです。 回転の順番によって、結果が異なるのは、 覚えておいてください。 後から処理したい方を、3番目の引数に いれれば、OKです。 |
1. [IN] 数値または、変数 : resqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidのクォータニオンに結果が代入されます。 2. [IN] 数値または、変数 : befqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 3. [IN] 数値または、変数 : aftqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 befqidの回転の後に、aftqidの回転をした結果を、 resqidで識別されるクォータニオンに代入します。 |
ver1.0.0.1 |
E3DNormalizeQ | 算術 | クォータニオンを正規化します。 様々なクォータニオンの操作を、 とてつもない回数繰り返していると、 計算誤差などで、 クォータニオンの情報がおかしくなることがあります。 例えば、E3DRotateQXをメインループで、 延々と繰り返す場合などに、 ひょっとしたら、不具合が出るかもしれません。 そんなときは、 ある程度の回数ごとに、 この関数を呼んでください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DCopyQ | 算術 | srcqidで識別されるクォータニオンの情報を、dstqidで識別されるクォータニオンにコピーします。 |
1. [IN] 数値または、変数 : dstqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : srcqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DGetBoneNoByName | モデル情報 | 指定した名前を持つボーンを識別するidを取得します。 該当するボーンが見つからなかった場合は、 bonenoに-1が代入されます。 ボーン以外の名前を指定した場合も、 bonenoに-1が代入されます。 複数のパーツやボーンに、 同じ名前があった場合、 一番最初に見つかった物のidだけしか 取得できません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 文字列または、文字列の変数 : bonename ボーンの名前を渡してください。 3. [OUT] 変数 : boneno ボーンを識別するID |
ver1.0.0.1 |
E3DGetNextMP | モーション | モーションポイントを識別するidを取得します。 モーションポイントとは、 RokDeBone2のモーションダイアログ中の、 下の方に白い長いウインドウがありますが、 その中に表示されている、 点のことだと思ってください。 モーションポイントは、 ユーザーさんがIKで設定した姿勢を 保持しています。 モーションポイントは、ボーンごとに作られています。 気を付けて欲しいのは、 RokDeBone2で、白いウインドウ中に 点が表示されていないフレーム番号には、 モーションポイントは存在しないということです。 モーションポイントが無いフレーム番号の姿勢は どうなっているかというと、 計算で、求めています。 モーションポイントは、フレーム番号の小さい順に、格納されています。 E3DGetNextMPは、prevmpidで指定した モーションポイントのフレーム番号を見て、 そのフレーム番号の次に大きいフレーム番号を持つモーションポイントのidを取得します。 prevmpidに-1を指定すると、 一番小さいフレーム番号を持つ、モーションポイントのidが取得できます。 prevmpidのモーションポイントが持つフレーム番号より、大きいフレーム番号を持つモーションポイントが存在しない場合は、 mpidに-1が代入されます。 つまり、取得したmpidを prevmpidに指定して、 再びE3DGetNextMPを呼び出す、 という作業を、 mpidに-1が代入されるまで、繰り返せば、 フレーム番号の小さい順に、 全てのモーションポイントのidが取得出来る ということになります。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : prevmpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 -1を指定すると、一番小さなフレーム番号を持つ モーションポイントのidがmpidに代入されます。 5. [OUT] 変数 : mpid mpidに、prevmpidの次に大きいフレーム番号を持つ モーションポイントのidが代入されます。 |
ver1.0.0.1 |
E3DGetMPInfo | モーション | mpinfoで指定した配列に、 情報が代入されます。 情報は12(MPI_MAX)種類です mpinfoには、 dim mpinfo, MPI_MAX で作成した配列を指定してください。 MPI_で始まる定数は、 e3dhsp3.asで、定義されています。 mpinfo(MPI_QUA)は、クォータニオン情報 mpinfo(MPI_TRAX)は、X方向の移動量の情報 mpinfo(MPI_TRAY)は、Y方向の移動量の情報 mpinfo(MPI_TRAZ)は、Z方向の移動量の情報 mpinfo(MPI_FRAMENO)は、フレーム番号の情報 mpinfo(MPI_DISPSWITCH)は、 ディスプレイスイッチの情報 mpinfo(MPI_INTERP)は、補間計算方法の情報 mpinfo(MPI_SCALEX)は、X方向の拡大情報 mpinfo(MPI_SCALEY)は、Y方向の拡大情報 mpinfo(MPI_SCALEZ)は、Z方向の拡大情報 mpinfo(MPI_USERINT1)は、ユーザーデータの情報 mpinfo(MPI_SCALEDIV)は、拡大率の係数情報 として、使用されます。 mpinfo(MPI_QUA)には、 E3DCreateQで取得したqidを、 この関数の呼び出し前に、セットしておく必要があります。 mpinfo(MPI_QUA)に格納されているqidで 識別されるクォータニオンに、 モーションポイントの姿勢情報が代入されます。 mpinfo(MPI_DISPSWITCH)の ディスプレイスイッチ情報は、ビットごとの和になっています。 ディスプレイスイッチ番号ds がオンの場合は、 2のds乗の値が足されていることになります。 例えば、ディスプレイスイッチ3だけがオンの場合は、2の3乗の8という値が代入されています。 mpinfo(MPI_INTERP)の 補間計算方法の情報は、 mpidで識別されるモーションポイントと、 その次に大きいフレーム番号を持つモーションポイントの間の、補間計算方法を示しています。 0の時は、球面線形補間 1の時は、スプライン補間 となります。 現バージョンでは、 スプライン補間は、大きな角度の補間時には 使用できません。 (望ましい結果が得られません) ですので、 急激に変化することがあるかもしれない モーションポイント間の補間計算には、 球面線形補間を使用することを、 おすすめします。 拡大率は、MPI_SCALEDIVで割った値が 適用されています。 例えば、X軸方向の拡大率は、 mpinfo(MPI_SCALEX) / mpinfo(MPI_SCALEDIV) です。 小数点以下をセットできるように、 MPI_SCALEDIVが用意されています。 具体的な使用例は、 e3dhsp3_motionpoint.hsp をご覧ください。 |
・引数 1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : mpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 5. [IN][OUT] 長さMPI_MAXの配列 : mpinfo モーションポイントの情報を格納する配列。 mpinfo(MPI_QUA)だけは、呼び出し前に、 あらかじめ設定しておく必要があります。 mpinfo(MPI_QUA)で識別されるクォータニオンに モーションポイントの姿勢情報が 代入されることになります。 |
ver1.0.0.1 |
E3DSetMPInfo | モーション | mpidで識別されるモーションポイントに情報をセットします。 mpinfo、mpinfoflagには、それぞれ dim mpinfo, MPI_MAX dim mpinfoflag, MPI_MAX で作成した配列を使用してください。 mpinfoにあらかじめセットされている情報を、 mpidで識別されるモーションポイントに、 設定します。 mpinfoの、どの成分に、 何の情報をセットすれば良いかは E3DGetMPInfoをご覧ください。 mpinfoflagは、部分的に情報をセットできるようにするために、使用します。 mpinfoflag(MPI_QUA)が1の場合は、 mpinfo(MPI_QUA)のクォータニオン情報を モーションポイントにセットします。 mpinfoflag(MPI_TRAX)が1の場合は、 mpinfo(MPI_TRAX)のX方向の移動量情報を モーションポイントにセットします。 以下同様に、 mpinfoflag(MPI_QUA) 〜mpinfoflag(MPI_SCALEDIV) までに、セットしたい項目に1を、 セットしたくない項目に0を指定してください。 具体的な使用例は、zip中の、 e3dhsp3_motionpoint.hsp に書いてありますので、 ご覧ください。 モーションポイントに情報をセットしただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : mpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 5. [IN] 長さMPI_MAXの配列 : mpinfo モーションポイントの情報を格納する配列。 6. [IN] 長さMPI_MAXの配列 : mpinfoflag mpinfoのどの成分を有効にするのかを、 mpinfoflagの各成分で指定します。 |
ver1.0.0.1 |
E3DIsExistMP | モーション | framenoで指定したフレーム番号に、モーションポイントがあるかどうかを調べます。 見つかった場合は、 mpidに、モーションポイントのidが代入され、 無かった場合は、 -1が代入されます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : frameno モーションポイントがあるかどうか、 調べたいフレーム番号を指定します。 5. [OUT] 変数 : mpid モーションポイントを識別するID framenoが示すフレーム番号に、 モーションポイントがあった場合は、 そのモーションポイントのidが代入されます。 無かった場合は、-1が代入されます。 |
ver1.0.0.1 |
E3DGetMotionFrameLength | モーション | motidで識別されるモーションのフレーム数を取得します。 気を付けて欲しいのは、 フレーム番号は、0から始まるので、 最大のフレーム番号は、 leng - 1 だということです。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [OUT] 変数 : leng モーションのフレーム数が代入されます。 |
ver1.0.0.1 |
E3DSetMotionFrameLength | モーション | モーションのフレーム数をframelengに変更します。 framelengが、変更前のフレーム数より小さかった場合は、 frameleng - 1より大きなフレーム番号を持つ モーションポイントは、削除されます。 あたり判定情報や、視野内判定情報が 削除されます。 再構築したい場合は、 initflagに1を指定してください。 しなくてもいい、もしくは、後でする場合は、 0を指定してください。 あたり判定情報と、視野内判定情報は、 E3DFillUpMotion呼び出し時の initflagに1を指定することでも、 再構築できます。 再構築の計算は、時間がかかります。 ポーズの情報も、削除されます。 再構築する場合には、 E3DFillUpMotionを呼んでください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : frameleng モーションのフレーム数を指定します。 4. [IN] 数値または、変数 : initflag あたり判定情報と、視野内判定情報を 再構築する場合は1を、 しない場合は0を指定してください。 |
ver1.0.0.1 |
E3DAddMP | モーション | mpinfoで指定した情報を持つモーションポイントを、新たに作成し、作成したモーションポイントを識別するidを取得します。 mpinfoには、 dim mpinfo, MPI_MAX で作成した配列を使用してください。 mpinfoの、どの成分に、 何の情報をセットすれば良いかは E3DGetMPInfoをご覧ください。 mpinfo(MPI_FRAMENO)で指定したフレーム番号に、 既に、モーションポイントが存在する場合は、エラーになりますので、 注意してください。 (呼び出し前にE3DIsExistMPで、 チェックすると確実です。) モーションポイントに情報をセットしただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 要素数MPI_MAXの配列 : mpinfo モーションポイントの情報を格納する配列。 5. [OUT] 変数 : mpid 新たに作成したモーションポイントを識別するidが 代入されます。 |
ver1.0.0.1 |
E3DDeleteMP | モーション | mpidで識別されるモーションポイントを削除します。 この関数に渡したmpidは、 以後、使えなくなります。 モーションポイントの情報を更新しただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : mpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 |
ver1.0.0.1 |
E3DFillUpMotion | モーション | モーションを指定したフレーム番号分だけ、補間計算します。 この計算の結果、 モデルのポーズに、モーションポイントの情報が、反映されるようになります。 bonenoで指定したボーンと、 その全ての子供ボーンの計算が行われます。 そのため、 変更したボーンの内で、 一番親のボーンの番号で、 1回だけこの関数を呼び出せば、 良いことになります。 具体的な使用例は、zip中の、 e3dhsp3_fillupmotion.hsp に書きましたので、 ご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 bonenoで指定したボーンと その子供ボーン全てのポーズを計算します。 boneno に -1を指定した場合は、 全てのボーンの計算が行われます。 ですが、 bonenoを指定した方が、 計算量が少なくなります。 4. [IN] 数値または、変数 : startframe 5. [IN] 数値または、変数 : endframe フレーム番号が、 startframeから、endframeまでの間の モデルのポーズを計算します。 startframeとendframeには、 モーションポイントが存在しなくても、 計算可能です。 endframeに-1を指定した場合は、 startrframeから、最後のフレームまで 計算されます。 6. [IN] 数値または、変数 : initflag 過去のバージョンと互換性を取るための引数です。 0を指定してください。 |
ver1.0.0.1 |
E3DCopyMotionFrame | モーション | srcmotidで識別されるモーションの、フレーム番号srcframenoの、全てのモーションポイントの情報を、dstmotidで識別されるモーションの、フレーム番号dstframenoのモーションポイントへ、コピーします。 dstframenoに、モーションポイントが無い場合は、作成されます。 srcframenoにモーションポイントが無い場合は、 計算で求めて、dstframenoにコピーします。 この場合、計算時間が、余分にかかります。 モーションポイントに情報をセットしただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : srcmotid コピー元のモーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : srcframeno コピー元のフレーム番号 4. [IN] 数値または、変数 : dstmotid コピー先のモーションを識別するID E3DAddMotionで取得したmkを指定してください。 5. [IN] 数値または、変数 : dstframeno コピー先のフレーム番号 |
ver1.0.0.1 |
E3DGetDirQ2 | モデル向き | E3DGetDirQをqidで操作できるようにしたものです。 qidで指定したクォータニオンに、 モデルデータの姿勢情報が、 格納されます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN][OUT] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DSetDirQ2 | モデル向き | E3DSetDirQをqidで操作できるようにしたものです。 qidで識別されるクォータニオンの 姿勢情報を、 モデルデータにセットします。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DLookAtQ | 算術 | 指定した向きを、徐々に向くための姿勢情報を、クォータニオンにセットします。 この関数は、この関数の呼び出し前の クォータニオンの姿勢情報も、計算に使用します。 ですので、 qidには、一回前にこの関数を呼び出したときと、同じqidが渡されるものと仮定しています。 qidを他のボーンの姿勢情報などの計算の際に、使い回ししている場合は、 計算したいボーンの姿勢情報を、 呼び出し前に、 E3DCopyQなどで、コピーしておいてください。 (basevecx, basevecy, basevecz)のベクトルを (vecx, vecy, vecz)の方向に向ける計算をします。 キャラクター全体の姿勢の制御をする場合は、 basevecには、初期状態の向き、 つまり、(0, 0, -1)を与えれば、よいことになります。 ボーンの姿勢を制御する場合には、 初期状態のボーンの向き つまり、ボーンの座標から、親ボーンの座標を 引いたものを、basevecに与えれば、 よいことになります。 (vecx, vecy, vecz)には、 向きたい位置座標から、 自分の位置座標を引いたものを、 与えてください。 upflagの値によって、4つのモードがあります。 upflag == 0 のときは、 上向き方向が、常にY軸上方を向くように 制御されます。 upflag == 1 のときは、 上向き方向が、常にY軸下方を向くように 制御されます。 upflag == 2 のときは、 上向き方向が、連続した向きをとるように、 制御されます。 その結果、宙返りが可能となります。 upflag == 3 のときは、 上向き方向を、特に制御しません。 上向き方向は、連続した向きをとりますが、 その方向は、拘束されません。 飛行機の制御などに、upflag 2を使用し、 人型キャラなどの制御に、upflag 0 を使用する ことを、おすすめします。 upflag == 0とupflag== 1のときには、 真上と真下を向かないようにしてください。 upflag == 2とupflag==3のときは、 真上と真下を向いても、大丈夫です。 divnum引数に、分割数を指定します。 現在の位置と、目標地点との間の間隔を 1 / divnum ずつ、内分して、近づきます。 具体的な使用例は、 e3dhsp3_lookatq.hsp に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 指定した方向を向くための情報が、 格納されます。 2. [IN] 数値または、変数 : vecx 3. [IN] 数値または、変数 : vecy 4. [IN] 数値または、変数 : vecz (vecx, vecy, vecz)に、 向きたい向きのベクトルを指定してください。 位置ではなくて、向きを指定してください。 実数。 5. [IN] 数値または、変数 : basevecx 6. [IN] 数値または、変数 : basevecy 7. [IN] 数値または、変数 : basevecz (basevecx, basevecy, basevecz)に、 初期状態の向きを指定してください。 実数。 8. [IN] 数値または、変数 : upflag 上方向の制御モードを指定してください。 9. [IN] 数値または、変数 : divnum 内分する割合を指定してください。 大きな値をいれるほど、 細かく動きます。 |
ver1.0.0.1 |
E3DMultQVec | 算術 | (befvecx, befvecy, befvecz)というベクトルに対して、qidで識別されるクォータニオンによる回転をした後のベクトルを、(aftvecx,
aftvecy, aftvecz)に代入します。 例えば、初期状態で、-Z方向を向いている モデルの場合、 qidに、E3DGetDirQ2呼び出しに使用した qidを渡し、 basevecに、(0, 0, -1)を渡せば、 aftvecに、現在、キャラクターが向いている向きが代入されます。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの 回転変換をします。 2. [IN] 数値または、変数 : befvecx 3. [IN] 数値または、変数 : befvecy 4. [IN] 数値または、変数 : befvecz (befvecx, befvecy, befvecz)に、 回転前のベクトルを指定してください。 実数。 5. [OUT] 変数 : aftvecx 6. [OUT] 変数 : aftvecy 7. [OUT] 変数 : aftvecz (aftvecx, aftvecy, aftvecz)に、 クォータニオンでの回転後のベクトルが 代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DTwistQ | 算術 | クォータニオンに、ねじりを加えます。 basevecには、E3DLookAtQで説明したのと 同じ、初期状態の向きを指定してください。 ねじりの角度は、初期状態からの角度ではなく、現在の姿勢に、追加したい分だけの、 ねじりの角度を、指定してください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 指定した方向を向くための情報が、 格納されます。 2. [IN] 数値または、変数 : twistdeg twistdeg 度だけ、ねじりを加えます。 実数。 3. [IN] 数値または、変数 : basevecx 4. [IN] 数値または、変数 : basevecy 5. [IN] 数値または、変数 : basevecz (basevecx, basevecy, basevecz)に、 初期状態の向きを指定してください。 E3DLookAtQで指定したのと同じbasevecを指定してください。 実数。 |
ver1.0.0.1 |
E3DInitTwistQ | 算術 | E3DTwistQで与えた、ねじれを、初期化します。 basevecには、E3DLookAtQで説明したのと 同じ、初期状態の向きを指定してください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの ねじれを初期化します。 2. [IN] 数値または、変数 : basevecx 3. [IN] 数値または、変数 : basevecy 4. [IN] 数値または、変数 : basevecz (basevecx, basevecy, basevecz)に、 初期状態の向きを指定してください。 E3DLookAtQで指定したのと同じbasevecを指定してください。 実数。 |
ver1.0.0.1 |
E3DGetTwistQ | 算術 | E3DTwistQで与えた、ねじれの角度の合計を取得します。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの ねじれを取得します。 2. [OUT] 変数 : twist ねじれ角度の合計の値を、 代入します。 実数型の変数。 |
ver1.0.0.1 |
E3DRotateQLocalX | 算術 | クォータニオンを、ローカルなX軸に関して、回転します。 現在の姿勢に対して、更に、回転します。 E3DRotateQXと違うのは、 姿勢変換を行う前のX軸に関して、 回転できる点です。 使用例は、e3dhsp3_motionpoint.hspに書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] 数値または、変数 : deg deg 度だけ、回転を加えます。 実数。 |
ver1.0.0.1 |
E3DRotateQLocalY | 算術 | クォータニオンを、ローカルなY軸に関して、回転します。 現在の姿勢に対して、更に、回転します。 E3DRotateQYと違うのは、 姿勢変換を行う前のY軸に関して、 回転できる点です。 使用例は、e3dhsp3_motionpoint.hspに書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] 数値または、変数 : deg deg 度だけ、回転を加えます。 |
ver1.0.0.1 |
E3DRotateQLocalZ | 算術 | クォータニオンを、ローカルなZ軸に関して、回転します。 現在の姿勢に対して、更に、回転します。 E3DRotateQZと違うのは、 姿勢変換を行う前のZ軸に関して、 回転できる点です。 使用例は、e3dhsp3_motionpoint.hspに書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] 数値または、変数 : deg deg 度だけ、回転を加えます。 |
ver1.0.0.1 |
E3DGetBonePos | モデル情報 | ボーンの位置情報を取得します。 poskind == 0のときは、ローカル座標(ボーン変形なし) poskind == 1のときは、グローバル座標 poskind == 2のときは、ローカル座標(ボーン変形あり) が取得できます。 bonenoには、E3DGetBoneNoByName で取得した番号を指定してください。 マルチレイヤーモーションを使用する場合は、 この命令は使えません。 E3DGetCurrentBonePosをお使いください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 3. [IN] 数値または、変数 : poskind ローカル座標と、グローバル座標の どちらを取得するかを指定します。 4. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 5. [IN] 数値または、変数 : frameno モーションのフレーム番号を指定してください。 E3DSetNewPose呼び出し時に、現在のフレーム番号が取得できるので、 参考にしてください。 6. [OUT] 変数 : posx 7. [OUT] 変数 : posy 8. [OUT] 変数 : posz (posx, posy, posz)に、 ボーンの座標が代入されます。 実数型の変数。 9. [IN] 数値または、変数 : scaleflag scaleflagに1をセットすると、 E3DSetScaleの結果を反映したposを計算します。 0がセットされた場合には、 E3DSetScaleの結果が反映されません。 |
ver3.0.3.4で拡張 |
E3DCreateLine | ライン | 線を作成して、lineidを取得します。 lineidは、線オブジェクトを一意に識別するための番号です。 E3DCreateLine、E3DDestroyLine E3DSetLineColor、E3DAddPoint2Line E3DDeletePointOfLine、E3DSetPointPosOfLine E3DGetPointPosOfLine E3DGetNextPointOfLine E3DGetPrevPointOfLine に渡すlineidは、この関数で取得したlineidを 使用してください。 pointposには、 ddim pointpos, pointnum, 3 で確保したデータを渡してください。 dimではなくて、ddimで確保してください。 pointnumには、点の数を入れてください。 点の数の最大値は65535です。 pointnumが2より小さい場合は、エラーになります。 pointpos(点の番号,0) にX座標、 pointpos(点の番号,1) にY座標、 pointpos(点の番号,2) にZ座標 を入れて、初期化しておいてください。 作成した線は、 E3DRenderで、描画できます。 hsidの代わりに、lineidを指定してください。 LINE関係の関数の使用例は、 e3dhsp3_autorun.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数 : pointpos 線を構成する点の座標を指定してください。 メモリの確保の仕方、値のセットの仕方は、 左の記述をご覧ください。 必ず、ddimでメモリを作成してください。 実数型の変数。 2. [IN] 数値または、変数 : pointnum 初期化する点の数を指定してください。 pointposのデータを確保する際に使った 点の数を渡してください。 3. [IN] 数値または、変数 : maxpointnum Lineは、E3DAddPoint2Line命令で、 点の数を増やすことが可能です。 最大何個まで、点の数を増やせるかを 指定してください。 (点の数の合計です。) ビデオメモリは、pointnumではなくて、 maxpointnumでアロケートされます。 4. [IN] 数値または、変数 : linekind 線の種類を指定します。 LINELISTの場合は2を、 LINESTRIPの場合は3を指定してください。 LINELIST, LISTSTRIPについての説明は、 線の種類の説明をご覧ください。 5. [OUT] 変数 : lineid 作成した線を識別する番号が、代入されます。 |
ver1.0.0.1 |
E3DDestroyLine | ライン | E3DCreateLine で作成した線を削除します。 削除したlineidは、 以降、どの命令にも使わないでください。 |
1. [IN] 数値または、変数 : lineid 削除する線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 |
ver1.0.0.1 |
E3DSetLineColor | ライン | 線の色を設定します。 | 1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : A 透明度を指定します。 0から255の値を渡してください。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 色の成分(R,G,B)を指定してください。 それぞれ、0から255の値を渡してください。 |
ver1.0.0.1 |
E3DAddPoint2Line | ライン | 線に点を追加し、追加した点を識別するpidを取得します。 点の数の合計が、 E3DCreateLineに渡したmaxpointnum より大きくなると、エラーになります。 取得したpidをE3DSetPointPosOfLine関数に 渡して、 付け足した点の座標をセットしてください。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : prevpid 線の中のどこに、新しい点を追加するかを指定します。 prevpidで指定した点の次の点として、 新しい点を追加します。 prevpidに-2を指定した場合には、線の先頭に、 prevpidに-1を指定した場合には、線の最後に 新しい点を追加します。 3. [OUT] 変数 : pid 新しく追加した点を識別する番号が、代入されます。 pidは、線ごとに固有な値です。 |
ver1.0.0.1 |
E3DDeletePointOfLine | ライン | 線の中の点を削除します。 | 1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : pid 削除する点を識別する番号を指定してください。 |
ver1.0.0.1 |
E3DSetPointPosOfLine | ライン | 線の中の点の座標をセットします。 座標posは、 ddim pos, 3 で確保したメモリを渡してください。 必ず、dimではなくて、ddimでメモリを作成してください。 pos(0)には、X座標を、 pos(1)には、Y座標を、 pos(2)には、Z座標を指定してください。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : pid 点を識別する番号を渡します。 3. [IN] 変数 : pos 点の座標を渡してください。 posの確保の仕方、値のセットの仕方は、 左の記述をご覧ください。 ddimで作成した実数型配列。 |
ver1.0.0.1 |
E3DGetPointPosOfLine | ライン | 線の中の点の座標を取得します。 座標が代入されるposは、 ddim pos, 3 で確保したメモリを渡してください。 必ず、dimではなくて、ddimでメモリを作成してください。 pos(0)には、X座標が、 pos(1)には、Y座標が、 pos(2)には、Z座標が代入されます。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : pid 点を識別する番号を渡します。 3. [OUT] 変数 : pos 点の座標が代入される配列を渡してください。 posの確保の仕方、値のセットのされ方は、 左の記述をご覧ください。 ddimで作成した実数型配列。 |
ver1.0.0.1 |
E3DGetNextPointOfLine | ライン | previdで指定した点の、一つ後の点のIDを取得します。 線は、点を、双方向リストで、格納しています。 一つ後の点が存在しない場合は、 nextid には、負の値が代入されます。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : previd 点を識別する番号 3. [OUT] 変数 : nextid previdの点の、一つ後の点のIDが代入されます。 previd に-1が指定されている場合は、 nextidには、先頭の点のIDが代入されます |
ver1.0.0.1 |
E3DGetPrevPointOfLine | ライン | pidで指定した点の、一つ前の点のIDを取得します。 線は、点を、双方向リストで、格納しています。 一つ前の点が存在しない場合は、 previd には、負の値が代入されます。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : pid 点を識別するID 3. [OUT] 変数 : previd pidの点の、一つ後の点のIDが代入されます。 |
ver1.0.0.1 |
E3DWriteDisplay2BMP | 出力 | バックバッファの内容を、BMPファイルに保存します。 filenameには、拡張子を除いた名前を 指定してください。 E3DInitのmultisamplenumに0以外を指定した場合は、この命令は使えません。 (エラーになります。) |
1. [IN] 文字列または、文字列の変数 : filename 出力するBMP のパス文字列。 拡張子を除いたパスを指定してください。 この関数で、自動的に、”.bmp”が付加されます。 既に同じファイル名が存在している場合は、 そのファイルは、上書きされるので注意してください。 2. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver1.0.0.1 ver3.0.2.4で引数追加 |
E3DCreateAVIFile | 出力 | AVIファイルを初期化して、aviidを取得します。 aviidは、AVIファイルを識別するための番号です。 この命令で作成したAVIファイルに対して、 E3DWriteData2AVIFile命令で、 バックバッファの内容を書き込み、 E3DCompleteAVIFile命令で、 終了処理をします。 E3DWriteData2AVIFile命令、 E3DCompleteAVIFile命令には、 E3DCreateAVIFile命令で取得したaviidを 渡してください。 E3DInitのmultisamplenumに0以外を指定した場合は、この命令は使えません。 (エラーになります。) AVI関係の命令の具体的な使用例は、 e3dhsp3_savedisplay.hsp に書きましたので、ご覧ください。 |
1. [IN] 文字列または、文字列の変数 : filename 出力するBMP のパス文字列。 拡張子を除いたパスを指定してください。 この関数で、自動的に、”.avi”が付加されます。 既に同じファイル名が存在している場合は、 そのファイルは、上書きされるので注意してください。 2. [IN] 数値または、変数 : datatype 作成するデータの種類を指定します。 現バージョンでは、映像のみしか扱わないため、 常に1を指定してください。 3. [IN] 数値または、変数 : compkind 圧縮の種類を指定します。 0を指定した場合は、 圧縮なし 1を指定した場合は、 cinepak Codec by Radiusによる圧縮 2を指定した場合には、 Microsoft Video 1による圧縮 をします。 4. [IN] 数値または、変数 : framerate AVIファイルのフレームレートを指定してください。 通常は、スクリプトプログラムのFPSを指定します。 60FPSで表示している場合は、60と指定します。 5. [IN] 数値または、変数 : frameleng AVIファイルのフレーム数の合計数。 frameleng回だけ、E3DWriteData2AVIFileで、 データをファイルに書き込むことが出来ます。 6. [OUT] 変数 : aviid 作成したAVIファイルを識別するための 番号が代入されます。 7. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver1.0.0.1 ver3.0.2.4で引数追加 |
E3DWriteData2AVIFile | 出力 | バックバッファの内容を、AVIファイルに書き込みます。 E3DCreateAVIFileで指定したframeleng回だけ この命令を呼ぶことが出来ます。 frameleng回を超えた呼び出しは、 エラーとなり、無視されます。 |
1. [IN] 数値または、変数 : aviid AVIファイルを識別するための番号を指定してください。 E3DCreateAVIFileで取得した番号を使用してください。 2. [IN] 数値または、変数 : datatype 作成するデータの種類を指定します。 現バージョンでは、映像のみしか扱わないため、 常に1を指定してください。 3. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver1.0.0.1 ver3.0.2.4で引数追加 |
E3DCompleteAVIFile | 出力 | AVIファイルの終了処理をします。 必要な回数、E3DWriteData2AVIFile命令を 呼び出した後に、この命令を呼び出してください。 |
1. [IN] 数値または、変数 : aviid AVIファイルを識別するための番号を指定してください。 E3DCreateAVIFileで取得した番号を使用してください。 2. [IN] 数値または、変数 : datatype 作成するデータの種類を指定します。 現バージョンでは、映像のみしか扱わないため、 常に1を指定してください。 3. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver1.0.0.1 ver3.0.2.4で引数追加 |
E3DCameraLookAt | カメラ | カメラを向きたい方向に、徐々に向けます。 (vecx, vecy, vecz)には、注視点ではなくて、 向きたい向きのベクトルを指定してください。 例えば、注視点(tx, ty, tz)を向きたい場合は、 E3DGetCameraPos camx, camy, camz として、カメラの位置を求め、 引き算するだけでOKです。 vecx = tx - camx vecy = ty - camy vecz = tz - camz のようにして、計算し、指定してください。 upflagは、E3DLookAtQでの用法と同じです。 upflag == 0 のときは、 上向き方向が、常にY軸上方を向くように 制御されます。 upflag == 1 のときは、 上向き方向が、常にY軸下方を向くように 制御されます。 upflag == 2 のときは、 上向き方向が、連続した向きをとるように 制御されます。 その結果、宙返りが可能となります。 upflag == 3 のときは、 上向き方向を特に制御しません。 上向き方向は、連続した向きをとりますが、 その方向は拘束されません。 divnum引数に、分割数を指定します。 現在の位置と、目標地点との間の間隔を 1 / divnum ずつ、内分して、近づきます。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : vecx 2. [IN] 数値または、変数 : vecy 3. [IN] 数値または、変数 : vecz 向きたいベクトルを、指定してください。 ベクトルの計算方法は、左記をご覧ください。 実数。 4. [IN] 数値または、変数 : upflag 上向き制御方法のモードを指定してください。 詳しくは、左記をご覧ください。 5. [IN] 数値または、変数 : divnum 分割数を指定してください。 |
ver1.0.0.1 |
E3DCameraOnNaviLine | カメラ | カメラをナビラインに沿って動かします。 mode引数に0を指定すると、 カメラの位置だけを制御します。 mode引数に1を指定すると、 位置に加え、向きも制御します。 ループ移動や、反対方向への移動も サポートしています。 ナビラインの作成には、 GViewer.exeを使うと便利です。 (おちゃっこLABでダウンロード可能です。) ナビラインは、地面の高さに作成することが 普通なので、ナビラインからカメラまでの オフセット値を指定できるようにしました。 例えば、地面から1000だけ上方を、 カメラを動かしたいときは、 地面の高さにナビラインを作成し、 この関数のオフセット引数に offsetx = 0 : offsety = 1000 : offsetz = 0 の値を指定すればOKです。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : nlid ナビラインを識別するID 2. [IN] 数値または、変数 : mode 位置だけを制御する場合は0を、 位置と向きを制御する場合は1を指定してください。 3. [IN] 数値または、変数 : roundflag ナビラインの最後のナビポイントに移動した後、 ナビラインの最初のナビポイントの位置を 目指すかどうかを示します。 1を指定すると、円形のナビラインの場合は、 ずっと、ぐるぐる回ることになります。 4. [IN] 数値または、変数 : reverseflag 1を指定すると、 ナビラインのポイントを逆順にたどるようになります。 5. [IN] 数値または、変数 : offsetx 6. [IN] 数値または、変数 : offsety 7. [IN] 数値または、変数 : offsetz ナビラインから、カメラ位置までのオフセット値を 指定します。 詳しくは、左記をご覧ください。 実数。 8. [IN] 数値または、変数 : posstep カメラを一度にどれくらいの距離を移動させるかを 指定します。 ただし、ナビポイント付近では、 posstepより小さな距離しか移動させないことがあります。 実数。 9. [IN] 数値または、変数 : dirdivnum 向きたい向きまで、徐々にカメラを向けるための 引数です。 目標までの角度を1/dirdivnumずつ内分して、 徐々に向きを制御します。 10. [IN] 数値または、変数 : upflag E3DCameraLookAt関数のupflag引数と同じ意味です。 詳しくは、E3DCameraLookAtの説明部分を お読みください。 11. [IN] [OUT] 変数 : targetpointid 現在目指しているナビポイントのIDを入れます。 移動後は、次に目指すべきナビポイントのIDが 代入されます。 ですので、一番最初の呼び出し時のみ、 自分でtargetpoinidを指定すれば、 あとは、同じ変数を渡すだけで、 自動的に、目指すべきポイントのIDが 代入されていくことになります。 targetpointidに、 存在しないナビポイントのIDを入れた場合は、 (例えば-1など) 自動的に、目指すべきナビポイントを決定します。 |
ver1.0.0.1 |
E3DCameraDirUp | カメラ | カメラの現在向いている方向を、徐々に上の方向に向けます。 現バージョンでは、 宙返りはサポートしていません。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : deg 角度。 実数。 2. [IN] 数値または、変数 : divnum deg度の角度を、1/divnumずつ内分して、 カメラを、上方向に向けます。 |
ver1.0.0.1 |
E3DCameraDirDown | カメラ | カメラの現在向いている方向を、徐々に下の方向に向けます。 現バージョンでは、 宙返りはサポートしていません。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : deg 角度。 実数。 2. [IN] 数値または、変数 : divnum deg度の角度を、1/divnumずつ内分して、 カメラを、下方向に向けます。 |
ver1.0.0.1 |
E3DCameraDirRight | カメラ | カメラの現在向いている方向を、徐々に右の方向に向けます。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : deg 角度。 実数。 2. [IN] 数値または、変数 : divnum deg度の角度を、1/divnumずつ内分して、 カメラを、右方向に向けます。 |
ver1.0.0.1 |
E3DCameraDirLeft | カメラ | カメラの現在向いている方向を、徐々に左の方向に向けます。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : deg 角度。 実数。 2. [IN] 数値または、変数 : divnum deg度の角度を、1/divnumずつ内分して、 カメラを、左方向に向けます。 |
ver1.0.0.1 |
E3DCreateFont | テキスト | フォントを作成し、フォントを識別するIDを取得します。 具体的な使用例は、 e3dhsp3_font.hsp に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : height フォントの文字セルまたは文字の高さを論理単位で指定します。 文字の高さとは、 文字セルの高さから内部レディング(アクセント記号などのためのスペース)の 高さを引いたものです。 要求されたサイズを超えない最大のフォントを探して処理されます。 2. [IN] 数値または、変数 : width フォントの平均文字幅を論理単位で指定します。 0 を指定すると、条件に最も近い値が選択されます。 条件に最も近い値は、利用可能な各フォントの現在のデバイスでの 縦横比とデジタル化された縦横比の差の絶対値を比較することにより 決定されます。 3. [IN] 数値または、変数 : weight フォントの太さを表す 0 から 1000 までの範囲内の値を指定します。 たとえば、400 を指定すると標準の太さになり、 700 を指定すると太字になります。 0 を指定すると、既定の太さが選択されます。 4. [IN] 数値または、変数 : bItalic 斜体にするかどうかを指定します。 1 を指定すると、斜体になります。 5. [IN] 数値または、変数 : bUnderline 下線を付けるかどうかを指定します。 1 を指定すると、下線付きになります。 6. [IN] 数値または、変数 : bStrikeout 取り消し線を付けるかどうかを指定します。 1 を指定すると、取り消し線が付きます。 7. [IN] 文字列または、文字列の変数 : fontname フォントの名前が入った 文字列を指定します。 文字列の長さは、 31 文字以下にしなければなりません。 8. [OUT] 変数 : fontid 作成したフォントを識別するための 番号が代入されます。 |
ver1.0.0.1 |
E3DDrawTextByFontID | テキスト | E3DCreateFontで作成したフォントにより、指定した位置、色で、テキストを表示します。 \nで改行できます。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : fontid E3DCreateFontで作成した、フォントの番号を指定します。 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : posy テキストをする位置を (x, y)=(posx, posy)で指定します。 5. [IN] 文字列または、文字列の変数 : textstr 表示したい文字列を指定します。 6. [IN] 数値または、変数 : a 7. [IN] 数値または、変数 : r 8. [IN] 数値または、変数 : g 9. [IN] 数値または、変数 : b 文字の透明度と色を(透明度, 赤, 緑, 青)=(a, r, g, b)で 指定します。 |
ver1.0.0.1 |
E3DDrawTextByFontIDWithCnt | テキスト | カウンター制御で、一定間隔で、徐々に文字列を表示します。 eachcnt引数に、一文字当たりの待機期間を 指定します。 この値と、curcntに指定したカウンターの値を 比較して、文字を表示します。 curcntには、通常、この命令を呼び出すたびに、 1ずつ増えるカウンターの値を指定します。 例えば、eachcntに10を指定した場合には、 一文字当たり10カウントだけ待機するので、 1文字目は、curcntが10になるまで表示されません。 2文字目は、curcntが20になるまで表示されません。 と、このように、curcntの値が、増えるに従って、 徐々に、表示文字長が増えていきます。 現バージョンでは、半角カタカナには、 対応していません。 具体的な使用例は、 e3dhsp3_fontWithCnt.hsp に書きましたので、ご覧ください。 \nで改行できます。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : fontid E3DCreateFontで作成した、フォントの番号を指定します。 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : posy テキストをする位置を (x, y)=(posx, posy)で指定します。 5. [IN] 文字列または、文字列の変数 : textstr 表示したい文字列を指定します。 6. [IN] 数値または、変数 : a 7. [IN] 数値または、変数 : r 8. [IN] 数値または、変数 : g 9. [IN] 数値または、変数 : b 文字の透明度と色を(透明度, 赤, 緑, 青)=(a, r, g, b)で 指定します。 10. [IN] 数値または、変数 : eachcnt 一文字当たり、どれくらい待ってから表示するかを指定します。 11. [IN] 数値または、変数 : curcnt 現在のカウンターを指定します。 |
ver1.0.0.1 |
E3DDrawTextByFontIDWithCnt2 | テキスト | カウンター制御で、文字ごとに表示タイミングを指定して、文字列を表示します。 cntarray引数に、 文字ごとの表示タイミングを指定した配列を 指定してください。 cntarrayの長さは、 E3DGetCharacterNum関数で、 textstrの文字数を取得して、決定してください。 HSPでは、文字列中に、'\n'が見つかった場合には、自動的に、"\r\n"に変換されるようです。 つまり、改行マーク1個に付き、1文字増えることになりますので、ご注意ください。 cntarray中の表示タイミングと、 curcntに指定したカウンターの値を比べて、 文字を表示するかどうかを決定します。 cntarray(0)に10を、 cntarray(1)に20を指定した場合には、 curcntが10になったときに1文字目が表示され、 curcntが20になったときに2文字目が表示されます。 cntarray(1)にcntarray(0)より小さな値を入れることも可能です。 その場合は、2文字目は1文字目よりも後で、 表示されることになります。 \nを文字列中に含む場合は、 自動的に挿入される\rの分の表示タイミングも 指定しないといけませんので、ご注意ください。 現バージョンでは、半角カタカナには、 対応していません。 具体的な使用例は、 e3dhsp3_fontWithCnt.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : fontid E3DCreateFontで作成した、フォントの番号を指定します。 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : posy テキストをする位置を (x, y)=(posx, posy)で指定します。 5. [IN] 文字列または、文字列の変数 : textstr 表示したい文字列を指定します。 6. [IN] 数値または、変数 : a 7. [IN] 数値または、変数 : r 8. [IN] 数値または、変数 : g 9. [IN] 数値または、変数 : b 文字の透明度と色を(透明度, 赤, 緑, 青)=(a, r, g, b)で 指定します。 10. [IN] 配列の変数 : cntarray 文字数分の要素数を持つ配列変数を指定します。 それぞれの要素には、文字の表示タイミングを指定します。 11. [IN] 数値または、変数 : arrayleng cntarray中の要素数を指定します。 12. [IN] 数値または、変数 : curcnt 現在のカウンターを指定します。 |
ver1.0.0.1 |
E3DGetCharacterNum | テキスト | 1バイト文字、2バイト文字を判別して、textstr中の文字数を取得します。 HSPでは、文字列中に、'\n'が見つかった場合には、自動的に、"\r\n"に変換されるようです。 つまり、改行マーク1個に付き、1文字増えることになりますので、ご注意ください。 現バージョンでは、半角カタカナには、 対応していません。 |
1. [IN] 文字列または、文字列の変数 : textstr 調べたい文字列を指定します。 2. [OUT] 変数 : charanum 文字の数が代入されます。 |
ver1.0.0.1 |
E3DDestroyFont | テキスト | E3DCreateFontで作成したフォントを、 削除します。 |
1. [IN] 数値または、変数 : fontid E3DCreateFontで作成した、フォントの番号を指定します。 |
ver1.0.0.1 |
E3DSlerpQ | 算術 | クォータニオンを、球面線形補間します。 startqid, endqid, resqid には、 E3DCreateQ で取得した、IDを渡してください。 resqidで識別されるクォータニオンに、 startqid, endqidの間の姿勢を、 t の比率に基づいて補間計算し、 セットします。 t の値が、0.0 から1.0の間になるように、指定してください。 t が0.0のときは、 startqidと同じ姿勢がセットされます。 t が1.0のときは、 endqidと同じ姿勢がセットされます。 具体的な使い方は、 e3dhsp3_Spline.hsp をご覧ください。 |
1. [IN] 数値または、変数 : startqid 2. [IN] 数値または、変数 : endqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 startqidとendqidのクォータニオンの間の姿勢を、 補間計算して、resqidのクォータニオンにセットします。 3. [IN] 数値または、変数 : t 補間計算するクォータニオンのstartqidからの比率を指定してください。 t の値は、0.0から1.0の間の値を指定してください。 実数。 4. [IN] 数値または、変数 : resqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 計算結果が、resqidのクォータニオンに代入されます。 |
ver1.0.0.1 |
E3DSquadQ | 算術 | クォータニオンを、スプライン補間します。 befqid, startqid, endqid, aftqid, resqidには、 E3DCreateQ で取得した、IDを渡してください。 resqidで識別されるクォータニオンに、 startqid, endqidの間の姿勢を、 t の比率に基づいて補間計算し、 セットします。 befqidには、startqidの一つ前の姿勢を、 aftqidには、endqidの一つ後の姿勢を、 セットしておいてください。 この関数は、大きく姿勢が変化する場合には、 向いていません。 大きく変化する姿勢を補完する場合には、 E3DSlerpQを使用してください。 または、2つを組み合わせて、使用してください。 t の値が、0.0 から1.0の間になるように、指定してください。 t が0.0のときは、 startqidと同じ姿勢がセットされます。 t が1.0のときは、 endqidと同じ姿勢がセットされます。 具体的な使い方は、 e3dhsp3_Spline.hsp をご覧ください。 |
1. [IN] 数値または、変数 : befqid 2. [IN] 数値または、変数 : startqid 3. [IN] 数値または、変数 : endqid 4. [IN] 数値または、変数 : aftqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 startqidとendqidのクォータニオンの間の姿勢を、 補間計算して、resqidのクォータニオンにセットします。 befqidには、startqidの一つ前の姿勢を、 aftqidには、endqidの一つ後の姿勢を、 セットしておいてください。 5. [IN] 数値または、変数 : t 補間計算するクォータニオンのstartqidからの比率を指定してください。 t の値は、0.0から1.0の間の値を指定してください。 6. [IN] 数値または、変数 : resqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 計算結果が、resqidのクォータニオンに代入されます。 |
ver1.0.0.1 |
E3DSplineVec | 算術 |
位置座標を、スプライン補間計算します。 befpos, startpos, endpos, aftpos, resposには、 それぞれ、 ddim befpos, 3 ddim startpos, 3 ddim endpos, 3 ddim aftpos, 3 ddim respos, 3 で、確保した配列を渡してください。 必ず、dimではなくて、ddimでメモリを確保してください。 配列の第1要素(例えばbefpos(0))には、 X座標、 配列の第2要素(例えばbefpos(1))には、 Y座標、 配列の第3要素(例えばbefpos(2))には、 Z座標、 をセットしておいてください。 startposとendposの間の座標を、 tvの比率に基づいて、 スプライン補間計算して、 resposに代入します。 befposには、startposの一つ前の座標を、 aftposには、endposの一つ後の座標を セットしておいてください。 t の値が、0.0 から1.0の間になるように、指定してください。 t が0.0のときは、 startposと同じ位置がセットされます。 t が1.0のときは、 endposと同じ位置がセットされます。 具体的な使い方は、 e3dhsp3_Spline.hsp をご覧ください。 |
1. [IN] 変数 : befpos 2. [IN] 変数 : startpos 3. [IN] 変数 : endpos 4. [IN] 変数 : aftpos 計算の元となる、位置座標の配列を指定してください。 詳しくは、左記をご覧ください。 ddimで作成した実数型配列。 5. [IN] 数値または、変数 : t 補間計算する位置座標のstartposからの比率を指定してください。 t の値は、0.0から1.0の間の値を指定してください。 6. [OUT] 変数 : respos 計算結果が、代入される配列を指定してください。 ddimで作成した実数型配列。 |
ver1.0.0.1 |
E3DDbgOut | デバッグ | dbg.txtに、指定した文字列を出力します。 この命令を呼ぶ前に、 一回だけE3DEnableDbgFileを 呼ぶ必要があります。 |
1. [IN] 文字列または、文字列変数 : dbgstr 出力文字列を指定してください。 |
ver1.0.0.1 |
E3DGetDiffuse | モデル情報 | 任意のパーツの任意の頂点の、diffuse色を取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 指定した頂点のdiffuse色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.0.1 |
E3DGetAmbient | モデル情報 | 任意のパーツの任意の頂点の、ambient色を取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 指定した頂点のambient色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.0.1 |
E3DGetSpecular | モデル情報 | 任意のパーツの任意の頂点の、specular色を取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 指定した頂点のspecular色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.0.1 |
E3DGetAlpha | モデル情報 | 任意のパーツの透明度を取得します。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno この引数は、現在使用されていません。 適当な数字を入れてください。 4. [OUT] 変数 : alpha 指定したパーツの透明度が、0〜255の値で代入されます。 |
ver1.0.0.1 |
E3DSaveQuaFile | 出力 | 読み込み済みのモーションを、ファイルに保存します。 quatype引数でファイルのタイプを指定します。 e3dhsp3.asで定義されているQUATYPE_ で始まる定数を使います。 QUATYPE_NUMはボーンの階層構造から計算した番号を基準にファイルを作ります。 QUATYPE_NAMEはボーンの名前を基準にファイルを作ります。 ver5.0.3.8より前のバージョンのquaファイルはQUATYPE_NUMです。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : mkid モーションを識別する番号を指定してください。 3. [IN] 文字列または、文字列変数 : filename 保存ファイル名(パス)を指定してください。 4. [IN] 数値または、変数 : quatype QUATYPE_ で始まる定数を指定。 デフォルト値はQUATYPE_NAME。 |
ver1.0.0.1 ver5.0.3.8で引数追加 |
E3DSaveSigFile | 出力 | 形状データをsigファイルに保存します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 文字列または、文字列変数 : filename 保存ファイル名(パス)を指定してください。 |
ver1.0.0.1 |
E3DSetMipMapParams | 描画パラメータ | ミップマップのパラメータを設定します。 この関数を呼んだ後に実行される 全てのE3DSigLoadに影響します。 この命令を一度も呼ばなかった場合は、 miplevelに0、 mipfilterに D3DX_FILTER_TRIANGL|D3DX_FILTER_MIRROR を指定したのと同じになります。 |
1. [IN] 数値または、変数 : miplevels 要求されるミップ レベルの数。 この値が 0 または D3DX_DEFAULT の場合は、 完全なミップマップ チェーンが作成されます。 2. [IN] 数値または、変数 : mipfilter イメージをフィルタリングする方法を制御する 1 つ以上のフラグの組み合わせ。 このパラメータに D3DX_DEFAULT を指定することは、 D3DX_FILTER_BOX を指定することと等しい。 有効なそれぞれのフィルタに、次のフラグの 1 つが含まれていなければならない。 D3DX_FILTER_BOX 各ピクセルは、ソース イメージ内の 2 × 2 (× 2) のサイズのボックスに含まれ ピクセルの平均を算出することにより計算される。 このフィルタは、ミップマップを使用する場合のように、 転送先のディメンジョンがソースの半分の場合のみ機能する。 D3DX_FILTER_LINEAR 各転送先ピクセルは、最も近い 4 つのピクセルをソース イメージからサンプリング することにより計算される。 このフィルタは、両軸のスケールが 2 未満の場合に最も効率よく機能する。 D3DX_FILTER_NONE スケーリングまたはフィルタリングを行わない。 ソース イメージの境界の外側にあるピクセルは透明な黒であると見なされる。 D3DX_FILTER_POINT 各転送先ピクセルは、最も近いピクセルをソース イメージからサンプリング することにより計算される。 D3DX_FILTER_TRIANGLE ソース イメージ内の各ピクセルが、転送先イメージに等しく反映される。 これは、最も処理に時間のかかるフィルタである。 さらに、OR 演算子を使用して、有効なフィルタと共に次に示すオプションの フラグを 0 個以上指定できる。 D3DX_FILTER_MIRROR このフラグを指定すると、D3DX_FILTER_MIRROR_U、D3DX_FILTER_MIRROR_V、 および D3DX_FILTER_MIRROR_W フラグを指定したことになる。 D3DX_FILTER_MIRROR_U u 軸のテクスチャのエッジから離れたピクセルを、ラッピングせずにミラーリング するよう指定する。 D3DX_FILTER_MIRROR_V v 軸のテクスチャのエッジから離れたピクセルを、 ラッピングせずにミラーリングするよう指定する。 D3DX_FILTER_MIRROR_W w 軸のテクスチャのエッジから離れているピクセルを、 ラッピングせずにミラーリングするよう指定する。 D3DX_FILTER_DITHER 結果として作成されたイメージを、4x4 の順序付きディザ アルゴリズム を使ってディザリングする必要がある。 |
ver1.0.0.1 |
E3DPickVert | モデル情報 | 画面上の2D座標を指定して、その座標に、一番近い頂点を検出する関数です。 全く同じ座標の頂点が見つかった場合には、 複数のパーツ、複数の頂点の番号を 取得するするようになっています。 同じ座標でも、UVだけが違う頂点などが 存在するので、複数取得できるようになっています。 取得した情報の数が、getnumに代入されます。 該当するデータが無い場合は、getnumに0が 代入されます。 getnumが0出ない場合には、 maxindex = getnum - 1とすると pickpartarray(0) から、pickpartarray(maxindex) までに、パーツの番号が代入されます。 pickvertarray(0)から、pickvertarray(maxindex) までに、頂点の番号が代入されます。 pickarrayleng変数に、 一度に取得できる情報の数をセットした後、 dim pickpartarray, pickarrayleng dim pickvertarray, pickarrayleng で、メモリを確保してください。 rangex, rangey引数を調整することで、 検出の感度を調整できます。 この関数の使用例は、 e3dhsp3_pickvert.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid 形状データを識別するID 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : posy 画面上の2D座標を(posx, posy)で指定します。 5. [IN] 数値または、変数 : rangex 6. [IN] 数値または、変数 : rangey 検出距離を指定します。 rangexには、X座標がどれだけ離れた点まで検索するかを指定します。 rangeyには、Y座標がどれだけ離れた点まで検索するかを指定します。 大きい値を指定すると、 指定した座標より遠い頂点まで検索します。 感度の調整に使用してください。 7. [OUT] 変数 : pickpartarray 8. [OUT] 変数 : pickvertarray 指定した座標に一番近いパーツ番号と、 頂点の番号がgetnum個だけ、代入されます。 9. [IN] 数値または、変数 : pickarrayleng pickpartarray, pickvertarrayの配列の大きさを指定してください。 dim 命令で使用した値を渡してください。 詳しくは、左記をご覧ください。 10. [OUT] 変数 : getnum pickpartarray, pickvertarrayに、何個の値を代入したかを 取得できます。 例えば、getnum が3だった場合には、 pickpartarray(0), pickpartarray(1), pickpartarray(2)に値が代入されています。 |
ver1.0.0.1 |
E3DGetCullingFlag | モデル情報 | この関数は、現在、機能していません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 調べたい頂点の番号を指定してください。 4. [OUT] 変数 : viewcullflag 視野外カリングされているとき1が、 されていないとき0が代入されます。 5. [OUT] 変数 : revcullflag 背面カリングされているとき1が、 されていないとき0が代入されます。 |
ver1.0.0.1 |
E3DGetOrgVertNo | モデル情報 | mqoファイル内での頂点番号を取得する。 パーツ内の頂点の数は、E3DGetVertNumOfPartのvertnumで取得されます。 E3Dのプログラムでは、頂点の番号に、0から(vertnum - 1)の頂点の番号を使用できます。 この頂点の番号は、表示用の最適化をした後の、頂点の番号で、 rok, mqoファイル内での頂点の番号と異なる場合があります。 この関数は、最適化後の頂点番号に対応する、rok,mqoファイル内での頂点の番号を取得します。 mqoの場合は、 mqoファイル中の、パーツごとの頂点の出現順番を返します。(0から始まる数字) rokの場合は、 rokファイル中の、1から始まる頂点のインデックスを返します。 rokの場合は、パーツごとの番号ではなくて、 頂点全体を通しての番号ですので 注意してください。 指定した頂点と同じ座標を持つ頂点の番号が代入されるので、場合によっては、複数取得されます。 この関数は、E3Dのプログラムから、im2ファイルを作る際などに使用することを想定して、作りました。 地面データには使わないでください。 この関数を使う前に、 E3DChkIM2Status関数で、引数に 1が返されることを確認してください。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 orgarraylengに、取得できる情報の数をセットして、 dim orgnoarray, orgarrayleng で、メモリを確保してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 調べたい頂点の番号を指定してください。 4. [OUT] 変数 : orgnoarray この配列に、元データの頂点の番号が代入されます。 maxindex = getnum - 1とすると orgnoarray(0) から、orgnoarray(maxindex)までに 頂点の番号が代入されます。 5. [IN] 数値または、変数 : arrayleng orgnoarrayをdimしたときの、配列の大きさを指定してください。 6. [OUT] 変数 : getnum orgnoarrayに代入した情報の数を取得できます。 |
ver1.0.0.1 |
E3DChkIM2Status | ボーン影響 | 影響マップ情報(im2)が、利用可能かどうかを調べます。 status引数に1が返された場合は、 利用可能。 0が返された場合は、 利用不可能です。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 E3DGetOrgVertNo, E3DLoadIM2File, E3DSaveIM2File関数などを使用する前に、 このE3DChkIM2Status関数で、 影響マップファイルの機能が使えるかどうかを 調べてください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : status 影響マップ情報が、利用可能かどうかが代入されます。 |
ver1.0.0.1 |
E3DLoadIM2File | ボーン影響 | hsidで識別されるモデルデータに、im2ファイルのボーン影響情報をセットします。 この関数を使う前に、 E3DChkIM2Status関数で、引数に 1が返されることを確認してください。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 |
1. [IN] 数値または、変数 : hsid hsidで識別されるモデルデータに、 im2ファイルのボーン影響情報をセットします。 2. [IN] 文字列または、文字列の変数 : fname *.im2 のパス文字列。 |
ver1.0.0.1 |
E3DSaveIM2File | ボーン影響出力 | hsidで識別されるモデルデータの影響マップ情報を、im2ファイルに書き出します。 この関数を使う前に、 E3DChkIM2Status関数で、引数に 1が返されることを確認してください。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 |
1. [IN] 数値または、変数 : hsid hsidで識別されるモデルデータの影響マップ情報を、 im2ファイルに書き出します。 2. [IN] 文字列または、文字列の変数 : fname *.im2 のパス文字列。 |
ver1.0.0.1 |
E3DGetJointNum | モデル情報 | ジョイントの総数を取得します。 E3DGetJointInfoで詳細情報を取得する際の、 配列データの大きさの決定などに、 使用してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : jointnum ジョイントの総数が、代入されます。 |
ver1.0.0.1 |
E3DGetJointInfo | モデル情報 | ジョイントの詳細情報を、一括取得します。 この関数を使用するには、 データ取得用の配列を、sdim, dim命令を使って、 作成する必要があります。 (データによって、ジョイントの総数が変化するので、ユーザーさん側で、データ長を調整する必要があります。) まず、jointmaxnum変数に、 E3DGetJointNum関数で、 ジョイントの総数を取得してください。 jointname引数は、 sdim jointname, 256, jointmaxnum で作成してください。 maxnameno = jointmaxnum - 1 とすると、 jointname(0) から、jointname(maxnameno) で、jointmaxnum個の名前にアクセスできます。 jointinfo引数は、 dim jointinfo, JI_MAX, jointmaxnum で作成してください。 JI_* は、e3dhsp3.asの 最初の方で定義されている定数です。 #define global JI_SERIAL 0 #define global JI_NOTUSE 1 #define global JI_PARENT 2 #define global JI_CHILD 3 #define global JI_BROTHER 4 #define global JI_SISTER 5 #define global JI_MAX 6 のように、定義されています。 配列のインデックスとして、使用してください。 JI_SERIALインデックスは、 ジョイントのシリアル番号にアクセスするときに、 使用します。 ジョイントのシリアル番号とは、 E3DGetPartNoByName あるいは、 E3DGetBoneNoByName で取得できる番号と同じものです。 JI_NOTUSEインデックスは、 ジョイントが無効になっているかどうかの フラグにアクセスするときに、使用します。 無効なときに1が、有効なときに0が代入されています。 JI_PARENT, JI_CHILD, JI_BROTHER, JI_SISTERインデックスは、 ジョイントの階層構造にアクセスするときに 使用します。 詳しくは、 ジョイントの階層構造のページ をご覧ください。 JI_MAXは、 JI_ で始まる定数の個数を定義しています。 jointinfoをdimするときに使用します。 jointinfoの内容を参照する場合には、 1つ目のインデックスに、 JI_で始まる定数を指定し、 2つ目のインデックスに、 何番目のジョイントかを表す番号 (シリアル番号ではありません) を指定します。 例えば、3番目のジョイントのシリアル番号に アクセスしたいときには、 jointinfo(JI_SERIAL,2) と書きます。 同様に、1番目のジョイントの親の番号に アクセスしたい場合には、 jointinfo(JI_PARENT,0) と書きます。 具体的な使用例は、サンプルの e3dhsp3_getjointinfo.hspをご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : jointmaxnum データ取得用配列の大きさ(ジョイントの数)を指定します。 3. [OUT] 文字列の配列変数 : jointname 名前情報を取得するための配列を渡してください。 右に書いた方法で、sdimした配列を渡してください。 4. [OUT] 配列変数 : jointinfo シリアル番号や、階層構造などを取得するための配列変数を渡してください。 右に書いた方法で、dimした配列を渡してください。 5. [OUT] 変数 : jointgetnum 何個のジョイントの情報を出力したかが、代入されます。 通常は、jointmaxnumと同じ値が取得されます。 |
ver1.0.0.1 |
E3DGetFirstJointNo | モデル情報 | 相対値0のジョイントの、シリアル番号を取得します。 ジョイント番号の相対値とは、 ボーンファイルや、im2ファイルなどで、 使用します。 各ファイルの説明をご覧ください。 ボーンファイルのページ im2ファイルのページ |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : firstno 相対値0のシリアル番号が、代入されます。 |
ver1.0.0.1 |
E3DGetDispObjNum | モデル情報 | 表示用オブジェクトの総数を取得します。 E3DGetDispObjInfoで詳細情報を取得する際の、 配列データの大きさの決定などに、 使用してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : dispobjnum 表示オブジェクトの総数が、代入されます。 |
ver1.0.0.1 |
E3DGetDispObjInfo | モデル情報 |
表示オブジェクトの詳細情報を、一括取得します。 この関数を使用するには、 データ取得用の配列を、sdim, dim命令を使って、 作成する必要があります。 (データによって、表示オブジェクトの総数が変化するので、ユーザーさん側で、データ長を調整する必要があります。) まず、dispobjmaxnum変数に、 E3DGetDispObjInfo関数で、 表示オブジェクトの総数を取得してください。 dispobjname引数は、 sdim dispobjname, 256, dispobjmaxnum で作成してください。 maxnameno = dispobjmaxnum - 1 とすると、 dispobjname(0) から、dispobjname(maxnameno) で、dispobjmaxnum個の名前にアクセスできます。 dispobjinfo引数は、 dim dispobjinfo, DOI_MAX, dispobjmaxnum で作成してください。 DOI_* は、e3dhsp3.asで定義されている定数です。 #define global DOI_SERIAL 0 #define global DOI_NOTUSE 1 #define global DOI_DISPSWITCH 2 #define global DOI_INVISIBLE 3 #define global DOI_MAX 4 のように、定義されています。 配列のインデックスとして、使用してください。 DOI_SERIALインデックスは、 表示オブジェクトのシリアル番号にアクセスするときに、 使用します。 表示オブジェクトのシリアル番号とは、 E3DGetPartNoByName で取得できる番号と同じものです。 DOI_NOTUSEインデックスは、 表示オブジェクトが無効になっているかどうかの フラグにアクセスするときに、使用します。 無効なときに1が、有効なときに0が代入されています。 DOI_DISPSWITCHインデックスは、 表示オブジェクトのディスプレイスイッチの番号 にアクセスするときに使用します。 ディスプレイスイッチは、 RokDeBone2で、パーツごとに設定可能です。 ディスプレイスイッチのページ DOI_INVISIBLEインデックスは、 表示オブジェクトが表示されているかどうかのフラグにアクセスするときに使用します。 詳しくは、 E3DSetInvisibleFlag の説明をお読みください。 DOI_MAXは、 DOI_ で始まる定数の個数を定義しています。 dispobjinfoをdimするときに使用します。 dispobjinfoの内容を参照する場合には、 1つ目のインデックスに、 DOI_で始まる定数を指定し、 2つ目のインデックスに、 何番目の表示オブジェクトかを表す番号 (シリアル番号ではありません) を指定します。 例えば、3番目の表示オブジェクトのシリアル番号に アクセスしたいときには、 dispobjinfo(DOI_SERIAL, 2) と書きます。 同様に、1番目の表示オブジェクトの ディスプレイスイッチ番号に、 アクセスしたい場合には、 jointinfo(DOI_DISPSWITCH, 0) と書きます。 具体的な使用例は、サンプルの e3dhsp3_getjointinfo.hspをご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : dispobjmaxnum データ取得用配列の大きさ(表示オブジェクトの数)を指定します。 3. [OUT] 文字列の配列変数 : dispobjname 名前情報を取得するための配列を渡してください。 右に書いた方法で、sdimした配列を渡してください。 4. [OUT] 配列変数 : dispobjinfo シリアル番号などを取得するための配列変数を渡してください。 右に書いた方法で、dimした配列を渡してください。 5. [OUT] 変数 : dispobjgetnum 何個の表示オブジェクトの情報を出力したかが、代入されます。 通常は、dispobjmaxnumと同じ値が取得されます。 |
ver1.0.0.1 |
E3DEnableTexture | 描画パラメータ | 一時的に、テクスチャー表示をオンオフする関数です。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号(シリアル番号) 3. [IN] 変数または、数値 : enableflag テクスチャーをオフにするときには0を、 オンにするときには1を指定してください。 |
ver1.0.0.1 |
E3DJointAddToTree | モデル情報 | パーツに親子関係を設定します。 childjointをparentjointの子供として、 設定します。 lastflagが0のときは、長男として追加され、 1のときは、末っ子として追加されます。 ジョイント以外に、親子関係を設定しても、 現バージョンでは、意味がありません。 childjoint, parentjointは、 E3DGetPratNoByNameまたは、 E3DGetJointInfoで取得した番号を 使用してください。 E3DJointRemake命令もお読みください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 2. [IN] 変数または、数値 : parentjoint 3. [IN] 変数または、数値 : childjoint parentjointの子供として、childjointを設定します。 4. [IN] 変数または、数値 : lastflag 0を指定するとparentjointの長男として、 1を指定するとparentjointの末っ子として設定されます。 |
ver1.0.0.1 |
E3DJointRemoveFromParent | モデル情報 | パーツの親子関係を取り除きます。 rmjointで指定したパーツと、 その親のパーツとの関係を切り離します。 rmjointの子供の情報は、そのまま残ります。 ジョイント以外に、親子関係を設定しても、 現バージョンでは、意味がありません。 この命令で、親が存在しないまま、 E3DSaveSigFileでファイルに保存すると、 そのファイルは、読み込みできなくなります。 最終的には、E3DJointAddToTreeで、 必ず、親を設定するようにしてください。 一番親のジョイントにしたい場合には、 ジョイントではないフォルダ的な役割をしているパーツの番号を取得して、 それを親に設定してください。 rmjointは、 E3DGetPratNoByNameまたは、 E3DGetJointInfoで取得した番号を 使用してください。 E3DJointRemake命令もお読みください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 2. [IN] 変数または、数値 : rmjoint rmjointと、その親の関係を切り離します。 |
ver1.0.0.1 |
E3DJointRemake | モデル情報 | 親子関係や、有効無効の変更を、Easy3D内部の関連データに反映させます。 一連の、E3DJointAddToTreeや E3DJointRemoveFromParent命令や E3DSetValidFlagを 呼び出した後に、一回、呼び出してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 |
ver1.0.0.1 |
E3DSigImport | 形状データ | hsidに読み込み済の形状データに、 filenameで指定した形状データを インポートします。 この命令を呼ぶと、 読み込み済のモーションデータが破棄されます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 2. [IN] 文字列または、文字列の変数 : filename インポートする*.sig のパス文字列。 3. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 4. [IN] 変数または、数値 : mult 倍率の値を指定してください。 デフォルトは1.0です。 等倍は、1.0。 実数。 5. [IN] 変数または、数値 : offsetx 6. [IN] 変数または、数値 : offsety 7. [IN] 変数または、数値 : offsetz 読み込み位置のオフセット座標を、 (offsetx, offsety, offsetz)で指定します。 ローカル座標で指定します。 実数。 8. [IN] 変数または、数値 : rotx 9. [IN] 変数または、数値 : roty 10. [IN] 変数または、数値 : rotz 追加形状を、X,Y,Zそれぞれの軸に対して、 rotx, roty, rotz度だけ、回転してから、 インポートを行います。 回転順序は、Z,Y,Xの順番です。 実数。 パラメータの適用順序は、 まず、倍率を掛けて、 次に、回転をして、 最後に、移動します。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DSigLoadFromBuf | 形状データ | メモリから形状データのロードを行います。 メモリ内には、sigファイルと同じフォーマットが 入っているとみなして、処理します。 テクスチャファイルは、通常読込と同様に、 ファイルから行います。 resdirには、テクスチャの存在するフォルダのパスを指定してください。 最後に、"\\"を付けるのを忘れないでください。 例えば、 resdir = "C:\\hsp\\Meida\\" や resdir = dir_cur + "\\" などのように指定してください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 5. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 6. [IN] 変数または、数値 : mult 倍率の値を指定してください。 デフォルトは1.0です。 等倍は1.0。 実数。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DSigImportFromBuf | 形状データ | メモリから、形状データのインポートを行います。 メモリ内には、sigファイルと同じフォーマットが 入っているとみなして、処理します。 テクスチャファイルは、通常読込と同様に、 ファイルから行います。 resdirには、テクスチャの存在するフォルダのパスを指定してください。 最後に、"\\"を付けるのを忘れないでください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 3. [IN] 変数 : buf バッファの変数 4. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 5. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 6. [IN] 変数または、数値 : mult 倍率の値を指定してください。 デフォルトは1.0です。 等倍は1.0。 実数。 7. [IN] 変数または、数値 : offsetx 8. [IN] 変数または、数値 : offsety 9. [IN] 変数または、数値 : offsetz 読み込み位置のオフセット座標を、 (offsetx, offsety, offsetz)で指定します。 ローカル座標で指定します。 実数。 10. [IN] 変数または、数値 : rotx 11. [IN] 変数または、数値 : roty 12. [IN] 変数または、数値 : rotz 追加形状を、X,Y,Zそれぞれの軸に対して、 rotx, roty, rotz度だけ、回転してから、 インポートを行います。 回転順序は、Z,Y,Xの順番です。 実数。 パラメータの適用順序は、 まず、倍率を掛けて、 次に、回転をして、 最後に、移動します。 |
ver1.0.0.1 |
E3DAddMotionFromBuf | モーション | メモリからモーションデータのロードを行います。 メモリ内には、quaまたはmotファイルと 同じフォーマットが入っているとみなして、 処理します。 quaデータの読み込み時は、 datakindに0を指定し、 motデータの読み込み時には、 datakindに1を指定してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [IN] 変数または、数値 : datakind quaデータの時は0を、 motデータの時は1を指定してください。 3. [IN] 変数 : buf バッファの変数 4. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 5. [OUT] 変数 : mk 読み込んだモーションを識別する番号 6. [OUT] 変数 : maxframe 読み込んだモーションの最大フレーム番号 (総フレーム数 - 1 と同じ) 7. [IN] 変数または、数値 : mvmult モーションの移動成分に掛ける倍率 省略すると1.0 実数 |
ver1.0.0.1 ver4.0.1.6で引数追加 |
E3DCheckFullScreenParams | 描画パラメータ | フルスクリーンのパラメータをチェックし、与えた条件に近いパラメータを取得します。 validflagに1が返された場合のみ、 validw, validh, validbitsの値は有効です。 validflagに0が返された場合には、 ウインドウの大きさなどの条件を変えて、 有効なパラメータが取得できるまで、 繰り返し、この命令を呼び出してください。 この命令は、E3DInitよりも前に呼ぶことを前提にしています。 この命令で、取得したvalidwとvalidhでウインドウを作成した後(screen命令やbgscr命令などで)、 E3DInitのbits引数にvalidbitsを指定して、フルスクリーン初期化してください。 具体的な使用例は、 e3dhsp3_fullscreen.hsp に書きましたので、ご覧ください。 ver5.3.1.3でflag引数追加。 |
1. [IN] 数値または、変数 : screenw 2. [IN] 数値または、変数 : screenh 3. [IN] 数値または、変数 : bits 使用したいフルスクリーンのパラメータを指定します。 screenwにスクリーンの幅 screenhにスクリーンの高さ bitsに色数を示すビット数を指定します。 4. [OUT] 変数 : validflag screenw, screenh, bitsで指定したパラメータに近い フルスクリーンが作れることが分かった場合に、 1がセットされます。 与えられたパラメータでは、フルスクリーンが作れないことが 分かった場合には、0がセットされます。 5. [OUT] 変数 : validw 6. [OUT] 変数 : validh 7. [OUT] 変数 : validbits フルスクリーンの作成に有効なパラメータが返されます。 screenw, screenh, bitsで指定したものとは、 多少、異なる場合があります。 これらの値は、validflagに1が代入されているときのみ有効です。 8. [IN] 数値または、変数 : flag 横:縦が4:3のウインドウサイズに自動的に調整したい場合は1を指定します。 調整機能をオフにしてscreenw, screenh引数そのままの値で判定するには2を指定します。 デフォルト値は1です。 flagに2を指定した場合はE3DInitのfullscreenflagにも2を指定してください。 |
ver1.0.0.1 ver5.3.1.3で拡張 |
E3DGetMaxMultiSampleNum | 描画パラメータ | アンチエイリアスに必要な、マルチサンプルの数の最大値を取得します。 この関数は、E3DInitよりも前に呼び出すことを 想定しています。 E3DInitに渡すmultisamplenumの値の決定に 使用してください。 具体的な使用例は、 e3dhsp3_antialias.hsp に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : bits 色数を決めるビット数を指定してください。 2. [IN] 数値または、変数 : iswindowmode ウインドウモードの時は1を フルスクリーンの時は0を指定してください。 3. [OUT] 変数 : maxmultisamplenum マルチサンプルの数の指定に有効な、最大の値を代入します。 0または、2から16の値が代入されます。 ハードウェアによって、異なる値が代入されます。 |
ver1.0.0.1 |
E3DChkConfLineAndFace | 当たり判定 | 任意の線分と、sigの面との当たり判定をします。 この当たり判定は、 hsidで指定したデータのボーン変形が、 必要になります。 ですが、同じポーズで何回も当たり判定を行う場合などには、いちいちボーン変形を計算し直さない方が高速です。 needtransに0を指定すると、 ボーン変形計算を省略することが出来ます。 (ポーズが変わった場合や、 カメラ位置を変えた場合には、 needtransを1にしてください。) 線分と面との当たりE3DChkConfLineAndFaceは、結構、重い処理です。 ですので、出来るだけ、呼び出し回数を 少なくするように心がけてください。 呼び出し回数を少なくするための工夫として、 まず、E3DChkConflictで、 おおざっぱな当たり判定を行い、 E3DChkConflictで、当たっていると判定されたときのみ、 E3DChkConfLineAndFaceを呼び出す、 などの方法が有効です。 E3DChkInViewより後で呼び出してください。 具体的な使用例は、 e3dhsp3_ConfLineAndFace.hsp に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : posx1 2. [IN] 数値または、変数 : posy1 3. [IN] 数値または、変数 : posz1 4. [IN] 数値または、変数 : posx2 5. [IN] 数値または、変数 : posy2 6. [IN] 数値または、変数 : posz2 線分を、(posx1, posy1, posz1)と、(posx2, posy2, posz2)で 指定してください。 実数。 7. [IN] 数値または、変数 : hsid モデルデータを識別するID 8. [IN] 数値または、変数 : needtrans ボーン変形計算をするかどうかのフラグ 詳しくは、左記をご覧ください。 9. [OUT] 変数 : partno 10. [OUT] 変数 : faceno 線分とhsidのモデルが衝突していた場合に、 衝突したパーツの番号と、面の番号が代入されます。 衝突していなかった場合は、-1が代入されます。 11. [OUT] 変数 : confx 12. [OUT] 変数 : confy 13. [OUT] 変数 : confz 衝突していた場合に、衝突した座標が代入されます。 実数型の変数。 14. [OUT] 変数 : nx 15. [OUT] 変数 : ny 16. [OUT] 変数 : nz 衝突していた場合に、衝突したhsidの面の法線ベクトルが代入されます。 実数型の変数。 17. [OUT] 変数 : revfaceflag 衝突していた面が裏面だった場合、1が代入されます。 表面だった場合は、0が代入されます。 |
ver1.0.0.1 |
E3DPickFace | 当たり判定 | 2Dの画面の座標に対応する、3Dモデルの座標を取得できます。 マウスでクリックした場所に、 3Dオブジェクトを移動させることなどに使用してください。 E3DPickVertが、3Dモデルの頂点を抽出するのに対し、 E3DPickFaceは、3Dモデルの面を抽出し、 2D座標に対応する面上の3D座標を取得します。 maxdist によって、どのくらい遠くまで 検索するかを指定できます。 maxdistの値を小さくするほど、 処理は高速になります。 計算には、E3DChkInViewの結果を 使用しています。 具体的な使用例は、 e3dhsp3_pickface.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 3. [IN] 数値または、変数 : pos2x 4. [IN] 数値または、変数 : pos2y 画面上の2D座標を指定してください。 5. [IN] 数値または、変数 : maxdist どのくらいの距離まで、3Dモデルの検索をするかを指定します。 この値を小さくするほど、処理は高速になります。 6. [OUT] 変数 : partno 7. [OUT] 変数 : faceno 2D座標に対応する3D座標が見つかった場合に、 その3Dモデルのパーツの番号と、面の番号が 代入されます。 見つからなかった場合は、-1が代入されます。 8. [OUT] 変数 : pos3x 9. [OUT] 変数 : pos3y 10. [OUT] 変数 : pos3z 2D座標に対応する3D座標が代入されます。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 11. [OUT] 変数 : nx 12. [OUT] 変数 : ny 13. [OUT] 変数 : nz 2D座標に対応する3D座標を含む面の法線ベクトルが 代入されます。 ベクトルの大きさは1のものを代入します。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 14. [OUT] 変数 : dist 視点と(pos3x, pos3y, pos3z)との距離が代入されます。 partnoに-1以外の値が代入されているときのみ、 この値は意味を持ちます。 実数型の変数。 15. [IN] 数値または、変数 : calcmode 1を指定してください。 |
ver1.0.0.1 |
E3DGetBBox | モデル情報 | 読み込んだモデルデータのバウンダリーボックスの取得が出来ます。 カメラの設定や、プロジェクションの設定を、モデルの大きさに応じて変更する場合などに使ってください。 mode引数で、 ローカル座標か、グローバル座標かを 指定できるようにする予定です。 現在は、グローバル座標しか取得できません。 この命令で使用する情報は、E3DChkInViewで更新されます。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 ビルボードの情報を得たい場合は-1を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 -1を指定した場合は、モデル全体のバウンダリーボックスを取得します。 hsidに-1を指定した場合は ビルボードのIDを指定してください。 3. [IN] 数値または、変数 : mode 現在はサポートされていません。 0を指定してください。 4. [OUT] 変数 : minx 5. [OUT] 変数 : maxx 6. [OUT] 変数 : miny 7. [OUT] 変数 : maxy 8. [OUT] 変数 : minz 9. [OUT] 変数 : maxz X座標の最小、最大 Y座標の最小、最大 Z座標の最小、最大 がそれぞれ、代入されます。 実数型の変数。 |
ver1.0.0.1 ver5.0.2.9で拡張 |
E3DGetVertNoOfFace | モデル情報 | facenoで指定した面に含まれる頂点の番号を3つ取得します。(3角形の頂点です) facenoには、E3DPickFaceなどで取得した 面の番号を指定してください。 E3DGetSamePosVertの説明も お読みください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [IN] 数値または、変数 : faceno 面を識別する番号を指定してください。 4. [OUT] 変数 : vertno1 5. [OUT] 変数 : vertno2 6. [OUT] 変数 : vertno3 3角形の面を構成する3つの頂点の番号が 代入されます。 |
ver1.0.0.1 |
E3DGetSamePosVert | モデル情報 | 同じ位置の頂点番号を取得する。 モデルデータ中には、同じ頂点座標で、 UV座標だけ違う頂点が存在します。 同じ位置の頂点の番号を取得する関数です。 E3DGetVertNoOfFaceと組み合わせて 使うことを想定しています。 samevertno には、見つかった頂点数分の 頂点番号が代入されます。 arraylengに5くらいの値を入れて、 dim samevertno, arrayleng で、配列を作成してください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [IN] 数値または、変数 : vertno 頂点を識別する番号を指定してください。 4. [OUT] 変数 : samevertno dim samevertno, arraylengで作成した配列を指定してください。 見つかった頂点の番号が代入されます。 5. [IN] 数値または、変数 : arrayleng samevertno配列を作成したときの大きさを指定してください。 6. [OUT] 変数 : samenum 見つかった頂点の数が代入されます。 つまり、maxindex = samenum - 1とすると samevertno(0) から samevertno(maxindex) まで、見つかった頂点の番号が、代入されていることになります。 |
ver1.0.0.1 |
E3DRdtscStart | 同期 | 時間の計測。 E3DRdtscStartとE3DRdtscStopは、セットで使用します。 E3DRdtscStartを呼び出してから、 E3DRdtscStopを呼び出すまでに、 プロセッサのタイムスタンプカウンタが どれくらい増えたかを取得できます。 |
なし | ver1.0.0.1 |
E3DRdtscStop | 同期 | 時間の計測。 E3DRdtscStartとE3DRdtscStopは、セットで使用します。 E3DRdtscStartを呼び出してから、 E3DRdtscStopを呼び出すまでに、 プロセッサのタイムスタンプカウンタが どれくらい増えたかを取得できます。 実数型の値が取得されます。 |
1. [OUT] 変数 : time E3DRdtscStartを呼んでからの、 タイムスタンプカウンタの増分が代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DSaveSig2Buf | モデル出力 | 読み込み済の形状データを、メモリ上に保存します。 保存するためのバッファは、 ユーザーさん側が用意します。 バッファの長さが分からないと、 保存操作が行えないため、 バッファ長の取得と、実際の保存とで、 合計2回、この関数を呼び出してください。 bufsize引数に0を指定すると、 保存を行わずに、 保存に必要なバッファの長さを取得します。 バッファの長さを取得した後に、 その長さをbufsize引数に指定して、 実際の保存を行ってください。 実際のコードは、以下のようになります。 E3DSaveSig2Buf hsid, sigbuf, 0, sigwritesize sdim sigbuf, sigwritesize E3DSaveSig2Buf hsid2, sigbuf, sigwritesize, writesize1 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数 : buf バッファの変数を指定してください。 3. [IN] 数値または、変数 : bufsize 0を指定すると、 保存に必要なバッファの長さが、writesizeに代入されます。 0以外を指定すると、 バッファbufに、形状データを保存します。 4. [OUT] 変数 : writesize bufsizeに0が指定されている場合には、 必要なバッファのサイズが代入されます。 bufsizeに0以外が指定されている場合には、 実際に保存したデータのバイト数を代入します。 |
ver1.0.0.1 |
E3DSaveQua2Buf | モーション出力 | 読み込み済のモーションデータを、メモリ上に保存します。 保存するためのバッファは、 ユーザーさん側が用意します。 バッファの長さが分からないと、 保存操作が行えないため、 バッファ長の取得と、実際の保存とで、 合計2回、この関数を呼び出してください。 bufsize引数に0を指定すると、 保存を行わずに、 保存に必要なバッファの長さを取得します。 バッファの長さを取得した後に、 その長さをbufsize引数に指定して、 実際の保存を行ってください。 実際のコードは、以下のようになります。 E3DSaveQua2Buf hsid, mkid, quabuf, 0, quawritesize, quatype sdim quabuf, quawritesize E3DSaveQua2Buf hsid, mkid, quabuf, quawritesize, writesize2, quatype quatype引数でファイルのタイプを指定します。 e3dhsp3.asで定義されているQUATYPE_ で始まる定数を使います。 QUATYPE_NUMはボーンの階層構造から計算した番号を基準にファイルを作ります。 QUATYPE_NAMEはボーンの名前を基準にファイルを作ります。 ver5.0.3.8より前のバージョンのquaファイルはQUATYPE_NUMです。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : mkid モーションを識別する番号を指定してください。 3. [IN] 変数 : buf バッファの変数を指定してください。 4. [IN] 数値または、変数 : bufsize 0を指定すると、 保存に必要なバッファの長さが、writesizeに代入されます。 0以外を指定すると、 バッファbufに、モーションデータを保存します。 5. [OUT] 変数 : writesize bufsizeに0が指定されている場合には、 必要なバッファのサイズが代入されます。 bufsizeに0以外が指定されている場合には、 実際に保存したデータのバイト数を代入します。 6. [IN] 数値または、変数 : quatype QUATYPE_ で始まる定数を指定。 デフォルト値はQUATYPE_NAME。 |
ver1.0.0.1 ver5.0.3.8で引数追加 |
E3DCameraShiftLeft | カメラ | カメラを左に平行移動します。 | 1. [IN] 数値または、変数 : shift 移動量。 実数。 |
ver1.0.0.1 |
E3DCameraShiftRight | カメラ | カメラを右に平行移動します。 | 1. [IN] 数値または、変数 : shift 移動量。 実数。 |
ver1.0.0.1 |
E3DCameraShiftUp | カメラ | カメラを上に平行移動します。 | 1. [IN] 数値または、変数 : shift 移動量。 実数。 |
ver1.0.0.1 |
E3DCameraShiftDown | カメラ | カメラを下に平行移動します。 | 1. [IN] 数値または、変数 : shift 移動量。 実数。 |
ver1.0.0.1 |
E3DGetCameraQ | カメラ | カメラの回転変換を表すクォータニオンを 取得します。 使い方の例は、 e3dhsp3_toolscamera.hsp にあります。 |
1. [IN] 数値または、変数 : qid クォータニオンのIDを渡してください。 qidで識別されるクォータニオンに、 カメラの回転情報を代入します。 qidには、E3DCreateQで取得したIDを使用してください。 |
ver1.0.0.1 |
E3DInvQ | 算術 | 逆クォータニオンを取得します。 使い方の例は、 e3dhsp3_toolscamera.hsp にあります。 |
1. [IN] 数値または、変数 : srcqid 2. [IN] 数値または、変数 : dstqid クォータニオンのIDを渡してください。 dstqidで識別されるクォータニオンに、 srcqidで識別されるクォータニオンの逆クォータニオンを代入します。 srcqid, dstqidには、 E3DCreateQで取得したIDを使用してください。 |
ver1.0.0.1 |
E3DSetCameraTwist | カメラ | カメラをツイスト(ロール)させます。 カメラの使い方は、この表の前に書いてある部分をお読みください。 E3DSetCameraTwistは、どのタイプのカメラ関数を使用している場合でも、有効です。 E3DSetCameraTargetを使用している場合には、 E3DSetCameraTargetで指定した上方向のベクトルを、さらにtwistdeg分ねじります。 |
1. [IN] 数値または、変数 : twistdeg カメラをtwistdeg度だけ、ツイストします。 実数。 |
ver1.0.0.1 |
E3DIKRotateBeta | モーション | IKによるジョイントの回転を行います。 目標の座標などを指定すると、 そこに近づくように、回転します。 この関数は、ベータ版です。 今後のバージョンアップで、 互換性のとれない変更をする場合がありますので、ご注意ください。 この関数では、指定したモーションの1フレーム分の姿勢情報しか変更しません。 モーション全体に、IK結果を反映させたい場合は、 IK計算した前後のキーフレーム間で、 E3DFillUpMotionを呼び出す必要があります。 使い方の例は、 e3dhsp3_ikrotatebeta.hsp にあります。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 3. [IN] 数値または、変数 : jointno ジョイントパーツを識別する番号を指定してください。 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定するとエラーになります。 4. [IN] 数値または、変数 : motionid モーションを識別する番号を指定してください。 5. [IN] 数値または、変数 : frameno モーションのフレーム番号を指定してください。 6. [IN] 数値または、変数 : iklevel IK計算時の階層数を指定します。 何階層、親をさかのぼって、IK計算するかを指定します。 7. [IN] 数値または、変数 : axiskind IKの回転の際の軸をどのように決定するかを指定します。 0の時は、視線に平行なベクトルを使います。 1の時は、axisx, axisy, axiszに指定した軸を使います。 2の時は、自動的に軸を設定します。 8. [IN] 数値または、変数 : axisx 9. [IN] 数値または、変数 : axisy 10. [IN] 数値または、変数 : axisz IKの回転軸を指定します。 axiskindに、1を指定したときのみ、有効です。 実数。 11. [IN] 数値または、変数 : calclevel 計算の細かさを指定します。 正の整数を指定してください。 値が大きいほど細かく動きますが、 現バージョンでは、大きすぎても、うまくいきません。 12. [IN] 数値または、変数 : targetx 13. [IN] 数値または、変数 : targety 14. [IN] 数値または、変数 : targetz jointnoで指定したジョイントが、 座標(targetx, targety, targetz)に近づくように、回転します。 実数。 15. [OUT] 変数 : resx 16. [OUT] 変数 : resy 17. [OUT] 変数 : resz jointnoで指定したジョイントの、計算後の座標が代入されます。 実数型の変数。 18. [OUT] 変数 : lastparent 姿勢の変更のあったボーンのうち、 一番親の番号が代入されます。 この値を、E3DRenderに渡すと、処理の高速化が出来ます。 詳しくは、E3DRednerのところの注意事項をお読みください。 |
ver1.0.0.1 |
E3DIKRotateBeta2D | モーション | E3DIKRotateBetaの2D座標指定バージョンです。 目標座標が、2Dになった以外は、 E3DIKRotateBetaと同じです。 詳しくは、E3DIKRotateBetaの説明を お読みください。 具体的な使用例は、 e3dhsp3_MouseDePose.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 3. [IN] 数値または、変数 : jointno ジョイントパーツを識別する番号を指定してください。 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定するとエラーになります。 4. [IN] 数値または、変数 : motionid モーションを識別する番号を指定してください。 5. [IN] 数値または、変数 : frameno モーションのフレーム番号を指定してください。 6. [IN] 数値または、変数 : iklevel IK計算時の階層数を指定します。 何階層、親をさかのぼって、IK計算するかを指定します。 7. [IN] 数値または、変数 : axiskind IKの回転の際の軸をどのように決定するかを指定します。 0の時は、視線に平行なベクトルを使います。 1の時は、axisx, axisy, axiszに指定した軸を使います。 2の時は、自動的に軸を設定します。 8. [IN] 数値または、変数 : axisx 9. [IN] 数値または、変数 : axisy 10. [IN] 数値または、変数 : axisz IKの回転軸を指定します。 axiskindに、1を指定したときのみ、有効です。 実数。 11. [IN] 数値または、変数 : calclevel 計算の細かさを指定します。 正の整数を指定してください。 値が大きいほど細かく動きますが、 現バージョンでは、大きすぎても、うまくいきません。 12. [IN] 数値または、変数 : target2dx 13. [IN] 数値または、変数 : target2dy jointnoで指定したジョイントが、 指定した2D座標に近づくように、回転します。 14. [OUT] 変数 : resx 15. [OUT] 変数 : resy 16. [OUT] 変数 : resz jointnoで指定したジョイントの、計算後の座標が代入されます。 実数型の変数。 17. [OUT] 変数 : lastparent 姿勢の変更のあったボーンのうち、 一番親の番号が代入されます。 この値を、E3DRenderに渡すと、処理の高速化が出来ます。 詳しくは、E3DRednerのところの注意事項をお読みください。 |
ver1.0.0.1 |
E3DGetMotionType | モーション | モーションのタイプを取得します。 得られるタイプの意味は、以下のようになります。 1がフレーム番号固定(Stop) 2が最終フレーム番号まで進んだら固定(Clamp) 3が最終フレーム番号まで進んだら、先頭フレームに戻る(Round) 4が最終フレーム番号まで進んだら、先頭フレームの方向に逆進する(PingPong) 5が最終フレームまで進んだら、指定フレームにジャンプする(Jump) |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 3. [OUT] 変数 : typeptr 左で説明したモーションの種類が代入されます。 |
ver1.0.0.1 |
E3DSetMotionType | モーション | モーションのタイプをセットします。 typeに指定する値の意味は、以下のようになります。 1がフレーム番号固定(Stop) 2が最終フレーム番号まで進んだら固定(Clamp) 3が最終フレーム番号まで進んだら、先頭フレームに戻る(Round) 4が最終フレーム番号まで進んだら、先頭フレームの方向に逆進する(PingPong) |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 3. [IN] 数値または、変数 : type 左で説明したモーションの種類を指定してください。 |
ver1.0.0.1 |
E3DGetIKTransFlag | モデル情報 | IK伝達禁止情報を、ジョイントから取得します。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : jointid ジョイントを識別する番号を指定してください。 3. [OUT] 変数 : flagptr 通常の場合は0が、 IK伝達禁止の時は1が代入されます。 |
ver1.0.0.1 |
E3DSetIKTransFlag | モデル情報 | IK伝達禁止情報を、ジョイントにセットします。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : jointid ジョイントを識別する番号を指定してください。 3. [IN] 数値または、変数 : flag 通常の場合は0を、 IK伝達禁止の時は1を指定してください。 |
ver1.0.0.1 |
E3DDestroyAllMotion | モーション | E3DAddMotionで読み込んだ、モーションデータを、全て、破棄します。 | 1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 |
ver1.0.0.1 |
E3DGetUserInt1OfPart | モデル情報 | パーツに設定されている、ユーザーデータを、取得します。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [OUT] 変数 : dataptr ユーザーデータが代入されます。 |
ver1.0.0.1 |
E3DSetUserInt1OfPart | モデル情報 | パーツに、ユーザーデータをセットします。 | 1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [IN] 数値または、変数 : data ユーザーデータを指定してください。 |
ver1.0.0.1 |
E3DGetBSphere | モデル情報 |
パーツ毎の、境界球情報を取得します。 ボーン変形を考慮した、グローバル座標系の 値が取得できます。 E3DChkInViewの計算結果を、もとにしています。 表示用オブジェクトのみに対して有効です。 (ボーンに対して呼んでも、無意味です。) partnoに-1を指定するとモデル全体の境界球を取得できます。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [OUT] 変数 : centerx 4. [OUT] 変数 : centery 5. [OUT] 変数 : centerz 境界球の中心座標が代入されます。 実数型の変数。 6. [OUT] 変数 : r 境界球の半径が代入されます。 実数型の変数。 |
ver1.0.0.1 ver5.4.1.4で拡張 |
E3DGetChildJoint | モデル情報 | 指定したジョイントの、子供ジョイントの数と、子供のシリアル番号を取得します。 childarray配列に、 子供の数分の、シリアル番号が 代入されます。 子供の数より、配列の長さが、大きいように してください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : parentno 親のジョイントの番号を指定してください。 3. [IN] 数値または、変数 : arrayleng childarray引数に格納できる要素数を指定してください。 dim childarray, 100とした場合は、 100を指定してください。 childnum引数に代入される数が、arraylengより大きい場合は、 配列の長さが足りないことになります。 4. [OUT] 変数 : childarray 子供ジョイントの、シリアル番号が、代入されます。 arraylengがchildnumより、小さい場合は、 arrayleng個の、シリアル番号しか、代入されません。 5. [OUT] 変数 : childnum 子供ジョイントの数が、代入されます。 |
ver1.0.0.1 |
E3DDestroyMotionFrame | モーション | 指定したキーフレームを削除します。 モーションの変更を反映させるには、 E3DFillUpMotionを呼ぶ必要があります。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 3. [IN] 数値または、変数 : frameno 削除するフレームの番号を指定してください。 -1を指定すると、全てのキーフレームを削除します。 |
ver1.0.0.1 |
E3DGetKeyFrameNo | モーション | 指定したボーンの、キーフレームのフレーム番号を全て取得します。 framearrayには、 dim framearray, 50 などで作成した、大きめの配列を使用してください。 配列の長さより、framenumが、大きい場合には、エラーになりますので、 注意してください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 3. [IN] 数値または、変数 : boneno ボーンパーツを識別する番号を指定してください。 4. [OUT] 変数 : framearray この配列に、フレーム番号が、代入されます。 5. [IN] 数値または、変数 : arrayleng framearrayをアロケート(dim)したときの要素数を指定してください。 6. [OUT] 変数 : framenum framearrayに格納した要素の数が代入されます。 キーフレームの数です。 |
ver1.0.0.1 |
E3DConvScreenTo3D | 算術 | 任意の2D座標を3D座標に変換します。 マウスの位置に対応する、3D座標を 求める場合などに、便利です。 この関数を使用して、 マウスクリックで、 3Dラインを描画するサンプルを e3dhsp3_DrawLine.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : x2d 3. [IN] 数値または、変数 : y2d 変換したい、マウスの位置などを、 (x2d, y2d)で指定します。 4. [IN] 数値または、変数 : z カメラからどのくらいの距離の平面上の点を取得するかを 指定します。 3D座標のZの値ではありません。 カメラからの距離を制御出来るものと考えてください。 (距離の値とは違います。) 0.0のとき、カメラに一番近い座標がえられます。 1.0のとき、カメラから、一番遠い(見える範囲での) 座標がえられます。 見える範囲とは、 E3DSetProjectionで指定した範囲のことです。 実際のカメラの距離と、このzの値は、 比例関係にありません。 zの値をちょっと大きくしただけで、 カメラからの距離が大きく変わったり、 反対に、zを大きく変えても、 カメラからの距離が少ししか変わらない領域もあります。 0に近すぎる値では、 見えないことがあるので注意してください。 実数。 5. [OUT] 変数 : x3d 6. [OUT] 変数 : y3d 7. [OUT] 変数 : z3d 上で指定した2D座標に対応する3D座標が、 (x3d, y3d, z3d)に代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DVec3Length | 算術 | 指定したベクトルの長さを取得します。 2点の距離の計算などに使ってください。 例えば、 (posx1, posy1, posz1)と(posx2, posy2, posz2) の距離を計算したいときには、 vecx = posx1 - posx2 vecy = posy1 - posy2 vecz = posz1 - posz2 として、この関数に渡してください。 |
1. [IN] 数値または、変数 : vecx 2. [IN] 数値または、変数 : vecy 3. [IN] 数値または、変数 : vecz ベクトルを指定します。 実数。 4. [OUT] 変数 : length ベクトルの長さが代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DSetUV | モデル情報 | テクスチャーのUV座標をセットします。 partnoには、 E3DGetPartNoByNameで取得した番号を、 vertnoには、 E3DGetVertNumOfPartで取得した頂点数を vertnumとしたとき、 0から(vertnum - 1)までの値を渡してください。 vertnoに-1を指定すると、 指定パーツの全ての頂点に対して、 処理を行うようにしました。 ver5.0.4.4でビルボードに対応しました。 ver5.0.5.5でclampflagを追加しました。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid。 -1を渡すとビルボードの処理をします。 2. [IN] 変数または、数値 : partno パーツを識別する番号。 hsidに-1を渡した場合はビルボードIDを指定します。 3. [IN] 変数または、数値 : vertno 頂点の番号。 -1を指定すると、全ての頂点に対して処理します。 4. [IN] 変数または、数値 : u 5. [IN] 変数または、数値 : v 設定したいUV値の値を指定してください。 通常は0.0から1.0の値。 実数。 6. [IN] 変数または、数値 : setflag setflag に0を指定すると、 指定UV値を、そのままセットします。 setflagに1を指定すると、 指定UV値を、既存のUV値に、足し算します。 7. [IN] 変数または、数値 : clampflag 1をセットするとUVの値を0.0から1.0の間にクランプします。 0を指定するとクランプは行いません。 何も指定しなかった場合は0と同じです。 |
ver1.0.0.1 ver5.0.4.4で拡張 ver5.0.5.5で拡張 |
E3DGetUV | モデル情報 | テクスチャーのUV座標を取得します。 partnoには、 E3DGetPartNoByNameで取得した番号を、 vertnoには、 E3DGetVertNumOfPartで取得した頂点数を vertnumとしたとき、 0から(vertnum - 1)までの値を渡してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号 3. [IN] 変数または、数値 : vertno 頂点の番号 4. [OUT] 変数 : u 5. [OUT] 変数 : v UV座標の値が、代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DPickBone | モデル情報 | 指定した2D座標に近いジョイントの番号を取得します。 2D座標には、マウスの座標などを指定してください。 具体的な使用例は、 e3dhsp3_MouseDePose.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 2D座標を、(posx, posy)で指定します。 4. [OUT] 変数 : jointno 指定した2D座標に近いジョイントがある場合には、 そのジョイントのIDが代入されます。 近くにジョイントがない場合には、0以下が代入されます。 |
ver1.0.0.1 |
E3DShiftBoneTree2D | モーション | 指定した2D座標に近づくように、ボーンツリー全体を、移動します。 具体的な使用例は、 e3dhsp3_MouseDePose.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid 形状データを識別するID 3. [IN] 数値または、変数 : jointno ジョイントを識別するID E3DPickBoneなどで取得した、 ジョイントの番号を渡してください。 4. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmotidを指定してください。 5. [IN] 数値または、変数 : frameno ポーズを設定したいフレーム番号を指定してください。 6. [IN] 数値または、変数 : target2dx 7. [IN] 数値または、変数 : target2dy jointnoで指定したジョイントが、 指定した2D座標に近づくように、 ボーンツリー全体が移動します。 |
ver1.0.0.1 |
E3DGetDispSwitch | モデル情報 | ディスプレイスイッチの状態を取得します。 ディスプレイスイッチ情報は、ビットごとの和になっています。 ディスプレイスイッチ番号ds がオンの場合は、 2のds乗の値が足されていることになります。 例えば、ディスプレイスイッチ3だけがオンの場合は、2の3乗の8という値が代入されています。 ディスプレイスイッチがオンになっているかを調べて処理するには、 &演算子と、2のスイッチ番号乗の値を使います。 例えば、スイッチ3がオンかどうかを調べるには、 if( (dispswitch & 8) != 0 ) { //オンの時の処理 } else { //オフの時の処理 } のようにします。 この命令はver5.0.0.1以降は機能しません。 新しいE3DGetDispSwitch2をご利用ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID motidに-1を指定すると、 E3DSetDispSwitchで、motidに-1を指定して設定した値が dispswitch引数に代入されます。 motidに-2を指定すると、 現在設定されている、モーションのスイッチ状態が、 dispswitch引数に代入されます。 3. [IN] 数値または、変数 : frameno フレーム番号を指定してください。 framenoに-1を指定すると、 現在のフレーム番号の、スイッチ状態が、 dispswitch引数に代入されます。 4. [OUT] 変数 : dispswitch スイッチの状態が代入されます。 詳しくは、左記をご覧ください。 |
ver1.0.0.1 |
E3DRotateBillboard | ビルボード | ビルボードを、カメラの方向を向けたまま、回転します。 |
1. [IN] 変数または、数値 : billboardid ビルボードを識別する番号 2. [IN] 変数または、数値 : rotdeg ビルボードを、rotdeg度だけ、 回転します。 実数。 3. [IN] 変数または、数値 : rotkind rotkindに0を指定すると、相対値モードになります 現在のビルボードの向きに、 更に、指定角度だけ、回転を加えます。 rotkindに1を指定すると、絶対値モードになります。 初期状態に対して、指定角度だけ、回転を加えます。 |
ver1.0.0.1 |
E3DSetBillboardUV | ビルボード | ビルボードのUVを設定します。 横方向にunum個、縦方向にvnum個の、タイル状に作ったテクスチャーの、タイルの番号を指定することで、指定した画像のUVを設定します。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 タイルの数が12個の場合は、 タイルの番号は、0から11になりますが、 それより大きな値や小さな値を指定することも可能です。 例えば、タイルの数が12個の場合、 12を指定すると、 タイル番号0が表示され、 13を指定すると、 タイル番号1が表示され、 -1を指定すると、 タイル番号11が表示されるという具合に 機能します。 ver5.0.4.5でrevuflag引数を追加しました。 |
1. [IN] 変数または、数値 : bbid ビルボードを識別するid 2. [IN] 変数または、数値 : unum 3. [IN] 変数または、数値 : vnum タイルの横と縦の個数 4. [IN] 変数または、数値 : tileno 設定したいテクスチャのタイルの番号 5. [IN] 変数または、数値 : revuflag 1を指定するとテクスチャを左右反転させます。 0を指定するとそのまま。 省略したときは0(そのまま)となります。 |
ver1.0.0.1 ver5.0.4.5で拡張 |
E3DCreateTexture | テクスチャ | 指定したファイルからテクスチャを作ります。画面と同じテクスチャを作ることも可能です。 テクスチャの操作には、この関数で取得した テクスチャのID、texidを使用してください。 transparentに1(黒透過)を指定した場合には、 黒透過処理が行われます。 D3DPOOL_DEFAULTで、 テクスチャを作成する場合には、transparentに1を指定すると失敗することがあります。 filenameに、"MainWindow"を指定すると、 バックバッファと同じ内容で、 同じ大きさのサーフェスを作成します。 この際、poolに何を指定しても、 強制的に、システムメモリに作成します。 また、このとき、transparentに1を指定できません。 "MainWindow"を指定した場合は、 E3DSetTextureToDispObjは、使えません。 E3DCopyTextureToBackBufferを使ってください。 "MainWindow"を指定したときは、バックバッファと同じフォーマットで、それ以外は、D3DFMT_A8R8G8B8で作成します。 DX8からDX9への移行時の変更の関係で、 ver3.0.3.4現在、"MainWindow"指定は使用できない状態です。 具体的な使用例は、 e3dhsp3_TextureChange.hsp に書きましたので、ご覧ください。 |
1. [IN] 文字列または、文字列の変数 : filename テクスチャファイル のパス文字列。 "MainWindow"を指定すると、 画面と同じ内容で、同じ大きさのテクスチャが作成されます。 ただし、このとき、注意する点がいつくかあるので、 左記をご覧ください。 2. [IN] 変数または、数値 : pool どのメモリ位置にテクスチャを作成するかを指定します。 e3dhsp3.asで定義してある D3DPOOL_DEFAULT (普通はビデオメモリに作られます) D3DPOOL_MANAGED (DirectXの管理(バックアップ有り)) D3DPOOL_SYSTEMMEM (システムメモリに作られます) の中から選びます。 3. [IN] 変数または、数値 : transparent 透過情報を指定します。 0を指定すると、不透明のテクスチャ。 1を指定すると、黒色を透過するテクスチャ。 2を指定すると、テクスチャファイルのアルファに従って 透過するテクスチャになります。 4. [OUT] 変数 : texid 作成したテクスチャを識別するID テクスチャ操作の際には、このIDを使用してください。 |
ver1.0.0.1 |
E3DGetTextureInfo | テクスチャ | 作成したテクスチャの情報を取得します。 テクスチャのサイズは、 ビデオカードによっては、2の乗数のサイズしか 確保できないので、 ファイルのサイズと異なる場合があります。 |
1. [IN] 変数または、数値 : texid テクスチャを識別するID 2. [OUT] 変数 : width 3. [OUT] 変数 : height テクスチャの幅と高さ 4. [OUT] 変数 : pool 作成メモリ位置 5. [OUT] 変数 : transparent 透過モード 6. [OUT] 変数 : format フォーマット |
ver1.0.0.1 |
E3DCopyTextureToTexture | テクスチャ | テクスチャからテクスチャへ、内容をコピーします。 srcとdstで大きさや、フォーマットが違う場合は、 エラーになります。 |
1. [IN] 変数または、数値 : srctexid コピー元のテクスチャを識別するID 2. [IN] 変数または、数値 : dsttexid コピーされるテクスチャを識別するID |
ver1.0.0.1 |
E3DGetTextureFromDispObj | テクスチャ | 読み込み済の3Dオブジェクトに設定されているテクスチャを取得します。 sigモデルデータに対する操作には E3DGetTextureFromMaterialをお使いください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID -1を指定すると、ビルボードの処理を行います。 2. [IN] 変数または、数値 : partno パーツの番号。 E3DGetPartNoByNameで取得した番号を指定してください。 hsidに-1を指定した場合には、 ビルボードのIDを指定してください。 3. [OUT] 変数 : texid テクスチャを識別するID 指定したパーツにテクスチャが貼られていない場合には、 texidには、-1が代入されます。 |
ver1.0.0.1 |
E3DSetTextureToDispObj | テクスチャ | 読み込み済の3Dオブジェクトに、テクスチャを設定します。 sigモデルデータに対する操作には E3DSetTextureToMaterialをお使いください。 テクスチャをセットしても、 UV座標は自動的に生成されません。 動的にテクスチャを設定する場合は、 UV座標も、E3DSetUVで、設定するか、 もしくは、 あらかじめ、モデルに仮のテクスチャを貼っておいて、UV設定しておく必要があります。 具体的な使用例は、 e3dhsp3_TextureChange.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID -1を指定すると、ビルボードの処理を行います。 -2を指定するとスプライトの処理を行います。 2. [IN] 変数または、数値 : partno パーツの番号。 E3DGetPartNoByNameで取得した番号を指定してください。 hsidに-1を指定した場合には、 ビルボードのIDを指定してください。 hsidに-2を指定した場合には スプライトのIDを指定してください。 3. [IN] 変数または、数値 : texid 貼り付けたいテクスチャのIDを指定します。 |
ver1.0.0.1 |
E3DRasterScrollTexture | テクスチャ | テクスチャに、ラスタースクロール処理を加えます。 ゆらゆらと揺れる効果が得られます。 srctexidとdesttexidは、同じ時は、エラーになります。 srcとdestで、大きさ、フォーマットが違うときも、エラーになります。 texidには、両方とも、D3DPOOL_SYSTEMMEMで作成したテクスチャーを指定してください。 それ以外も可能ですが、極端に処理速度が落ちます。 ビデオメモリにラスター処理をしたい場合は、 システムメモリのテクスチャー同士で、ラスター処理をしたあと、 ビデオメモリのテクスチャーに、E3DCopyTextureToTextureで転送してください。 DX8からDX9への移行時の変更の関係で、 ver3.0.3.4現在この命令は使用できない状態です。 |
1. [IN] 変数または、数値 : srctexid 処理する前のテクスチャを識別するID 2. [IN] 変数または、数値 : desttexid 処理した結果を格納するテクスチャを識別するID 3. [IN] 変数または、数値 : t 時間経過を指定します。 4. [IN] 変数または、数値 : param1 揺れの縦方向の具合を指定します。 param1の値が大きいほど、 変化が激しくなります。 実数。 5. [IN] 変数または、数値 : param2 揺れの横方向の具合を指定します。 param2の値が大きいほど、 変化が激しくなります。 実数。 |
ver1.0.0.1 |
E3DCopyTextureToBackBuffer | テクスチャ | テクスチャをバックバッファにコピーします。 E3DCreateTextureで、 filenameに"MainWindow"を指定して作成した テクスチャーを、バックバッファにコピーします。 フォーマットが異なる場合は、失敗します。 |
1. [IN] 変数または、数値 : texid コピー元のテクスチャを識別するID |
ver1.0.0.1 |
E3DDestroyTexture | テクスチャ | テクスチャを破棄します。 |
1. [IN] 変数または、数値 : texid テクスチャを識別するID |
ver1.0.0.1 |
E3DSetLightAmbient | ライト | ライトのアンビエント色を指定します。 地面データにのみ、影響します。 この命令は、現在サポートされていません。 |
1. [IN] 変数または、数値 : lightid ライトを識別するID 2. [IN] 変数または、数値 : R 3. [IN] 変数または、数値 : G 4. [IN] 変数または、数値 : B 色のRGBを0から255までの値で、指定します。 |
ver1.0.0.1 |
E3DSetLightSpecular | ライト | ライトのスペキュラー色を指定します。 |
1. [IN] 変数または、数値 : lightid ライトを識別するID 2. [IN] 変数または、数値 : R 3. [IN] 変数または、数値 : G 4. [IN] 変数または、数値 : B 色のRGBを0から255までの値で、指定します。 |
ver1.0.0.1 |
E3DInvColTexture | テクスチャ | テクスチャの色を反転します。 具体的な使用例は、 e3dhsp_TextureRasteras に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : texid テクスチャを識別するID |
ver1.0.0.1 |
E3DSaveGndFile | 地面出力 | 地面データをgndファイルに保存します。 この関数はサポートが中止されました。 地面を高速に読み込みたい場合はsigを使ってください。 |
1. [IN] 数値または、変数 : hsid 地面データを識別するID 2. [IN] 文字列または、文字列変数 : filename 保存ファイル名(パス)を指定してください。 |
ver1.0.0.1 |
E3DLoadGndFile | 地面 | 地面データ(*.gnd)を読み込んで、hsidを得る。 gndファイルの読み込み速度は、mqoファイルの読み込みよりも、 だいぶ速くなります。 |
1. [IN] 文字列または、文字列の変数 : fname *.gnd のパス文字列。 2. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 3. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 2を指定すると0.0から1.0の間にクランプします。 4. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DLoadGndFileFromBuf | 地面 | メモリから地面データのロードを行います。 メモリ内には、gndファイルと同じフォーマットが 入っているとみなして、処理します。 テクスチャファイルは、通常読込と同様に、 ファイルから行います。 resdirには、テクスチャの存在するフォルダのパスを指定してください。 最後に、"\\"を付けるのを忘れないでください。 例えば、 resdir = "C:\\hsp\\Meida\\" や resdir = dir_cur+ "\\" などのように指定してください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 5. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 2を指定すると0.0から1.0の間にクランプします。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DCreateTextureFromBuf | テクスチャ | メモリに読み込んだ絵のデータから、テクスチャを作成します。 filenameの代わりに、バッファを指定し、 "MainWindow"が扱えないこと以外は、 E3DCreateTextureと同じです。 E3DCreateTextureの説明を、 お読みください。 例えば、以下のような使い方になります。 sdim buf0, 800000 ;ファイルサイズより大きめ bload "pict.bmp", buf0 bufsize0 = strsize E3DCreateTextureFromBuf buf0, bufsize0, D3DPOOL_MANAGED, 1, texid0 |
1. [IN] 変数 : buf バッファの変数 2. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ(バイト) 3. [IN] 変数または、数値 : pool どのメモリ位置にテクスチャを作成するかを指定します。 e3dhsp3.asで定義してある D3DPOOL_DEFAULT (普通はビデオメモリに作られます) D3DPOOL_MANAGED (DirectXの管理(バックアップ有り)) D3DPOOL_SYSTEMMEM (システムメモリに作られます) の中から選びます。 4. [IN] 変数または、数値 : transparent 透過情報を指定します。 0を指定すると、不透明のテクスチャ。 1を指定すると、黒色を透過するテクスチャ。 2を指定すると、テクスチャファイルのアルファに従って 透過するテクスチャになります。 5. [OUT] 変数 : texid 作成したテクスチャを識別するID テクスチャ操作の際には、このIDを使用してください。 |
ver1.0.0.1 |
E3DLoadSoundFromBuf | サウンド | メモリから音データを読み込み、IDを取得します。 メモリから読み込むこと以外は、 E3DLoadSoundと同じです。 E3DLoadSoundの説明をお読みください。 現在、oggにはこの命令は使えません。 ver5.3.1.6でoggdatanum引数を削除。 |
1. [IN] 変数 : buf バッファの変数 2. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ(バイト) 3. [IN] 変数または、数値 : type 0を指定してください。 4. [IN] 変数または、数値 : use3dflag 3Dサウンドとして読み込む場合は1を指定してください。 デフォルト値は0. 5. [IN] 変数または、数値 : reverbflag リバーブをオンにしたいときは1を オフにしたいときは0を指定してください。 6. [IN] 変数または、数値 : bufnum 同じIDのサウンドを同時にいくつ重ねて再生できるかを指定します。 7. [OUT] 変数 : soundid 作成した音データを識別する番号が代入されます。 |
ver1.0.0.1 ver5.3.0.0で仕様変更 ver5.3.0.3で拡張 ver5.3.1.6で修正 |
E3DTwistBone | モーション | ボーンをツイストします。 指定したジョイントと、その親のジョイントのベクトルを軸として、回転します。 boneno引数に指定したジョイントに 親のジョイントがない場合は、 この関数を呼んでも、 何も効果はありません。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid モーションを識別する番号 3. [IN] 変数または、数値 : frameno 操作するモーションのフレーム番号 4. [IN] 変数または、数値 : jointno ジョイントを識別する番号 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定すると エラーになります。 5. [IN] 変数または、数値 : twistdeg twistdeg 度だけ、ツイストします。 実数。 |
ver1.0.0.1 |
E3DGetBoneQ | モーション | ボーンのクォータニオンを取得します。 kind引数の値により、 親のクォータニオンの影響を受けたものと、 受けていないものを取得できます。 モーションを読み込んでいないときは、 エラーになります。 指定したframenoに、キーフレームがない場合は、 補間計算した結果を取得します。 エンドジョイント(子供を持たないジョイント) に対しても、呼ぶことが出来ます。 ボーン以外の番号をbonenoに入れると エラーになります。 マルチレイヤーモーションを使用する場合は この命令は使えません。 E3DGetCurrentBoneQをお使いください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 4. [IN] 数値または、変数 : frameno フレームの番号を指定してください。 5. [IN] 数値または、変数 : kind 親の影響を受けたクォータニオンを 取得する場合は、1を指定してください。 親の影響を受けていないクォータニオンを 取得する場合は、0を指定してください。 親の影響を受け、 更に、モデル全体の向きの影響を受けたクォータニオンを取得 するには、2を指定してください。 6. [IN][OUT] 数値または、変数 : qid クォータニオンを識別する番号。 E3DCreateQで取得した番号を指定してください。 qidで識別されるクォータニオンの内容に、 指定したボーンのクォータニオンの内容を、 代入します。 |
ver1.0.0.1 |
E3DSetBoneQ | モーション | ボーンのクォータニオンをセットします。 指定したフレームに、モーションポイントが存在しない場合は、 自動的に、モーションポイントを作成した後、 クォータニオンをセットします。 E3DFillUpMotionを呼び出さないと、 他のフレームには、反映されません。 ver5.4.0.0でcurboneonlyフラグを追加しました。 このフラグが0のとき(今までと同じ動作)は、クォータニオンをセットした後、親にさかのぼって姿勢の計算をします。 この計算はE3DFillUpMotionでも行われるので、多数のボーンにSetBoneQをするとかなりのタイムロスになります。 curboneonlyに1をセットするとこの計算をスキップします。 curboneonlyに1をセットして多数のボーンの設定を行った後に、一回E3DFillUpMotionをすれば良いことになります。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 4. [IN] 数値または、変数 : frameno フレームの番号を指定してください。 5. [IN] 数値または、変数 : qid クォータニオンを識別する番号。 E3DCreateQで取得した番号を指定してください。 qidで識別されるクォータニオンの内容を、 ボーンの姿勢にセットします。 6. [IN] 数値または、変数 : curboneonly 前述をお読み下さい。 |
ver1.0.0.1 ver5.4.0.0で拡張 |
E3DIsSoundPlaying | サウンド | 音が再生中かどうかを調べます。 |
1. [IN] 変数または、数値 : soundid 音を識別する番号を、指定します。 2. [OUT] 変数 : playing 再生中の場合は1が、 そうでない場合は0が、代入されます。 |
ver1.0.0.1 |
E3DIKTranslate | モーション | IKで、ボーンの位置を移動します。 RokDeBone2のTボタンと同様に、 一番親のボーン以外で、この関数を呼ぶと、 モデルの形状が、崩れます。 形状を保ちたい場合は、E3DIKRotateBetaを使用してください。 位置には、グローバル座標を指定してください。 モーションを読み込んでいないと、エラーになります。 framenoに、モーションポイントがない場合は、 自動的に作成した後に、移動をセットします。 ジョイント以外に対して呼ぶとエラーになります。 他のフレームにも、結果を反映させたい場合は、 E3DFillUpMotionを呼んでください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 4. [IN] 数値または、変数 : frameno フレームの番号を指定してください。 5. [IN] 数値または、変数 : posx 6. [IN] 数値または、変数 : posy 7. [IN] 数値または、変数 : posz ボーンを移動させたいグローバル座標を、 (posx, posy, posz)で指定します。 実数。 |
ver1.0.0.1 |
E3DSetUVTile | モデル情報 | ひとつの画像に、タイル画像を敷き詰めたテクスチャの、UV座標を、タイル番号で、セットできます。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 タイルの数が12個の場合は、 タイルの番号は、0から11になりますが、 それより大きな値や小さな値を指定することも可能です。 例えば、タイルの数が12個の場合、 12を指定すると、 タイル番号0が表示され、 13を指定すると、 タイル番号1が表示され、 -1を指定すると、 タイル番号11が表示されるという具合に 機能します。 5種類の投影、貼り付けをサポートします。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno 表示パーツを識別する番号を指定してください。 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数 : texrule 投影、貼り付けのモードを指定します。 0を指定すると、X軸投影 1を指定すると、Y軸投影 2を指定すると、Z軸投影 3を指定すると、円筒貼り付け 4を指定すると、球貼り付け です。 4. [IN] 数値または、変数 : unum テクスチャのタイル画像の 横方向の個数を指定してください。 5. [IN] 数値または、変数 : vnum テクスチャのタイル画像の 縦方向の個数を指定してください。 6. [IN] 数値または、変数 : tileno 表示したいタイルの番号を指定してください。 タイル番号については、左記をお読みください。 |
ver1.0.0.1 |
E3DImportMQOFileAsGround | 地面 | hsidに読み込み済の地面データに、 filenameで指定した地面データを インポート(追加読み込み)します。 |
1. [IN] 数値または、変数 : hsid 読み込み済の地面モデルを識別する番号を 指定してください。 2. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 3. [IN] 変数または、数値 : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 2を指定すると0.0から1.0の間にクランプします。 4. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * multで計算されます。 等倍は1.0。 実数。 5. [IN] 変数または、数値 : offsetx 6. [IN] 変数または、数値 : offsety 7. [IN] 変数または、数値 : offsetz 読み込み位置のオフセット座標を、 (offsetx, offsety, offsetz)で指定します。 ローカル座標で指定します。 実数。 8. [IN] 変数または、数値 : rotx 9. [IN] 変数または、数値 : roty 10. [IN] 変数または、数値 : rotz 追加形状を、X,Y,Zそれぞれの軸に対して、 rotx, roty, rotz度だけ、回転してから、 インポートを行います。 回転順序は、Z,Y,Xの順番です。 実数。 パラメータの適用順序は、 まず、倍率を掛けて、 次に、回転をして、 最後に、移動します。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DLoadMQOFileAsMovableAreaFromBuf | 壁 | 移動可能領域を定義するデータを、メモリから読み込みます。 メモリから読み込むこと以外は、 E3DLoadMQOFileAsMovableArea と同じです。 E3DLoadMQOFileAsMovableArea の説明をお読みください。 メモリから読み込む手順は、 sdim buf0, 500000 ;ファイルサイズより大きく bload ファイル名, buf0 bufsize = strsize E3DLoadMQOFileAsMovableAreaFromBuf buf0, bufsize, mult100, hsid という流れになります。 |
1. [IN] 変数 : buf バッファの変数 2. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 3. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 実数。 4. [OUT] 変数 : hsid 作成した壁データを識別するhsidが代入されます。 |
ver1.0.0.1 |
E3DChkThreadWorking | スレッド管理 | 関数の最後に、Threadが付いている関数は、新たにスレッドを作成します。 この作成したスレッドが、 現在、動作中であるかどうかをチェックするための関数です。 スレッドが終了している場合には、 スレッドの動作結果が、 returnval1, reteurnval2変数で取得できます。 この変数は、hsidや、モーションIDを取得するために、使用します。 スレッド読み込み関数に、存在しないファイル名などを指定した場合などは、エラーにならずに、 hsidが代入される引数に-1が代入されるので注意してください。 具体的な使用例は、 e3dhsp3_LoadByNewThread.hsp をご覧ください。 |
1. [IN] 変数または、数値 : threadid スレッドを識別するID 名前の最後にThreadが付いている関数で、 取得したIDを指定してください。 2. [OUT] 変数 : working スレッドが、動作中かどうかが代入されます。 動作中の場合は1が、 動作が終了している場合には0が、代入されます。 workingが0の場合は、 returnval1, returnval2に代入される値が、 意味を持ちます。 3. [OUT] 変数 : returnval1 4. [OUT] 変数 : returnval2 スレッドの実行結果が、代入されます。 returnval1, returnval2に代入される値の 意味については、 各Thread作成関数の説明をお読みください。 |
ver1.0.0.1 |
E3DLoadMQOFileAsGroundThread | 地面 | スレッドを作成して、E3DLoadMQOFileAsGroundを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DLoadMQOFileAsGroundの説明もお読みください。 |
1. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 実数。 3. [IN] 変数または、数値 : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 何も指定しないときは、0として扱われます。 2を指定すると0.0から1.0の間にクランプします。 4. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DSigLoadThread | 形状データ | スレッドを作成して、E3DSigLoadを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DSigLoadの説明も、お読みください。 |
1. [IN] 文字列または、文字列の変数 : fname *.sig のパス文字列。 2. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 3. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 4. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DSigLoadFromBufThread | 形状データ | スレッドを作成して、E3DSigLoadFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DSigLoadFromBufの説明もお読みください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 5. [IN] 変数または、数値 : mult 倍率を指定してください。 デフォルトは1.0です。 等倍は、1.0。 実数。 6. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DLoadMQOFileAsMovableAreaThread | 壁 | スレッドを作成して、E3DLoadMQOFileAsMovableAreaを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadMQOFileAsMovableAreaの説明もお読みください。 |
1. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 実数。 3. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DLoadMQOFileAsMovableAreaFromBufThread | 壁 | スレッドを作成して、E3DLoadMQOFileAsMovableAreaFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadMQOFileAsMovableAreaFromBufの説明もお読みください。 |
1. [IN] 変数 : buf バッファの変数 2. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 3. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 実数。 4. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DLoadGroundBMPThread | 地面 | スレッドを作成して、E3DLoadGroundBMPを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadGroundBMPの説明もお読みください。 |
1. [IN] 文字列または、文字列変数 : filename1 地面の座標情報の元となる、BMPファイル名 2. [IN] 文字列または、文字列変数 : filename2 地面の道の情報の元となる、BMPファイル名 3. [IN] 文字列または、文字列変数 : filename3 地面の川の情報の元となる、BMPファイル名 4. [IN] 文字列または、文字列変数 : filename4 地面、道、川の模様を決める、BMPファイル名 5. [IN] 変数または、数値 : maxx 地面のX座標の最大値 実数。 6. [IN] 変数または、数値 : maxz 地面のZ座標の最大値 実数。 7. [IN] 変数または、数値 : divx X方向の分割数 8. [IN] 変数または、数値 : divz Z方向の分割数 9. [IN] 変数または、数値 : maxheight 地面の高さの最大値 実数。 10. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DLoadGndFileThread | 地面 | スレッドを作成して、E3DLoadGNDFileを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DLoadGNDFileの説明もお読みください。 |
1. [IN] 文字列または、文字列の変数 : fname *.gnd のパス文字列。 2. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 3. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 4. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DLoadGndFileFromBufThread | 地面 | スレッドを作成して、E3DLoadGNDFileFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DLoadGNDFileFromBufの説明もお読みください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 5. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 ver5.0.5.4で拡張 |
E3DAddMotionThread | モーション | スレッドを作成して、E3DAddMotionを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モーションをを識別するIDが代入されます。 returnval2に、 最大フレーム番号が代入されます。 この関数が終了するまで、 この関数に渡したhsidに対して、 モーションの再生命令などは、使わないようにしてください。 E3DAddMotionの説明もお読みください。 |
1. [IN] 変数または、数値 : hsid どのモデルデータに対するモーションかを指定する。 2. [IN] 文字列または、文字列の変数 : fname *.quaのパス文字列。 3. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DAddMotionFromBufThread | モーション | スレッドを作成して、E3DAddMotionFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モーションをを識別するIDが代入されます。 returnval2に、 最大フレーム番号が代入されます。 この関数が終了するまで、 この関数に渡したhsidに対して、 モーションの再生命令などは、使わないようにしてください。 E3DAddMotionFromBufの説明もお読みください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [IN] 変数または、数値 : datakind quaデータの時は0を、 motデータの時は1を指定してください。 3. [IN] 変数 : buf バッファの変数 4. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 5. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DGetShaderType | モデル情報 | シェーダーの種類と、オーバーフロー処理を取得します。 それぞれの値の意味は、 E3DSetShaderTypeの説明をお読みください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [OUT] 変数 : shader 3. [OUT] 変数 : overflow シェーダーの種類と、 オーバーフロー処理が、代入されます。 |
ver1.0.0.1 |
E3DSetShaderType | モデル情報 | シェーダーの種類と、 色のオーバーフロー処理を設定します。 シェーダーの種類は、 e3dhsp3.asのCOL_ で始まる定数で、定義されています。 COL_OLD 従来のRokDeBone2の計算法 emissiveは、無効。 スペキュラーは、形だけの実装。 一番高速。 COL_PHONG Lambertのディフーズ Phongのスペキュラー emissive有り COL_BLINN Lambertのディフーズ Blinnのスペキュラー emissive有り COL_SCHLICK Lambertのディフーズ Schlickのスペキュラー emissive有り COL_MQCLASSIC メタセコイアのマテリアルで Classicを指定したときのモード emissive有り COL_TOON1 ピクセルシェーダーを使用したトゥーン表示。 COL_PPHONG ピクセルシェーダーを使用したPhong表示。 色のオーバーフロー処理は、 e3dhsp3.asのOVERFLOW_ で始まる定数で、 定義されています。 OVERFLOW_CLAMP クランプ。 自己照明がきついと、色が破綻する。 一番高速。 OVERFLOW_SCALE スケール。色は破綻しないが、暗くなる。 OVERFLOW_ORG オリジナル。明るさを保つ。 ver3.0.0.1での仕様変更により、現在は、COL_PHONGとCOL_TOON1とCOL_TOON0のみのサポートとなります(ver3.0.3.4現在) ver5.2.1.5でCOL_PPHONGを追加しました。 ver5.2.2.0でCOL_TOON1とCOL_TOON0は統合されCOL_TOON1となりました。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [IN] 変数または、数値 : shader 3. [IN] 変数または、数値 : overflow シェーダーの種類と、 オーバーフロー処理の指定をします。 値の意味は、左記をご覧ください。 |
ver1.0.0.1 ver5.2.1.5で拡張 |
E3DSetLightBlendMode | モデル情報 | 頂点のdiffuse色と、ライト色をブレンディングする際の、方法を設定します。 ブレンド方式には、PhotoShopのブレンドモードを使います。 mode引数には、LBLEND_で始まる定数を使用します。 これらの定数は、e3dhsp3.asで定義されています。 LBLEND_MULT 乗算 LBLEND_SCREEN スクリーン LBLEND_OVERLAY オーバーレイ LBLEND_HARDLIGHT ハードライト LBLEND_DODGE 覆い焼き |
1. [IN] 変数または、数値 : lid ライトを識別するID 2. [IN] 変数または、数値 : mode ブレンドモードを指定します。 LBLEND_ で始まる定数を使用します。 |
ver1.0.0.1 |
E3DGetLightBlendMode | モデル情報 | 頂点のdiffuse色と、ライト色とのブレンドモードを取得します。 取得されるモードの数値は、 e3dhsp3.asで定義されている LBLEND_で始まる定数です。 詳しくは、E3DSetLightBlendModeをお読みください。 |
1. [IN] 変数または、数値 : lid ライトを識別するID 2. [OUT] 変数 : mode ブレンドモードが代入されます。 |
ver1.0.0.1 |
E3DSetEmissive | モデル情報 | パーツのemissive色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 7. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DSetSpecularPower | モデル情報 | パーツのspecular powerをセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : pow 実数。 pow の値を、setflagに基づいて、 現在の色に対して処理を行います。 4. [IN] 数値または、変数 : setflag setflagが0のときは、 指定した値をセットします。 setflagが1のときは、 現在の値に、指定した値を乗算します。 setflagが2のときは、 現在の値に、指定した値を足し算します。 setflagが3のときは、 現在の値に、指定した値を減算します。 5. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DGetEmissive | モデル情報 | 任意のパーツの任意の頂点の、emissive色を取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 指定した頂点のemissive色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.0.1 |
E3DGetSpecularPower | モデル情報 | 任意のパーツの任意の頂点の、specular powerを取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : pow 指定した頂点のspecular powerが、 代入されます。 実数1型の変数。 |
ver1.0.0.1 |
E3DGetInfElemNum | ボーン影響 | 指定した頂点が、何個のボーンの影響を受けているかを取得します。 影響度情報は、影響を受けるボーンごとに存在します。 (影響を受けるボーンの数だけ存在します) この影響度情報のことを、 Easy3Dでは、InfElemと呼びます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 4. [OUT] 変数 : num 影響度情報の個数が代入されます。 |
ver1.0.0.1 |
E3DGetInfElem | ボーン影響 | 指定した頂点の、ボーン影響度情報を取得します。 infnoには、 E3DGetInfElemNumで取得した数値をinfnumとすると、 0から(infnum - 1)の値を渡してください。 childjointnoに0以下(0を含む)の数値が取得された場合には、そのデータはダミーデータですので、無視するようにしてください。 calcmodeの意味 calcmodeは、影響度の計算方法を表します。 e3dhsp3.as中で定義されているCALCMODE_で始まる定数を使用します。 以下のように定義されています。 #define CALCMODE_NOSKIN0 0 #define CALCMODE_ONESKIN0 1 #define CALCMODE_ONESKIN1 2 #define CALCMODE_DIRECT0 3 #define CALCMODE_SYM 4 NOSKIN0は、スキニング無し。 ONESKIN0は、距離と角度によりスキニング。 ONESKIN1は、距離のみによりスキニング。 DIRECT0は、直接数値指定。 SYMは、対称コピーによる指定。 を表します。 Easy3D内部での影響度の計算方法 影響度を算出する際には、 orginf, dispinf, userrate, normalizeflagを使います。 orginfは、calcmodeで指定した方法で、算出した影響度。 userrateは、比重。 normalizeflagは、正規化(一つの頂点の影響度の合計が1になるようにする)をするかどうかのフラグ。 dispinfが、最終的な、影響度。 まず、InfElemごとに、以下の計算をします。 orginf * userrate / 100 normalizeflagが0のときは、この値がそのまま、dispinfになります。 normalizeflagが1のときは、 全部のInfElemの影響度(dispinf)の合計が1になるように、正規化します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 4. [IN] 数値または、変数 : infno 影響度情報の番号 0から(影響度の個数-1)までの数 5. [OUT] 変数 : childjointno どのボーンの影響を受けるかが代入されます。 この値が、0以下の値の時は、ダミーデータです。 ボーンの線分の内、子供の方のジョイントの番号が 代入されます。 6. [OUT] 変数 : calcmode 影響度の計算方法が代入されます。 7. [OUT] 変数 : userrate 比重が代入されます。 %値が代入されます。 例えば、100%の場合は、100.0が代入されます。 実数。 8. [OUT] 変数 : orginf 9. [OUT] 変数 : dispinf orginf, dispinfの値が代入されます。 それぞれの意味は、左記をご覧ください。 実数型の変数。 |
ver1.0.0.1 |
E3DSetInfElem | ボーン影響 | 頂点にボーン影響度を設定します。 paintmodeの意味 paintmodeは、影響度の設定方法を表します。 e3dhsp3.as内で、PAINT_で始まる定数で、 定義されています。 #define PAINT_NOR 0 #define PAINT_EXC 1 #define PAINT_ADD 2 #define PAINT_SUB 3 #define PAINT_ERA 4 NORは、 すでに設定してある影響度情報に、影響度データを追加します。 同じボーンの情報が既にある場合は、上書きします。 EXCは、すでに設定してある影響度情報を、破棄してから、影響度データを設定します。 ADDは、すでに設定してある影響度の比重に、指定した比重を足し算します。 SUBは、すでに設定してある影響度の比重から、指定した比重を引き算します。 calcmodeについては、 E3DGetInfElemの説明をご覧ください。 calcmodeとpaintmodeの依存関係 CALCMODE_NOSKIN0のときは、PAINT_EXCを設定してください。 CALCMODE_DIRECT0のときは、PAINT_NORまたは、PAINT_EXCを設定してください。 影響度の計算方法については、 E3DGetInfElemの説明をご覧ください。 directvalは、CALCMODE_DIRECT0のときのみ意味を持ちます。この値をorginfとして設定します。 正の小数を指定してください。 スムージング角度の関係などで、同じ位置に複数の頂点が存在する場合があります。 これらの頂点を同時に同じように設定しないと、ボーン変形が、乱れることがあるので、注意してください。 childjointnoは、ボーンの線分の内の子供のジョイントの番号です。 childjointnoには、必ず親が存在するジョイントの番号を指定してください。 一番親のジョイントは、childjointには、指定できません。 CALCMODE_SYMの影響度設定はこの命令ではできません。 E3DSetSymInfElemをお使いください。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 PAINT_ERAは使えません。 影響度を消したい場合は E3DDeleteInfElemをご使用ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 4. [IN] 数値または、変数 : childjointno 影響を受けるボーンの指定。 ボーンの線分の内、子供の方のジョイントの番号を 指定します。 5. [IN] 数値または、変数 : calcmode 影響度の計算方法を指定します。 6. [IN] 数値または、変数 : paintmode 影響度の設定方法を指定します。 7. [IN] 数値または、変数 : normalizeflag 正規化をするときは1、 しないときは0を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 8. [IN] 数値または、変数 : userrate 比重%の値を指定します。 100%の時は、100.0を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 実数。 9. [IN] 数値または、変数 : directval 直接数値指定の数値を指定します。 詳しくは、左記をご覧ください。 実数。 |
ver1.0.0.1 |
E3DDeleteInfElem | ボーン影響 | ボーン影響度情報を削除します。 normalizeflagに1を指定すると、 削除した後に、 指定頂点の残りの影響度情報を、 正規化します。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 4. [IN] 数値または、変数 : childjointno 影響を受けるボーンの指定。 ボーンの線分の内、子供の方のジョイントの番号を 指定します。 5. [IN] 数値または、変数 : normalizeflag 正規化をするときは1、 しないときは0を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 |
ver1.0.0.1 |
E3DSetInfElemDefault | ボーン影響 | ボーン影響度情報を、デフォルト状態に戻します。 partnoに、-1を指定すると、 全パーツの全頂点の影響度を デフォルト状態に戻します。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 |
ver1.0.0.1 |
E3DNormalizeInfElem | ボーン影響 | ボーン影響度情報を、正規化します。 指定した頂点の影響度の合計が1になるように、各影響度を合計値で割り算します。 vertnoに、-1を指定すると、 指定パーツの、全頂点に対して、 正規化を行います。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 |
ver1.0.0.1 |
E3DGetVisiblePolygonNum | モデル情報 | 視野内のポリゴン数を取得します。 E3DRenderの後で呼び出してください。 地面データに対して呼び出した場合は、 num2には、num1と同じ数値が代入されます。 ver3.0.0.1での変更で、この関数は意味を持たなくなりました。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : num1 パーツ単位で計算した視野内ポリゴン数が 代入されます。 3. [OUT] 変数 : num2 クリッピング、背面カリングを考慮した 面単位で計算したポリゴン数が代入されます。 地面データの場合は、num1と同じ値が代入されます。 |
ver1.0.0.1 |
E3DChkConfGroundPart | 当たり判定 | 地面の指定パーツと、キャラクターとの当たり判定を行います。 地面のパーツ番号を指定する他は、 E3DChkConfGroundと同じです。 E3DChkConfGroundの説明をお読みください。 |
1. [IN] 変数または、数値 : charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値 : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 3. [IN] 変数または、数値 : groundpart 当たり判定をしたい地面のパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 指定してください。 4. [IN] 変数または、数値 : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 5. [IN] 変数または、数値 : diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 実数。 6. [IN] 変数または、数値 : mapminy groundhsidで識別されるデータの一番低いY座標の値 通常は、0.0です。 実数。 7. [OUT] 変数 : result あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 となります。 8. [OUT] 変数 : adjustx 9. [OUT] 変数 : adjusty 10. [OUT] 変数 : adjustz result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 11. [OUT] 変数 : nx 12. [OUT] 変数 : ny 13. [OUT] 変数 : nz result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが、 (nx, ny, nz)に代入されます。 跳ね返る方向を決めるときなどに、 使用できるのではないかと思い、 加えてみました。 実数型の変数。 |
ver1.0.0.1 |
E3DChkConfGroundPart2 | 当たり判定 | 地面パーツを指定して、線分と地面の当たり判定を行います。 パーツを指定すること以外は、 E3DChkConfGround2と同じです。 詳しくは、E3DChkConfGround2の説明をお読みください。 |
1. [IN] 変数または、数値 : befposx 2. [IN] 変数または、数値 : befposy 3. [IN] 変数または、数値 : befposz 線分の始点を(befposx, befposy, befposz)で 指定します。 実数。 4. [IN] 変数または、数値 : newposx 5. [IN] 変数または、数値 : newposy 6. [IN] 変数または、数値 : newposz 線分の終点を(newposx, newposy, newposz)で 指定します。 実数。 7. [IN] 変数または、数値 : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 8. [IN] 変数または、数値 : groundpart 地面のパーツ番号を指定します。 E3DGetPartNoByNameで取得した番号を 指定してください。 9. [IN] 変数または、数値 : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 10. [IN] 変数または、数値 : diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 実数。 11. [IN] 変数または、数値 : mapminy groundhsidで識別されるデータの一番低いY座標の値 通常は、0です。 実数。 12. [OUT] 変数 : result あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 13. [OUT] 変数 : adjustx 14. [OUT] 変数 : adjusty 15. [OUT] 変数 : adjustz result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 16. [OUT] 変数 : nx 17. [OUT] 変数 : ny 18. [OUT] 変数 : nz result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが、 (nx, ny, nz)に代入されます。 跳ね返る方向を決めるときなどに 使用できるのではないかと思い、 加えてみました。 実数型の変数。 |
ver1.0.0.1 |
E3DSetNextMotionFrameNo | モーション | モーションの最後のフレーム番号に到達した後、どのモーションの、どのフレーム番号に、ジャンプするかを指定できます。 この関数で、次のモーションの指定を行っておけば、E3DSetNewPoseで、自動的にモーションが切り替わります。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : srcmotid 3. [IN] 数値または、変数 : nextmotid 4. [IN] 数値または、変数 : nextframeno srcmotidのモーションが、最後のフレーム番号に達した後、nextmotidのモーションの、nextframenoのフレーム番号に、ジャンプするように設定されます。 |
ver1.0.0.1 |
E3DSetLinearFogParams | 描画パラメータ | 頂点フォグ(線形)を設定します。 頂点フォグなので、ポリゴンのない部分には、フォグはかかりません。 画面全体にフォグをかけたい場合は、 E3DCreateBGで、背景を作成してください。(背景はポリゴンです。) hsid, ビルボードを作成してから呼び出してください。 E3DCreateBGよりも前で呼び出してください。 E3DSetHeightFogParamsとの混在は出来ません。 具体的な使用例は、 e3dhsp3_wall.hsp に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : enable 1を指定すると、フォグが有効に、 0を指定すると、フォグが無効になります。 2. [IN] 数値または、変数 : r 3. [IN] 数値または、変数 : g 4. [IN] 数値または、変数 : b フォグの色を、(r, g, b)で指定します。 5. [IN] 数値または、変数 : start 6. [IN] 数値または、変数 : end フォグが開始される距離をstartに、 フォグが終了する(一番濃くなる)距離をendに 指定します。 距離は、カメラからの距離です。 7. [IN] 数値または、変数 : hsid この引数に、モデルデータのhsidを 指定することにより、 モデル単位でのフォグの指定が可能になります。 特殊効果などで、フォグをかけたくない場合などの 表示にお使いください。 この引数を、省略した場合は、 すべてのモデルデータに対して、設定します。 |
ver1.0.0.2で追加 |
E3DChkConflict3 | 当たり判定 | 2つの形状データの指定したパーツ同士が、衝突しているかどうを判定します。 パーツの番号に、配列を指定できること以外は、 ほとんど、E3DChkConflict2と同じです。 (inviewflagが微妙に違います) パーツ番号には、 E3DGetPartNoByNameで取得した、 パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 (判定の元になるデータは、 E3DChkInView命令によって、更新されます。) すべてのパーツが視野外だった場合は、 inviewflagに3が、 ひとつでも視野内のパーツがあった場合は、 inviewflagに0が代入されます。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数 : partno1 hsid1のモデル中のパーツの番号の配列 dim partno1, partnum1 などで配列を作成し、それぞれの配列要素に、 判定をしたいパーツの番号を入れてください。 3. [IN] 変数または、数値 : partnum1 partno1に値をセットした要素数を指定してください。 4. [IN] 変数または、数値 : hsid2 形状データを識別するid 5. [IN] 変数 : partno2 hsid2のモデル中のパーツの番号の配列 dim partno2, partnum2 などで配列を作成し、それぞれの配列要素に、 判定をしたいパーツの番号を入れてください。 6. [IN] 変数または、数値 : partnum2 partno2に値をセットした要素数を指定してください。 7. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 8. [OUT] 変数 : inviewflag すべてのパーツが視野外だった場合は、 inviewflagに3が、 1つでも、視野内のパーツがあった場合は、 inviewflagに0が代入されます。 |
ver1.0.0.7で追加 |
E3DChkConfBySphere3 | 当たり判定 | 境界球によるあたり判定を、任意のパーツごとに行います。 パーツの番号に配列を指定できること以外は、 E3DChkConfBySphere2と同じです。 判定の際に、E3DChkInViewでセットした データを使用します。 パーツ番号には、 E3DGetPartNoByNameで取得した パーツの番号を渡してください。 パーツ番号に-1を指定すると、 モデル全体とあたり判定をします。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数 : partno1 hsid1のモデル中のパーツの番号の配列 dim partno1, partnum1 などで配列を作成し、それぞれの配列要素に、 判定をしたいパーツの番号を入れてください。 3. [IN] 変数または、数値 : partnum1 partno1に値をセットした要素数を指定してください。 4. [IN] 変数または、数値 : hsid2 形状データを識別するid 5. [IN] 変数 : partno2 hsid2のモデル中のパーツの番号の配列 dim partno2, partnum2 などで配列を作成し、それぞれの配列要素に、 判定をしたいパーツの番号を入れてください。 6. [IN] 変数または、数値 : partnum2 partno2に値をセットした要素数を指定してください。 7. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 |
ver1.0.0.7で追加 |
E3DSetMovableAreaThread | 壁 | スレッドを作成して、E3DSetMovableAreaを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DSetMovableAreaの説明も、お読みください。 |
1. [IN] 文字列または、文字列変数 : filename1 壁の座標情報の元となる、BMPファイル名 2. [IN] 変数または、数値 : maxx 壁のX座標の最大値 実数。 3. [IN] 変数または、数値 : maxz 壁のZ座標の最大値 実数。 4. [IN] 変数または、数値 : divx X方向の分割数 5. [IN] 変数または、数値 : divz Z方向の分割数 6. [IN] 変数または、数値 : wallheight 作成する壁の高さ 実数。 7. [OUT] 変数 : threadid 作成したスレッドを識別する、ID |
ver2.0.0.2で追加 |
E3DCreateSpriteFromBMSCR | スプライト | HSPの描画画面(E3Dでの描画を除く)と同じ内容のスプライトを作成します。 内部でテクスチャーを使用するため、 画面の大きさが、2の乗数で無い場合は、 スプライトの大きさと画面の大きさが、異なる場合があります。 スプライトの大きさは、 E3DGetSpriteSizeで確認してください。 使い方としては、 非表示のウインドウを作成しておき、 そこに、mes命令などで、描画を行い、 そのウインドウに対して、この関数を呼び、 出来たスプライトを、メインのウインドウに描画する、 などが、考えられます。 screen命令の4番目の引数で、 パレットモードを指定した場合は、 この関数は、使用できません。 |
1. [IN] 変数または、数値 : wid ウインドウID 2. [IN] 変数または、数値 : transparentflag 透過フラグ。 透過をしない場合は、0を指定してください。 1をセットすると、黒色を透過色として色抜きします。 2をセットすると、(tpR, tpG, tpB)で指定した色を 透過色とします この関数のtransparetflagの意味は、 他の関数のtransparentとは、違うので、 気を付けてください。 3. [OUT] 変数 : spriteID 作成したスプライトを識別するID。 4. [IN] 変数または、数値 : tpR 5. [IN] 変数または、数値 : tpG 6. [IN] 変数または、数値 : tpB transparentflag = 2 のとき、 透過色を、(tpR, tpG, tpB)で指定します。 |
ver2.0.0.5で追加 |
E3DLoadMOAFile | モーションアクセラレータ | モーションアクセラレータファイル(*.moa)を読み込みます。 moaと同じフォルダに、 moaに記述されている全てのquaファイルが、存在しないと エラーになります。 詳しくは、マニュアルの、rdb2_ma.htmと e3dhsp3_MotionAccelerator.hsp をご覧ください。 |
1. [IN] 変数または、数値 : hsid どのモデルデータに対するmoaかを指定する。 2. [IN] 文字列または、文字列の変数 : fname *.moaのパス文字列。 3. [IN] 数値または変数 : FillUpFrameLength 補間モーションのフレーム長。 ver5.3.2.6以降では、-1を指定するとmoaファイルに記述されているフレーム長を読み込みます。 4. [IN] 変数または、数値 : mvmult モーションの移動成分に掛ける倍率 省略すると1.0 実数 |
ver2.0.1.2で追加 ver4.0.1.6で引数追加 |
E3DSetNewPoseByMOA | モーションアクセラレータ | モーションアクセラレータに基づいて、モーションの更新をします。E3DSetNewPoseの代わりに呼んでください。 eventno引数には、通常、2の乗数の値を使用します。 値が大きくなると記述が大変なので、 2の乗数は、e3dhsp3.asで定義しているPOW2X配列を 使用してください。 例えば、2の15乗の値は、POW2X( 15 ) でアクセス可能です。 詳しくは、マニュアルの、rdb2_ma.htmと e3dhsp3_MotionAccelerator.hsp をご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID 2. [IN] 変数または、数値 : eventno イベント番号 詳しくは、マニュアルの、rdb2_ma.htmをご覧ください。 |
ver2.0.1.2で追加 |
E3DGetMotionFrameNo | モーション | カレント(現在の)のモーション番号と、フレーム番号を取得します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : mk モーションを識別する番号 3. [OUT] 変数 : frame フレーム番号 |
ver2.0.1.2で追加 |
E3DGetKeyboardCnt | キーボード | 256 個の仮想キーの状態(カウンター)を、指定されたバッファkeybufへコピーします。 E3DGetKeyboardState関数は、呼び出し時に、キーが押されているかどうかしか、取得できませんが、 E3DGetKeyboardCnt関数は、どのくらいの時間、押し続けているかを表すカウンターを取得できます。 Easy3D内部で、 前回のきーの情報を保存しておき、 呼び出し時に、キーが押されていれば、 カウンターを1増やします。 押されていなければ、カウンターを0にします。 keybuf は、この関数を使用する前に、 dim keybuf, 256 で、確保してください。 複数のキーの状態を、一度の呼び出しで、 取得できます。 例えば、Aキーのカウンタを調べる場合は、 E3DGetKeyboardCnt 呼び出し後に、 keybuf('A') の値を調べます。 ( ’ を忘れずに。 ) 具体的な使用例は、zip中の、 e3dhsp3_MotionAccelerator.hspをご覧ください。 バーチャルキー情報は、zip中の、 e3dhsp3.as で、 VK_ で始まる定数として、宣言しています。 |
1. [OUT] 変数 : keybuf keybufに、キーの状態(カウンタ)が、代入されます。 keybufは、dim keybuf, 256 で、 作成されている必要があります。 |
ver2.0.1.2で追加 |
E3DResetKeyboardCnt | キーボード | E3DGetKeyboardCntが、内部で使用する、前回のキーの情報をリセットします。 |
なし | ver2.0.1.2で追加 |
E3DEncodeBeta | 簡易暗号化 | ファイルの内容を、暗号化します。 暗号化といっても、超簡易な方法ですので、 プログラムに詳しい人なら、復号できてしまう程度のものです。 ファイルを、暗号化して、内容を上書きします。 暗号化したファイルに対して 、この関数を呼べば、暗号化前のファイルに戻ります。 |
1. [IN] 文字列または、文字列変数 : filename 簡易暗号化するファイル名 2. [IN] 配列変数 : rnd10 簡易暗号化する際に使用する、 ランダムなキー配列を指定します。 キーは、10個指定します。 キーの値は、0から255の値を使用してください。 dim rnd10, 10 で、配列を作成してから、値をセットしてください。 |
ver2.0.1.3で追加 |
E3DDecodeBeta | 簡易暗号化 | E3DEncodeBetaで暗号化したファイルを、バッファ上で復号します。 バッファは、sdimで確保してください。 |
1. [IN] 文字列または、文字列変数 : filename 復号するファイル名 2. [IN] 配列変数 : rnd10 E3DEncodeBetaで使用したのと同じ内容の キー配列。 3. [OUT] 配列変数 : dstbuffer 復号した内容が、セットされます。 ファイルの長さをflengthとした場合、 sdim dstbuffer, flength で作成したバッファーを指定してください。 |
ver2.0.1.3で追加 |
E3DGetMoaInfo | モーション | Moaファイルを読み込んだ場合のモーションの名前とIDを取得します。 motmaxnumは、大き目の値を設定してください。 この値が実際のモーションの数よりも小さいとエラーになります。 motionname引数は、 sdim motionname, 256, motmaxnum で作成した配列を指定してください。 motionid引数は、 dim motionid, motmaxnum で作成した配列を指定してください。 詳しい使い方は、 e3dhsp3_MotionAccelerator.hspをご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motmaxnum データ取得用配列の大きさ(モーションの数)を指定します。 3. [OUT] 文字列の配列変数 : motionname 名前情報を取得するための配列を渡してください。 左に書いた方法で、sdimした配列を渡してください。 4. [OUT] 配列変数 : motionid モーションIDを取得するための配列変数を渡してください。 右に書いた方法で、dimした配列を渡してください。 5. [OUT] 変数 : motgetnum 何個のモーションの情報を出力したかが、代入されます。 |
ver3.0.0.1で追加 |
E3DGetNextMotionFrameNo | モーション | E3DSetNextMotionFrameNoで設定した情報を取得します。 Moaファイルを読み込んで、 E3DSetNewPoseByMOAを使用する場合、 モーションとモーションの間に補間モーションが入ります。 この補間モーションのモーションIDはver3001では常に0です。 この補間モーションには、E3Dが内部で、 次のモーションをE3DSetNextMotionFrameNoでセットしています。 つまり、この補間モーションに対して、 E3DGetNextMotionFrameNoを呼び出せば、 次に再生するモーションの情報が取得できるというわけです。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid 現在のモーションのID 3. [OUT] 変数 : nextmotionid 次に再生されるモーションのID 4. [OUT] 変数 : nextframe フレーム番号 |
ver3.0.0.1で追加 |
E3DGetScreenPos3 | モデル情報 | 形状データの画面上での2Dの座標を取得する関数です。 奥行き情報Zも取得できます。 パーツ単位、モデル単位、ビルボード単位で 使用できます。 頂点単位での2D座標も取得できます。 3Dキャラクターの位置に、2Dのスプライトを表示する、などの用途に使えます。 Z情報は、スプライト描画時のZ指定の値に使用できます。 E3DChkInViewより後で、呼び出してください。 具体的な使用例は、zip中の、 e3dhsp3_pickvert.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの2D位置を取得できます。 3. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 モデル全体の中心座標の2D座標を 取得できます。 4. [OUT] 変数 : scx 5. [OUT] 変数 : scy 指定したパーツの2Dスクリーン座標が代入されます。 整数。 ただし、以下の場合には、 scx = -1, scy = -1が代入されます。 1,パーツが表示用オブジェクトではない場合 2,パーツ全体が画面外にある場合 3,パーツのディスプレイスイッチがオフの場合 4,パーツが無効になっていた場合 (E3DSetValidFlagで0を指定した場合) 6. [OUT] 変数 : scz 奥行き情報Z 実数の変数。 この値に0から1の範囲外の値が得られた場合は、 画面に描画されない頂点です。 7. [IN] 数値または、変数 : vertno 取得したい頂点の番号を指定します。 この引数を省略した場合や、-1を指定した場合は、 パーツの中心の2D座標を取得します。 8. [IN] 数値または、変数 : calcmode 1を指定してください。 |
ver3.0.0.1で追加 |
E3DEnableToonEdge | 描画パラメータ | 輪郭線のオンオフをします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線のオンオフをします。 3. [IN] 数値または、変数 : type 輪郭線のタイプを指定します。 0を指定してください。 4. [IN] 数値または、変数 : flag 輪郭をオンにしたい場合は1を、 オフにしたい場合は0を指定してください。 |
ver3.0.1.1で追加 |
E3DSetToonEdge0Color | 描画パラメータ | 輪郭線の色をセットします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線の色を設定します。 3. [IN] 文字列または、文字列の変数 : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 partnoに-1を指定している場合は、 "dummy"と指定してください。 4. [IN] 数値または、変数 : r 5. [IN] 数値または、変数 : g 6. [IN] 数値または、変数 : b 色のRGBを指定します。 それぞれ、0から255の整数を指定してください。 |
ver3.0.1.1で追加 |
E3DSetToonEdge0Width | 描画パラメータ | 輪郭線の幅をセットします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線の色を設定します。 3. [IN] 文字列または、文字列の変数 : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 partnoに-1を指定している場合は、 "dummy"と指定してください。 4. [IN] 数値または、変数 : width 輪郭の幅を実数で指定してください。 |
ver3.0.1.1で追加 |
E3DGetToonEdge0Color | 描画パラメータ | 輪郭線の色を取得します。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] 文字列または、文字列の変数 : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 輪郭の色のRGBが代入されます。 それぞれ、0から255の整数が取得されます。 指定したマテリアルが見つからなかった場合は (0, 0, 0)が代入されます。 |
ver3.0.1.1で追加 |
E3DGetToonEdge0Width | 描画パラメータ | 輪郭線の幅を取得します。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] 文字列または、文字列の変数 : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 4. [OUT] 変数 : width 輪郭の幅が代入されます。 実数型の変数。 指定したマテリアルが見つからなかった場合は、 0.0が代入されます。 |
ver3.0.1.1で追加 |
E3DCreateParticle | パーティクル | パーティクルを作成します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : maxnum 表示できるパーティクルの最大数を指定します。 2000以下の数字を指定してください。 2. [IN] 文字列または、文字列の変数 : texname テクスチャー名をフルパスで指定します。 3. [IN] 数値または、変数 : width パーティクルの幅を指定します。 実数。 4. [IN] 数値または、変数 : height パーティクルの高さを指定します。 実数。 5. [IN] 数値または、変数 : blendmode 半透明のブレンドモードを指定します。 0を指定すると、 テクスチャのアルファによるブレンドをします。 1を指定すると、 アッドモードでのブレンドをします。 2を指定すると、 頂点のアルファを考慮した アッドモードブレンドをします。 6. [OUT] 変数 : particleid パーティクルを識別するIDが代入されます。 7. [IN] 数値または、変数 : transparentflag 1を指定すると黒色を透過します(BMP用)。 0を指定すると、画像ファイルのアルファを そのまま使います。 引数を省略すると1が適用されます。 8. [IN] 数値または、変数 : cmpalways 1を指定するとZバッファの比較を行わずに 常に描画するようになります。 デフォルトは0。 |
ver3.0.1.5で追加 ver3.0.3.1で引数追加 ver4.0.0.1で引数追加 |
E3DDestroyParticle | パーティクル | パーティクルを破棄します。 |
1. [IN] 数値または、変数 : particleid 削除したいパーティクルを識別するIDを指定します。 |
ver3.0.1.5で追加 |
E3DSetParticlePos | パーティクル | パーティクルの場所を設定します。 設定した場所からパーティクルが噴き出します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : posx 3. [IN] 数値または、変数 : posy 4. [IN] 数値または、変数 : posz パーティクルの位置を(posx, posy, posz)に 指定します。 実数。 |
ver3.0.1.5で追加 |
E3DSetParticleGravity | パーティクル | パーティクルの重力を設定します。 設定した値は、Y方向の負の加速度として計算に使用されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : gravity 重力を指定します。 実数。 |
ver3.0.1.5で追加 |
E3DSetParticleLife | パーティクル | パーティクルの寿命を設定します。 パーティクルが噴き出してから消えるまでの時間を 秒で指定します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : life パーティクルの寿命を指定します。 実数。 秒。 |
ver3.0.1.5で追加 |
E3DSetParticleEmitNum | パーティクル | パーティクルの生成個数をします。 E3DRenderParticleを呼ぶたびに指定した個数だけ生成されます。 実数での指定が可能です。 例えば0.2と指定した場合は、 5回E3DRenderParticleを呼び出すごとに1個パーティクルが 生成されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : emitnum パーティクルの1回あたりの生成個数を指定します。 実数。 |
ver3.0.1.5で追加 |
E3DSetParticleVel0 | パーティクル | パーティクルの速度を指定します。 速度の最低値をminvelx, minvely, minvelzに指定し、 速度の最大値をmaxvelx, maxvely, maxvelzに指定します。 最低値と最大値の幅が広いほど、 パーティクルは、まばらに放出されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : minvelx 3. [IN] 数値または、変数 : minvely 4. [IN] 数値または、変数 : minvelz パーティクルの速度の最小値を指定します。 実数。 5. [IN] 数値または、変数 : maxvelx 6. [IN] 数値または、変数 : maxvely 7. [IN] 数値または、変数 : maxvelz パーティクルの速度の最大値を指定します。 実数。 |
ver3.0.1.5で追加 |
E3DSetParticleRotation | パーティクル | パーティクルの回転を指定します。 この関数を呼び出すたびに、 パーティクルが指定角度だけ回転します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : rotation パーティクルの回転を角度(度)で指定します。 |
ver3.0.1.5で追加 |
E3DSetParticleDiffuse | パーティクル | パーティクルの頂点色を指定します。 テクスチャ色とモジュレートされて表示されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : r 3. [IN] 数値または、変数 : g 4. [IN] 数値または、変数 : b パーティクルの頂点色を指定します。 それぞれ、0から255の間の値を指定します。 |
ver3.0.1.5で追加 |
E3DRenderParticle | パーティクル | パーティクルを描画します。 呼び出すたびに、パーティクルの消滅、生成、位置移動をして、 描画します。 1.0 / fps 秒だけ時間を進めて描画します。 fpsにマイナスの値を指定した場合は、 パーティクルが静止した状態で描画します。 E3DCreateParticleで指定したmaxnum個より多いパーティクルは 描画できません。 パーティクルの噴出が、途中で途切れる場合は、 maxnumの値を増やすか、または、 E3DSetParticleEmitNumの値を小さくするか、または、 E3DSetParticleLifeに指定するlifeの値を小さくしてください。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : fps 1秒間に何回、この関数を呼ぶかを 指定してください。 3. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 4. [IN] 変数または、数値 : onlyupdate 1を指定した場合は、 描画を行わず状態のアップデートのみ行います。 0を指定した場合や省略した場合は 通常通りアップデートと描画を行います。 |
ver3.0.1.5で追加 ver4.0.0.8で引数追加 |
E3DSetParticleAlpha | パーティクル | パーティクルの透明度を設定します。 パーティクルが放出されてからの時間帯ごとに、 設定可能です。 生成されてからの時間が、mintimeからmaxtimeの間にある パーティクルに対して、処理を行います。 ちょっと重い処理です。 呼び出すたびに設定されます。 ループ中で使用します。 (一回だけ呼び出しても意味がありません) 具体的な使用例は、 e3dhsp3_particle2.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : mintime 3. [IN] 数値または、変数 : maxtime 処理したいパーティクルの時間帯を 秒で指定します。 4. [IN] 数値または、変数 : alpha 透明度を0から1の間の実数で指定します。 |
ver3.0.1.6で追加 |
E3DSetParticleUVTile | パーティクル | パーティクルのUVを設定します。 パーティクルが放出されてからの時間帯ごとに、 設定可能です。 生成されてからの時間が、mintimeからmaxtimeの間にある パーティクルに対して、処理を行います。 この処理は、ビデオメモリにアクセスする必要があるので、 ちょっと重い処理です。 ひとつの画像に、タイル画像を敷き詰めたテクスチャの、UV座標を、タイル番号で、セットできます。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 呼び出すたびに設定されます。 ループ中で使用します。 (一回だけ呼び出しても意味がありません) 具体的な使用例は、 e3dhsp3_particle2.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : mintime 3. [IN] 数値または、変数 : maxtime 処理したいパーティクルの時間帯を 秒で指定します。 4. [IN] 数値または、変数 : unum テクスチャの横方向の分割数を指定します。 5. [IN] 数値または、変数 : vnum テクスチャの縦方向の分割数を指定します。 6. [IN] 数値または、変数 : tileno 設定したいタイル番号を指定します。 |
ver3.0.1.6で追加 |
E3DInitParticle | パーティクル | パーティクルの発生状態を初期状態に戻します。 | 1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 |
ver3.0.1.8で追加 |
E3DPickFace2 | 当たり判定 | 2Dの画面の座標に対応する、3Dモデルの座標を取得できます。 判定したいパーツを指定できる点以外は、 E3DPickFaceと同じです。 詳しくはE3DPciFaceの説明をお読みください。 パーツ番号3とパーツ番号4についてのみ、判定を行いたい場合は、 partnum = 2 dim partarray, partnum partarray( 0 ) = 3 partarray( 1 ) = 4 の様に値をセットして、E3DPickFace2を呼び出してください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 3. [IN] 配列変数 : partarray 判定したいパーツ番号を指定します。 dim partarray, partnumで作成してください。 4. [IN] 数値または、変数 : partnum partarray配列の要素数 5. [IN] 数値または、変数 : pos2x 6. [IN] 数値または、変数 : pos2y 画面上の2D座標を指定してください。 7. [IN] 数値または、変数 : maxdist どのくらいの距離まで、3Dモデルの検索をするかを指定します。 この値を小さくするほど、処理は高速になります。 8. [OUT] 変数 : partno 9. [OUT] 変数 : faceno 2D座標に対応する3D座標が見つかった場合に、 その3Dモデルのパーツの番号と、面の番号が 代入されます。 見つからなかった場合は、-1が代入されます。 10. [OUT] 変数 : pos3x 11. [OUT] 変数 : pos3y 12. [OUT] 変数 : pos3z 2D座標に対応する3D座標が代入されます。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 13. [OUT] 変数 : nx 14. [OUT] 変数 : ny 15. [OUT] 変数 : nz 2D座標に対応する3D座標を含む面の法線ベクトルが 代入されます。 ベクトルの大きさは1のものを代入します。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 16. [OUT] 変数 : dist 視点と(pos3x, pos3y, pos3z)との距離が代入されます。 partnoに-1以外の値が代入されているときのみ、 この値は意味を持ちます。 実数型の変数。 17. [IN] 数値または、変数 : calcmode 1を指定してください。 |
ver3.0.2.0で追加 |
E3DChkConfWall3 | 当たり判定 | E3DSetMovableArea, または、E3DLoadMQOFileAsMovableAreaで作成した壁データと、キャラクターのあたり判定を行います。 判定したい壁データのパーツ番号を指定できる点以外は、 E3DChkConfWallと同じです。 詳しくは、E3DChkConfWallの説明をお読みください。 壁モデルのパーツ番号3とパーツ番号4についてのみ、 判定を行いたい場合は、 partnum = 2 dim partarray, partnum partarray( 0 ) = 3 partarray( 1 ) = 4 の用に値をセットして、E3DConfWall3を呼び出してください。 |
1. [IN] 変数または、数値 : charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値 : groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 3. [IN] 配列変数 : partarray 判定したい壁のパーツ番号を指定します。 dim partarray, partnumで作成してください。 4. [IN] 数値または、変数 : partnum partarray配列の要素数 5. [IN] 変数または、数値 : dist 跳ね返る距離。 distに大きな値を入れると、 ぶつかった際に大きく跳ね返るようになります。 実数。 6. [OUT] 変数 : result あたり判定の結果が代入されます。 壁とぶつかった場合は1が、 ぶつからなかった場合は、0が、代入されます。 7. [OUT] 変数 : adjustx 8. [OUT] 変数 : adjusty 9. [OUT] 変数 : adjustz result != 0 のときに、 修正後の座標が、 (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 10. [OUT] 変数 : nx 11. [OUT] 変数 : ny 12. [OUT] 変数 : nz result != 0 のときに、 ぶつかった面の法線ベクトルの値が、 代入されます。 実数型の変数。 |
ver3.0.2.0で追加 |
E3DGetMotionIDByName | モーション | モーションの名前からモーションのIDを取得します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 文字列または、文字列変数 : motname RokDeBone2で設定したモーションの名前。 3. [OUT] 変数 : motid 名前がmotnameであるモーションのIDが代入されます。 |
ver3.0.2.0で追加 |
E3DGetMotionNum | モーション | 読み込んでいるモーションの総数を取得します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : motnum モーションの総数が代入されます。 |
ver3.0.2.0で追加 |
E3DDot2 | 算術 | 内積を計算します。 E3DDotと違って、E3DDot2は、与えたベクトルを正規化しません。 |
1. [IN] 変数または、数値 : vecx1 2. [IN] 変数または、数値 : vecy1 3. [IN] 変数または、数値 : vecz1 実数。 4. [IN] 変数または、数値 : vecx2 5. [IN] 変数または、数値 : vecy2 6. [IN] 変数または、数値 : vecz2 実数。 7. [OUT] 変数 : ret 内積の結果が代入される。 実数型の変数。 |
ver3.0.2.0で追加 |
E3DChkConfParticle | 当たり判定 | パーティクルとモデルデータのあたり判定をします。 境界球を使用した判定を行います。 モデルデータ側の境界球の半径が大きすぎるときは、 rate引数に1より小さい値を指定して調整してください。 |
1. [IN] 変数または、数値 : ptclid パーティクルを識別するid 2. [IN] 変数または、数値 : hsid 形状データを識別するid 3. [IN] 変数または、数値 : rate モデルデータの境界球の半径に掛け算して 判定します。 1より小さい値を指定すれば、 判定の感度が落ちます。 実数。 4. [OUT] 変数 : confflag パーティクルとモデルデータが ぶつかっているときは1が ぶつかっていないときは0が代入されます。 |
ver3.0.2.3で追加 |
E3DLoadSigFileAsGround | 地面 | sigファイルを地面として読み込んで、hsidを得る。 sigファイルの読み込み速度は、mqoファイルの読み込みよりも、 だいぶ速くなります。 |
1. [IN] 文字列または、文字列の変数 : fname *.sig のパス文字列。 2. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 3. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 4. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 |
ver3.0.2.5で追加 ver5.0.5.4で拡張 |
E3DLoadSigFileAsGroundFromBuf | 地面 | メモリから地面データのロードを行います。 メモリ内には、sigファイルと同じフォーマットが 入っているとみなして、処理します。 テクスチャファイルは、通常読込と同様に、 ファイルから行います。 resdirには、テクスチャの存在するフォルダのパスを指定してください。 最後に、"\\"を付けるのを忘れないでください。 例えば、 resdir = "C:\\hsp\\Meida\\" や resdir = dir_cur+ "\\" などのように指定してください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 5. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 6. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 |
ver3.0.2.5で追加 ver5.0.5.4で拡張 |
E3DGetCenterPos | モデル位置 | パーツの中心のグローバル座標を取得します。 パーツの中心の座標は、E3DChkInViewで計算されます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 -1を指定すると、モデル全体の中心座標が 取得できます。 3. [OUT] 変数 : posx 4. [OUT] 変数 : posy 5. [OUT] 変数 : posz 実数型の変数。 中心の座標が代入されます。 |
ver3.0.2.7で追加 |
E3DGetFaceNum | モデル情報 | 指定した表示オブジェクトの面の総数を取得します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [OUT] 変数 : facenum 面の総数が代入されます。 |
ver3.0.3.0で追加 |
E3DGetFaceNormal | モデル情報 | 指定した表示オブジェクトの面の法線を取得します。 E3DGetFaceNumで取得した面の総数をfacenumとしたとき、 faceno引数には、0からfacenum - 1までの値を 指定してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] 数値または、変数 : faceno 面の番号を指定します。 4. [OUT] 変数 : nx 5. [OUT] 変数 : ny 6. [OUT] 変数 : nz 実数型の変数。 法線のベクトルが代入されます。 |
ver3.0.3.0で追加 |
E3DCreateEmptyMotion | モーション | 姿勢情報の入っていない空のモーションを作成します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 文字列または、文字列の変数 : motname モーションの名前の文字列。 3. [IN] 変数または、数値 : frameleng 作成するモーションの長さ。フレーム長。 4. [OUT] 変数 : mk 作成したモーションを識別する番号 |
ver3.0.3.5で追加 |
E3DSetTextureMinMagFilter | 描画パラメータ | テクスチャーを拡大縮小表示する際のフィルターを指定します。 3Dモデル、背景、スプライト、ビルボードに指定できます。 minfilter引数には縮小する際のフィルターを指定し、 magfilter引数には拡大する際のフィルターを指定します。 フィルターの指定にはe3dhsp3.asで定義されている以下の2つの定数を使います。 D3DTEXF_POINT 最近点フィルタ。 目的のピクセル値に最も近い座標のテクセルを使います。 テクスチャがぼやけるのが嫌な場合などに使います。 D3DTEXF_LINEAR 双線形補間フィルタ。 目的のピクセルを取り囲む 2 x 2 領域のテクセルの重み付けした平均を使います。 なめらかな表示をしたいときに使います。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid E3DCreateBGで作成した背景に対して処理を行いたい場合は0を指定します。 ビルボードに対して処理を行いたい場合は-1を指定します。 スプライトに対して処理を行いたい場合は-2を指定します。 2. [IN] 変数または、数値 : partno 形状データを識別するidを指定します。 背景の場合は0を指定します。 ビルボードの場合はビルボードIDを指定します。 スプライトの場合はスプライトIDを指定します。 3. [IN] 変数または、数値 : minfilter 縮小フィルター 4. [IN] 変数または、数値 : magfilter 拡大フィルター 5. [IN] 変数または、数値 : scid スワップチェインID。 この引数は、背景の指定の場合のみ意味を持ちます。 |
ver3.0.3.7で追加 |
E3DGetMotionName | モーション | 読み込み済みのモーションの名前を取得します。 motname引数には sdim motname, 256 で確保したメモリを指定してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid モーションを識別するid 3. [OUT] 文字列型の変数 : motname モーションの名前が代入されます。 sdim motname, 256 で確保したメモリを指定してください。 |
ver3.0.3.8で追加 |
E3DSetMotionName | モーション | モーションに名前を設定します。 255文字以下(255バイト以下)の名前を設定してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid モーションを識別するid 3. [IN] 文字列または、文字列変数 : motname モーションの名前を指定します。 名前の長さは255文字(255バイト)までです。 |
ver3.0.3.8で追加 |
E3DGetMaterialNoByName | マテリアル | マテリアル名からマテリアル番号を取得します。 マテリアル名はRokDeBone2のメインメニューの 「面マテリアル」メニューを押したときに現れるダイアログで 確認できます。 ver4.0.0.1以降のRokDeBone2でmqoからデータを読み込んでいる場合には、マテリアル名はメタセコイアの材質名と同じです。 存在しないマテリアル名を渡した場合は、 マテリアル番号には-3が返されます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 文字列または、文字列変数 : motname マテリアルの名前を指定します。 名前の長さは255文字(255バイト)までです。 3. [OUT] 変数 : matno マテリアルの番号が代入されます。 存在しない名前を渡した場合は-3が代入されます。 |
ver4.0.0.1で追加 |
E3DGetMaterialAlpha | マテリアル | マテリアルの透明度を取得します。 透明度は0.0から1.0までの実数です。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数 : alpha 透明度が代入されます。 実数型の変数。 |
ver4.0.0.1で追加 |
E3DGetMaterialDiffuse | マテリアル | マテリアルの拡散光(diffuse)を取得します。 R, G, Bはそれぞれ赤、緑、青の強さを0から255で表したものです。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数 : R 4. [OUT] 変数 : G 5. [OUT] 変数 : B diffuseのRGBが代入されます。 |
ver4.0.0.1で追加 |
E3DGetMaterialSpecular | マテリアル | マテリアルの反射光(specular)を取得します。 R, G, Bはそれぞれ赤、緑、青の強さを0から255で表したものです |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数 : R 4. [OUT] 変数 : G 5. [OUT] 変数 : B specularのRGBが代入されます。 |
ver4.0.0.1で追加 |
E3DGetMaterialAmbient | マテリアル | マテリアルの周囲光(ambient)を取得します。 R, G, Bはそれぞれ赤、緑、青の強さを0から255で表したものです |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数 : R 4. [OUT] 変数 : G 5. [OUT] 変数 : B ambientのRGBが代入されます。 |
ver4.0.0.1で追加 |
E3DGetMaterialEmissive | マテリアル | マテリアルの自己照明(emissiver)を取得します。 R, G, Bはそれぞれ赤、緑、青の強さを0から255で表したものです |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数 : R 4. [OUT] 変数 : G 5. [OUT] 変数 : B emissiveのRGBが代入されます。 |
ver4.0.0.1で追加 |
E3DGetMaterialPower | マテリアル | マテリアルの反射の強さ(power)を取得します。 powerは実数です。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数 : power powerが代入されます。 実数型の変数。 |
ver4.0.0.1で追加 |
E3DGetMaterialBlendingMode | マテリアル | マテリアルの半透明モードを取得します。 modeの値の意味は 0のとき 頂点アルファ値による半透明モードです。 1のとき アッドモードです。 2のとき 頂点アルファを考慮したアッドモードです。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数 : mode 半透明モードが代入されます。 |
ver4.0.0.1で追加 |
E3DSetMaterialAlpha | マテリアル | マテリアルの透明度を設定します。 透明度は0.0から1.0の実数で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 変数または、数値 : alpha 透明度。 実数。 |
ver4.0.0.1で追加 |
E3DSetMaterialDiffuse | マテリアル | マテリアルの拡散光(diffuse)を設定します。 RGBは0から255の値で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 4. [IN] 数値または、変数 : R 5. [IN] 数値または、変数 : G 6. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 |
ver4.0.0.1で追加 |
E3DSetMaterialSpecular | マテリアル | マテリアルの反射光(specular)を設定します。 RGBは0から255の値で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 4. [IN] 数値または、変数 : R 5. [IN] 数値または、変数 : G 6. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 |
ver4.0.0.1で追加 |
E3DSetMaterialAmbient | マテリアル | マテリアルの周囲光(ambient)を設定します。 RGBは0から255の値で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 4. [IN] 数値または、変数 : R 5. [IN] 数値または、変数 : G 6. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 |
ver4.0.0.1で追加 |
E3DSetMaterialEmissive | マテリアル | マテリアルの自己照明(emissive)を設定します。 RGBは0から255の値で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 4. [IN] 数値または、変数 : R 5. [IN] 数値または、変数 : G 6. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 |
ver4.0.0.1で追加 |
E3DSetMaterialPower | マテリアル | マテリアルの反射の強さ(power)を設定します。 実数で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数 : setflag setflagが0のときは、 powerをそのままセットします。 setflagが1のときは、 現在のマテリアルにpowerを乗算します。 setflagが2のときは、 現在のマテリアルにpowerを足し算します。 setflagが3のときは、 現在のマテリアルからpowerを減算します。 4. [IN] 数値または、変数 : power 反射の強さを指定します。 実数。 |
ver4.0.0.1で追加 |
E3DSetMaterialBlendingMode | マテリアル | マテリアルの半透明モードを設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 blendmode 0, 1, 2はアルファテストの設定も変更します。 アルファテストの設定を変更したくない場合は blendmode 100, 101, 102をお使いください。 ver5.0.5.0でモードが4つ増えました。 ver5.1.0.1でモードが2つ増えました。 アルファテストを設定したい場合は E3DSetMaterialAlphaTestをご使用ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数 : blendmode 0を指定すると 頂点アルファ値による半透明モードになります。 アルファテストはオフになります。 1を指定すると アッドモードになります。 アルファテストはオンになり8より小さいアルファのときに描画されなくなります(Zバッファにも)。 2を指定すると、 頂点アルファを考慮したアッドモードになります。 アルファテストはオフになります。 100を指定すると 頂点アルファ値による半透明モードになります。 アルファテストは変更しません。 101を指定すると アッドモードになります。 アルファテストは変更しません。 102を指定すると、 頂点アルファを考慮したアッドモードになります。 アルファテストは変更しません。 103を指定すると乗算モード 104を指定すると減算モード 105を指定するとスクリーンモード 106を指定するとネガ反転モードになります。 107を指定するとオーバーレイ風合成モード。 108を指定すると覆い焼き風モードになります。 |
ver4.0.0.1で追加 ver5.0.2.9で拡張 ver5.0.5.0で拡張 ver5.1.0.1で拡張 |
E3DGetTextureFromMaterial | マテリアル | マテリアルに設定されているテクスチャを取得します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 数値 : texid テクスチャのIDが代入されます。 エラーのときは-1が代入されます。 |
ver4.0.0.1で追加 |
E3DSetTextureToMaterial | マテリアル | マテリアルにテクスチャを設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 テクスチャをセットしても、 UV座標は自動的に生成されません。 動的にテクスチャを設定する場合は、 UV座標もE3DSetUVで設定するか、 もしくは、 あらかじめ、モデルに仮のテクスチャを貼っておいてUV設定しておく必要があります。 具体的な使用例は、 e3dhsp3_TextureChange.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数 : texid テクスチャのIDを指定してください。 |
ver4.0.0.1で追加 |
E3DGetMaterialNo | マテリアル | 面のマテリアル番号を取得します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [IN] 数値または、変数 : faceno 面を識別する番号を指定してください。 4. [OUT] 変数 : matno マテリアルの番号が代入されます。 |
ver4.0.0.6で追加 |
E3DSetMotionKindML | モーション | ボーンごとに再生するモーションの番号を設定します。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には0をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を2、左ひじの番号を3、左手の番号を4、 右肩のボーン番号を12、右ひじの番号を13、右手の番号を14、 手に持っている武器のボーン番号を22として 武器を除く手の部分にモーションを設定したい場合は、 list(0) = 2 list(1) = 12 list(2) = 0 notlist(0) = 22 notlist(1) = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 2を指定すれば2の子供全部に処理が行われるので3,4を指定する必要はない。 同様に12を指定すれば12の子供全部に処理が行われるので13,14を指定する必要はない。 リストの最後には必ず0を指定する。 具体的な使用例は e3dhsp3_MultiLayerMotion.hspに書きましたのでご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid モーションを識別するid 3. [IN] 配列変数 : list 4. [IN] 配列変数 : notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列。 詳しくは前記をご覧ください。 |
ver4.0.0.6で追加 |
E3DSetMotionFrameNoML | モーション | ボーンごとに再生するモーションの番号とフレーム番号を設定します。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には0をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を2、左ひじの番号を3、左手の番号を4、 右肩のボーン番号を12、右ひじの番号を13、右手の番号を14、 手に持っている武器のボーン番号を22として 武器を除く手の部分にモーションを設定したい場合は、 list(0) = 2 list(1) = 12 list(2) = 0 notlist(0) = 22 notlist(1) = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 2を指定すれば2の子供全部に処理が行われるので3,4を指定する必要はない。 同様に12を指定すれば12の子供全部に処理が行われるので13,14を指定する必要はない。 リストの最後には必ず0を指定する。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid モーションを識別するid 3. [IN] 変数または、数値 : frameno フレーム番号。 4. [IN] 配列変数 : list 5. [IN] 配列変数 : notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列。 詳しくは前記をご覧ください。 |
ver4.0.0.6で追加 |
E3DSetNextMotionFrameNoML | モーション | 現在再生しているモーションの後につづけて再生するモーションをボーンごとに設定します。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には0をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を2、左ひじの番号を3、左手の番号を4、 右肩のボーン番号を12、右ひじの番号を13、右手の番号を14、 手に持っている武器のボーン番号を22として 武器を除く手の部分にモーションを設定したい場合は、 list(0) = 2 list(1) = 12 list(2) = 0 notlist(0) = 22 notlist(1) = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 2を指定すれば2の子供全部に処理が行われるので3,4を指定する必要はない。 同様に12を指定すれば12の子供全部に処理が行われるので13,14を指定する必要はない。 リストの最後には必ず0を指定する。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : srcmotid 3. [IN] 数値または、変数 : nextmotid 4. [IN] 数値または、変数 : nextframeno 5. [IN] 数値または、変数 : befframeno srcmotidのモーションが、befframeフレーム番号に達した後、nextmotidのモーションの、nextframenoのフレーム番号に、ジャンプするように設定されます。 befframeに-1をセットした場合は、srcmotidが最終フレームに達した後にジャンプします。 6. [IN] 配列変数 : list 7. [IN] 配列変数 : notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列。 詳しくは前記をご覧ください。 |
ver4.0.0.6で追加 |
E3DSetMOAEventNoML | モーション | モーションアクセラレータのイベント番号をボーンごとに設定します。 この命令を必要な分だけ呼んだ後に1回E3DSetNewPoseMLを呼ぶ必要があります。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には0をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を2、左ひじの番号を3、左手の番号を4、 右肩のボーン番号を12、右ひじの番号を13、右手の番号を14、 手に持っている武器のボーン番号を22として 武器を除く手の部分にモーションを設定したい場合は、 list(0) = 2 list(1) = 12 list(2) = 0 notlist(0) = 22 notlist(1) = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 2を指定すれば2の子供全部に処理が行われるので3,4を指定する必要はない。 同様に12を指定すれば12の子供全部に処理が行われるので13,14を指定する必要はない。 リストの最後には必ず0を指定する。 具体的な使用例は e3dhsp3_MultiLayerMotion_MOA.hsp に書きましたのでご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : eventno モーションの変化のトリガーとなるイベント番号。 3. [IN] 配列変数 : list 4. [IN] 配列変数 : notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列。 詳しくは前記をご覧ください。 |
ver4.0.0.6で追加 |
E3DGetMotionFrameNoML | モーション | 指定したボーンのモーション番号とフレーム番号を取得します。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : boneno ボーンを識別するID 3. [OUT] 変数 : motid モーション番号が代入されます。 4. [OUT] 変数 : frameno フレーム番号が代入されます。 |
ver4.0.0.6で追加 |
E3DGetNextMotionFrameNoML | モーション | E3DSetNextMotionFrameNoMLで設定した情報をボーンごとに取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : boneno ボーンを識別するID 3. [IN] 数値または、変数 : motid モーションを識別するID 4. [OUT] 変数 : nextmotid ジャンプ先のモーション番号が代入されます。 5. [OUT] 変数 : nextframeno ジャンプ先のフレーム番号が代入されます。 |
ver4.0.0.6で追加 |
E3DSetNewPoseML | モーション | マルチレイヤーモーションの仕様に従って、新しい姿勢情報をそれぞれのボーンにセットします。 具体的な使用例は e3dhsp3_MultiLayerMotion.hspと e3dhsp3_MultiLayerMotion_MOA.hsp に書きましたのでご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID |
ver4.0.0.6で追加 |
E3DGetCurrentBonePos | モデル情報 | 現在のボーンの位置を取得します。 E3DSetNewPose, E3DSetNewPoseMLの結果を使用します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : boneno ボーンを識別するID 3. [IN] 数値または、変数 : poskind poskind = 0 ---> ローカル座標(ボーン変形なし) poskind = 1 ---> グローバル座標(ボーン変形あり) poskind = 2 ---> ローカル座標(ボーン変形あり) 4. [OUT] 変数 : posx 5. [OUT] 変数 : posy 6. [OUT] 変数 : posz ボーンの位置が代入されます。 実数型の変数。 |
ver4.0.0.8で追加 |
E3DGetCurrentBoneQ | モーション | 現在のボーンの姿勢情報を取得します。 E3DSetNewPose, E3DSetNewPoseMLの結果を使用します。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数 : kind 親の影響を受けたクォータニオンを 取得する場合は、1を指定してください。 親の影響を受けていないクォータニオンを 取得する場合は、0を指定してください。 親の影響を受け、 更に、モデル全体の向きの影響を受けたクォータニオンを取得 するには、2を指定してください。 4. [IN][OUT] 数値または、変数 : qid クォータニオンを識別する番号。 E3DCreateQで取得した番号を指定してください。 qidで識別されるクォータニオンの内容に、 指定したボーンのクォータニオンの内容を、 代入します。 |
ver4.0.0.8で追加 |
E3DChkBumpMapEnable | 描画パラメータ | ハードウェアがバンプマップを表示可能かどうかを調べます。 | 1. [OUT]変数 : flag バンプマップ表示可能の場合は0以外が、 表示不可能のときは0が代入されます。 |
ver4.0.1.4で追加 |
E3DEnableBumpMap | 描画パラメータ | バンプマップ表示を使用するかどうかを設定します。 | 1. [IN] 数値または、変数 : flag 0を指定するとバンプマップを表示しません。 1を指定するとハードウェアに能力がある場合に限り、バンプマップを表示可能にします。 |
ver4.0.1.4で追加 |
E3DConvHeight2NormalMap | テクスチャ | 白黒の高さマップの画像データを、E3Dで使用可能な法線マップに変換します。 | 1. [IN] 文字列または、文字列変数 : hmapname 白黒画像のファイルのパス。 2. [IN] 文字列または、文字列変数 : nmapname 法線マップのファイルのパス。 出力ファイル名。BMPのみ有効。 3. [IN] 数値または、変数 : hparam バンプマップの高さのパラメータ。 値が大きいほど段差がきつくなります。 実数。 |
ver4.0.1.4で追加 |
E3DSetBumpMapToMaterial | マテリアル | E3DCreateTextureで作成したテクスチャをバンプマップに設定します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数 : texid テクスチャのIDを指定してください。 -1を指定するとバンプマップが無効になります。 |
ver4.0.1.4で追加 |
E3DGetMOATrunkInfo | モーション | MOAの分岐元モーションの情報を取得します。 trunkinfo引数には dim trunkinfo, MOAT_MAX で作成した配列を指定してください。 取得したtrunkinfo情報にはe3dhsp3.asで定義している MOAT_で始まる定数でアクセスします。 それぞれの定数の役割は以下のとおりです。 MOAT_IDLING アイドリングモーションかどうかのデータ MOAT_EV0IDLE イベント番号0でアイドリングに戻すかどうかのデータ MOAT_COMID 共通分岐イベント番号 MOAT_NOTCOMID 共通分岐禁止イベント番号 MOAT_BRANCHNUM 分岐先モーションがいくつあるか 例えば共通分岐番号の情報にアクセスする場合は trunkinfo( MOAT_COMID ) のように記述します。 この命令に渡すmotidはE3DGetMOAInfoで取得したIDを使用してください。 motid 0 (補間モーション)を指定すると trunkinfoにはすべて0が代入されます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID 3. [OUT] 配列変数 : trunkinfo 分岐元モーションの情報が代入されます。 前述の方法でdimした配列を指定してください。 |
|
E3DGetMOABranchInfo | モーション | MOAの分岐先モーションの情報を取得します。 branchinfo引数には dim branchinfo, MOAB_MAX, branchnum で作成した配列を指定してください。 branchnumにはE3DGetMOATrunkInfoで取得した trunkinfo( MOAT_BRANCHNUM ) を指定してください。 取得したbranchinfo情報にはe3dhsp3.asで定義している MOAB_で始まる定数でアクセスします。 それぞれの定数の役割は以下のとおりです。 MOAB_MOTID 分岐先モーションのモーションID MOAB_EVENTID イベント番号 MOAB_FRAME1 分岐元フレーム番号 MOAB_FRAME2 分岐先フレーム番号 MOAB_NOTFU 補間なしで変化させるかどうか branchinfoの1番目のインデックスにはMOAB_で始まる定数を指定し、2番目のインデックスには0から(getnum - 1) の値(分岐先の番号)を指定します。 例えば、最初の分岐のイベント番号にアクセスする場合は branchinfo( MOAB_EVENTID, 0 ) のように記述します。 この命令に渡すmotidはE3DGetMOAInfoで取得したIDを使用してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID 3. [OUT] 配列変数 : branchinfo 分岐先モーションの情報が代入されます。 前述の方法でdimした配列を指定してください。 4. [IN] 数値または、変数 : branchnum branchinfoをdimしたときのbranchnumを指定してください。 5. [OUT] 変数 : getnum 分岐先モーション情報をいくつ取得したかが代入されます。 |
|
E3DSetMOABranchFrame1 | モーション | MOAの分岐の分岐元フレーム番号情報を設定します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : tmotid 分岐元モーションを識別するID 3. [IN] 数値または、変数 : bmotid 分岐先モーションを識別するID 4. [IN] 数値または、変数 : frame1 分岐の分岐元フレーム番号 -1指定は、いつでも分岐することを表します。 |
|
E3DSetMOABranchFrame2 | モーション | MOAの分岐の分岐先フレーム番号情報を設定します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : tmotid 分岐元モーションを識別するID 3. [IN] 数値または、変数 : bmotid 分岐先モーションを識別するID 4. [IN] 数値または、変数 : frame2 分岐の分岐先フレーム番号 |
|
E3DSetDispSwitch2 | 描画パラメータ | ディスプレイスイッチのアニメーションの設定をします。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : boneno ボーンを識別するパーツの番号 3. [IN] 数値または、変数 : motid モーションを識別するID 4. [IN] 数値または、変数 : switchid スイッチの番号。0から99 5. [IN] 数値または、変数 : frameno モーションのフレーム番号 6. [IN] 数値または、変数 : switchflag スイッチの状態。 0がオフ。1がオン。 |
ver5.0.0.1で追加 |
E3DQtoEuler | 算術 | クォータニオンの姿勢をオイラー角に変換します。 回転の順番はZ軸、X軸、Y軸です。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID 2. [OUT] 数値または、変数 : newx 3. [OUT] 数値または、変数 : newy 4. [OUT] 数値または、変数 : newz オイラー角が代入されます。 実数型の変数。 5. [IN] 数値または、変数 : oldx 6. [IN] 数値または、変数 : oldy 7. [IN] 数値または、変数 : oldz 前回E3DQtoEulerした結果を指定します。 計算時にoldに一番近い角度をnewに代入します。 初回時には0を指定してください。 |
ver5.0.0.1で追加 |
E3DEnablePhongEdge | 描画パラメータ | 色P時に輪郭線を表示するかを指定します。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : flag 輪郭線を表示するとき1、しないとき0 |
ver5.0.0.1で追加 |
E3DSetPhongEdge0Params | 描画パラメータ | 色P時の輪郭線の色と幅と半透明モードを設定します。 半透明の輪郭線はE3DRenderのwithalpha引数に1を指定したときに表示されます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : r 3. [IN] 数値または、変数 : g 4. [IN] 数値または、変数 : b 輪郭線の色をRGBで指定します。 それぞれ0から255までの値。 5. [IN] 数値または、変数 : width 輪郭線の幅を実数で指定します。 6. [IN] 数値または、変数 : blendmode 輪郭線の半透明モードを指定します。 0を指定すると頂点アルファによる半透明 1を指定するとアッドモード 2を指定すると頂点アルファを考慮したアッドモード 3を指定すると不透明 になります。 デフォルト値は3です。 7. [IN] 数値または、変数 : alpha 輪郭線の頂点アルファを指定します。 blendmodeで0または2を指定したときに 意味を持ちます。 0.0から1.0の間の実数を指定してください。 |
ver5.0.0.1で追加 ver5.0.0.3で拡張 |
E3DGetDispSwitch2 | モーション | ディスプレイスイッチを取得します。 E3DSetNewPose, E3DSetNewPoseMLの結果を利用します。 dispswitch変数は dim dispswitch, DISPSWITCHNUM で確保してからこの命令に渡してください。 DISPSWITCHNUMはe3dhsp3.asで定義されています。 (スイッチの総数です) スイッチがオフのとき0がオンのときは0以外が代入されます。 例えばスイッチ3がオンのときは dispswitch( 3 ) に0以外が代入されます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 配列変数 : dispswitch スイッチの状態が代入されます。 詳しくは前記をご覧ください。 3. [IN] 数値または、変数 : leng dispswitch配列を作成したときの 要素数を指定します。 |
ver5.0.0.6で追加 |
E3DFreeThread | スレッド管理 | スレッドのリソースを解放します。 この命令を実行が終わったスレッドに対して呼ぶことで 4098回の呼び出し回数制限を緩和することが出来ます。 ただしこの命令を使用しても一度にアクティブにできる スレッド命令は4098個のままです。 |
1. [IN] 数値または、変数 : threadid スレッドを識別するID |
ver5.0.0.7で追加 |
E3DLoadSigFileAsGroundThread | 地面 | スレッドを作成して、E3DLoadSigFileAsGroundを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadSigFileAsGroundの説明も、お読みください。 |
1. [IN] 文字列または、文字列の変数 : fname *.sig のパス文字列。 2. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 3. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 4. [OUT] 変数 : threadid 作成したスレッドを識別するID。 |
ver5.0.0.7で追加 ver5.0.5.4で拡張 |
E3DLoadSigFileAsGroundFromBufThread | 地面 | スレッドを作成して、E3DLoadSigFileAsGroundFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadSigFileAsGroundFromBufの説明も、お読みください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 5. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 6. [OUT] 変数 : threadid 作成したスレッドを識別するID。 |
ver5.0.0.7で追加 ver5.0.5.4で拡張 |
E3DSetLightIdOfBumpMap | ライト | バンプマップを照らす光源を1つだけ選択します。 平行光源でも点光源でもOKです。 |
1. [IN] 数値または、変数 : lid ライトを識別するID |
ver5.0.0.8で追加 |
E3DSetSpriteUV | スプライト | スプライトのUVを設定します。 具体的な使用例は e3dhsp3_SpriteUV.hspをご覧ください。 |
1. [IN] 数値または、変数 : spid スプライトを識別するID 2. [IN] 数値または、変数 : startu U方向の表示開始点を0から1で指定します。 実数。 3. [IN] 数値または、変数 : endu U方向の表示終了点を0から1で指定します。 実数。 4. [IN] 数値または、変数 : startv V方向の表示開始点を0から1で指定します。 実数。 5. [IN] 数値または、変数 : endv V方向の表示終了点を0から1で指定します。 実数。 |
ver5.0.0.8で追加 |
E3DCreateRenderTargetTexture | テクスチャ | レンダリング可能なテクスチャを作成します。 この命令が成功するとスワップチェインIDとテクスチャIDが取得できます。 テクスチャのサイズは2の乗数にしてください。 消費するビデオメモリ量は sizex * sizey * ( 4 + 2 ) バイトです。 メモリ不足などでこの命令が失敗した場合には エラーにならずにokflagに0が代入されます。 失敗した場合はテクスチャサイズを小さくするなどして 再試行してみてください。 具体的な使用例は e3dhsp3_RenderTargetTexture.hspをご覧ください。 |
1. [IN] 数値または、変数 : sizex 2. [IN] 数値または、変数 : sizey 作成するテクスチャのサイズ 2の乗数を推奨。 3. [OUT] 変数 : scid スワップチェインIDが代入されます。 4. [OUT] 変数 : texid テクスチャIDが代入されます。 5. [OUT] 変数 : okflag 成功した場合は1が 失敗した場合は0が代入されます。 6. [IN] 数値または、変数 : fmt 作成したいテクスチャのフォーマットを指定します。 e3dhsp3.asで定義されているD3DFMT_で始まる 定数を使用してください。 この引数を省略した場合は D3DFMT_A8R8G8B8で作成されます。 |
ver5.0.0.9で追加 ver5.0.1.6で引数追加 |
E3DDestroyRenderTargetTexture | テクスチャ | レンダーターゲットテクスチャを破棄します。 |
1. [IN] 数値または、変数 : scid E3DCreateRednerTargetTextureで 取得したスワップチェインIDを指定します。 2. [IN] 数値または、変数 : texid E3DCreateRednerTargetTextureで 取得したテクスチャIDを指定します。 |
ver5.0.0.9で追加 |
E3DSetDSFillUpMode | モーション | 補間時に補間前のモーションのスイッチ状態を表示するか、もしくは補間後のモーションのスイッチ状態を表示するかを選びます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : mode 0を指定すると補間前のモーションの スイッチ状態を表示します。 1を指定すると補間後のモーションの スイッチ状態を表示します。 |
ver5.0.1.2で追加 |
E3DSetTexFillUpMode | モーション | 補間時に補間前のモーションのテクスチャアニメの状態を表示するか、もしくは補間後のモーションのテクスチャアニメの状態を表示するかを選びます。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : mode 0を指定すると補間前のモーションの テクスチャを表示します。 1を指定すると補間後のモーションの テクスチャを表示します。 |
|
E3DSetShadowBias | 描画パラメータ | 影をレンダリングする際のZバッファのバイアスを設定します。 一般に大きい値を設定すればマッハバンド(縞模様)が消えます。 具体的な使用例はe3dhsp3_shadow2.hspをご覧ください。 |
1. [IN] 数値または、変数 : bias Zバッファの誤差を緩和するためのバイアスを指定します。 デフォルト値は0.005です。 |
ver5.0.1.6で追加 |
E3DRenderWithShadow | 描画 | 影付きのシーンを一括レンダリングします。 内部でE3DChkInView、E3DBeginScene、E3DEndSceneも 呼ばれます。 全ての不透明を描画後、半透明が描画されます。 hsidarray(配列)にレンダリングしたいhsidを格納してから呼び出します。 具体的な使用例はe3dhsp3_shadow2.hspをご覧ください。 |
1. [IN] 数値または、変数 : scid 影付きのシーンをレンダリングするための スワップチェインIDを指定してください。 2. [IN] 数値または、変数 : rtscid 3. [IN] 数値または、変数 : rttexid シャドウマップ用のE3DCreateRenderTargetTexture で取得したscidとtexidを指定してください。 4. [IN] 配列変数 : hsidarray 描画したいhsidを配列に格納してください。 ビルボードを描画したいときはhsidに-1を 格納してください。 5. [IN] 数値または、変数 : num hsidarrayに何個のhsidを格納したかを指定してください。 6. [IN] 数値または、変数 : skipflag skipflagに1を指定すると 画面のバッファのクリアと背景の描画を スキップします。 デフォルト値は0. BeginSceneとEndSceneはスキップしません。 E3DBeginScene scid1 前に描画したいものをレンダー E3DEndScene E3DRenderWithShadow (skipflag = 1) E3DBeginScene scid1, 1 後に描画したいものをレンダー E3DEndScene のように描画してください。 |
ver5.0.1.6で追加 ver5.0.1.7で引数追加 |
E3DChkShadowEnable | 描画パラメータ | ハードウェアで影の描画が出来るかどうかを調べます。 | 1. [OUT] 変数 : flag 影の描画が出来る時は0以外が 出来ないときは0が代入されます。 |
ver5.0.1.6で追加 |
E3DEnableShadow | 描画パラメータ | 影の描画をオンまたはオフにします。 | 1. [IN] 数値または、変数 : flag 1をセットすると影の描画が可能な時は描画するようにします。 0をセットすると影の描画は行わないようにします。 |
ver5.0.1.6で追加 |
E3DCheckRTFormat | テクスチャ | E3DCreateRenderTargetTextureで作成できるフォーマットを調べます。 具体的な使用例はe3dhsp3_shadow.hspをご覧ください。 |
1. [IN] 数値または、変数 : fmt 調べたいフォーマットを指定します。 e3dhsp3.asで定義されているD3DFMT_で始まる 定数を使用してください。 2. [OUT] 変数 : okflag 指定したフォーマットが使用可能な時は0以外が 使用不可な時は0が代入されます。 |
ver5.0.1.6で追加 |
E3DSetShadowDarkness | 描画パラメータ | 影の暗さを設定します。 darknessに指定した係数にAmbientを掛けたものが 影の色となります。 デフォルト値は1.0です。 0に近づくほど暗くなります。 |
1. [IN] 数値または、変数 : darkness 0以上の実数。 アンビエントに掛け算して影の色とする。 |
ver5.0.1.7で追加 |
E3DRenderBatch | 描画 | E3DRenderのバッチ版。hsidをまとめて描画することにより高速化。 内部でE3DChkInView、E3DBeginScene、E3DEndSceneも 呼ばれます。 全ての不透明を描画後、半透明が描画されます。 |
1. [IN] 数値または、変数 : scid スワップチェインIDを指定してください。 2. [IN] 配列変数 : hsidarray 描画したいhsidを格納した配列。 3. [IN] 数値または、変数 : num hsidarrayに何個のhsidをセットしたか。 4. [IN] 数値または、変数 : needchkinview 内部でChkInViewを呼ぶかどうかのフラグ。 5. [IN] 数値または、変数 : skipflag 0以外をセットすると 画面バッファのクリアと背景の描画をスキップします。 BeginSceneとEndSceneはスキップしません。 デフォルト値は0。 |
ver5.0.1.7で追加 |
E3DSetVertPosBatch | モデル情報 | E3DSetVertPosのバッチ版。まとめて高速化。 あたり判定データの更新はされません。 vertarrayには、 ddim vertarray, vnum, 3 で確保したデータを渡してください。 dimではなくて、ddimで確保してください。 vnumには、点の数を入れてください。 vertarray(点の番号,0) にX座標、 vertarray(点の番号,1) にY座標、 vertarray(点の番号,2) にZ座標 を入れて、初期化しておいてください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID。 2. [IN] 数値または、変数 : partno パーツを識別するID。 3. [IN] 配列変数 : vertnoarray 位置を設定したい頂点の番号を配列にセットしてください。 4. [IN] 数値または、変数 : vnum 何個の頂点の位置を設定するかをセットしてください。 5. [IN] 配列変数 : vertarray 頂点の座標を実数型の配列にセットしてください。 詳しくは前記をご覧ください。 |
ver5.0.1.7で追加 |
E3DSetShadowMapLightDir | 描画パラメータ | 影用の平行光源の向きを設定します。 | 1. [IN] 数値または、変数 : dirx 2. [IN] 数値または、変数 : diry 3. [IN] 数値または、変数 : dirz 平行光源の向きをベクトル(dirx, diry, dirz)で 指定します。 実数です。 |
ver5.0.2.0で追加 |
E3DRenderBatchMode | 描画 | E3DRenderBatchの拡張版。 hsidごとに不透明のみを描画するか 半透明のみを描画するか 不透明と半透明の両方を描画するかを指定できます。 適切に設定することで描画速度が速くなります。 hsidarrayにはパーティクルのIDを指定することもできます。 パーティクルはmode 2のみ有効です。 パーティクルをhsidarrayに含める場合はこの命令を呼ぶ前に onlyupdate引数を1にしてE3DRenderParticleを呼んでおく必要があります。 |
1. [IN] 数値または、変数 : scid スワップチェインIDを指定してください。 2. [IN] 配列変数 : hsidarray 描画したいhsidを格納した配列。 3. [IN] 数値または、変数 : num hsidarrayに何個のhsidをセットしたか。 4. [IN] 数値または、変数 : needchkinview 内部でChkInViewを呼ぶかどうかのフラグ。 5. [IN] 数値または、変数 : skipflag 0以外をセットすると 画面バッファのクリアと背景の描画をスキップします。 BeginSceneとEndSceneはスキップしません。 デフォルト値は0。 6. [IN] 配列変数 : modearray 描画モードを格納した配列。 hsidarrayと同じ長さの配列。 配列の要素に1を指定すると不透明のみ 2を指定すると半透明のみ 3を指定すると両方を描画します。 |
ver5.0.2.1で追加 |
E3DGlobalToLocal | 算術 | グローバル座標系からキャラクターのローカル座標系への変換。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : srcx 3. [IN] 数値または、変数 : srcy 4. [IN] 数値または、変数 : srcz 変換前の座標を指定します。 実数。 5. [OUT] 変数 : dstx 6. [OUT] 変数 : dsty 7. [OUT] 変数 : dstz 変換後の座標が代入されます。 実数型の変数。 |
ver5.0.2.1で追加 |
E3DLocalToGlobal | 算術 | キャラクターのローカル座標系からグローバル座標系への変換。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : srcx 3. [IN] 数値または、変数 : srcy 4. [IN] 数値または、変数 : srcz 変換前の座標を指定します。 実数。 5. [OUT] 変数 : dstx 6. [OUT] 変数 : dsty 7. [OUT] 変数 : dstz 変換後の座標が代入されます。 実数型の変数。 |
ver5.0.2.1で追加 |
E3DSetShadowMapMode | 描画パラメータ | シャドウマップのモードを設定します。 モード0を指定するとLiSPSMの方法で E3DSetShadowMapLightDirを呼び出すだけで自動的に 適切なシャドウマップを作成します。 モード1を指定するとE3DSetShadowMapCameraと E3DSetShadowMapProjOrthoを使用する マニュアル設定のモードになります。 この命令を呼び出さなかった場合は モード0が適用されます。 |
1. [IN] 数値または、変数 : mode モード(0または1)を指定します。 詳しくは前記をご覧ください。 |
ver5.0.2.2で追加 |
E3DSetShadowMapCamera | 描画パラメータ | シャドウマップを作成する際のカメラの位置を設定します。 影を落とす際のライトの位置と同じ意味です。 |
1. [IN] 実数型配列変数 : pos カメラの位置を実数型の配列で指定します。 ddim pos, 3で作成し pos(0)にX座標、pos(1)にY座標、pos(2)にZ座標を 指定します。 2. [IN] 実数型配列変数 : target カメラの注視点を実数型の配列で指定します。 ddim target, 3で作成し pos(0)にX座標、pos(1)にY座標、pos(2)にZ座標を 指定します。 3. [IN] 実数型配列変数 : upvec カメラの上方向ベクトルを 実数型の配列で指定します。 ddim upvec, 3で作成し pos(0)にX座標、pos(1)にY座標、pos(2)にZ座標を 指定します。 通常は( 0.0, 1.0, 0.0 )を指定します。 |
ver5.0.2.2で追加 |
E3DSetShadowMapProjOrtho | 描画パラメータ | シャドウマップを作成する際のプロジェクションを設定します。 どのくらいの範囲のシーンをシャドウマップにするかが決定されます。 |
1. [IN] 数値または、変数 : rttexid E3DCreateRenderTargetTextureで作成したシャドウマップ用のテクスチャIDを渡します。 2. [IN] 数値または、変数 : near 視野内のカメラから一番近い距離を指定します。 あまり小さいとZバッファの精度が悪くなります。 実数。 3. [IN] 数値または、変数 : far 視野内のカメラから一番遠い距離を指定します。 あまり大きいとZバッファの精度が悪くなります。 実数。 4. [IN] 数値または、変数 : viewsize 正射影のビューのボリュームサイズを指定します。 実数。 |
ver5.0.2.2で追加 |
E3DSetVertPosBatchAOrder | モデル情報 | E3DSetVertPosのバッチ版。まとめて高速化。 あたり判定データの更新はされません。 E3DSetVertPosBatchとはvertarrayの2次元配列の順番が 異なります。 vertarrayには、 ddim vertarray, 3, vnum で確保したデータを渡してください。 dimではなくて、ddimで確保してください。 vnumには、点の数を入れてください。 vertarray(0, 点の番号) にX座標、 vertarray(1, 点の番号) にY座標、 vertarray(2, 点の番号) にZ座標 を入れて、初期化しておいてください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID。 2. [IN] 数値または、変数 : partno パーツを識別するID。 3. [IN] 配列変数 : vertnoarray 位置を設定したい頂点の番号を配列にセットしてください。 4. [IN] 数値または、変数 : vnum 何個の頂点の位置を設定するかをセットしてください。 5. [IN] 配列変数 : vertarray 頂点の座標を実数型の配列にセットしてください。 詳しくは前記をご覧ください。 |
ver5.0.2.2で追加 |
E3DLoadTextureFromBuf | テクスチャ | 作成済みのテクスチャにバッファから画像ファイルを読み込みます。 テクスチャの内容を頻繁に更新したいときに この命令を使えばテクスチャの作成と破棄を繰り返さなくても すみます。 ループの外で1回E3DCreateTextureなどでテクスチャを作っておき ループ中でこのE3DLoadTextureFromBufを呼び出すことを想定しています。 |
1. [IN] 変数または、数値 : texid 作成済みのテクスチャを識別するID 2. [IN] 変数 : buf バッファの変数 ファイルのイメージがバッファに入っていると 想定します。 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ(バイト) 4. [IN] 変数または、数値 : transparent 透過情報を指定します。 texidを取得するときのテクスチャ作成命令に 指定したのと同じtransparentを指定してください。 |
ver5.0.2.5で追加 |
E3DLoadSpriteFromBMSCR | スプライト | 作成済みのスプライトにHSPの画像バッファから画像を読み込みます。 スプライトの内容を頻繁に更新したいときに この命令を使えばスプライトの作成と破棄を繰り返さなくても すみます。 この命令に渡すspriteidは E3DCreateSpriteFromBMSCRで作成したスプライトでなければなりません。 他の命令で作成したスプライトIDを渡すとエラーになります。 ループの外で1回E3DCreateSpriteFromBMSCRでスプライトを作っておき ループ中でこのE3DLoadSpriteFromBMSCRを呼び出すことを想定しています。 |
1. [IN] 変数または、数値 : spriteid E3DCreateSpriteFromBMSCRで作成した スプライトID。 2. [IN] 変数または、数値 : wid ウインドウID 3. [IN] 変数または、数値 : transparentflag 透過フラグ。 E3DCreateSpriteFromBMSCR に指定したのと同じ値を指定してください。 (異なるものを渡すとエラーになります。) 4. [IN] 変数または、数値 : tpR 5. [IN] 変数または、数値 : tpG 6. [IN] 変数または、数値 : tpB 透過色。 |
ver5.0.2.5で追加 |
E3DSetShadowMapInterFlag | 描画パラメータ | シャドウマップにパーツを含めるかどうかのフラグを設定します。 シャドウマップモード0用です。 フラグには e3dhsp3.asで定義されているSHADOWIN_*を指定します。 SHADOWIN_PROJのときは パーツの一部分でも視野内に入っている場合には パーツ全体がシャドウマップに含まれるようにします。 キャラクターデータのデフォルト値です。 SHADOWIN_ALWAYSのときは 視野内に入っているかどうかにかかわらず 必ずシャドウマップにパーツ全体が含まれるようにします。 シャドウマップに入るパーツが広い範囲に散らばれば散らばるほど 影の品質は悪くなります。 ですのでシャドウマップに入れるかどうかを動的に判定し、 必要がなくなったら SHADOWIN_PROJやSHADOWIN_NOTに戻すことを推奨します。 SHADOWIN_NOTのときは シャドウマップに入れるかどうかをE3D側で制御しません。 地面などの大きいオブジェクト用のモードです。 地面データのデフォルト値です。 ver5.2.2.6よりSHADOWIN_EXCLUDEが追加されました。 SHADOWIN_EXCLUDEを指定した場合は シャドウマップから指定パーツを除外します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID。 2. [IN] 数値または、変数 : partno パーツを識別するID。 -1を指定すると全てのパーツに対して処理を行います。 3. [IN] 数値または、変数 : flag SHADOWIN_ではじまる定数を指定します。 詳しくは前記をご覧ください。 |
ver5.0.2.7で追加 ver5.2.2.6で拡張 |
E3DSetMaterialAlphaTest | マテリアル | マテリアルごとにアルファテストのオンオフを設定できます。 E3DSetMaterialBlendingModeで0、1、2の値をセットしている場合はアルファテストも自動的に設定されるようになっています。 自動設定させたくない場合はblendmode 100、101、102を使用するか、もしくはE3DSetMaterialBlendingModeの後で E3DSetMaterialAlphaTestを呼び出してください。 アルファテストをオンにした場合は アルファの値が閾値よりも小さい場合に描画されなくなります。 (Zバッファにも描画されなくなります。) |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 変数または、数値 : alphatest0 不透明を描画時にアルファテストする場合は1を しない場合は0を指定します。 4. [IN] 変数または、数値 : alphaval0 不透明時のアルファテストのアルファの閾値。 (0から255) 5. [IN] 変数または、数値 : alphatest1 半透明を描画時にアルファテストする場合は1を しない場合は0を指定します。 6. [IN] 変数または、数値 : alphaval1 半透明時のアルファテストのアルファの閾値。 (0から255) |
ver5.0.2.9で追加 |
E3DTransformBillboard | 描画準備 | ビルボードの視野内判定と位置計算とソートを行います。 デフォルト状態のE3DRenderBillboardでは これらの描画準備の計算と描画の処理がいっぺんに行われていました。 そのためあたり判定は描画の後にしなくてはならず、 実際の描画と判定が1フレームずれるという問題がありました。 この問題を解決するためにこの命令を追加しました。 この命令を呼び出したあとビルボードの位置などに変更がない場合は、E3DRenderBillboardのtransskip引数に1を設定します。 そうすることで2度同じ描画準備の計算を行うことを防ぎます。 E3DTransformBillboard あたり判定 E3DRenderBillboard (transskip = 1) のように使ってください。 |
引数なし | ver5.0.2.9で追加 |
E3DCalcMLMotion | モーション | マルチレイヤーモーションの姿勢情報を計算します。ローカルの姿勢から親子関係を反映した姿勢を計算します。 E3DSetNewPoseMLより後でE3DSetBoneQした場合などに 呼んでください。 (E3DSetNewPoseML内部からも呼ばれています) 使用例としては E3DSetMotionKindML E3DSetNewPoseML E3DGetMotionFrameNo E3DSetBoneQ E3DCalcMLMotion のような順序で呼び出します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid |
ver5.0.3.4で追加 |
E3DCreateSkinMat | ボーン影響 | 影響度の編集結果を表示用データに反映させます。 E3DSetInfElem, E3DDeleteInfElem, E3DNormalizeInfElem, E3DSetSymInfElemなどで影響度を全て編集し終わったら この命令を呼んでください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID。 2. [IN] 数値または、変数 : partno パーツを識別するID。 -1を指定すると全てのパーツに対して処理を行います。 |
ver5.0.3.7で追加 |
E3DSetSymInfElem | ボーン影響 | CALCMODE_SYM(対称セット)で頂点のボーン影響度を設定します。 対称軸symaxis引数にはe3dhsp3.asで定義されているSYMAXIS_で始まる定数を使用してください。 SYMAXIS_XはX軸対称 SYMAXIS_YはY軸対称 SYMAXIS_ZはZ軸対称 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID。 2. [IN] 数値または、変数 : partno パーツを識別するID。 -1を指定すると全てのパーツに対して処理を行います。 3. [IN] 数値または、変数 : vertno 頂点の番号。 -1を指定するとパーツ中のすべての頂点に対して処理を行います。 4. [IN] 数値または、変数 : symaxis 対称軸をSYMAXIS_で始まる定数で指定します。 5. [IN] 数値または、変数 : symdist 対称距離。 ぴったり対称な位置からどれくらい離れていても対称とみなすかを指定します。 実数。 |
ver5.0.3.7で追加 |
E3DUpdateSymInfElem | ボーン影響 | CALCMODE_SYM(対称設定)の設定してある頂点の影響度を最新の状態に更新します。 内部でCreateSkinMatも呼ばれます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID。 2. [IN] 数値または、変数 : excludeflag 0を指定すると全てのパーツに対して処理を行います。1を指定するとE3DSetValidFlagで無効にしているパーツは除外して処理を行います。 |
ver5.0.3.7で追加 |
E3DSetJointInitialPos | モデル情報 | ジョイント(ボーン)の初期位置をローカル座標系で設定します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するid 2. [IN] 数値または、変数 : jointno ジョイントを識別するパーツのid 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : posy 5. [IN] 数値または、変数 : posz ジョイントの位置をローカル座標系で指定します。 実数。 6. [IN] 数値または、変数 : calcflag 頂点の影響度の再計算をするときは1を、しないときは0を指定します。 7. [IN] 数値または、変数 : excludeflag calcflagに1を指定したときのみ意味を持ちます。 1を指定するとE3DSetValidFlagで無効にしているパーツの影響度は再計算しません。 0を指定すると無効にしているパーツも全て再計算の対象になります。 |
|
E3DSetLightId2OfBumpMap | ライト | バンプマップを設定したモデルを照らす2個目のライトを指定します。 影を表示している場合は有効になりません。 (影表示時はライト1個だけ有効) |
1. [IN] 数値または、変数 : lid ライトを識別するID |
ver5.0.4.1で追加 |
E3DSetLightId3OfBumpMap | ライト | バンプマップを設定したモデルを照らす3個目のライトを指定します。 影を表示している場合は有効になりません。 (影表示時はライト1個だけ有効) |
1. [IN] 数値または、変数 : lid ライトを識別するID |
ver5.0.4.1で追加 |
E3DGetCharaDir | 算術 | キャラクターから見て任意の方向のベクトルを取得します。 degxzにはXZ平面上の角度をdegyには仰ぎ角度を指定します。 例えばキャラクターの向いている向きを取得したい場合は ( degxz, degy ) = ( 0.0, 0.0 )を指定します。 キャラクター後ろは(180.0, 0.0), 右は(-90.0, 0.0) 左は(90.0, 0.0)上は(0.0, 90)下は(0.0, -90) というように指定します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するid 2. [IN] 数値または、変数 : degxz xz平面上での角度。 実数。 3. [IN] 数値または、変数 : degy 仰ぎ角度。 実数。 4. [OUT] 変数 : dstx 5. [OUT] 変数 : dsty 6. [OUT] 変数 : dstz 向きのベクトルが代入されます。 実数型の変数。 |
ver5.0.4.7で追加 |
E3DGetStrSizeByFontID | テキスト | 文字列の描画に必要な幅と高さを取得します。 |
1. [IN] 数値または、変数 : fontid E3DCreateFontで作成した、フォントの番号を指定します。 2. [IN] 文字列または、文字列の変数 : textstr 大きさを調べたい文字列を指定します。 3. [OUT] 変数 : strwidth 4. [OUT] 変数 : strheight 描画に必要な幅と高さが代入されます。 |
ver5.0.5.1で追加 |
E3DSetUVBatch | モデル情報 | 複数の頂点のUV設定を一括で行います。 ビデオバッファのロックとアンロックの回数が最小限なので 複数回E3DSetUVをよびだすよりも高速です。 処理したい頂点の総数をsetnum個とするとき vertnoptr(0)からvertnoptr(setnum - 1) までの整数配列に 頂点の番号を格納してください。 UVの指定の仕方は、まずddimで ddim uvptr, 2, setnum のように2次元の指定用の配列を作成してください。 そして uvptr( 0, 頂点のインデックス ) にU座標を格納し uvptr( 1, 頂点のインデックス ) にV座標を格納してください。 頂点のインデックスとは頂点番号ではありません。 0からsetnumまでの値です。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid。 -1を渡すとビルボードの処理をします。 2. [IN] 変数または、数値 : partno パーツを識別する番号。 hsidに-1を渡した場合はビルボードIDを指定します。 3. [IN] 配列変数 : vertnoptr 頂点の番号を格納した配列。 4. [IN] 変数または、数値 : setnum vertnoptrの要素数。 uvptrの要素数と同じです。 5. [IN] 配列変数 : uvptr 設定したいUV値の値を指定してください。 実数型の配列。 6. [IN] 変数または、数値 : setflag setflag に0を指定すると、 指定UV値を、そのままセットします。 setflagに1を指定すると、 指定UV値を、既存のUV値に、足し算します。 7. [IN] 変数または、数値 : clampflag 1をセットするとUVの値を0.0から1.0の間にクランプします。 0を指定するとクランプは行いません。 何も指定しなかった場合は0と同じです。 |
ver5.0.5.5で追加 |
E3DSetPresentInterval | 描画パラメータ | E3DPresentがモニタの垂直同期に合わせて動作するかどうかを設定します。 E3DInitよりも前に呼び出すことを想定しています。 E3DInitを呼び出したら途中で変更することは出来ません。 この命令を呼び出さなかった場合は垂直同期しません。 |
1. [IN] 変数または、数値 : flag 0を指定すると垂直同期しません。 1を指定すると垂直同期します。 |
ver5.0.5.6で追加 |
E3DGetScreenPosDouble | モデル情報 | 形状データの画面上での2Dの座標を取得する関数です。 奥行き情報Zも取得できます。 E3DGetScreenPos3の実数バージョンです。 パーツ単位、モデル単位、ビルボード単位で 使用できます。 頂点単位での2D座標も取得できます。 3Dキャラクターの位置に、2Dのスプライトを表示する、などの用途に使えます。 Z情報は、スプライト描画時のZ指定の値に使用できます。 E3DChkInViewより後で、呼び出してください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの2D位置を取得できます。 3. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 モデル全体の中心座標の2D座標を 取得できます。 4. [OUT] 変数 : scx 5. [OUT] 変数 : scy 指定したパーツの2Dスクリーン座標が代入されます。 実数の変数。 6. [OUT] 変数 : scz 奥行き情報Z 実数の変数。 この値に0から1の範囲外の値が得られた場合は、 画面に描画されない頂点です。 7. [IN] 数値または、変数 : vertno 取得したい頂点の番号を指定します。 この引数を省略した場合や、-1を指定した場合は、 パーツの中心の2D座標を取得します。 8. [IN] 数値または、変数 : calcmode 1を指定してください。 |
ver5.0.5.6で追加 |
E3DSetBillboardSize | ビルボード | ビルボードの大きさを設定します。 大きさはE3DCreateBillboardでも設定されるので この命令は大きさを変更したいときのみに使用します。 この命令はビデオメモリにアクセスするので多用すると重くなる可能性があります。 拡大縮小はE3DSetScaleをご使用ください。E3DSetScaleは高速です。 |
1. [IN] 変数または、数値 : bbid ビルボードを識別するID。 2. [IN] 変数または、数値 : width ビルボードの幅。 実数。 3. [IN] 変数または、数値 : height ビルボードの高さ。 実数。 4. [IN] 変数または、数値 : dirmode dirmodeに0を指定すると、 ビルボードは、Y軸に関してのみ、回転します。 地面に立っている木などに使用してください。 dirmodeの1を指定すると、 ビルボードは、全方向に回転します。 カメラの高さにかかわらず、カメラの方向を向かせたいもの 例えば、火や煙などに、使用してください。 5. [IN] 変数または、数値 : orgflag ビルボードの原点の位置を指定します。 orgflagに0を指定すると、 原点は、ビルボードの四角形の下の辺の中心になります。 地面に生やす木などの場合に、便利です。 orgflagに1を指定すると、 原点は、ビルボードの中心になります。 爆発などの、特殊効果に使う場合に、便利です。 |
ver5.1.0.0で追加 |
E3DSetHeightFogParams | 描画パラメータ | 高さフォグ(線形)を設定します。 頂点フォグなので、ポリゴンのない部分には、フォグはかかりません。 画面全体にフォグをかけたい場合は、 E3DCreateBGで、背景を作成してください。(背景はポリゴンです。) hsid, ビルボードを作成してから呼び出してください。 E3DCreateBGよりも前で呼び出してください。 E3DSetLinearFogParamsとの混在は出来ません。 具体的な使用例は、 e3dhsp3_HeightFog.hsp に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : enable 1を指定すると、フォグが有効に、 0を指定すると、フォグが無効になります。 2. [IN] 数値または、変数 : r 3. [IN] 数値または、変数 : g 4. [IN] 数値または、変数 : b フォグの色を、(r, g, b)で指定します。 5. [IN] 数値または、変数 : start 6. [IN] 数値または、変数 : end フォグが一番濃くなる一番低い高さをstartに指定してください。 フォグが無くなる一番高い高さをendに指定してください。 7. [IN] 数値または、変数 : hsid この引数に、モデルデータのhsidを 指定することにより、 モデル単位でのフォグの指定が可能になります。 特殊効果などで、フォグをかけたくない場合などの 表示にお使いください。 この引数を、省略した場合は、 すべてのモデルデータに対して、設定します。 |
ver5.1.0.0で追加 |
E3DSetTextureToBG | テクスチャ | E3DCreateBGで作成した背景のテクスチャを変更します。 E3DCreateBGが呼び出されている状態で使用してください。 |
1. [IN] 変数または、数値 : scid スワップチェインIDを指定します。 2. [IN] 変数または、数値 : stageno 背景の1枚目のテクスチャにセットしたい場合は0を、2枚目のテクスチャにセットしたい場合は1を指定します。 3. [IN] 変数または、数値 : texid 貼り付けたいテクスチャのIDを指定します。 |
ver5.1.0.0で追加 |
E3DGetTextureFromBG | テクスチャ | E3DCreateBGで作成した背景のテクスチャIDを取得します。 E3DCreateBGが呼び出されている状態で使用してください。 |
1. [IN] 変数または、数値 : scid スワップチェインIDを指定します。 2. [IN] 変数または、数値 : stageno 背景の1枚目のテクスチャを取得したい場合は0を、2枚目のテクスチャを取得したい場合は1を指定します。 3. [OUT] 変数 : texid テクスチャのIDが代入されます。 |
ver5.1.0.0で追加 |
E3DChangeMoaIdling | モーション | MOA(モーションアクセラレータ)のアイドリングモーションを変更します。 副作用として現在再生中のモーションが新しい(指定した)アイドリングモーションになります。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID。 2. [IN] 変数または、数値 : motid 新しいアイドリングモーションのID。 |
ver5.2.0.1で追加 |
E3DSetMotionBlur | エフェクト | モーションブラーのオンオフと種類を設定します。 種類にはワールドブラーとカメラブラーがあります。 ワールドブラーはキャラクターのワールド座標(位置)が変化したときにブラーが生じます。 カメラブラーはキャラクターのカメラ座標(キャラ位置含む)が変化したときにブラーが生じます。このモードでは位置が同じでもカメラが動いた時にはブラーが生じます。 この命令はオフにするとき以外重い処理です。 毎回呼ぶ必要はありません。 状態を変化させるときのみ呼んでください。 ver5.2.0.4でblurtime引数が追加されました。 これは何フレーム前のデータをブラー作成に使用するかを指定するものです。 blurtimeには1から20までの数字を指定してください。 具体的な使用例は e3dhsp3_MotionBlur.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID。 2. [IN] 変数または、数値 : mode BLUR_NONEを指定するとブラーが無効になります。 BLUR_WORLDを指定するとワールドブラーがオンになります。 BLUR_CAMERAを指定するとカメラブラーがオンになります。 BLUR_で始まる定数はe3dhsp3.asで定義されています。 3. [IN] 変数または、数値 : blurtime 何フレーム前のデータをブラー作成に使用するかを指定します。 1から20までの整数。 |
ver5.2.0.3で追加 ver5.2.0.4で拡張 |
E3DSetBeforeBlur | エフェクト | ブラー作成用のデータを準備します。 現在の姿勢などを保存しE3DSetMotionBlurで指定したblurtime回分蓄積します。 この命令はE3DSetMotionBlurを少なくとも1回は呼び出した後でないと意味を持ちません。 毎フレーム呼び出してください。 具体的な使用例は e3dhsp3_MotionBlur.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID。 |
ver5.2.0.3で追加 ver5.2.0.4で修正 |
E3DRenderMotionBlur | エフェクト | モーションブラーを表示します。 不透明の描画、半透明の描画の後に呼び出してください。 現在のキャラクターの状態とE3DSetBeforeBlurを呼び出したときのキャラクターの状態から移動軌跡ボリュームを作成し半透明で表示します。 具体的な使用例は e3dhsp3_MotionBlur.hspをご覧ください。 |
1. [IN] 数値または、変数 : scid スワップチェインIDを指定してください。 2. [IN] 配列変数 : hsidarray 描画したいhsidを配列に格納してください。 ビルボードを描画したいときはhsidに-1を 格納してください。 3. [IN] 数値または、変数 : num hsidarrayに何個のhsidを格納したかを指定してください。 |
ver5.2.0.3で追加 |
E3DInitBeforeBlur | エフェクト | ブラー作成用データを初期化します。 E3DSetMotionBlur呼び出しから数えて1回目の描画の前には 必ず呼び出してください。 呼ばなかった場合はゴミのようなブラーが表示されます。 E3DRenderよりも後で呼び出してください。 具体的な使用例は e3dhsp3_MotionBlur.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID。 |
ver5.2.0.4で追加 |
E3DSetMotionBlurPart | エフェクト | モーションブラーのオンオフと種類の変更をパーツ単位で行います。 E3DSetMotionBlurの代わりに呼び出します。 パーツ単位で設定できること以外はE3DSetMotionBlurと同じです。 E3DSetMotionBlurの説明もお読みください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID。 ビルボードにセットしたいときは-1を指定。 2. [IN] 変数または、数値 : mode BLUR_NONEを指定するとブラーが無効になります。 BLUR_WORLDを指定するとワールドブラーがオンになります。 BLUR_CAMERAを指定するとカメラブラーがオンになります。 BLUR_で始まる定数はe3dhsp3.asで定義されています。 3. [IN] 変数または、数値 : blurtime 何フレーム前のデータをブラー作成に使用するかを指定します。 1から20までの整数。 4. [IN] 配列変数 : partarray 設定したいパートの番号を配列に格納してください。 パートの番号はRokDeBone2の階層構造エディタでパーツ名を右クリックしシリアル番号を調べるか、またはE3DGetPartNoByNameを使用して取得してください。 hsidに-1を指定した場合はビルボードIDを格納してください。 5. [IN] 数値または、変数 : num partarrayに何個のパート番号を格納したかを指定してください。 |
ver5.2.0.6で追加 |
E3DBlurTexture16Box | エフェクト | テクスチャに16ボックスブラーでぼかしをかけます。 1パス処理です。 ver5.3.0.5で引数追加。 |
1. [IN] 変数または、数値 : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] 変数または、数値 : srctexid ぼかしたいテクスチャのID。 3. [IN] 変数または、数値 : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8で追加 ver5.3.0.5で拡張 |
E3DBlurTexture9Corn | エフェクト | テクスチャに9コーンブラーでぼかしをかけます。 1パス処理です。 ver5.3.0.5で引数追加。 |
1. [IN] 変数または、数値 : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] 変数または、数値 : srctexid ぼかしたいテクスチャのID。 3. [IN] 変数または、数値 : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8で追加 ver5.3.0.5で拡張 |
E3DBlurTextureGauss5x5 | エフェクト | テクスチャにガウスブラーでぼかしをかけます。 1パス処理です。 ver5.3.0.5で引数追加。 |
1. [IN] 変数または、数値 : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] 変数または、数値 : srctexid ぼかしたいテクスチャのID。 3. [IN] 変数または、数値 : dispersion 実数。 ぼかしの強さ。大きいほどぼける。 この命令ではぼかしに限界があります。 もっとたくさんぼかしたい場合は E3DBlurTextureGaussを使ってください。 4. [IN] 変数または、数値 : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8で追加 ver5.3.0.5で拡張 |
E3DBlurTextureGauss | エフェクト | テクスチャにガウスブラーでぼかしをかけます。 縦方向のぼかしと横方向のぼかしの2パス構成です。 E3Dの中では一番効果のあるぼかしです。 具体的な使用例は e3dhsp3_BlurTexture.hspに書きましたのでご覧ください。 ver5.3.0.5で引数追加。 |
1. [IN] 変数または、数値 : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] 変数または、数値 : workscid 途中経過格納用のレンダーターゲットテクスチャのスワップチェインID。 3. [IN] 変数または、数値 : worktexid 途中経過格納用のレンダーターゲットテクスチャのテクスチャID。 4. [IN] 変数または、数値 : srctexid ぼかしたいテクスチャのID。 5. [IN] 変数または、数値 : dispersion 実数。 ぼかしの強さ。大きいほどぼける。 6. [IN] 変数または、数値 : colmult 実数。 ぼかし色に乗算する係数を指定します。 縦方向横方向の2回掛け算されます。 7. [IN] 変数または、数値 : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8で追加 ver5.3.0.5で拡張 |
E3DBlendRTTexture | エフェクト | 2つのテクスチャをアルファブレンドし1つのテクスチャにレンダーします。 2つ目のテクスチャIDに-1を指定すると2個目のテクスチャは無効になり1個のテクスチャだけで処理が行われます。これはテクスチャのサイズを変えたい場合などに便利です。 具体的な使用例は e3dhsp3_BlurTexture.hspに書きましたのでご覧ください。 ver5.3.0.5で引数追加。 |
1. [IN] 変数または、数値 : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] 変数または、数値 : texid1 1枚目のテクスチャのID。 最初に描画される。 3. [IN] 配列の変数 : col1 実数型の配列の変数。 要素数は4つ。 col1(0)には赤色成分をcol1(1)には緑色成分を col1(2)には青色成分をcol1(3)には透明度を 設定して渡します。 各値は0.0から1.0です。 この色はtexid1のテクスチャの色に乗算されます。 4. [IN] 変数または、数値 : texf1 texid1の拡大縮小フィルタの種類。 D3DTEXF_POINTはぼけません。 D3DTEXF_LINEARはぼけます。 どちらかを指定してください。 5. [IN] 変数または、数値 : texid2 2枚目のテクスチャのID。 texid1の後に描画される。 6. [IN] 配列の変数 : col2 実数型の配列の変数。 要素数は4つ。 col2(0)には赤色成分をcol2(1)には緑色成分を col2(2)には青色成分をcol2(3)には透明度を 設定して渡します。 各値は0.0から1.0です。 この色はtexid2のテクスチャの色に乗算されます。 7. [IN] 変数または、数値 : texf2 texid2の拡大縮小フィルタの種類。 D3DTEXF_POINTはぼけません。 D3DTEXF_LINEARはぼけます。 どちらかを指定してください。 8. [IN] 変数または、数値 : blendop アルファブレンド操作の種類。 e3dhsp3.asで定義されているD3DBLENDOP_で始まる定数を指定してください。 9. [IN] 変数または、数値 : srcblend D3DRS_SRCBLENDの値。 e3dhsp3.asで定義されているD3DBLEND_で始まる定数を指定してください。 10. [IN] 変数または、数値 : destblend D3DRS_DESTBLENDの値。 e3dhsp3.asで定義されているD3DBLEND_で始まる定数を指定してください。 11. [IN] 変数または、数値 : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8で追加 ver5.3.0.5で拡張 |
E3DSetClearCol | 描画パラメータ | サーフェスのクリア色をスワップチェインごとに設定します。 レンダーターゲットテクスチャのクリア色も設定できます。 E3DBeginSceneより前で呼んでください。 |
1. [IN] 変数または、数値 : scid スワップチェインIDを指定します。 2. [IN] 変数または、数値 : A クリア色の透明度を指定します。 0から255までの整数値です。 3. [IN] 変数または、数値 : R クリア色の赤成分を指定します。 0から255までの整数値です。 4. [IN] 変数または、数値 : G クリア色の緑成分を指定します。 0から255までの整数値です。 5. [IN] 変数または、数値 : B クリア色の青成分を指定します。 0から255までの整数値です。 |
ver5.2.0.9で追加 |
E3DSetMotionBlurMinAlpha | エフェクト | モーションブラーのブラーの消え具合を設定します。 モーションブラーは動いた後の位置の透明度が1で 動く前の位置の透明度はminAlphaとなります。 ブラーの透明度は1からminAlphaまで徐々に薄くなっていくことになります。 このminAlphaの値を調整することでブラーの消え具合を変えることが出来ます。 何も設定しない状態ではminAlphaは0.2になっています。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID。 2. [IN] 変数または、数値 : partno 設定したいパーツの番号。 -1を指定すると全てのパーツに設定します。 3. [IN] 変数または、数値 : minAlpha 0.0から1.0までの実数。 ブラーの最小透明度を指定します。 |
ver5.2.0.9で追加 |
E3DRenderGlow | エフェクト | グロー源を描画します。 グローの使い方についてはrdb2_glow.htmをご覧ください。 具体的な使用例は e3dhsp3_glow.hspをご覧ください。 |
1. [IN] 配列変数 : hsidarray 描画したいhsidを配列に格納してください。 2. [IN] 数値または、変数 : num hsidarrayに何個のhsidを格納したかを指定してください。 |
ver5.2.1.0で追加 |
E3DSetMaterialGlowParams | マテリアル | グローの有効無効と色倍率を指定します。 この命令でグローのモードやオンオフを変更すると マテリアルの透過方法transparentが自動的に適切なものに変更されます。 モード変更前の状態に戻したい場合は E3DGetMaterialTransparentとE3DSetMaterialTransparent を使用して変更前の状態を保存しておいて復元してください。 グローの使い方についてはrdb2_glow.htmをご覧ください。 具体的な使用例は e3dhsp3_glow.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 変数または、数値 : glowmode グローのモードを指定します。 GLOW_NONEを指定するとグローが無効になります。 GLOW_NORMALを指定すると不透明グローになります。 GLOW_ALPHAを指定すると半透明グローになります。 GLOWで始まる定数はe3dhsp3.asで定義されています。 4. [IN] 変数または、数値 : setcolflag colmult引数で指定した値を設定したいときは1を指定し、無視したいときは0を指定します。 5. [IN] 配列の変数 : colmult 実数型の配列の変数。 colmult(0)には赤の倍率をcolmult(1)には緑の倍率をcolmult(2)には青の倍率を指定してください。 |
ver5.2.1.0で追加 |
E3DGetMaterialGlowParams | マテリアル | グローの有効無効と色倍率を取得します。 グローの使い方についてはrdb2_glow.htmをご覧ください。 具体的な使用例は e3dhsp3_glow.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数 : glowmode グローのモードが代入されます。 GLOW_NONEはグロー無し。 GLOW_NORMALは不透明グロー。 GLOW_ALPHAは半透明グロー。 GLOWで始まる定数はe3dhsp3.asで定義されています。 4. [OUT] 配列の変数 : colmult 実数型の配列の変数。 この命令を呼ぶ前に必ずddim colmult, 3を実行してください。 グローの色倍率が代入されます。 colmult(0)には赤の倍率がcolmult(1)には緑の倍率がcolmult(2)には青の倍率が代入されます。 |
ver5.2.1.0で追加 |
E3DSetMaterialTransparent | マテリアル | テクスチャの透過方法を設定します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 変数または、数値 : transparent テクスチャの透過モードを指定します。 0を指定すると透過なし。 1を指定すると黒色透過。 2を指定するとテクスチャのアルファにより透過。 |
ver5.2.1.0で追加 |
E3DGetMaterialTransparent | マテリアル | テクスチャの透過方法を取得します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数 : transparent テクスチャの透過モードが代入されます。 0は透過なし。 1は黒色透過。 2はテクスチャアルファによる透過。 |
ver5.2.1.0で追加 |
E3DChkHDR | 環境 | HDRで描画できるかどうかを調べます。 E3DInitよりも後で呼び出します。 主に浮動小数フォーマットのテクスチャが使えるかどうかが問題になります。 |
1. [OUT] 変数 : okflag HDRが使用できる場合は1が出来ない場合は0が代入されます。 2. [OUT] 変数 : hdrformat HDRシーンを描画するときのテクスチャのフォーマットが代入されます。 3. [OUT] 変数 : toneformat トーンマップを作成するときのテクスチャのフォーマットが代入されます。 |
ver5.2.1.6で追加 |
E3DCheckSpec | 環境 | Easy3Dが実行可能かどうかを調べます。 ピクセルシェーダー2.0が存在するかどうかや ストリームを3つ以上使えるかどうかなどを調べます。 E3DInitよりも前で呼び出します。 |
1. [IN] 変数または、数値 : wid ウインドウのIDを渡してください。 screen命令やbgscr命令に指定したのと同じ番号を 指定してください。 E3DInitに渡す予定のwidを指定してください。 2. [OUT] 変数 : okflag Easy3Dが使用できる場合は1が出来ない場合は0が代入されます。 |
ver5.2.1.6で追加 |
E3DDisablePostEffect | 環境 | デフォルトの動作ではdllと同じ場所にE3D_HLSLフォルダが無いとエラーになりますが、ポストエフェクト機能を使わないとこの命令で宣言すれば、E3D_HLSLフォルダがなくてもエラーになりません。 E3DInitよりも前で1回だけ呼び出してください。 |
なし | ver5.2.1.6で追加 |
E3DSetHDRLightDiffuse | ライト | HDR用の強いライト色(拡散光)を設定することが出来ます。 浮動小数点で指定します。 1.0は整数指定時の255に相当します。 |
1. [IN] 変数または、数値 : lid ライトを識別するid 2. [IN] 変数または、数値 : R 3. [IN] 変数または、数値 : G 4. [IN] 変数または、数値 : B ライトの拡散色を(R,G,B)で指定します。 |
ver5.2.1.6で追加 |
E3DSetHDRLightSpecular | ライト | HDR用の強いライト色(反射光)を設定することが出来ます。 浮動小数点で指定します。 1.0は整数指定時の255に相当します。 |
1. [IN] 変数または、数値 : lid ライトを識別するid 2. [IN] 変数または、数値 : R 3. [IN] 変数または、数値 : G 4. [IN] 変数または、数値 : B ライトの反射色を(R,G,B)で指定します。 |
ver5.2.1.6で追加 |
E3DDownScaleRTTexture4x4 | エフェクト | 縦横それぞれ4分の1の大きさのレンダーターゲットテクスチャにコピーします。 |
1. [IN] 変数または、数値 : dstscid 描画先のレンダーターゲットテクスチャのスワップチェインID。小さい方のテクスチャ。 2. [IN] 変数または、数値 : srctexid 描画元のレンダーターゲットテクスチャのテクスチャID。大きい方のテクスチャ。 |
ver5.2.1.6で追加 |
E3DDownScaleRTTexture2x2 | エフェクト | 縦横それぞれ2分の1の大きさのレンダーターゲットテクスチャにコピーします。 |
1. [IN] 変数または、数値 : dstscid 描画先のレンダーターゲットテクスチャのスワップチェインID。小さい方のテクスチャ。 2. [IN] 変数または、数値 : srctexid 描画元のレンダーターゲットテクスチャのテクスチャID。大きい方のテクスチャ。 |
ver5.2.1.6で追加 |
E3DCreateToneMapTexture | テクスチャ | トーンマップテクスチャを作成します。 トーンマップテクスチャとはシーンの明るさを計測するために使用するレンダーターゲットテクスチャです。 一度に有効にできるトーンマップの組は10組までです。 それ以上のトーンマップを使用したい場合はE3DDestroyToneMapTextureを呼んで不要なものを削除してから この命令を呼んでください。 具体的な使用例は e3dhsp3_HDRLighting.hspをご覧ください。 |
1. [IN] 変数または、数値 : tonenum トーンマップテクスチャの数を指定します。 3以上の数を指定してください。 トーンマップは1X1の大きさのものから順番に4倍ずつしたサイズのテクスチャになります。 例えばtonenumに4を指定した場合は 1X1, 4X4, 16X16, 64X64のサイズのテクスチャが内部で作成されます。 2. [IN] 変数または、数値 : toneformat トーンマップテクスチャのフォーマット。 E3DChkHDRで取得したtoneformatを指定してください。 3. [OUT] 変数 : tonemapid 作成したトーンマップを識別するIDが代入されます。 4. [OUT] 変数 : okflag 命令が成功した場合には1が失敗した場合には0が代入されます。 |
ver5.2.1.6で追加 |
E3DDestroyToneMapTexture | テクスチャ | トーンマップテクスチャを削除します。 | 1. [IN] 変数または、数値 : tonemapid 削除するトーンマップを識別するID。 |
ver5.2.1.6で追加 |
E3DRenderToneMap | エフェクト | トーンマップにシーンの明るさをレンダリングし明るさを計測します。 具体的な使用例は e3dhsp3_HDRLighting.hspをご覧ください。 |
1. [IN] 変数または、数値 : tonemapid トーンマップを識別するID。 2. [IN] 変数または、数値 : srctexid 明るさを計測したいテクスチャのID。 |
ver5.2.1.6で追加 |
E3DBrightPassRTTextureHDR | エフェクト | HDRで描画したテクスチャの明るい部分だけを抜き出しLDRに変換します。 具体的な使用例は e3dhsp3_HDRLighting.hspをご覧ください。 |
1. [IN] 変数または、数値 : dstscid 描画先のスワップチェインID。 2. [IN] 変数または、数値 : srctexid HDRで描画されている元画像の入ったテクスチャのID。 3. [IN] 変数または、数値 : middlegray 画面の明るさを決めるキーになる値。 実数。 4. [IN] 変数または、数値 : threshold この値より暗い部分は色が0になる。 実数。 5. [IN] 変数または、数値 : offset thresholdで色成分を引いた後にoffsetだけ色を足します。 6. [IN] 変数または、数値 : tonemapid シーンの明るさを記録してあるトーンマップのID。 |
ver5.2.1.6で追加 |
E3DRenderHDRFinal | エフェクト | HDRシーンとブルーム画像を合成しLDRに変換して描画します。 具体的な使用例は e3dhsp3_HDRLighting.hspをご覧ください。 |
1. [IN] 変数または、数値 : dstscid 描画先のスワップチェインID。 2. [IN] 変数または、数値 : srctexid0 HDRで描画されている元画像の入ったテクスチャのID。 3. [IN] 変数または、数値 : srctexid1 ブルーム画像のテクスチャID。 4. [IN] 変数または、数値 : tonemapid トーンマップのID。 5. [IN] 変数または、数値 : middlegray シーンの明るさを決定するキーの値。 E3DBrightPassRTTextureHDRに指定したのと同じ値を指定します。 実数。 |
ver5.2.1.6で追加 |
E3DMonoRTTexture | エフェクト | テクスチャの内容を白黒画像に変換します。 具体的な使用例は e3dhsp3_Mono.hspをご覧ください。 |
1. [IN] 変数または、数値 : dstscid 描画先のスワップチェインID。 2. [IN] 変数または、数値 : srctexid 元画像の入ったテクスチャのID。 |
ver5.2.1.7で追加 |
E3DCbCrRTTexture | エフェクト | テクスチャの内容をYCbCr色空間に変換しYを保ったままCbとCrを指定値に設定します。 YCbCrの値のセットがどんな色になるのかはPhotoShopなどのペイントソフトで確認してください。 具体的な使用例は e3dhsp3_CbCr.hspをご覧ください。 |
1. [IN] 変数または、数値 : dstscid 描画先のスワップチェインID。 2. [IN] 変数または、数値 : srctexid 元画像の入ったテクスチャのID。 3. [IN] 変数または、数値 : cb YCbCrのCbの値。 実数。 4. [IN] 変数または、数値 : cr YCbCrのCrの値。 実数。 |
ver5.2.1.7で追加 |
E3DShaderConstOffset16 | エフェクト | posteffect.fxのデータfloat2 avSampleOffsets[16]に値を設定します。 このデータは他の命令でも使われます。 (使われている場所はposteffect.fxで確認してください。) 他の命令で上書きされることがあるのでその都度設定してください。 offsetarrayには ddim offsetarray, 2, 16 で確保した配列を使用してください。(dimでなくて実数のddimです) 自分で値をセットしてから命令に渡してください。 |
1. [IN] 配列の変数 : offsetarray セットしたい値が設定してある実数の配列。 詳しくは前記をご覧ください。 |
ver5.2.1.8で追加 |
E3DShaderConstWeight16 | エフェクト | posteffect.fxのデータfloat4 avSampleWeights[16]に値を設定します。 このデータは他の命令でも使われます。 (使われている場所はposteffect.fxで確認してください。) 他の命令で上書きされることがあるのでその都度設定してください。 weightarrayには ddim weightarray, 4, 16 で確保した配列を使用してください。(dimでなくて実数のddimです) 自分で値をセットしてから命令に渡してください。 |
1. [IN] 配列の変数 : weightarray セットしたい値が設定してある実数の配列。 詳しくは前記をご覧ください。 |
ver5.2.1.8で追加 |
E3DShaderConstUserFL4 | エフェクト | posteffect.fxのデータfloat4 userFL4_0からuserFL4_9のどれかに値を設定します。 flarrayには ddim flarray, 4 で確保した配列を使用してください。(dimでなくて実数のddimです) 自分で値をセットしてから命令に渡してください。 具体的な使用例は e3dhsp3_CustomShader.hspをご覧ください。 |
1. [IN] 変数または、数値 : datano userFL4_0からuserFL4_9までのどれに値をセットするかを0から9の整数で指定します。 2. [IN] 配列の変数 : flarray セットしたい値が設定してある実数の配列。 詳しくは前記をご覧ください。 |
ver5.2.1.8で追加 |
E3DShaderConstUserTex | エフェクト | posteffect.fxのデータtexture usertex0からusertex4のどれかに値を設定します。 具体的な使用例は e3dhsp3_CustomShader.hspをご覧ください。 |
1. [IN] 変数または、数値 : datano usertex0からusetex4までのどれに値をセットするかを0から4の整数で指定します。 2. [IN] 変数または、数値 : srctexid 設定したいテクスチャを識別するID。 |
ver5.2.1.8で追加 |
E3DCallUserShader | エフェクト | posteffect.fxのtechnique PostEffectUser0からPostEffectUser4のうちの一つを実行します。 実行するパスも1つだけ選べます。 具体的な使用例は e3dhsp3_CustomShader.hspをご覧ください。 |
1. [IN] 変数または、数値 : shaderno PostEffectUser0からPostEffectUser4までのどれを実行するかを0から4の整数で指定します。 2. [IN] 変数または、数値 : passno テクニックの何番のパスを実行するかを指定します。 例えばpass P0を実行したいときは0をpass P1を実行したいときは1を指定します。 記述してあるパスの番号最大値よりも大きい値を指定するとエラーになります。 3. [IN] 変数または、数値 : dstscid 描画先のスワップチェインID。 |
ver5.2.1.8で追加 |
E3DCreateBone | モデル情報 | ボーンを新規に作成します。 読み込み済みのモーションは全て破棄されます。 影響度の再計算はしません。 したい場合はE3DJointRemakeを呼び出してください。 ボーンの位置はE3DSetJointInitialPosで設定してください。 Easy3Dの仕様上ボーンを破棄するとゴミデータが残ります。 ゴミデータはあまり多くなると描画速度に影響します。 E3DCreateBoneにはゴミデータが存在すればそれを再利用するような仕組みがあります。 ですのでまず不要なボーンをE3DDestroyBoneした後にE3DCreateBoneするとゴミが少なくて済みます。 ゴミの掃除の仕方はRokDeBone2ver5.2.1.3の新機能のページの説明をご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID。 2. [IN] 文字列または、文字列の変数 : name ボーンの名前を格納した文字列。 255バイトまでです。 3. [IN] 変数または、数値 : parentid 親になるジョイントを識別するパーツのID。 一番親のボーンを作成する場合以外は必ずジョイントのIDを指定してください。 一番親のボーンを作成するときは-1を指定してください。-1を指定するとパーツをまとめる役割をするパーツのうちで一番最後に作られたパーツが親になります。 ( 通常は「Joint Part」という名前のパーツになります。) 4. [OUT] 変数 : serialid 新たに作成されたボーンを識別するID(パーツのID)が代入されます。 エラーが生じた場合は-1が代入されます。 |
ver5.2.1.9で追加 |
E3DDestroyBone | モデル情報 | ボーンを破棄します。 読み込み済みのモーションは全て破棄されます。 影響度の再計算は強制的に行われます。 E3DCreateBoneの説明もお読みください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID。 2. [IN] 変数または、数値 : boneno 削除したいボーンを識別するID。 |
ver5.2.1.9で追加 |
E3DGetMorphBaseNum | モーフ | モーフのベースの数を取得します。 それぞれのモーフにはベースは1個だけしか含まれないので この数はモーフの数と一致します。 具体的な使用例は e3dhsp3_MorphInfo.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [OUT] 変数 : basenumptr ベースの数が代入されます。 |
ver5.2.2.3で追加 |
E3DGetMorphBaseInfo | モーフ | モーフのベースの情報を一括で取得します。 具体的な使用例は e3dhsp3_MorphInfo.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : arrayleng basenameとbaseinfoの要素数を指定してください。 E3DGetMorphBaseNumで取得したbasenum個じゃないとエラーになります。 3. [OUT] 文字列の変数 : basename ベースの名前が代入されます。 sdim basename, 256, basenum のように文字列を作成して指定してください。 。 4. [OUT] 配列変数 : baseinfo ベースの情報が代入されます。 dim baseinfo, MBI_MAX, basenum で配列を作成してください。 MBI_で始まる定数はe3dhsp3.asで定義されています。 basecntを0からbasenum - 1までの数とすると baseinfo( MBI_DISPNO, basecnt )にはベースのシリアルIDが代入されます。 baseinfo( MBI_BONENO, basecnt )にはモーフのモーション情報の格納先ボーン番号が代入されます。 baseinfo( MBI_TARGETNUM, basecnt )にはベースに対応付けられたターゲットの数が代入されます。 |
ver5.2.2.3で追加 |
E3DGetMorphTargetInfo | モーフ | モーフのターゲットの情報をモーフごと(ベースごと)に取得します。 具体的な使用例は e3dhsp3_MorphInfo.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_DISPNO, basecnt )を指定してください。 3. [IN] int : arrayleng targetnameとtargetinfoの要素数を指定してください。 ベースに含まれるターゲット数と異なる場合にはエラーになります。 4. [OUT] 文字列の変数 : targetname ターゲットの名前が代入されます。 sdim targetname, 256, targetnum のように配列を作成してください。 5. [OUT] 配列変数 : targetno ターゲットのシリアルIDが代入されます。 dim targetno, targetnum のように配列を作成してください。 |
ver5.2.2.3で追加 |
E3DGetMorphKeyNum | モーフ | モーフモーションのキーの数を取得します。 具体的な使用例は e3dhsp3_MorphInfo.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 3. [IN] 変数または、数値 : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_BONENO, basecnt )を指定してください。 4. [IN] 変数または、数値 : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_DISPNO, basecnt )を指定してください。 5. [IN] 変数または、数値 : targetid モーフのターゲットを識別する番号を指定してください。 E3DGetMorphTargetInfoで取得したtargetno( targetcnt )を指定してください。 6. [OUT] 変数 : keynum キーの数が代入されます。 |
ver5.2.2.3で追加 |
E3DGetMorphKey | モーフ | モーフモーションの情報をキーの数分取得します。 具体的な使用例は e3dhsp3_MorphInfo.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 3. [IN] 変数または、数値 : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_BONENO, basecnt )を指定してください。 4. [IN] 変数または、数値 : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_DISPNO, basecnt )を指定してください。 5. [IN] int : targetid モーフのターゲットを識別する番号を指定してください。 E3DGetMorphTargetInfoで取得したtargetno( targetcnt )を指定してください。 6. [IN] int : arrayleng motioninfoptrの要素数を指定してください。 E3DGetMorphKeyNumで取得したkeynum個じゃないとエラーになります。 7. [OUT] 変数 : framenoarray キーフレームの番号がキーの数分代入されます。 E3DGetMorphKeyNumで取得したキーの数をkeynumとすると dim framenoarray, keynum のように配列を作成してください。 8. [OUT] 変数 : ratearray 実数型の配列変数。 モーフモーションのブレンド率がキーの数分代入されます。 E3DGetMorphKeyNumで取得したキーの数をkeynumとすると ddim ratearray, keynum のように配列を作成してください。 |
ver5.2.2.3で追加 |
E3DGetCurMorphInfo | モーフ | 任意のフレーム番号の補間済みのモーフモーション情報を取得します。 この命令では現在のモーションID、フレーム番号についての情報を取得します。 任意のモーション、フレーム番号の情報を取得したい場合は E3DSetMotionFrameNoと組み合わせて使ってください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_BONENO, basecnt )を指定してください。 3. [IN] 変数または、数値 : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_DISPNO, basecnt )を指定してください。 4. [IN] 変数または、数値 : targetid モーフのターゲットを識別する番号を指定してください。 E3DGetMorphTargetInfoで取得したtargetno( targetcnt )を指定してください。 5. [OUT] 変数 : framenoptr フレーム番号が代入されます。 6. [OUT] 変数 : rateptr 実数型の変数 ブレンド率が代入されます。 |
ver5.2.2.3で追加 |
E3DCreateMorph | モーフ | モーフを作成します。 ベースのIDとボーンのIDを指定します。 ここで指定したボーンに作成したモーフのモーション情報が格納されます。 この命令を呼ぶと読み込み済みのモーションは全て破棄されます。 具体的な使用例は e3dhsp3_MorphInfo_Create.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : baseid ベースを識別する番号を指定してください。 E3DGetPartNoByNameなどでIDを取得して指定してください。 3. [IN] 変数または、数値 : boneid ボーンを識別する番号を指定してください。 E3DGetPartNoByNameなどでIDを取得して指定してください。 |
ver5.2.2.3で追加 |
E3DAddMorphTarget | モーフ | E3DCreateMorphで作成したモーフにターゲットを追加します。 具体的な使用例は e3dhsp3_MorphInfo_Create.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : baseid ベースを識別する番号を指定してください。 E3DGetPartNoByNameなどでIDを取得して指定してください。 3. [IN] 変数または、数値 : targetid ターゲットを識別する番号を指定してください。 E3DGetPartNoByNameなどでIDを取得して指定してください。 |
ver5.2.2.3で追加 |
E3DSetMorphKey | モーフ | モーフモーションのキーを作成します。 キーがすでにある場合は既存のキーに上書きします。 具体的な使用例は e3dhsp3_MorphInfo_Create.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 3. [IN] 変数または、数値 : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_BONENO, basecnt )を指定してください。 4. [IN] 変数または、数値 : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_DISPNO, basecnt )を指定してください。 5. [IN] 変数または、数値 : targetid モーフのターゲットを識別する番号を指定してください。 E3DGetMorphTargetInfoで取得したtargetno( targetcnt )を指定してください。 6. [IN] 変数または、数値 : frameno キーのフレーム番号を指定します。 7. [IN] 変数または、数値 : rate 実数。 キーのブレンド率を指定します。 |
ver5.2.2.3で追加 |
E3DDestroyMorphKey | モーフ | モーフモーションのキーを削除します。 モーフに含まれる全てのターゲットのキーが削除されます。 具体的な使用例は e3dhsp3_MorphInfo_Create.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 3. [IN] 変数または、数値 : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_BONENO, basecnt )を指定してください。 4. [IN] 変数または、数値 : frameno 削除したいキーが存在するフレーム番号を指定してください。 5. [IN] 変数または、数値 : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfo( MBI_DISPNO, basecnt )を指定してください。 |
ver5.2.2.3で追加 |
E3DGetToon1MaterialNum | マテリアル | トゥーンマテリアルの数を取得します。 トゥーンマテリアルとは通常のマテリアルとは異なります。 RokDeBone2の「トゥ」ボタンを押したときに出てくるダイアログに表示されているマテリアルのことです。 一回もトゥーン表示したことが無い状態でこの命令を呼ぶと、マテリアル数には0が返ってきます。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [OUT] 変数 : matnum トゥーンマテリアルの数が代入されます。 |
ver5.2.2.5で追加 |
E3DGetToon1Material | マテリアル | トゥーンマテリアルの情報をパーツごとに一括取得します。 E3DGetToon1MaterialNumで取得したマテリアルの数をmatnumとすると、 matnameは sdim matname, 32, matnum dinfo(実数データ)は ddim dinfo, TMD_MAX, matnum iinfo(整数データ)は dim iinfo, TMI_MAX,, matnum のように作成します。 TMD_、TMI_で始まる定数はe3dhsp3.asで定義されています。 TMD_DIFFUSE_R、 TMD_DIFFUSE_G、 TMD_DIFFUSE_Bはトゥーンのdiffuse色のRGB TMD_SPECULAR_R、 TMD_SPECULAR_G、 TMD_SPECULAR_Bはトゥーンのspecular色のRGB TMD_AMBIENT_R、 TMD_AMBIENT_G、 TMD_AMBIENT_Bはトゥーンのambient色のRGB TMD_DARKNL TMD_BRIGHTNLは陰やハイライトの大きさの閾値(詳しくはE3DSetToon1NLの説明をお読みください) TMD_EDGECOL0_R、 TMD_EDGECOL0_G、 TMD_EDGECOL0_Bは輪郭線の色のRGB TMD_EDGEWIDTH0は輪郭線の幅 TMD_MAXはdinfoの要素数 へのインデックスです。 TMI_VALID0は輪郭線の有効無効のフラグ TMI_INV0は輪郭線の反転フラグ TMI_MAXはiinfoの要素数 へのインデックスです。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [OUT] 文字列型配列の変数 : matname トゥーンマテリアルの名前が代入されます。 詳しくは前記をご覧ください。 4. [OUT] 配列の変数 : dinfo 実数型の配列の変数。 トゥーンマテリアルの実数情報が代入されます。 詳しくは前記をご覧ください。 5. [OUT] 配列の変数 : iinfo 整数型の配列の変数。 トゥーンマテリアルの整数情報が代入されます。 詳しくは前記をご覧ください。 6. [IN] 変数または、数値 : arrayleng toon1ptrを作成したときの要素数を指定します。 E3DGetToon1MaterialNumで取得できるmatnumと異なるとエラーになります。 |
ver5.2.2.5で追加 |
E3DSetToon1Name | マテリアル | トゥーンマテリアルの名前を変更します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] 文字列または文字列の変数 : oldname 名前を変えたいトゥーンマテリアルの元の名前 4. [IN] 文字列または文字列の変数 : newname トゥーンマテリアルの新しい名前。 名前の長さは31バイトまでです。 |
ver5.2.2.5で追加 |
E3DSetToon1Diffuse | マテリアル | トゥーンマテリアルのDiffuse色を設定します。 ライトが当たった明るい部分の色です。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] 文字列または文字列の変数 : matname トゥーンマテリアルの名前 4. [IN] 配列の変数 : col 実数型の配列変数。 diffuse色。 ddim col, 3で作成してください。 col(0)にR、col(1)にG、col(2)にB成分をセットしてから呼び出します。 。 |
ver5.2.2.5で追加 |
E3DSetToon1Specular | マテリアル | トゥーンマテリアルのSpecular色を設定します。 ハイライトの部分の色です。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] 文字列または文字列の変数 : matname トゥーンマテリアルの名前 4. [IN] 配列の変数 : col 実数型の配列変数。 specular色。 ddim col, 3で作成してください。 col(0)にR、col(1)にG、col(2)にB成分をセットしてから呼び出します。 。 |
ver5.2.2.5で追加 |
E3DSetToon1Ambient | マテリアル | トゥーンマテリアルのAmbient色を設定します。 ライトが当たらない暗い部分の色です。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] 文字列または文字列の変数 : matname トゥーンマテリアルの名前 4. [IN] 配列の変数 : col 実数型の配列変数。 ambient色。 ddim col, 3で作成してください。 col(0)にR、col(1)にG、col(2)にB成分をセットしてから呼び出します。 |
ver5.2.2.5で追加 |
E3DSetToon1NL | マテリアル | トゥーン表示のdiffuse, specular, ambientの割合を決めるための係数を設定します。 色の割合は面の法線とライトの反転ベクトルとのなす角度(deg)で決定します。 暗い色の角度の閾値をdarkdeg, ハイライトの角度の閾値をbrightdegとします。 degがdarkdegより大きい角度の部分は暗い色(ambient)で塗ります。 degがbrightdegより小さい角度の場合はハイライト(specular)で塗ります。 それ以外の部分は明るい色(diffuse)で塗ります。 darkdeg >= brightdegでないといけません。 ピンとこない方はRokDeBone2で「トゥ」ボタンを押してdarkdegとbrightdegを設定するスライダーを動かしてみて理解してください。 RokDeBone2内部ではこれらの閾値は角度ではなくてcosの値で保持しています。 そのためこの命令に渡す値もcos( darkdeg * DEG2PAI )とcos( brightdeg * DEG2PAI )を渡してください。 DEG2PAIは「度」を「ラジアン」に変換するための定数です。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] 文字列または文字列の変数 : matname トゥーンマテリアルの名前 4. [IN] 変数または、数値 : darknl 実数。 cos( darkdeg * DEG2PAI )を指定してください。 詳しくは前記をご覧ください。 5. [IN] 変数または、数値 : brightnl 実数。 cos( brightdeg * DEG2PAI )を指定してください。 詳しくは前記をご覧ください。 |
ver5.2.2.5で追加 |
E3DSetToon1Edge0 | マテリアル | トゥーンマテリアルのエッジ(輪郭線)のパラメータを設定します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] 文字列または文字列の変数 : matname トゥーンマテリアルの名前 4. [IN] 変数 : col 輪郭線の色。 実数型の配列変数。 ddim col, 3で作成してください。 col(0)にR、col(1)にG、col(2)にB成分をセットしてから呼び出します。 5. [IN] 変数または、数値 : validflag 輪郭線を表示するときは1。しないときは0。 6. [IN] 変数または、数値 : invflag 輪郭線用の面の向きを反転するときは1。しないときは0。通常は0。 両面オブジェクトの調整用。 7. [IN] 変数または、数値 : width 実数。 輪郭線の幅。 |
ver5.2.2.5で追加 |
E3DLoadCameraFile | カメラ | RokDeBone2で作成したカメラファイル(*.cam)を読み込み アニメ番号を取得します。 |
1. [IN] 文字列または、文字列の変数 : filename カメラファイルのファイル名をフルパスで指定してください。 2. [OUT] 変数 : animno 読み込んだアニメを識別するアニメ番号が代入されます。 |
ver5.2.2.7で追加 |
E3DDestroyCameraAnim | カメラ | カメラアニメを破棄します。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 |
ver5.2.2.7で追加 |
E3DSaveCameraFile | カメラ | カメラアニメをテキストファイルに保存します。 | 1. [IN] 文字列または、文字列の変数 : filename カメラファイルのファイル名をフルパスで指定してください。 2. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 |
ver5.2.2.7で追加 |
E3DSetCameraAnimNo | カメラ | カレントのカメラアニメ番号をセットします。 フレーム番号は0に戻ります。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 |
ver5.2.2.7で追加 |
E3DGetCameraAnimNo | カメラ | カレントのカメラアニメ番号を取得します。 |
1. [OUT] 変数 : animno カメラアニメを識別する番号が代入されます。 |
ver5.2.2.7で追加 |
E3DSetCameraFrameNo | カメラ | 再生するカメラアニメのアニメ番号とカメラ番号とフレーム番号を設定します。 | 1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : camerano カメラ番号を指定します(0から2)。 カメラ番号に-1を指定するとカメラのスイッチキーに基づいてカメラを切り替え再生します。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 変数または、数値 : isfirst この命令を呼んだ後にE3DSetNewCameraを呼び出す場合は1を、呼び出さない場合は0を指定します。 |
ver5.2.2.7で追加 |
E3DGetCameraFrameNo | カメラ | 現在再生中のカメラアニメのアニメ番号、カメラ番号、フレーム番号を取得します。 | 1. [OUT] 変数 : animno カメラアニメを識別する番号が代入されます。 2. [OUT] 変数 : camerano カメラ番号が代入されます。 3. [OUT] 変数 : frameno フレーム番号が代入されます。 |
ver5.2.2.7で追加 |
E3DSetNewCamera | カメラ | カメラのフレームをアニメタイプに従って進め、新しいカメラ情報をセットします。 | 1. [IN] 変数または、数値 : camerano カメラ番号を指定します(0から2)。 カメラ番号に-1を指定するとカメラのスイッチキーに基づいてカメラを切り替え再生します。 |
ver5.2.2.7で追加 |
E3DSetNextCameraAnimFrameNo | カメラ | animnoで識別されるアニメがbefframenoのフレーム番号に達したらnextanimnoで識別されるアニメのnextframenoに切り替えることを予約します。 アニメの切り替えはE3DSetNewCameraで行われます。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : nextanimno 切り替え先のカメラアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : nextframeno 切り替え先のカメラアニメのフレーム番号を指定してください。 4. [IN] 変数または、数値 : befframeno 切り替え前のカメラアニメがbefframenoフレームまで達したらアニメの切り替えが起こります。 -1を指定した場合は切り替え前のアニメが最終フレームに達したときにアニメが切り替わります。 |
ver5.2.2.7で追加 |
E3DGetNextCameraAnimFrameNo | カメラ | E3DSetNextCameraAnimFrameNoで設定した情報を取得します。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [OUT] 変数 : nextanimno 切り替え先のカメラアニメを識別する番号が代入されます。 3. [OUT] 変数 : nextframeno 切り替え先のカメラアニメのフレーム番号が代入されます。 |
ver5.2.2.7で追加 |
E3DCreateNewCameraAnim | カメラ | カメラアニメを作成しアニメを識別する番号を取得します。 | 1. [IN] 文字列または、文字列の変数 : animname アニメの名前を指定します。 255バイトまでです。 2. [IN] 変数または、数値 : animtype アニメの振る舞いを指定します。 1を指定するとフレーム番号は進みません。 2を指定すると最終フレーム番号に達したらその状態を維持します。 3を指定するとループします。 4を指定するとピンポン再生します。 5を指定すると最終フレームに達した後RokDeBone2で指定したフレームにジャンプします。 3. [IN] 変数または、数値 : framenum カメラアニメをのフレーム数を指定します。 4. [OUT] 変数 : animno 作成したアニメを識別する番号が代入されます。 |
ver5.2.2.7で追加 |
E3DSetCameraFrameNum | カメラ | カメラアニメのフレーム長を設定します。 現在のフレーム長よりも小さい値を指定した場合は 範囲からはみ出たキーは削除されます。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : framenum フレーム長を指定してください。 |
ver5.2.2.7で追加 |
E3DGetCameraFrameNum | カメラ | カメラアニメのフレーム長を取得します。 | 1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [OUT] 変数 : framenum フレーム長が代入されます。 |
ver5.2.2.7で追加 |
E3DSetCameraAnimName | カメラ | カメラアニメの名前を設定します。 | 1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 文字列または、文字列の変数 : srcname カメラアニメの名前を指定します。 255バイトまでです。 |
ver5.2.2.7で追加 |
E3DGetCameraAnimName | カメラ | カメラアニメの名前を取得します。 | 1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [OUT] 文字列の変数 : dstname 名前を格納する文字列の変数を指定します。 3. [IN] 変数または、数値 : arrayleng dstnameの配列長を指定します。 |
ver5.2.2.7で追加 |
E3DSetCameraAnimType | カメラ | カメラアニメのタイプを設定します。 タイプの詳細はE3DCreateNewCameraAnimのanimtype引数の説明をご覧ください。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : type タイプを指定します。 |
ver5.2.2.7で追加 |
E3DGetCameraAnimType | カメラ | カメラアニメのタイプを取得します。 タイプの詳細はE3DCreateNewCameraAnimのanimtype引数の説明をご覧ください。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [OUT] 変数 : type タイプが代入されます。 |
ver5.2.2.7で追加 |
E3DSetCameraKey | カメラ | カメラアニメのキーを設定します。 指定したフレーム番号にキーが存在しない場合は自動的に作成してから設定します。 camiはdim cami, CAMI_MAXで作成します。 CAMI_で始まる定数はe3dhsp3.asで定義されています。 CAMI_LOOKTYPEは注視モードへのインデックスです。 現在注視なしモードしかサポートしていませんので CAML_NORMALを指定してください。 CAMI_HSIDとCAMI_BONENOは将来の拡張用のインデックスです。 -1を指定してください。 CAMI_INTERPはキー間の補間方法へのインデックスです。 0を指定すると線形、1を指定するとスプライン補間になります。 それぞれの値には cami( CAMI_LOOKTYPE ) などのようにしてアクセスしてください。 camdはddim camd, CAMD_MAXで作成します。 dimではなくてddim(実数)です。 CAMD_POSX CAMD_POSY CAMD_POSZ はカメラ位置のXYZ座標へのインデックスです。 CAMD_TARX CAMD_TARY CAMD_TARZ はカメラの注視点のXYZ座標へのインデックスです。 CAMD_UPX CAMD_UPY CAMD_UPZ はカメラの上方向ベクトルのXYZ成分へのインデックスです。 CAMD_DIST はカメラと注視点の距離へのインデックスです。 CAMD_NEARZ CAMD_FARZ はプロジェクションの一番近い距離と一番遠い距離へのインデックスです。 CAMD_FOV はプロジェクションの視野角へのインデックスです。 は将来の拡張用のインデックスです。3000.0などの数値を入れておいてください。 それぞれの値にはcamd( CAMD_POSX )などのようにしてアクセスしてください。 具体的な使用例は e3dhsp3_CameraAnime.hspをご覧ください。 ver5.2.2.8で正射影に対応しました。 CAMI_ORTHOはパース表示のとき0、正射影表示のとき1を指定します。 CAMD_ORTHOSIZEは正射影のときのビューのサイズを指定します。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : camerano カメラ番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 配列の変数 : cami カメラキーの整数メンバをセットします。 詳しくは前記をご覧ください。 5. [IN] 配列の変数 : camd 実数型の配列の変数。 カメラキーの実数メンバをセットします。 詳しくは前記をご覧ください。 |
ver5.2.2.7で追加 |
E3DGetCameraKey | カメラ | カメラアニメのキーの情報を取得します。 指定したフレーム番号にキーが無い場合は補間計算して情報を取得します。 cami, camdについてはE3DSetCameraKeyの説明をご覧ください。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : camerano カメラ番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [OUT] 配列の変数 : cami カメラキーの整数メンバが代入されます。 5. [OUT] 配列の変数 : camd 実数型の配列の変数。 カメラキーの実数メンバが代入されます。 6. [OUT] 変数 : exsitflag 指定したフレーム番号にキーがあった場合は1が 無かった場合には0が代入されます。 |
ver5.2.2.7で追加 |
E3DDeleteCameraKey | カメラ | カメラアニメのキーを削除します。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : camerano カメラ番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 |
ver5.2.2.7で追加 |
E3DGetCameraKeyframeNoRange | カメラ | startとendで指定したフレーム範囲のキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGetCameraKeyframeNoRange animno, camno, start, end, dummy, 0, keynum dim framearray, keynum E3DGetCameraKeyframeNoRange animno, camno, start, end, framearray, keynum, chknum のようにして使ってください。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : camerano カメラ番号を指定してください。 3. [IN] 変数または、数値 : start 4. [IN] 変数または、数値 : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 5. [OUT] 配列の変数 : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 6. [IN] 変数または、数値 : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 7. [OUT] 変数 : getnum 取得したキーフレーム番号の個数が代入されます。 |
ver5.2.2.7で追加 |
E3DSetCameraSWKey | カメラ | カメラアニメのスイッチキーをセットします。 指定したフレーム番号にキーが存在しない場合は自動的に作成してからセットします。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 3. [IN] 変数または、数値 : camerano カメラ番号を指定してください。 |
ver5.2.2.7で追加 |
E3DGetCameraSWKey | カメラ | カメラアニメのスイッチキーの情報を取得します。 指定したフレーム番号にキーが存在しない場合は補間して情報を取得します。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 3. [OUT] 変数 : camerano カメラ番号が代入されます。 4. [OUT] 変数 : existflag 指定したフレーム番号にキーがあった場合は1が 無かった場合には0が代入されます。 |
ver5.2.2.7で追加 |
E3DDeleteCameraSWKey | カメラ | カメラアニメのスイッチキーを削除します。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 |
ver5.2.2.7で追加 |
E3DGetCameraSWKeyframeNoRange | カメラ | startとendで指定したフレーム範囲のスイッチキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGetCameraSWKeyframeNoRange animno, start, end, dummy, 0, keynum dim framearray, keynum E3DGetCameraSWKeyframeNoRange animno, start, end, framearray, keynum, chknum のようにして使ってください。 |
1. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 2. [IN] 変数または、数値 : start 3. [IN] 変数または、数値 : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 4. [OUT] 配列の変数 : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 5. [IN] 変数または、数値 : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 6. [OUT] 変数 : getnum 取得したキーフレーム番号の個数が代入されます。 |
ver5.2.2.7で追加 |
E3DSetOrtho | 描画パラメータ | 正射影をオンにし、正射影のパラメータを設定します。 |
1. [IN] 変数または、数値 : proj_near クリッピングの最小距離。 実数。 2. [IN] 変数または、数値 : proj_far クリッピングの最大距離。 実数。 3. [IN] 変数または、数値 : orthosize 正射影のビューの大きさ。 実数。 |
ver5.2.2.8で追加 |
E3DLoadGPFile | GPA | RokDeBone2で作成したGPAファイル(*.gpa)を読み込み アニメ番号を取得します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 文字列または、文字列の変数 : filename GPファイルのファイル名をフルパスで指定してください。 3. [OUT] 変数 : animno 読み込んだアニメを識別するアニメ番号が代入されます。 |
ver5.2.2.9で追加 |
E3DDestroyGPAnim | GPA | GPアニメを破棄します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 |
ver5.2.2.9で追加 |
E3DSaveGPFile | GPA | GPアニメをテキストファイルに保存します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 文字列または、文字列の変数 : filename GPファイルのファイル名をフルパスで指定してください。 3. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 |
ver5.2.2.9で追加 |
E3DSetGPAnimNo | GPA | カレントのGPアニメ番号をセットします。 フレーム番号は0に戻ります。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 |
ver5.2.2.9で追加 |
E3DGetGPAnimNo | GPA | カレントのGPアニメ番号を取得します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [OUT] 変数 : animno GPアニメを識別する番号が代入されます。 |
ver5.2.2.9で追加 |
E3DSetGPFrameNo | GPA | 再生するGPアニメのアニメ番号とフレーム番号を設定します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 変数または、数値 : isfirst この命令を呼んだ後にE3DSetNewGPを呼び出す場合は1を、呼び出さない場合は0を指定します。 |
ver5.2.2.9で追加 |
E3DGetGPFrameNo | GPA | 現在再生中のGPアニメのアニメ番号、フレーム番号を取得します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [OUT] 変数 : animno GPアニメを識別する番号が代入されます。 3. [OUT] 変数 : frameno フレーム番号が代入されます。 |
ver5.2.2.9で追加 |
E3DSetNewGP | GPA | アニメのフレームをアニメタイプに従って進め、新しいGP情報をセットします。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 |
ver5.2.2.9で追加 |
E3DSetNextGPAnimFrameNo | GPA | animnoで識別されるアニメがbefframenoのフレーム番号に達したらnextanimnoで識別されるアニメのnextframenoに切り替えることを予約します。 アニメの切り替えはE3DSetNewCameraで行われます。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : nextanimno 切り替え先のGPアニメを識別する番号を指定してください。 4. [IN] 変数または、数値 : nextframeno 切り替え先のGPアニメのフレーム番号を指定してください。 5. [IN] 変数または、数値 : befframeno 切り替え前のGPアニメがbefframenoフレームまで達したらアニメの切り替えが起こります。 -1を指定した場合は切り替え前のアニメが最終フレームに達したときにアニメが切り替わります。 |
ver5.2.2.9で追加 |
E3DGetNextGPAnimFrameNo | GPA | E3DSetNextGPAnimFrameNoで設定した情報を取得します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [OUT] 変数 : nextanimno 切り替え先のGPアニメを識別する番号が代入されます。 4. [OUT] 変数 : nextframeno 切り替え先のGPアニメのフレーム番号が代入されます。 |
ver5.2.2.9で追加 |
E3DCreateNewGPAnim | GPA | GPアニメを作成しアニメを識別する番号を取得します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 文字列または、文字列の変数 : animname アニメの名前を指定します。 255バイトまでです。 3. [IN] 変数または、数値 : animtype アニメの振る舞いを指定します。 1を指定するとフレーム番号は進みません。 2を指定すると最終フレーム番号に達したらその状態を維持します。 3を指定するとループします。 4を指定するとピンポン再生します。 5を指定すると最終フレームに達した後RokDeBone2で指定したフレームにジャンプします。 4. [IN] 変数または、数値 : framenum カメラアニメをのフレーム数を指定します。 5. [OUT] 変数 : animno 作成したアニメを識別する番号が代入されます。 |
ver5.2.2.9で追加 |
E3DSetGPFrameNum | GPA | GPアニメのフレーム長を設定します。 現在のフレーム長よりも小さい値を指定した場合は 範囲からはみ出たキーは削除されます。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : framenum フレーム長を指定してください。 |
ver5.2.2.9で追加 |
E3DGetGPFrameNum | GPA | GPアニメのフレーム長を取得します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [OUT] 変数 : framenum フレーム長が代入されます。 |
ver5.2.2.9で追加 |
E3DSetGPAnimName | GPA | GPアニメの名前を設定します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 文字列または、文字列の変数 : srcname GPアニメの名前を指定します。 255バイトまでです。 |
ver5.2.2.9で追加 |
E3DGetGPAnimName | GPA | GPアニメの名前を取得します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [OUT] 文字列の変数 : dstname 名前を格納する文字列の変数を指定します。 4. [IN] 変数または、数値 : arrayleng dstnameの配列長を指定します。 |
ver5.2.2.9で追加 |
E3DSetGPAnimType | GPA | GPアニメのタイプを設定します。 タイプの詳細はE3DCreateNewGPAnimのanimtype引数の説明をご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : type タイプを指定します。 |
ver5.2.2.9で追加 |
E3DGetGPAnimType | GPA | GPアニメのタイプを取得します。 タイプの詳細はE3DCreateNewGPAnimのanimtype引数の説明をご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [OUT] 変数 : type タイプが代入されます。 |
ver5.2.2.9で追加 |
E3DSetGPKey | GPA | GPアニメのキーを設定します。 指定したフレーム番号にキーが存在しない場合は自動的に作成してから設定します。 gpiはdim gpi, GPI_MAXで作成します。 GPI_で始まる定数はe3dhsp3.asで定義されています。 GPI_ONGMODEは 接地モードです。GROUND_NONEを指定したときは接地なし。GROUND_ONEを指定したときはキーの瞬間だけ接地。GROUND_ONを指定した場合は次のキーまでの間接地します。 GROUND_で始まる定数はe3dhsp3.asで定義されています。 GPI_INTERPは キー間の補間方法へのインデックスです。 0を指定すると線形、1を指定するとスプライン補間になります。 それぞれの値には gpi( GPI_ONGMODE ) などのようにしてアクセスしてください。 gpdはddim gpd, GPD_MAXで作成します。 dimではなくてddimです。 GPD_で始まる定数はe3dhsp3.asで定義されています。 GPD_POSX GPD_POSY GPD_POSZ はキャラクターの位置座標です。 GPD_ROTX GPD_ROTY GPD_ROTZ はキャラクターの回転角度です。 Z,X,Yの順番に回転します。 GPD_RAYYは 接地用のレイの始点のY座標です。 GPD_RAYLENGは 接地用のレイの長さです。 GPD_OFFSETYは 接地用の地面からの高さです。 それぞれの値にはgpd( GPD_POSX )などのようにしてアクセスしてください。 E3DSetGPKeyを呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcGPFullFrameを呼び出してください。 E3DCalcGPFullFrameは重い処理ですので全てのE3DSetGPKeyが終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 配列の変数 : gpi GPキーの整数メンバをセットします。 詳しくは前記をご覧ください。 5. [IN] 配列の変数 : gpd 実数型の配列の変数。 GPキーの実数メンバをセットします。 詳しくは前記をご覧ください。 |
ver5.2.2.9で追加 |
E3DGetGPKey | GPA | GPアニメのキーの情報を取得します。 指定したフレーム番号にキーが無い場合は補間計算して情報を取得します。 gpi, gpdについてはE3DSetGPKeyの説明をご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [OUT] 配列の変数 : gpi GPキーの整数メンバが代入されます。 5. [OUT] 配列の変数 : gpd 実数型の配列の変数。 GPキーの実数メンバが代入されます。 6. [OUT] 変数 : exsitflag 指定したフレーム番号にキーがあった場合は1が 無かった場合には0が代入されます。 |
ver5.2.2.9で追加 |
E3DDeleteGPKey | GPA | GPアニメのキーを削除します。 E3DDeleteGPKeyを呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcGPFullFrameを呼び出してください。 E3DCalcGPFullFrameは重い処理ですので全てのE3DDeleteGPKeyが終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno カメラアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 |
ver5.2.2.9で追加 |
E3DGetGPKeyframeNoRange | GPA | startとendで指定したフレーム範囲のキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGeGPKeyframeNoRange animno, start, end, dummy, 0, keynum dim framearray, keynum E3DGetGPKeyframeNoRange animno, start, end, framearray, keynum, chknum のようにして使ってください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : start 4. [IN] 変数または、数値 : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 5. [OUT] 配列の変数 : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 6. [IN] 変数または、数値 : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 7. [OUT] 変数 : getnum 取得したキーフレーム番号の個数が代入されます。 |
ver5.2.2.9で追加 |
E3DCalcGPFullFrame | GPA | GPアニメのキー情報から全てのフレームの姿勢情報を計算します。 この結果はGPアニメの再生やE3DGetGPKeyなどに使われます。 重い処理ですのでなるべく呼び出し回数は少なくしてください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 |
ver5.2.2.9で追加 |
E3DSetGPGroundHSID | GPA | GPアニメの接地用の地面のHSIDを指定します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : ghsid 接地用の地面のモデルデータを識別するID。 |
ver5.2.2.9で追加 |
E3DGetGPGroundHSID | GPA | GPアニメの接地用の地面のHSIDを取得します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [OUT] 変数 : ghsid 接地用の地面のモデルデータを識別するIDが代入されます。 |
ver5.2.2.9で追加 |
E3DLoadMOEFile | MOE | RokDeBone2で作成したMOEファイル(*.moe)を読み込み アニメ番号を取得します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 文字列または、文字列の変数 : filename MOEファイルのファイル名をフルパスで指定してください。 3. [OUT] 変数 : animno 読み込んだアニメを識別するアニメ番号が代入されます。 |
ver5.2.3.1 |
E3DDestroyMOEAnim | MOE | MOEアニメを破棄します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 |
ver5.2.3.1 |
E3DSaveMOEFile | MOE | MOEアニメをテキストファイルに保存します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 文字列または、文字列の変数 : filename MOEファイルのファイル名をフルパスで指定してください。 3. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 |
ver5.2.3.1 |
E3DSetMOEAnimNo | MOE | カレントのMOEアニメ番号をセットします。 フレーム番号は0に戻ります。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 |
ver5.2.3.1 |
E3DGetMOEAnimNo | MOE | カレントのGPアニメ番号を取得します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [OUT] 変数 : animno MOEアニメを識別する番号が代入されます。 |
ver5.2.3.1 |
E3DSetMOEFrameNo | MOE | 再生するMOEアニメのアニメ番号とフレーム番号を設定します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 変数または、数値 : isfirst この命令を呼んだ後にE3DSetNewMOEを呼び出す場合は1を、呼び出さない場合は0を指定します。 |
ver5.2.3.1 |
E3DGetMOEFrameNo | MOE | 現在再生中のMOEアニメのアニメ番号、フレーム番号を取得します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [OUT] 変数 : animno MOEアニメを識別する番号が代入されます。 3. [OUT] 変数 : frameno フレーム番号が代入されます。 |
ver5.2.3.1 |
E3DSetNewMOE | MOE | アニメのフレームをアニメタイプに従って進め、新しいMOE情報をセットします。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 |
ver5.2.3.1 |
E3DSetNextMOEAnimFrameNo | MOE | animnoで識別されるアニメがbefframenoのフレーム番号に達したらnextanimnoで識別されるアニメのnextframenoに切り替えることを予約します。 アニメの切り替えはE3DSetNewMOEで行われます。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : nextanimno 切り替え先のMOEアニメを識別する番号を指定してください。 4. [IN] 変数または、数値 : nextframeno 切り替え先のMOEアニメのフレーム番号を指定してください。 5. [IN] 変数または、数値 : befframeno 切り替え前のMOEアニメがbefframenoフレームまで達したらアニメの切り替えが起こります。 -1を指定した場合は切り替え前のアニメが最終フレームに達したときにアニメが切り替わります。 |
ver5.2.3.1 |
E3DGetNextMOEAnimFrameNo | MOE | E3DSetNextMOEAnimFrameNoで設定した情報を取得します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [OUT] 変数 : nextanimno 切り替え先のMOEアニメを識別する番号が代入されます。 4. [OUT] 変数 : nextframeno 切り替え先のMOEアニメのフレーム番号が代入されます。 |
ver5.2.3.1 |
E3DCreateNewMOEAnim | MOE | MOEアニメを作成しアニメを識別する番号を取得します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 文字列または、文字列の変数 : animname アニメの名前を指定します。 255バイトまでです。 3. [IN] 変数または、数値 : animtype アニメの振る舞いを指定します。 1を指定するとフレーム番号は進みません。 2を指定すると最終フレーム番号に達したらその状態を維持します。 3を指定するとループします。 4を指定するとピンポン再生します。 5を指定すると最終フレームに達した後RokDeBone2で指定したフレームにジャンプします。 4. [IN] 変数または、数値 : framenum MOEアニメをのフレーム数を指定します。 5. [OUT] 変数 : animno 作成したアニメを識別する番号が代入されます。 |
ver5.2.3.1 |
E3DSetMOEFrameNum | MOE | MOEアニメのフレーム長を設定します。 現在のフレーム長よりも小さい値を指定した場合は 範囲からはみ出たキーは削除されます。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno GPアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : framenum フレーム長を指定してください。 |
ver5.2.3.1 |
E3DGetMOEFrameNum | MOE | MOEアニメのフレーム長を取得します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [OUT] 変数 : framenum フレーム長が代入されます。 |
ver5.2.3.1 |
E3DSetMOEAnimName | MOE | MOEアニメの名前を設定します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 文字列または、文字列の変数 : srcname MOEアニメの名前を指定します。 255バイトまでです。 |
ver5.2.3.1 |
E3DGetMOEAnimName | MOE | MOEアニメの名前を取得します。 | 1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [OUT] 文字列の変数 : dstname 名前を格納する文字列の変数を指定します。 4. [IN] 変数または、数値 : arrayleng dstnameの配列長を指定します。 |
ver5.2.3.1 |
E3DSetMOEAnimType | MOE | MOEアニメのタイプを設定します。 タイプの詳細はE3DCreateNewMOEAnimのanimtype引数の説明をご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : type タイプを指定します。 |
ver5.2.3.1 |
E3DGetMOEAnimType | MOE | MOEアニメのタイプを取得します。 タイプの詳細はE3DCreateNewMOEAnimのanimtype引数の説明をご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [OUT] 変数 : type タイプが代入されます。 |
ver5.2.3.1 |
E3DGetMOEKeyframeNoRange | MOE | startとendで指定したフレーム範囲のキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGeMOEKeyframeNoRange animno, start, end, dummy, 0, keynum dim framearray, keynum E3DGetMOEKeyframeNoRange animno, start, end, framearray, keynum, chknum のようにして使ってください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : start 4. [IN] 変数または、数値 : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 5. [OUT] 配列の変数 : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 6. [IN] 変数または、数値 : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 7. [OUT] 変数 : getnum 取得したキーフレーム番号の個数が代入されます。 |
ver5.2.3.1 |
E3DGetMOEElemNum | MOE | MOEアニメのキーに含まれるMOEELEMの数を取得します。 MOEELEMはeventno, listnum, list, notlistnum, notlistから成ります。 詳しくはRokDeBone2のマニュアルの「moaイベントアニメとは」のページをご覧ください。 キーにはMOEELEM複数のMOEELEMとアイドリングモーションが含まれています。 MOEELEMが0個でアイドリングモーションだけのキーも存在するので注意してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [OUT] 変数 : moeenumptr キーに含まれるMOEELEMの数が代入されます。 5. [OUT] 変数 : existkeyptr 指定したフレームにキーが存在するときは1、しないときは0が代入されます。 |
ver5.2.3.1 |
E3DGetMOEElem | MOE | キーに含まれるMOEELEMの情報を取得します。 MOEELEMはmoei, list, notlistで表現します。 moeiは dim moei, MOEI_MAX で作成します。 MOEI_で始まる定数はe3dhsp3.asで定義されています。 MOEI_EVENTNOはイベント番号へのインデックス。 MOEI_LISTNUMはlistにセットされた要素の数へのインデックス。 MOEI_NOTLISTNUMはnotlistにセットされた要素の数へのインデックス。 list, notlistはそれぞれ dim list, MOELISTLENG dim notlist, MOELISTLENG で作成します。 それぞれの意味ついてはRokDeBone2のマニュアルの「moaイベントアニメとは」のページをご覧ください。 moeeindexにはE3DGetMOEElemNumで取得したMOEELEMの個数をmoeenumとすると、 0から(moeenum - 1)までの数を指定してください。 MOELEMの構成要素の説明については RokDeBone2のマニュアルの「moaイベントアニメとは」のページをご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 変数または、数値 : moeeindex MOEELEMのインデックスを指定します。 0からmoeenum - 1までの数値を指定します。 5. [OUT] 配列変数 : moei 6. [OUT] 配列変数 : list 7. [OUT] 配列変数 : notlist MOEELEMの情報が代入されます。 詳しくは前記をご覧ください。 |
ver5.2.3.1 |
E3DAddMOEElem | MOE | MOEアニメのキーにMOEELEMを追加します。 指定したフレームにキーが無い場合はキーを自動的にキーを作成した後にMOEELEMを追加します。 MOEELEMの表現の仕方については E3DGetMOEElemの説明をご覧ください。 MOEELEMのlistの最初の要素list[0]にのみ負の値-1を指定することが出来ます。 -1は「全てのボーン」を意味します。 この命令を呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcMOEFullFrameを呼び出してください。 E3DCalcMOEFullFrameは重い処理ですので全ての編集命令が終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] 配列変数 : moei 5. [IN] 配列変数 : list 6. [IN] 配列変数 : notlist MOEELEMの情報を指定します。 |
ver5.2.3.1 |
E3DDeleteMOEElem | MOE | MOEアニメのキーからMOEELEMを削除します。 moeeindexに-1を指定するとキー中の全てのMOEELEMを削除します。 MOEELEMが0個になってもキーは削除されません。 この命令を呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcMOEFullFrameを呼び出してください。 E3DCalcMOEFullFrameは重い処理ですので全ての編集命令が終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 変数または、数値 : moeeindex 通常0からmoeenum - 1までの数を指定してください。-1を指定すると全てのMOEELEMを削除します。 |
ver5.2.3.1 |
E3DSetMOEKeyIdling | MOE | MOEアニメのキーのアイドリングモーション情報を設定します。 この命令を呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcMOEFullFrameを呼び出してください。 E3DCalcMOEFullFrameは重い処理ですので全ての編集命令が終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 変数または、数値 : motid アイドリングモーションのIDを指定してください。 |
ver5.2.3.1 |
E3DGetMOEKeyIdling | MOE | MOEアニメのキーのアイドリングモーション情報を取得します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 変数 : motidptr アイドリングモーションのIDが代入されます。 |
ver5.2.3.1 |
E3DDeleteMOEKey | MOE | MOEアニメのキーを削除します。 この命令を呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcMOEFullFrameを呼び出してください。 E3DCalcMOEFullFrameは重い処理ですので全ての編集命令が終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 |
ver5.2.3.1 |
E3DCalcMOEFullFrame | MOE | MOEアニメのキー情報から全てのフレームの姿勢情報を計算します。 この結果はMOEアニメの再生に使われます。 重い処理ですのでなるべく呼び出し回数は少なくしてください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : animno MOEアニメを識別する番号を指定してください。 |
ver5.2.3.1 |
E3DUpdateSound | サウンド | 音の更新処理をします。 同じ音の多重再生のための情報更新や3Dサウンドパラメータの反映などが主な動作です。 毎フレーム呼び出してください。 |
なし | ver5.3.0.0 |
E3DGetSoundSamplesPlayed | サウンド | 音の現在の再生位置を取得します。 サンプル(周波数)単位の値です。 再生をストップすると0に戻ります。 |
1. [IN] 変数または、数値 : soundid 音データを識別するID 2. [OUT] 変数 : smpptr 実数型の変数。 再生位置が代入されます。 |
ver5.3.0.0 |
E3DSet3DSoundEmiDist | サウンド | 3Dサウンドの音の届く距離を指定します。 E3DUpdateSoundで適用されます。 |
1. [IN] 変数または、数値 : soundid 音データを識別するID 2. [IN] 変数または、数値 : dist 実数。 音の届く最大距離。 |
ver5.3.0.3 |
E3DFadeSound | サウンド | フェード処理をします。 E3DPlaySoundよりも後で呼びます。 |
1. [IN] 変数または、数値 : soundid 音データを識別するID 2. [IN] 変数または、数値 : msc 3. [IN] 変数または、数値 : startgain 4. [IN] 変数または、数値 : endgain mscミリセカンドの間に音のゲインをstartgainからendgainに変化させます。 gainは実数。1.0が等倍。 |
ver5.3.0.5 |
E3DGlobalToLocalParBone | 算術 | グローバル座標系の座標値とクォータニオンを 指定したボーンの親のボーンのローカル座標系に変換します。 つまり親の影響を除いた値を取得できます。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 変数または、数値 : boneno ボーンを識別する番号を指定してください。 5. [IN] 変数または、数値 : flag フラグに1をセットするとクォータニオンのみを変換します。2をセットすると座標値のみを変換します。3をセットするとクォータニオンと座標値の両方を変換します。 6. [IN] 変数または、数値 : srcqid 変換前の情報が入っているクォータニオンのID。 7. [IN][OUT] 変数または、数値 : dstqid 変換後のクォータニオン情報を格納するクォータニオンのID。 E3DCreateQで作成したクォータニオンのIDを指定してください。 8. [IN] 変数 : srcvecptr 実数型の変数。 ddim srcvec, 3で確保してください。 変換前の座標値を指定します。 9. [OUT] 変数 : dstvecptr 実数型の変数。 ddim dstvec, 3で確保してください。 変換後の座標値が代入されます。 |
ver5.3.0.7 |
E3DLocalToGlobalParBone | 算術 | ローカル座標系の座標値とクォータニオンを 指定したボーンの親のボーンの影響を考慮したグローバル座標系に変換します。 E3DGlobalToLocalParBoneの逆変換です。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 3. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 4. [IN] 変数または、数値 : boneno ボーンを識別する番号を指定してください。 5. [IN] 変数または、数値 : flag フラグに1をセットするとクォータニオンのみを変換します。2をセットすると座標値のみを変換します。3をセットするとクォータニオンと座標値の両方を変換します。 6. [IN] 変数または、数値 : srcqid 変換前の情報が入っているクォータニオンのID。 7. [IN][OUT] 変数または、数値 : dstqid 変換後のクォータニオン情報を格納するクォータニオンのID。 E3DCreateQで作成したクォータニオンのIDを指定してください。 8. [IN] 変数 : srcvecptr 実数型の変数。 ddim srcvec, 3で確保してください。 変換前の座標値を指定します。 9. [OUT] 変数 : dstvecptr 実数型の変数。 ddim dstvec, 3で確保してください。 変換後の座標値が代入されます。 |
ver5.3.0.7 |
E3DGetBoneTra | モーション | ボーンの移動成分を取得します。 モーションポイントが存在しない場合は補間計算して情報を取得します。 vecには ddim vec, 3 で作成した配列を指定してください。 vec(0)にX成分がvec(1)にY成分がvec(2)にZ成分が代入されます。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : boneno ボーンを識別する番号を指定してください。 3. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 4. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 5. [OUT] 配列変数 : vec 実数型の配列。 移動成分が代入されます。 6. [OUT] 変数 : existptr 指定したフレームにモーションポイントが存在する場合は1が、しない場合は0が代入されます。 |
ver5.3.1.4 |
E3DGetBoneScale | モーション | ボーンの拡大縮小成分を取得します。 モーションポイントが存在しない場合は補間計算して情報を取得します。 vecには ddim vec, 3 で作成した配列を指定してください。 vec(0)にX成分がvec(1)にY成分がvec(2)にZ成分が代入されます。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : boneno ボーンを識別する番号を指定してください。 3. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 4. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 5. [OUT] 配列変数 : vec 実数型の配列。 拡大縮小成分が代入されます。 6. [OUT] 変数 : existptr 指定したフレームにモーションポイントが存在する場合は1が、しない場合は0が代入されます。 |
ver5.3.1.4 |
E3DSetBoneTra | モーション | ボーンの移動成分を設定します。 モーションポイントが存在しない場合はエラーになります。 vecには ddim vec, 3 で作成した配列を使用してください。 vec(0)にX成分をvec(1)にY成分をvec(2)にZ成分をセットしてください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : boneno ボーンを識別する番号を指定してください。 3. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 4. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 5. [IN] 配列変数 : vec 実数型の配列。 移動成分を指定します。 |
ver5.3.1.4 |
E3DSetBoneScale | モーション | ボーンの拡大縮小成分を取得します。 モーションポイントが存在しない場合はエラーになります。 vecには ddim vec, 3 で作成した配列を使用してください。 vec(0)にX成分をvec(1)にY成分をvec(2)にZ成分をセットしてください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : boneno ボーンを識別する番号を指定してください。 3. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 4. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 5. [IN] 配列変数 : vec 実数型の配列。 拡大縮小成分を指定します。 |
ver5.3.1.4 |
E3DCreateMotionPoint | モーション | モーションポイントを作成します。 前後のモーションポイントを調べて補間計算したモーション情報をセットします。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : boneno ボーンを識別する番号を指定してください。 3. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 4. [IN] 変数または、数値 : frameno フレーム番号を指定してください。 |
ver5.3.1.4 |
E3DSet3DSoundDopplerScaler | サウンド | ドップラー効果の係数を設定します。 値が大きいほどドップラー効果が大きくなります。 ドップラー効果は音源やリスナーの速度によって生じます。 音源の速度は E3DSet3DSoundMovementで指定する速度です。 リスナーの速度は E3DSet3DSoundListenerMovementで指定したキャラクターまたはカメラの現在の位置から1回前の呼び出し時の位置を引いたものとなります。 |
1. [IN] 変数または、数値 : soundid 音を識別する番号を、指定します。 -1を指定すると読み込み済みの全ての音に対して処理をします。 2. [IN]変数または、数値 : srcdp ドップラー効果の係数を指定します。 0以上の数値を指定します。 実数。 |
ver5.3.2.2 |
E3DGet3DSoundDopplerScaler | サウンド | ドップラー効果の係数を取得します。 |
1. [IN] 変数または、数値 : soundid 音を識別する番号を、指定します。 2. [OUT] 変数 : dpptr 実数型の変数。 ドップラー効果の係数が代入されます。 |
ver5.3.2.2 |
E3DLoadMQOFileAsChara | モデルデータ | mqoファイルをキャラクターとして読み込みます。 ツール用の命令です。 ゲームなどではRokDeBone2でmqoを読み込みsigで保存して、E3DSigLoadで読み込んでください。 sigの読み込みのほうが高速です。 |
1. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0 実数。 3. [OUT] 変数 : hsid 作成したキャラクターを識別するhsidが代入されます。 4. [IN] 変数または、数値 : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 何も指定しないときは、0として扱われます。 2を指定すると0.0から1.0の間にクランプします。 5. [IN] 文字列または、文字列変数 : bonetype mqoにボーンが含まれている場合は ボーンのタイプを指定します。 BONETYPE_RDB2を指定するとRokDeBone2形式の 線分をボーンと認識するタイプになります。 BONETYPE_MIKOを指定すると mikoto形式のタイプになります。 省略するとBONETYPE_RDB2になります。 これらの定数はe3dhsp3.asで定義されています。 |
ver5.3.2.2 |
E3DLoadSSF | 音セット | 音セットファイル*.ssfを読み込みます。 |
1. [IN] 文字列または文字列の変数 : filename ssfファイルのパスを指定します。 |
ver5.3.2.5 |
E3DDestroyAllSoundSet | 音セット | 読み込み済みの全ての音セットを破棄します。 |
なし | ver5.3.2.5 |
E3DGetSoundSetNum | 音セット | 読み込み済みの音セットの数を取得します。 |
1. [OUT] 変数 : numptr 音セットの数が代入されます。 |
ver5.3.2.5 |
E3DGetSoundSetInfo | 音セット | 音セットの情報を取得します。 音セットごとに呼び出します。 ssindexには0からE3DGetSoundSetNumで取得したnum - 1までの数値を指定します。 |
1. [IN] 変数または、数値 : ssindex 音セットのインデックス。 音セットのIDではありません。 2. [OUT] 文字列の変数 : name 音セットの名前が代入されます。 sdim name, 32で作成した文字列変数を渡してください。 3. [OUT] 変数 : setid 音セットのIDが代入されます。 |
ver5.3.2.5 |
E3DGetSoundSetBGM | 音セット | 音セットに関連付けられているBGMのサウンドIDを取得します。 |
1. [IN] 変数または、数値 : setid 音セットのIDを指定します。 音セットのインデックスではありません。 2. [OUT] 変数 : bgmidptr BGMのサウンドIDが代入されます。 |
ver5.3.2.5 |
E3DLoadSAF | 音アニメ | 音アニメファイル*.safを読み込みアニメを識別するIDを取得します。 |
1. [IN] 文字列または文字列変数 : filename safファイルのパスを指定します。 2. [OUT] 変数 : animnoptr 読み込んだアニメを識別するIDが代入されます。 |
ver5.3.2.5 |
E3DDestroyAllSndAnim | 音アニメ | 読み込み済みの全ての音アニメを破棄します。 |
なし |
ver5.3.2.5 |
E3DGetSndAnimFrameNum | 音アニメ | 音アニメのフレーム長を取得します。 | 1. [IN] 変数または、数値 : animno アニメを識別する番号を指定します。 2. [OUT] 変数 : numptr アニメのフレーム長が代入されます。 |
ver5.3.2.5 |
E3DGetSndAnimBGM | 音アニメ | 音アニメに関連付けられているBGMのサウンドIDを取得します。 |
1. [IN] 変数または、数値 : animno アニメを識別する番号を指定します。 2. [OUT] 変数 : bgmidptr BGMのサウンドIDが代入されます。 |
ver5.3.2.5 |
E3DGetSndAnimFPS | 音アニメ | 音アニメのFPSを取得します。 |
1. [IN] 変数または、数値 : animno アニメを識別する番号を指定します。 2. [OUT] 変数 : fpsptr FPSが代入されます。 |
ver5.3.2.5 |
E3DGetSndAnimMode | 音アニメ | 音アニメの繰り返しモードを取得します。 |
1. [IN] 変数または、数値 : animno アニメを識別する番号を指定します。 2. [OUT] 変数 : modeptr 繰り返しなしの場合は1が繰り返し再生の場合は255が代入されます。 |
ver5.3.2.5 |
E3DStartSndAnim | 音アニメ | 音アニメの再生を開始します。 |
1. [IN] 変数または、数値 : animno アニメを識別する番号を指定します。 2. [IN] 変数または、数値 : startframe 再生を開始する際のスタートフレーム番号を指定します。 |
ver5.3.2.5 |
E3DSetSndAnimFrameNo | 音アニメ | 再生する音アニメのフレーム番号を指定します。 この命令は音アニメで設定されている効果音用のものです。 BGMには影響を与えません。 |
1. [IN] 変数または、数値 : animno アニメを識別する番号を指定します。 2. [IN] 変数または、数値 : frameno 再生するフレーム番号を指定します。 |
ver5.3.2.5 |
E3DStopSndAnim | 音アニメ | 音アニメの再生を停止します。 |
1. [IN] 変数または、数値 : animno アニメを識別する番号を指定します。 |
ver5.3.2.5 |
E3DGetSoundTotalTime | サウンド | 音のトータルタイムを取得します。 |
1. [IN] 変数または、数値 : soundid 音を識別するIDを指定します。 2. [OUT] 変数 : timeptr 実数型の変数。 トータルタイムが代入されます。 |
ver5.3.2.5 |
E3DConvSoundSampleToFrame | サウンド | 音のサンプル数をフレーム番号に変換します。 現在再生中の位置(サンプル数)は E3DGetSoundSamplesPlayedで取得できます。 |
1. [IN] 変数または、数値 : soundid 音を識別するIDを指定します。 2. [IN] 変数または、数値 : srcfps 音アニメのFPSを指定します。 3. [IN] 変数または、数値 : srcsample 実数。 サンプル数を指定します。 4. [OUT] 変数 : frameptr フレーム番号が代入されます。 |
ver5.3.2.5 |
E3DGetSoundStartCnt | サウンド | 音のstartcntを取得します。 startcntは0から始まり、音の再生が実際に開始されたときに1ずつ増えます。 音の再生命令を呼び出しても実際に再生されるまでには少し時間がかかります。 このstartcntの値を監視することで 実際に再生が開始された時を把握できます。 |
1. [IN] 変数または、数値 : soundid 音を識別するIDを指定します。 2. [OUT] 変数 : cntptr startcntが代入されます。 |
ver5.3.2.5 |
E3DGetSoundEndCnt | サウンド | 音のendcntを取得します。 endcntは0から始まり、音の再生が実際に終了したときに1ずつ増えます。 音の停止命令を呼ばない場合でも再生が最後まで達し終了すればカウントが増えるので 実際に再生が終了したときを把握できます。 |
1. [IN] 変数または、数値 : soundid 音を識別するIDを指定します。 2. [OUT] 変数 : cntptr endcntが代入されます。 |
ver5.3.2.5 |
E3DPCWait | 同期 | 指定したFPSに近くなるように待機します。 E3DWaitByFPSよりも高精度ですがCPUを消費します。 音の同期の際には正確なタイミングが必要になるのでこの命令を使ってください。 必ずawait 0の後で呼んで下さい。 |
1. [IN] 変数または、数値 : srcfps 目標のFPSを指定します。 2. [OUT] 変数 : dstfps 実数型の変数。 実際のFPSが代入されます。 |
ver5.3.2.5 |
E3DSetCameraOffset | カメラ | カメラのオフセットを設定します。 詳しくはマニュアルのe3d_CameraOffset.htmをご覧ください。 具体的な使用例は e3dhsp3_CameraOffset.hspをご覧ください。 |
1. [IN] 変数 : camoffbef 回転前の平行移動成分を指定します。 実数配列の変数名を指定してください。 camoffbef(0)にX座標 camoffbef(1)にY座標 camoffbef(2)にZ座標を指定してください。 2. [IN] 変数または、数値 : camqid 回転を表すクォータニオンのIDを指定してください。 3. [IN] 変数 : camoffaft 回転後の平行移動成分を指定します。 実数配列の変数名を指定してください。 camoffaft(0)にX座標 camoffaft(1)にY座標 camoffaft(2)にZ座標を指定してください。 |
ver5.3.3.3 |
E3DAllClearInfElem | ボーン影響 | ボーンの影響度を全て削除しまっさらな状態にします。 ボーンの影響度が1つも定義されていない状態で E3DCreateSkinMatや描画命令を呼び出すとエラーになります。 この命令を呼び出した場合は 必ず少なくとも1つはボーンの影響度を設定し 影響度の設定が全部終わったら E3DCreateSkinMatを呼び出さなければなりません。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID。 2. [IN] 変数または、数値 : partno 表示オブジェクトを識別する番号。 -1を指定すると全てのパーツに対して処理します。 3. [IN] 変数または、数値 : vertno 頂点の番号。 -1を指定すると全ての頂点に処理します。 partnoに-1を指定した場合は 自動的に内部でvertnoに-1がセットされます。 |
ver5.3.3.7 |
E3DSetGPOffset | GPA | GPAの再生開始位置と向きを指定します。 この命令を呼ぶ前に E3DSetGPGroundHSIDを呼び、 この命令を呼んだ後に E3DCalcGPFullFrameを呼ばないとオフセットはアニメに反映されません。 具体的な使用例は e3dhsp3_GPOffset.hspをご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID。 2. [IN] 変数 : tra 実数型の配列の変数。 GPAを開始する位置。 ddim tra, 3でメモリを作成してください。 tra(0)にX座標、tra(1)にY座標、tra(2)にZ座標を代入してからこの命令に渡してください。 3. [IN] 変数または、数値 : qid GPAを開始する向きを表すクォータニオンのID。 |
ver5.3.4.5 |
E3DSelectLightType | ライト | この命令をltype引数に1を入れて E3DInitより前に呼び出すと 平行光源とスポットライトを合計3個まで使うことが出来るようになります。 この命令を呼び出さなかったりltypeに0を入れて呼び出すと平行光源とポイントライトを合計3個まで使うことが出来ます。 呼び出す場合は必ずE3DInitより前で呼び出します。 一度E3DInitを呼び出したら途中で変更することは出来ません。 ポイントライトやスポットライトは シェーダータイプによってかなり見栄えが変わります。 デフォルトのCOL_PHONGだと頂点単位で計算されるのでかなりポリゴンが細かくないときれいに効果が出ません。 COL_PPHONGだとピクセル単位で計算されるため 粗いポリゴンでもきれいに効果が出ます。 一般にポリゴンを細かくするよりもCOL_PPHONGを使ったほうが実行速度が速いです。 シェーダータイプはE3DSetShaderTypeで設定します。 |
1. [IN] 変数または、数値 : ltype 1を指定すると平行光源とスポットライトを使用できます。 0を指定すると平行光源とポイントライトを使用できます。 |
ver5.3.4.6 |
E3DRenderZandN | 描画 | モデルのZ情報と法線情報を書き出します。 通常のスワップチェインやレンダーターゲットテクスチャに対して処理を行えます。 Z出力,法線出力、Z入力のサーフェスの大きさは同じでなければならない。 オブジェクトがない部分はアルファが0。 Z出力はr, g, b3成分に*1、*256、256*256スケール(小数部)で 分割出力しています。 使用するときは depth = r + g / 256.0f + b / (256.0f * 256.0f) のようにして使います。 |
1. [IN][OUT] 変数または、数値 : outzscid Z情報を出力するscid 2. [IN][OUT] 変数または、数値 : outnscid 法線情報を出力するscid 3. [IN] 変数または、数値 : inzscid 出力の際に使用するZバッファのscid 4. [IN] 変数または、数値 : hsid 形状データを識別するID 5. [IN] 変数または、数値 : skipflag 処理のスキップフラグ。 1を足すとZ出力スキップ。 2を足すと法線出力スキップ。 4を足すとZバッファー初期化スキップ。 8を足すとモーションの姿勢計算スキップ。 16を足すとBeginScene, EndSceneをスキップ。 6. [IN] 変数または、数値 : renderflag レンダーフラグ。 1を足すとZ情報を出力。 2を足すと法線情報を出力。 4を足すとカメラ座標系の法線を出力。ただし2と組み合わせないと無効。 |
ver5.3.4.7 |
E3DGetMaterialNum | マテリアル | 面マテリアルの総数を取得します。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID。 2. [OUT] 変数 : getnum 面マテリアルの総数が代入されます。 |
ver5.3.4.7 |
E3DGetMaterialInfo | マテリアル | 全ての面マテリアルの情報を取得します。 マテリアル情報はname[文字列]、mii[整数情報]、mid[実数情報]に分けて取得します。 E3DGetMaterialNumで取得したマテリアル数をmatnumとすると nameは sdim name, 256, matnum で作成します。 miiは dim mii, MII_MAX, matnum midは ddim mid, MID_MAX, matnum で作成します。 MII_、MID_で始まる定数はe3dhsp3.asで定義されています。 MII_*はmiiの各メンバーにアクセスするのに使います。 MII_MATNO はマテリアル番号へのインデックスです。 MII_DIFFR はDiffuseのR成分へのインデックスです。 MII_DIFFG はDiffuseのG成分へのインデックスです。 MII_DIFFB はDiffuseのB成分へのインデックスです。 MII_SPCR はSpecularのR成分へのインデックスです。 MII_SPCG はSpecularのG成分へのインデックスです。 MII_SPCB はSpecularのB成分へのインデックスです。 MII_AMBR はAmbientのR成分へのインデックスです。 MII_AMBG はAmbientのG成分へのインデックスです。 MII_AMBB はAmbientのB成分へのインデックスです。 MII_EMIR はEmissiveのR成分へのインデックスです。 MII_EMIG はEmissiveのG成分へのインデックスです。 MII_EMIB はEmissiveのB成分へのインデックスです。 MII_MAX はmiiの配列長に使います。 例えば1個目のマテリアルのマテリアル番号には mii( 1MII_MATNO, 0 )でアクセスします。 MID_*はmidの各メンバーにアクセスするのに使います。 MID_ALPHA はalphaへのインデックスです。 MID_POWER Specular Powerへのインデックスです。 MID_MAX はmidの配列長に使います。 例えば2個目のマテリアルのアルファには mid( MID_ALPHA, 1 )でアクセスします。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID。 2. [IN] 変数 : name 面マテリアルの名前が代入されます。 3. [IN] 変数 : mii 面マテリアルインフォの整数成分が代入されます。 4. [IN] 変数 : mid 面マテリアルインフォの実数成分が代入されます。 5. [IN] 変数または、数値 : arrayleng 面マテリアル情報取得用の配列の長さを指定します。 6. [OUT] 変数 : getnum 取得した面マテリアル情報の数が代入されます。 |
ver5.3.4.7 |
E3DGetMOELocalMotionFrameNo | MOE | モーション(qua)のモーション番号とフレーム番号を取得します。 moeanimno, moeframenoは E3DGetMOEFrameNo hsid, moeanimno, moeframeno で取得した値を指定します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : moeanimno MOEのアニメの番号を指定します。 quaのアニメ番号ではありません。 3. [IN] 変数または、数値 : moeframeno MOEのフレーム番号を指定します。 quaのフレーム番号ではありません。 4. [OUT] 変数 : localanimno MOEの指定フレームに対応するquaのアニメ番号が代入されます。 5. [OUT] 変数 : localframeno MOEの指定フレームに対応するquaのフレーム番号が代入されます。 |
ver5.3.4.8 |
E3DGetMOELocalNextMotionFrameNo | MOE | 次に再生が予約されているモーションの番号とフレーム番号を取得します。 moeanimno, moeframenoは E3DGetMOEFrameNo hsid, moeanimno, moeframeno で取得した値を指定します。 E3DGetMOELocalMotionFrameNo hsid, moeanimno, moeframeno, localanimno, localframeno で取得したlocalanimnoが0のときにこの命令は意味を持ちます (localnextanimnoに0以上の値が代入されます。) localnextframenoには補間が終わったときのジャンプ先のフレーム番号が入ります。 つまり補間フレーム長が5のときは、いつも(localnextanimnoが0以上のときはいつも) 5が入ります。 ですのでlocalanimnoが0だったときは 現在再生中のモーションは モーションID=localnextanimno フレーム番号=localframeno となります。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : moeanimno MOEのアニメの番号を指定します。 quaのアニメ番号ではありません。 3. [IN] 変数または、数値 : moeframeno MOEのフレーム番号を指定します。 quaのフレーム番号ではありません。 4. [OUT] 変数 : localnextanimno MOEの指定フレームに再生中のquaの次に再生が予約されているアニメの番号が代入されます。 5. [OUT] 変数 : localnextframeno MOEの指定フレームに再生中のquaの次に再生が予約されているアニメの開始フレーム番号が代入されます。 |
ver5.3.4.8 |
E3DSetMotionBlurMaxAlpha | エフェクト | モーションブラーの一番濃い部分の透明度の係数を指定します。 マテリアルのアルファにこの命令で指定した係数を掛け算したものを、透明度として設定します。 E3DSetMotionBlurMinAlphaは透明度の値を指定するのに対し、この命令は係数を指定する点に注意してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID。 2. [IN] 変数または、数値 : partno 設定したいパーツの番号。 -1を指定すると全てのパーツに設定します。 3. [IN] 変数または、数値 : maxAlpha 0.0から1.0までの実数。 ブラーの最大透明度の係数を指定します。 |
ver5.4.0.5 |
E3DGetMaterial1stTex | マテリアル | マテリアルのテクスチャ(1枚目)の名前を取得します。 texname引数は sdim texname, 256で作成してから渡してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 文字列の変数 : texname テクスチャの名前が代入されます。 前記もごらんください。 |
ver5.4.0.6 |
E3DSetMaterial1stTex | マテリアル | マテリアルのテクスチャ(1枚目)の名前を設定します。 名前は256文字までです。 モデルデータと同じ場所からファイルを探し テクスチャをセットしなおします。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 文字列または文字列の変数 : texname テクスチャの名前を指定します。。 前記もごらんください。 |
ver5.4.0.6 |
E3DGetMOEKeyGoOnFlag | MOE | MOEのイベント継続フラグを取得します。 指定したフレームにキーが無い場合はエラーになります。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : animno MOEのアニメ番号を指定します。 3. [IN] 変数または、数値 : frameno MOEアニメのフレーム番号。 4. [OUT] 変数 : flagptr フラグが代入されます。 継続のときは1。単発のときは0。 |
ver5.4.0.6 |
E3DSetMOEKeyGoOnFlag | MOE | MOEのイベント継続フラグを設定します。 指定したフレームにキーが無い場合はエラーになります。 E3DCalcMOEFullFrame命令を呼び出すとこの設定が反映されます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : animno MOEのアニメ番号を指定します。 3. [IN] 変数または、数値 : frameno MOEアニメのフレーム番号。 4. [IN] 変数または、数値 : flag フラグを指定します。 継続のときは1。単発のときは0。 |
ver5.4.0.6 |
E3DGetMOATrunkNotComID | モーション | moaの共通分岐禁止IDの個数とIDを取得します。 arraylengに0を指定するとIDの数だけを取得します。 使い方は E3DGetMOATrunkNotComID hsid, motid, 0, notcomid, idnum dim notcomid, idnum E3DGetMOATrunkNotComID hsid, motid, idnum, notcomid, chknum のようにarraylengを変えて2回呼び出して使います。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid Trunkのモーションを識別するid 3. [IN] 変数または、数値 : arrayelng notcomid引数に指定する配列の要素数。 4. [OUT] 変数 : notcomid IDを格納する配列。 5. [OUT] 変数 : getnum IDの数が代入されます。 |
ver5.4.0.7 |
E3DSetMOATrunkNotComID | モーション | moaの共通分岐禁止IDの個数とIDを設定します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid Trunkのモーションを識別するid 3. [IN] 変数または、数値 : arrayelng notcomid引数に指定する配列の要素数。 4. [IN] 変数または、数値 : notcomid IDを格納した配列。 |
ver5.4.0.7 |
E3DGetZa3Euler | モーション | 座3でのオイラー角度を取得します。 befeul, geteulは ddim befeil, 3 ddim geteul, 3 で実数型の配列を作成してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid モーションを識別するid 3. [IN] 変数または、数値 : frameno モーションのフレーム番号 4. [IN] 変数または、数値 : boneno ボーンを識別するパーツの番号 5. [IN] 変数 : befeul 実数型の配列。 befeul(0), befeul(1), befeul(2)にそれぞれX,Y,Zのオイラー角度を指定してください。 計算時にbefeulに近い値をgeteulに格納します。 6. [OUT] 変数 : geteul 実数型の配列。 ボーンの姿勢のオイラー角度が代入されます。 geteul(0), geteul(1), geteul(2)にそれぞれX,YZ成分が代入されます。 |
ver5.4.0.9 |
E3DSetZa3Euler | モーション | 座3でのオイラー角の姿勢をボーンに設定します。 seteulは ddim seteul, 3 で実数型の配列を作成してください。 モーションに反映させるには E3DFillUpMotionを呼び出す必要があります。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid モーションを識別するid 3. [IN] 変数または、数値 : frameno モーションのフレーム番号 4. [IN] 変数または、数値 : boneno ボーンを識別するパーツの番号 5. [IN] 変数 : seteul 実数型の配列。 ボーンの姿勢のオイラー角度を指定します。 seteul(0), seteul(1), seteul(2)にそれぞれX,YZ成分を指定します。。 |
ver5.4.0.9 |
E3DGetMOELocalMotionFrameNoML | MOE | MOEのアニメ番号とフレーム番号に対応するquaのモーションの情報をボーンごとに取得します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : moeanimno MOEのアニメの番号を指定します。 quaのアニメ番号ではありません。 3. [IN] 変数または、数値 : moeframeno MOEのフレーム番号を指定します。 quaのフレーム番号ではありません。 4. [IN] 変数または、数値 : boneno ボーンを識別する番号を指定してください。 5. [OUT] 変数 : localanimno MOEの指定フレームに対応するquaのアニメ番号が代入されます。 6. [OUT] 変数 : localframeno MOEの指定フレームに対応するquaのフレーム番号が代入されます。 |
ver5.4.1.0 |
E3DGetMOELocalNextMotionFrameNoML | MOE | MOEのアニメ番号とフレーム番号に対応するquaの次のモーションの情報をボーンごとに取得します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数または、数値 : moeanimno MOEのアニメの番号を指定します。 quaのアニメ番号ではありません。 3. [IN] 変数または、数値 : moeframeno MOEのフレーム番号を指定します。 quaのフレーム番号ではありません。 4. [IN] 変数または、数値 : boneno ボーンを識別する番号を指定してください。 5. [OUT] 変数 : localnextanimno MOEの指定フレームに再生中のquaの次に再生が予約されているアニメの番号が代入されます。 6. [OUT] 変数 : localnextframeno MOEの指定フレームに再生中のquaの次に再生が予約されているアニメの開始フレーム番号が代入されます。 |
ver5.4.1.0 |
E3DSetDefaultGP | GPA | GPアニメのデフォルトのパラメータを設定します。 gpi, gpdの詳細はE3DSetGPKeyの説明をご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 配列の変数 : gpi GPキーの整数メンバをセットします。 3. [IN] 配列の変数 : gpd 実数型の配列の変数。 GPキーの実数メンバをセットします。 |
ver5.4.1.1 |
E3DSetDefaultCamera | カメラ | カメラアニメのデフォルトのパラメータを カメラ番号ごとに設定します。 cami, camdの詳細はE3DSetCameraKeyの説明をご覧ください。 |
1. [IN] 変数または、数値 : camerano カメラ番号を指定してください。 2. [IN] 配列の変数 : cami カメラキーの整数メンバをセットします。 3. [IN] 配列の変数 : camd 実数型の配列の変数。 カメラキーの実数メンバをセットします。 |
ver5.4.1.1 |
E3DValidHsid | 描画パラメータ | hsidが使用可能かどうかをチェックします。 例えばE3DDestroyHandlerSetを呼び出した後のhsidに対して呼び出すと無効のフラグが返されます。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [OUT] 変数 : flagptr hsidが有効のときは1、無効のときは0が代入されます。 |
ver5.4.1.4 |
E3DKinectLoadLib | Kinect | Kinect操作用のライブラリをロードします。 OpenNIがインストールされていてOpenNIのサンプルが動く状態にマシンがないといけません。 |
1. [OUT] 変数 : validflagptr 正常にライブラリがロードできたら1が代入されます。失敗すると0が代入されます。 |
ver5.5.0.0 |
E3DKinectSetChara | Kinect | KinectのキャプチャとEasy3Dのキャラクターの関連付けをします。 kstファイルはRokDeBone2で作成します。 |
1. [IN] 変数または、数値 : hsid モデルを識別する番号を指定してください。 2. [IN] 文字列または、文字列変数 : kstname kstファイルのファイル名を指定します。 3. [IN] 変数または、数値 : motid モーションを識別する番号を指定してください。 4. [IN] 変数または、数値 : capmode CAPMODE_ALLを指定するとmotidで指定したモーションの最初のフレームから最後のフレームまでキャプチャをします。最後のフレームに達したら自動的にキャプチャは終了します。 CAPMODE_ONEを指定するとmotidで指定したモーションの最初の1フレーム(フレーム番号0)にキャプチャします。このモードではE3DKinectEndCaptureを呼ぶまでキャプチャーが続きます。 |
ver5.5.0.0 |
E3DKinectStartCapture | Kinect | Kinectのモーションキャプチャを開始します。 10秒ほど時間が掛かります。 |
ver5.5.0.0 | |
3DKinectEndCapture | Kinect | Kinectのモーションキャプチャを終了します。 |
ver5.5.0.0 | |
E3DKinectIsTracking | Kinect | Kinectのモーションキャプチャがトラッキング状態にあるかどうかを調べます。 トラッキング状態とはKinectが動作し、初期姿勢を認識して位置情報を送信し始めた状態です。 初期姿勢はMedia/KinectSampleフォルダの中のsigファイルの姿勢と同じです。 Kinectが動作し始めてからカメラに全身が入るように2,3m離れ、正面を向いて初期姿勢を取ることでトラッキングが開始されます。 この初期姿勢がいい加減だとモーションが乱れます。真面目にしっかり初期姿勢を取りましょう。 |
1. [OUT] 変数 : flagptr トラッキング状態のときに1、そうでないときに0が代入されます。 2. [OUT] 変数 : capcntptr トラッキングが開始されてから何回E3DKinectSetSkelPosを呼び出したかを代入します。 |
ver5.5.0.0 |
E3DKinectGetSkelPos | Kinect | Kinectでキャプチャしたボーンの位置を取得します。 ボーンの名前はusercoef.hにSKEL_*で定義されています。 posptrには ddim pos, 3, SKEL_MAX で定義したposを指定してください。 位置はトラッキングが開始されていないと取得できません。 |
1. [OUT] 変数 : posptrd 実数型の配列の変数。 位置を格納する配列を指定してください。詳しくは前記をご覧ください。 2. [OUT] 変数 : getflagptr 位置が取得できたら1が出来なかったら0が代入されます。 トラッキング状態でないと位置は取得できません。 |
ver5.5.0.0 |
E3DKinectSetSkelPos | Kinect | E3DKinectGetSkelPosで取得したボーンの位置を ボーンの姿勢情報に変換してからキャラクターに適応します。 Kinectといっしょに使わない方法もあります。 bulletなどで計算したボーンの位置をキャラクターに適用する場合はkinectflagに0を指定してください。その場合はこの命令を呼ぶ前に1回E3DKinectSetCharaを呼ぶ必要があります。 |
1. [IN] 変数または、数値 : kinectflag Kinectといっしょに使う場合は1を、Kinect以外で使う場合は0を指定してください。 2. [IN] 変数または、数値 : posmode 全体移動の姿勢をどう処理するかを指定します。 POSMODE_TOPOFJOINTを指定すると全体移動を一番親のボーンの姿勢に格納します。 POSMODE_GLOBALを指定すると全体移動をキャラクターのグローバルの位置情報に格納します。つまりE3DGetPosでこの情報を取得できます。 POSMODE_ZEROを指定すると全体移動をキャンセルします。 3. [IN] 変数 : posptr 実数型の配列の変数。 ボーンの位置情報を指定します。 ddim pos, 3, SKEL_MAX;のposを指定します。 4. [OUT] 変数 : framenoptr 再生されるフレーム番号が代入されます。 |
ver5.5.0.0 |
E3DKinectRenderSilhouette | Kinect | Kinectでキャプチャしているプレイヤーのシルエットを2D描画する命令です。 E3DBeginSceneとE3DEndSceneの間に記述します。 |
1. [IN] 変数または、数値 : withalpha 半透明で描画するときは1、不透明で描画するときは0を指定します。 2. [IN] 変数 : tposptr 実数型の配列の変数。 描画するエリア(四角)の四隅の値を指定します。 tpos(0)にtopを tpos(1)にleftを tpos(2)にbottomを tpos(3)にrightを指定します。 画面の中心が0です。 横は左が-1.0f右が+1.0f 上下は上が1.0f下が-1.0fです。 |
ver5.5.0.0 |