Easy3D For Win32 関数の説明
おおざっぱに説明しますと、
形状データに *.sig ファイルを、モーションデータに *.qua ファイルを使用します。
それぞれのデータは、RokDeBone2で作成可能です。
(詳しくは、RokDeBone2のページをご覧ください。)
さて、easy3d.dllの関数の説明ですが、
まず、E3DSigLoadで、モデルデータ(sig file)を読み込むごとにhsid というものが得られます。
(hsid とは、Handler Set ID の略です。)
各モデルデータを識別したり、モデルデータに対して処理を行う際は、
いつもこのhsid を使用します。
また、E3DAddMotionでモーションデータを読み込むごとにモーションの番号が得られます。
モーションのセットや変更には、いつもこのモーション番号を使います。
カメラの操作方法は、3種類用意しました。
E3DSetCameraPos と、E3DSetCameraDeg、E3DSetCameraTwist を組で使用する方法と、
E3DSetCameraPos と、E3DSetCameraTarget、E3DSetCameraTwistを組で使用する方法と
E3DSetCameraPos
E3DCameraLookAt
E3DCameraOnNaviLine
E3DCameraDirUp
E3DCameraDirDown
E3DCameraDirRight
E3DCameraDirLeft
E3DSetCameraTwist
を組で、使用する方法です。
他の方法と混ぜて使用することは、想定していません。
それぞれの、関数の役割と、引数の説明を表にしました。
この表は実装順に記述してあるので非常にみにくいです。
マニュアルフォルダの中のEasy3DFunctions.exeを使ってこの表を見てください。
関数名 | 種類 | 説明 | 引数 | 備考 |
---|---|---|---|---|
E3DInit | 初期化 | Direct3Dの初期化をする。 フルスクリーンにも対応しています。 フルスクリーンの解像度は、 指定したウインドウの幅に 一番近いものを自動で選びます。 640×480、 800×600、 1024×768、 1280×1024、 1400×1050、 1600×1200 の中から選びます。 HAL(ハードウェアの機能)が使えない場合は、エラーになります。 指定したビット数が使えない場合にも、 エラーになります。 エラーでアプリケーションが終了するのが 嫌な場合は、 この命令を呼ぶ前に、E3DCheckFullScreenParamsを呼んで チェックすることをおすすめします。 アンチエイリアスについて。 multisamplenumは0または2から16の値を指定してください。 multisamplenumの値が大きいほど、 画像のエッジがなめらかになります。 0を指定するとアンチエイリアスは使えません。 multisamplenumに0以外を指定する場合は、 その前に、 E3DGetMaxMultiSampleNumで 指定できる最大値を取得してください。 アンチエイリアスをオンにすると(0以外を指定すると)、 BMP保存や、AVI保存の命令が使えなくなります。 (E3DWriteDisplay2BMP、E3DCreateAVIFileと他のAVI関連関数が使用できなくなります。) アンチエイリアスを有効にするには、 作成した全てのhsidに対して、 E3DSetRenderState hsid, -1, D3DRS_MULTISAMPLEANTIALIAS, 1 を呼んでください。 ver5003でinitcomflagを追加しました。 通常はDirectMusicを使うためにCOMの初期化が必要なので1を指定してください。 .NetFrameworkなどと共用する場合、Easy3Dより先にCOMの初期化をする場合などに0を指定してください。 0を指定するとE3DInit内でのCoInitialize呼び出しとE3DByeでのCoUninitialize呼び出しを省略します。 ver5.1.0.2でindex32bit引数を追加しました。 index32bit引数に1を指定すると32ビットインデックスモードで起動し、0を指定すると16ビットインデックスモードで起動します。 32ビットインデックスモードでは65535/3ポリゴンまでの制限がなくなります。 32ビットインデックスモードではビデオカードに能力が無い場合は起動できなくなります。 多くのネットブックなどでは32ビットインデックスモードは動かないようなので注意してください。 ver5.3.1.3でfullscreenflagの値指定を拡張。 |
1. [IN] HINSTANCE : hinst アプリケーションのhinstanceを 渡します。 2. [IN] HWND : hwnd メインウインドウのハンドルを 渡してください。 3. [IN] int : fullscreenflag フルスクリーンにするときは1を、 しないとき(ウインドウモード)は0を指定してください。 E3DCheckFullScreenParamsでflagに2を指定した場合は、fullscreenflagにも2を指定してください。 4. [IN] int : bits 色数を決めるビット数を指定してください。 16あるいは、32のみ有効です。 fullscreenflagに1または2を指定したときのみ、結果に反映されます。 5. [IN] int : multisamplenum マルチサンプルの数。 詳しくは前記をご覧ください。 6. [IN] int : gpuflag 1を指定するとビデオカードに頂点シェーダー、 ピクセルシェーダーがある場合には、 それを使って頂点処理します。 0を指定すると、ソフトウェアで頂点処理します。 7. [IN] int : enablereverb 1を指定するとステレオサウンドのリバーブが オンになります。 0を指定するとリバーブがオフになります。 8. [IN] int : initcomflag COMを初期化するかどうかのフラグ。 通常は1。 詳しくは前記をご覧ください。 9. [IN] int : index32bit 1を指定すると32ビットインデックスモードになります。0を指定すると16ビットインデックスモードになります。 詳しくは前記をご覧ください。 10. [OUT] int* : scidptr スワップチェインIDが代入されます。 このIDはどの部分に描画を行うかを指定するのに使います。 E3DChkInView, E3DRender, E3DBeginScene, E3DPresent などで 必要になります。 |
ver5.0.0.1 ver5.0.0.3で引数追加 ver5.1.0.2で拡張 ver5.3.1.3で拡張 |
E3DBye | 後処理 | Direct3Dの後処理をする。 作成したメモリなどの解放を行います。 アプリケーションの終了時に呼んでください。 |
なし | ver5.0.0.1 |
E3DSigLoad | モデルデータ | 形状データ(*.sig)を読み込んで、hsidを得る。 | 1. [IN] char* : fname *.sig のパス文字列。 2. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 3. [IN] float : mult 読み込み倍率を指定してください。 等倍は1.0f 4. [OUT] int* : hsidptr 読み込んだ形状データを識別するhsid が格納される。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DCreateSwapChain | スワップチェイン | スワップチェインを作成します。 スワップチェインとは、複数の画面に描画を行うためのものです。 E3DInitで指定したウインドウとオブジェクト以外のところに、 描画したい場合にこの命令を呼びます。 この命令で取得したscidを、 E3DChkInView, E3DBeginScene, E3DRender, E3DPresentなどに渡すことにより 複数画面に3D描画できるようになります。 |
1. [IN] HWND : hwnd ウインドウのハンドルを 渡してください。 2. [OUT] int* : scidptr スワップチェインIDが代入されます。 このIDは、どの部分に描画を行うかを指定するのに 使います。 E3DChkInView, E3DRender, E3DBeginScene, E3DPresent などで 必要になります。 |
ver5.0.0.1 |
E3DDestroySwapChain | スワップチェイン | スワップチェインを破棄します。 E3DCreateSwapChainで作成したスワップチェインが、 もういらなくなった場合に、呼んでください。 E3DInitで取得したscidに対しては、呼び出さないでください。 |
1. [IN] int : scid スワップチェインID。 E3DCreateSwapChainで取得したIDを指定してください。 |
ver5.0.0.1 |
E3DRender | 描画 | バックバッファにレンダリングする。 変更したボーンの中で、 一番親の番号をlastparentに指定すると、 そのボーンツリーの影響を受ける頂点のみを 抽出して、計算します。 lastparentは、高速化のためのものです。 E3DIKRotateBetaで取得できるlastparentの値を 渡すことを想定しています。 キャラクター全体が移動した場合や カメラが移動した場合には、0を渡してください。 また、E3DRenderの初回の呼び出し時にも 0を渡してください。 lastparentを使用したくない場合は、 0をセットしてください。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : hsid 形状データを識別するid 3. [IN] int : withalpha 0を指定すると、不透明パーツのみレンダリングする。 1を指定すると、半透明パーツのみレンダリングする。 4. [IN] int : LightFlag sigのライティング計算を有効にしたいときは1を、 無効にしたいときは0を指定してください。 デフォルトは1です。 5. [IN] int : transskip transskipに1をセットすると、 行列演算処理がスキップされます。 不透明、半透明と、2回、E3DRenderを呼び出す場合は、 2回目の呼び出し時に、transskipに1を指定してください。 6. [IN] int : lastparent 変更が生じた一番親のボーンの番号を指定します。 詳しくは、前記をご覧ください。 |
ver5.0.0.1 |
E3DPresent | 描画 | バックバッファの内容を、 プライマリバッファに転送する。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver5.0.0.1 |
E3DBeginScene | 描画 | アプリケーションでは、レンダリングを実行する前には必ずこのメソッドを呼び出し、 レンダリングの終了時、 および再度E3DBeginSceneを呼び出す前には、 必ず E3DEndSceneを呼び出す。 具体的には、 E3DRender, E3DDrawText, E3DDrawBigTextを、 E3DBeginSceneと、E3DEndSceneでサンドイッチするように記述する。 ver5.2.1.0でskipflagを拡張しました。 ver5.3.0.1でzbufscidを追加。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : skipflag skipflagに0を指定すると色の初期化とZバッファの初期化と背景の描画を行います。 skipflagに1を足すと色の初期化とZバッファの初期化と背景の描画を行いません。 skipflagに2を足すとシェーダー定数のビデオカードへの転送をキャンセルします。 skipflagに4を足すと色の初期化は行いますがZバッファの初期化と背景の描画は行いません。 3. [IN] int : zbufscid Zバッファーを指定します。 デフォルト値は-1です。 -1を指定したときは最初の引数のscidのZバッファが使用されます。 正の値のzbufscidを指定すると指定したスワップチェインのZバッファが使用されます。 |
ver5.0.0.1 ver5.2.1.0で拡張 ver5.3.0.1で拡張。 |
E3DEndScene | 描画 | このメソッドが成功すると、シーンがレンダリングされ、レンダリング後のシーンがデバイス サーフェスに保持される。 | なし | ver5.0.0.1 |
E3DCreateBG | 背景 | 画面の一番奥に表示される背景をセットします。 画像ファイルは、2つまで、指定できます。 2個目の画像は、雲や、もや用を想定しています。 1つ目の画像と2つ目の画像は、モジュレートされて、表示されます。 isroundに1をセットすると、 背景が、視点の回転に対応して、回転するようになります。 ビデオカードがマルチテクスチャに対応していない場合、 または、モジュレート処理が出来ない場合は、 1個目のテクスチャーしか表示しないように なっています。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] char* : filename1 1つ目の画像ファイル名。 3. [IN] char* : filename2 2つ目の画像ファイル名。 2つ目が不必要な場合は、存在しないファイル名を、 渡してください。 4. [IN] float : uanim 5. [IN] float : vanim 2枚目の画像の、UV座標を、毎フレーム、どれくらい、 移動させるかを指定します。 通常は、0から1までの値を指定してください。 6. [IN] int : isround isroundに、1を指定すると、 ビューの回転に対応して、 一つ目の画像ファイルのUV座標が、回転します。 この際、画像ファイルの左端と、右端が、 連続するようなデータでないと、 つなぎ目が見えてしまいますので、注意してください。 isroundに0を指定すると、 1つ目の画像は、回転しません。 7. [IN] float : fogdist フォグの計算に使う、カメラからの距離を指定します。 この引数に、E3DSetLinearFogParamsで指定する endより小さい値を指定すれば、 背景は、フォグの色に染まりながらも、 うっすらと見えるように出来ます。 |
ver5.0.0.1 |
E3DSetBGU | 背景 | 背景のUV座標のU座標を指定します。 画面の左端のU座標の値をstartu引数に、 画面の右端のU座標の値をendu引数に、 それぞれ、指定してください。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] float : startu 画面左端のU座標の値。 3. [IN] float : endu 画面右端のU座標の値。 |
ver5.0.0.1 |
E3DSetBGV | 背景 | 背景のUV座標のV座標を指定します。 画面の一番上のV座標の値をstartv引数に、 画面の一番下のV座標の値をendv引数に、 それぞれ、指定してください。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] float : startv 画面左端のV座標の値。 3. [IN] float : endv 画面右端のV座標の値。 |
ver5.0.0.1 |
E3DDestroyBG | 背景 | 背景を破棄します。 | 1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver5.0.0.1 |
E3DAddMotion | モーション | モーションデータ(*.qua)を読み込む。 | 1. [IN] int : hsid どのモデルデータに対するモーションかを指定する。 2. [IN] char* : fname *.quaのパス文字列。 3. [IN] float : mvmult モーションの移動成分に掛ける倍率 4. [OUT] int* : motidptr 読み込んだモーションを識別する番号が代入されます。 5. [OUT] int* : maxframeptr 読み込んだモーションの最大フレーム番号(総フレーム数 - 1 と同じ)が代入されます。 |
ver5.0.0.1 |
E3DSetMotionKind | モーション | カレントの、モーション番号を指定する。 (カレントモーションを変更する。) この関数を実行すると、 モーションのフレーム番号は、 0にセットされる。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid モーションを識別する番号 |
ver5.0.0.1 |
E3DGetMotionKind | モーション | カレントのモーション番号を取得する。 | 1. [IN] int : hsid 形状データを識別するid 2. [OUT] int* : motidptr モーションを識別する番号が代入される。 |
ver5.0.0.1 |
E3DSetNewPose | モーション | カレントのモーションを E3DSetMotionStepでセットしたstepフレーム数分、 進ませる。 nextframeに 次に再生するフレーム番号がセットされる。 |
1. [IN] int : hsid 形状データを識別するid 2. [OUT] int* : nextframe 次に再生されるフレーム番号が代入されます。 |
ver5.0.0.1 |
E3DSetMotionStep | モーション | モーションのステップ数を指定する。 例えば、stepに2を指定すると 2フレームごとに(1フレームおきに) モーションを再生するようになる。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid モーションを識別する番号 3. [IN] int : step 何フレームごとにモーションを再生するかを指定する。 |
ver5.0.0.1 |
E3DChkConflictAABB | 当たり判定 | 2つの形状データが、衝突しているかどうかを判定する。 (判定の元になるデータは、 E3DChkInView命令によって更新される。) hsid1が視野外にある場合は、inviewflagに1が、 hsid2が視野外にある場合は、inviewflagに2が、 両方とも視野外の場合は、inviewflagに3が、 両方とも視野内の場合は、inviewflagに0が代入されます。 現在は、 E3DChkConflictOBBがあります。 パーツ同士のあたり判定が出来るようになりました。 モデル全体のあたり判定も出来ます。 モデル全体のあたり判定をする場合でも、 E3DChkConflictOBBの方が、パーツごとの計算をするので、この関数よりも計算精度が高いです。 新しい、E3DChkConflictOBBをお使いください。 |
1. [IN] int : hsid1 形状データを識別するid 2. [IN] int : hsid2 形状データを識別するid 3. [OUT] int* : confflag hsid1, hsid2で識別される形状同士が 衝突している場合は1が、 衝突していない場合は0がセットされる。 4. [OUT] int* : inviewflag hsid1が視野外にある場合はinviewflagに1を、 hsid2が視野外にある場合はinviewflagに2を、 両方とも視野外の場合は inviewflagに3を、 両方とも視野内の場合は inviewflagに0を代入します。 |
ver5.0.0.1 |
E3DChkConflictOBB | 当たり判定 | 2つの形状データの指定したパーツ同士が、衝突しているかどうを判定します。 partno1, partno2には、 E3DGetPartNoByNameで取得した、 パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 (判定の元になるデータは、 E3DChkInView命令によって、更新されます。) hsid1が視野外にある場合は、inviewflagに1が、 hsid2が視野外にある場合は、inviewflagに2が、 両方とも視野外の場合は、inviewflagに3が、 両方とも視野内の場合は、inviewflagに0が代入されます。 |
1. [IN] int : hsid1 形状データを識別するid 2. [IN] int : partno1 hsid1のモデル中のパーツの番号 3. [IN] int : hsid2 形状データを識別するid 4. [IN] int : partno2 hsid2のモデル中のパーツの番号 5. [OUT] int* : confflag hsid1, hsid2で識別される形状同士が 衝突している場合は1が、 衝突していない場合は0がセットされる。 6. [OUT] int* : inviewflag hsid1が視野外にある場合はinviewflagに1を、 hsid2が視野外にある場合はinviewflagに2を、 両方とも視野外の場合は inviewflagに3を、 両方とも視野内の場合は inviewflagに0を代入します。 |
ver5.0.0.1 |
E3DSetBillboardAlpha | 描画パラメータ | ビルボードの頂点のアルファ値を設定します。 sigモデルデータのアルファの設定は E3DSetMaterialAlphaをお使いください。 alphaval が1.0の時は、不透明に、 alphavalが0.0の時は、完全に透明になります。 alphavalに1.0以外の値を指定した場合は、 E3DRenderの2番目の引数withalphaに、 1を指定して描画します。 |
1. [IN] int : bbid E3DCreateBillboardで取得した、 ビルボードidを渡してください。 2. [IN] float : alphaval 頂点のアルファ値を指定します。 頂点のアルファ値は、0.0から1.0の値で 指定してください。 範囲外の値は、クランプしてセットします。 |
ver5.0.0.1 |
E3DSetPos | モデル位置 | 形状データの位置をセットする。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] D3DXVECTOR3 : pos 形状データを ( pos.x, pos.y, pos.z) に移動する。 |
ver5.0.0.1 |
E3DGetPos | モデル位置 | 形状データの位置を取得する。 | 1. [IN] int : hsid 形状データを識別するid 2. [OUT] D3DXVECTOR3* : pos 形状データの位置を取得する。 |
ver5.0.0.1 |
E3DSetDir | モデル向き | 形状データの向きを指定する。 指定した角度だけ回転します。 ver5.2.2.9からZ,X,Y軸の順番で回転するようになりました。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] D3DXVECTOR3 : deg 形状データの向きをX,Y,Z軸のそれぞれの角度(degree)で指定する。 |
ver5.0.0.1 ver5.2.2.9で仕様変更 |
E3DRotateInit | モデル向き | 形状データの向きを初期化します。 | 1. [IN] int : hsid 形状データを識別するid |
ver5.0.0.1 |
E3DRotateX | モデル向き | 形状データを、X軸に関して、degx 度だけ回転します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] float : degx 回転角度。 |
ver5.0.0.1 |
E3DRotateY | モデル向き | 形状データを、Y軸に関して、degy 度だけ回転します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] float : degy 回転角度。 |
ver5.0.0.1 |
E3DRotateZ | モデル向き | 形状データを、Z軸に関して、degz 度だけ回転します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] float : degz 回転角度。 |
ver5.0.0.1 |
E3DTwist | モデル向き | 形状データを、現在向いている方向を軸として、deg度だけ、回転します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] float : deg 回転角度。 |
ver5.0.0.1 |
E3DPosForward | モデル位置 | 形状データを、現在向いている方向に、stepだけ移動する。 ただし、形状データが、default状態で、 Z軸の方向を向いていると仮定する。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] float : step 移動距離を指定する。 |
ver5.0.0.1 |
E3DCloseTo | モデル位置 | hsid1で識別される形状をhsid2で識別される形状の方向に動かす。 内部でE3DDirToTheOtherを呼び出します。 |
1. [IN] int : hsid1 移動する形状データを識別するid 2. [IN] int : hsid2 hsid2で指定した形状データの方向に移動する。 3. [IN] float : step 移動距離を指定する。 |
ver5.0.0.1 |
E3DDirToTheOtherXZ | モデル向き | hsid1で識別される形状をXZ平面でhsid2で識別される形状の方向を向くようにする。 ただし、形状データが初期状態で Z軸の負の方向(0.0, 0.0, -1.0)を向いているものと仮定しています。 |
1. [IN] int : hsid1 向きを変える形状データを、識別するid 2. [IN] int : hsid2 hsid2で指定した形状データの方向を向く。 |
ver5.0.0.1 |
E3DDirToTheOther | モデル向き | E3DDirToTheOtherXZの3次元版。 ただし、形状データが初期状態で Z軸の負の方向(0.0, 0.0, -1.0)を向いているものと仮定しています。 |
1. [IN] int : hsid1 向きを変える形状データを、識別するid 2. [IN] int : hsid2 hsid2で指定した形状データの方向を向く。 |
ver5.0.0.1 |
E3DSeparateFrom | モデル位置 | hsid1で識別される形状を、hsid2で識別される形状と、逆の方向に、動かす。 | 1. [IN] int : hsid1 移動する形状データを、識別するid 2. [IN] int : hsid2 hsid2で指定した形状データと反対方向に移動する。 3. [IN] float : dist 形状同士をどのくらいの距離、離すかを指定する。 |
ver5.0.0.1 |
E3DGetCameraPos | カメラ | カメラの位置を取得する。 | 1. [OUT] D3DXVECTOR3* : posptr カメラの位置 を取得する。 |
ver5.0.0.1 |
E3DSetCameraPos | カメラ | カメラの位置を指定する。 | 1. [IN] D3DXVECTOR3 : pos カメラを ( pos.x, pos.y, pos.z) に移動する。 |
ver5.0.0.1 |
E3DGetCameraDeg | カメラ | カメラの向きを取得する。 | 1. [OUT] float* : degxzptr カメラのXZ平面での角度を取得する。 2. [OUT] float* : degyptr カメラの仰ぎ角度を取得する。 |
ver5.0.0.1 |
E3DSetCameraDeg | カメラ | カメラの向きを指定する。 | 1. [IN] float : degxz カメラのXZ平面での角度を指定する。 2. [IN] float : degy カメラの仰ぎ角度を指定する。 |
ver5.0.0.1 |
E3DSetCameraTarget | カメラ | カメラの注視点を指定する。 | 1. [IN] D3DXVECTOR3 : target カメラの注視点を(target.x, target.y, target.z)にセットする。 2. [IN] D3DXVECTOR3 : upvec カメラの上方向のベクトルを指定する。内部で、正規化して使用される。 |
ver5.0.0.1 |
E3DChkInView | 描画準備 | hsidで識別されるモデルが、視野内にあるかどうかを、判定します。 結果は、E3DHSPの内部データに、セットされます。 視野外のオブジェクトや、パーツは、 E3DRender時に、 自動的に、処理をスキップするようになります。 必ず、E3DSetPosや、E3DSetNewPoseより後、 E3DRenderや、あたり判定より前に、 呼び出してください。 この命令を呼び出した後の*statptrには、 ひとつも視野内にパーツがない場合は0が、 少なくとも1つは視野内にパーツがある場合は1がセットされます。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : hsid 形状データを識別するid 3. [OUT] int* : statptr 視野内情報が格納される。 詳しくは前記をご覧ください。 |
ver5.0.0.1 |
E3DEnableDbgFile | デバッグ | デバッグ情報を、dbg.txtに出力するように、します。 | なし | ver5.0.0.1 |
E3DSetProjection | 描画パラメータ | プロジェクションを指定する。 この関数を呼び出さなかった場合は、 near面:100.0, far面:10000.0, 視野角:45.0度 がdefaultで適用される。 farが大きいほど描画する範囲が多くなり描画速度は重くなる。 また設定によっては距離の近い物同士の上下関係が崩れることがある。 これを避けるには、なるべくnearを大きくしfarを小さくすることが有効である。ただしnear < far を守ることは言うまでもない。 |
1. [IN] float : near クリッピングの近い側の距離 2. [IN] float : far クリッピングの遠い側の距離 3. [IN] float : fovdeg 視野角(degree) |
ver5.0.0.1 |
E3DGetKeyboardState | キーボード | 256 個の仮想キーの状態を、指定されたバッファkeybufへコピーします。 keybuf は、この関数を使用する前に、 int keybuf[256]; で、確保してください。 複数のキーの状態を、一度の呼び出しで、 取得できます。 例えば、Aキーが押されているかどうかを 確かめる場合は、 E3DGetKeyboardState 呼び出し後に、 keybuf['A'] の値を調べます。 ( ’ を忘れずに。 ) 0が入っていた場合は、押されていません。 1が入っていた場合は、押されています。 |
1. [OUT] int* : keybuf keybufに、キーの状態が、代入されます。 keybufは、int keybuf[256]; で、 作成されている必要があります。 |
ver5.0.0.1 |
E3DDrawText | テキスト | 画面上の(pos.x, pos.y) にcol.r, col.g, col.b で指定した色でstrの文字列を書く。 col.aは無視される。 英数字のみ。 scaleが1.0のときは、12ポイントの大きさ。 E3DCOLOR4UCはusercoef.hで定義されている。 \nで改行できます。 |
1. [IN] D3DXVECTOR2 : pos 座標 2. [IN] float : scale スケール。 3. [IN] E3DCOLOR4UC : col 色 7. [IN] char* : str 表示文字列。 |
ver5.0.0.1 |
E3DDrawBigText | テキスト | 画面上の(pos.x, pos.y) にcol.r, col.g, col.b で指定した色でstrの文字列を書く。 col.aは無視される。 英数字のみ。 scaleが1.0のときは、36ポイントの大きさ。 E3DCOLOR4UCはusercoef.hで定義されている。 |
1. [IN] D3DXVECTOR2 : pos 座標 2. [IN] float : scale スケール。 3. [IN] E3DCOLOR4UC : col 色 7. [IN] char* : str 表示文字列。 |
ver5.0.0.1 |
E3DWaitbyFPS | 同期 | 指定したfpsに、近くなるように、waitします。 fpsとは、1秒間に描画するのこと回数です。 指定したfps以上、 処理を行わないようにするための命令です。 遅いマシンが、速くなるわけではないので、 注意してください。 実際のfpsが、retfps変数に、代入されます。 |
1. [IN] int : fps 指定したfpsに近くなるようにwaitします。 2. [OUT] int* : retfps 実際のfpsが代入されます。 |
ver5.0.0.1 |
E3DGetFPS | 同期 | fpsを計測します。 メインループの最後などで呼び出すことを想定しています。 E3DGetFPSが呼ばれる時間間隔から、 1秒間あたりに、何回呼び出されるかを計算します。 |
1. [OUT] int* : retfpsptr fpsが代入されます。 |
ver5.0.0.1 |
E3DCreateLight | ライト | 光源を作成します。 光源の識別番号、lightIDが取得できます。 以後、光源のパラメータの設定には、 この、lightIDを使用します。 |
1. [OUT] int* : lightIDptr 作成したライトを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DSetDirectionalLight | ライト | lightIDで識別される光源に、平行光源のパラメータをセットする。 |
1. [IN] int : lightID 光源を識別するid 2. [IN] D3DXVECTOR3 : dir 平行光源の向きを ベクトル(dir.x, dir.y, dir.z)を正規化したベクトルに設定する。 3. [IN] E3DCOLOR4UC : col 平行光源の色を (col.r, col.g, col.b)に設定する。 col.aは無視される。 |
ver5.0.0.1 |
E3DSetPointLight | ライト | lightIDで識別される光源に、ポイントライトのパラメータをセットする。 | 1. [IN] int : lightID 光源を識別するid 2. [IN] D3DXVECTOR3 : pos ポイントライトの位置を (pos.x, pos.y, pos.z)に設定する。 3. [IN] float : dist ポイントライトの光が届く距離を設定します。 4. [IN] E3DCOLOR4UC : col ポイントライトの色を (col.r, col.g, col.b)に設定する。 col.aは無視される。 |
ver5.0.0.1 |
E3DDestroyLight | ライト | ライトを破棄します。 | 1. [IN] int : lightID 削除する光源を、識別するid |
ver5.0.0.1 |
E3DClearZ | 描画 | Zバッファーをクリアーします | なし | ver5.0.0.1 |
E3DDestroyHandlerSet | 後処理 | E3DSigLoad, E3DAddMotionで作成した、 オブジェクトを破棄します。 |
1. [IN] int : hsid 形状データを識別するid |
ver5.0.0.1 |
E3DSetMotionFrameNo | モーション | E3DSetMotionKindの拡張版です。 モーションの種類と、フレーム番号を セットすることが出来ます。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid モーションを識別する番号 3. [IN] int : frameno フレーム番号 |
ver5.0.0.1 |
E3DCreateSprite | スプライト | スプライトを作成します。 spriteIDで、スプライトを識別するIDを、 取得できます。 スプライトの操作時には、この、spriteIDを 使用します。 作成されるスプライトのサイズは、 元の画像ファイルの大きさと、 異なる場合があります。 サイズは、E3DGetSpriteSize で、 確認してください。 |
1. [IN] char* : filename 画像ファイル名。 2. [IN] int : transparentflag 透過フラグ。 画像ファイルのアルファをもとに透過する場合、 あるいは、画像ファイルにアルファが無く透過もしない場合0を指定してください。 1をセットすると黒色を透過色として色抜きします。 2をセットするとtpcolで指定した色を透過色とします この関数のtransparetflagの意味は他の関数のtransparentとは違うので気を付けてください。 3. [IN] E3DCOLOR4UC* : tpcolptr transparentflag = 2 のとき透過色を指定します。 透過色を指定しない場合は0を渡します。 tpcolptr->aは無視されます。 4. [OUT] int* : spriteIDptr 作成したスプライトを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DBeginSprite | スプライト | スプライトを描画できるように、 デバイスを準備します。 E3DRenderSprite命令を、 E3DBeginSpriteと、E3DEndSpriteで、 サンドイッチするように、記述してください。 E3DBeginSpriteとE3DEndSpriteは、 E3DBeginSceneとE3DEndSceneの間に記述してください。 スプライトを描画すると、レンダーステートが変化するので、 hsidなどを描画した後、最後に、スプライトの描画命令を書くことをおすすめします。 |
なし | ver5.0.0.1 |
E3DEndSprite | スプライト |
E3DRenderSprite命令を、 E3DBeginSpriteと、E3DEndSpriteで、 サンドイッチするように、記述してください。 |
なし | ver5.0.0.1 |
E3DRenderSprite | スプライト | spriteIDで識別される、スプライトを、レンダリングします。 | 1. [IN] int : spriteID スプライトを識別するID。 2. [IN] float : scalex 3. [IN] float : scaley スプライトのx軸、y軸方向の倍率を指定します。(等倍は1.0) 4. [IN] D3DXVECTOR3 : tra スプライトの描画位置(tra.x, tra.y)を指定します。 指定した位置がスプライトの左上の座標となります。 tra.zは描画時の奥行き情報。 3D描画との前後関係にも、反映されます。 tra.zには0.0から1.0のfloatを指定してください。 0.0のとき、一番手前に描画され、 1.0のとき、一番奥に描画されます。 (ビデオカードによっては1.0は表示されません。いちばん奥は0.99999などにしておくのが安全です。) 0.0から1.0の間は、均等な効果ではありません。 値を増やしても、あまり効果の無い場所や、 少し、値を増やしただけで、効果が大きくなる範囲が あります。 Easy3Dの場合は、0.99以降が、 少し値を増やしただけで、 効果が大きい範囲となります。 |
ver5.0.0.1 |
E3DGetSpriteSize | スプライト | spriteIDで識別される、スプライトの、サイズを取得します。 | 1. [IN] int : spriteID スプライトを識別するID。 2. [OUT] int* : spriteWidthptr 3. [OUT] int* : spriteHeightptr 幅と高さが代入されます。 |
ver5.0.0.1 |
E3DSetSpriteRotation | スプライト | E3DCreateSprite命令で作成したスプライトを回転させます。 (center.x, center.y)の座標を中心に回転します。 (0, 0)を指定すると、スプライトの左上を中心に回転します。 スプライトの中央を中心に回転したいときは、 まず、E3DGetSpriteSize命令で、 スプライトのサイズ、sizex, sizey を取得します。 center.x = sizex / 2 center.y = sizey / 2 の値をこの関数に渡せば、OKです。 回転角度は、絶対量です。 相対量ではありません。 E3DSetSpriteRotation命令は、 一度、呼び出せば、内部で、情報を記憶しますので、次に異なるパラメータで呼び出すまで、 その値が有効になります。 |
1. [IN] int : spid スプライトデータを識別するID 2. [IN] D3DXVECTOR2 : center (center.x, center.y)の座標を中心に回転します。 3. [IN] float : rotdeg rotdeg 度だけスプライトを回転します。 |
ver5.0.0.1 |
E3DSetSpriteARGB | スプライト | スプライトに乗算する色を指定します。 col.a に255より小さい値を渡せば、 半透明のスプライトの描画が出来ます。 スプライトの色を変えたくない場合には、 col.r, col.g, col.bには、255を渡してください。 |
1. [IN] int : spid スプライトデータを識別するID 2. [IN] E3DCOLOR4UC : col スプライトに乗算する色を指定します。 半透明にする場合には、 col.aに255より小さい値を入れます。 |
ver5.0.0.1 |
E3DDestroySprite | スプライト | spriteIDで識別される、スプライトを、 破棄します。 |
1. [IN] int : spriteID スプライトを識別するID。 |
ver5.0.0.1 |
E3DChkConfBillboardBS | ビルボード | 指定した境界球(中心と半径)と、全てのビルボードとのあたり判定をします。 hsidの代わりに、境界球を指定すること以外は、 E3DChkConfBillboardと同じです。 衝突したビルボードのIDが取得できます。 |
1. [IN] D3DXVECTOR3 : center 境界球の中心座標( center.x, center.y, center.z ) 2. [IN] float : r 境界球の半径 3. [IN] float : confrate ビルボードの境界球の半径に、掛ける係数 半径 × confrate で計算されます。 6. [OUT] int* : resultptr あたり判定の結果が代入されます。 当たった場合は1が、 当たらなかった場合は0が代入されます。 7. [OUT] int* : confbbidptr 8. [IN] int : arrayleng 衝突したビルボードのIDを格納するための配列 confbbidptr = (int*)malloc( sizeof( int ) * arrayleng ); などの命令で、配列を作成して、 この関数に指定してください。 arrayleng個以上のビルボードと、 同時に衝突した場合には、エラーになるので、 配列長のarraylengは、少し大きめの値にしてください。 9. [OUT] int* : confnumptr 衝突したビルボードの個数が代入されます。 maxno = *confnumptr - 1 とすると、 *confbbidptr から、*(confbbidptr + maxno) までの間に、 衝突したビルボードのIDが代入されます。 |
ver5.0.0.1 |
E3DChkConfBillboard | ビルボード | hsidで識別されるモデルデータと、全てのビルボードのあたり判定をします。 境界球による判定を行います。 当たらなかった場合は、 resultに0が代入され、 当たった場合は、 resultに1が代入されます。 confrateで、ビルボードの境界球の大きさを変更することが出来ます。 例えば、confrateに0.5を入れると、 実際の半径×0.5 つまり、半分の半径で計算されます。 confrateに小さな値を入れることで、 モデルがビルボードの近くを すり抜けることが出来るようになります。 衝突したビルボードのIDが取得できます。 |
1. [IN] int : hsid 形状データを識別する番号 2. [IN] float : confrate ビルボードの境界球の半径に、掛ける係数 半径 × confrate で計算されます。 3. [OUT] int* : resultptr あたり判定の結果が代入されます。 当たった場合は1が、 当たらなかった場合は0が代入されます。 4. [OUT] int* : confbbidptr 5. [IN] int : arrayleng 衝突したビルボードのIDを格納するための配列 confbbidptr = (int*)malloc( sizeof( int ) * arrayleng ); などの命令で、配列を作成して、 この関数に指定してください。 arrayleng個以上のビルボードと、 同時に衝突した場合には、エラーになるので、 配列長のarraylengは、少し大きめの値にしてください。 6. [OUT] int* : confnumptr 衝突したビルボードの個数が代入されます。 maxno = *confnumptr - 1 とすると、 *confbbidptr から、*(confbbidptr + maxno) までの間に、 衝突したビルボードのIDが代入されます。 |
ver5.0.0.1 |
E3DChkConflictBS | 当たり判定 | 境界球によるあたり判定を行います。 判定の際にE3DChkInViewでセットした データを使用します。 conflevelに1を指定した場合は、 モデル単位の粗い判定のみを行います。 conflevelに2を指定した場合は、 パーツ単位の判定を行います。 現在は、 任意のパーツ同士のあたり判定の出来る、 E3DChkConflictBSPart, E3DChkConflictBSPartArrayがあります。 |
1. [IN] int : hsid1 形状データを識別するid 2. [IN] int : hsid2 形状データを識別するid 3. [IN] int : conflevel 1を指定した場合はモデル単位の判定を、 2を指定した場合はパーツ単位の判定をします。 4. [OUT] int* : confflagptr hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 |
ver5.0.0.1 |
E3DChkConflictBSPart | 当たり判定 | 境界球によるあたり判定を、任意のパーツごとに行います。 判定の際に、E3DChkInViewでセットした データを使用します。 partno1, partno2には、 E3DGetPartNoByNameで取得した パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 |
1. [IN] int : hsid1 形状データを識別するid 2. [IN] int : partno1 hsid1のモデル中のパーツの番号 3. [IN] int : hsid2 形状データを識別するid 4. [IN] int : partno2 hsid2のモデル中のパーツの番号 5. [OUT] int* : confflagptr hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 |
ver5.0.0.1 |
E3DCreateProgressBar | プログレスバー | メインウインドウの下の部分に、プログレスバーを作ります。 |
なし | ver5.0.0.1 |
E3DSetProgressBar | プログレスバー | 作業の達成率などを、 プログレスバーに表示させます。 newpos は、0から100の間の数を、 セットしてください。 |
1. [IN] int : newpos 0から100の値。 |
ver5.0.0.1 |
E3DDestroyProgressBar | プログレスバー | プログレスバーを削除します。 |
なし | ver5.0.0.1 |
E3DLoadGroundBMP | 地面 | BMPデータから、地面を生成します。 詳しくは、地面データの作り方をご覧ください。 |
1. [IN] char* : filename1 地面の座標情報の元となる、BMPファイル名 2. [IN] char* : filename2 地面の道の情報の元となる、BMPファイル名 3. [IN] char* : filename3 地面の川の情報の元となる、BMPファイル名 4. [IN] char* : filename4 地面、道、川の模様を決める、BMPファイル名 5. [IN] float : maxx 地面のX座標の最大値 6. [IN] float : maxz 地面のZ座標の最大値 7. [IN] int : divx X方向の分割数 8. [IN] int : divz Z方向の分割数 9. [IN] float : maxheight 地面の高さの最大値 10. [OUT] int* : hsidptr 作成した地面データを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DCameraPosForward | カメラ | カメラを、向いている方向に、 stepの距離だけ 移動させます。 stepにマイナスを与えると、 後ろに進めます。 |
1. [IN] float : step 進む距離を指定してください。 |
ver5.0.0.1 |
E3DSetBeforePos | モデル位置 | E3DChkConfGroundで使用する座標を保存します。 一つ前の座標を保存するための命令です。 保存した値は、内部で、当たり判定命令で使用します。 メインループの最後の部分などで、 呼んでください。 一番最初のE3DPosの直後でも、 呼んでください。 |
1. [IN] int : charahsid 形状データを識別するid |
ver5.0.0.1 |
E3DChkConfGround | 当たり判定 | groundhsidで識別される地面と、charahsidで識別されるキャラクターとのあたり判定をします。 groundhsidは、E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで取得したものでなければいけません。 キャラクターの現在の座標と、E3DSetBeforePosで保存された古い座標とを結ぶ線分と、 地面の各ポリゴンとのあたり判定をします。 地面の上を這うように動くためのモードと、 飛行機のように飛ぶためのモードの 2種類あります。 這うモードの時は、毎回、*adjustptrに 地面の座標が返されます。 飛ぶモードの時は、地面と衝突したときに、 その座標が*adjustptrに返されます。 |
1. [IN] int : charahsid 移動する形状データを識別するid 2. [IN] int : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 3. [IN] int : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 4. [IN] float : diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 5. [IN] float : mapminy groundhsidで識別されるデータの一番低いY座標の値 通常は、0.0です。 6. [OUT] int* : resultptr あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は*resutlptr = 0 ぶつかった場合は、*resultptr = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 *resultptr = 0 diffmaxyより高い高さを登ろうとしたとき、 *resultptr = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 *resultptr = 2 となります。 7. [OUT] D3DXVECTOR3* : adjust *resultptr != 0 のときに、 mode == 0のときはぶつかった座標 mode == 1のときは地面の座標が代入されます。 8. [OUT] D3DXVECTOR3* : nptr *resultptr != 0 のときに、 mode == 0のときはぶつかったポリゴン mode == 1のときは地面のポリゴンの 法線ベクトルが代入されます。 跳ね返る方向を決めるときなどに 使用できるのではないかと思い、 加えてみました。 |
ver5.0.0.1 |
E3DChkConfGroundVec | 当たり判定 | befposとnewposを結ぶ線分と、groundhsidで識別される地面との あたり判定をします。 線分の座標を、ユーザーが指定すること以外は、 E3DChkConfGroundと全く、同じです。 |
1. [IN] D3DXVECTOR3 : befpos 線分の始点を(befpos.x, befpos.y, befpos.z)で 指定します。 2. [IN] D3DXVECTOR3 : newpos 線分の終点を(newpos.x, newpos.y, newpos.z)で 指定します。 3. [IN] int : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 4. [IN] int : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 5. [IN] float : diffmaxy 一度の移動で登ることが出来る高さの最大値を指定してください。 6. [IN] float : mapminy groundhsidで識別されるデータの一番低いY座標の値 7. [OUT] int* : resultptr あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、*resultptr = 0 ぶつかった場合は、*resultptr = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 *resultptr = 0 diffmaxyより高い高さを登ろうとしたとき、 *resultptr = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 *resultptr = 2 8. [OUT] D3DXVECTOR3* : adjustptr *resultptr != 0 のときに、 mode == 0のときはぶつかった座標 mode == 1のときは地面の座標が代入されます。 9. [OUT] D3DXVECTOR3* : nptr *resultptr != 0 のときに、 mode == 0のときはぶつかったポリゴン mode == 1のときは地面のポリゴンの法線ベクトルが代入されます。 跳ね返る方向を決めるときなどに使用できるのではないかと思い加えてみました。 |
ver5.0.0.1 |
E3DGetPartNoByName | モデル情報 | モデル内のパーツの名前から、パーツの番号を取得します。 パーツの名前は、RokDeBone2で確認してください。 ver1.0.6.1以前のRokDeBone2では、 メタセコイアから読み込んだデータの、 パーツの名前には、 " が付いているので、 注意してください。 昔のファイルの場合、 例えば、名前が、"obj1" である場合、 引数partname には、 "\"obj1\"" というように、\" を使用しなくては、いけません。 ( 現在のRokDeBone2で新規作成したファイルでは、 パーツ名に”は付いていません。 ) また、同じ名前のパーツが、複数ある場合、 常に、一番最初に、見つかったパーツの番号が、取得されることに、注意してください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] char* : partname RokDeBone2で表示される、パーツの名前。 3. [OUT] int* : partnoptr 名前がpartnameであるパーツの番号が代入される。 |
ver5.0.0.1 |
E3DGetVertNumOfPart | モデル情報 | partnoで識別されるパーツに、いくつの頂点が含まれるかを取得します。 E3DGetVertPos, E3DSetVertPos に渡す、vertno は、 0 〜 (vertnum - 1) の間でなくては、なりません。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号 3. [OUT] int* : vertnumptr パーツに含まれる頂点数が代入されます。 |
ver5.0.0.1 |
E3DGetVertPos | モデル情報 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標を取得します。 ローカル座標とグローバル座標のどちらかを 取得できます。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号 3. [IN] int : vertno 頂点の番号 4. [IN] int : kind 0を指定するとローカル座標 1を指定するとグローバル座標が 取得できます。 5. [OUT] D3DXVECTOR3* : vertptr 頂点の座標が代入されます。 |
ver5.0.0.1 |
E3DSetVertPos | モデル情報 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標(ローカル座標)をセットします。 ユーザーが、座標、姿勢を、 全て、自分で管理することを想定した、 上級者向けの機能です。 例えば、目標地点に頂点座標を近づけていきたい場合などは、 E3DSetPos hsid, 0.0, 0.0, 0.0 E3DSetDir hsid, 0.0, 0.0, 0.0 でワールド変換が行われないようにした状態で、 E3DSetVertPosを使い、希望位置へ、 頂点座標をセットする。 などの、使用方法が、考えられます。 AddMotionを行った、モデルデータにも、 使用しないでください。 (使用しても、ハングしたりはしませんが、 あたり判定が、正確に行われません。) |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号 3. [IN] int : vertno 頂点の番号 4. [IN] D3DXVECTOR3 : vert 座標を指定の頂点にセットします。 |
ver5.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] int : hsid 配置したい形状データを識別するid 2. [IN] int : groundid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した地面を識別するid 3. [IN] float : mapmaxy 地面データの高さの最大値 4. [IN] float : mapminy 地面データの高さの最小値 5. [IN] float : posx 6. [IN] float : posz 地面の高さをYとすると、 (posx, Y,. posz)に、hsidのモデルデータを配置します。 |
ver5.0.0.1 |
E3DSetPosOnGroundPart | モデル位置 | 地面パーツを指定して、地面にオブジェクトを配置します。 パーツを指定すること以外は、 E3DSetPosOnGroundと同じです。 詳しくは、E3DSetPosOnGroundの説明をお読みください。 |
1. [IN] int : hsid 配置したい形状データを識別するid 2. [IN] int : groundid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した地面を識別するid 3. [IN] int : groundpart 地面のパーツ番号を指定します。 E3DGetPartNoByNameで取得した番号を 指定してください。 4. [IN] float : mapmaxy 地面データの高さの最大値 5. [IN] float : mapminy 地面データの高さの最小値 6. [IN] float : posx 7. [IN] float : posz 地面の高さをYとすると、 (posx, Y,. posz)に、hsidのモデルデータを配置します。 |
ver5.0.0.1 |
E3DCreateBillboard | ビルボード | ビルボードを作成します。 2000個まで、ビルボードを作ることが出来ます。 billboardidに、作成したビルボードを識別する 番号が、代入されます。 billboardidは、 E3DSetBillboardPos, E3DSetBillboardOnGround, E3DDestroyBillboard, E3DChkConfBillboard の関数で、使用します。 billboardidは、hsidとは、全く異なるものなので、E3DSetPosなどの、hsidを使用する関数には、使えません。 E3DCreateBillboardでは、 transparentflagに、1をセットすれば、 黒色を透過色として、扱えます。 |
1. [IN] char* : filename ビルボードに貼り付けるテクスチャーのファイル名(フルパス) 2. [IN] float : width ビルボードの幅。 3. [IN] float : height ビルボードの高さ。 4. [IN] int : transparentflag 1を指定すると、 テクスチャーの黒色(r = 0, g=0, b=0)を透過色として、 扱います。 0を指定すると、 テクスチャーファイルの、 アルファ値を元に、透過します。 5. [IN] int : dirmode dirmodeに0を指定すると、 ビルボードは、Y軸に関してのみ、回転します。 地面に立っている木などに使用してください。 dirmodeの1を指定すると、 ビルボードは、全方向に回転します。 カメラの高さにかかわらず、カメラの方向を向かせたいもの 例えば、火や煙などに、使用してください。 6. [IN] int : orgflag ビルボードの原点の位置を指定します。 orgflagに0を指定すると、 原点は、ビルボードの四角形の下の辺の中心になります。 地面に生やす木などの場合に、便利です。 orgflagに1を指定すると、 原点は、ビルボードの中心になります。 爆発などの、特殊効果に使う場合に、便利です。 7. [OUT] int* : billboardidptr 作成したビルボードを識別する番号が、代入されます。 |
ver5.0.0.1 |
E3DRenderBillboard | ビルボード | E3DCreateBillboard で作成されたビルボード全てを、 描画します。 各ビルボードは、 視線の方向を向くようにセットされます。 また、 視点から、遠い方から順番に、描画されます。 transskip引数の意味については E3DTransformBillboardの説明をお読みください。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : transskip 1を指定すると描画準備の計算をスキップします。 E3DTransformBillboardを使った場合に使用します。 通常は0です。 |
ver5.0.0.1 |
E3DSetBillboardPos | ビルボード | billboardidで識別されるビルボードの、位置を指定します。 |
1. [IN] int : billboardid ビルボードを識別する番号 2. [IN] D3DXVECTOR3 : pos ビルボードの位置を、(pos.x, pos.y, pos.z) にセットします。 |
ver5.0.0.1 |
E3DSetBillboardOnGround | ビルボード | billboardidで識別されるビルボードの、位置を、指定したXZ座標の、地面の高さにセットします。 この命令を使う前に、少なくとも、一回は、 E3DChkInView scid, groundid, &stat が呼ばれている必要があります。 (groundid部分には、配置する地面のhsidを入れてください。) 現バージョンではgroundidは、 E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGround で取得したものしか、使用できません。 |
1. [IN] int : billboardid ビルボードを識別する番号 2. [IN] int : groundid groundidで識別される地面の上に、 ビルボードが配置されます。 3. [IN] float : mapmaxy 地面データの一番大きなY座標 4. [IN] float : mapminy 地面データの一番小さなY座標 (通常0.0) 5. [IN] float : posx 6. [IN] float : posz (posx, mapmaxy, posz)と、(posx, mapminy, posz) と地面データとの交点を求めて、 地面上の適切な高さに、ビルボードを配置します。 |
ver5.0.0.1 |
E3DDestroyBillboard | ビルボード | billboardidで識別されるビルボードを、削除します。 |
1. [IN] int : billboardid ビルボードを識別する番号 |
ver5.0.0.1 |
E3DLoadMQOFileAsGround | 地面 | mqo ファイルを地面データとして、読み込みます。 地面データを識別するidが、戻り値となります。 取得したid は、E3DChkConfGroundなどの関数で、使用できます。 |
1. [IN] char* : filename 読み込む、mqo ファイル名。 2. [IN] float : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0 3. [IN] int : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 何も指定しないときは、0として扱われます。 2を指定すると0.0から1.0の間にクランプします。 4. [IN] int : bonetype mqoにボーンが含まれている場合は ボーンのタイプを指定します。 BONETYPE_RDB2を指定するとRokDeBone2形式の 線分をボーンと認識するタイプになります。 BONETYPE_MIKOを指定すると mikoto形式のタイプになります。 省略するとBONETYPE_RDB2になります。 これらの定数はusercoef.hで定義されています。 5. [OUT] int* : hsidptr 作成した地面を識別するhsidが代入されます。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DSaveMQOFile | モデルデータ | hsidで指定したモデルのデータを、mqoの形式で出力します。 地面データの出力などに、使用してください。 |
1. [IN] int : hsid 出力するモデルのhsid 2. [IN] char* : filename 出力するファイル名 |
ver5.0.0.1 |
E3DGetBillboardInfo | ビルボード | 指定した番号の、ビルボード情報を、取得します。 ビルボードの番号には、 E3DCreateBillboardで取得した番号を、 指定してください。 |
1. [IN, OUT] BBINFO* : bbinfoptr 情報を取得したいビルボードの番号を bbinfo->bbidにセットしてから渡してください。 |
ver5.0.0.1 |
E3DGetNearBillboard | ビルボード | 指定した座標に、一番近いビルボードのIDを取得します。 maxdist で指定した、距離より、遠いビルボードしか存在しない場合は、 IDに、-1 が代入されます。 |
1. [IN] D3DXVECTOR3 : pos 位置座標を、(pos.x, pos.y, pos.z)で指定します。 2. [IN] float : maxdist maxdistで指定した距離より 遠いビルボードしかない場合は、 nearbbidに-1が代入されます。 3. [OUT] int* : nearbbidptr (pos.x, pos.y, pos.z) に一番近く、 maxdistより近いビルボードのIDを代入します。 存在しない場合は-1を代入します。 |
ver5.0.0.1 |
E3DGetInvisibleFlag | モデル情報 | hsidで識別されるモデルのpartnoのパーツのInvisibleFlag(見えないフラグ)を取得します。 InvisibleFlagが、1になっているパーツは、あたり判定は行われますが表示はされません。 進入禁止区域との境目に置く見えないオブジェクトとして使用することなどが、 考えられます。 partno にはE3DGetPartNoByNameで取得した番号を指定してください。 また、hsidに負の値を渡し、partnoにビルボードのid を渡すと、 ビルボードのInvisibleFlag を取得することが出来ます。 |
1. [IN] int : hsid 形状データを識別するID ビルボードのInvisibleFlagを取得する場合は、負の値 を渡してください。 2. [IN] int : partno パーツの番号。 E3DGetPartNoByNameで取得した番号、 または、ビルボードのID。 3. [OUT] int* : flagptr 指定したパーツのInvisibleFlag が代入されます。 |
ver5.0.0.1 |
E3DSetInvisibleFlag | モデル情報 | hsidで識別されるモデルのpartnoのパーツのInvisibleFlag(見えないフラグ)をセットします。 partno にはE3DGetPartNoByNameで取得した番号を指定してください。 また、hsidに負の値を渡しpartnoにビルボードのid を渡すと ビルボードのInvisibleFlag をセットすることが出来ます。 InvisibleFlag == 0 のとき可視状態(デフォルト)で、 InvisibleFlag == 1 のとき表示されずあたり判定だけとなります。 |
1. [IN] int : hsid 形状データを識別するID ビルボードのInvisibleFlagを取得する場合は、 負の値を渡してください。 2. [IN] int : partno パーツの番号。 E3DGetPartNoByNameで取得した番号、 または、ビルボードのID。 3. [IN] int : flag 指定したパーツのInvisibleFlag をセットします。 |
ver5.0.0.1 |
E3DSetMovableArea | 壁 | 移動可能領域を、BMPファイルから、自動生成します。 (色の付いた部分と、付いていない部分の 境界部分に、地面に垂直な、非表示の壁ポリゴンを生成します。) E3DChkConfWall 命令と併用すれば、 BMPで、濃い色を付けた部分のみ、移動できるようになります。 メタセコイアデータで、 壁データを作りたい場合は、 メタセコイアのプラグイン、MakeWallをご使用ください。 (おちゃっこLABのトップページにリンクがあります。) |
1. [IN] char* : filename1 壁の座標情報の元となる、BMPファイル名 2. [IN] float : maxx 壁のX座標の最大値 3. [IN] float : maxz 壁のZ座標の最大値 4. [IN] int : divx X方向の分割数 5. [IN] int : divz Z方向の分割数 6. [IN] float : wallheight 作成する壁の高さ 7. [OUT] int* : hsidptr 作成した壁データを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DChkConfWall | 当たり判定 | E3DSetMovableArea またはE3DLoadMQOFileAsMovableAreaで作成した壁データとキャラクターのあたり判定を行います。 キャラクターの現在の座標と、E3DSetBeforePosで保存された古い座標とを結ぶ線分と、 壁の各ポリゴンとのあたり判定をします。 壁に沿って位置を移動するために 使用します。 壁の外側から内側へは移動できますが、内側から外側へは移動できないようにします。 |
1. [IN] int : charahsid 移動する形状データを識別するid 2. [IN] int : groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 3. [IN] float : dist 跳ね返る距離。 distに大きな値を入れると、 ぶつかった際に大きく跳ね返るようになります。 4. [OUT] int* : resultptr あたり判定の結果が代入されます。 壁とぶつかった場合は1が、 ぶつからなかった場合は0が代入されます。 5. [OUT] D3DXVECTOR3* : adjustptr result != 0 のときに 修正後の座標が代入されます。 6. [OUT] D3DXVECTOR3* : nptr result != 0 のときに、 ぶつかった面の法線ベクトルの値が 代入されます。 |
ver5.0.0.1 |
E3DChkConfWallVec | 当たり判定 | E3DSetMovableArea,またはE3DLoadMQOFileAsMovableAreaで作成した壁データとキャラクターのあたり判定を行います。 befposで指定した座標と newposで指定した座標を結ぶ線分と 壁の各ポリゴンとのあたり判定をします。 壁に沿って位置を移動するために 使用します。 壁の外側から内側へは移動できますが、内側から外側へは移動できないようにします。 |
1. [IN] D3DXVECTOR3 : befpos 線分の始点を(befpos.x, befpos.y, befpos.z)で 指定します。 2. [IN] D3DXVECTOR3 : newpos 線分の終点を(newpos.x, newpos.y, newpos.z)で 指定します。 3. [IN] int : groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 4. [IN] float : dist 壁からの距離の最小値。 distに大きな値を入れると、 ぶつかった際に大きく跳ね返るようになります。 5. [OUT] int* : resultptr あたり判定の結果が代入されます。 壁とぶつかった場合は1が、 ぶつからなかった場合は0が代入されます。 6. [OUT] D3DXVECTOR3* : adjustptr result != 0 のときに、 修正後の座標が代入されます。 7. [OUT] D3DXVECTOR3* : nptr result != 0 のときに、 ぶつかった面の法線ベクトルの値が代入されます。 |
ver5.0.0.1 |
E3DVec3Normalize | 算術 | 指定したベクトルを、正規化た値を取得します。 つまり、指定したベクトルの向きを持つ、 大きさ1のベクトルが、取得できます。 |
1. [IN] D3DXVECTOR3 : vec ベクトルを、(vec.x, vec.y, vec.z)で指定します。 2. [OUT] D3DXVECTOR3* : newvecptr 向きが(vec.x, vec.y, vec.z)で 大きさが1なベクトルを代入します。 |
ver5.0.0.1 |
E3DVec2CCW | 算術 | vec2 がvec1 に対して、反時計回りの時、 resultに、1を代入し、 時計回りの時、 resultに、-1を代入する。 |
1. [IN] D3DXVECTOR2 : vec1 vec1を指定する。 2. [IN] D3DXVECTOR2 : vec2 vec2を指定する。 3. [OUT] int* : result vec2 がvec1 に対して、反時計回りの時 resultに、1を代入し、 時計回りの時resultに-1を代入する。 |
ver5.0.0.1 |
E3DVec3RotateY | 算術 | ベクトルbefvecをY軸に関してdegy 度だけ回転したベクトルnewvec を取得します。 |
1. [IN] D3DXVECTOR3 : befvec 回転したいベクトルを、 (befvec.x, befvec.y, befvec.z)で指定します。 2. [IN] float : degy 回転角度を指定します。 degy の角度だけ回転します。 3. [OUT] D3DXVECTOR3* : newvecptr 回転後のベクトルが代入されます。 |
ver5.0.0.1 |
E3DLoadMQOFileAsMovableArea | 壁 | メタセコイアの、MQOファイルで作成した壁のデータを、移動可能領域情報として読み込みます。 メタセコイアでデータを作る場合には次の2点に気を付けてください。 1.壁データは常に移動可能領域の内側を向くように面の向きを設定してください。両面ポリゴンは不可です。 2.壁データは少しの隙間もないように作成してください。 自動的に壁データを作りたい場合は、 メタセコイアのプラグインMakeWallをご使用ください。 (おちゃっこLABのトップページにリンクがあります。) |
1. [IN] char* : filename 読み込む、mqo ファイル名。 2. [IN] float : mult 形状データの座標に掛ける係数の数値。 座標値 * mult で計算されます。 等倍は1.0 3. [OUT] int* : hsidptr 作成した壁データを識別するhsidが代入されます。 |
ver5.0.0.1 |
E3DLoadSound | サウンド | 音のデータを読み込み音を識別する番号soundidを取得します。 oggとwavを読み込めます。 oggはステレオのみ。 3Dサウンドにも対応しています。 3Dサウンドはモノラルのみです。 MIDIは読み込めません。 ver5.3.0.3でoggdatanum引数追加。 ver5.3.1.6でoggdatanum引数を削除(自動設定に変更) |
1. [IN] char* : filename 読み込む、サウンド ファイル名。 2. [IN] int : use3dflag 3Dサウンドとして読み込む場合は1を指定してください。 デフォルト値は0です。 3. [IN] int : reverbflag リバーブを有効にしたいときは1を したくないときは0を指定します。 4. [IN] int : bufnum 同じIDのサウンドを同時にいくつ重ねて再生できるかを指定します。 5. [OUT] int* : soundidptr 作成した音データを識別する番号が代入されます。 |
ver5.0.0.1 ver5.3.0.0で仕様変更 ver5.3.0.3で拡張 ver5.3.1.6で修正 |
E3DPlaySound | サウンド | E3DLoadSoundで読み込んだ音データを再生します。 |
1. [IN] int : soundid 再生したい音を識別する番号を、指定します。 2. [IN] int : startsample 再生開始位置をサンプル(周波数)単位で指定します。 3. [IN] int : openo 将来のバッチ処理用の引数です。 現在は0を指定しておいてください。 4. [IN] int : numloops 繰り返し回数を指定します。 無限ループは255を指定します。 255以下でもあまり大きい値を指定するとハングすることがあります(255はハングしません)。 |
ver5.0.0.1 ver5.3.0.0で仕様変更 |
E3DStopSound | サウンド | 音の再生を停止します。 |
1. [IN] int : soundid 停止したい音を識別する番号を指定します。 |
ver5.0.0.1 |
E3DSetSoundVolume | サウンド | 音の音量を設定します。 |
1. [IN] float : volume 音量を指定します。 ソース音量との比率を指定します。 2. [IN] int : soundid 設定したい音を識別する番号を指定します。 -1を指定すると、全ての音の音量を設定できます。 |
ver5.0.0.1 ver5.3.0.0で仕様変更 |
E3DDestroySound | サウンド | 読み込んだ音データを破棄します。 破棄した音はその後操作することは出来ません。 ただ、再生を終了させる場合は E3DStopSound関数を使用してくださ |
1. [IN] int : soundid 破棄したい音を識別する番号 |
ver5.0.0.1 |
E3DGetSoundVolume | サウンド | 現在の音量を取得します。 | 1. [IN] int : soundid 音を識別する番号 2. [OUT] float* : volptr 音量(ソース音量との比率)が代入されます。 |
ver5.0.0.1 ver5.3.0.0で仕様変更 |
E3DSet3DSoundListenerMovement | サウンド | リスナーの位置と向きを設定します。 hsidにモデルデータの番号を渡した場合には、 そのモデルデータの位置と向きが、 リスナーの位置と向きとして設定されます。 hsidに-1を渡した場合には、 視点の位置と向きが リスナーの位置と向きとして設定されます。 一回呼び出せばずっとhsidの更新情報を リスナーに反映させるわけではありません。 情報の更新が必要になるたびに、 呼び出してください。 |
1. [IN] int : hsid モデルデータを識別する番号 -1のときは視点をリスナーとします。 |
ver5.0.0.1 |
E3DSet3DSoundMovement | サウンド |
3Dサウンドの位置と速度を設定します。 E3DLoadSoundのuse3dflagに1を指定して 読み込んだサウンドのみに対し有効です。 |
1. [IN] int : soundid 3Dサウンドを識別する番号 2. [IN] D3DXVECTOR3 : pos 3Dサウンドの位置を指定します。 3. [IN] D3DXVECTOR3 : v 3Dサウンドの速度を指定します。 |
ver5.0.0.1 |
E3DCreateNaviLine | ナビライン | ナビラインを作成します。 ナビラインとは、複数のナビポイントからなる、双方向リンクリストのことです。 ナビポイントとは、キャラクターの自動走行時に、位置を決める基準となるポイントのことです。 この関数が成功すると、 ナビラインを識別するためのID、nlidが得られます。 失敗するとnlidに負の値が代入されます。 |
1. [OUT] int* : nlidptr 作成したナビラインを識別するためのIDが代入されます。 |
ver5.0.0.1 |
E3DDestroyNaviLine | ナビライン | ナビラインを削除します。 | 1. [IN] int : nlid 削除するラインを識別するID |
ver5.0.0.1 |
E3DAddNaviPoint | ナビライン | ナビラインにナビポイントを追加します。 成功すると新しいナビポイントを識別するためのID、npid が得られます。 befnpidで指定したポイントの次の位置に 追加できる他、 先頭位置や最後の位置にも追加することができます。 ナビポイントの編集には、 GViewer.exeを使うと便利です。 (おちゃっこLABでDL可能です。) |
1. [IN] int : nlid ラインを識別するID 2. [IN] int : befnpid befnpidで指定したポイントの次の位置に、 新しいポイントを追加します。 befnpidに-1を指定すると ナビラインの最後に追加され、 befnpidに-2を指定すると ナビラインの先頭に追加されます。 3. [OUT] int* : npidptr 新しく追加したナビポイントのIDが代入されます。 |
ver5.0.0.1 |
E3DRemoveNaviPoint | ナビライン | ナビラインからナビポイントを削除します。 | 1. [IN] int : nlid ラインを識別するID 2. [IN] int : npid 削除したいナビポイントのID |
ver5.0.0.1 |
E3DGetNaviPointPos | ナビライン | ナビポイントの座標を取得します。 | 1. [IN] int : nlid ラインを識別するID 2. [IN] int : npid ナビポイントを識別するID 3. [OUT] D3DXVECTOR3* : posptr ナビポイントの座標が代入されます。 |
ver5.0.0.1 |
E3DSetNaviPointPos | ナビライン | ナビポイントの座標をセットします。 この座標をもとに、 キャラクターが移動することになります。 |
1. [IN] int : nlid ラインを識別するID 2. [IN] int : npid ナビポイントを識別するID 3. [IN] D3DXVECTOR3 : pos ナビポイントの座標を (pos.x, pos.y, pos.z)に設定します。 |
ver5.0.0.1 |
E3DGetNaviPointOwnerID | ナビライン | ナビポイントのOwnerIDを取得します。 | 1. [IN] int : nlid ラインを識別するID 2. [IN] int : npid ナビポイントを識別するID 3. [OUT] int* : OwnerIDptr ナビポイントのOwnerIDが代入されます。 |
ver5.0.0.1 |
E3DSetNaviPointOwnerID | ナビライン | ナビポイントのOwnerIDをセットします。 ナビポイントに 排他的な所有権を設定したいときなどに、 自由に使用してください。 |
1. [IN] int : nlid ラインを識別するID 2. [IN] int : npid ナビポイントを識別するID 3. [IN] int : OwnerID ナビポイントのOwnerIDに設定します。 |
ver5.0.0.1 |
E3DGetNextNaviPoint | ナビライン | npidで指定したナビポイントの一つ後のナビポイントのIDを取得します。 ナビラインはナビポイントを双方向リストで格納しています。 一つ後のナビポイントが存在しない場合は、nextid には負の値が代入されます。 |
1. [IN] int : nlid ラインを識別するID 2. [IN] int : npid ナビポイントを識別するID 3. [OUT] int* : nextidptr 一つ後のナビポイントのIDが代入されます。 npid に-1が指定されている場合は、 *nextidptrには、先頭のナビポイントのIDが代入されます |
ver5.0.0.1 |
E3DGetPrevNaviPoint | ナビライン | npidで指定したナビポイントの一つ前のナビポイントのIDを取得します。 ナビラインはナビポイントを双方向リストで格納しています。 一つ前のナビポイントが存在しない場合は、previd には負の値が代入されます。 |
1. [IN] int : nlid ラインを識別するID 2. [IN] int : npid ナビポイントを識別するID 3. [OUT] int* : previdptr 一つ後のナビポイントのIDが代入されます。 |
ver5.0.0.1 |
E3DGetNearestNaviPoint | ナビライン | 指定した座標に一番近いナビポイントのIDを取得します。 一番近いナビポイントの前後のポイントの IDも取得できます。 |
1. [IN] int : nlid ラインを識別するID 2. [IN] D3DXVECTOR3 : pos (pos.x, pos.y, pos.z)に一番近いナビポイントを探します。 3. [OUT] int* : nearidptr 一番近いナビポイントのIDが代入されます。 4. [OUT] int* : previdptr 一番近いナビポイントの前のポイントのIDが代入されます。 5. [OUT] int* : nextidptr 一番近いナビポイントの次のポイントのIDが代入されます。 |
ver5.0.0.1 |
E3DFillUpNaviLine | ナビライン | ナビポイントとナビポイントの間を、指定した分割数で補間します。 Catmull-Romの公式で補間します。 |
1. [IN] int : nlid ラインを識別するID 2. [IN] int : div 何分割して補間するかを指定します。 3. [IN] int : flag flagに1を指定すると、 チェインの順番にナビポイントのIDをふり直します。 |
ver5.0.0.1 |
E3DSetNaviLineOnGround | ナビライン | ナビライン中の全てのナビポイントの座標を、地面の高さに設定します。 |
1. [IN] int : nlid ラインを識別するID 2. [IN] int : grounhdis 地面を識別するhsid 3. [IN] float : mapmaxy 地面データのY座標の最大値を指定します。 4. [IN] float : mapminy 地面データのY座標の最小値を指定します。 実際の最小値より、少し小さな値を入れてください。 |
ver5.0.0.1 |
E3DControlByNaviLine | ナビライン | ナビラインのデータを元に、キャラクターの位置と向きを自動的に設定するための関数です。 引数のモードなどのパラメータを 色々変化させることで、 一つのナビラインから複数の(数え切れないくらいの)走行パターンを得ることが可能です。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : nlid ラインを識別するID 3. [IN] int : ctrlmode ビットの和で、モードを指定します。 ビット1が立っていた場合には、 位置を優先した制御が行われます。 引数maxdist, dirstep は無視されます。 出来るだけナビポイントの近くを通るようになります。 ビット1が立っていない場合には、 向きを優先した制御が行われます。 dirstepで指定した角度より大きな角度では移動できなくなります。 ただし、そのままだとキャラクターが ナビラインから遠くに離れすぎてしまうので引数maxdistでナビラインからどのくらい離れても良いかを指定します。 maxdistよりも遠くに離れた場合には、 dirstepで指定したよりも大きな角度でナビラインに近づくように修正されます。 なので、dirstepに小さな値を指定するとジグザグにナビラインをたどるようになります。 ビット4が立っていた場合には、 向きの設定はXZ平面のみで行われます。 例えば、ctrlmode に5を指定した場合は、 位置を優先した制御で、XZ平面での向き設定をする ということになります。 4. [IN] int : roundflag ナビラインの最後のナビポイントに移動した後、 ナビラインの最初のナビポイントの位置を目指すかどうかを示します。 1を指定すると円形のナビラインの場合は ずっとぐるぐる回ることになります。 5. [IN] int : reverseflag 1を指定すると、 ナビラインのポイントを逆順にたどるようになります。 6. [IN] float : maxdist ナビラインから、どのくらいまで離れても良いかを指定します。 ctrlmodeのビット1が立っていない場合のみ有効です。 7. [IN] float : posstep キャラクターを一度にどれくらいの距離を移動させるかを 指定します。 ただし、ナビポイント付近では、 posstepより小さな距離しか移動させないことがあります。 8. [IN] float : dirstep 一度の移動で、最大何度まで回転できるかを 指定します。 回転角度の値を渡してください。 9. [OUT] D3DXVECTOR3* : newposptr 移動後の座標が代入されます。 10. [OUT] D3DXQUATERNION* : newqptr 移動後の姿勢を表すクォータニオンが代入されます。 11. [IN] [OUT] int* : targetpointidptr 現在目指しているナビポイントのIDを入れます。 移動後は次に目指すべきナビポイントのIDが代入されます。 ですので、一番最初の呼び出し時のみ自分でtargetpoinidを指定すればあとは同じ変数を渡すだけで、 自動的に目指すべきポイントのIDが代入されていくことになります。 targetpointidに存在しないナビポイントのIDを入れた場合は、 (例えば-1など) 自動的に目指すべきナビポイントを決定します。 ですが、この場合、 向きを重視したモードのときに 動きがぎこちなくなることがあるので、 なるべく-1などは使わない方が良いです。 |
ver5.0.0.1 |
E3DSetDirQ | モデル向き | 姿勢をクォータニオンで指定して設定します。 E3DControlByNaviLineや、 E3DGetDirQ で得た姿勢データを 設定するときに使用してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] D3DXQUATERNION : q 姿勢を表すクォータニオンを 指定してください。 |
ver5.0.0.1 |
E3DGetDirQ | モデル向き | 姿勢をクォータニオンの形式で取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [OUT] D3DXQUATERNION* : qptr 姿勢を表すクォータニオンが代入されます。 |
ver5.0.0.1 |
E3DSetWallOnGround | 壁 | 壁データを地面の高さに配置します。 | 1. [IN] int : whsid 壁の形状データを識別するID 2. [IN] int : ghsid 地面の形状データを識別するID 3. [IN] float : mapmaxy 地面データの最大の高さ 4. [IN] float : mapminy 地面データの最低の高さ 5. [IN] float : wheight 壁の高さ。 |
ver5.0.0.1 |
E3DCreateNaviPointClearFlag | ナビライン | キャラクターがnlidで識別されるナビライン上の点を、どれだけ進んだかということを格納するためのデータを作成します。 hsidで識別されるモデルのデータとして 作成します。 このデータはレースの順位を決定するときなどに役に立ちます。 この命令は、 E3DInitNaviPointClearFlag, E3DSetNaviPointClearFlag E3DGetOrder の命令を呼び出す前に呼び出されていないといけません。 複数回続けて呼び出してはいけません。 作り直したい場合は、必ず、 E3DDestroyNaviPointClearFlag を呼び出してから E3DCreateNaviPointClearFlag を呼び出してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : nlid ナビラインを識別するID 3. [IN] int : roundnum ナビライン上を最大何周するのかを指定します。 |
ver5.0.0.1 |
E3DDestroyNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータを破棄します。 | 1. [IN] int : hsid 形状データを識別するID |
ver5.0.0.1 |
E3DInitNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータを初期化します。 |
1. [IN] int : hsid 形状データを識別するID |
ver5.0.0.1 |
E3DSetNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータに、現在どれだけのナビポイントを通過したかをセットします。 キャラクターとナビポイントとの距離を元に、 データをセットします。 この関数を使う場合は、 毎フレームこの関数を呼び出す必要があります。 この関数でセットしたデータを元に、 E3DGetOrderが順位を決定します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] D3DXVECTOR3 : pos キャラクターの位置を指定します。 3. [IN] float : maxdist ナビポイントとの距離がmaxdistより近かった場合、 そのポイントをクリアー(通過)したと見なします。 4. [OUT] int* : npidptr 現在クリアーしているポイントの内、 一番前方のポイントのIDが代入されます。 5. [OUT] int* : roundptr キャラクターが何週目かが代入されます。 6. [OUT] int* : distptr npidptrに代入されたIDのポイントから どれだけ距離が離れているかが代入されます。 |
ver5.0.0.1 |
E3DGetOrder | ナビライン | E3DSetNaviPointClearFlagでセットされたデータを元に、順位情報を取得するための関数です。 |
1. [IN] int* : hsidptr 順位を調べたい形状データを識別するIDの配列を 指定します。 arraylengの長さの配列でなくてはなりません。 例えば、 hsidptr = (int*)malloc( sizeof(int) * arrayleng ); という命令で、作成したデータを渡してください。 2. [IN] int : arrayleng 配列の長さを指定します。 hsidptr, orderptr, clearnoptrは、 全て、arraylengの長さの配列でなくてはなりません。 3. [OUT] int* : orderptr 順位順に、hsidが代入されます。 *orderptr には、1位のhsidの番号が、 *(orderptr + 1) には、2位のhsidの番号が代入されます。 4. [OUT] int* : clearnoptr 順位順に、クリアーしたポイントの数が代入されます。 *clearnoptr には、 1位のモデルがクリアーしたポイント数が、 *(clearnoptr + 1) には、 2位のモデルがクリアーしたポイント数が 代入されます。 |
ver5.0.0.1 |
E3DDestroyAllBillboard | ビルボード | 全てのビルボードを破棄します。 | なし | ver5.0.0.1 |
E3DSetValidFlag | モデル情報 | RokDeBone2の ”このオブジェクトを無効にする”機能を、プログラムで行えるようにしました。 無効にしたパーツは、描画やあたり判定の際に無視されるようになります。 ジョイントに対してE3DSetValidFlagをした場合は、 E3DJointRemakeを呼び出してください。 |
1. [IN] int : hsid 形状データを識別するID -1を指定すると、ビルボードのフラグを設定できます。 2. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツの有効無効をセットできます。 3. [IN] int : flag flagに0を指定すると指定パーツが無効になります。 flagに1を指定すると有効になります。 |
ver5.0.0.1 |
E3DSetBillboardDiffuse | モデル情報 | ビルボードのdiffuse色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 diffuseだけかえても、Specular, Ambientを変えないと意図した色にはならないと思いますので注意してください。 (E3DSetBillboardSpecular, E3DSetBillboardAmbient, E3DSetBillboardEmissive, E3DSetBillboardSpecularPowerもご覧ください。) 頂点単位で色の設定が出来ます。 |
1. [IN] int : bbid ビルボードを識別するID。 -1を指定すると全てのビルボードの色を設定できます。 2. [IN] E3DCOLOR4UC : col 指定したい色を(col.r, col.g, col.b)で指定します。 setflagに乗算を指定した場合は、 各成分に、r/255, g/255, b/255を乗算します。 col.aは無視されます。 3. [IN] int : setflag setflagが0のときは、 パーツの色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 4. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合には bbidで指定したビルボード全体の色の設定をします。 |
ver5.0.0.1 |
E3DSetBillboardSpecular | モデル情報 | ビルボードのspecular色をセットする関数です。 指定した色を そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で表示されている色に対して 乗算、加算、減算します。 頂点単位で色の設定が出来ます。 |
1. [IN] int : bbid ビルボードを識別するID -1を指定すると全てのビルボードの色を設定できます。 2. [IN] E3DCOLOR4UC : col 指定したい色を(col.r, col.g, col.b)で指定します。 setflagに乗算を指定した場合は、 各成分に、r/255, g/255, b/255を乗算します。 col.aは無視されます。 3. [IN] int : setflag setflagが0のときは、 パーツの色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 4. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合には bbidで指定したビルボード全体の色の設定をします。 |
ver5.0.0.1 |
E3DSetBillboardAmbient | モデル情報 | ビルボードのambient色をセットする関数です。 指定した色を そのまま設定、乗算して設定、加算して設定、 減算して設定の4種類出来ます。 その時点で表示されている色に対して、 乗算、加算、減算します。 頂点単位で色の設定が出来ます。 |
1. [IN] int : bbid ビルボードを識別するID -1を指定すると全てのビルボードの色を設定できます。 2. [IN] E3DCOLOR4UC : col 指定したい色を(col.r, col.g, col.b)で指定します。 setflagに乗算を指定した場合は、 各成分に、r/255, g/255, b/255を乗算します。 col.aは無視されます。 3. [IN] int : setflag setflagが0のときは、 パーツの色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 4. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合には bbidで指定したビルボード全体の色の設定をします。 |
ver5.0.0.1 |
E3DSetBlendingMode | 描画パラメータ | ビルボードとスプライトの半透明モードを指定します。 加算モードと、頂点アルファ値による半透明モードと 頂点アルファを考慮した加算モードの3つから選べます。 ver5.0.2.2でモードが4つ増えました。 ver5.1.0.1でオーバーレイ風、覆い焼き風モードが増えました。 sigモデルデータの半透明モードの設定は E3DSetMaterialBlendingModeをお使いください。 |
1. [IN] int : hsid 形状データを識別するID -1を指定するとビルボードのモードを設定できます。 -2を指定するとスプライトの設定が出来ます。 2. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した ビルボードidを渡してください。 hsidに-2を指定した場合は、 E3DCreateSpriteで取得した スプライトのidを渡してください。 partnoに-1を渡すと、 全てのパーツにモードをセットできます。 3. [IN] int : blendmode 0を指定すると、 頂点アルファ値による半透明モードになります。 1を指定すると アッドモードになります。 2を指定すると 頂点アルファを考慮したアッドモードになります。 103を指定すると乗算モード。 104を指定すると減算モード。 105を指定するとスクリーンモード。 106を指定するとネガ反転モードになります。 107を指定するとオーバーレイ風合成モード。 108を指定すると覆い焼き風モードになります。 |
ver5.0.0.1 ver5.0.2.2で拡張 ver5.1.0.1で拡張 |
E3DSetRenderState | 描画パラメータ | パーツごとにRenderStateを設定できます。 描画の度に呼ぶ必要はありません。 一度呼べば描画時に自動的に設定されます。 上級者向けの関数です。 詳しくは、DirectXのヘルプの SetRenderStateをご覧ください。 D3DRS_ALPHABLENDENABLE は、E3DRenderのwithalpha引数を元に、 自動的に呼び出すようにしているので、 このタイプは指定しても反映されません。 また、オリジナルの頂点計算を行っているため設定しても、効果のないものも多くあります。 |
1. [IN] int : hsid 形状データを識別するID -1を指定するとビルボードのステートを設定できます。 2. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した ビルボードidを渡してください。 partnoに-1を渡すと 全てのパーツにステートをセットできます。 3. [IN] int : statetype 設定するタイプを指定してください。 4. [IN] int : value 設定する値を指定してください。 |
ver5.0.0.1 |
E3DSetScale | モデル情報 | パーツ単位で形状を拡大縮小できます。 特殊効果用を想定していますので、 地面データには使用できません。 倍率は形状データ読み込み時の大きさに対する比率です。 その時点で表示されている大きさに対する比率ではないので注意してください。 |
1. [IN] int : hsid 形状データを識別するID -1を指定すると、ビルボードのスケールを設定できます。 2. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した ビルボードidを渡してください。 partnoに-1を渡すと 全てのパーツにスケールをセットできます。 3. [IN] D3DXVECTOR3 : scale X,Y,Zのそれぞれの倍率を指定します。 それぞれ、 scale.x、 scale.y、 scale.z 倍されます。 等倍は1.0。 4. [IN] int : centerflag 拡大縮小する際の中心を指定します。 0を指定すると hsidで指定したモデル全体の中心を拡大の中心とします。 1を指定すると それぞれのパーツの中心を拡大の中心とします。 2を指定すると 原点を拡大の中心とします。 |
ver5.0.0.1 |
E3DGetScreenPos3FVec | モデル情報 | 任意の3D座標からスクリーン(2D)座標を取得する関数。 ラインの点の位置やボーンの位置に スプライトを表示したりできます。 #表示オブジェクトの頂点や パーツの中心の2D座標を取得する場合は、 E3DGetScreenPos3Fをご利用ください。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] D3DXVECTOR3 : pos3d 3D座標を指定してください。 3. [OUT] D3DXVECTOR3* : scposptr 変換後の2D座標が(scposptr->x, scposptr->y)に代入されます。 奥行き情報Zはscposptr->zに代入されます。 2D座標がスクリーンの大きさの内側にあるかどうかは、 ユーザーさんがチェックしてください。 Zの値が0.0から1.0の間にないときは視野外を意味します。 |
ver5.0.0.1 |
E3DCreateQ | 算術 | クォータニオンを作成し、操作用のid を取得します。 クォータニオンの各操作には、 この関数で取得した qidを使用します。 クォータニオンを知らない方は とりあえず、 姿勢情報 (回転情報)を格納できる 便利なもの とくらいに考えておいてください。 モーションポイントや、モデルなどに クォータニオンをセットすることにより、 任意の姿勢を持たせることが出来ます。 作成方法は工夫してみましたが それほど高速ではありません。 この関数はメインループの外で、 あらかじめ呼んでおくことが、 望ましいです。 |
1. [OUT] int* : qidptr 新しいクォータニオンを作成し、 そのクォータニオンを 一意に識別する番号を qid に代入します。 クォータニオン操作関数に この番号を渡して使用してください。 |
ver5.0.0.1 |
E3DDestroyQ | 算術 | クォータニオンを削除します。 この関数に渡したqidは使用できなくなります。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver5.0.0.1 |
E3DInitQ | 算術 | クォータニオンを初期化します。 姿勢情報が初期化されます。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver5.0.0.1 |
E3DSetQAxisAndDeg | 算術 | クォータニオンを指定した軸に関して指定した角度だけ回転した姿勢をセットします。 既にqidにセットしてある姿勢情報は 上書きされます(無視されます)。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] D3DXVECTOR3 : axis 回転の軸のベクトルを、 (axis.x, axis.y, axis.z)に指定します。 軸のベクトルは、内部で正規化されます。 3. [IN] float : deg 指定した軸に関して deg度だけ回転した姿勢をセットします。 |
ver5.0.0.1 |
E3DGetQAxisAndDeg | 算術 | クォータニオンにセットされている姿勢情報を解析します。 回転軸と回転角度が得られます。 オイラー角を取得したい場合は E3DQtoEulerをご使用ください。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [OUT] D3DXVECTOR3* : axisptr 回転の軸のベクトルを代入します。 3. [OUT] float* : degptr 回転角度を代入します。 |
ver5.0.0.1 |
E3DRotateQX | 算術 | クォータニオンの姿勢情報を、X軸に関して回転します。 既にqidにセットしてある姿勢情報に対して さらにX軸回転することになります。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] float : deg X軸に関してdeg度だけ回転します。 |
ver5.0.0.1 |
E3DRotateQY | 算術 | クォータニオンの姿勢情報を、Y軸に関して回転します。 既にqidにセットしてある姿勢情報に対して さらにY軸回転することになります。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] float : deg Y軸に関してdeg度だけ回転します。 |
ver5.0.0.1 |
E3DRotateQZ | 算術 | クォータニオンの姿勢情報を、Z軸に関して回転します。 既にqidにセットしてある姿勢情報に対して さらにZ軸回転することになります。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] float : deg Z軸に関してdeg度だけ回転します。 |
ver5.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] int : resqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidのクォータニオンに結果が代入されます。 2. [IN] int : befqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 3. [IN] int : aftqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 befqidの回転の後にaftqidの回転をした結果を resqidで識別されるクォータニオンに代入します。 |
ver5.0.0.1 |
E3DNormalizeQ | 算術 | クォータニオンを正規化します。 様々なクォータニオンの操作を とてつもない回数繰り返していると、 計算誤差などで クォータニオンの情報がおかしくなることがあります。 例えば、E3DRotateQXをメインループで 延々と繰り返す場合などに ひょっとしたら、不具合が出るかもしれません。 そんなときは、 ある程度の回数ごとに この関数を呼んでください。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver5.0.0.1 |
E3DCopyQ | 算術 | srcqidで識別されるクォータニオンの情報を、dstqidで識別されるクォータニオンにコピーします。 |
1. [IN] int : dstqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] int : srcqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver5.0.0.1 |
E3DGetBoneNoByName | モデル情報 | 指定した名前を持つボーンを識別するidを取得します。 該当するボーンが見つからなかった場合は、 bonenoに-1が代入されます。 ボーン以外の名前を指定した場合も、 bonenoに-1が代入されます。 複数のパーツやボーンに 同じ名前があった場合、 一番最初に見つかった物のidだけしか 取得できません。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] char* : bonename ボーンの名前を渡してください。 3. [OUT] int* : bonenoptr ボーンを識別するIDが代入されます。 |
ver5.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] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] int : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] int : prevmpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 -1を指定すると一番小さなフレーム番号を持つ モーションポイントのidがmpidに代入されます。 5. [OUT] int* : mpidptr prevmpidの次に大きいフレーム番号を持つ モーションポイントのidが代入されます。 |
ver5.0.0.1 |
E3DGetMPInfo | モーション | mpinfoptrで指定した構造体に、 情報が代入されます。 構造体MPINFO2はusercoef.hで定義されています。 mpinfo.mpidはモーションポイントのID mpinfo.qidはモーションポイントのクォータニオン情報 mpinfo.traはモーションポイントの移動情報 mpinfo.framenoはモーションポイントのフレーム番号 mpfino.interpolationはクォータニオンの補間方法。 mpinfo.scaleはモーションポイントの拡大情報。 mpinfo.userint1はユーザーデータ。 mpinfo.qidには、 E3DCreateQで取得したqidを、 この関数の呼び出し前に、セットしておく必要があります。 mpinfo.qidに格納されているqidで 識別されるクォータニオンに、 モーションポイントの姿勢情報が代入されます。 mpinfo.mpidにもあらかじめ値をセットしておいてください。 mpinfo.interpolationの 補間計算方法の情報は、 mpidで識別されるモーションポイントと その次に大きいフレーム番号を持つモーションポイントの間の補間計算方法を示しています。 0の時は球面線形補間 1の時はスプライン補間 となります。 現バージョンでは、 スプライン補間は大きな角度の補間時には 使用できません。 (望ましい結果が得られません) ですので、 急激に変化することがあるかもしれない モーションポイント間の補間計算には 球面線形補間を使用することを、 おすすめします。 |
・引数 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] int : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN, OUT] MPINFO2* : mpinfoptr モーションポイントの情報を格納する配列。 mpinfoptr->qidだけは、呼び出し前に あらかじめ設定しておく必要があります。 mpinfoptr->qidで識別されるクォータニオンに モーションポイントの姿勢情報が 代入されることになります。 |
ver5.0.0.1 |
E3DSetMPInfo | モーション | mpidで識別されるモーションポイントに情報をセットします。 mipptrにはMPINFO2構造体へのポインタを指定してください。 mpinfo.mpidとmpinfo.qidには必ずあらかじめ値をセットしておいてください。 flagptrには int flag[MPI2_MAX];で宣言した配列のポインタを渡してください。 MPI2_で始まる定数はusercoef.hで定義されています。 mpinfoにセットされている情報を mpidで識別されるモーションポイントに 設定します。 mpinfoのどの成分に 何の情報をセットすれば良いかは E3DGetMPInfoをご覧ください。 flagptrは部分的に情報をセットできるようにするために使用します。 flag[ MPI2_QUA ]が1の場合は、 mpinfo.qidのクォータニオン情報を モーションポイントにセットします。 flag[ MPI2_TRA ]が1の場合は、 mpinfo.traの移動量情報を モーションポイントにセットします。 以下同様に、 flag[MPI2_QUA] 〜flag[MPI2_USERINT1] までに、セットしたい項目に1を、 セットしたくない項目に0を指定してください。 モーションポイントに情報をセットしただけではモデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは とても計算量が多く実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけE3DFillUpMotionするように してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] int : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] MPINFO2* : mpinfoptr モーションポイントの情報を格納する配列。 5. [IN] int* : flagptr mpinfoのどの成分を有効にするのかを mpinfoflagの各成分で指定します。 |
ver5.0.0.1 |
E3DExistMP | モーション | framenoで指定したフレーム番号にモーションポイントがあるかどうかを調べます。 見つかった場合は mpidにモーションポイントのidが代入され、 無かった場合は-1が代入されます。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] int : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] int : frameno モーションポイントがあるかどうか、 調べたいフレーム番号を指定します。 5. [OUT] int* : mpid モーションポイントを識別するID。 framenoが示すフレーム番号に モーションポイントがあった場合は、 そのモーションポイントのidが代入されます。 無かった場合は-1が代入されます。 |
ver5.0.0.1 |
E3DGetMotionFrameLength | モーション | motidで識別されるモーションのフレーム数を取得します。 気を付けて欲しいのは フレーム番号は0から始まるので、 最大のフレーム番号は leng - 1 だということです。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [OUT] int* : leng モーションのフレーム数が代入されます。 |
ver5.0.0.1 |
E3DSetMotionFrameLength | モーション | モーションのフレーム数をframelengに変更します。 framelengが変更前のフレーム数より小さかった場合は、 frameleng - 1より大きなフレーム番号を持つ モーションポイントは削除されます。 ポーズの情報も削除されます。 再構築する場合には E3DFillUpMotionを呼んでください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] int : frameleng モーションのフレーム数を指定します。 |
ver5.0.0.1 |
E3DAddMP | モーション | mpinfoで指定した情報を持つモーションポイントを新たに作成し、作成したモーションポイントを識別するidを取得します。 mpinfoptrにはMPINFO2構造体へのポインタを渡してください。 mpinfoのmpid以外の成分にあらかじめ値をセットして呼び出してください。 mpinfoの、どの成分に、 何の情報をセットすれば良いかは E3DGetMPInfoをご覧ください。 mpinfo[MPI2_FRAMENO]で指定したフレーム番号に、 既に、モーションポイントが存在する場合は、エラーになりますので、 注意してください。 (呼び出し前にE3DExistMPで、 チェックすると確実です。) 新しいモーションポイントを識別するIDは mpinfoptr->mpidに代入されます。 モーションポイントに情報をセットしただけではモデルのポーズに反映されません。 ポーズに反映させるためには E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは とても計算量が多く実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから まとめて一回だけE3DFillUpMotionするように してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] int : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN, OUT] MPINFO2* : mpinfoptr モーションポイントの情報を格納する配列。 |
ver5.0.0.1 |
E3DDeleteMP | モーション | mpidで識別されるモーションポイントを削除します。 この関数に渡したmpidは 以後、使えなくなります。 モーションポイントの情報を更新しただけではモデルのポーズに反映されません。 ポーズに反映させるためには E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは とても計算量が多く実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから まとめて一回だけE3DFillUpMotionするように してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmotidを指定してください。 3. [IN] int : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] int : mpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 |
ver5.0.0.1 |
E3DFillUpMotion | モーション | モーションを指定したフレーム番号分だけ補間計算します。 この計算の結果、 モデルのポーズにモーションポイントの情報が反映されるようになります。 bonenoで指定したボーンと その全ての子供ボーンの計算が行われます。 そのため、 変更したボーンの内で 一番親のボーンの番号で 1回だけこの関数を呼び出せば 良いことになります。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmotidを指定してください。 3. [IN] int : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 bonenoで指定したボーンと その子供ボーン全てのポーズを計算します。 boneno に -1を指定した場合は、 全てのボーンの計算が行われます。 ですが、 bonenoを指定した方が 計算量が少なくなります。 4. [IN] int : startframe 5. [IN] int : endframe フレーム番号が、 startframeから、endframeまでの間の モデルのポーズを計算します。 startframeとendframeには、 モーションポイントが存在しなくても、 計算可能です。 endframeに-1を指定した場合は、 startrframeから、最後のフレームまで 計算されます。 |
ver5.0.0.1 |
E3DCopyMotionFrame | モーション | srcmotidで識別されるモーションのフレーム番号srcframenoの全てのモーションポイントの情報を、dstmotidで識別されるモーションのフレーム番号dstframenoのモーションポイントへコピーします。 dstframenoにモーションポイントが無い場合は作成されます。 srcframenoにモーションポイントが無い場合は、 計算で求めてdstframenoにコピーします。 この場合、計算時間が余分にかかります。 モーションポイントに情報をセットしただけではモデルのポーズに反映されません。 ポーズに反映させるためには E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは とても計算量が多く実行時間が長いので なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから まとめて一回だけE3DFillUpMotionするように してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : srcmotid コピー元のモーションを識別するID E3DAddMotionで取得したmotidを指定してください。 3. [IN] int : srcframeno コピー元のフレーム番号 4. [IN] int : dstmotid コピー先のモーションを識別するID E3DAddMotionで取得したmotidを指定してください。 5. [IN] int : dstframeno コピー先のフレーム番号 |
ver5.0.0.1 |
E3DGetDirQ2 | モデル向き | E3DGetDirQをqidで操作できるようにしたものです。 qidで指定したクォータニオンに モデルデータの姿勢情報が 格納されます。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN, OUT] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver5.0.0.1 |
E3DSetDirQ2 | モデル向き | E3DSetDirQをqidで操作できるようにしたものです。 qidで識別されるクォータニオンの 姿勢情報を モデルデータにセットします。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver5.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 ずつ、内分して、近づきます。 既知のバグとして分割数が小さいと(1のとき)向きが動かなくなるという不具合があります。 そのうち作り直す予定です。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに 指定した方向を向くための情報が 格納されます。 2. [IN] D3DXVECTOR3 : vec 向きたい向きのベクトルを指定してください。 位置ではなくて向きを指定してください。 3. [IN] D3DXVECTOR3 : basevec 初期状態の向きを指定してください。 4. [IN] int : upflag 上方向の制御モードを指定してください。 5. [IN] int : divnum 内分する割合を指定してください。 大きな値をいれるほど、 細かく動きます。 |
ver5.0.0.1 |
E3DMultQVec | 算術 | (befvecx, befvecy, befvecz)というベクトルに対して、qidで識別されるクォータニオンによる回転をした後のベクトルを、(aftvecx,
aftvecy, aftvecz)に代入します。 例えば、初期状態で-Z方向を向いている モデルの場合、 qidにE3DGetDirQ2呼び出しに使用した qidを渡し basevecに(0, 0, -1)を渡せば、 aftvecに現在キャラクターが向いている向きが代入されます。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの 回転変換をします。 2. [IN] D3DXVECTOR3 : befvec 回転前のベクトルを指定してください。 3. [OUT] D3DXVECTOR3* : aftvecptr クォータニオンでの回転後のベクトが代入されます。 |
ver5.0.0.1 |
E3DTwistQ | 算術 | クォータニオンにねじりを加えます。 basevecにはE3DLookAtQで説明したのと 同じ、初期状態の向きを指定してください。 ねじりの角度は、初期状態からの角度ではなく現在の姿勢に追加したい分だけの ねじりの角度を指定してください。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 指定した方向を向くための情報が、 格納されます。 2. [IN] float : twistdeg twistdeg 度だけ、ねじりを加えます。 3. [IN] D3DXVECTOR3 : basevec 初期状態の向きを指定してください。 E3DLookAtQで指定したのと同じbasevecを指定してください。 |
ver5.0.0.1 |
E3DInitTwistQ | 算術 | E3DTwistQで与えたねじれを初期化します。 basevecにはE3DLookAtQで説明したのと 同じ、初期状態の向きを指定してください。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの ねじれを初期化します。 2. [IN] D3DXVECTOR3 : basevec 初期状態の向きを指定してください。 E3DLookAtQで指定したのと同じbasevecを指定してください。 |
ver5.0.0.1 |
E3DGetTwistQ | 算術 | E3DTwistQで与えたねじれの角度の合計を取得します。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの ねじれを取得します。 2. [OUT] float* : twistptr ねじれ角度の合計の値を 代入します。 |
ver5.0.0.1 |
E3DRotateQLocalX | 算術 | クォータニオンをローカルなX軸に関して回転します。 現在の姿勢に対して更に回転します。 E3DRotateQXと違うのは、 姿勢変換を行う前のX軸に関して 回転できる点です。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] float : deg deg 度だけ、回転を加えます。 |
ver5.0.0.1 |
E3DRotateQLocalY | 算術 | クォータニオンをローカルなY軸に関して回転します。 現在の姿勢に対して更に回転します。 E3DRotateQYと違うのは、 姿勢変換を行う前のY軸に関して 回転できる点です。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] float : deg deg 度だけ、回転を加えます。 |
ver5.0.0.1 |
E3DRotateQLocalZ | 算術 | クォータニオンをローカルなZ軸に関して回転します。 現在の姿勢に対して更に回転します。 E3DRotateQZと違うのは、 姿勢変換を行う前のZ軸に関して 回転できる点です。 |
1. [IN] int : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] float : deg deg 度だけ、回転を加えます。 |
ver5.0.0.1 |
E3DGetBonePos | モデル情報 | ボーンの位置情報を取得します。 poskind == 0のときはローカル座標(ボーン変形なし) poskind == 1のときはグローバル座標 poskind == 2のときはローカル座標(ボーン変形あり) が取得できます。 bonenoには、E3DGetBoneNoByName で取得した番号を指定してください。 マルチレイヤーモーションを使用する場合は、 この命令は使えません。 E3DGetCurrentBonePosをお使いください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 3. [IN] int : poskind ローカル座標と、グローバル座標の どちらを取得するかを指定します。 4. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmotidを指定してください。 5. [IN] int : frameno モーションのフレーム番号を指定してください。 E3DSetNewPose呼び出し時に現在のフレーム番号が取得できるので 参考にしてください。 6. [OUT] D3DXVECTOR3* : pos ボーンの座標が代入されます。 |
ver5.0.0.1 |
E3DCreateLine | ライン | 線を作成してlineidを取得します。 lineidは線オブジェクトを一意に識別するための番号です。 E3DCreateLine、E3DDestroyLine E3DSetLineColor、E3DAddPoint2Line E3DDeletePointOfLine、E3DSetPointPosOfLine E3DGetPointPosOfLine E3DGetNextPointOfLine E3DGetPrevPointOfLine に渡すlineidは、この関数で取得したlineidを 使用してください。 pointposには、 D3DXVECTOR3 pointpos[ pointnum ]; で確保したデータを渡してください。 pointnumには、点の数を入れてください。 点の数の最大値は65535です。 pointnumが2より小さい場合は、エラーになります。 pointpos[点の番号].xにX座標、 pointpos[点の番号].yにY座標、 pointpos[点の番号].z にZ座標 を入れて、初期化しておいてください。 作成した線は、 E3DRenderで描画できます。 hsidの代わりにlineidを指定してください。 |
1. [IN] D3DXVECTOR3* : pointpos 線を構成する点の座標を指定してください。 メモリの確保の仕方、値のセットの仕方は、 左の記述をご覧ください。 2. [IN] int : pointnum 初期化する点の数を指定してください。 pointposのデータを確保する際に使った点の数を渡してください。 3. [IN] int : maxpointnum Lineは、E3DAddPoint2Line命令で、 点の数を増やすことが可能です。 最大何個まで、点の数を増やせるかを指定してください。 (点の数の合計です。) ビデオメモリは、pointnumではなくて、 maxpointnumでアロケートされます。 4. [IN] int : linekind 線の種類を指定します。 LINELISTの場合は2を、 LINESTRIPの場合は3を指定してください。 LINELIST, LISTSTRIPについての説明は、 線の種類の説明をご覧ください。 5. [OUT] int* : lineid 作成した線を識別する番号が代入されます。 |
ver5.0.0.1 |
E3DDestroyLine | ライン | E3DCreateLine で作成した線を削除します。 削除したlineidは 以降、どの命令にも使わないでください。 |
1. [IN] int : lineid 削除する線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 |
ver5.0.0.1 |
E3DSetLineColor | ライン | 線の色を設定します。 | 1. [IN] int : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] E3DCOLOR4UC : col 色を指定してください。 |
ver5.0.0.1 |
E3DAddPoint2Line | ライン | 線に点を追加し、追加した点を識別するpidを取得します。 点の数の合計が E3DCreateLineに渡したmaxpointnum より大きくなるとエラーになります。 取得したpidをE3DSetPointPosOfLine関数に 渡して 付け足した点の座標をセットしてください。 |
1. [IN] int : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] int : prevpid 線の中のどこに、新しい点を追加するかを指定します。 prevpidで指定した点の次の点として、 新しい点を追加します。 prevpidに-2を指定した場合には線の先頭に、 prevpidに-1を指定した場合には線の最後に 新しい点を追加します。 3. [OUT] int* : pidptr 新しく追加した点を識別する番号が代入されます。 pidは線ごとに固有な値です。 |
ver5.0.0.1 |
E3DDeletePointOfLine | ライン | 線の中の点を削除します。 | 1. [IN] int : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] int : pid 削除する点を識別する番号を指定してください。 |
ver5.0.0.1 |
E3DSetPointPosOfLine | ライン | 線の中の点の座標をセットします。 |
1. [IN] int : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] int : pid 点を識別する番号を渡します。 3. [IN] D3DXVECTOR3 : pos 点の座標を渡してください。 |
ver5.0.0.1 |
E3DGetPointPosOfLine | ライン | 線の中の点の座標を取得します。 |
1. [IN] int : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] int : pid 点を識別する番号を渡します。 3. [OUT] D3DXVECTOR3* : posptr 点の座標が代入されます。 |
ver5.0.0.1 |
E3DGetNextPointOfLine | ライン | previdで指定した点の一つ後の点のIDを取得します。 線は、点を双方向リストで格納しています。 一つ後の点が存在しない場合は nextid には、負の値が代入されます。 |
1. [IN] int : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] int : previd 点を識別する番号 3. [OUT] int* : nextidptr previdの点の一つ後の点のIDが代入されます。 previd に-1が指定されている場合は、 nextidには、先頭の点のIDが代入されます |
ver5.0.0.1 |
E3DGetPrevPointOfLine | ライン | pidで指定した点の一つ前の点のIDを取得します。 線は、点を双方向リストで格納しています。 一つ前の点が存在しない場合は、 previd には、負の値が代入されます。 |
1. [IN] int : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] int : pid 点を識別するID 3. [OUT] int* : previdptr pidの点の一つ後の点のIDが代入されます。 |
ver5.0.0.1 |
E3DWriteDisplay2BMP | 出力 | バックバッファの内容をBMPファイルに保存します。 filenameには拡張子を除いた名前を 指定してください。 E3DInitのmultisamplenumに0以外を指定した場合は、この命令は使えません。 (エラーになります。) |
1. [IN] char* : filename 出力するBMP のパス文字列。 拡張子を除いたパスを指定してください。 この関数で自動的に”.bmp”が付加されます。 既に同じファイル名が存在している場合は そのファイルは上書きされるので注意してください。 2. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver5.0.0.1 |
E3DCreateAVIFile | 出力 | AVIファイルを初期化してaviidを取得します。 aviidはAVIファイルを識別するための番号です。 この命令で作成したAVIファイルに対して E3DWriteData2AVIFile命令で バックバッファの内容を書き込み、 E3DCompleteAVIFile命令で 終了処理をします。 E3DWriteData2AVIFile命令、 E3DCompleteAVIFile命令には、 E3DCreateAVIFile命令で取得したaviidを 渡してください。 E3DInitのmultisamplenumに0以外を指定した場合は、この命令は使えません。 (エラーになります。) |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを指定してください。 2. [IN] char* : filename 出力するBMP のパス文字列。 拡張子を除いたパスを指定してください。 この関数で自動的に”.avi”が付加されます。 既に同じファイル名が存在している場合は、 そのファイルは上書きされるので注意してください。 3. [IN] int : datatype 作成するデータの種類を指定します。 現バージョンでは映像のみしか扱わないため、 常に1を指定してください。 4. [IN] int : compkind 圧縮の種類を指定します。 0を指定した場合は 圧縮なし、 1を指定した場合は cinepak Codec by Radiusによる圧縮、 2を指定した場合には Microsoft Video 1による圧縮 をします。 5. [IN] int : framerate AVIファイルのフレームレートを指定してください。 通常は、スクリプトプログラムのFPSを指定します。 60FPSで表示している場合は、60と指定します。 6. [IN] int : frameleng AVIファイルのフレーム数の合計数。 frameleng回だけ、E3DWriteData2AVIFileで データをファイルに書き込むことが出来ます。 7. [OUT] int* : aviidptr 作成したAVIファイルを識別するための番号が代入されます。 |
ver5.0.0.1 |
E3DWriteData2AVIFile | 出力 | バックバッファの内容をAVIファイルに書き込みます。 E3DCreateAVIFileで指定したframeleng回だけ この命令を呼ぶことが出来ます。 frameleng回を超えた呼び出しは、 エラーとなり無視されます。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : aviid AVIファイルを識別するための番号を指定してください。 E3DCreateAVIFileで取得した番号を使用してください。 3. [IN] int : datatype 作成するデータの種類を指定します。 現バージョンでは映像のみしか扱わないため、 常に1を指定してください。 |
ver5.0.0.1 |
E3DCompleteAVIFile | 出力 | AVIファイルの終了処理をします。 必要な回数E3DWriteData2AVIFile命令を 呼び出した後に、この命令を呼び出してください。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : aviid AVIファイルを識別するための番号を指定してください。 E3DCreateAVIFileで取得した番号を使用してください。 3. [IN] int : datatype 作成するデータの種類を指定します。 現バージョンでは映像のみしか扱わないため、 常に1を指定してください。 |
ver5.0.0.1 |
E3DCameraLookAt | カメラ | カメラを向きたい方向に徐々に向けます。 vecには注視点ではなくて、 向きたい向きのベクトルを指定してください。 例えば、注視点tを向きたい場合は、 E3DGetCameraPosでカメラの位置を求め、 引き算するだけでOKです。 vec = t - campos のようにして計算し指定してください。 upflagはE3DLookAtQでの用法と同じです。 upflag == 0 のときは、 上向き方向が常にY軸上方を向くように 制御されます。 upflag == 1 のときは、 上向き方向が常にY軸下方を向くように 制御されます。 upflag == 2 のときは、 上向き方向が連続した向きをとるように 制御されます。 その結果、宙返りが可能となります。 upflag == 3 のときは、 上向き方向を特に制御しません。 上向き方向は連続した向きをとりますが その方向は拘束されません。 divnum引数に分割数を指定します。 現在の位置と目標地点との間の間隔を 1 / divnum ずつ内分して近づきます。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] D3DXVECTOR3 : vec 向きたいベクトルを指定してください。 ベクトルの計算方法は前記をご覧ください。 2. [IN] int : upflag 上向き制御方法のモードを指定してください。 詳しくは前記をご覧ください。 3. [IN] int : divnum 分割数を指定してください。 |
ver5.0.0.1 |
E3DCameraOnNaviLine | カメラ | カメラをナビラインに沿って動かします。 mode引数に0を指定すると カメラの位置だけを制御します。 mode引数に1を指定すると 位置に加え向きも制御します。 ループ移動や反対方向への移動も サポートしています。 ナビラインの作成には GViewer.exeを使うと便利です。 (おちゃっこLABでダウンロード可能です。) ナビラインは地面の高さに作成することが 普通なのでナビラインからカメラまでの オフセット値を指定できるようにしました。 例えば、地面から1000だけ上方を カメラを動かしたいときは、 地面の高さにナビラインを作成し この関数のオフセット引数に offsetx = 0 : offsety = 1000 : offsetz = 0 の値を指定すればOKです。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] int : nlid ナビラインを識別するID 2. [IN] int : mode 位置だけを制御する場合は0を、 位置と向きを制御する場合は1を指定してください。 3. [IN] int : roundflag ナビラインの最後のナビポイントに移動した後 ナビラインの最初のナビポイントの位置を目指すかどうかを示します。 1を指定すると円形のナビラインの場合は、 ずっとぐるぐる回ることになります。 4. [IN] int : reverseflag 1を指定すると ナビラインのポイントを逆順にたどるようになります。 5. [IN] D3DXVECTOR3 : offset ナビラインからカメラ位置までのオフセット値を指定します。 6. [IN] float : posstep カメラを一度にどれくらいの距離を移動させるかを指定します。 ただし、ナビポイント付近では posstepより小さな距離しか移動させないことがあります。 7. [IN] int : dirdivnum 向きたい向きまで徐々にカメラを向けるための 引数です。 目標までの角度を1/dirdivnumずつ内分して、 徐々に向きを制御します。 8. [IN] int : upflag E3DCameraLookAt関数のupflag引数と同じ意味です。 詳しくは、E3DCameraLookAtの説明部分を お読みください。 9. [IN] [OUT] 変数 : targetpointid 現在目指しているナビポイントのIDを入れます。 移動後は次に目指すべきナビポイントのIDが代入されます。 ですので、一番最初の呼び出し時のみ自分でtargetpoinidを指定すれば、 あとは同じ変数を渡すだけで 自動的に目指すべきポイントのIDが 代入されていくことになります。 targetpointidに 存在しないナビポイントのIDを入れた場合は、 (例えば-1など) 自動的に目指すべきナビポイントを決定します。 |
ver5.0.0.1 |
E3DCameraDirUp | カメラ | カメラの現在向いている方向を、徐々に上の方向に向けます。 現バージョンでは 宙返りはサポートしていません。 また、このページの最初に書いてある カメラの使い方の所もお読みください。 |
1. [IN] float : deg 角度。 2. [IN] int : divnum deg度の角度を1/divnumずつ内分して カメラを上方向に向けます。 |
ver5.0.0.1 |
E3DCameraDirDown | カメラ | カメラの現在向いている方向を、徐々に下の方向に向けます。 現バージョンでは 宙返りはサポートしていません。 また、このページの最初に書いてある カメラの使い方の所もお読みください。 |
1. [IN] float : deg 角度。 2. [IN] int : divnum deg度の角度を1/divnumずつ内分して カメラを下方向に向けます。 |
ver5.0.0.1 |
E3DCameraDirRight | カメラ | カメラの現在向いている方向を、徐々に右の方向に向けます。 また、このページの最初に書いてある カメラの使い方の所もお読みください。 |
1. [IN] float : deg 角度。 2. [IN] int : divnum deg度の角度を1/divnumずつ内分して カメラを、右方向に向けます。 |
ver5.0.0.1 |
E3DCameraDirLeft | カメラ | カメラの現在向いている方向を、徐々に左の方向に向けます。 また、このページの最初に書いてある カメラの使い方の所もお読みください。 |
1. [IN] float : deg 角度。 2. [IN] int : divnum deg度の角度を1/divnumずつ内分して カメラを左方向に向けます。 |
ver5.0.0.1 |
E3DCreateFont | テキスト | フォントを作成し、フォントを識別するIDを取得します。 |
1. [IN] int : height フォントの文字セルまたは文字の高さを論理単位で指定します。 文字の高さとは、 文字セルの高さから内部レディング(アクセント記号などのためのスペース)の 高さを引いたものです。 要求されたサイズを超えない最大のフォントを探して処理されます。 2. [IN] int : width フォントの平均文字幅を論理単位で指定します。 0 を指定すると、条件に最も近い値が選択されます。 条件に最も近い値は、利用可能な各フォントの現在のデバイスでの 縦横比とデジタル化された縦横比の差の絶対値を比較することにより 決定されます。 3. [IN] int : weight フォントの太さを表す 0 から 1000 までの範囲内の値を指定します。 たとえば、400 を指定すると標準の太さになり、 700 を指定すると太字になります。 0 を指定すると、既定の太さが選択されます。 4. [IN] int : bItalic 斜体にするかどうかを指定します。 1 を指定すると、斜体になります。 5. [IN] int : bUnderline 下線を付けるかどうかを指定します。 1 を指定すると、下線付きになります。 6. [IN] int : bStrikeout 取り消し線を付けるかどうかを指定します。 1 を指定すると、取り消し線が付きます。 7. [IN] char* : fontname フォントの名前が入った 文字列を指定します。 文字列の長さは、 31 文字以下にしなければなりません。 8. [OUT] int* : fontidptr 作成したフォントを識別するための 番号が代入されます。 |
ver5.0.0.1 |
E3DDrawTextByFontID | テキスト | E3DCreateFontで作成したフォントにより、指定した位置、色で、テキストを表示します。 \nで改行できます。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : fontid E3DCreateFontで作成した、フォントの番号を指定します。 3. [IN] POINT : pos テキストをする位置を指定します。 4. [IN] char* : textstr 表示したい文字列を指定します。 5. [IN] E3DCOLOR4UC : col 文字の透明度と色を指定します。 6. [IN] int : bmode ブレンドモードを指定。 ブレンドモードの数値は E3DSetBlendingModeのblendmode引数の説明をお読みください。 この引数は省略可能。 |
ver5.0.0.1 ver5.5.0.5で拡張 |
E3DDrawTextByFontIDWithCnt | テキスト | カウンター制御で一定間隔で徐々に文字列を表示します。 eachcnt引数に一文字当たりの待機期間を 指定します。 この値とcurcntに指定したカウンターの値を 比較して文字を表示します。 curcntには、通常、この命令を呼び出すたびに 1ずつ増えるカウンターの値を指定します。 例えば、eachcntに10を指定した場合には 一文字当たり10カウントだけ待機するので、 1文字目はcurcntが10になるまで表示されません。 2文字目はcurcntが20になるまで表示されません。 と、このように、curcntの値が増えるに従って 徐々に表示文字長が増えていきます。 現バージョンでは半角カタカナには、 対応していません。 \nで改行できます。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : fontid E3DCreateFontで作成したフォントの番号を指定します。 3. [IN] POINT : pos テキストをする位置を指定します。 4. [IN] char* : textstr 表示したい文字列を指定します。 5. [IN] E3DCOLOR4UC : col 文字の透明度と色を指定します。 6. [IN] int : eachcnt 一文字当たりどれくらい待ってから表示するかを指定します。 7. [IN] int : curcnt 現在のカウンターを指定します。 |
ver5.0.0.1 |
E3DDrawTextByFontIDWithCntEach | テキスト | カウンター制御で文字ごとに表示タイミングを指定して文字列を表示します。 cntarray引数に 文字ごとの表示タイミングを指定した配列を 指定してください。 cntarrayの長さは E3DGetCharacterNum関数で textstrの文字数を取得して決定してください。 cntarray中の表示タイミングと curcntに指定したカウンターの値を比べて、 文字を表示するかどうかを決定します。 cntarray[0]に10を、 cntarray[1]に20を指定した場合には、 curcntが10になったときに1文字目が表示され、 curcntが20になったときに2文字目が表示されます。 cntarray[1]にcntarray[0]より小さな値を入れることも可能です。 その場合は、2文字目は1文字目よりも後で 表示されることになります。 現バージョンでは半角カタカナには 対応していません。 \nで改行できます。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : fontid E3DCreateFontで作成した、フォントの番号を指定します。 3. [IN] POINT : pos テキストをする位置を指定します。 4. [IN] char* : textstr 表示したい文字列を指定します。 5. [IN] E3DCOLOR4UC : col 文字の透明度と色を指定します。 6. [IN] int* : cntarray 文字数分の要素数を持つ配列変数を指定します。 それぞれの要素には、文字の表示タイミングを指定します。 7. [IN] int : arrayleng cntarray中の要素数を指定します。 8. [IN] int : curcnt 現在のカウンターを指定します。 |
ver5.0.0.1 |
E3DGetCharacterNum | テキスト | 1バイト文字、2バイト文字を判別してtextstr中の文字数を取得します。 現バージョンでは半角カタカナには 対応していません。 |
1. [IN] char* : textstr 調べたい文字列を指定します。 2. [OUT] int* : charanumptr 文字の数が代入されます。 |
ver5.0.0.1 |
E3DDestroyFont | テキスト | E3DCreateFontで作成したフォントを 削除します。 |
1. [IN] int : fontid E3DCreateFontで作成したフォントの番号を指定します。 |
ver5.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と同じ姿勢がセットされます。 |
1. [IN] int : startqid 2. [IN] int : endqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 startqidとendqidのクォータニオンの間の姿勢を 補間計算してresqidのクォータニオンにセットします。 3. [IN] float : t 補間計算するクォータニオンのstartqidからの比率を指定してください。 t の値は0.0から1.0の間の値を指定してください。 4. [IN] int : resqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 計算結果がresqidのクォータニオンに代入されます。 |
ver5.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と同じ姿勢がセットされます。 |
1. [IN] int : befqid 2. [IN] int : startqid 3. [IN] int : endqid 4. [IN] int : aftqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 startqidとendqidのクォータニオンの間の姿勢を 補間計算してresqidのクォータニオンにセットします。 befqidにはstartqidの一つ前の姿勢を、 aftqidにはendqidの一つ後の姿勢を セットしておいてください。 5. [IN] float : t 補間計算するクォータニオンのstartqidからの比率を指定してください。 t の値は0.0から1.0の間の値を指定してください。 6. [IN] int : resqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 計算結果がresqidのクォータニオンに代入されます。 |
ver5.0.0.1 |
E3DSplineVec | 算術 |
位置座標を、スプライン補間計算します。 startposとendposの間の座標を tvの比率に基づいて スプライン補間計算して resposに代入します。 befposにはstartposの一つ前の座標を、 aftposにはendposの一つ後の座標を セットしておいてください。 t の値が0.0 から1.0の間になるように指定してください。 t が0.0のときは、 startposと同じ位置がセットされます。 t が1.0のときは、 endposと同じ位置がセットされます。 |
1. [IN] D3DXVECTOR3 : befpos 2. [IN] D3DXVECTOR3 : startpos 3. [IN] D3DXVECTOR3 : endpos 4. [IN] D3DXVECTOR3 : aftpos 計算の元となる位置座標の配列を指定してください。 詳しくは、前記をご覧ください。 5. [IN] float : t 補間計算する位置座標のstartposからの比率を指定してください。 t の値は0.0から1.0の間の値を指定してください。 6. [OUT] D3DXVECTOR3* : resposptr 計算結果が代入される配列を指定してください。 |
ver5.0.0.1 |
E3DDbgOut | デバッグ | dbg.txtに、指定した文字列を出力します。 この命令を呼ぶ前に、 一回だけE3DEnableDbgFileを 呼ぶ必要があります。 |
1. [IN] char* : dbgstr 出力文字列を指定してください。 2. [IN] ... printf形式と同様に指定してください。 |
ver5.0.0.1 |
E3DGetBillboardDiffuse | モデル情報 | 任意のビルボードの任意の頂点のdiffuse色を取得します。 |
1. [IN] int : bbid ビルボードを識別するID 2. [IN] int : vertno 色を取得したい頂点の番号を指定します。 3. [OUT] E3DCOLOR4UC* : colptr 指定した頂点のdiffuse色が代入されます。 colptr->aは無視されます。 |
ver5.0.0.1 |
E3DGetBillboardAmbient | モデル情報 | 任意のビルボードの任意の頂点の、ambient色を取得します。 |
1. [IN] int : bbid ビルボードを識別するID 2. [IN] int : vertno 色を取得したい頂点の番号を指定します。 3. [OUT] E3DCOLOR4UC* : colptr 指定した頂点のambient色が代入されます。 colptr->aは無視されます。 |
ver5.0.0.1 |
E3DGetBillboardSpecular | モデル情報 | 任意のビルボードの任意の頂点の、specular色を取得します。 |
1. [IN] int : bbid ビルボードを識別するID 2. [IN] int : vertno 色を取得したい頂点の番号を指定します。 3. [OUT] E3DCOLOR4UC* : colptr 指定した頂点のspecular色が代入されます。 colptr->aは無視されます。 |
ver5.0.0.1 |
E3DGetBillboardAlpha | モデル情報 | 任意のビルボードの透明度を取得します。 | 1. [IN] int : bbid ビルボードを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] int : vertno この引数は、現在使用されていません。 適当な数字を入れてください。 3. [OUT] float* : alphaptr 指定したパーツの透明度が代入されます。 |
ver5.0.0.1 |
E3DSaveQuaFile | 出力 | 読み込み済みのモーションをファイルに保存します。 quatype引数でファイルのタイプを指定します。 usercoef.hで定義されているQUATYPE_ で始まる定数を使います。 QUATYPE_NUMはボーンの階層構造から計算した番号を基準にファイルを作ります。 QUATYPE_NAMEはボーンの名前を基準にファイルを作ります。 ver5.0.1.0より前のバージョンのquaファイルはQUATYPE_NUMです。 |
1. [IN] 数値または、変数 : quatype QUATYPE_ で始まる定数を指定。 2. [IN] int : hsid モデルを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] char* : filename 保存ファイル名(パス)を指定してください。 |
ver5.0.0.1 ver5.0.1.0で引数追加。 |
E3DSaveSigFile | 出力 | 形状データをsigファイルに保存します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] char* : filename 保存ファイル名(パス)を指定してください。 |
ver5.0.0.1 |
E3DPickVert | モデル情報 | 画面上の2D座標を指定して、その座標に一番近い頂点を検出する関数です。 全く同じ座標の頂点が見つかった場合には、 複数のパーツ、複数の頂点の番号を 取得するするようになっています。 同じ座標でもUVだけが違う頂点などが 存在するので複数取得できるようになっています。 取得した情報の数がgetnumに代入されます。 該当するデータが無い場合はgetnumに0が 代入されます。 getnumが0出ない場合には、 maxindex = getnum - 1とすると pickpartarray[0] から、pickpartarray[maxindex] までに、パーツの番号が代入されます。 pickvertarray[0]から、pickvertarray[maxindex] までに、頂点の番号が代入されます。 pickarrayleng変数に、 一度に取得できる情報の数をセットした後、 pickpartarray pickvertarray のメモリを確保してください。 rangex, rangey引数を調整することで、 検出の感度を調整できます。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : hsid 形状データを識別するID 3. [IN] POINT : pos 画面上の2D座標を指定します。 4. [IN] POINT : range 検出距離を指定します。 range.xには、X座標がどれだけ離れた点まで検索するかを指定します。 range.yには、Y座標がどれだけ離れた点まで検索するかを指定します。 大きい値を指定すると 指定した座標より遠い頂点まで検索します。 感度の調整に使用してください。 5. [OUT] int* : pickpartarray 6. [OUT] int* : pickvertarray 指定した座標に一番近いパーツ番号、 頂点の番号がgetnum個だけ代入されます。 7. [IN] int : pickarrayleng pickpartarray, pickvertarrayの配列の大きさを指定してください。 8. [OUT] int* : getnumptr pickpartarray, pickvertarrayに、何個の値を代入したかを 取得できます。 例えば、*getnumptr が3だった場合には、 pickpartarray[0], pickpartarray[1], pickpartarray[2]に値が代入されています。 |
ver5.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ファイルを新しい形式にコンバートする必要があります。 orgarraylengに取得できる情報の数をセットして、 orgnoarray = (int*)malloc( sizeof( int ) * orgarrayleng ); で、メモリを確保してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] int : vertno 調べたい頂点の番号を指定してください。 4. [OUT] int* : orgnoarray この配列に元データの頂点の番号が代入されます。 maxindex = getnum - 1とすると *orgnoarray から、*(orgnoarray + maxindex)までに 頂点の番号が代入されます。 5. [IN] int : arrayleng orgnoarrayをmallocしたときの、配列の要素数を指定してください。 6. [OUT] int* : getnumptr orgnoarrayに代入した情報の数を取得できます。 |
ver5.0.0.1 |
E3DChkIM2Status | ボーン影響 | 影響マップ情報(im2)が、利用可能かどうかを調べます。 status引数に1が返された場合は 利用可能。 0が返された場合は 利用不可能です。 0が返された場合はsigファイルを新しい形式にコンバートする必要があります。 E3DGetOrgVertNo, E3DLoadIM2File, E3DSaveIM2File関数などを使用する前に、 このE3DChkIM2Status関数で、 影響マップファイルの機能が使えるかどうかを 調べてください。 |
1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : statusptr 影響マップ情報が利用可能かどうかが代入されます。 |
ver5.0.0.1 |
E3DLoadIM2File | ボーン影響 | hsidで識別されるモデルデータにim2ファイルのボーン影響情報をセットします。 この関数を使う前に、 E3DChkIM2Status関数で引数に 1が返されることを確認してください。 0が返された場合はsigファイルを新しい形式にコンバートする必要があります。 |
1. [IN] int : hsid hsidで識別されるモデルデータに、 im2ファイルのボーン影響情報をセットします。 2. [IN] char* : fname *.im2 のパス文字列。 |
ver5.0.0.1 |
E3DSaveIM2File | ボーン影響出力 | hsidで識別されるモデルデータの影響マップ情報をim2ファイルに書き出します。 この関数を使う前に E3DChkIM2Status関数で引数に 1が返されることを確認してください。 0が返された場合はsigファイルを新しい形式にコンバートする必要があります。 |
1. [IN] int : hsid hsidで識別されるモデルデータの影響マップ情報を、 im2ファイルに書き出します。 2. [IN] char* : fname *.im2 のパス文字列。 |
ver5.0.0.1 |
E3DGetJointNum | モデル情報 | ジョイントの総数を取得します。 E3DGetJointInfoで詳細情報を取得する際の 配列データの大きさの決定などに 使用してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : jointnumptr ジョイントの総数が、代入されます。 |
ver5.0.0.1 |
E3DGetJointInfo | モデル情報 | ジョイントの詳細情報を一括取得します。 jointinfo引数は、 jointinfo = (JOINTINFO*)malloc( sizeof( JOINTINFO * jointmaxnum ); で作成してください。 JOINTINFO構造体はusercoef.hで定義されています。 serialnoは、 ジョイントのシリアル番号にアクセスするときに、 使用します。 ジョイントのシリアル番号とは、 E3DGetPartNoByName あるいは、 E3DGetBoneNoByName で取得できる番号と同じものです。 notuseは、 ジョイントが無効になっているかどうかの フラグにアクセスするときに使用します。 無効なときに1が有効なときに0が代入されています。 parent, child, brother, sisterは、 ジョイントの階層構造にアクセスするときに 使用します。 詳しくは、 ジョイントの階層構造のページ をご覧ください。 |
1. [IN] int : hsid 形状データを識別するID 2. [OUT] JOINTINFO* : jointinfo シリアル番号や、階層構造などを取得するための構造体へのポインタを渡してください。 3. [IN] int : jointmaxnum jointinfo構造体の要素数を渡してください。 4. [OUT] int* : jointgetnum 何個のジョイントの情報を出力したかが代入されます。 |
ver5.0.0.1 |
E3DGetFirstJointNo | モデル情報 | 相対値0のジョイントの、シリアル番号を取得します。 ジョイント番号の相対値とは ボーンファイルやim2ファイルなどで 使用します。 各ファイルの説明をご覧ください。 ボーンファイルのページ im2ファイルのページ |
1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : firstnoptr 相対値0のシリアル番号が代入されます。 |
ver5.0.0.1 |
E3DGetDispObjNum | モデル情報 | 表示用オブジェクトの総数を取得します。 E3DGetDispObjInfoで詳細情報を取得する際の 配列データの大きさの決定などに 使用してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : dispobjnumptr 表示オブジェクトの総数が代入されます。 |
ver5.0.0.1 |
E3DGetDispObjInfo | モデル情報 | 表示オブジェクトの詳細情報を一括取得します。 まず、dispobjmaxnum変数に、 E3DGetDispObjInfo関数で、 表示オブジェクトの総数を取得してください。 dispobjinfo引数は、 dispobjinfo = (DISPOBJINFO*)malloc( sizeof( DISPOBJINFO ) * dispobjmaxnum ); で作成してください。 DISPOBJINFO構造体はusercoef.hで定義されています。 serialnoは、 表示オブジェクトのシリアル番号にアクセスするときに使用します。 表示オブジェクトのシリアル番号とは、 E3DGetPartNoByName で取得できる番号と同じものです。 notuseは、 表示オブジェクトが無効になっているかどうかの フラグにアクセスするときに使用します。 無効なときに1が有効なときに0が代入されています。 dispswitchは、 表示オブジェクトのディスプレイスイッチの番号 にアクセスするときに使用します。 ディスプレイスイッチは、 RokDeBone2で、パーツごとに設定可能です。 ディスプレイスイッチのページ invisibleは、 表示オブジェクトが表示されているかどうかのフラグにアクセスするときに使用します。 詳しくは、 E3DSetInvisibleFlag の説明をお読みください。 |
1. [IN] int : hsid 形状データを識別するID 2. [OUT] DISPOBJINFO* : dispobjinfo シリアル番号などを取得するための配列変数を渡してください。 3. [IN] int : dispobjmaxnum データ取得用配列の大きさ(表示オブジェクトの数)を指定します。 4. [OUT] int* : dispobjgetnumptr 何個の表示オブジェクトの情報を出力したかが代入されます。 |
ver5.0.0.1 |
E3DEnableTexture | 描画パラメータ | 一時的にテクスチャー表示をオンオフする関数です。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号(シリアル番号) 3. [IN] int : enableflag テクスチャーをオフにするときには0を、 オンにするときには1を指定してください。 |
ver5.0.0.1 |
E3DJointAddToTree | モデル情報 | パーツに親子関係を設定します。 childjointをparentjointの子供として、 設定します。 lastflagが0のときは長男として追加され、 1のときは末っ子として追加されます。 ジョイント以外に親子関係を設定しても 現バージョンでは意味がありません。 childjoint, parentjointは、 E3DGetPratNoByNameまたは E3DGetJointInfoで取得した番号を 使用してください。 E3DJointRemake命令もお読みください。 |
1. [IN] int : hsid 形状データを識別する番号 2. [IN] int : parentjoint 3. [IN] int : childjoint parentjointの子供としてchildjointを設定します。 4. [IN] int : lastflag 0を指定するとparentjointの長男として、 1を指定するとparentjointの末っ子として設定されます。 |
ver5.0.0.1 |
E3DJointRemoveFromParent | モデル情報 | パーツの親子関係を取り除きます。 rmjointで指定したパーツと その親のパーツとの関係を切り離します。 rmjointの子供の情報はそのまま残ります。 ジョイント以外に親子関係を設定しても 現バージョンでは意味がありません。 この命令で親が存在しないまま E3DSaveSigFileでファイルに保存すると、 そのファイルは読み込みできなくなります。 最終的にはE3DJointAddToTreeで、 必ず親を設定するようにしてください。 一番親のジョイントにしたい場合には、 ジョイントではないフォルダ的な役割をしているパーツの番号を取得して それを親に設定してください。 rmjointは、 E3DGetPratNoByNameまたは、 E3DGetJointInfoで取得した番号を 使用してください。 E3DJointRemake命令もお読みください。 |
1. [IN] int : hsid 形状データを識別する番号 2. [IN] int : rmjoint rmjointとその親の関係を切り離します。 |
ver5.0.0.1 |
E3DJointRemake | モデル情報 | 親子関係や有効無効の変更をEasy3D内部の関連データに反映させます。 一連のE3DJointAddToTreeや E3DJointRemoveFromParent命令や E3DSetValidFlagを 呼び出した後に一回呼び出してください。 |
1. [IN] int : hsid 形状データを識別する番号 |
ver5.0.0.1 |
E3DSigImport | 形状データ | hsidに読み込み済の形状データに filenameで指定した形状データを インポートします。 この命令を呼ぶと 読み込み済のモーションデータが破棄されます。 |
1. [IN] int : hsid 形状データを識別する番号 2. [IN] char* : filename インポートする*.sig のパス文字列。 3. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 4. [IN] float : mult 倍率の値を指定してください。 等倍は、1.0。 5. [IN] D3DXVECTOR3 : offset 読み込み位置のオフセット座標を指定します。 ローカル座標で指定します。 6. [IN] D3DXVECTOR3 : rot 追加形状を、X,Y,Zそれぞれの軸に対して、 rot.x, rot.y, rot.z度だけ、回転してから インポートを行います。 回転順序はZ,Y,Xの順番です。 パラメータの適用順序は、 まず倍率を掛けて 次に回転をして 最後に移動します。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DSigLoadFromBuf | 形状データ | メモリから形状データのロードを行います。 メモリ内にはsigファイルと同じフォーマットが 入っているとみなして処理します。 テクスチャファイルは通常読込と同様に ファイルから行います。 resdirにはテクスチャの存在するフォルダのパスを指定してください。 最後に"\\"を付けるのを忘れないでください。 例えば、 "C:\\hsp\\Meida\\" などのように指定してください。 |
1. [IN] char* : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] char* : buf バッファのポインタ。 3. [IN] int : bufleng バッファの中のデータの長さ 4. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 5. [IN] float : mult 倍率の値を指定してください。 等倍は1.0。 6. [OUT] int : hsidptr 読み込んだ形状データを識別するhsidが代入されます。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DSigImportFromBuf | 形状データ | メモリから形状データのインポートを行います。 メモリ内にはsigファイルと同じフォーマットが 入っているとみなして処理します。 テクスチャファイルは通常読込と同様に ファイルから行います。 resdirにはテクスチャの存在するフォルダのパスを指定してください。 最後に"\\"を付けるのを忘れないでください。 |
1. [IN] int : hsid 形状データを識別するhsid 2. [IN] char* : resdir テクスチャーのあるフォルダ のパス文字列。 最後に"\\"が必要。 3. [IN] char* : buf バッファのポインタ 4. [IN] int : bufleng バッファの中のデータの長さ 5. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 6. [IN] float : mult 倍率の値を指定してください。 等倍は1.0。 7. [IN] D3DXVECTOR3 : offset 読み込み位置のオフセット座標を指定します。 ローカル座標で指定します。 8. [IN] 変数または、数値 : rot 追加形状を、X,Y,Zそれぞれの軸に対して、 rotx, roty, rotz度だけ回転してから、 インポートを行います。 回転順序は、Z,Y,Xの順番です。 パラメータの適用順序は、 まず倍率を掛けて、 次に回転をして、 最後に移動します。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DAddMotionFromBuf | モーション | メモリからモーションデータのロードを行います。 メモリ内にはquaファイルと 同じフォーマットが入っているとみなして 処理します。 |
1. [IN] int : hsid 形状データを識別するhsid 2. [IN] char* : buf バッファのポインタ 3. [IN] int : bufleng バッファの中のデータの長さ 4. [IN] float : mvmult モーションの移動成分に掛ける倍率 5. [OUT] int* : motidptr 読み込んだモーションを識別する番号 6. [OUT] int* : maxframeptr 読み込んだモーションの最大フレーム番号 (総フレーム数 - 1 と同じ) |
ver5.0.0.1 |
E3DCheckFullScreenParams | 描画パラメータ | フルスクリーンのパラメータをチェックし、与えた条件に近いパラメータを取得します。 validflagに1が返された場合のみ、 bits, scsizeの値は有効です。 validflagに0が返された場合には、 ウインドウの大きさなどの条件を変えて、 有効なパラメータが取得できるまで 繰り返しこの命令を呼び出してください。 この命令はE3DInitよりも前に呼ぶことを前提にしています。 この命令で取得したscsize.cxとscsize.cyでウインドウを作成した後、 E3DInitのbits引数にvalidbitsを指定してフルスクリーン初期化してください。 FULLSCPARAMS構造体はusercoef.hで定義されています。 ver5.3.1.3でflag引数を追加。 |
1. [IN] FULLSCPARAMS : srcparams 使用したいフルスクリーンのパラメータを指定します。 screenwにスクリーンの幅 screenhにスクリーンの高さ bitsに色数を示すビット数を指定します。 2. [OUT] FULLSCPARAMS* : validparamsptr scparamsで指定したパラメータに近い フルスクリーンが作れることが分かった場合にvalidparamsptr->validflagに 1がセットされます。 与えられたパラメータではフルスクリーンが作れないことが分かった場合にはvalidparamsptr->validflagに0がセットされます。 validparamsのbits, scsize.cx, scsize.cyにはフルスクリーンの作成に有効なパラメータが返されます。 srcparamsで指定したものとは 多少異なる場合があります。 これらの値は、validparamsptr->validflagに1が代入されているときのみ有効です。 3. [IN] int : flag 横:縦が4:3のウインドウサイズに自動的に調整したい場合は1を指定します。 調整機能をオフにしてscreenw, screenh引数そのままの値で判定するには2を指定します。 デフォルト値は1です。 flagに2を指定した場合はE3DInitのfullscreenflagにも2を指定してください。 |
ver5.0.0.1 ver5.3.1.3で拡張 |
E3DGetMaxMultiSampleNum | 描画パラメータ | アンチエイリアスに必要なマルチサンプルの数の最大値を取得します。 この関数はE3DInitよりも前に呼び出すことを 想定しています。 E3DInitに渡すmultisamplenumの値の決定に 使用してください。 |
1. [IN] int : bits 色数を決めるビット数を指定してください。 2. [IN] int : iswindowmode ウインドウモードの時は1を フルスクリーンの時は0を指定してください。 3. [OUT] int* : maxmultisamplenumptr マルチサンプルの数の指定に有効な最大の値を代入します。 0または、2から16の値が代入されます。 ハードウェアによって異なる値が代入されます。 |
ver5.0.0.1 |
E3DChkConfLineAndFace | 当たり判定 | 任意の線分とsigの面との当たり判定をします。 この当たり判定は hsidで指定したデータのボーン変形が 必要になります。 ですが、同じポーズで何回も当たり判定を行う場合などには、いちいちボーン変形を計算し直さない方が高速です。 needtransに0を指定すると ボーン変形計算を省略することが出来ます。 (ポーズが変わった場合や カメラ位置を変えた場合には needtransを1にしてください。) 線分と面との当たりE3DChkConfLineAndFaceは、結構重い処理です。 ですので、出来るだけ呼び出し回数を 少なくするように心がけてください。 呼び出し回数を少なくするための工夫として、 まず、E3DChkConflictで おおざっぱな当たり判定を行い E3DChkConflictで当たっていると判定されたときのみ E3DChkConfLineAndFaceを呼び出す などの方法が有効です。 E3DChkInViewより後で呼び出してください。 |
1. [IN] D3DXVECTOR3 : pos1 2. [IN] D3DXVECTOR3 : pos2 線分をpos1とpos2で指定してください。 3. [IN] int : hsid モデルデータを識別するID 4. [IN] int : needtrans ボーン変形計算をするかどうかのフラグ 詳しくは、前記をご覧ください。 5. [OUT] int* : partnoptr 6. [OUT] int* : facenoptr 線分とhsidのモデルが衝突していた場合に、 衝突したパーツの番号と面の番号が代入されます。 衝突していなかった場合は-1が代入されます。 7. [OUT] D3DXVECTOR3* : confpos 衝突していた場合に、衝突した座標が代入されます。 8. [OUT] D3DXVECTOR3* : nptr 衝突していた場合に、衝突したhsidの面の法線ベクトルが代入されます。 9. [OUT] int* : revfaceflagptr 衝突していた面が裏面だった場合1が代入されます。 表面だった場合は0が代入されます。 |
ver5.0.0.1 |
E3DPickFace | 当たり判定 | 2Dの画面の座標に対応する3Dモデルの座標を取得できます。 マウスでクリックした場所に 3Dオブジェクトを移動させることなどに使用してください。 E3DPickVertが3Dモデルの頂点を抽出するのに対し、 E3DPickFaceは3Dモデルの面を抽出し 2D座標に対応する面上の3D座標を取得します。 maxdist によってどのくらい遠くまで 検索するかを指定できます。 maxdistの値を小さくするほど 処理は高速になります。 計算には、E3DChkInViewの結果を 使用しています。 !!!注意!!! projectionのnearからの距離が10万を超えるデータにはこの命令は使えません。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : hsid モデルを識別する番号を指定してください。 3. [IN] POINT : scpos 画面上の2D座標を指定してください。 4. [IN] float : maxdist どのくらいの距離まで3Dモデルの検索をするかを指定します。 この値を小さくするほど処理は高速になります。 5. [OUT] int* : partnoptr 6. [OUT] int* : facenoptr 2D座標に対応する3D座標が見つかった場合に、 その3Dモデルのパーツの番号と面の番号が 代入されます。 見つからなかった場合は-1が代入されます。 7. [OUT] D3DXVECTOR3* : pos3dptr 2D座標に対応する3D座標が代入されます。 partnoに-1以外の値が代入されているときのみこの値は意味を持ちます。 8. [OUT] D3DXVECTOR3* : nptr 2D座標に対応する3D座標を含む面の法線ベクトルが代入されます。 ベクトルの大きさは1のものを代入します。 partnoに-1以外の値が代入されているときのみ、 この値は意味を持ちます。 9. [OUT] float* : distptr 視点と*pos3dptrとの距離が代入されます。 partnoに-1以外の値が代入されているときのみ、 この値は意味を持ちます。 |
ver5.0.0.1 |
E3DGetBBox | モデル情報 | 読み込んだモデルデータのバウンダリーボックスの取得が出来ます。 カメラの設定やプロジェクションの設定をモデルの大きさに応じて変更する場合などに使ってください。 mode引数で ローカル座標かグローバル座標かを 指定できるようにする予定です。 現在は、グローバル座標しか取得できません。 この命令で使用する情報はE3DChkInViewで更新されます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 ビルボードの情報を得たい場合は-1を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 -1を指定した場合は、モデル全体のバウンダリーボックスを取得します。 hsidに-1を指定した場合は ビルボードのIDを指定してください。 3. [IN] int : mode 現在はサポートされていません。 0を指定してください。 4. [OUT] D3DXVECTOR3* : minptr 5. [OUT] D3DXVECTOR3* : maxptr 各座標の最小値の点を*minptrに 最大値の点を*maxptrに代入します。 |
ver5.0.0.1 |
E3DGetVertNoOfFace | モデル情報 | facenoで指定した面に含まれる頂点の番号を3つ取得します。(3角形の頂点です) facenoにはE3DPickFaceなどで取得した 面の番号を指定してください。 E3DGetSamePosVertの説明も お読みください。 TRIVNO構造体はusercoef.hで定義されています。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : faceno 面を識別する番号を指定してください。 4. [OUT] TRIVNO* : vertnoptr 3角形の面を構成する3つの頂点の番号が代入されます。 |
ver5.0.0.1 |
E3DGetSamePosVert | モデル情報 | 同じ位置の頂点番号を取得する。 モデルデータ中には同じ頂点座標で、 UV座標だけ違う頂点が存在します。 同じ位置の頂点の番号を取得する関数です。 E3DGetVertNoOfFaceと組み合わせて 使うことを想定しています。 samevertno には見つかった頂点数分の 頂点番号が代入されます。 arraylengに5くらいの値を入れて、 int samevertno[ arrayleng ]; で配列を作成してください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : vertno 頂点を識別する番号を指定してください。 4. [OUT] int* : samevertno 配列を指定してください。 見つかった頂点の番号が代入されます。 5. [IN] int : arrayleng samevertno配列を作成したときの要素数を指定してください。 6. [OUT] int* : samenumptr 見つかった頂点の数が代入されます。 つまり、maxindex = samenum - 1とすると samevertno[0] から samevertno[maxindex] まで見つかった頂点の番号が代入されていることになります。 |
ver5.0.0.1 |
E3DRtscStart | 同期 | 時間の計測。 E3DRtscStartとE3DRtscStopはセットで使用します。 E3DRtscStartを呼び出してから E3DRtscStopを呼び出すまでに プロセッサのタイムスタンプカウンタが どれくらい増えたかを取得できます。 |
なし | ver5.0.0.1 |
E3DRtscStop | 同期 | 時間の計測。 E3DRtscStartとE3DRtscStopはセットで使用します。 E3DRtscStartを呼び出してから E3DRtscStopを呼び出すまでに プロセッサのタイムスタンプカウンタが どれくらい増えたかを取得できます。 |
1. [OUT] DWORD* : timeptr E3DRtscStartを呼んでからの タイムスタンプカウンタの増分が代入されます。 |
ver5.0.0.1 |
E3DSaveSig2Buf | モデル出力 | 読み込み済の形状データをメモリ上に保存します。 保存するためのバッファは ユーザーさん側が用意します。 バッファの長さが分からないと 保存操作が行えないため、 バッファ長の取得と実際の保存とで、 合計2回、この関数を呼び出してください。 bufsize引数に0を指定すると、 保存を行わずに 保存に必要なバッファの長さを取得します。 バッファの長さを取得した後に、 その長さをbufsize引数に指定して 実際の保存を行ってください。 実際のコードは、以下のようになります。 E3DSaveSig2Buf( hsid, 0, 0, sigwritesize ); sigbuf = (char*)malloc( sizeof( char ) * sigwritesize ); E3DSaveSig2Buf( hsid2, sigbuf, sigwritesize, &writesize1 ); |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] char* : buf バッファのポインタを指定してください。 3. [IN] int : bufsize 0を指定すると、 保存に必要なバッファの長さが、writesizeに代入されます。 0以外を指定すると、 バッファbufに形状データを保存します。 4. [OUT] int* : writesizeptr bufsizeに0が指定されている場合には 必要なバッファのサイズが代入されます。 bufsizeに0以外が指定されている場合には、 実際に保存したデータのバイト数を代入します。 |
ver5.0.0.1 |
E3DSaveQua2Buf | モーション出力 | 読み込み済のモーションデータをメモリ上に保存します。 保存するためのバッファは ユーザーさん側が用意します。 バッファの長さが分からないと 保存操作が行えないため、 バッファ長の取得と実際の保存とで 合計2回、この関数を呼び出してください。 bufsize引数に0を指定すると、 保存を行わずに 保存に必要なバッファの長さを取得します。 バッファの長さを取得した後に その長さをbufsize引数に指定して 実際の保存を行ってください。 実際のコードは以下のようになります。 E3DSaveQua2Buf( quatype, hsid, mkid, 0, 0, &quawritesize, quatype ); quabuf = (char*)malloc( sizeof( char ) * quawritesize ); E3DSaveQua2Buf( quatype, hsid, mkid, quabuf, quawritesize, &writesize2 ); quatype引数でファイルのタイプを指定します。 usercoef.hで定義されているQUATYPE_ で始まる定数を使います。 QUATYPE_NUMはボーンの階層構造から計算した番号を基準にファイルを作ります。 QUATYPE_NAMEはボーンの名前を基準にファイルを作ります。 ver5.0.1.0より前のバージョンのquaファイルはQUATYPE_NUMです。 |
1. [IN] 数値または、変数 : quatype QUATYPE_ で始まる定数を指定。 2. [IN] int : hsid モデルを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] char* : buf バッファの変数を指定してください。 5. [IN] int : bufsize 0を指定すると 保存に必要なバッファの長さがwritesizeに代入されます。 0以外を指定すると、 バッファbufに、モーションデータを保存します。 6. [OUT] int* : writesize bufsizeに0が指定されている場合には 必要なバッファのサイズが代入されます。 bufsizeに0以外が指定されている場合には、 実際に保存したデータのバイト数を代入します。 |
ver5.0.0.1 ver5.0.1.0で引数追加。 |
E3DCameraShiftLeft | カメラ | カメラを左に平行移動します。 | 1. [IN] float : shift 移動量。 |
ver5.0.0.1 |
E3DCameraShiftRight | カメラ | カメラを右に平行移動します。 | 1. [IN] float : shift 移動量。 |
ver5.0.0.1 |
E3DCameraShiftUp | カメラ | カメラを上に平行移動します。 | 1. [IN] float : shift 移動量。 |
ver5.0.0.1 |
E3DCameraShiftDown | カメラ | カメラを下に平行移動します。 | 1. [IN] float : shift 移動量。 |
ver5.0.0.1 |
E3DGetCameraQ | カメラ | カメラの回転変換を表すクォータニオンを 取得します。 |
1. [IN] int : qid クォータニオンのIDを渡してください。 qidで識別されるクォータニオンに、 カメラの回転情報を代入します。 qidにはE3DCreateQで取得したIDを使用してください。 |
ver5.0.0.1 |
E3DInvQ | 算術 | 逆クォータニオンを取得します。 |
1. [IN] int : srcqid 2. [IN] int : dstqid クォータニオンのIDを渡してください。 dstqidで識別されるクォータニオンに、 srcqidで識別されるクォータニオンの逆クォータニオンを代入します。 srcqid, dstqidには、 E3DCreateQで取得したIDを使用してください。 |
ver5.0.0.1 |
E3DSetCameraTwist | カメラ | カメラをツイスト(ロール)させます。 カメラの使い方は、この表の前に書いてある部分をお読みください。 E3DSetCameraTwistはどのタイプのカメラ関数を使用している場合でも有効です。 E3DSetCameraTargetを使用している場合には、 E3DSetCameraTargetで指定した上方向のベクトルをさらにtwistdeg分ねじります。 |
1. [IN] float : twistdeg カメラをtwistdeg度だけ、ツイストします。 |
ver5.0.0.1 |
E3DIKRotateBeta | モーション | IKによるジョイントの回転を行います。 目標の座標などを指定すると、 そこに近づくように回転します。 この関数はベータ版です。 今後のバージョンアップで 互換性のとれない変更をする場合がありますのでご注意ください。 この関数では指定したモーションの1フレーム分の姿勢情報しか変更しません。 モーション全体にIK結果を反映させたい場合は、 IK計算した前後のキーフレーム間で E3DFillUpMotionを呼び出す必要があります。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : hsid モデルを識別する番号を指定してください。 3. [IN] int : jointno ジョイントパーツを識別する番号を指定してください。 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定するとエラーになります。 4. [IN] int : motionid モーションを識別する番号を指定してください。 5. [IN] int : frameno モーションのフレーム番号を指定してください。 6. [IN] int : iklevel IK計算時の階層数を指定します。 何階層、親をさかのぼってIK計算するかを指定します。 7. [IN] int : axiskind IKの回転の際の軸をどのように決定するかを指定します。 0の時は視線に平行なベクトルを使います。 1の時はaxis.x, axis.y, axis.zに指定した軸を使います。 2の時は自動的に軸を設定します。 8. [IN] D3DXVECTOR3 : axis IKの回転軸を指定します。 axiskindに1を指定したときのみ有効です。 9. [IN] int : calclevel 計算の細かさを指定します。 正の整数を指定してください。 値が大きいほど細かく動きますが、 現バージョンでは、大きすぎても、うまくいきません。 10. [IN] D3DXVECTOR3 : target jointnoで指定したジョイントが、 座標(targetx, targety, targetz)に近づくように回転します。 11. [OUT] D3DXVECTOR3* : resptr jointnoで指定したジョイントの計算後の座標が代入されます。 12. [OUT] int* : lastparentptr 姿勢の変更のあったボーンのうち、 一番親の番号が代入されます。 この値をE3DRenderに渡すと処理の高速化が出来ます。 詳しくはE3DRenderのところの注意事項をお読みください。 |
ver5.0.0.1 |
E3DIKRotateBeta2D | モーション | E3DIKRotateBetaの2D座標指定バージョンです。 目標座標が2Dになった以外は E3DIKRotateBetaと同じです。 詳しくは、E3DIKRotateBetaの説明を お読みください。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : hsid モデルを識別する番号を指定してください。 3. [IN] int : jointno ジョイントパーツを識別する番号を指定してください。 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定するとエラーになります。 4. [IN] int : motionid モーションを識別する番号を指定してください。 5. [IN] int : frameno モーションのフレーム番号を指定してください。 6. [IN] int : iklevel IK計算時の階層数を指定します。 何階層親をさかのぼってIK計算するかを指定します。 7. [IN] int : axiskind IKの回転の際の軸をどのように決定するかを指定します。 0の時は、視線に平行なベクトルを使います。 1の時は、axis.x, axis.y, axis.zに指定した軸を使います。 2の時は、自動的に軸を設定します。 8. [IN] D3DXVECTOR3 : axis IKの回転軸を指定します。 axiskindに1を指定したときのみ有効です。 9. [IN] int : calclevel 計算の細かさを指定します。 正の整数を指定してください。 値が大きいほど細かく動きますが、 現バージョンでは、大きすぎても、うまくいきません。 10. [IN] D3DXVECTOR2 : target2d jointnoで指定したジョイントが、 指定した2D座標に近づくように回転します。 11. [OUT] D3DXVECTOR3* : resptr jointnoで指定したジョイントの計算後の座標が代入されます。 12. [OUT] int* : lastparentptr 姿勢の変更のあったボーンのうち、 一番親の番号が代入されます。 この値をE3DRenderに渡すと処理の高速化が出来ます。 詳しくは、E3DRenderのところの注意事項をお読みください。 |
ver5.0.0.1 |
E3DGetMotionType | モーション | モーションのタイプを取得します。 得られるタイプの意味は以下のようになります。 1がフレーム番号固定(Stop) 2が最終フレーム番号まで進んだら固定(Clamp) 3が最終フレーム番号まで進んだら先頭フレームに戻る(Round) 4が最終フレーム番号まで進んだら先頭フレームの方向に逆進する(PingPong) 5が最終フレームまで進んだら指定フレームにジャンプする(Jump) |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [OUT] int* : typeptr 前記で説明したモーションの種類が代入されます。 |
ver5.0.0.1 |
E3DSetMotionType | モーション | モーションのタイプをセットします。 typeに指定する値の意味は、以下のようになります。 1がフレーム番号固定(Stop) 2が最終フレーム番号まで進んだら固定(Clamp) 3が最終フレーム番号まで進んだら先頭フレームに戻る(Round) 4が最終フレーム番号まで進んだら先頭フレームの方向に逆進する(PingPong) |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : type 前記で説明したモーションの種類を指定してください。 |
ver5.0.0.1 |
E3DGetIKTransFlag | モデル情報 | IK伝達禁止情報をジョイントから取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : jointid ジョイントを識別する番号を指定してください。 3. [OUT] int* : flagptr 通常の場合は0が、 IK伝達禁止の時は1が代入されます。 |
ver5.0.0.1 |
E3DSetIKTransFlag | モデル情報 | IK伝達禁止情報をジョイントにセットします。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : jointid ジョイントを識別する番号を指定してください。 3. [IN] int : flag 通常の場合は0を、 IK伝達禁止の時は1を指定してください。 |
ver5.0.0.1 |
E3DDestroyAllMotion | モーション | E3DAddMotionで読み込んだモーションデータを、全て破棄します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 |
ver5.0.0.1 |
E3DGetUserInt1OfPart | モデル情報 | パーツに設定されているユーザーデータを取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] int* : dataptr ユーザーデータが代入されます。 |
ver5.0.0.1 |
E3DSetUserInt1OfPart | モデル情報 | パーツにユーザーデータをセットします。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : data ユーザーデータを指定してください。 |
ver5.0.0.1 |
E3DGetBSphere | モデル情報 | パーツ毎の境界球情報を取得します。 ボーン変形を考慮したグローバル座標系の 値が取得できます。 E3DChkInViewの計算結果をもとにしています。 表示用オブジェクトのみに対して有効です。 (ボーンに対して呼んでも、無意味です。) BSPHERE構造体はusercoef.hで定義されています。 partnoに-1を指定するとモデル全体の境界球を取得できます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] BSPHERE* : bsptr centerに境界球の中心座標が代入されます。 rに境界球の半径が代入されます。 |
ver5.0.0.1 ver5.4.1.4で拡張 |
E3DGetChildJoint | モデル情報 | 指定したジョイントの子供ジョイントの数と子供のシリアル番号を取得します。 childarray配列に 子供の数分のシリアル番号が 代入されます。 子供の数より配列の長さが大きいように してください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : parentno 親のジョイントの番号を指定してください。 3. [OUT] int* : childarray 子供ジョイントのシリアル番号が代入されます。 arraylengがchildnumより小さい場合は、 arrayleng個のシリアル番号しか代入されません。 4. [IN] int : arrayleng childarray引数に格納できる要素数を指定してください。 int childarray[100];とした場合は、 100を指定してください。 childnum引数に代入される数が、arraylengより大きい場合は、 配列の長さが足りないことになります。 5. [OUT] int* : childnum 子供ジョイントの数が代入されます。 |
ver5.0.0.1 |
E3DDestroyMotionFrame | モーション | 指定したキーフレームを削除します。 モーションの変更を反映させるには、 E3DFillUpMotionを呼ぶ必要があります。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : frameno 削除するフレームの番号を指定してください。 -1を指定すると全てのキーフレームを削除します。 |
ver5.0.0.1 |
E3DGetKeyFrameNo | モーション | 指定したボーンのキーフレームのフレーム番号を全て取得します。 framearrayには、 int framearray[50]; などで作成した大きめの配列を使用してください。 配列の長さよりframenumが大きい場合にはエラーになりますので 注意してください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : boneno ボーンパーツを識別する番号を指定してください。 4. [OUT] int* : framearray この配列にフレーム番号が代入されます。 5. [IN] int : arrayleng framearrayをアロケートしたときの要素数を指定してください。 6. [OUT] int* : framenum framearrayに格納した要素の数が代入されます。 キーフレームの数です。 |
ver5.0.0.1 |
E3DConvScreenTo3D | 算術 | 任意の2D座標を3D座標に変換します。 マウスの位置に対応する3D座標を 求める場合などに便利です。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] D3DXVECTOR3 : pos2d 変換したいマウスの位置などを、 (pos2d.x, pos2d.y)で指定します。 pos2d.zは、 カメラからどのくらいの距離の平面上の点を取得するかを指定します。 3D座標のZの値ではありません。 カメラからの距離を制御出来るものと考えてください。 (距離の値とは違います。) 0.0のときカメラに一番近い座標がえられます。 1.0のときカメラから一番遠い(見える範囲での) 座標がえられます。 見える範囲とは E3DSetProjectionで指定した範囲のことです。 実際のカメラの距離とこのzの値は 比例関係にありません。 zの値をちょっと大きくしただけで カメラからの距離が大きく変わったり、 反対にzを大きく変えても カメラからの距離が少ししか変わらない領域もあります。 0に近すぎる値では、 見えないことがあるので注意してください。 3. [OUT] D3DXVECTOR3* : pos3dptr 上で指定した2D座標に対応する3D座標が代入されます。 |
ver5.0.0.1 |
E3DSetUV | モデル情報 | テクスチャーのUV座標をセットします。 partnoには E3DGetPartNoByNameで取得した番号を、 vertnoには E3DGetVertNumOfPartで取得した頂点数を vertnumとしたとき、 0から(vertnum - 1)までの値を渡してください。 vertnoに-1を指定すると 指定パーツの全ての頂点に対して 処理を行うようにしました。 UV構造体はusercoef.hで定義されています。 ver5.0.1.6でビルボードに対応しました。 ver5.0.2.7でclampflagを追加しました。 |
1. [IN] int : hsid 形状データを識別するid。 -1を渡すとビルボードの処理をします。 2. [IN] int : partno パーツを識別する番号。 hsidに-1を渡した場合はビルボードIDを指定します。 3. [IN] int : vertno 頂点の番号。 -1を指定すると、全ての頂点に対して処理します。 4. [IN] UV : uv 設定したいUV値の値を指定してください。 通常は0.0から1.0の値。 5. [IN] int : setflag setflag に0を指定すると、 指定UV値をそのままセットします。 setflagに1を指定すると、 指定UV値を既存のUV値に足し算します。 6. [IN] 変数または、数値 : clampflag 1をセットするとUVの値を0.0から1.0の間にクランプします。 0を指定するとクランプは行いません。 |
ver5.0.0.1 ver5.0.1.6で拡張 ver5.0.2.7で拡張 |
E3DGetUV | モデル情報 | テクスチャーのUV座標を取得します。 partnoには E3DGetPartNoByNameで取得した番号を、 vertnoには E3DGetVertNumOfPartで取得した頂点数を vertnumとしたとき、 0から(vertnum - 1)までの値を渡してください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号 3. [IN] int : vertno 頂点の番号 4. [OUT] UV* : uvptr UV座標の値が代入されます。 |
ver5.0.0.1 |
E3DPickBone | モデル情報 | 指定した2D座標に近いジョイントの番号を取得します。 2D座標にはマウスの座標などを指定してください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] POINT : scpos 2D座標を指定します。 3. [OUT] int : jointnoptr 指定した2D座標に近いジョイントがある場合には、 そのジョイントのIDが代入されます。 近くにジョイントがない場合には、0以下が代入されます。 |
ver5.0.0.1 |
E3DShiftBoneTree2D | モーション | 指定した2D座標に近づくようにボーンツリー全体を移動します。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : hsid 形状データを識別するID 3. [IN] int : jointno ジョイントを識別するID E3DPickBoneなどで取得した、 ジョイントの番号を渡してください。 4. [IN] int : motid モーションを識別するID E3DAddMotionで取得したmotidを指定してください。 5. [IN] int : frameno ポーズを設定したいフレーム番号を指定してください。 6. [IN] D3DXVECTOR2 : target2d jointnoで指定したジョイントが 指定した2D座標に近づくように ボーンツリー全体が移動します。 |
ver5.0.0.1 |
E3DRotateBillboard | ビルボード | ビルボードをカメラの方向を向けたまま回転します。 |
1. [IN] int : billboardid ビルボードを識別する番号 2. [IN] float : rotdeg ビルボードをrotdeg度だけ 回転します。 3. [IN] int : rotkind rotkindに0を指定すると相対値モードになります 現在のビルボードの向きに 更に指定角度だけ回転を加えます。 rotkindに1を指定すると絶対値モードになります。 初期状態に対して指定角度だけ回転を加えます。 |
ver5.0.0.1 |
E3DSetBillboardUV | ビルボード | ビルボードのUVを設定します。 横方向にunum個、縦方向にvnum個のタイル状に作ったテクスチャーの、タイルの番号を指定することで指定した画像のUVを設定します。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 タイルの数が12個の場合は、 タイルの番号は0から11になりますが それより大きな値や小さな値を指定することも可能です。 例えば、タイルの数が12個の場合、 12を指定すると タイル番号0が表示され 13を指定すると タイル番号1が表示され -1を指定すると タイル番号11が表示されるという具合に 機能します。 ver5.0.1.7でrevuflag引数を追加しました。 |
1. [IN] int : bbid ビルボードを識別するid 2. [IN] int : unum 3. [IN] int : vnum タイルの横と縦の個数 4. [IN] int : tileno 設定したいテクスチャのタイルの番号 5. [IN] int : revuflag 1を指定するとテクスチャを左右反転させます。0を指定するとそのまま。 |
ver5.0.0.1 ver5.0.1.7で拡張 |
E3DCreateTexture | テクスチャ | 指定したファイルからテクスチャを作ります。画面と同じテクスチャを作ることも可能です。 テクスチャの操作にはこの関数で取得した テクスチャのID、texidを使用してください。 transparentに1(黒透過)を指定した場合には、 黒透過処理が行われます。 D3DPOOL_DEFAULTで、 テクスチャを作成する場合にはtransparentに1を指定すると失敗することがあります。 filenameに"MainWindow"を指定すると、 バックバッファと同じ内容で 同じ大きさのサーフェスを作成します。 この際、poolに何を指定しても 強制的にシステムメモリに作成します。 また、このときtransparentに1を指定できません。 "MainWindow"を指定した場合は、 E3DSetTextureToDispObjは使えません。 E3DCopyTextureToBackBufferを使ってください。 "MainWindow"を指定したときはバックバッファと同じフォーマットで、それ以外は、D3DFMT_A8R8G8B8で作成します。 DX8からDX9への移行時の変更の関係で、 現在、"MainWindow"指定は使用できない状態です。 |
1. [IN] char* : filename テクスチャファイル のパス文字列。 2. [IN] int : pool どのメモリ位置にテクスチャを作成するかを指定します。 D3DPOOL_DEFAULT (普通はビデオメモリに作られます) D3DPOOL_MANAGED (DirectXの管理(バックアップ有り)) D3DPOOL_SYSTEMMEM (システムメモリに作られます) の中から選びます。 3. [IN] int : transparent 透過情報を指定します。 0を指定すると不透明のテクスチャ。 1を指定すると黒色を透過するテクスチャ。 2を指定するとテクスチャファイルのアルファに従って 透過するテクスチャになります。 4. [OUT] int* : texidptr 作成したテクスチャを識別するID テクスチャ操作の際には、このIDを使用してください。 |
ver5.0.0.1 |
E3DGetTextureInfo | テクスチャ | 作成したテクスチャの情報を取得します。 テクスチャのサイズは、 ビデオカードによっては2の乗数のサイズしか 確保できないので ファイルのサイズと異なる場合があります。 TEXTUREINFO構造体はusercoef.hで定義されています。 |
1. [IN, OUT] TEXTUREINFO* : texinfo テクスチャ情報を受け取るポインタ texinfo.texidにテクスチャのIDをセットしてからこの関数に渡してください。 |
ver5.0.0.1 |
E3DGetTextureFromDispObj | テクスチャ | 読み込み済の3Dオブジェクトに設定されているテクスチャを取得します。 sigモデルデータに対する操作には E3DGetTextureFromMaterialをお使いください。 |
1. [IN] int : hsid モデルデータを識別するID -1を指定すると、ビルボードの処理を行います。 2. [IN] int : partno パーツの番号。 E3DGetPartNoByNameで取得した番号を指定してください。 hsidに-1を指定した場合には、 ビルボードのIDを指定してください。 3. [OUT] int* : texidptr テクスチャを識別するID 指定したパーツにテクスチャが貼られていない場合には、 texidには-1が代入されます。 |
ver5.0.0.1 |
E3DSetTextureToDispObj | テクスチャ | 読み込み済の3Dオブジェクトにテクスチャを設定します。 sigモデルデータに対する操作には E3DSetTextureToMaterialをお使いください。 テクスチャをセットしても UV座標は自動的に生成されません。 動的にテクスチャを設定する場合は、 UV座標もE3DSetUVで設定するか、 もしくは、 あらかじめ、モデルに仮のテクスチャを貼っておいてUV設定しておく必要があります。 |
1. [IN] int : hsid モデルデータを識別するID -1を指定すると、ビルボードの処理を行います。 -2を指定するとスプライトの処理を行います。 パーティクルの設定をする場合は パーティクルIDを指定してください。 2. [IN] int : partno パーツの番号。 E3DGetPartNoByNameで取得した番号を指定してください。 hsidに-1を指定した場合には、 ビルボードのIDを指定してください。 hsidに-2を指定した場合には スプライトのIDを指定してください。 hsidにパーティクルIDを指定した場合には partnoには0を指定してください。 3. [IN] int : texid 貼り付けたいテクスチャのIDを指定します。 |
ver5.0.0.1 ver5.5.0.4で拡張 |
E3DDestroyTexture | テクスチャ | テクスチャを破棄します。 |
1. [IN] int : texid テクスチャを識別するID |
ver5.0.0.1 |
E3DSetLightSpecular | ライト | ライトのスペキュラー色を指定します。 |
1. [IN] int : lightid ライトを識別するID 2. [IN] E3DCOLOR4UC : col スペキュラー色を指定します。 col.aは無視されます。 |
ver5.0.0.1 |
E3DCreateTextureFromBuf | テクスチャ | メモリに読み込んだ絵のデータからテクスチャを作成します。 filenameの代わりにバッファを指定し、 "MainWindow"が扱えないこと以外は、 E3DCreateTextureと同じです。 E3DCreateTextureの説明を お読みください。 例えば、以下のような使い方になります。 |
1. [IN] char* : buf バッファのポインタ 2. [IN] int : bufleng バッファの中のデータの長さ(バイト) 3. [IN] int : pool どのメモリ位置にテクスチャを作成するかを指定します。 D3DPOOL_DEFAULT (普通はビデオメモリに作られます) D3DPOOL_MANAGED (DirectXの管理(バックアップ有り)) D3DPOOL_SYSTEMMEM (システムメモリに作られます) の中から選びます。 4. [IN] int : transparent 透過情報を指定します。 0を指定すると不透明のテクスチャ。 1を指定すると黒色を透過するテクスチャ。 2を指定するとテクスチャファイルのアルファに従って 透過するテクスチャになります。 5. [OUT] int* : texidptr 作成したテクスチャを識別するIDが代入されます。 テクスチャ操作の際には、このIDを使用してください。 |
ver5.0.0.1 |
E3DLoadSoundFromBuf | サウンド | メモリから音データを読み込みIDを取得します。 メモリから読み込むこと以外は E3DLoadSoundと同じです。 E3DLoadSoundの説明をお読みください。 現在、oggにはこの命令は使えません。 ver5.3.1.6でoggdatanum引数を削除。 |
1. [IN] char* : buf バッファのポインタ 2. [IN] int : bufleng バッファの中のデータの長さ(バイト) 3. [IN] int : type midiのときは1、それ以外は0を指定してください。 4. [IN] int : use3dflag 3Dサウンドとして読み込む場合は1を指定してください。 デフォルト値は0。 5. [IN] int : reverbflag リバーブをオンにしたいときは1を オフにしたいときは0を指定してください。 6. [IN] int : bufnum 同じIDのサウンドを同時にいくつ重ねて再生できるかを指定します。 7. [OUT] int* : soundidptr 作成した音データを識別する番号が代入されます。 |
ver5.0.0.1 ver5.3.0.0で仕様変更 ver5.3.0.3で拡張 ver5.3.1.6で修正 |
E3DTwistBone | モーション | ボーンをツイストします。 指定したジョイントとその親のジョイントのベクトルを軸として回転します。 boneno引数に指定したジョイントに 親のジョイントがない場合は、 この関数を呼んでも 何も効果はありません。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid モーションを識別する番号 3. [IN] int : frameno 操作するモーションのフレーム番号 4. [IN] int : jointno ジョイントを識別する番号 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定すると エラーになります。 5. [IN] float : twistdeg twistdeg 度だけツイストします。 |
ver5.0.0.1 |
E3DGetBoneQ | モーション | ボーンのクォータニオンを取得します。 kind引数の値により、 親のクォータニオンの影響を受けたものと 受けていないものを取得できます。 モーションを読み込んでいないときは エラーになります。 指定したframenoにキーフレームがない場合は、 補間計算した結果を取得します。 エンドジョイント(子供を持たないジョイント) に対しても呼ぶことが出来ます。 ボーン以外の番号をbonenoに入れると エラーになります。 マルチレイヤーモーションを使用する場合は この命令は使えません。 E3DGetCurrentBoneQをお使いください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno フレームの番号を指定してください。 5. [IN] int : kind 親の影響を受けたクォータニオンを 取得する場合は1を指定してください。 親の影響を受けていないクォータニオンを 取得する場合は0を指定してください。 親の影響を受け、 更に、モデル全体の向きの影響を受けたクォータニオンを取得 するには2を指定してください。 6. [IN, OUT] int : qid クォータニオンを識別する番号。 E3DCreateQで取得した番号を指定してください。 qidで識別されるクォータニオンの内容に、 指定したボーンのクォータニオンの内容を代入します。 |
ver5.0.0.1 |
E3DSetBoneQ | モーション | ボーンのクォータニオンをセットします。 指定したフレームにモーションポイントが存在しない場合は、 自動的にモーションポイントを作成した後、 クォータニオンをセットします。 E3DFillUpMotionを呼び出さないと 他のフレームには反映されません。 ver5.4.0.0でcurboneonlyフラグを追加しました。 このフラグが0のとき(今までと同じ動作)は、クォータニオンをセットした後、親にさかのぼって姿勢の計算をします。 この計算はE3DFillUpMotionでも行われるので、多数のボーンにSetBoneQをするとかなりのタイムロスになります。 curboneonlyに1をセットするとこの計算をスキップします。 curboneonlyに1をセットして多数のボーンの設定を行った後に、一回E3DFillUpMotionをすれば良いことになります。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno フレームの番号を指定してください。 5. [IN] int : qid クォータニオンを識別する番号。 E3DCreateQで取得した番号を指定してください。 qidで識別されるクォータニオンの内容をボーンの姿勢にセットします。 6. [IN] int : curboneonly 前述をお読みください。 デフォルト引数(0)。 |
ver5.0.0.1 ver5.4.0.0で拡張 |
E3DIsSoundPlaying | サウンド | 音が再生中かどうかを調べます。 |
1. [IN] int : soundid 音を識別する番号を、指定します。 2. [OUT] int* : playingptr 再生中の場合は1が、 そうでない場合は0が代入されます。 |
ver5.0.0.1 |
E3DIKTranslate | モーション | IKで、ボーンの位置を移動します。 RokDeBone2のTボタンと同様に、 一番親のボーン以外でこの関数を呼ぶと、 モデルの形状が崩れます。 形状を保ちたい場合はE3DIKRotateBetaを使用してください。 位置にはグローバル座標を指定してください。 モーションを読み込んでいないとエラーになります。 framenoにモーションポイントがない場合は、 自動的に作成した後に移動をセットします。 ジョイント以外に対して呼ぶとエラーになります。 他のフレームにも結果を反映させたい場合は、 E3DFillUpMotionを呼んでください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno フレームの番号を指定してください。 5. [IN] D3DXVECTOR3 : pos ボーンを移動させたいグローバル座標を指定します。 |
ver5.0.0.1 |
E3DSetUVTile | モデル情報 | ひとつの画像にタイル画像を敷き詰めたテクスチャのUV座標を、タイル番号でセットできます。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 タイルの数が12個の場合は、 タイルの番号は0から11になりますが、 それより大きな値や小さな値を指定することも可能です。 例えば、タイルの数が12個の場合 12を指定すると、 タイル番号0が表示され、 13を指定すると タイル番号1が表示され、 -1を指定すると タイル番号11が表示されるという具合に 機能します。 5種類の投影、貼り付けをサポートします。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno 表示パーツを識別する番号を指定してください。 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] int : texrule 投影、貼り付けのモードを指定します。 0を指定するとX軸投影 1を指定するとY軸投影 2を指定するとZ軸投影 3を指定すると円筒貼り付け 4を指定すると球貼り付け です。 4. [IN] int : unum テクスチャのタイル画像の 横方向の個数を指定してください。 5. [IN] int : vnum テクスチャのタイル画像の 縦方向の個数を指定してください。 6. [IN] int : tileno 表示したいタイルの番号を指定してください。 |
ver5.0.0.1 |
E3DImportMQOFileAsGround | 地面 | hsidに読み込み済の地面データに、 filenameで指定した地面データを インポート(追加読み込み)します。 |
1. [IN] int : hsid 読み込み済の地面モデルを識別する番号を 指定してください。 2. [IN] char* : filename 読み込む、mqo ファイル名。 3. [IN] int : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 2を指定すると0.0から1.0の間にクランプします。 4. [IN] float : mult 形状データの座標に掛ける数値。 座標値 * multで計算されます。 等倍は1.0。 5. [IN] D3DXVECTOR3 : offset 読み込み位置のオフセット座標を指定します。 ローカル座標で指定します。 6. [IN] D3DXVECTOR3 : rot 追加形状を、X,Y,Zそれぞれの軸に対して rotx, roty, rotz度だけ回転してから インポートを行います。 回転順序はZ,Y,Xの順番です。 パラメータの適用順序は、 まず倍率を掛けて、 次に回転をして、 最後に移動します。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DLoadMQOFileAsMovableAreaFromBuf | 壁 | 移動可能領域を定義するデータをメモリから読み込みます。 メモリから読み込むこと以外は、 E3DLoadMQOFileAsMovableArea と同じです。 E3DLoadMQOFileAsMovableArea の説明をお読みください。 |
1. [IN] char* : buf バッファのポインタ 2. [IN] int : bufleng バッファの中のデータの長さ 3. [IN] float : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 4. [OUT] int : hsidptr 作成した壁データを識別するhsidが代入されます。 |
ver5.0.0.1 |
E3DChkThreadWorking | スレッド管理 | 関数の最後に「Thread」が付いている関数は、新たにスレッドを作成します。 この作成したスレッドが 現在動作中であるかどうかをチェックするための関数です。 スレッドが終了している場合には、 スレッドの動作結果が returnval1, reteurnval2変数で取得できます。 この変数は、hsidやモーションIDを取得するために使用します。 スレッド読み込み関数に存在しないファイル名などを指定した場合などはエラーにならずに、 hsidが代入される引数に-1が代入されるので注意してください。 |
1. [IN] int : threadid スレッドを識別するID 名前の最後にThreadが付いている関数で 取得したIDを指定してください。 2. [OUT] int* : workingptr スレッドが動作中かどうかが代入されます。 動作中の場合は1が、 動作が終了している場合には0が代入されます。 workingが0の場合は、 returnval1, returnval2に代入される値が意味を持ちます。 3. [OUT] int* : returnval1 4. [OUT] int* : returnval2 スレッドの実行結果が代入されます。 returnval1, returnval2に代入される値の 意味については、 各Thread作成関数の説明をお読みください。 |
ver5.0.0.1 |
E3DLoadMQOFileAsGroundThread | 地面 | スレッドを作成してE3DLoadMQOFileAsGroundを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadMQOFileAsGroundの説明もお読みください。 |
1. [IN] char* : filename 読み込む、mqo ファイル名。 2. [IN] float : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 3. [IN] int : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは0を指定してください。 2を指定すると0.0から1.0の間にクランプします。 4. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DSigLoadThread | 形状データ | スレッドを作成してE3DSigLoadを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DSigLoadの説明も、お読みください。 |
1. [IN] char* : fname *.sig のパス文字列。 2. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 3. [IN] float : mult 読み込み倍率を指定してください。 等倍は1.0。 4. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DSigLoadFromBufThread | 形状データ | スレッドを作成してE3DSigLoadFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DSigLoadFromBufの説明もお読みください。 |
1. [IN] char* : resdir テクスチャーのあるフォルダ のパス文字列。 最後に"\\"が必要。 2. [IN] char* : buf バッファのポインタ 3. [IN] int : bufleng バッファの中のデータの長さ 4. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 5. [IN] float : mult 倍率を指定してください。 等倍は、1.0。 6. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DLoadMQOFileAsMovableAreaThread | 壁 | スレッドを作成してE3DLoadMQOFileAsMovableAreaを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadMQOFileAsMovableAreaの説明もお読みください。 |
1. [IN] char* : filename 読み込む、mqo ファイル名。 2. [IN] float : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 3. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DLoadMQOFileAsMovableAreaFromBufThread | 壁 | スレッドを作成してE3DLoadMQOFileAsMovableAreaFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadMQOFileAsMovableAreaFromBufの説明もお読みください。 |
1. [IN] char* : buf バッファのポインタ 2. [IN] int : bufleng バッファの中のデータの長さ 3. [IN] float : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 4. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DLoadGroundBMPThread | 地面 | スレッドを作成してE3DLoadGroundBMPを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadGroundBMPの説明もお読みください。 |
1. [IN] char* : filename1 地面の座標情報の元となる、BMPファイル名 2. [IN] char* : filename2 地面の道の情報の元となる、BMPファイル名 3. [IN] char* : filename3 地面の川の情報の元となる、BMPファイル名 4. [IN] char* : filename4 地面、道、川の模様を決める、BMPファイル名 5. [IN] float : maxx 地面のX座標の最大値 6. [IN] float : maxz 地面のZ座標の最大値 7. [IN] int : divx X方向の分割数 8. [IN] int : divz Z方向の分割数 9. [IN] float : maxheight 地面の高さの最大値 10. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DAddMotionThread | モーション | スレッドを作成してE3DAddMotionを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に モーションをを識別するIDが代入されます。 returnval2に 最大フレーム番号が代入されます。 この関数が終了するまで この関数に渡したhsidに対して モーションの再生命令などは使わないようにしてください。 E3DAddMotionの説明もお読みください。 |
1. [IN] int : hsid どのモデルデータに対するモーションかを指定する。 2. [IN] char* : fname *.quaのパス文字列。 3. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DAddMotionFromBufThread | モーション | スレッドを作成してE3DAddMotionFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると E3DChkThreadWorkingで取得される returnval1に モーションをを識別するIDが代入されます。 returnval2に 最大フレーム番号が代入されます。 この関数が終了するまで この関数に渡したhsidに対して モーションの再生命令などは使わないようにしてください。 E3DAddMotionFromBufの説明もお読みください。 |
1. [IN] int : hsid 形状データを識別するhsid 2. [IN] char* : buf バッファのポインタ 4. [IN] int : bufleng バッファの中のデータの長さ 5. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DGetShaderType | モデル情報 | シェーダーの種類を取得します。 それぞれの値の意味は、 E3DSetShaderTypeの説明をお読みください。 |
1. [IN] int : hsid 形状データを識別するhsid 2. [OUT] int* : shaderptr シェーダーの種類代入されます。 |
ver5.0.0.1 |
E3DSetShaderType | モデル情報 | シェーダーの種類を設定します。 シェーダーの種類は、 usercoef.hの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表示。 ver3.0.0.1での仕様変更により、現在は、COL_PHONGとCOL_TOON1とCOL_TOON0のみのサポートとなります。 ver5.2.1.5でCOL_PPHONGを追加しました。 ver5.2.2.0でCOL_TOON1とCOL_TOON0は統合されCOL_TOON1となりました。 |
1. [IN] int : hsid 形状データを識別するhsid 2. [IN] int : shader シェーダーの種類の指定をします。 値の意味は、前記をご覧ください。 |
ver5.0.0.1 ver5.2.1.5で拡張 |
E3DSetBillboardEmissive | モデル情報 | ビルボードのemissive色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で表示されている色に対して 乗算、加算、減算します。 |
1. [IN] int : bbid ビルボードを識別するID 2. [IN] E3DCOLOR4UC : col 色を指定します。 col.aは無視されます。 setflagに乗算を指定した場合は、 各成分に、col.r/255, col.g/255, col.b/255を乗算します。 3. [IN] int : setflag setflagが0のときはcolをセットします。 setflagが1のときは、 ビルボードの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 ビルボードの色にcolを足し算します。 setflagが3のときは、 ビルボードの色からcolを減算します。 7. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合には ビルボード全体の色の設定をします。 |
ver5.0.0.1 |
E3DSetBillboardSpecularPower | モデル情報 | ビルボードののspecular powerをセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の4種類出来ます。 その時点で表示されている色に対して 乗算、加算、減算します。 |
1. [IN] int : bbid ビルボードを識別するID 2. [IN] float : pow pow の値をsetflagに基づいて、 現在の色に対して処理を行います。 3. [IN] int : setflag setflagが0のときは、 指定した値をセットします。 setflagが1のときは、 現在の値に指定した値を乗算します。 setflagが2のときは、 現在の値に指定した値を足し算します。 setflagが3のときは、 現在の値から指定した値を減算します。 4. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合にはビルボード全体の色の設定をします。 |
ver5.0.0.1 |
E3DGetBillboardEmissive | モデル情報 | ビルボードの任意の頂点のemissive色を取得します。 |
1. [IN] int : bbid ビルボードを識別するID 2. [IN] int : vertno 色を取得したい頂点の番号を指定します。 3. [OUT] E3DCOLOR4UC* : colptr 指定した頂点のemissive色が代入されます。 colptr->aは無視されます。 |
ver5.0.0.1 |
E3DGetBillboardSpecularPower | モデル情報 | ビルボードの任意の頂点のspecular powerを取得します。 |
1. [IN] int : bbid ビルボードを識別するID 2. [IN] int : vertno 色を取得したい頂点の番号を指定します。 3. [OUT] float* : powptr 指定した頂点のspecular powerが代入されます。 |
ver5.0.0.1 |
E3DGetInfElemNum | ボーン影響 | 指定した頂点が何個のボーンの影響を受けているかを取得します。 影響度情報は影響を受けるボーンごとに存在します。 (影響を受けるボーンの数だけ存在します) この影響度情報のことを、 Easy3DではInfElemと呼びます。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] int : vertno 頂点の番号 4. [OUT] int* : numptr 影響度情報の個数が代入されます。 |
ver5.0.0.1 |
E3DGetInfElem | ボーン影響 | 指定した頂点のボーン影響度情報を取得します。 E3DINFELEM構造体はusercoef.hで定義されています。 infelem.infnoに、 E3DGetInfElemNumで取得した数値をinfnumとすると、 0から(infnum - 1)の値をセットしてからこの関数に渡してください。 infelem.childjointnoに0以下(0を含む)の数値が取得された場合には、そのデータはダミーデータですので無視するようにしてください。 infelem.calcmodeの意味 calcmodeは、影響度の計算方法を表します。 usercoef.h中で定義されているCALCMODE_で始まる定数を使用します。 NOSKIN0はスキニング無し。 ONESKIN0は距離と角度によりスキニング。 ONESKIN1は距離のみによりスキニング。 DIRECT0は直接数値指定。 SYMは対称コピーによる指定。 を表します。 Easy3D内部での影響度の計算方法 影響度を算出する際には、 intelem.orginf, infelem.dispinf, infelem.userrate, normalizeflagを使います。 infelem.orginfは、infelem.calcmodeで指定した方法で、算出した影響度。 infelem.userrateは、比重。 normalizeflagは、正規化(一つの頂点の影響度の合計が1になるようにする)をするかどうかのフラグ。 infelem.dispinfが、最終的な影響度。 まず、InfElemごとに、以下の計算をします。 orginf * userrate / 100 normalizeflagが0のときは、この値がそのまま、dispinfになります。 normalizeflagが1のときは、 ある頂点の全部のInfElemの影響度(dispinf)の合計が1になるように、正規化します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] int : vertno 頂点の番号 4. [IN, OUT] E3DINFELEM* : infelemptr infelemptr->infnoに 影響度情報の番号つまり 0から(影響度の個数-1)までの数 をセットしてから渡します。 infelemptr->childjointnoは どのボーンの影響を受けるかが代入されます。 この値が0以下の値の時はダミーデータです。 ボーンの線分の内子供の方のジョイントの番号が代入されます。 infelemptr->calcmodeには 影響度の計算方法が代入されます。 infelemptr->userrateには 比重が代入されます。 %値が代入されます。 例えば、100%の場合は、100.0が代入されます。 infelemptr->orginf, infelemptr->dispinfのそれぞれの意味は、前記をご覧ください。 |
ver5.0.0.1 |
E3DSetInfElem | ボーン影響 | 頂点にボーン影響度を設定します。 paintmodeの意味 paintmodeは影響度の設定方法を表します。 usercoef.h内で、PAINT_で始まる定数で 定義されています。 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] int : hsid 形状データを識別するID 2. [IN] int : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] int : vertno 頂点の番号 4. [IN] int : childjointno 影響を受けるボーンの指定。 ボーンの線分の内、子供の方のジョイントの番号を 指定します。 5. [IN] int : calcmode 影響度の計算方法を指定します。 6. [IN] int : paintmode 影響度の設定方法を指定します。 7. [IN] int : normalizeflag 正規化をするときは1、 しないときは0を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 8. [IN] float : userrate 比重%の値を指定します。 100%の時は、100.0fを指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 9. [IN] float : directval 直接数値指定の数値を指定します。 詳しくは、前記をご覧ください。 |
ver5.0.0.1 |
E3DDeleteInfElem | ボーン影響 | ボーン影響度情報を削除します。 normalizeflagに1を指定すると、 削除した後に 指定頂点の残りの影響度情報を 正規化します。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] int : vertno 頂点の番号 4. [IN] int : childjointno 影響を受けるボーンの指定。 ボーンの線分の内、子供の方のジョイントの番号を 指定します。 5. [IN] int : normalizeflag 正規化をするときは1、 しないときは0を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 |
ver5.0.0.1 |
E3DSetInfElemDefault | ボーン影響 | ボーン影響度情報をデフォルト状態に戻します。 partnoに-1を指定すると、 全パーツの全頂点の影響度を デフォルト状態に戻します。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] int : vertno 頂点の番号 |
ver5.0.0.1 |
E3DNormalizeInfElem | ボーン影響 | ボーン影響度情報を正規化します。 指定した頂点の影響度の合計が1になるように、各影響度を合計値で割り算します。 vertnoに-1を指定すると、 指定パーツの全頂点に対して 正規化を行います。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] int : vertno 頂点の番号 |
ver5.0.0.1 |
E3DChkConfGroundPart | 当たり判定 | 地面の指定パーツとキャラクターとの当たり判定を行います。 地面のパーツ番号を指定する他は、 E3DChkConfGroundと同じです。 E3DChkConfGroundの説明をお読みください。 |
1. [IN] int : charahsid 移動する形状データを識別するid 2. [IN] int : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 3. [IN] int : groundpart 当たり判定をしたい地面のパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 指定してください。 4. [IN] int : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 5. [IN] float : diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 6. [IN] float : mapminy groundhsidで識別されるデータの一番低いY座標の値 7. [OUT] int* : resultptr あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合はresutl = 0 ぶつかった場合はresult = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 となります。 8. [OUT] D3DXVECTOR3* : adjustptr result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が代入されます。 9. [OUT] D3DXVECTOR3* : nptr result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが代入されます。 跳ね返る方向を決めるときなどに 使用できるのではないかと思い 加えてみました。 |
ver5.0.0.1 |
E3DChkConfGroundVecPart | 当たり判定 | 地面パーツを指定して、線分と地面の当たり判定を行います。 パーツを指定すること以外は E3DChkConfGround2と同じです。 詳しくは、E3DChkConfGround2の説明をお読みください。 |
1. [IN] D3DXVECTOR3 : befpos 線分の始点を指定します。 2. [IN] D3DXVECTOR3 : newpos 線分の終点を指定します。 3. [IN] int : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 4. [IN] int : groundpart 地面のパーツ番号を指定します。 E3DGetPartNoByNameで取得した番号を 指定してください。 5. [IN] int : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 6. [IN] float : diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 7. [IN] float : mapminy groundhsidで識別されるデータの一番低いY座標の値 8. [OUT] int* : resultptr あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 9. [OUT] D3DXVECTOR3* : adjustptr result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が代入されます。 10. [OUT] D3DXVECTOR3* : nptr result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが代入されます。 跳ね返る方向を決めるときなどに 使用できるのではないかと思い 加えてみました。 |
ver5.0.0.1 |
E3DSetNextMotionFrameNo | モーション | モーションの最後のフレーム番号に到達した後、どのモーションのどのフレーム番号にジャンプするかを指定できます。 この関数で次のモーションの指定を行っておけば、E3DSetNewPoseで自動的にモーションが切り替わります。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : srcmotid 3. [IN] int : nextmotid 4. [IN] int : nextframeno 5. [IN] int : befframeno srcmotidのモーションがbefframenoに達した後、nextmotidのモーションの、nextframenoのフレーム番号に、ジャンプするように設定されます。 |
ver5.0.0.1 |
E3DSetLinearFogParams | 描画パラメータ | 頂点フォグ(線形)を設定します。 頂点フォグなのでポリゴンのない部分にはフォグはかかりません。 画面全体にフォグをかけたい場合は、 E3DCreateBGで背景を作成してください。(背景はポリゴンです。) |
1. [IN] int : enable 1を指定すると、フォグが有効に、 0を指定すると、フォグが無効になります。 2. [IN] E3DCOLOR4UC : col フォグの色を指定します。 col.aは無視されます。 3. [IN] int : start 4. [IN] int : end フォグが開始される距離をstartに、 フォグが終了する(一番濃くなる)距離をendに 指定します。 距離は、カメラからの距離です。 5. [IN] int : hsid この引数に、モデルデータのhsidを 指定することにより、 モデル単位でのフォグの指定が可能になります。 特殊効果などで、フォグをかけたくない場合などの 表示にお使いください。 この引数に-1を指定した場合は、 すべてのモデルデータに対して設定します。 |
ver5.0.0.1 |
E3DChkConflictOBBArray | 当たり判定 | 2つの形状データの指定したパーツ同士が衝突しているかどうを判定します。 パーツの番号に配列を指定できること以外は、 ほとんどE3DChkConflict2と同じです。 (inviewflagが微妙に違います) パーツ番号には E3DGetPartNoByNameで取得した パーツの番号を渡してください。 partnoに-1を指定すると モデル全体とあたり判定をします。 (判定の元になるデータは E3DChkInView命令によって、更新されます。) すべてのパーツが視野外だった場合は inviewflagに3が、 ひとつでも視野内のパーツがあった場合は inviewflagに0が代入されます。 |
1. [IN] int : hsid1 形状データを識別するid 2. [IN] int* : partno1 hsid1のモデル中のパーツの番号の配列 int partno1[partnum1]; などで配列を作成し、それぞれの配列要素に 判定をしたいパーツの番号を入れてください。 3. [IN] int : partnum1 partno1に値をセットした要素数を指定してください。 4. [IN] int : hsid2 形状データを識別するid 5. [IN] int* : partno2 hsid2のモデル中のパーツの番号の配列 int partno2[partnum2]; などで配列を作成しそれぞれの配列要素に 判定をしたいパーツの番号を入れてください。 6. [IN] int : partnum2 partno2に値をセットした要素数を指定してください。 7. [OUT] int* : confflagptr hsid1, hsid2で識別される形状同士が、 衝突している場合は1が、 衝突していない場合は0がセットされる。 8. [OUT] int* : inviewflag すべてのパーツが視野外だった場合は inviewflagに3が、 1つでも視野内のパーツがあった場合は inviewflagに0が代入されます。 |
ver5.0.0.1 |
E3DChkConflictBSPartArray | 当たり判定 | 境界球によるあたり判定を任意のパーツごとに行います。 パーツの番号に配列を指定できること以外は E3DChkConfBySphere2と同じです。 判定の際にE3DChkInViewでセットした データを使用します。 パーツ番号には E3DGetPartNoByNameで取得した パーツの番号を渡してください。 パーツ番号に-1を指定すると モデル全体とあたり判定をします。 |
1. [IN] int : hsid1 形状データを識別するid 2. [IN] int* : partno1 hsid1のモデル中のパーツの番号の配列 int partno1[partnum1]; などで配列を作成しそれぞれの配列要素に 判定をしたいパーツの番号を入れてください。 3. [IN] int : partnum1 partno1に値をセットした要素数を指定してください。 4. [IN] int : hsid2 形状データを識別するid 5. [IN] int* : partno2 hsid2のモデル中のパーツの番号の配列 int partno2[partnum2]; などで配列を作成しそれぞれの配列要素に 判定をしたいパーツの番号を入れてください。 6. [IN] int : partnum2 partno2に値をセットした要素数を指定してください。 7. [OUT] int* : confflagptr hsid1, hsid2で識別される形状同士が 衝突している場合は1が、 衝突していない場合は0がセットされる。 |
ver5.0.0.1 |
E3DSetMovableAreaThread | 壁 | スレッドを作成してE3DSetMovableAreaを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DSetMovableAreaの説明も、お読みください。 |
1. [IN] char* : filename1 壁の座標情報の元となるBMPファイル名 2. [IN] float : maxx 壁のX座標の最大値 3. [IN] float : maxz 壁のZ座標の最大値 4. [IN] int : divx X方向の分割数 5. [IN] int : divz Z方向の分割数 6. [IN] float : wallheight 作成する壁の高さ 7. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DLoadMOAFile | モーションアクセラレータ | モーションアクセラレータファイル(*.moa)を読み込みます。 moaと同じフォルダに moaに記述されている全てのquaファイルが存在しないと エラーになります。 詳しくは、マニュアルのrdb2_ma.htmと e3dhsp3_MotionAccelerator.hsp をご覧ください。 |
1. [IN] int : hsid どのモデルデータに対するmoaかを指定する。 2. [IN] char* : fname *.moaのパス文字列。 3. [IN] int : FillUpFrameLength 補間モーションのフレーム長 ver5.3.2.6以降では、-1を指定するとmoaファイルに記述されているフレーム長を読み込みます。 4. [IN] float : mvmult モーションの移動成分に掛ける倍率 |
ver5.0.0.1 ver5.3.2.6で拡張 |
E3DSetNewPoseByMOA | モーションアクセラレータ | モーションアクセラレータに基づいてモーションの更新をします。E3DSetNewPoseの代わりに呼んでください。 詳しくは、マニュアルの、rdb2_ma.htmと e3dhsp3_MotionAccelerator.hsp をご覧ください。 |
1. [IN] int : hsid モデルデータを識別するID 2. [IN] int : eventno イベント番号 詳しくは、マニュアルのrdb2_ma.htmをご覧ください。 |
ver5.0.0.1 |
E3DGetMotionFrameNo | モーション | カレント(現在の)のモーション番号とフレーム番号を取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [OUT] int* : motidptr モーションを識別する番号 3. [OUT] int* : frameptr フレーム番号 |
ver5.0.0.1 |
E3DGetKeyboardCnt | キーボード | 256 個の仮想キーの状態(カウンター)を指定されたバッファkeybufへコピーします。 E3DGetKeyboardState関数は、呼び出し時にキーが押されているかどうかしか取得できませんが、 E3DGetKeyboardCnt関数は、どのくらいの時間押し続けているかを表すカウンターを取得できます。 Easy3D内部で、 前回のきーの情報を保存しておき、 呼び出し時にキーが押されていれば カウンターを1増やします。 押されていなければカウンターを0にします。 keybuf はこの関数を使用する前に、 int keybuf[256]; で、確保してください。 複数のキーの状態を一度の呼び出しで 取得できます。 例えば、Aキーのカウンタを調べる場合は、 E3DGetKeyboardCnt 呼び出し後に keybuf['A'] の値を調べます。 ( ’ を忘れずに。 ) |
1. [OUT] int* : keybuf keybufにキーの状態(カウンタ)が代入されます。 keybufは、int keybuf[256];で 作成されている必要があります。 |
ver5.0.0.1 |
E3DResetKeyboardCnt | キーボード | E3DGetKeyboardCntが内部で使用する前回のキーの情報をリセットします。 |
なし | ver5.0.0.1 |
E3DEncodeBeta | 簡易暗号化 | ファイルの内容を暗号化します。 暗号化といっても超簡易な方法ですので、 プログラムに詳しい人なら復号できてしまう程度のものです。 ファイルを暗号化して内容を上書きします。 暗号化したファイルに対して この関数を呼べば、暗号化前のファイルに戻ります。 |
1. [IN] char* : filename 簡易暗号化するファイル名 2. [IN] int* : rnd10 簡易暗号化する際に使用する、 ランダムなキー配列を指定します。 キーは10個指定します。 キーの値は0から255の値を使用してください。 int rnd10[10]; で配列を作成してから値をセットしてください。 |
ver5.0.0.1 |
E3DDecodeBeta | 簡易暗号化 | E3DEncodeBetaで暗号化したファイルをバッファ上で復号します。 バッファはmallocで確保してください。 |
1. [IN] char* : filename 復号するファイル名 2. [IN] int* : rnd10 E3DEncodeBetaで使用したのと同じ内容の キー配列。 3. [OUT] char* : dstbuffer 復号した内容がセットされます。 ファイルの長さをflengthとした場合 dstbuffer = (char*)malloc( sizeof( char ) * flength ); で作成したバッファーを指定してください。 |
ver5.0.0.1 |
E3DGetMoaInfo | モーション | Moaファイルを読み込んだ場合のモーションの名前とIDを取得します。 MOAINFO構造体はusercoef.hで定義されています。 motmaxnumは、大き目の値を設定してください。 この値が実際のモーションの数よりも小さいとエラーになります。 moainfoptrは moainfoptr = (MOAINFO*)malloc( sizeof( MOAINFO ) * motmaxnum ); で作成した配列を指定してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motmaxnum データ取得用配列の大きさ(モーションの数)を指定します。 3. [OUT] MOAINFO* : moainfoptr 情報を取得するための配列を渡してください。 4. [OUT] int : motgetnumptr 何個のモーションの情報を出力したかが代入されます。 |
ver5.0.0.1 |
E3DGetNextMotionFrameNo | モーション | E3DSetNextMotionFrameNoで設定した情報を取得します。 Moaファイルを読み込んで E3DSetNewPoseByMOAを使用する場合、 モーションとモーションの間に補間モーションが入ります。 この補間モーションのモーションIDはver5001では常に0です。 この補間モーションにはE3Dが内部で、 次のモーションをE3DSetNextMotionFrameNoでセットしています。 つまり、この補間モーションに対して E3DGetNextMotionFrameNoを呼び出せば、 次に再生するモーションの情報が取得できるというわけです。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid 現在のモーションのID 3. [OUT] int* : nextmotionidptr 次に再生されるモーションのID 4. [OUT] int* : nextframeptr フレーム番号 |
ver5.0.0.1 |
E3DGetScreenPos3F | モデル情報 | 形状データの画面上での2Dの座標を取得する関数です。 奥行き情報Zも取得できます。 パーツ単位、モデル単位、ビルボード単位で 使用できます。 頂点単位での2D座標も取得できます。 3Dキャラクターの位置に2Dのスプライトを表示するなどの用途に使えます。 Z情報はスプライト描画時のZ指定の値に使用できます。 E3DChkInViewより後で呼び出してください。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : hsid 形状データを識別するID -1を指定すると、ビルボードの2D位置を取得できます。 3. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 モデル全体の中心座標の2D座標を 取得できます。 4. [IN] int : vertno 取得したい頂点の番号を指定します。 -1を指定した場合は パーツの中心の2D座標を取得します。 5. [OUT] D3DXVECTOR3* : scposptr 指定したパーツの2Dスクリーン座標が (scposptr->x, scposptr->y)に代入されます。 scpospptr->zは奥行き情報です。 この値に0から1の範囲外の値が得られた場合は、 画面に描画されない頂点です。 |
ver5.0.0.1 |
E3DEnableToonEdge | 描画パラメータ | 輪郭線のオンオフをします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線のオンオフをします。 3. [IN] int : type 輪郭線のタイプを指定します。 0を指定してください。 4. [IN] int : flag 輪郭をオンにしたい場合は1を、 オフにしたい場合は0を指定してください。 |
ver5.0.0.1 |
E3DSetToonEdge0Color | 描画パラメータ | 輪郭線の色をセットします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線の色を設定します。 3. [IN] char* : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 partnoに-1を指定している場合は、 "dummy"と指定してください。 4. [IN] E3DCOLOR4UC : col 色を指定します。 col.aは無視されます。 |
ver5.0.0.1 |
E3DSetToonEdge0Width | 描画パラメータ | 輪郭線の幅をセットします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線の色を設定します。 3. [IN] char* : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 partnoに-1を指定している場合は、 "dummy"と指定してください。 4. [IN] float : width 輪郭の幅を指定してください。 |
ver5.0.0.1 |
E3DGetToonEdge0Color | 描画パラメータ | 輪郭線の色を取得します。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] char* : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 4. [OUT] E3DCOLOR4UC* : colptr 輪郭の色が代入されます。 colptr->aは無視されます。 指定したマテリアルが見つからなかった場合は (0, 0, 0)が代入されます。 |
ver5.0.0.1 |
E3DGetToonEdge0Width | 描画パラメータ | 輪郭線の幅を取得します。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] char* : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 4. [OUT] float* : widthptr 輪郭の幅が代入されます。 指定したマテリアルが見つからなかった場合は、 0.0が代入されます。 |
ver5.0.0.1 |
E3DCreateParticle | パーティクル | パーティクルを作成します。 |
1. [IN] int : maxnum 表示できるパーティクルの最大数を指定します。 2000以下の数字を指定してください。 2. [IN] char* : texname テクスチャー名をフルパスで指定します。 3. [IN] float : width パーティクルの幅を指定します。 4. [IN] float : height パーティクルの高さを指定します。 5. [IN] int : blendmode 半透明のブレンドモードを指定します。 0を指定すると テクスチャのアルファによるブレンドをします。 1を指定すると アッドモードでのブレンドをします。 2を指定すると 頂点のアルファを考慮した アッドモードブレンドをします。 6. [IN] int : transparentflag 1を指定すると黒色を透過します(BMP用)。 0を指定すると画像ファイルのアルファをそのまま使います。 7. [IN] int : cmpalways 1を指定するとZバッファの比較を行わずに常に描画するようになります。 通常はは0。 8. [OUT] int* : particleidptr パーティクルを識別するIDが代入されます。 |
ver5.0.0.1 |
E3DDestroyParticle | パーティクル | パーティクルを破棄します。 |
1. [IN] int : particleid 削除したいパーティクルを識別するIDを指定します。 |
ver5.0.0.1 |
E3DSetParticlePos | パーティクル | パーティクルの場所を設定します。 設定した場所からパーティクルが噴き出します。 |
1. [IN] int : particleid パーティクルを識別するIDを指定します。 2. [IN] D3DXVECTOR3 : pos パーティクルの位置を指定します。 |
ver5.0.0.1 |
E3DSetParticleGravity | パーティクル | パーティクルの重力を設定します。 設定した値はY方向の負の加速度として計算に使用されます。 |
1. [IN] int : particleid パーティクルを識別するIDを指定します。 2. [IN] float : gravity 重力を指定します。 |
ver5.0.0.1 |
E3DSetParticleLife | パーティクル | パーティクルの寿命を設定します。 パーティクルが噴き出してから消えるまでの時間を 秒で指定します。 |
1. [IN] int : particleid パーティクルを識別するIDを指定します。 2. [IN] float : life パーティクルの寿命を指定します。 秒。 |
ver5.0.0.1 |
E3DSetParticleEmitNum | パーティクル | パーティクルの生成個数をします。 E3DRenderParticleを呼ぶたびに指定した個数だけ生成されます。 小数での指定が可能です。 例えば0.2と指定した場合は、 5回E3DRenderParticleを呼び出すごとに1個パーティクルが 生成されます。 |
1. [IN] int : particleid パーティクルを識別するIDを指定します。 2. [IN] float : emitnum パーティクルの1回あたりの生成個数を指定します。 |
ver5.0.0.1 |
E3DSetParticleVel0 | パーティクル | パーティクルの速度を指定します。 速度の最低値をminvelに指定し、 速度の最大値をmaxvelに指定します。 最低値と最大値の幅が広いほど、 パーティクルは、まばらに放出されます。 |
1. [IN] int : particleid パーティクルを識別するIDを指定します。 2. [IN] D3DXVECTOR3 : minvel パーティクルの速度の最小値を指定します。 3. [IN] D3DXVECTOR3 : maxvel パーティクルの速度の最大値を指定します。 |
ver5.0.0.1 |
E3DSetParticleRotation | パーティクル | パーティクルの回転を指定します。 この関数を呼び出すたびに、 パーティクルが指定角度だけ回転します。 |
1. [IN] int : particleid パーティクルを識別するIDを指定します。 2. [IN] float : rotation パーティクルの回転を角度(度)で指定します。 |
ver5.0.0.1 |
E3DSetParticleDiffuse | パーティクル | パーティクルの頂点色を指定します。 テクスチャ色とモジュレートされて表示されます。 |
1. [IN] int : particleid パーティクルを識別するIDを指定します。 2. [IN] E3DCOLOR4UC : col パーティクルの頂点色を指定します。 col.aは無視されます。 |
ver5.0.0.1 |
E3DRenderParticle | パーティクル | パーティクルを描画します。 呼び出すたびに、パーティクルの消滅、生成、位置移動をして 描画します。 1.0 / fps 秒だけ時間を進めて描画します。 fpsにマイナスの値を指定した場合は、 パーティクルが静止した状態で描画します。 E3DCreateParticleで指定したmaxnum個より多いパーティクルは 描画できません。 パーティクルの噴出が途中で途切れる場合は、 maxnumの値を増やすかまたは、 E3DSetParticleEmitNumの値を小さくするかまたは、 E3DSetParticleLifeに指定するlifeの値を小さくしてください。 fps引数に1を指定すると各パーティクル関数の時間を秒ではなくてフレーム数で扱えます。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : particleid パーティクルを識別するIDを指定します。 3. [IN] int : fps 1秒間に何回この関数を呼ぶかを 指定してください。 4. [IN] int : onlyupdate 1を指定した場合は、 描画を行わず状態のアップデートのみ行います。 0を指定した場合や省略した場合は 通常通りアップデートと描画を行います。 |
ver5.0.0.1 |
E3DSetParticleAlpha | パーティクル | パーティクルの透明度を設定します。 パーティクルが放出されてからの時間帯ごとに、 設定可能です。 生成されてからの時間が、mintimeからmaxtimeの間にある パーティクルに対して処理を行います。 負荷は気にしなくていい程度です。 呼び出すたびに設定されます。 ループ中で使用します。 (一回だけ呼び出しても意味がありません) |
1. [IN] int : particleid パーティクルを識別するIDを指定します。 2. [IN] float : mintime 3. [IN] float : maxtime 処理したいパーティクルの時間帯を 秒で指定します。 4. [IN] float : alpha 透明度を0から1の間のfloatで指定します。 |
ver5.0.0.1 |
E3DSetParticleUVTile | パーティクル | パーティクルのUVを設定します。 パーティクルが放出されてからの時間帯ごとに、 設定可能です。 生成されてからの時間がmintimeからmaxtimeの間にある パーティクルに対して処理を行います。 この処理はビデオメモリにアクセスする必要があるので、 ちょっと重い処理です。 ひとつの画像にタイル画像を敷き詰めたテクスチャの、UV座標をタイル番号でセットできます。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 呼び出すたびに設定されます。 ループ中で使用します。 (一回だけ呼び出しても意味がありません) |
1. [IN] int : particleid パーティクルを識別するIDを指定します。 2. [IN] float : mintime 3. [IN] float : maxtime 処理したいパーティクルの時間帯を 秒で指定します。 4. [IN] int : unum テクスチャの横方向の分割数を指定します。 5. [IN] int : vnum テクスチャの縦方向の分割数を指定します。 6. [IN] int : tileno 設定したいタイル番号を指定します。 |
ver5.0.0.1 |
E3DInitParticle | パーティクル | パーティクルの発生状態を初期状態に戻します。 | 1. [IN] int : particleid パーティクルを識別するIDを指定します。 |
ver5.0.0.1 |
E3DPickFacePartArray | 当たり判定 | 2Dの画面の座標に対応する3Dモデルの座標を取得できます。 判定したいパーツを指定できる点以外は、 E3DPickFaceと同じです。 詳しくはE3DPciFaceの説明をお読みください。 パーツ番号3とパーツ番号4についてのみ判定を行いたい場合は、 partnum = 2 int partarray[2]; partarray[ 0 ] = 3 partarray[ 1 ] = 4 の様に値をセットしてE3DPickFacePartArrayを呼び出してください。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : hsid モデルを識別する番号を指定してください。 3. [IN] int* : partarray 判定したいパーツ番号を指定します。 要素数partnumの配列のポインタを指定してください。 4. [IN] int : partnum partarray配列の要素数 5. [IN] POINT : pos2d 画面上の2D座標を指定してください。 6. [IN] float : maxdist どのくらいの距離まで3Dモデルの検索をするかを指定します。 この値を小さくするほど処理は高速になります。 7. [OUT] int* : partno 8. [OUT] int* : faceno 2D座標に対応する3D座標が見つかった場合に、 その3Dモデルのパーツの番号と面の番号が 代入されます。 見つからなかった場合は-1が代入されます。 9. [OUT] D3DXVECTOR3* : pos3dptr 2D座標に対応する3D座標が代入されます。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 10. [OUT] D3DXVECTOR3* : nptr 2D座標に対応する3D座標を含む面の法線ベクトルが 代入されます。 ベクトルの大きさは1のものを代入します。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 11. [OUT] float* : distptr 視点とpos3dとの距離が代入されます。 partnoに-1以外の値が代入されているときのみ、 この値は意味を持ちます。 |
ver5.0.0.1 |
E3DChkConfWallPartArray | 当たり判定 | E3DSetMovableArea, または、E3DLoadMQOFileAsMovableAreaで作成した壁データとキャラクターのあたり判定を行います。 判定したい壁データのパーツ番号を指定できる点以外は E3DChkConfWallと同じです。 詳しくは、E3DChkConfWallの説明をお読みください。 壁モデルのパーツ番号3とパーツ番号4についてのみ、 判定を行いたい場合は、 partnum = 2 int partarray[2]; partarray[ 0 ] = 3 partarray[ 1 ] = 4 の用に値をセットしてE3DConfWall3を呼び出してください。 |
1. [IN] int : charahsid 移動する形状データを識別するid 2. [IN] int : groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 3. [IN] int* : partarray 判定したい壁のパーツ番号を指定します。 要素数partnumの配列のポインタを渡してください。 4. [IN] int : partnum partarray配列の要素数 5. [IN] float : dist 跳ね返る距離。 distに大きな値を入れると ぶつかった際に大きく跳ね返るようになります。 6. [OUT] int* : resultptr あたり判定の結果が代入されます。 壁とぶつかった場合は1が、 ぶつからなかった場合は0が代入されます。 7. [OUT] D3DXVECTOR3* : adjustptr result != 0 のときに、 修正後の座標が代入されます。 8. [OUT] D3DXVECTOR3* : nptr result != 0 のときに、 ぶつかった面の法線ベクトルの値が 代入されます。 |
ver5.0.0.1 |
E3DGetMotionIDByName | モーション | モーションの名前からモーションのIDを取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] char* : motname RokDeBone2で設定したモーションの名前。 3. [OUT] int* : motidptr 名前がmotnameであるモーションのIDが代入されます。 見つからなかった場合は負の値が代入されます。 |
ver5.0.0.1 |
E3DGetMotionNum | モーション | 読み込んでいるモーションの総数を取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [OUT] int* : motnumptr モーションの総数が代入されます。 |
ver5.0.0.1 |
E3DChkConfParticle | 当たり判定 | パーティクルとモデルデータのあたり判定をします。 境界球を使用した判定を行います。 モデルデータ側の境界球の半径が大きすぎるときは、 rate引数に1より小さい値を指定して調整してください。 |
1. [IN] int : ptclid パーティクルを識別するid 2. [IN] int : hsid 形状データを識別するid 3. [IN] float : rate モデルデータの境界球の半径に掛け算して 判定します。 1より小さい値を指定すれば、 判定の感度が落ちます。 4. [OUT] int* : confflagptr パーティクルとモデルデータが ぶつかっているときは1が ぶつかっていないときは0が代入されます。 |
ver5.0.0.1 |
E3DLoadSigFileAsGround | 地面 | sigファイルを地面として読み込んでhsidを得る。 sigファイルの読み込み速度はmqoファイルの読み込みよりも だいぶ速くなります。 |
1. [IN] char* : fname *.sig のパス文字列。 2. [IN] float : mult 読み込み倍率を指定してください。 等倍は1.0。 3. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 4. [OUT] int* : hsidptr 読み込んだ形状データを識別するhsidが代入されます。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DLoadSigFileAsGroundFromBuf | 地面 | メモリから地面データのロードを行います。 メモリ内にはsigファイルと同じフォーマットが 入っているとみなして処理します。 テクスチャファイルは、通常読込と同様に ファイルから行います。 resdirにはテクスチャの存在するフォルダのパスを指定してください。 最後に"\\"を付けるのを忘れないでください。 例えば、 "C:\\hsp\\Meida\\" などのように指定してください。 |
1. [IN] char* : resdir テクスチャーのあるフォルダ のパス文字列。 最後に"\\"が必要。 2. [IN] char* : buf バッファのポインタ 3. [IN] int : bufleng バッファの中のデータの長さ 4. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 5. [IN] float : mult 読み込み倍率を指定してください。 等倍は1.0。 6. [OUT] int* : hsidptr 読み込んだ形状データを識別するhsidが代入されます。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DGetCenterPos | モデル位置 | パーツの中心のグローバル座標を取得します。 パーツの中心の座標はE3DChkInViewで計算されます。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 -1を指定すると、モデル全体の中心座標が 取得できます。 3. [OUT] D3DXVECTOR3* : posptr 中心の座標が代入されます。 |
ver5.0.0.1 |
E3DGetFaceNum | モデル情報 | 指定した表示オブジェクトの面の総数を取得します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [OUT] int* : facenumptr 面の総数が代入されます。 |
ver5.0.0.1 |
E3DGetFaceNormal | モデル情報 | 指定した表示オブジェクトの面の法線を取得します。 E3DGetFaceNumで取得した面の総数をfacenumとしたとき、 faceno引数には0からfacenum - 1までの値を 指定してください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] int : faceno 面の番号を指定します。 4. [OUT] D3DXVECTOR3* : nptr 法線のベクトルが代入されます。 |
ver5.0.0.1 |
E3DCreateEmptyMotion | モーション | 姿勢情報の入っていない空のモーションを作成します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] char* : motname モーションの名前の文字列。 3. [IN] int : frameleng 作成するモーションの長さ。フレーム長。 4. [OUT] int* : motidptr 作成したモーションを識別する番号が代入されます。 |
ver5.0.0.1 |
E3DSetTextureMinMagFilter | 描画パラメータ | テクスチャーを拡大縮小表示する際のフィルターを指定します。 3Dモデル、背景、スプライト、ビルボードに指定できます。 minfilter引数には縮小する際のフィルターを指定し、 magfilter引数には拡大する際のフィルターを指定します。 以下の2つの定数を使います。 D3DTEXF_POINT 最近点フィルタ。 目的のピクセル値に最も近い座標のテクセルを使います。 テクスチャがぼやけるのが嫌な場合などに使います。 D3DTEXF_LINEAR 双線形補間フィルタ。 目的のピクセルを取り囲む 2 x 2 領域のテクセルの重み付けした平均を使います。 なめらかな表示をしたいときに使います。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 この引数は、背景の指定の場合のみ意味を持ちます。 2. [IN] int : hsid 形状データを識別するid E3DCreateBGで作成した背景に対して処理を行いたい場合は0を指定します。 ビルボードに対して処理を行いたい場合は-1を指定します。 スプライトに対して処理を行いたい場合は-2を指定します。 3. [IN] int : partno 形状データを識別するidを指定します。 背景の場合は0を指定します。 ビルボードの場合はビルボードIDを指定します。 スプライトの場合はスプライトIDを指定します。 4. [IN] int : minfilter 縮小フィルター 5. [IN] int : magfilter 拡大フィルター |
ver5.0.0.1 |
E3DGetMotionName | モーション | 読み込み済みのモーションの名前を取得します。 motname引数には char motname[256]; で確保したメモリを指定してください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid モーションを識別するid 3. [OUT] char* : motname モーションの名前が代入されます。 |
ver5.0.0.1 |
E3DSetMotionName | モーション | モーションに名前を設定します。 255文字以下(255バイト以下)の名前を設定してください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid モーションを識別するid 3. [IN] char* : motname モーションの名前を指定します。 名前の長さは255文字(255バイト)までです。 |
ver5.0.0.1 |
E3DGetMaterialNoByName | マテリアル | マテリアル名からマテリアル番号を取得します。 マテリアル名はRokDeBone2のメインメニューの 「面マテリアル」メニューを押したときに現れるダイアログで確認できます。 ver4.0.0.1以降のRokDeBone2でmqoからデータを読み込んでいる場合には、マテリアル名はメタセコイアの材質名と同じです。 存在しないマテリアル名を渡した場合は、 マテリアル番号には-3が返されます。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] char* : motname マテリアルの名前を指定します。 名前の長さは255文字(255バイト)までです。 3. [OUT] int* : matnoptr マテリアルの番号が代入されます。 存在しない名前を渡した場合は-3が代入されます。 |
ver5.0.0.1 |
E3DGetMaterialAlpha | マテリアル | マテリアルの透明度を取得します。 透明度は0.0から1.0までのfloatです。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] float* : alphaptr 透明度が代入されます。 |
ver5.0.0.1 |
E3DGetMaterialDiffuse | マテリアル | マテリアルの拡散光(diffuse)を取得します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] E3DCOLOR4UC* : colptr diffuseのRGBが代入されます。 colptr->aは無視されます。 |
ver5.0.0.1 |
E3DGetMaterialSpecular | マテリアル | マテリアルの反射光(specular)を取得します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] E3DCOLOR4UC* : colptr specularのRGBが代入されます。 colptr->aは無視されます。 |
ver5.0.0.1 |
E3DGetMaterialAmbient | マテリアル | マテリアルの周囲光(ambient)を取得します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] E3DCOLOR4UC* : colptr ambientのRGBが代入されます。 colptr->aは無視されます。 |
ver5.0.0.1 |
E3DGetMaterialEmissive | マテリアル | マテリアルの自己照明(emissiver)を取得します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] E3DCOLOR4UC* : colptr emissiveのRGBが代入されます。 colptr->aは無視されます。 |
ver5.0.0.1 |
E3DGetMaterialPower | マテリアル | マテリアルの反射の強さ(power)を取得します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] float* : powerptr powerが代入されます。 |
ver5.0.0.1 |
E3DGetMaterialBlendingMode | マテリアル | マテリアルの半透明モードを取得します。 modeの値の意味は 0のとき 頂点アルファ値による半透明モードです。 1のとき アッドモードです。 2のとき 頂点アルファを考慮したアッドモードです。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] int* : modeptr 半透明モードが代入されます。 |
ver5.0.0.1 |
E3DSetMaterialAlpha | マテリアル | マテリアルの透明度を設定します。 透明度は0.0fから1.0fで指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 透明度1.0以外のものはE3DRenderのwithalpha引数に1を指定したときに表示されます。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] float : alpha 透明度。 |
ver5.0.0.1 |
E3DSetMaterialDiffuse | マテリアル | マテリアルの拡散光(diffuse)を設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : setflag setflagが0のときは、 色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 4. [IN] E3DCOLOR4UC : col 指定したい色をcolで指定します。 col.aは無視されます。 |
ver5.0.0.1 |
E3DSetMaterialSpecular | マテリアル | マテリアルの反射光(specular)を設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : setflag setflagが0のときは、 色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 4. [IN] E3DCOLOR4UC : col 指定したい色をcolで指定します。 col.aは無視されます。 |
ver5.0.0.1 |
E3DSetMaterialAmbient | マテリアル | マテリアルの周囲光(ambient)を設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : setflag setflagが0のときは、 色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 4. [IN] E3DCOLOR4UC : col 指定したい色をcolで指定します。 col.aは無視されます。 |
ver5.0.0.1 |
E3DSetMaterialEmissive | マテリアル | マテリアルの自己照明(emissive)を設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : setflag setflagが0のときは、 色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 4. [IN] E3DCOLOR4UC : col 指定したい色をcolで指定します。 col.aは無視されます。 |
ver5.0.0.1 |
E3DSetMaterialPower | マテリアル | マテリアルの反射の強さ(power)を設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : setflag setflagが0のときは、 powerをそのままセットします。 setflagが1のときは、 現在のマテリアルにpowerを乗算します。 setflagが2のときは、 現在のマテリアルにpowerを足し算します。 setflagが3のときは、 現在のマテリアルからpowerを減算します。 4. [IN] float : power 反射の強さを指定します。 |
ver5.0.0.1 |
E3DSetMaterialBlendingMode | マテリアル | マテリアルの半透明モードを設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 blendmode 0, 1, 2はアルファテストの設定も変更します。 アルファテストの設定を変更したくない場合は blendmode 100, 101, 102をお使いください。 ver5.0.2.2でモードが4つ増えました。 ver5.1.0.1でモードが2つ増えました。 アルファテストを設定したい場合は E3DSetMaterialAlphaTestをご使用ください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : blendmode 0を指定すると 頂点アルファ値による半透明モードになります。 アルファテストはオフになります。 1を指定すると アッドモードになります。 アルファテストはオンになり8より小さいアルファのときに描画されなくなります(Zバッファにも)。 2を指定すると、 頂点アルファを考慮したアッドモードになります。 アルファテストはオフになります。 100を指定すると 頂点アルファ値による半透明モードになります。 アルファテストは変更しません。 101を指定すると アッドモードになります。 アルファテストは変更しません。 102を指定すると、 頂点アルファを考慮したアッドモードになります。 アルファテストは変更しません。 103を指定すると乗算モード 104を指定すると減算モード 105を指定するとスクリーンモード 106を指定するとネガ反転モードになります。 107を指定するとオーバーレイ風合成モード。 108を指定すると覆い焼き風モードになります。 |
ver5.0.0.1 ver5.0.2.2で拡張 ver5.1.0.1で拡張 |
E3DGetTextureFromMaterial | マテリアル | マテリアルに設定されているテクスチャを取得します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] int* : texidptr テクスチャのIDが代入されます。 エラーのときは-1が代入されます。 |
ver5.0.0.1 |
E3DSetTextureToMaterial | マテリアル | マテリアルにテクスチャを設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 テクスチャをセットしても、 UV座標は自動的に生成されません。 動的にテクスチャを設定する場合は、 UV座標もE3DSetUVで設定するか、 もしくは、 あらかじめ、モデルに仮のテクスチャを貼っておいてUV設定しておく必要があります。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : texid テクスチャのIDを指定してください。 |
ver5.0.0.1 |
E3DGetMaterialNo | マテリアル | 面のマテリアル番号を取得します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : faceno 面を識別する番号を指定してください。 4. [OUT] int* : matnoptr マテリアルの番号が代入されます。 |
ver5.0.0.1 |
E3DSetMotionKindML | モーション | ボーンごとに再生するモーションの番号を設定します。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には0をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を2、左ひじの番号を3、左手の番号を4、 右肩のボーン番号を12、右ひじの番号を13、右手の番号を14、 手に持っている武器のボーン番号を22として 武器を除く手の部分にモーションを設定したい場合は、 int list[3]; list[0] = 2 list[1] = 12 list[2] = 0 int notlist[2]; notlist[0] = 22 notlist[1] = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 2を指定すれば2の子供全部に処理が行われるので3,4を指定する必要はない。 同様に12を指定すれば12の子供全部に処理が行われるので13,14を指定する必要はない。 リストの最後には必ず0を指定する。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid モーションを識別するid 3. [IN] int* : list 4. [IN] int* : notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列のポインタ。 詳しくは前記をご覧ください。 |
ver5.0.0.1 |
E3DSetMotionFrameNoML | モーション | ボーンごとに再生するモーションの番号とフレーム番号を設定します。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には0をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を2、左ひじの番号を3、左手の番号を4、 右肩のボーン番号を12、右ひじの番号を13、右手の番号を14、 手に持っている武器のボーン番号を22として 武器を除く手の部分にモーションを設定したい場合は、 int list[3]; list[0] = 2 list[1] = 12 list[2] = 0 int notlist[2]; notlist[0] = 22 notlist[1] = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 2を指定すれば2の子供全部に処理が行われるので3,4を指定する必要はない。 同様に12を指定すれば12の子供全部に処理が行われるので13,14を指定する必要はない。 リストの最後には必ず0を指定する。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid モーションを識別するid 3. [IN] int : frameno フレーム番号。 4. [IN] int* : list 5. [IN] int* : notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列へのポインタ。 詳しくは前記をご覧ください。 |
ver5.0.0.1 |
E3DSetNextMotionFrameNoML | モーション | 現在再生しているモーションの後につづけて再生するモーションをボーンごとに設定します。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には0をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を2、左ひじの番号を3、左手の番号を4、 右肩のボーン番号を12、右ひじの番号を13、右手の番号を14、 手に持っている武器のボーン番号を22として 武器を除く手の部分にモーションを設定したい場合は、 int list[3]; list[0] = 2 list[1] = 12 list[2] = 0 int notlist[2]; notlist[0] = 22 notlist[1] = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 2を指定すれば2の子供全部に処理が行われるので3,4を指定する必要はない。 同様に12を指定すれば12の子供全部に処理が行われるので13,14を指定する必要はない。 リストの最後には必ず0を指定する。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : srcmotid 3. [IN] int : nextmotid 4. [IN] int : nextframeno 5. [IN] int : befframeno srcmotidのモーションがbefframeフレーム番号に達した後、nextmotidのモーションのnextframenoのフレーム番号にジャンプするように設定されます。 befframeに-1をセットした場合は、srcmotidが最終フレームに達した後にジャンプします。 6. [IN] int* : list 7. [IN] int* : notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列へのポインタ。 詳しくは前記をご覧ください。 |
ver5.0.0.1 |
E3DSetMOAEventNoML | モーション | モーションアクセラレータのイベント番号をボーンごとに設定します。 この命令を必要な分だけ呼んだ後に1回E3DSetNewPoseMLを呼ぶ必要があります。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には0をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を2、左ひじの番号を3、左手の番号を4、 右肩のボーン番号を12、右ひじの番号を13、右手の番号を14、 手に持っている武器のボーン番号を22として 武器を除く手の部分にモーションを設定したい場合は、 int list[3]; list[0] = 2 list[1] = 12 list[2] = 0 int notlist[2]; notlist[0] = 22 notlist[1] = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 2を指定すれば2の子供全部に処理が行われるので3,4を指定する必要はない。 同様に12を指定すれば12の子供全部に処理が行われるので13,14を指定する必要はない。 リストの最後には必ず0を指定する。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : eventno モーションの変化のトリガーとなるイベント番号。 3. [IN] int* : list 4. [IN] int* : notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列へのポインタ。 詳しくは前記をご覧ください。 |
ver5.0.0.1 |
E3DGetMotionFrameNoML | モーション | 指定したボーンのモーション番号とフレーム番号を取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : boneno ボーンを識別するID 3. [OUT] int* : motidptr モーション番号が代入されます。 4. [OUT] int* : framenoptr フレーム番号が代入されます。 |
ver5.0.0.1 |
E3DGetNextMotionFrameNoML | モーション | E3DSetNextMotionFrameNoMLで設定した情報をボーンごとに取得します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : boneno ボーンを識別するID 3. [IN] int : motid モーションを識別するID 4. [OUT] int* : nextmotidptr ジャンプ先のモーション番号が代入されます。 5. [OUT] int* : nextframenoptr ジャンプ先のフレーム番号が代入されます。 |
ver5.0.0.1 |
E3DSetNewPoseML | モーション | マルチレイヤーモーションの仕様に従って、新しい姿勢情報をそれぞれのボーンにセットします。 |
1. [IN] int : hsid 形状データを識別するID |
ver5.0.0.1 |
E3DGetCurrentBonePos | モデル情報 | 現在のボーンの位置を取得します。 E3DSetNewPose, E3DSetNewPoseMLの結果を使用します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : boneno ボーンを識別するID 3. [IN] int : poskind poskind = 0 ---> ローカル座標(ボーン変形なし) poskind = 1 ---> グローバル座標(ボーン変形あり) poskind = 2 ---> ローカル座標(ボーン変形あり) 4. [OUT] D3DXVECTOR3* : posptr ボーンの位置が代入されます。 |
ver5.0.0.1 |
E3DGetCurrentBoneQ | モーション | 現在のボーンの姿勢情報を取得します。 E3DSetNewPose, E3DSetNewPoseMLの結果を使用します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] int : kind 親の影響を受けたクォータニオンを 取得する場合は1を指定してください。 親の影響を受けていないクォータニオンを 取得する場合は0を指定してください。 親の影響を受け、 更に、モデル全体の向きの影響を受けたクォータニオンを取得 するには2を指定してください。 4. [IN, OUT] int : qid クォータニオンを識別する番号。 E3DCreateQで取得した番号を指定してください。 qidで識別されるクォータニオンの内容に、 指定したボーンのクォータニオンの内容を代入します。 |
ver5.0.0.1 |
E3DChkBumpMapEnable | 描画パラメータ | ハードウェアがバンプマップを表示可能かどうかを調べます。 E3DInitよりも後で呼び出してください。 |
1. [OUT] int* : flagptr バンプマップ表示可能の場合は0以外が、 表示不可能のときは0が代入されます。 |
ver5.0.0.1 |
E3DEnableBumpMap | 描画パラメータ | バンプマップ表示を使用するかどうかを設定します。 | 1. [IN] int : flag 0を指定するとバンプマップを表示しません。 1を指定するとハードウェアに能力がある場合に限り、バンプマップを表示可能にします。 |
ver5.0.0.1 |
E3DConvHeight2NormalMap | テクスチャ | 白黒の高さマップの画像データを、E3Dで使用可能な法線マップに変換します。 | 1. [IN] char* : hmapname 白黒画像のファイルのパス。 2. [IN] char* : nmapname 法線マップのファイルのパス。 出力ファイル名。BMPのみ有効。 3. [IN] float : hparam バンプマップの高さのパラメータ。 値が大きいほど段差がきつくなります。 |
ver5.0.0.1 |
E3DSetBumpMapToMaterial | マテリアル | E3DCreateTextureで作成したテクスチャをバンプマップに設定します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : texid テクスチャのIDを指定してください。 -1を指定するとバンプマップが無効になります。 |
ver5.0.0.1 |
E3DGetMOATrunkInfo | モーション | MOAの分岐元モーションの情報を取得します。 trunkinfoptr引数にはusercoef.hで定義されている MOATRUNKINFO構造体へのポインタを渡してください。 trunkinfo.idlingはアイドリングモーションかどうかを0と1で表します。 trunkinfo.ev0idleはイベント番号0でアイドリングに戻すかどうかを表します。 trunkinfo.comidは共通分岐イベント番号です。 trunkinfo.notcomnumは共通分岐禁止イベント番号の個数を表します。 trunkinfo.notcomidは共通分岐禁止イベント番号です。notcomnum個だけのintがセットされている配列のポインタです。 trunkinfo.branchnumは分岐先モーションがいくつあるかを表します。 この命令に渡すmotidはE3DGetMOAInfoで取得したIDを使用してください。 motid 0 (補間モーション)を指定すると trunkinfoにはすべて0が代入されます。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID 3. [OUT] MOATRUNKINFO* : trunkinfoptr 分岐元モーションの情報が代入されます。 |
ver5.0.0.1 |
E3DGetMOABranchInfo | モーション | MOAの分岐先モーションの情報を取得します。 branchnumにはE3DGetMOATrunkInfoで取得した trunkinfo.branchnum を指定してください。 branchinfoptr引数にはusercoef.hで定義されているMOABRANCHINFO構造体の配列へのポインタを渡してください。 branchinfoptr = (MOABRANCHINFO*)malloc( sizeof( MOABRANCHINFO ) * branchnum ); で作成したポインタを渡してください。 branchinfo.motidは分岐先モーションのモーションID。 branchinfo.eventnoはイベント番号。 branchinfo.frameno1は分岐元フレーム番号。 branchinfo.frameno2は分岐先フレーム番号。 branchinfo.notfuは補間なしで変化させるかどうか。 この命令に渡すmotidはE3DGetMOAInfoで取得したIDを使用してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : motid モーションを識別するID 3. [OUT] MOABRANCHINFO* : branchinfoptr 分岐先モーションの情報が代入されます。 前述の方法でmallocした配列を指定してください。 4. [IN] int : branchnum branchinfoptrをmallocしたときのbranchnumを指定してください。 5. [OUT] int* : getnum 分岐先モーション情報をいくつ取得したかが代入されます。 |
ver5.0.0.1 |
E3DSetMOABranchFrame1 | モーション | MOAの分岐の分岐元フレーム番号情報を設定します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : tmotid 分岐元モーションを識別するID 3. [IN] int : bmotid 分岐先モーションを識別するID 4. [IN] int : frame1 分岐の分岐元フレーム番号 -1指定は、いつでも分岐することを表します。 |
|
E3DSetMOABranchFrame2 | モーション | MOAの分岐の分岐先フレーム番号情報を設定します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : tmotid 分岐元モーションを識別するID 3. [IN] int : bmotid 分岐先モーションを識別するID 4. [IN] int : frame2 分岐の分岐先フレーム番号 |
|
E3DSetDispSwitch | 描画パラメータ | ディスプレイスイッチのアニメーションの設定をします。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : boneno ボーンを識別するパーツの番号 3. [IN] int : motid モーションを識別するID 4. [IN] int : switchid スイッチの番号。0から99 5. [IN] int : frameno モーションのフレーム番号 6. [IN] int : switchflag スイッチの状態。 0がオフ。1がオン。 |
ver5.0.0.1 |
E3DQtoEuler | 算術 | クォータニオンの姿勢をオイラー角に変換します。 回転の順番はZ軸、X軸、Y軸です。 |
1. [IN] int : qid クォータニオンを識別するID 2. [OUT] D3DXVECTOR3* : newdegptr オイラー角が代入されます。 3. [IN] D3DXVECTOR3 : olddeg 前回E3DQtoEulerした結果を指定します。 計算時にolddegに一番近い角度をnewdegに代入します。 初回時には0を指定してください。 |
ver5.0.0.1 |
E3DEnablePhongEdge | 描画パラメータ | 色P時に輪郭線を表示するかを指定します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : flag 輪郭線を表示するとき1、しないとき0 |
ver5.0.0.1 |
E3DSetPhongEdge0Params | 描画パラメータ | 色P時の輪郭線の色と幅と半透明モードを設定します。 半透明の輪郭線はE3DRenderのwithalpha引数に1を指定したときに表示されます。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] E3DCOLOR4UC : col 輪郭線の色をRGBで指定します。 col.aは無視されます。 5. [IN] float : width 輪郭線の幅をfloatで指定します。 6. [IN] int : blendmode 輪郭線の半透明モードを指定します。 0を指定すると頂点アルファによる半透明 1を指定するとアッドモード 2を指定すると頂点アルファを考慮したアッドモード 3を指定すると不透明 になります。 7. [IN] float : alpha 輪郭線の頂点アルファを指定します。 blendmodeで0または2を指定したときに 意味を持ちます。 0.0から1.0の間のfloatを指定してください。 |
ver5.0.0.1 |
E3DGetDispSwitch | モーション | ディスプレイスイッチを取得します。 E3DSetNewPose, E3DSetNewPoseMLの結果を利用します。 dispswitch変数は int dispswitch[DISPSWITCHNUM]; で確保してからこの命令に渡してください。 DISPSWITCHNUMはusercoef.hで定義されています。 (スイッチの総数です) スイッチがオフのとき0がオンのときは0以外が代入されます。 例えばスイッチ3がオンのときは dispswitch[ 3 ] に0以外が代入されます。 |
1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : dispswitch スイッチの状態が代入されます。 詳しくは前記をご覧ください。 3. [IN] int : leng dispswitch配列を作成したときの 要素数を指定します。 通常DISPSWITCHNUMを指定します。 |
ver5.0.0.1 |
E3DFreeThread | スレッド管理 | スレッドのリソースを解放します。 この命令を実行が終わったスレッドに対して呼ぶことで 4098回の呼び出し回数制限を緩和することが出来ます。 ただしこの命令を使用しても一度にアクティブにできる スレッド命令は4098個のままです。 |
1. [IN] int : threadid スレッドを識別するID |
ver5.0.0.1 |
E3DLoadSigFileAsGroundThread | 地面 | スレッドを作成してE3DLoadSigFileAsGroundを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadSigFileAsGroundの説明もお読みください。 |
1. [IN] char* : fname *.sig のパス文字列。 2. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 3. [IN] float : mult 読み込み倍率を指定してください。 等倍は1.0。 4. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DLoadSigFileAsGroundFromBufThread | 地面 | スレッドを作成してE3DLoadSigFileAsGroundFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は全部で4098回まで 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadSigFileAsGroundFromBufの説明もお読みください。 |
1. [IN] char* : resdir テクスチャーのあるフォルダ のパス文字列。 最後に"\\"が必要。 2. [IN] char* : buf バッファのポインタ 3. [IN] int : bufleng バッファの中のデータの長さ 4. [IN] int : adjustuvflag UV値を正規化するかどうかのフラグ。 正規化する場合は1を指定。 しない場合は0を指定。 2を指定すると0.0から1.0の間にクランプします。 5. [IN] float : mult 読み込み倍率を指定してください。 等倍は1.0。 6. [OUT] int* : threadidptr 作成したスレッドを識別するIDが代入されます。 |
ver5.0.0.1 ver5.0.2.6で拡張 |
E3DSetLightIdOfBumpMap | ライト | バンプマップを照らす光源を1つだけ選択します。 平行光源でも点光源でもOKです。 |
1. [IN] int : lid ライトを識別するID |
ver5.0.0.1 |
E3DSetSpriteUV | スプライト | スプライトのUVを設定します。 |
1. [IN] int : spid スプライトを識別するID 2. [IN] float : startu U方向の表示開始点を0から1で指定します。 3. [IN] float : endu U方向の表示終了点を0から1で指定します。 4. [IN] float : startv V方向の表示開始点を0から1で指定します。 5. [IN] float : endv V方向の表示終了点を0から1で指定します。 |
ver5.0.0.1 |
E3DCreateRenderTargetTexture | テクスチャ | レンダリング可能なテクスチャを作成します。 この命令が成功するとスワップチェインIDとテクスチャIDが取得できます。 テクスチャのサイズは2の乗数にしてください。 消費するビデオメモリ量は texsize.cx * texsize.cy * ( 4 + 2 ) バイトです。 メモリ不足などでこの命令が失敗した場合には エラーにならずにokflagに0が代入されます。 失敗した場合はテクスチャサイズを小さくするなどして 再試行してみてください。 |
1. [IN] SIZE : texsize texsize.cx, texsize.cyにテクスチャのサイズを指定してください。詳しくは前記をご覧ください。 2. [IN] int : fmt 作成したいテクスチャのフォーマットを指定します。 D3DFMT_で始まる 定数を使用してください。 3. [OUT] int* : scidptr スワップチェインIDが代入されます。 4. [OUT] int* : texidptr テクスチャIDが代入されます。 5. [OUT] int* : okflagptr 成功した場合は1が 失敗した場合は0が代入されます。 6. [IN] int : needz needzに0を指定した場合はZバッファを作成しません。 作成したレンダーターゲットテクスチャをE3DBlendRTTextureでしか使わない場合などはneedzを0に出来ます。 デフォルト値は1。 |
ver5.0.0.1 ver5.5.0.8で拡張 |
E3DDestroyRenderTargetTexture | テクスチャ | レンダーターゲットテクスチャを破棄します。 |
1. [IN] int : scid E3DCreateRenderTargetTextureで 取得したスワップチェインIDを指定します。 2. [IN] int : texid E3DCreateRenderTargetTextureで 取得したテクスチャIDを指定します。 |
ver5.0.0.1 |
E3DSetDSFillUpMode | モーション | 補間時に補間前のモーションのスイッチ状態を表示するか、もしくは補間後のモーションのスイッチ状態を表示するかを選びます。 MOA専用です。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : mode 0を指定すると補間前のモーションの スイッチ状態を表示します。 1を指定すると補間後のモーションの スイッチ状態を表示します。 |
ver5.0.0.1 |
E3DSetTexFillUpMode | モーション | 補間時に補間前のモーションのテクスチャアニメの状態を表示するか、もしくは補間後のモーションのテクスチャアニメの状態を表示するかを選びます。 MOA専用です。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : mode 0を指定すると補間前のモーションの テクスチャを表示します。 1を指定すると補間後のモーションの テクスチャを表示します。 |
ver5.0.0.1 |
E3DSetShadowBias | 描画パラメータ | 影をレンダリングする際のZバッファのバイアスを設定します。 一般に大きい値を設定すればマッハバンド(縞模様)が消えます。 |
1. [IN] float : bias Zバッファの誤差を緩和するためのバイアスを指定します。 デフォルト値は0.005です。 |
ver5.0.0.1 |
E3DRenderWithShadow | 描画 | 影付きのシーンを一括レンダリングします。 内部でE3DChkInView、E3DBeginScene、E3DEndSceneも 呼ばれます。 全ての不透明を描画後、半透明が描画されます。 hsidarray(配列)にレンダリングしたいhsidを格納してから呼び出します。 |
1. [IN] int : scid 影付きのシーンをレンダリングするための スワップチェインIDを指定してください。 2. [IN] int : rtscid 3. [IN] int : rttexid シャドウマップ用のE3DCreateRenderTargetTexture で取得したscidとtexidを指定してください。 4. [IN] int* : hsidarray 描画したいhsidを配列に格納してください。 ビルボードを描画したいときはhsidに-1を 格納してください。 5. [IN] int : num hsidarrayに何個のhsidを格納したかを指定してください。 6. [IN] int : skipflag skipflagに1を指定すると 画面のバッファのクリアと背景の描画を スキップします。 通常は0. BeginSceneとEndSceneはスキップしません。 E3DBeginScene scid1 前に描画したいものをレンダー E3DEndScene E3DRenderWithShadow (skipflag = 1) E3DBeginScene scid1, 1 後に描画したいものをレンダー E3DEndScene のように描画してください。 |
ver5.0.0.1 |
E3DChkShadowEnable | 描画パラメータ | ハードウェアで影の描画が出来るかどうかを調べます。 | 1. [OUT] int* : flagptr 影の描画が出来る時は0以外が 出来ないときは0が代入されます。 |
ver5.0.0.1 |
E3DEnableShadow | 描画パラメータ | 影の描画をオンまたはオフにします。 | 1. [IN] int : flag 1をセットすると影の描画が可能な時は描画するようにします。 0をセットすると影の描画は行わないようにします。 |
ver5.0.0.1 |
E3DCheckRTFormat | テクスチャ | E3DCreateRenderTargetTextureで作成できるフォーマットを調べます。 |
1. [IN] int : fmt 調べたいフォーマットを指定します。 D3DFMT_で始まる 定数を使用してください。 2. [OUT] int* : okflagptr 指定したフォーマットが使用可能な時は0以外が 使用不可な時は0が代入されます。 |
ver5.0.0.1 |
E3DSetShadowDarkness | 描画パラメータ | 影の暗さを設定します。 darknessに指定した係数にAmbientを掛けたものが 影の色となります。 デフォルト値は1.0です。 0に近づくほど暗くなります。 |
1. [IN] float : darkness 0以上のfloat。 アンビエントに掛け算して影の色とする。 |
ver5.0.0.1 |
E3DRenderBatch | 描画 | E3DRenderのバッチ版。hsidをまとめて描画することにより高速化。 内部でE3DChkInView、E3DBeginScene、E3DEndSceneも 呼ばれます。 全ての不透明を描画後、半透明が描画されます。 |
1. [IN] int : scid スワップチェインIDを指定してください。 2. [IN] int* : hsidarray 描画したいhsidを格納した配列。 3. [IN] int : num hsidarrayに何個のhsidをセットしたか。 4. [IN] int : needchkinview 内部でChkInViewを呼ぶかどうかのフラグ。 5. [IN] int : skipflag 0以外をセットすると 画面バッファのクリアと背景の描画をスキップします。 BeginSceneとEndSceneはスキップしません。 デフォルト値は0。 |
ver5.0.0.1 |
E3DSetVertPosBatch | モデル情報 | E3DSetVertPosのバッチ版。まとめて高速化。 あたり判定データの更新はされません。 |
1. [IN] int : hsid 形状データを識別するID。 2. [IN] int : partno パーツを識別するID。 3. [IN] int* : vertnoarray 位置を設定したい頂点の番号を配列にセットしてください。 4. [IN] int : vnum 何個の頂点の位置を設定するかをセットしてます。 vertnoarrayとvertarrayの要素数をセットしてください。 5. [IN] D3DXVECTOR3* : vertarray 頂点の座標を配列にセットしてください。 |
ver5.0.0.1 |
E3DSetShadowMapLightDir | 描画パラメータ | 影用の平行光源の向きを設定します。 | 1. [IN] D3DXVECTOR3 : dir 平行光源の向きをベクトルで指定します。 |
ver5.0.0.1 |
E3DRenderBatchMode | 描画 | E3DRenderBatchの拡張版。 hsidごとに不透明のみを描画するか 半透明のみを描画するか 不透明と半透明の両方を描画するかを指定できます。 適切に設定することで描画速度が速くなります。 hsidarrayにはパーティクルのIDを指定することもできます。 パーティクルはmode 2のみ有効です。 パーティクルをhsidarrayに含める場合はこの命令を呼ぶ前に onlyupdate引数を1にしてE3DRenderParticleを呼んでおく必要があります。 |
1. [IN] int : scid スワップチェインIDを指定してください。 2. [IN] int* : hsidarray 描画したいhsidを格納した配列。 3. [IN] int : num hsidarrayに何個のhsidをセットしたか。 4. [IN] int : needchkinview 内部でChkInViewを呼ぶかどうかのフラグ。 5. [IN] int : skipflag 0以外をセットすると 画面バッファのクリアと背景の描画をスキップします。 BeginSceneとEndSceneはスキップしません。 デフォルト値は0。 6. [IN] int* : modearray 描画モードを格納した配列。 hsidarrayと同じ長さの配列。 配列の要素に1を指定すると不透明のみ 2を指定すると半透明のみ 3を指定すると両方を描画します。 |
ver5.0.0.1 |
E3DGlobalToLocal | 算術 | グローバル座標系からキャラクターのローカル座標系への変換。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] D3DXVECTOR3 : srcpos 変換前の座標を指定します。 3. [OUT] D3DXVECTOR3* : dstposptr 変換後の座標が代入されます。 |
ver5.0.0.1 |
E3DLocalToGlobal | 算術 | キャラクターのローカル座標系からグローバル座標系への変換。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] D3DXVECTOR3 : srcpos 変換前の座標を指定します。 3. [OUT] D3DXVECTOR3* : dstposptr 変換後の座標が代入されます。 |
ver5.0.0.1 |
E3DSetShadowMapMode | 描画パラメータ | シャドウマップのモードを設定します。 モード0を指定するとLiSPSMの方法で E3DSetShadowMapLightDirを呼び出すだけで自動的に 適切なシャドウマップを作成します。 モード1を指定するとE3DSetShadowMapCameraと E3DSetShadowMapProjOrthoを使用する マニュアル設定のモードになります。 この命令を呼び出さなかった場合は モード0が適用されます。 |
1. [IN] int : mode モード(0または1)を指定します。 詳しくは前記をご覧ください。 |
ver5.0.0.1 |
E3DSetShadowMapCamera | 描画パラメータ | シャドウマップを作成する際のカメラの位置を設定します。 影を落とす際のライトの位置と同じ意味です。 |
1. [IN] D3DXVECTOR3 : pos カメラの位置を指定します。 2. [IN] D3DXVECTOR3 : target カメラの注視点を指定します。 3. [IN] D3DXVECTOR3 : upvec カメラの上方向ベクトルを 指定します。 通常は( 0.0, 1.0, 0.0 )を指定します。 |
ver5.0.0.1 |
E3DSetShadowMapProjOrtho | 描画パラメータ | シャドウマップを作成する際のプロジェクションを設定します。 どのくらいの範囲のシーンをシャドウマップにするかが決定されます。 |
1. [IN] int : rttexid E3DCreateRenderTargetTextureで作成したシャドウマップ用のテクスチャIDを渡します。 2. [IN] float : near 視野内のカメラから一番近い距離を指定します。 あまり小さいとZバッファの精度が悪くなります。 3. [IN] float : far 視野内のカメラから一番遠い距離を指定します。 あまり大きいとZバッファの精度が悪くなります。 4. [IN] float : viewsize 正射影のビューのボリュームサイズを指定します。 |
ver5.0.0.1 |
E3DLoadTextureFromBuf | テクスチャ | 作成済みのテクスチャにバッファから画像ファイルを読み込みます。 テクスチャの内容を頻繁に更新したいときに この命令を使えばテクスチャの作成と破棄を繰り返さなくても すみます。 ループの外で1回E3DCreateTextureなどでテクスチャを作っておき ループ中でこのE3DLoadTextureFromBufを呼び出すことを想定しています。 |
1. [IN] int : texid 作成済みのテクスチャを識別するID 2. [IN] char* : buf バッファのポインタ ファイルのイメージがバッファに入っていると 想定します。 3. [IN] int : bufleng バッファの中のデータの長さ(バイト) 4. [IN] int : transparent 透過情報を指定します。 texidを取得するときのテクスチャ作成命令に 指定したのと同じtransparentを指定してください。 |
ver5.0.0.1 |
E3DSetShadowMapInterFlag | 描画パラメータ | シャドウマップにパーツを含めるかどうかのフラグを設定します。 シャドウマップモード0用です。 フラグには usercoef.hで定義されているSHADOWIN_*を指定します。 SHADOWIN_PROJのときは パーツの一部分でも視野内に入っている場合には パーツ全体がシャドウマップに含まれるようにします。 キャラクターデータのデフォルト値です。 SHADOWIN_ALWAYSのときは 視野内に入っているかどうかにかかわらず 必ずシャドウマップにパーツ全体が含まれるようにします。 シャドウマップに入るパーツが広い範囲に散らばれば散らばるほど 影の品質は悪くなります。 ですのでシャドウマップに入れるかどうかを動的に判定し、 必要がなくなったら SHADOWIN_PROJやSHADOWIN_NOTに戻すことを推奨します。 SHADOWIN_NOTのときは シャドウマップに入れるかどうかをE3D側で制御しません。 地面などの大きいオブジェクト用のモードです。 地面データのデフォルト値です。 ver5.2.2.6よりSHADOWIN_EXCLUDEが追加されました。 SHADOWIN_EXCLUDEを指定した場合は シャドウマップから指定パーツを除外します。 |
1. [IN] int : hsid 形状データを識別するID。 2. [IN] int : partno パーツを識別するID。 -1を指定すると全てのパーツに対し処理を行います。 3. [IN] int : flag SHADOWIN_ではじまる定数を指定します。 詳しくは前記をご覧ください。 |
ver5.0.0.1 ver5.2.2.6で拡張 |
E3DSetMaterialAlphaTest | マテリアル | マテリアルごとにアルファテストのオンオフを設定できます。 E3DSetMaterialBlendingModeで0、1、2の値をセットしている場合はアルファテストも自動的に設定されるようになっています。 自動設定させたくない場合はblendmode 100、101、102を使用するか、もしくはE3DSetMaterialBlendingModeの後で E3DSetMaterialAlphaTestを呼び出してください。 アルファテストをオンにした場合は アルファの値が閾値よりも小さい場合に描画されなくなります。 (Zバッファにも描画されなくなります。) |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : alphatest0 不透明を描画時にアルファテストする場合は1を しない場合は0を指定します。 4. [IN] int : alphaval0 不透明時のアルファテストのアルファの閾値。 (0から255) 5. [IN] int : alphatest1 半透明を描画時にアルファテストする場合は1を しない場合は0を指定します。 6. [IN] int : alphaval1 半透明時のアルファテストのアルファの閾値。 (0から255) |
ver5.0.0.1 |
E3DTransformBillboard | 描画準備 | ビルボードの視野内判定と位置計算とソートを行います。 デフォルト状態のE3DRenderBillboardでは これらの描画準備の計算と描画の処理がいっぺんに行われていました。 そのためあたり判定は描画の後にしなくてはならず、 実際の描画と判定が1フレームずれるという問題がありました。 この問題を解決するためにこの命令を追加しました。 この命令を呼び出したあとビルボードの位置などに変更がない場合は、E3DRenderBillboardのtransskip引数に1を設定します。 そうすることで2度同じ描画準備の計算を行うことを防ぎます。 E3DTransformBillboard あたり判定 E3DRenderBillboard (transskip = 1) のように使ってください。 |
引数なし | ver5.0.0.1 |
E3DGetVersion | バージョン | easy3d.dllのバージョンを取得します。 | 1. [OUT] int* : verptr バージョンが代入されます。 |
ver5.0.0.1 |
E3DChkVertexShader | 描画パラメータ | 実行マシンの頂点シェーダーのバージョンを取得します。 | 1. [OUT] int* : verptr バージョンが代入されます。 ver1.1のときは11が代入され ver2.0以上の時は20が代入されます。 頂点シェーダーがない場合は0が代入されます。 |
ver5.0.0.1 |
E3DSetToon0Params | 描画パラメータ | COL_TOON0を指定したときの トゥーンの影の付き方を指定します。 この関数の仕様は将来変更になる可能性が高いです。 darkrate, brightrateは、暗い色、明るい色の色値を制御するパラメータ。 diffuseに掛け算されて使用されます。 darkdeg, brightdegは、暗い色、明るい色の大きさを制御するパラメータ。 これらのパラメータは、角度(度)で、指定します。 ライトと面の法線との角度です。 ライトと面の法線との角度をdegnlとすると、 0 < degnl < brightdeg の部分が明るい色になります。 brightdeg < degnl < darkdeg の部分が通常の色になります。 darkdeg < degnl < 90 の部分が暗い色になります。 90 < degnl < 180 の部分は、常に、暗い色になります(シェーダーのパラメータが持てる値の範囲に制限があるため) ですので、darkdegには、brightdegより、大きい値を指定してください。 darkdeg, brightdegには、0.0から90.0の値を指定してください。 darkdeg, brightdegのデフォルト値は、それぞれ、66.4、25.8です。 (ここで言うライトの向きとは、頂点から、ライトの光源への向きです。) partnoで、指定したパーツにだけ、設定することが出来ます。 -1を指定すると、すべてのパーツに設定されます。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するid 3. [IN] TOON0PARAMS : toon0 トゥーンのパラメータ。 |
ver5.0.0.1 |
E3DGetMaterialNum | マテリアル | モデルデータの色P用のマテリアルの数を取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [OUT] int* : numptr 色P用のマテリアルの数が代入されます。 |
ver5.0.0.4 |
E3DGetMaterialInfo | マテリアル | 色P用のマテリアル情報を一括取得します。 MATERIALINFO構造体はusercoef.hで定義されています。 以下にMATERIALINFOのメンバの説明を書きます。 materialnoはマテリアル番号。 nameはマテリアル名。 alphaは透明度。 diffuseは拡散光。 specularは反射光。 ambientは周囲光。 emissiveは自己照明。 powerは反射の強さ。 arraylengにはE3DGetMaterialNumで取得したマテリアルの数をセットしてください。 infoptrは infoptr = (MATERIALINFO*)malloc( sizeof( MATERIALINFO) * arrayleng ); で作成したポインタを渡してください。 diffuse.a, specular.a, ambient.a, emissive.aには 常に255が代入されます。 |
1. [IN] int : hsid 形状データを識別するid 2. [OUT] MATERIALINFO* : infoptr 情報を格納する構造体へのポインタ。 作成方法は前記をご覧ください。 3. [IN] int : arrayleng infoptrを作成したときの要素数を指定してください。 4. [OUT] int* : getnumptr infoptrにいくつの要素が代入されたかがセットされます。 |
ver5.0.0.4 |
E3DGetToon1MaterialNum | マテリアル | 色ト(COL_TOON1)用のマテリアルの数を取得します。 トゥーンマテリアルとは通常のマテリアルとは異なります。 RokDeBone2の「トゥ」ボタンを押したときに出てくるダイアログに表示されているマテリアルのことです。 一回もトゥーン表示したことが無い状態でこの命令を呼ぶと、マテリアル数には0が返ってきます。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno 表示用パーツを識別するid 3. [OUT] int* : numptr COL_TOON1用のマテリアルの数が代入されます。 |
ver5.0.0.4 |
E3DGetToon1MaterialInfo | マテリアル | 色ト(COL_TOON1)用のマテリアル情報を取得します。 TOON1MATERIALINFO構造体はusercoef.hで定義されています。 以下にTOON1MATERIALINFOのメンバの説明を書きます。 nameはマテリアルの名前。 ambientは暗い所の色。 specularはハイライト部分の色 diffuseはambient,specular以外の部分の色。 edgevalidは輪郭線を表示するかどうかの0か1。 edgecol0は輪郭線の色。 edgewidthは輪郭線の幅。 arraylengにはE3DGetToon1MaterialNumで取得したマテリアルの数をセットしてください。 infoptrは infoptr = (TOON1MATERIALINFO*)malloc( sizeof( TOON1MATERIALINFO) * arrayleng ); で作成したポインタを渡してください。 diffuse.a, specular.a, ambient.a, edgecol0.aには 常に255が代入されます。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno 表示パーツを識別するid 3. [OUT] TOON1MATERIALINFO* : infoptr 情報を格納する構造体へのポインタ。 作成方法は前記をご覧ください。 4. [IN] int : arrayleng infoptrを作成したときの要素数を指定してください。 5. [OUT] int* : getnumptr infoptrにいくつの要素が代入されたかがセットされます。 |
ver5.0.0.4 |
E3DSetJointInitialPos | モデル情報 | ジョイント(ボーン)の初期位置をローカル座標系で設定します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : jointno ジョイントを識別するパーツのid 3. [IN] D3DXVECTOR3 : pos ジョイントの位置をローカル座標系で指定します。 4. [IN] int : calcflag 頂点の影響度の再計算をするときは1を、しないときは0を指定します。 5. [IN] int : excludeflag calcflagに1を指定したときのみ意味を持ちます。 1を指定するとE3DSetValidFlagで無効にしているパーツの影響度は再計算しません。 0を指定すると無効にしているパーツも全て再計算の対象になります。 |
ver5.0.0.5 |
E3DSetVertexDiffuse | モデル情報 | sigモデルの拡散色を頂点単位でセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 diffuseだけかえても、Specular, Ambientを変えないと意図した色にはならないと思いますので注意してください。 (E3DSetVertexSpecular, E3DSetVertexAmbient, E3DSetVertexEmissive, E3DSetVertexSpecularPowerもご覧ください。) メタセコイアの材質単位で色を変えたい場合は 「マテリアル」グループの関数をご覧ください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 -1を指定すると全てのパーツの色を設定できます。 3. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合には partnoで指定したパーツ全体の色の設定をします。 4. [IN] E3DCOLOR4UC : col 指定したい色を(col.r, col.g, col.b)で指定します。 setflagに乗算を指定した場合は、 各成分に、r/255, g/255, b/255を乗算します。 col.aは無視されます。 5. [IN] int : setflag setflagが0のときは、 パーツの色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 |
ver5.0.0.6 |
E3DSetVertexAmbient | モデル情報 | sigモデルの周囲光を頂点単位でセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 メタセコイアの材質単位で色を変えたい場合は 「マテリアル」グループの関数をご覧ください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 -1を指定すると全てのパーツの色を設定できます。 3. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合には partnoで指定したパーツ全体の色の設定をします。 4. [IN] E3DCOLOR4UC : col 指定したい色を(col.r, col.g, col.b)で指定します。 setflagに乗算を指定した場合は、 各成分に、r/255, g/255, b/255を乗算します。 col.aは無視されます。 5. [IN] int : setflag setflagが0のときは、 パーツの色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 |
ver5.0.0.6 |
E3DSetVertexSpecular | モデル情報 | sigモデルの反射光を頂点単位でセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 メタセコイアの材質単位で色を変えたい場合は 「マテリアル」グループの関数をご覧ください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 -1を指定すると全てのパーツの色を設定できます。 3. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合には partnoで指定したパーツ全体の色の設定をします。 4. [IN] E3DCOLOR4UC : col 指定したい色を(col.r, col.g, col.b)で指定します。 setflagに乗算を指定した場合は、 各成分に、r/255, g/255, b/255を乗算します。 col.aは無視されます。 5. [IN] int : setflag setflagが0のときは、 パーツの色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 |
ver5.0.0.6 |
E3DSetVertexEmissive | モデル情報 | sigモデルの自己照明を頂点単位でセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 メタセコイアの材質単位で色を変えたい場合は 「マテリアル」グループの関数をご覧ください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 -1を指定すると全てのパーツの色を設定できます。 3. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合には partnoで指定したパーツ全体の色の設定をします。 4. [IN] E3DCOLOR4UC : col 指定したい色を(col.r, col.g, col.b)で指定します。 setflagに乗算を指定した場合は、 各成分に、r/255, g/255, b/255を乗算します。 col.aは無視されます。 5. [IN] int : setflag setflagが0のときは、 パーツの色をcolにセットします。 setflagが1のときは、 パーツの色に(col.r/255, col.g/255, col.b/255)を乗算します。 setflagが2のときは、 パーツの色にcolを足し算します。 setflagが3のときは、 パーツの色からcolを減算します。 |
ver5.0.0.6 |
E3DSetVertexSpecularPower | モデル情報 | sigモデルの反射の強さを頂点単位でセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 メタセコイアの材質単位で色を変えたい場合は 「マテリアル」グループの関数をご覧ください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 -1を指定すると全てのパーツの色を設定できます。 3. [IN] int : vertno 指定した頂点番号の色をセットします。 -1をセットした場合にはパーツ全体の色の設定をします。 4. [IN] float : power power の値をsetflagに基づいて、 現在の色に対して処理を行います。 5. [IN] int : setflag setflagが0のときは、 指定した値をセットします。 setflagが1のときは、 現在の値に指定した値を乗算します。 setflagが2のときは、 現在の値に指定した値を足し算します。 setflagが3のときは、 現在の値から指定した値を減算します。 |
ver5.0.0.6 |
E3DGetVertexDiffuse | モデル情報 | sigモデルの拡散色を頂点単位で取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 3. [IN] int : vertno 指定した頂点番号の色を取得します。 4. [OUT] E3DCOLOR4UC* : colptr 指定した頂点の色が代入されます。 colptr->aは無視されます。 |
ver5.0.0.6 |
E3DGetVertexAmbient | モデル情報 | sigモデルの周囲光を頂点単位で取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 3. [IN] int : vertno 指定した頂点番号の色を取得します。 4. [OUT] E3DCOLOR4UC* : colptr 指定した頂点の色が代入されます。 colptr->aは無視されます。 |
ver5.0.0.6 |
E3DGetVertexSpecular | モデル情報 | sigモデルの反射光を頂点単位で取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 3. [IN] int : vertno 指定した頂点番号の色を取得します。 4. [OUT] E3DCOLOR4UC* : colptr 指定した頂点の色が代入されます。 colptr->aは無視されます。 |
ver5.0.0.6 |
E3DGetVertexEmissive | モデル情報 | sigモデルの自己照明を頂点単位で取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 3. [IN] int : vertno 指定した頂点番号の色を取得します。 4. [OUT] E3DCOLOR4UC* : colptr 指定した頂点の色が代入されます。 colptr->aは無視されます。 |
ver5.0.0.6 |
E3DGetVertexSpecularPower | モデル情報 | sigモデルの反射の強さを頂点単位で取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別するID。 3. [IN] int : vertno 指定した頂点番号の色を取得します。 4. [OUT] float* : powerptr 指定した頂点の反射の強さが代入されます。 |
ver5.0.0.6 |
E3DCreateSkinMat | ボーン影響 | 影響度の編集結果を表示用データに反映させます。 E3DSetInfElem, E3DDeleteInfElem, E3DNormalizeInfElem, E3DSetSymInfElemなどで影響度を全て編集し終わったら この命令を呼んでください。 |
1. [IN] int : hsid 形状データを識別するID。 2. [IN] int : partno パーツを識別するID。 -1を指定すると全てのパーツに対して処理を行います。 |
ver5.0.0.9 |
E3DSetSymInfElem | ボーン影響 | CALCMODE_SYM(対称セット)で頂点のボーン影響度を設定します。 対称軸symaxis引数にはusercoef.hで定義されているSYMAXIS_で始まる定数を使用してください。 SYMAXIS_XはX軸対称 SYMAXIS_YはY軸対称 SYMAXIS_ZはZ軸対称 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 |
1. [IN] int : hsid 形状データを識別するID。 2. [IN] int : partno パーツを識別するID。 -1を指定すると全てのパーツに対して処理を行います。 3. [IN] int : vertno 頂点の番号。 -1を指定するとパーツ中のすべての頂点に対して処理を行います。 4. [IN] int : symaxis 対称軸をSYMAXIS_で始まる定数で指定します。 5. [IN] float : symdist 対称距離。 ぴったり対称な位置からどれくらい離れていても対称とみなすかを指定します。 |
ver5.0.0.9 |
E3DUpdateSymInfElem | ボーン影響 | CALCMODE_SYM(対称設定)の設定してある頂点の影響度を最新の状態に更新します。 内部でCreateSkinMatも呼ばれます。 |
1. [IN] int : hsid 形状データを識別するID。 2. [IN] int : excludeflag 0を指定すると全てのパーツに対して処理を行います。1を指定するとE3DSetValidFlagで無効にしているパーツは除外して処理を行います。 |
ver5.0.0.9 |
E3DCalcMLMotion | モーション | マルチレイヤーモーションの姿勢情報を計算します。ローカルの姿勢から親子関係を反映した姿勢を計算します。 E3DSetNewPoseMLより後でE3DSetBoneQした場合などに 呼んでください。 (E3DSetNewPoseML内部からも呼ばれています) 使用例としては E3DSetMotionKindML E3DSetNewPoseML E3DGetMotionFrameNo E3DSetBoneQ E3DCalcMLMotion のような順序で呼び出します。 |
1. [IN] int : hsid 形状データを識別するid |
ver5.0.1.2 |
E3DSetLightId2OfBumpMap | ライト | バンプマップを設定したモデルデータを照らす2個目のライトを指定します。 影を表示している場合は有効になりません。 (影表示時はライト1個だけ有効) |
1. [IN] int : lid ライトを識別するid |
ver5.0.1.3 |
E3DSetLightId3OfBumpMap | ライト | バンプマップを設定したモデルデータを照らす3個目のライトを指定します。 影を表示している場合は有効になりません。 (影表示時はライト1個だけ有効) |
1. [IN] int : lid ライトを識別するid |
ver5.0.1.3 |
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] int : hsid 形状データを識別するid 2. [IN] float : degxz xz平面上での角度。 3. [IN] float : degy 仰ぎ角度。 4. [OUT] D3DXVECTOR3* : dstdir 向きのベクトルが代入されます。 |
ver5.0.1.8 |
E3DGetStrSizeByFontID | テキスト | 文字列の描画に必要な幅と高さを取得します。 |
1. [IN] int : fontid E3DCreateFontで作成した、フォントの番号を指定します。 2. [IN] const char* : textstr 大きさを調べたい文字列を指定します。 3. [OUT] SIZE* : sizeptr 描画に必要な幅と高さが代入されます。 |
ver5.0.2.3 |
E3DSetUVBatch | モデル情報 | 複数の頂点のUV設定を一括で行います。 ビデオバッファのロックとアンロックの回数が最小限なので 複数回E3DSetUVをよびだすよりも高速です。 処理したい頂点の総数をsetnum個とするとき *vertnoptrから*(vertnoptr + setnum - 1) までの整数配列に 頂点の番号を格納してください。 UVも同様に uvptr = (UV*)malloc( sizeof( UV ) * setnum ); などで作成し (uvptr + 頂点のインデックス)->u にU座標を (uvptr + 頂点のインデックス)->v にV座標を 格納してください。 頂点のインデックスとは頂点番号ではありません。 0からsetnumまでの値です。 |
1. [IN] int : hsid 形状データを識別するid。 -1を渡すとビルボードの処理をします。 2. [IN] int : partno パーツを識別する番号。 hsidに-1を渡した場合はビルボードIDを指定します。 3. [IN] int* : vertnoptr 頂点の番号を格納した配列。 4. [IN] int : setnum vertnoptrの要素数。 uvptrの要素数と同じです。 5. [IN] UV* : uvptr 設定したいUV値の値を指定してください。 UVの配列。 6. [IN] int : setflag setflag に0を指定すると、 指定UV値を、そのままセットします。 setflagに1を指定すると、 指定UV値を、既存のUV値に、足し算します。 7. [IN] int : clampflag 1をセットするとUVの値を0.0から1.0の間にクランプします。 0を指定するとクランプは行いません。 |
ver5.0.2.7 |
E3DSetPresentInterval | 描画パラメータ | E3DPresentがモニタの垂直同期に合わせて動作するかどうかを設定します。 E3DInitよりも前に呼び出すことを想定しています。 E3DInitを呼び出したら途中で変更することは出来ません。 この命令を呼び出さなかった場合は垂直同期しません。 |
1. [IN] int : flag 0を指定すると垂直同期しません。 1を指定すると垂直同期します。 |
ver5.0.2.8 |
E3DSetBillboardSize | ビルボード | ビルボードの大きさを設定します。 大きさはE3DCreateBillboardでも設定されるので この命令は大きさを変更したいときのみに使用します。 この命令はビデオメモリにアクセスするので多用すると重くなる可能性があります。 拡大縮小はE3DSetScaleをご使用ください。E3DSetScaleは高速です。 |
1. [IN] int : bbid ビルボードを識別するID。 2. [IN] float : width ビルボードの幅。 3. [IN] float : height ビルボードの高さ。 4. [IN] int : dirmode dirmodeに0を指定すると、 ビルボードは、Y軸に関してのみ、回転します。 地面に立っている木などに使用してください。 dirmodeの1を指定すると、 ビルボードは、全方向に回転します。 カメラの高さにかかわらず、カメラの方向を向かせたいもの 例えば、火や煙などに、使用してください。 5. [IN] int : orgflag ビルボードの原点の位置を指定します。 orgflagに0を指定すると、 原点は、ビルボードの四角形の下の辺の中心になります。 地面に生やす木などの場合に、便利です。 orgflagに1を指定すると、 原点は、ビルボードの中心になります。 爆発などの、特殊効果に使う場合に、便利です。 |
ver5.1.0.0 |
E3DSetHeightFogParams | 描画パラメータ | 高さフォグ(線形)を設定します。 頂点フォグなので、ポリゴンのない部分には、フォグはかかりません。 画面全体にフォグをかけたい場合は、 E3DCreateBGで、背景を作成してください。(背景はポリゴンです。) hsid, ビルボードを作成してから呼び出してください。 E3DCreateBGよりも前で呼び出してください。 E3DSetLinearFogParamsとの混在は出来ません。 |
1. [IN] int : enable 1を指定すると、フォグが有効に、 0を指定すると、フォグが無効になります。 2. [IN] E3DCOLOR4UC : col フォグの色を指定します。 col.aは無視されます。 3. [IN] int : start 4. [IN] int : end フォグが一番濃くなる一番低い高さをstartに指定してください。 フォグが無くなる一番高い高さをendに指定してください。 5. [IN] int : hsid この引数に、モデルデータのhsidを 指定することにより、 モデル単位でのフォグの指定が可能になります。 特殊効果などで、フォグをかけたくない場合などの 表示にお使いください。 この引数に-1を指定した場合は、 すべてのモデルデータに対して設定します。 |
ver5.1.0.0 |
E3DSetTextureToBG | テクスチャ | E3DCreateBGで作成した背景のテクスチャを変更します。 E3DCreateBGが呼び出されている状態で使用してください。 |
1. [IN] int : scid スワップチェインIDを指定します。 2. [IN] int : stageno 背景の1枚目のテクスチャにセットしたい場合は0を、2枚目のテクスチャにセットしたい場合は1を指定します。 3. [IN] int : texid 貼り付けたいテクスチャのIDを指定します。 |
ver5.1.0.0 |
E3DGetTextureFromBG | テクスチャ | E3DCreateBGで作成した背景のテクスチャIDを取得します。 E3DCreateBGが呼び出されている状態で使用してください。 |
1. [IN] int : scid スワップチェインIDを指定します。 2. [IN] int : stageno 背景の1枚目のテクスチャを取得したい場合は0を、2枚目のテクスチャを取得したい場合は1を指定します。 3. [OUT] int* : texidptr テクスチャのIDが代入されます。 |
ver5.1.0.0 |
E3DChangeMoaIdling | モーション | MOA(モーションアクセラレータ)のアイドリングモーションを変更します。 副作用として現在再生中のモーションが新しい(指定した)アイドリングモーションになります。 |
1. [IN] int : hsid 形状データを識別するID。 2. [IN] int : motid 新しいアイドリングモーションのID。 |
ver5.2.0.1 |
E3DSetMotionBlur | エフェクト | モーションブラーのオンオフと種類を設定します。 種類にはワールドブラーとカメラブラーがあります。 ワールドブラーはキャラクターのワールド座標(位置)が変化したときにブラーが生じます。 カメラブラーはキャラクターのカメラ座標(キャラ位置含む)が変化したときにブラーが生じます。このモードでは位置が同じでもカメラが動いた時にはブラーが生じます。 この命令はオフにするとき以外重い処理です。 毎回呼ぶ必要はありません。 状態を変化させるときのみ呼んでください。 ver5.2.0.4でblurtime引数が追加されました。 これは何フレーム前のデータをブラー作成に使用するかを指定するものです。 blurtimeには1から20までの数字を指定してください。 具体的な使用例は MotionBlurソリューションをご覧ください。 |
1. [IN] int : hsid 形状データを識別するID。 2. [IN] int : mode BLUR_NONEを指定するとブラーが無効になります。 BLUR_WORLDを指定するとワールドブラーがオンになります。 BLUR_CAMERAを指定するとカメラブラーがオンになります。 BLUR_で始まる定数はusercoef.hで定義されています。 3. [IN] int : blurtime 何フレーム前のデータをブラー作成に使用するかを指定します。 1から20までの整数。 |
ver5.2.0.3 ver5.2.0.4で拡張 |
E3DSetBeforeBlur | エフェクト | ブラー作成用のデータを準備します。 現在の姿勢などを保存しE3DSetMotionBlurで指定したblurtime回分蓄積します。 この命令はE3DSetMotionBlurを少なくとも1回は呼び出した後でないと意味を持ちません。 毎フレーム呼び出してください。 具体的な使用例は MotionBlurソリューションをご覧ください。 |
1. [IN] int : hsid 形状データを識別するID。 |
ver5.2.0.3 ver5.2.0.4で修正 |
E3DRenderMotionBlur | エフェクト | モーションブラーを表示します。 不透明の描画、半透明の描画の後に呼び出してください。 現在のキャラクターの状態とE3DSetBeforeBlurを呼び出したときのキャラクターの状態から移動軌跡ボリュームを作成し半透明で表示します。 具体的な使用例は MotionBlurソリューションをご覧ください。 |
1. [IN] int : scid スワップチェインIDを指定してください。 2. [IN] int* : hsidarray 描画したいhsidを配列に格納してください。 ビルボードを描画したいときはhsidに-1を 格納してください。 3. [IN] int : num hsidarrayに何個のhsidを格納したかを指定してください。 |
ver5.2.0.3 |
E3DInitBeforeBlur | エフェクト | ブラー作成用データを初期化します。 E3DSetMotionBlur呼び出しから数えて1回目の描画の前には 必ず呼び出してください。 呼ばなかった場合はゴミのようなブラーが表示されます。 E3DRenderよりも後で呼び出してください。 具体的な使用例は MotionBlurソリューションをご覧ください。 |
1. [IN] int : hsid 形状データを識別するID。 |
ver5.2.0.4 |
E3DSetMotionBlurPart | エフェクト | モーションブラーのオンオフと種類の変更をパーツ単位で行います。 E3DSetMotionBlurの代わりに呼び出します。 パーツ単位で設定できること以外はE3DSetMotionBlurと同じです。 E3DSetMotionBlurの説明もお読みください。 |
1. [IN] int : hsid 形状データを識別するID。 ビルボードにセットしたいときは-1を指定。 2. [IN] int : mode BLUR_NONEを指定するとブラーが無効になります。 BLUR_WORLDを指定するとワールドブラーがオンになります。 BLUR_CAMERAを指定するとカメラブラーがオンになります。 BLUR_で始まる定数はusercoef.hで定義されています。 3. [IN] int : blurtime 何フレーム前のデータをブラー作成に使用するかを指定します。 1から20までの整数。 4. [IN] int* : partarray 設定したいパートの番号を配列に格納してください。 パートの番号はRokDeBone2の階層構造エディタでパーツ名を右クリックしシリアル番号を調べるか、またはE3DGetPartNoByNameを使用して取得してください。 hsidに-1を指定した場合はビルボードIDを格納してください。 5. [IN] int : num partarrayに何個のパート番号を格納したかを指定してください。 |
ver5.2.0.6 |
E3DBlurTexture16Box | エフェクト | テクスチャに16ボックスブラーでぼかしをかけます。 1パス処理です。 ver5.3.0.5で引数追加。 |
1. [IN] int : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] int : srctexid ぼかしたいテクスチャのID。 3. [IN] int : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8 ver5.3.0.5で拡張 |
E3DBlurTexture9Corn | エフェクト | テクスチャに9コーンブラーでぼかしをかけます。 1パス処理です。 ver5.3.0.5で引数追加。 |
1. [IN] int : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] int : srctexid ぼかしたいテクスチャのID。 3. [IN] int : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8 ver5.3.0.5で拡張 |
E3DBlurTextureGauss5x5 | エフェクト | テクスチャにガウスブラーでぼかしをかけます。 1パス処理です。 ver5.3.0.5で引数追加。 |
1. [IN] int : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] int : srctexid ぼかしたいテクスチャのID。 3. [IN] float : dispersion ぼかしの強さ。大きいほどぼける。 この命令ではぼかしに限界があります。 もっとたくさんぼかしたい場合は E3DBlurTextureGaussを使ってください。 4. [IN] int : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8 ver5.3.0.5で拡張 |
E3DBlurTextureGauss | エフェクト | テクスチャにガウスブラーでぼかしをかけます。 縦方向のぼかしと横方向のぼかしの2パス構成です。 E3Dの中では一番効果のあるぼかしです。 具体的な使用例は BlurTextureソリューションをご覧ください。 ver5.3.0.5で引数追加。 |
1. [IN] int : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] int : workscid 途中経過格納用のレンダーターゲットテクスチャのスワップチェインID。 3. [IN] int : worktexid 途中経過格納用のレンダーターゲットテクスチャのテクスチャID。 4. [IN] int : srctexid ぼかしたいテクスチャのID。 5. [IN] float : dispersion ぼかしの強さ。大きいほどぼける。 6. [IN] int : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8 ver5.3.0.5で拡張 |
E3DBlendRTTexture | エフェクト | 2つのテクスチャをアルファブレンドし1つのテクスチャにレンダーします。 2つ目のテクスチャIDに-1を指定すると2個目のテクスチャは無効になり1個のテクスチャだけで処理が行われます。これはテクスチャのサイズを変えたい場合などに便利です。 具体的な使用例は BlurTextureソリューションをご覧ください。 ver5.3.0.5で引数追加。 |
1. [IN] int : resultscid 結果を描画するレンダーターゲットのスワップチェインID。 2. [IN] int : texid1 1枚目のテクスチャのID。 最初に描画される。 3. [IN] E3DCOLOR4F : col1 頂点色を指定します。 E3DCOLOR4Fはusercoef.hで定義されています。 各値は0.0から1.0です。 この色はtexid1のテクスチャの色に乗算されます。 4. [IN] int : texf1 texid1の拡大縮小フィルタの種類。 D3DTEXF_POINTはぼけません。 D3DTEXF_LINEARはぼけます。 どちらかを指定してください。 5. [IN] int : texid2 2枚目のテクスチャのID。 texid1の後に描画される。 6. [IN] E3DCOLOR4F : col2 頂点色を指定します。 E3DCOLOR4Fはusercoef.hで定義されています。 各値は0.0から1.0です。 この色はtexid2のテクスチャの色に乗算されます。 7. [IN] int : texf2 texid2の拡大縮小フィルタの種類。 D3DTEXF_POINTはぼけません。 D3DTEXF_LINEARはぼけます。 どちらかを指定してください。 8. [IN] int : blendop アルファブレンド操作の種類。 D3DBLENDOP_で始まる定数を指定してください。 9. [IN] 変数または、数値 : srcblend D3DRS_SRCBLENDの値。 D3DBLEND_で始まる定数を指定してください。 10. [IN] 変数または、数値 : destblend D3DRS_DESTBLENDの値。 D3DBLEND_で始まる定数を指定してください。 11. [IN] int : adjustuvflag UV補正をする場合は1、しない場合は0。 しないとボケが大きいが右下にずれます。 |
ver5.2.0.8 ver5.3.0.5で拡張 |
E3DBeginSceneZbuf | 描画 | Zバッファを指定するE3DBeginScene。 Zバッファを指定できる点を除いてE3DBeginSceneと同じです。 E3DBeginSceneの説明をお読みください。 ver5.2.1.0でskipflagを拡張しました。 |
1. [IN] int : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] int : skipflag skipflagに0を指定すると色の初期化とZバッファの初期化と背景の描画を行います。 skipflagに1を足すと色の初期化とZバッファの初期化と背景の描画を行いません。 skipflagに2を足すとシェーダー定数のビデオカードへの転送をキャンセルします。 skipflagに4を足すと色の初期化は行いますがZバッファの初期化と背景の描画は行いません。 3. [IN] int : zscid Zバッファを指定できます。 描画に使用したいZバッファを持つレンダーターゲットテクスチャなどのスワップチェインIDを指定します。 この引数を省略した場合はscidで指定したZバッファが使用されます。 zscidを指定した場合は指定したZバッファはこの命令で初期化されません。 zscidで指定するZバッファはscidで指定したサーフェスの大きさと大きさが同じ時のみ有効です。 |
ver5.2.0.8 ver5.2.1.0で拡張 |
E3DSetClearCol | 描画パラメータ | サーフェスのクリア色をスワップチェインごとに設定します。 レンダーターゲットテクスチャのクリア色も設定できます。 E3DBeginSceneより前で呼んでください。 |
1. [IN] int : scid スワップチェインIDを指定します。 2. [IN] E3DCOLOR4UC : col クリア色を指定します。 E3DCOLOR4UCはusercoef.hで定義されています。 |
ver5.2.0.9 |
E3DSetMotionBlurMinAlpha | エフェクト | モーションブラーのブラーの消え具合を設定します。 モーションブラーは動いた後の位置の透明度が1で 動く前の位置の透明度はminAlphaとなります。 ブラーの透明度は1からminAlphaまで徐々に薄くなっていくことになります。 このminAlphaの値を調整することでブラーの消え具合を変えることが出来ます。 何も設定しない状態ではminAlphaは0.2になっています。 |
1. [IN] int : hsid 形状データを識別するID。 2. [IN] int : partno 設定したいパーツの番号。 -1を指定すると全てのパーツに設定します。 3. [IN] float : minAlpha 0.0から1.0までのfloat。 ブラーの最小透明度を指定します。 |
ver5.2.0.9 |
E3DRenderGlow | エフェクト | グロー源を描画します。 グローの使い方についてはrdb2_glow.htmをご覧ください。 具体的な使用例は Glowソリューションをご覧ください。 |
1. [IN] int* : hsidarray 描画したいhsidを配列に格納してください。 2. [IN] int : num hsidarrayに何個のhsidを格納したかを指定してください。 |
ver5.2.1.0 |
E3DSetMaterialGlowParams | マテリアル | グローの有効無効と色倍率を指定します。 この命令でグローのモードやオンオフを変更すると マテリアルの透過方法transparentが自動的に適切なものに変更されます。 モード変更前の状態に戻したい場合は E3DGetMaterialTransparentとE3DSetMaterialTransparent を使用して変更前の状態を保存しておいて復元してください。 グローの使い方についてはrdb2_glow.htmをご覧ください。 具体的な使用例は Glowソリューションをご覧ください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : glowmode グローのモードを指定します。 GLOW_NONEを指定するとグローが無効になります。 GLOW_NORMALを指定すると不透明グローになります。 GLOW_ALPHAを指定すると半透明グローになります。 GLOWで始まる定数はusercoef.hで定義されています。 4. [IN] int : setcolflag colmult引数で指定した値を設定したいときは1を指定し、無視したいときは0を指定します。 5. [IN] E3DCOLOR4F : colmult colmult.r, colmult.g, colmult.bにそれぞれRGBの倍率をしてしてください。 colmult.aは無視されます。 |
ver5.2.1.0 |
E3DGetMaterialGlowParams | マテリアル | グローの有効無効と色倍率を取得します。 グローの使い方についてはrdb2_glow.htmをご覧ください。 具体的な使用例は Glowソリューションをご覧ください。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] int* : glowmodeptr グローのモードが代入されます。 GLOW_NONEはグロー無し。 GLOW_NORMALは不透明グロー。 GLOW_ALPHAは半透明グロー。 GLOWで始まる定数はusercoef.hで定義されています。 4. [OUT] E3DCOLOR4F* : colmultptr RGBの倍率が代入されます。 colmultptr->aは意味がありません。 |
ver5.2.1.0 |
E3DSetMaterialTransparent | マテリアル | テクスチャの透過方法を設定します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] int : transparent テクスチャの透過モードを指定します。 0を指定すると透過なし。 1を指定すると黒色透過。 2を指定するとテクスチャのアルファにより透過。 |
ver5.2.1.0 |
E3DGetMaterialTransparent | マテリアル | テクスチャの透過方法を取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] int* : transparentptr テクスチャの透過モードが代入されます。 0は透過なし。 1は黒色透過。 2はテクスチャアルファによる透過。 |
ver5.2.1.0 |
E3DChkHDR | 環境 | HDRで描画できるかどうかを調べます。 E3DInitよりも後で呼び出します。 主に浮動小数フォーマットのテクスチャが使えるかどうかが問題になります。 |
1. [OUT] int : okflag HDRが使用できる場合は1が出来ない場合は0が代入されます。 2. [OUT] int* : hdrformat HDRシーンを描画するときのテクスチャのフォーマットが代入されます。 3. [OUT] int* : toneformat トーンマップを作成するときのテクスチャのフォーマットが代入されます。 |
ver5.2.1.6 |
E3DCheckSpec | 環境 | Easy3Dが実行可能かどうかを調べます。 ピクセルシェーダー2.0が存在するかどうかや ストリームを3つ以上使えるかどうかなどを調べます。 E3DInitよりも前で呼び出します。 |
1. [IN] HINSTANCE : hinst アプリケーションのhinstanceを 渡します。 2. [IN] HWND : hwnd メインウインドウのハンドルを 渡してください。 3. [OUT] int* : 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] int : lid ライトを識別するid 2. [IN] E3DCOLOR4F : col ライトの拡散色を指定します。 E3DCOLOR4Fはusercoef.hで定義されています。 |
ver5.2.1.6 |
E3DSetHDRLightSpecular | ライト | HDR用の強いライト色(反射光)を設定することが出来ます。 浮動小数点で指定します。 1.0は整数指定時の255に相当します。 |
1. [IN] int : lid ライトを識別するid 2. [IN] E3DCOLOR4F : col ライトの反射色を指定します。 E3DCOLOR4Fはusercoef.hで定義されています。 |
ver5.2.1.6 |
E3DDownScaleRTTexture4x4 | エフェクト | 縦横それぞれ4分の1の大きさのレンダーターゲットテクスチャにコピーします。 |
1. [IN] int : dstscid 描画先のレンダーターゲットテクスチャのスワップチェインID。小さい方のテクスチャ。 2. [IN] int : srctexid 描画元のレンダーターゲットテクスチャのテクスチャID。大きい方のテクスチャ。 |
ver5.2.1.6 |
E3DDownScaleRTTexture2x2 | エフェクト | 縦横それぞれ2分の1の大きさのレンダーターゲットテクスチャにコピーします。 | 1. [IN] int : dstscid 描画先のレンダーターゲットテクスチャのスワップチェインID。小さい方のテクスチャ。 2. [IN] int : srctexid 描画元のレンダーターゲットテクスチャのテクスチャID。大きい方のテクスチャ。 |
ver5.2.1.6 |
E3DCreateToneMapTexture | テクスチャ | トーンマップテクスチャを作成します。 トーンマップテクスチャとはシーンの明るさを計測するために使用するレンダーターゲットテクスチャです。 一度に有効にできるトーンマップの組は10組までです。 それ以上のトーンマップを使用したい場合はE3DDestroyToneMapTextureを呼んで不要なものを削除してから この命令を呼んでください。 具体的な使用例は HDRLightingソリューションをご覧ください。 |
1. [IN] int : tonenum トーンマップテクスチャの数を指定します。 3以上の数を指定してください。 トーンマップは1X1の大きさのものから順番に4倍ずつしたサイズのテクスチャになります。 例えばtonenumに4を指定した場合は 1X1, 4X4, 16X16, 64X64のサイズのテクスチャが内部で作成されます。 2. [IN] int : toneformat トーンマップテクスチャのフォーマット。 E3DChkHDRで取得したtoneformatを指定してください。 3. [OUT] int* : tonemapid 作成したトーンマップを識別するIDが代入されます。 4. [OUT] int* : okflag 命令が成功した場合には1が失敗した場合には0が代入されます。 |
ver5.2.1.6 |
E3DDestroyToneMapTexture | テクスチャ | トーンマップテクスチャを削除します。 | 1. [IN] int : tonemapid 削除するトーンマップを識別するID。 |
ver5.2.1.6 |
E3DRenderToneMap | エフェクト | トーンマップにシーンの明るさをレンダリングし明るさを計測します。 具体的な使用例は HDRLightingソリューションをご覧ください。 |
1. [IN] int : tonemapid トーンマップを識別するID。 2. [IN] int : srctexid 明るさを計測したいテクスチャのID。 |
ver5.2.1.6 |
E3DBrightPassRTTextureHDR | エフェクト | HDRで描画したテクスチャの明るい部分だけを抜き出しLDRに変換します。 具体的な使用例は HDRLightingソリューションをご覧ください。 |
1. [IN] int : dstscid 描画先のスワップチェインID。 2. [IN] int : srctexid HDRで描画されている元画像の入ったテクスチャのID。 3. [IN] float : middlegray 画面の明るさを決めるキーになる値。 実数。 4. [IN] float : threshold この値より暗い部分は色が0になる。 実数。 5. [IN] float : offset thresholdで色成分を引いた後にoffsetだけ色を足します。 6. [IN] int : tonemapid シーンの明るさを記録してあるトーンマップのID。 |
ver5.2.1.6 |
E3DRenderHDRFinal | エフェクト | HDRシーンとブルーム画像を合成しLDRに変換して描画します。 具体的な使用例は HDRLightingソリューションをご覧ください。 |
1. [IN] int : dstscid 描画先のスワップチェインID。 2. [IN] int : srctexid0 HDRで描画されている元画像の入ったテクスチャのID。 3. [IN] int : srctexid1 ブルーム画像のテクスチャID。 4. [IN] int : tonemapid トーンマップのID。 5. [IN] float : middlegray シーンの明るさを決定するキーの値。 E3DBrightPassRTTextureHDRに指定したのと同じ値を指定します。 |
ver5.2.1.6 |
E3DMonoRTTexture | エフェクト | テクスチャの内容を白黒画像に変換します。 具体的な使用例は Monoソリューションをご覧ください。 |
1. [IN] int : dstscid 描画先のスワップチェインID。 2. [IN] int : srctexid 元画像の入ったテクスチャのID。 |
ver5.2.1.7 |
E3DCbCrRTTexture | エフェクト | テクスチャの内容をYCbCr色空間に変換しYを保ったままCbとCrを指定値に設定します。 YCbCrの値のセットがどんな色になるのかはPhotoShopなどのペイントソフトで確認してください。 具体的な使用例は CbCrソリューションをご覧ください。 |
1. [IN] int : dstscid 描画先のスワップチェインID。 2. [IN] int : srctexid 元画像の入ったテクスチャのID。 3. [IN] float : cb YCbCrのCbの値。 4. [IN] float : cr YCbCrのCrの値。 |
ver5.2.1.7 |
E3DShaderConstOffset16 | エフェクト | posteffect.fxのデータfloat2 avSampleOffsets[16]に値を設定します。 このデータは他の命令でも使われます。 (使われている場所はposteffect.fxで確認してください。) 他の命令で上書きされることがあるのでその都度設定してください。 offsetarrayには D3DXVECTOR2 offsetarray[16]; で確保した配列を使用してください。 自分で値をセットしてから命令に渡してください。 |
1. [IN] D3DXVECTOR2* : offsetarray セットしたい値が設定してある配列。 詳しくは前記をご覧ください。 |
ver5.2.1.8 |
E3DShaderConstWeight16 | エフェクト | posteffect.fxのデータfloat4 avSampleWeights[16]に値を設定します。 このデータは他の命令でも使われます。 (使われている場所はposteffect.fxで確認してください。) 他の命令で上書きされることがあるのでその都度設定してください。 weightarrayには D3DXVECTOR4 weightarray[16]; で確保した配列を使用してください。 自分で値をセットしてから命令に渡してください。 |
1. [IN] D3DXVECTOR4* : weightarray セットしたい値が設定してある配列。 詳しくは前記をご覧ください。 |
ver5.2.1.8 |
E3DShaderConstUserFL4 | エフェクト | posteffect.fxのデータfloat4 userFL4_0からuserFL4_9のどれかに値を設定します。 自分で値をセットしてから命令に渡してください。 具体的な使用例は CustomShaderソリューションをご覧ください。 |
1. [IN] int : datano userFL4_0からuserFL4_9までのどれに値をセットするかを0から9の整数で指定します。 2. [IN] D3DXVECTOR4 : fl4 セットしたい値が設定してあるD3DXVECTOR4。 |
ver5.2.1.8 |
E3DShaderConstUserTex | エフェクト | posteffect.fxのデータtexture usertex0からusertex4のどれかに値を設定します。 具体的な使用例は CustomShaderソリューションをご覧ください。 |
1. [IN] int : datano usertex0からusetex4までのどれに値をセットするかを0から4の整数で指定します。 2. [IN] int : srctexid 設定したいテクスチャを識別するID。 |
ver5.2.1.8 |
E3DCallUserShader | エフェクト | posteffect.fxのtechnique PostEffectUser0からPostEffectUser4のうちの一つを実行します。 実行するパスも1つだけ選べます。 具体的な使用例は CustomShaderソリューションをご覧ください。 |
1. [IN] int : shaderno PostEffectUser0からPostEffectUser4までのどれを実行するかを0から4の整数で指定します。 2. [IN] int : passno テクニックの何番のパスを実行するかを指定します。 例えばpass P0を実行したいときは0をpass P1を実行したいときは1を指定します。 記述してあるパスの番号最大値よりも大きい値を指定するとエラーになります。 3. [IN] int : dstscid 描画先のスワップチェインID。 |
ver5.2.1.8 |
E3DCreateBone | モデル情報 | ボーンを新規に作成します。 読み込み済みのモーションは全て破棄されます。 影響度の再計算はしません。 したい場合はE3DJointRemakeを呼び出してください。 ボーンの位置はE3DSetJointInitialPosで設定してください。 Easy3Dの仕様上ボーンを破棄するとゴミデータが残ります。 ゴミデータはあまり多くなると描画速度に影響します。 E3DCreateBoneにはゴミデータが存在すればそれを再利用するような仕組みがあります。 ですのでまず不要なボーンをE3DDestroyBoneした後にE3DCreateBoneするとゴミが少なくて済みます。 ゴミの掃除の仕方はRokDeBone2ver5.2.1.3の新機能のページの説明をご覧ください。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] const char* : nameptr ボーンの名前を格納した文字列。 255バイトまでです。 終端はNULL(0)にしてください。 3. [IN] int : parentid 親になるジョイントを識別するパーツのID。 一番親のボーンを作成する場合以外は必ずジョイントのIDを指定してください。 一番親のボーンを作成するときは-1を指定してください。-1を指定するとパーツをまとめる役割をするパーツのうちで一番最後に作られたパーツが親になります。 ( 通常は「Joint Part」という名前のパーツになります。) 4. [OUT] int* : serialidptr 新たに作成されたボーンを識別するID(パーツのID)が代入されます。 エラーが生じた場合は-1が代入されます。 |
ver5.2.1.9 |
E3DDestroyBone | モデル情報 | ボーンを破棄します。 読み込み済みのモーションは全て破棄されます。 影響度の再計算は強制的に行われます。 E3DCreateBoneの説明もお読みください。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : boneno 削除したいボーンを識別するID。 |
ver5.2.1.9 |
E3DGetMorphBaseNum | モーフ | モーフのベースの数を取得します。 それぞれのモーフにはベースは1個だけしか含まれないので この数はモーフの数と一致します。 具体的な使用例は MorphInfoソリューションをご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [OUT] int* : basenumptr ベースの数が代入されます。 |
ver5.2.2.3 |
E3DGetMorphBaseInfo | モーフ | モーフのベースの情報を一括で取得します。 具体的な使用例は MorphInfoソリューションをご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [OUT] E3DMORPHBASE* : baseinfoptr ベースの情報が代入されます。 E3DMORPHBASEはusercoef.hで定義されています。 E3DGetMorphBaseNum( hsid, &basenum ); baseinfo = (E3DMORPHBASE*)malloc( sizeof( E3DMORPHBASE ) * basenum ); のようにして作成したメモリを指定してください。 3. [IN] int : arrayleng baseinfoの要素数を指定してください。 E3DGetMorphBaseNumで取得したbasenum個じゃないとエラーになります。 |
ver5.2.2.3 |
E3DGetMorphTargetInfo | モーフ | モーフのターゲットの情報をモーフごと(ベースごと)に取得します。 具体的な使用例は MorphInfoソリューションをご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 3. [OUT] E3DMORPHTARGET* : targetinfoptr ターゲットの情報が代入されます。 E3DMORPHTARGETはusercoef.hで定義されています。 ベースに含まれるターゲット数分の要素数のメモリを渡してください。 targetinfo = (E3DTARGETINFO*)malloc( sizeof( E3DTARGETINFO ) * (baseinfo + baseno)->targetnum ); のようにして作成してください。 4. [IN] int : arrayleng targetinfoの要素数を指定してください。 ベースに含まれるターゲット数と異なる場合にはエラーになります。 |
ver5.2.2.3 |
E3DGetMorphKeyNum | モーフ | モーフモーションのキーの数を取得します。 具体的な使用例は MorphInfoソリューションをご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 4. [IN] int : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 5. [IN] int : targetid モーフのターゲットを識別する番号を指定してください。 E3DGetMorphTargetInfoで取得したtargetinfoptr->dispnoを指定してください。 6. [OUT] int* : keynumptr キーの数が代入されます。 |
ver5.2.2.3 |
E3DGetMorphKey | モーフ | モーフモーションの情報をキーの数分取得します。 具体的な使用例は MorphInfoソリューションをご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 4. [IN] int : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 5. [IN] int : targetid モーフのターゲットを識別する番号を指定してください。 E3DGetMorphTargetInfoで取得したtargetinfoptr->dispnoを指定してください。 6. [OUT] E3DMORPHMOTION* : motioninfoptr モーション情報が代入されます。 E3DMORPHMOTIONはusercoef.hで定義されています。 E3DGetMorphKeyNum( hsid, motid, baseid, targetid, &keynum ); motioninfo = (E3DMORPHMOTION*)malloc( sizeof( E3DMORPHMOTION ) * keynum ); のようにしてメモリを作成してください。 7. [IN] int : arrayleng motioninfoptrの要素数を指定してください。 E3DGetMorphKeyNumで取得したkeynum個じゃないとエラーになります。 |
ver5.2.2.3 |
E3DGetCurMorphInfo | モーフ | 任意のフレーム番号の補間済みのモーフモーション情報を取得します。 この命令では現在のモーションID、フレーム番号についての情報を取得します。 任意のモーション、フレーム番号の情報を取得したい場合は E3DSetMotionFrameNoと組み合わせて使ってください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 3. [IN] int : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 4. [IN] int : targetid モーフのターゲットを識別する番号を指定してください。 E3DGetMorphTargetInfoで取得したtargetinfoptr->dispnoを指定してください。 5. [OUT] E3DMORPHMOTION* : motioninfoptr モーション情報が代入されます。 E3DMORPHMOTIONはusercoef.hで定義されています。 要素数は1。 |
ver5.2.2.3 |
E3DCreateMorph | モーフ | モーフを作成します。 ベースのIDとボーンのIDを指定します。 ここで指定したボーンに作成したモーフのモーション情報が格納されます。 この命令を呼ぶと読み込み済みのモーションは全て破棄されます。 具体的な使用例は MorphInfo_Createソリューションをご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : baseid ベースを識別する番号を指定してください。 E3DGetPartNoByNameなどでIDを取得して指定してください。 3. [IN] int : boneid ボーンを識別する番号を指定してください。 E3DGetPartNoByNameなどでIDを取得して指定してください。 |
ver5.2.2.3 |
E3DAddMorphTarget | モーフ | E3DCreateMorphで作成したモーフにターゲットを追加します。 具体的な使用例は MorphInfo_Createソリューションをご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : baseid ベースを識別する番号を指定してください。 E3DGetPartNoByNameなどでIDを取得して指定してください。 3. [IN] int : targetid ターゲットを識別する番号を指定してください。 E3DGetPartNoByNameなどでIDを取得して指定してください。 |
ver5.2.2.3 |
E3DSetMorphKey | モーフ | モーフモーションのキーを作成します。 キーがすでにある場合は既存のキーに上書きします。 具体的な使用例は MorphInfo_Createソリューションをご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 4. [IN] int : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 5. [IN] int : targetid モーフのターゲットを識別する番号を指定してください。 E3DGetMorphTargetInfoで取得したtargetinfoptr->dispnoを指定してください。 6. [IN] E3DMORPHMOTION* : motioninfoptr モーフモーション情報を指定します。要素数1。 E3DMORPHMOTIONはusercoef.hで定義されています。 |
ver5.2.2.3 |
E3DDestroyMorphKey | モーフ | モーフモーションのキーを削除します。 モーフに含まれる全てのターゲットのキーが削除されます。 具体的な使用例は MorphInfo_Createソリューションをご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 4. [IN] int : frameno 削除したいキーが存在するフレーム番号を指定してください。 5. [IN] int : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 |
ver5.2.2.3 |
E3DGetToon1Material | マテリアル | トゥーンマテリアルの情報をパーツごとに一括取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [OUT] E3DTOON1MATERIAL* : toon1ptr トゥーンマテリアルの情報が代入されます。 E3DTOON1MATERIALはusercoef.hで定義されています。 E3DGetToon1MaterialNumで取得した数をmatnumとすると toon1ptr = (E3DTOON1MATERIAL*)malloc( sizeof( E3DTOON1MATERIAL ) * matnum ); のように作成したメモリを渡してください。 4. [IN] int : arrayleng toon1ptrを作成したときの要素数を指定します。 E3DGetToon1MaterialNumで取得できるmatnumと異なるとエラーになります。 |
ver5.2.2.5 |
E3DSetToon1Name | マテリアル | トゥーンマテリアルの名前を変更します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : oldname 名前を変えたいトゥーンマテリアルの元の名前 4. [IN] char* : newname トゥーンマテリアルの新しい名前。 名前の長さは31バイトまでです。 |
ver5.2.2.5 |
E3DSetToon1Diffuse | マテリアル | トゥーンマテリアルのDiffuse色を設定します。 ライトが当たった明るい部分の色です。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] RDBColor3f : diffuse diffuse色。 |
ver5.2.2.5 |
E3DSetToon1Specular | マテリアル | トゥーンマテリアルのSpecular色を設定します。 ハイライトの部分の色です。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] RDBColor3f : specular specular色。 |
ver5.2.2.5 |
E3DSetToon1Ambient | マテリアル | トゥーンマテリアルのAmbient色を設定します。 ライトが当たらない暗い部分の色です。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] RDBColor3f : ambient ambient色。 |
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] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] float : darknl cos( darkdeg * DEG2PAI )を指定してください。 詳しくは前記をご覧ください。 5. [IN] float : brightnl cos( brightdeg * DEG2PAI )を指定してください。 詳しくは前記をご覧ください。 |
ver5.2.2.5 |
E3DSetToon1Edge0 | マテリアル | トゥーンマテリアルのエッジ(輪郭線)のパラメータを設定します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 E3DGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] RDBColor3f : col 輪郭線の色。 5. [IN] int : validflag 輪郭線を表示するときは1。しないときは0。 6. [IN] int : invflag 輪郭線用の面の向きを反転するときは1。しないときは0。通常は0。 両面オブジェクトの調整用。 7. [IN] float : width 輪郭線の幅。 |
ver5.2.2.5 |
E3DLoadCameraFile | カメラ | RokDeBone2で作成したカメラファイル(*.cam)を読み込み アニメ番号を取得します。 |
1. [IN] char* : filename カメラファイルのファイル名をフルパスで指定してください。 2. [OUT] int* : animnoptr 読み込んだアニメを識別するアニメ番号が代入されます。 |
ver5.2.2.7 |
E3DDestroyCameraAnim | カメラ | カメラアニメを破棄します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 |
ver5.2.2.7 |
E3DSaveCameraFile | カメラ | カメラアニメをテキストファイルに保存します。 |
1. [IN] char* : filename カメラファイルのファイル名をフルパスで指定してください。 2. [IN] int : animno カメラアニメを識別する番号を指定してください。 |
ver5.2.2.7 |
E3DSetCameraAnimNo | カメラ | カレントのカメラアニメ番号をセットします。 フレーム番号は0に戻ります。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 |
ver5.2.2.7 |
E3DGetCameraAnimNo | カメラ | カレントのカメラアニメ番号を取得します。 |
1. [OUT] int* : animnoptr カメラアニメを識別する番号が代入されます。 |
ver5.2.2.7 |
E3DSetCameraFrameNo | カメラ | 再生するカメラアニメのアニメ番号とカメラ番号とフレーム番号を設定します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : camerano カメラ番号を指定します(0から2)。 カメラ番号に-1を指定するとカメラのスイッチキーに基づいてカメラを切り替え再生します。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] int : isfirst この命令を呼んだ後にE3DSetNewCameraを呼び出す場合は1を、呼び出さない場合は0を指定します。 |
ver5.2.2.7 |
E3DGetCameraFrameNo | カメラ | 現在再生中のカメラアニメのアニメ番号、カメラ番号、フレーム番号を取得します。 |
1. [OUT] int* : animnoptr カメラアニメを識別する番号が代入されます。 2. [OUT] int* : cameranoptr カメラ番号が代入されます。 3. [OUT] int* : framenoptr フレーム番号が代入されます。 |
ver5.2.2.7 |
E3DSetNewCamera | カメラ | カメラのフレームをアニメタイプに従って進め、新しいカメラ情報をセットします。 |
1. [IN] int : camerano カメラ番号を指定します(0から2)。 カメラ番号に-1を指定するとカメラのスイッチキーに基づいてカメラを切り替え再生します。 |
ver5.2.2.7 |
E3DSetNextCameraAnimFrameNo | カメラ | animnoで識別されるアニメがbefframenoのフレーム番号に達したらnextanimnoで識別されるアニメのnextframenoに切り替えることを予約します。 アニメの切り替えはE3DSetNewCameraで行われます。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : nextanimno 切り替え先のカメラアニメを識別する番号を指定してください。 3. [IN] int : nextframeno 切り替え先のカメラアニメのフレーム番号を指定してください。 4. [IN] int : befframeno 切り替え前のカメラアニメがbefframenoフレームまで達したらアニメの切り替えが起こります。 -1を指定した場合は切り替え前のアニメが最終フレームに達したときにアニメが切り替わります。 |
ver5.2.2.7 |
E3DGetNextCameraAnimFrameNo | カメラ | E3DSetNextCameraAnimFrameNoで設定した情報を取得します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [OUT] int* : nextanimnoptr 切り替え先のカメラアニメを識別する番号が代入されます。 3. [OUT] int* : nextframenoptr 切り替え先のカメラアニメのフレーム番号が代入されます。 |
ver5.2.2.7 |
E3DCreateNewCameraAnim | カメラ | カメラアニメを作成しアニメを識別する番号を取得します。 |
1. [IN] char* : animname アニメの名前を指定します。 255バイトまでです。 2. [IN] int : animtype アニメの振る舞いを指定します。 1を指定するとフレーム番号は進みません。 2を指定すると最終フレーム番号に達したらその状態を維持します。 3を指定するとループします。 4を指定するとピンポン再生します。 5を指定すると最終フレームに達した後RokDeBone2で指定したフレームにジャンプします。 3. [IN] int : framenum カメラアニメをのフレーム数を指定します。 4. [OUT] int* : animnoptr 作成したアニメを識別する番号が代入されます。 |
ver5.2.2.7 |
E3DSetCameraFrameNum | カメラ | カメラアニメのフレーム長を設定します。 現在のフレーム長よりも小さい値を指定した場合は 範囲からはみ出たキーは削除されます。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : framenum フレーム長を指定してください。 |
ver5.2.2.7 |
E3DGetCameraFrameNum | カメラ | カメラアニメのフレーム長を取得します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [OUT] int* : framenumptr フレーム長が代入されます。 |
ver5.2.2.7 |
E3DSetCameraAnimName | カメラ | カメラアニメの名前を設定します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] char* : srcname カメラアニメの名前を指定します。 255バイトまでです。 |
ver5.2.2.7 |
E3DGetCameraAnimName | カメラ | カメラアニメの名前を取得します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [OUT] char* : dstname 名前を格納する文字列の変数を指定します。 3. [IN] int : arrayleng dstnameの配列長を指定します。 |
ver5.2.2.7 |
E3DSetCameraAnimType | カメラ | カメラアニメのタイプを設定します。 タイプの詳細はE3DCreateNewCameraAnimのanimtype引数の説明をご覧ください。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : type タイプを指定します。 |
ver5.2.2.7 |
E3DGetCameraAnimType | カメラ | カメラアニメのタイプを取得します。 タイプの詳細はE3DCreateNewCameraAnimのanimtype引数の説明をご覧ください。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [OUT] int* : typeptr タイプが代入されます。 |
ver5.2.2.7 |
E3DSetCameraKey | カメラ | カメラアニメのキーを設定します。 指定したフレーム番号にキーが存在しない場合は自動的に作成してから設定します。 E3DCAMERASTATEはusercoef.hで定義されています。 以下E3DCAMERASTATE構造体のメンバの説明。 looktypeは注視モードです。 現在注視なしモードしかサポートしていませんので CAML_NORMALを指定してください。 hsidとbonenoは将来の拡張用のインデックスです。 -1を指定してください。 interpはキー間の補間方法へのインデックスです。 0を指定すると線形、1を指定するとスプライン補間になります。 pos はカメラ位置のXYZ座標へのインデックスです。 target はカメラの注視点のXYZ座標へのインデックスです。 up はカメラの上方向ベクトルのXYZ成分へのインデックスです。 dist はカメラと注視点の距離へのインデックスです。 nearz, farz はプロジェクションの一番近い距離と一番遠い距離へのインデックスです。 fov はプロジェクションの視野角へのインデックスです。 は将来の拡張用のインデックスです。3000.0などの数値を入れておいてください。 具体的な使用例は CameraAnimeソリューションをご覧ください。 ver5.2.2.8で正射影に対応しました。 orthoはパース表示のとき0、正射影表示のとき1を指定します。 orthosizeは正射影のときのビューのサイズを指定します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : camerano カメラ番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] E3DCAMERASTATE : camstate カメラキーのメンバをセットします。 詳しくは前記をご覧ください。 |
ver5.2.2.7 |
E3DGetCameraKey | カメラ | カメラアニメのキーの情報を取得します。 指定したフレーム番号にキーが無い場合は補間計算して情報を取得します。 E3DCAMERASTATEについてはE3DSetCameraKeyの説明をご覧ください。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : camerano カメラ番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [OUT] E3DCAMERASTATE* : csptr カメラキーのメンバが代入されます。 5. [OUT] int* : exsitflag 指定したフレーム番号にキーがあった場合は1が 無かった場合には0が代入されます。 |
ver5.2.2.7 |
E3DDeleteCameraKey | カメラ | カメラアニメのキーを削除します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : camerano カメラ番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 |
ver5.2.2.7 |
E3DGetCameraKeyframeNoRange | カメラ | startとendで指定したフレーム範囲のキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGetCameraKeyframeNoRange( animno, camno, start, end, 0, 0, &keynum ); framearray = (int*)malloc( sizeof( int ) * keynum ); E3DGetCameraKeyframeNoRange( animno, camno, start, end, framearray, keynum, &chknum ); のようにして使ってください。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : camerano カメラ番号を指定してください。 3. [IN] int : start 4. [IN] int : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 5. [OUT] int* : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 6. [IN] int : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 7. [OUT] int* : getnumptr 取得したキーフレーム番号の個数が代入されます。 |
ver5.2.2.7 |
E3DSetCameraSWKey | カメラ | カメラアニメのスイッチキーをセットします。 指定したフレーム番号にキーが存在しない場合は自動的に作成してからセットします。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : frameno フレーム番号を指定してください。 3. [IN] int : camerano カメラ番号を指定してください。 |
ver5.2.2.7 |
E3DGetCameraSWKey | カメラ | カメラアニメのスイッチキーの情報を取得します。 指定したフレーム番号にキーが存在しない場合は補間して情報を取得します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : frameno フレーム番号を指定してください。 3. [OUT] int* : cameranoptr カメラ番号が代入されます。 4. [OUT] int* : existflagptr 指定したフレーム番号にキーがあった場合は1が 無かった場合には0が代入されます。 |
ver5.2.2.7 |
E3DDeleteCameraSWKey | カメラ | カメラアニメのスイッチキーを削除します。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : frameno フレーム番号を指定してください。 |
ver5.2.2.7 |
E3DGetCameraSWKeyframeNoRange | カメラ | startとendで指定したフレーム範囲のスイッチキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGetCameraSWKeyframeNoRange( animno, start, end, 0, 0, &keynum ) framearray = (int*)malloc( sizeof(int) * keynum ); E3DGetCameraSWKeyframeNoRange( animno, start, end, framearray, keynum, &chknum ); のようにして使ってください。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : start 3. [IN] int : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 4. [OUT] int* : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 5. [IN] int : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 6. [OUT] int* : getnumptr 取得したキーフレーム番号の個数が代入されます。 |
ver5.2.2.7 |
E3DSetOrtho | 描画パラメータ | 正射影をオンにし、正射影のパラメータを設定します。 |
1. [IN] float : proj_near クリッピングの最小距離。 実数。 2. [IN] float : proj_far クリッピングの最大距離。 実数。 3. [IN] float : orthosize 正射影のビューの大きさ。 実数。 |
ver5.2.2.8 |
E3DLoadGPFile | GPA | RokDeBone2で作成したGPAファイル(*.gpa)を読み込み アニメ番号を取得します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] char* : filename GPAファイルのファイル名をフルパスで指定してください。 3. [OUT] int* : animnoptr 読み込んだアニメを識別するアニメ番号が代入されます。 |
ver5.2.2.9 |
E3DDestroyGPAnim | GPA | GPAを破棄します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 |
ver5.2.2.9 |
E3DSaveGPFile | GPA | GPアニメをテキストファイルに保存します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] char* : filename GPAファイルのファイル名をフルパスで指定してください。 3. [IN] int : animno GPアニメを識別する番号を指定してください。 |
ver5.2.2.9 |
E3DSetGPAnimNo | GPA | カレントのGPアニメ番号をセットします。 フレーム番号は0に戻ります。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 |
ver5.2.2.9 |
E3DGetGPAnimNo | GPA | カレントのGPアニメ番号を取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : animnoptr GPアニメを識別する番号が代入されます。 |
ver5.2.2.9 |
E3DSetGPFrameNo | GPA | 再生するGPアニメのアニメ番号とフレーム番号を設定します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] int : isfirst この命令を呼んだ後にE3DSetNewGPを呼び出す場合は1を、呼び出さない場合は0を指定します。 |
ver5.2.2.9 |
E3DGetGPFrameNo | GPA | 現在再生中のGPアニメのアニメ番号、フレーム番号を取得します。 |
1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : animnoptr GPアニメを識別する番号が代入されます。 3. [OUT] int* : framenoptr フレーム番号が代入されます。 |
ver5.2.2.9 |
E3DSetNewGP | GPA | アニメのフレームをアニメタイプに従って進め、新しいGP情報をセットします。 |
1. [IN] int : hsid 形状データを識別するID |
ver5.2.2.9 |
E3DSetNextGPAnimFrameNo | GPA | animnoで識別されるアニメがbefframenoのフレーム番号に達したらnextanimnoで識別されるアニメのnextframenoに切り替えることを予約します。 アニメの切り替えはE3DSetNewGPで行われます。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : nextanimno 切り替え先のGPアニメを識別する番号を指定してください。 4. [IN] int : nextframeno 切り替え先のGPアニメのフレーム番号を指定してください。 5. [IN] int : befframeno 切り替え前のGPアニメがbefframenoフレームまで達したらアニメの切り替えが起こります。 -1を指定した場合は切り替え前のアニメが最終フレームに達したときにアニメが切り替わります。 |
ver5.2.2.9 |
E3DGetNextGPAnimFrameNo | GPA | E3DSetNextGPAnimFrameNoで設定した情報を取得します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [OUT] int* : nextanimnoptr 切り替え先のGPアニメを識別する番号が代入されます。 4. [OUT] int* : nextframenoptr 切り替え先のGPアニメのフレーム番号が代入されます。 |
ver5.2.2.9 |
E3DCreateNewGPAnim | GPA | GPアニメを作成しアニメを識別する番号を取得します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] char* : animname アニメの名前を指定します。 255バイトまでです。 3. [IN] int : animtype アニメの振る舞いを指定します。 1を指定するとフレーム番号は進みません。 2を指定すると最終フレーム番号に達したらその状態を維持します。 3を指定するとループします。 4を指定するとピンポン再生します。 5を指定すると最終フレームに達した後RokDeBone2で指定したフレームにジャンプします。 4. [IN] int : framenum GPアニメをのフレーム数を指定します。 5. [OUT] int* : animnoptr 作成したアニメを識別する番号が代入されます。 |
ver5.2.2.9 |
E3DSetGPFrameNum | GPA | GPアニメのフレーム長を設定します。 現在のフレーム長よりも小さい値を指定した場合は 範囲からはみ出たキーは削除されます。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : framenum フレーム長を指定してください。 |
ver5.2.2.9 |
E3DGetGPFrameNum | GPA | GPアニメのフレーム長を取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [OUT] int* : framenumptr フレーム長が代入されます。 |
ver5.2.2.9 |
E3DSetGPAnimName | GPA | GPアニメの名前を設定します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] char* : srcname GPアニメの名前を指定します。 255バイトまでです。 |
ver5.2.2.9 |
E3DGetGPAnimName | GPA | GPアニメの名前を取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [OUT] char* : dstname 名前を格納する文字列の変数を指定します。 4. [IN] int : arrayleng dstnameの配列長を指定します。 |
ver5.2.2.9 |
E3DSetGPAnimType | GPA | GPアニメのタイプを設定します。 タイプの詳細はE3DCreateNewGPAnimのanimtype引数の説明をご覧ください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : type タイプを指定します。 |
ver5.2.2.9 |
E3DGetGPAnimType | GPA | GPアニメのタイプを取得します。 タイプの詳細はE3DCreateNewGPAnimのanimtype引数の説明をご覧ください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [OUT] int* : typeptr タイプが代入されます。 |
ver5.2.2.9 |
E3DSetGPKey | GPA | GPアニメのキーを設定します。 指定したフレーム番号にキーが存在しない場合は自動的に作成してから設定します。 E3DGPSTATEはusercoef.hで定義されています。 以下E3DGPSTATE構造体のメンバの説明。 posは キャラクターの位置座標です。 rotは キャラクターの回転角度です。 Z,X,Yの順番に回転します。 ongmodeは 接地モードです。GROUND_NONEを指定したときは接地なし。GROUND_ONEを指定したときはキーの瞬間だけ接地。GROUND_ONを指定した場合は次のキーまでの間接地します。 GROUND_で始まる定数はusercoef.hで定義されています。 rayyは 接地用のレイの始点のY座標です。 raylengは 接地用のレイの長さです。 offsetyは 接地用の地面からの高さです。 interpは キー間の補間方法へのインデックスです。 0を指定すると線形、1を指定するとスプライン補間になります。 E3DSetGPKeyを呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcGPFullFrameを呼び出してください。 E3DCalcGPFullFrameは重い処理ですので全てのE3DSetGPKeyが終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] E3DGPSTATE : gpstate GPキーのメンバをセットします。 詳しくは前記をご覧ください。 |
ver5.2.2.9 |
E3DGetGPKey | GPA | GPアニメのキーの情報を取得します。 指定したフレーム番号にキーが無い場合は補間計算して情報を取得します。 E3DGPSTATEについてはE3DSetGPKeyの説明をご覧ください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [OUT] E3DGPSTATE* : gsptr GPキーのメンバが代入されます。 5. [OUT] int* : exsitflag 指定したフレーム番号にキーがあった場合は1が 無かった場合には0が代入されます。 |
ver5.2.2.9 |
E3DDeleteGPKey | GPA | GPアニメのキーを削除します。 E3DDeleteGPKeyを呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcGPFullFrameを呼び出してください。 E3DCalcGPFullFrameは重い処理ですので全てのE3DDeleteGPKeyが終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 |
ver5.2.2.9 |
E3DGetGPKeyframeNoRange | GPA | startとendで指定したフレーム範囲のキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGetGPKeyframeNoRange( animno, start, end, 0, 0, &keynum ); framearray = (int*)malloc( sizeof( int ) * keynum ); E3DGetGPKeyframeNoRange( animno, start, end, framearray, keynum, &chknum ); のようにして使ってください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : start 4. [IN] int : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 5. [OUT] int* : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 6. [IN] int : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 7. [OUT] int* : getnumptr 取得したキーフレーム番号の個数が代入されます。 |
ver5.2.2.9 |
E3DCalcGPFullFrame | GPA | GPアニメのキー情報から全てのフレームの姿勢情報を計算します。 この結果はGPアニメの再生やE3DGetGPKeyなどに使われます。 重い処理ですのでなるべく呼び出し回数は少なくしてください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 |
ver5.2.2.9 |
E3DSetGPGroundHSID | GPA | GPアニメの接地用の地面のHSIDを指定します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : ghsid 接地用の地面のモデルデータを識別するID。 |
ver5.2.2.9 |
E3DGetGPGroundHSID | GPA | GPアニメの接地用の地面のHSIDを取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [OUT] int* : ghsidptr 接地用の地面のモデルデータを識別するIDが代入されます。 |
ver5.2.2.9 |
E3DLoadMOEFile | MOE | RokDeBone2で作成したMOEファイル(*.moe)を読み込み アニメ番号を取得します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] char* : filename MOEファイルのファイル名をフルパスで指定してください。 3. [OUT] int* : animnoptr 読み込んだアニメを識別するアニメ番号が代入されます。 |
ver5.2.3.1 |
E3DDestroyMOEAnim | MOE | MOEアニメを破棄します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 |
ver5.2.3.1 |
E3DSaveMOEFile | MOE | MOEアニメをテキストファイルに保存します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] char* : filename MOEファイルのファイル名をフルパスで指定してください。 3. [IN] int : animno MOEアニメを識別する番号を指定してください。 |
ver5.2.3.1 |
E3DSetMOEAnimNo | MOE | カレントのMOEアニメ番号をセットします。 フレーム番号は0に戻ります。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 |
ver5.2.3.1 |
E3DGetMOEAnimNo | MOE | カレントのGPアニメ番号を取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : animnoptr MOEアニメを識別する番号が代入されます。 |
ver5.2.3.1 |
E3DSetMOEFrameNo | MOE | 再生するMOEアニメのアニメ番号とフレーム番号を設定します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] int : isfirst この命令を呼んだ後にE3DSetNewMOEを呼び出す場合は1を、呼び出さない場合は0を指定します。 |
ver5.2.3.1 |
E3DGetMOEFrameNo | MOE | 現在再生中のMOEアニメのアニメ番号、フレーム番号を取得します。 |
1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : animnoptr MOEアニメを識別する番号が代入されます。 3. [OUT] int* : framenoptr フレーム番号が代入されます。 |
ver5.2.3.1 |
E3DSetNewMOE | MOE | アニメのフレームをアニメタイプに従って進め、新しいMOE情報をセットします。 |
1. [IN] int : hsid 形状データを識別するID |
ver5.2.3.1 |
E3DSetNextMOEAnimFrameNo | MOE | animnoで識別されるアニメがbefframenoのフレーム番号に達したらnextanimnoで識別されるアニメのnextframenoに切り替えることを予約します。 アニメの切り替えはE3DSetNewMOEで行われます。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : nextanimno 切り替え先のMOEアニメを識別する番号を指定してください。 4. [IN] int : nextframeno 切り替え先のMOEアニメのフレーム番号を指定してください。 5. [IN] int : befframeno 切り替え前のMOEアニメがbefframenoフレームまで達したらアニメの切り替えが起こります。 -1を指定した場合は切り替え前のアニメが最終フレームに達したときにアニメが切り替わります。 |
ver5.2.3.1 |
E3DGetNextMOEAnimFrameNo | MOE | E3DSetNextMOEAnimFrameNoで設定した情報を取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [OUT] int* : nextanimnoptr 切り替え先のMOEアニメを識別する番号が代入されます。 4. [OUT] int* : nextframenoptr 切り替え先のMOEアニメのフレーム番号が代入されます。 |
ver5.2.3.1 |
E3DCreateNewMOEAnim | MOE | MOEアニメを作成しアニメを識別する番号を取得します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] char* : animname アニメの名前を指定します。 255バイトまでです。 3. [IN] int : animtype アニメの振る舞いを指定します。 1を指定するとフレーム番号は進みません。 2を指定すると最終フレーム番号に達したらその状態を維持します。 3を指定するとループします。 4を指定するとピンポン再生します。 5を指定すると最終フレームに達した後RokDeBone2で指定したフレームにジャンプします。 4. [IN] int : framenum MOEアニメをのフレーム数を指定します。 5. [OUT] int* : animnoptr 作成したアニメを識別する番号が代入されます。 |
ver5.2.3.1 |
E3DSetMOEFrameNum | MOE | MOEアニメのフレーム長を設定します。 現在のフレーム長よりも小さい値を指定した場合は 範囲からはみ出たキーは削除されます。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : framenum フレーム長を指定してください。 |
ver5.2.3.1 |
E3DGetMOEFrameNum | MOE | MOEアニメのフレーム長を取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [OUT] int* : framenumptr フレーム長が代入されます。 |
ver5.2.3.1 |
E3DSetMOEAnimName | MOE | MOEアニメの名前を設定します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] char* : srcname MOEアニメの名前を指定します。 255バイトまでです。 |
ver5.2.3.1 |
E3DGetMOEAnimName | MOE | MOEアニメの名前を取得します。 | 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [OUT] char* : dstname 名前を格納する文字列の変数を指定します。 4. [IN] int : arrayleng dstnameの配列長を指定します。 |
ver5.2.3.1 |
E3DSetMOEAnimType | MOE | MOEアニメのタイプを設定します。 タイプの詳細はE3DCreateNewMOEAnimのanimtype引数の説明をご覧ください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [IN] int : type タイプを指定します。 |
ver5.2.3.1 |
E3DGetMOEAnimType | MOE | MOEアニメのタイプを取得します。 タイプの詳細はE3DCreateNewMOEAnimのanimtype引数の説明をご覧ください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno GPアニメを識別する番号を指定してください。 3. [OUT] int* : typeptr タイプが代入されます。 |
ver5.2.3.1 |
E3DGetMOEKeyframeNoRange | MOE | startとendで指定したフレーム範囲のキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGetMOEKeyframeNoRange( animno, start, end, 0, 0, &keynum ); framearray = (int*)malloc( sizeof( int ) * keynum ); E3DGetMOEKeyframeNoRange( animno, start, end, framearray, keynum, &chknum ); のようにして使ってください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : start 4. [IN] int : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 5. [OUT] int* : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 6. [IN] int : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 7. [OUT] int* : getnumptr 取得したキーフレーム番号の個数が代入されます。 |
ver5.2.3.1 |
E3DGetMOEElemNum | MOE | MOEアニメのキーに含まれるMOEELEMの数を取得します。 MOEELEMはusercoef.hで定義されています。 キーにはMOEELEM複数のMOEELEMとアイドリングモーションが含まれています。 MOEELEMが0個でアイドリングモーションだけのキーも存在するので注意してください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [OUT] int* : moeenumptr キーに含まれるMOEELEMの数が代入されます。 5. [OUT] int* : existkeyptr 指定したフレームにキーが存在するときは1、しないときは0が代入されます。 |
ver5.2.3.1 |
E3DGetMOEElem | MOE | キーに含まれるMOEELEMの情報を取得します。 MOEELEMはusercoef.hで定義されています。 moeeindexにはE3DGetMOEElemNumで取得したMOEELEMの個数をmoeenumとすると、 0から(moeenum - 1)までの数を指定してください。 MOELEMの構成要素の説明については RokDeBone2のマニュアルの「moaイベントアニメとは」のページをご覧ください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] int : moeeindex 0からmoeenum - 1までの数を指定してください。 5. [OUT] MOEELEM* : moeeptr MOEELEMの情報が代入されます。 |
ver5.2.3.1 |
E3DAddMOEElem | MOE | MOEアニメのキーにMOEELEMを追加します。 指定したフレームにキーが無い場合はキーを自動的にキーを作成した後にMOEELEMを追加します。 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] MOEELEM : moee MOEELEMのを指定します。 |
ver5.2.3.1 |
E3DDeleteMOEElem | MOE | MOEアニメのキーからMOEELEMを削除します。 moeeindexに-1を指定するとキー中の全てのMOEELEMを削除します。 MOEELEMが0個になってもキーは削除されません。 この命令を呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcMOEFullFrameを呼び出してください。 E3DCalcMOEFullFrameは重い処理ですので全ての編集命令が終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] int : moeeindex 通常0からmoeenum - 1までの数を指定してください。-1を指定すると全てのMOEELEMを削除します。 |
ver5.2.3.1 |
E3DSetMOEKeyIdling | MOE | MOEアニメのキーのアイドリングモーション情報を設定します。 この命令を呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcMOEFullFrameを呼び出してください。 E3DCalcMOEFullFrameは重い処理ですので全ての編集命令が終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] int : motid アイドリングモーションのIDを指定してください。 |
ver5.2.3.1 |
E3DGetMOEKeyIdling | MOE | MOEアニメのキーのアイドリングモーション情報を取得します。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] int* : motidptr アイドリングモーションのIDが代入されます。 |
ver5.2.3.1 |
E3DDeleteMOEKey | MOE | MOEアニメのキーを削除します。 E3DDeleteMOEKeyを呼び出しても再生用のデータには反映されません。再生用のデータに反映したい場合はE3DCalcMOEFullFrameを呼び出してください。 E3DCalcMOEFullFrameは重い処理ですので全てのE3DDeleteMOEKeyが終わってから最後に1度だけ呼び出すようにすると良いです。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 |
ver5.2.3.1 |
E3DCalcMOEFullFrame | MOE | MOEアニメのキー情報から全てのフレームの姿勢情報を計算します。 この結果はMOEアニメの再生に使われます。 重い処理ですのでなるべく呼び出し回数は少なくしてください。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : animno MOEアニメを識別する番号を指定してください。 |
ver5.2.3.1 |
E3DCreateAndSaveTempMaterial | マテリアル | 現在表示している頂点マテリアルの情報を一時メモリに退避します。 | 1. [IN] int : hsid 形状データを識別するID |
ver5.2.3.3 |
E3DRestoreAndDestroyTempMaterial | マテリアル | E3DCreateAndSaveTempMaterialで退避した頂点マテリアルを現在の頂点マテリアルに適用し、退避していたメモリを削除します。 | 1. [IN] int : hsid 形状データを識別するID |
ver5.2.3.3 |
E3DSetMaterialFromInfElem | マテリアル | 頂点マテリアルの色を影響度の計算方法情報の種類に応じて設定します。 infcolarrayを省略したときはRokDeBone2の「影3」での頂点ペイント時の配色と同じです。 |
1. [IN] int : hsid 形状データを識別するID 2. [IN] int : jointno ここで指定したジョイントの影響度の色がセットされます。 -1を指定すると対称ペイントの部分のみの色が表示されます。 3. [IN] int : partno パーツを識別するID。 -1を指定すると全てのパーツにセットします。 4. [IN] int : vertno 頂点の番号。 -1を指定すると全ての頂点に設定します。 5. [IN] E3DCOLOR3UC* : infcolarray 影響度の各計算モードの色を指定します。 E3DCOLOR3UC infcolarray[ CALCMODE_MAX ];で確保した配列を指定してください。 CALCMODE_で始まる定数はusercoef.hで定義されています。 各モードの説明はE3DGetInfElemの説明をご覧ください。 この引数を省略した場合はRokDeBone2と同じ色になります。 この引数を指定した場合はモデルを読み込んでいる間だけ配色情報が保存されます。 (sigには保存されません。) |
ver5.2.3.3 ver5.2.3.4で拡張 |
E3DUpdateSound | サウンド | 音の更新処理をします。 同じ音の多重再生のための情報更新や3Dサウンドパラメータの反映などが主な動作です。 毎フレーム呼び出してください。 |
なし | ver5.3.0.0 |
E3DGetSoundSamplesPlayed | サウンド | 音の現在の再生位置を取得します。 サンプル(周波数)単位の値です。 |
1. [IN] int : soundid 音データを識別するID 2. [OUT] double* : smpptr 再生位置が代入されます。 |
ver5.3.0.0 |
E3DSetSoundFrequency | サウンド | 音の周波数を設定します。 | 1. [IN] int : soundid 設定したい音を識別する番号 -1を指定すると読み込み済みの全てのサウンドに対して処理します。 2. [IN] float : freq ソース周波数との比率を指定します。 |
ver5.3.0.1 ver5.3.4.1で拡張 |
E3DGetSoundFrequency | サウンド | 現在の周波数を取得します。 |
1. [IN] int : soundid 音を識別する番号 2. [OUT] float* : freqptr ソース周波数との比率が代入されます。 |
ver5.3.0.1 |
E3DSet3DSoundEmiDist | サウンド | 3Dサウンドの音の届く距離を指定します。 E3DUpdateSoundで適用されます。 |
1. [IN] int : soundid 音データを識別するID 2. [IN] float : dist 音の届く最大距離。 |
ver5.3.0.3 |
E3DFadeSound | サウンド | フェード処理をします。 E3DPlaySoundよりも後で呼びます。 |
1. [IN] int : soundid 音データを識別するID 2. [IN] int : msc 3. [IN] float : startgain 4. [IN] float : endgain mscミリセカンドの間に音のゲインをstartgainからendgainに変化させます。 gainは実数。1.0が等倍。 |
ver5.3.0.5 |
E3DGlobalToLocalParBone | 算術 | グローバル座標系の座標値とクォータニオンを 指定したボーンの親のボーンのローカル座標系に変換します。 つまり親の影響を除いた値を取得できます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] int : boneno ボーンを識別する番号を指定してください。 5. [IN] int : flag フラグに1をセットするとクォータニオンのみを変換します。2をセットすると座標値のみを変換します。3をセットするとクォータニオンと座標値の両方を変換します。 6. [IN] int : srcqid 変換前の情報が入っているクォータニオンのID。 7. [IN, OUT] int : dstqid 変換後のクォータニオン情報を格納するクォータニオンのID。 E3DCreateQで作成したクォータニオンのIDを指定してください。 8. [IN] D3DXVECTOR3* : srcvecptr 変換前の座標値を指定します。 9. [OUT] D3DXVECTOR3* : dstvecptr 変換後の座標値が代入されます。 |
ver5.3.0.7 |
E3DLocalToGlobalParBone | 算術 | ローカル座標系の座標値とクォータニオンを 指定したボーンの親のボーンの影響を考慮したグローバル座標系に変換します。 E3DGlobalToLocalParBoneの逆変換です。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定してください。 4. [IN] int : boneno ボーンを識別する番号を指定してください。 5. [IN] int : flag フラグに1をセットするとクォータニオンのみを変換します。2をセットすると座標値のみを変換します。3をセットするとクォータニオンと座標値の両方を変換します。 6. [IN] int : srcqid 変換前の情報が入っているクォータニオンのID。 7. [IN, OUT] int : dstqid 変換後のクォータニオン情報を格納するクォータニオンのID。 E3DCreateQで作成したクォータニオンのIDを指定してください。 8. [IN] D3DXVECTOR3* : srcvecptr 変換前の座標値を指定します。 9. [OUT] D3DXVECTOR3* : dstvecptr 変換後の座標値が代入されます。 |
ver5.3.0.7 |
E3DGetInfElemSymParams | ボーン影響 | CALCMODE_SYMで頂点ペイントした頂点の対称軸と対称距離を取得します。 対称軸はusercoef.hで定義されている SYMAXIS_ で始まる定数を使います。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : vertno 頂点の番号を指定してください。 4. [OUT] int* : symaxisptr 対称軸が代入されます。 usercoef.hで定義されている SYMAXIS_*を参照してください。 5. [OUT] float* : distptr 対称距離が代入されます。 対称距離とは、完全な対称な位置からどれくらいの距離にあるものを対称とみなすかを決める値です。 |
ver5.3.1.1 |
E3DDestroyMotion | モーション | モーションを1つだけ削除します。 モーションを削除すると読み込み済みの全てのモーションのIDが変化します。 それを取得するためにIDCHANGE構造体を使います。 IDCHANGEはusercoef.hで定義されています。 befidに削除前のIDを代入しておいてください。 newidに削除後の新しいIDが代入されます。 読み込み済みの全てのモーション分IDCHANGEの配列を作成してください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid 削除するモーションのID。 3. [IN, OUT] IDCHANGE* : idchgptr 削除後の新しいIDを受け取る構造体の配列へのポインタ。 befidにはあらかじめ値をセットしてください。 4. [IN] int : idnum IDCHANGE引数に渡した配列の要素数。 |
ver5.3.1.3 |
E3DGetIKTargetPos | モデル情報 | IKターゲットの位置を取得します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [OUT] D3DXVECTOR3* : posptr 位置が代入されます。 |
ver5.3.1.3 |
E3DGetIKTargetState | モデル情報 | IKターゲットの状態を取得します。 0のときは削除されている状態。 1のときは有効になっている状態。 2のときは作成されてはいるが無効になっている状態。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [OUT] int* : stateptr 状態が代入されます。 |
ver5.3.1.3 |
E3DGetIKTargetCnt | モデル情報 | IKターゲットの計算回数を取得します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [OUT] int* : cntptr 回数が代入されます。 |
ver5.3.1.3 |
E3DGetIKTargetLevel | モデル情報 | IKターゲットの階層数を取得します。 階層数分親までさかのぼってIK計算されます。 ただし途中でIK伝達禁止フラグがあった場合は IK計算はそこでストップします。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [OUT] int* : levelptr 階層数が代入されます。 |
ver5.3.1.3 |
E3DGetIKLevel | モデル情報 | 通常のIK計算時の計算階層数を取得します。 階層数分親までさかのぼってIK計算されます。 ただし途中でIK伝達禁止フラグがあった場合は IK計算はそこでストップします。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [OUT] int* : levelptr 階層数が代入されます。 |
ver5.3.1.3 |
E3DSetIKTargetPos | モデル情報 | IKターゲットの位置をセットします。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [IN] D3DXVECTOR3 : srcpos 位置を指定します。 |
ver5.3.1.3 |
E3DSetIKTargetState | モデル情報 | IKターゲットの状態をセットします。 0のときは削除されている状態。 1のときは有効になっている状態。 2のときは作成されてはいるが無効になっている状態。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [IN] int : srcstate 状態を指定します。 |
ver5.3.1.3 |
E3DSetIKTargetCnt | モデル情報 | IKターゲットの計算回数をセットします。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [IN] int : srccnt 回数を指定します。 |
ver5.3.1.3 |
E3DSetIKTargetLevel | モデル情報 | IKターゲットの階層数をセットします。 階層数分親までさかのぼってIK計算されます。 ただし途中でIK伝達禁止フラグがあった場合は IK計算はそこでストップします。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [IN] int : srclevel 階層数を指定します。 |
ver5.3.1.3 |
E3DSetIKLevel | モデル情報 | 通常のIK計算時の計算階層数をセットします。 階層数分親までさかのぼってIK計算されます。 ただし途中でIK伝達禁止フラグがあった場合は IK計算はそこでストップします。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [IN] int : srclevel 階層数を指定します。 |
ver5.3.1.3 |
E3DGetQVal | 算術 | クォータニオンの値を取得します。 E3DQ構造体はusercoef.hで定義されています。 |
1. [IN] int : qid クォータニオンを識別するIDを指定してください。 2. [OUT] E3DQ* : qptr クォータニオンの値が代入されます。 |
ver5.3.1.3 |
E3DSetQVal | 算術 | クォータニオンの値をセットします。 E3DQ構造体はusercoef.hで定義されています。 |
1. [IN] int : qid クォータニオンを識別するIDを指定してください。 2. [IN] E3DQ : srcq クォータニオンの値を指定します。 |
ver5.3.1.3 |
E3DMultQArray | 算術 | クォータニオンの掛け算をします。 qnum個のクォータニオンをqidarrayで指定した先頭のクォータニオンから順番に掛け算します。 |
1. [IN] int* : qidarray クォータニオンを識別するIDの配列を指定してください。 2. [IN] int : qnum qidarrayで指定した配列の要素数を指定します。 3. [IN, OUT] int : resultqid 結果を格納するクォータニオンのIDを指定します。 |
ver5.3.1.3 |
E3DEulerZXY2Q | 算術 | オイラー回転角度をクォータニオンに変換します。 回転の順番はZ、X、Yです。 |
1. [IN, OUT] int : qid 結果を格納するクォータニオンのIDを指定してください。 2. [IN] D3DXVECTOR3 : srceul オイラー角度を指定します。 |
ver5.3.1.3 |
E3DGetEulerLimit | モデル情報 | IKの制限角度情報を取得します。 EULERLIMIT構造体はusercoef.hで定義されています。 ignoreflagは1のとき制限角度を無視します。 lim0とlim1は制限角度の両端のオイラー角を示します。 回転の順序はZ,X,Yです。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [OUT] EULERLIMIT* : elptr 制限角度情報が代入されます。 |
ver5.3.1.3 |
E3DSetEulerLimit | モデル情報 | IKの制限角度情報をセットします。 EULERLIMIT構造体はusercoef.hで定義されています。 ignoreflagは1のとき制限角度を無視します。 lim0とlim1は制限角度の両端のオイラー角を示します。 回転の順序はZ,X,Yです。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : bone ボーンを識別する番号を指定してください。 3. [IN] EULERLIMIT : srcel 制限角度情報を指定します。 |
ver5.3.1.3 |
E3DCalcEuler | モーション | 指定モーションの全てのボーンの全てのモーションポイントのオイラー角を計算します。 zakindには座標系を指定します。 usercoef.hで定義されているZA_*を使ってください。 RokDeBone2の「座1」から「座4」に対応しています。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : zakind 座標系を指定します。 |
ver5.3.1.3 |
E3DGetBoneEuler | モーション | ボーンごとにモーションポイントのオイラー角度を取得します。 モーションポイントが存在しないときは補間計算してオイラー角を求めます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno モーションのフレーム番号を指定してください。 5. [OUT] D3DXVECTOR3* : eulptr オイラー角が代入されます。 |
ver5.3.1.3 |
E3DGetZa4Elem | モデル情報 | RokDeBone2の「座4」のパラメータを取得します。 ZA4ELEM構造体はusercoef.hで定義されています。 zatypeにはZA_*を指定します。 rotaxisにはROTAXIS_*を指定します。 za4qには追加の姿勢情報を指定します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [OUT] ZA4ELEM* : z4eptr 座4パラメータが代入されます。 |
ver5.3.1.3 |
E3DSetZa4Elem | モデル情報 | RokDeBone2の「座4」のパラメータをセットします。 ZA4ELEM構造体はusercoef.hで定義されています。 zatypeにはZA_*を指定します。 rotaxisにはROTAXIS_*を指定します。 za4qには追加の姿勢情報を指定します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] ZA4ELEM : srcz4e 座4パラメータを指定します。 |
ver5.3.1.3 |
E3DCalcZa4LocalQ | モデル情報 | 座4での姿勢を表すクォータニオンを計算します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : frameno モーションのフレーム番号を指定してください。 |
ver5.3.1.3 |
E3DGetZa4LocalQ | モデル情報 | E3DCalcZaLocalQでの計算結果をボーンごとに取得します。 E3DQ構造体はusercoef.hで定義されています。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [OUT] E3DQ* : dstq クォータニオンが代入されます。 |
ver5.3.1.3 |
E3DGetZa3IniQ | モデル情報 | 座3の初期状態の座標系を表すクォータニオンを取得します。 E3DQ構造体はusercoef.hで定義されています。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [OUT] E3DQ* : dstq クォータニオンが代入されます。 |
ver5.3.1.3 |
E3DSetBoneAxisQ | モデル情報 | ボーンの座標系を表すクォータニオンを計算します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno モーションのフレーム番号を指定してください。 5. [IN] int : zakind 座標系を指定します。 usercoef.hで定義されているZA_*を使います。 |
ver5.3.1.3 |
E3DGetBoneAxisQ | モデル情報 | E3DSetBoneAxisQで計算した結果を取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [OUT] E3DQ* : dstq クォータニオンが代入されます。 |
ver5.3.1.3 |
E3DGetBoneTra | モーション | ボーンの移動成分を取得します。 モーションポイントが存在しない場合は補間計算して情報を取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno フレーム番号を指定してください。 5. [OUT] D3DXVECTOR3* : vecptr 移動成分が代入されます。 6. [OUT] int* : existptr 指定したフレームにモーションポイントが存在する場合は1が、しない場合は0が代入されます。 |
ver5.3.1.4 |
E3DGetBoneScale | モーション | ボーンの拡大縮小成分を取得します。 モーションポイントが存在しない場合は補間計算して情報を取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno フレーム番号を指定してください。 5. [OUT] D3DXVECTOR3* : vecptr 拡大縮小成分が代入されます。 6. [OUT] int* : existptr 指定したフレームにモーションポイントが存在する場合は1が、しない場合は0が代入されます。 |
ver5.3.1.4 |
E3DSetBoneTra | モーション | ボーンの移動成分を設定します。 モーションポイントが存在しない場合はエラーになります。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno フレーム番号を指定してください。 5. [IN] D3DXVECTOR3 : srcvec 移動成分を指定します。 |
ver5.3.1.4 |
E3DSetBoneScale | モーション | ボーンの拡大縮小成分を取得します。 モーションポイントが存在しない場合はエラーになります。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno フレーム番号を指定してください。 5. [IN] D3DXVECTOR3 : srcvec 拡大縮小成分を指定します。 |
ver5.3.1.4 |
E3DGetBoneMatrix | モーション | ボーンの変換行列を取得します。 モーションポイントが存在しなくても取得できます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno フレーム番号を指定してください。 5. [IN] int : kind 親の変換行列を掛けた行列を取得したい場合は1を、親の影響を受けていない行列を取得したい場合は0を指定します。 6. [OUT] D3DXMATRIX* : matptr 変換行列が代入されます。 |
ver5.3.1.4 |
E3DCreateMotionPoint | モーション | モーションポイントを作成します。 前後のモーションポイントを調べて補間計算したモーション情報をセットします。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno フレーム番号を指定してください。 |
ver5.3.1.4 |
E3DTransform | 描画準備 | 表示オブジェクトとボーンに表示用の変換マトリックスをセットします。 この命令はE3DRenderの内部で呼ばれますので通常は必要ありません。 変換マトリックスセットと表示処理とを分けたいときに使ってください。 この命令を呼んだときはE3DRenderのtransskip引数に1をセットしてE3DRenderでのマトリックスセットをスキップすることを想定しています。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneonly ボーンのマトリックスのみをセットしたいときに1を設定します。 全てのマトリックスをセットしたいときは0を設定します。 |
ver5.3.1.5 |
E3DGetIKSkip | モデル情報 | ボーンのIKスキップのフラグを取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [OUT] int* : flagptr IKスキップフラグが代入されます。 |
ver5.3.1.7 |
E3DSetIKSkip | モデル情報 | ボーンのIKスキップのフラグを設定します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : flag IKスキップフラグを指定します。 |
ver5.3.1.7 |
E3DGetMaterialTexParams | マテリアル | 面マテリアルのテクスチャに関するパラメータを取得します。 パラメータの取得にはMATERIALTEXというusercoef.hで定義されている構造体を使います。 以下、MATERIALTEXのメンバーの説明。 texは1枚目のテクスチャのファイル名です。 テクスチャが無い場合はtex[0]が0です。 bumpはバンプマップテクスチャ名です。 バンプを使わないときはbump[0]が0です。 バンプを使う場合はbumpだけでなくtexにもテクスチャが指定されていなければなりません。 exttexnumは拡張テクスチャの枚数です。MAXEXTTEXNUM(現在は100)枚までテクスチャを指定できます。 exttexは拡張テクスチャのファイル名です。 使わない場合は0初期化します。 exttexmodeはテクスチャモードです。 EXTTEXMODE_で始まるusercoef.hで定義されている定数を使います。 EXTTEXMODE_NORMALはテクスチャを1枚だけ指定するモードです。 EXTTEXMODE_ANIMはテクスチャアニメを使用するモードです。 EXTTEXMODE_GLOWは不透明グローを使用するモードです。 EXTTEXMODE_GLOWALPHAは半透明グローを使用するモードです。 transparentは透過モードです。 0は不透明。1は黒透過。2はテクスチャのアルファによる半透明。 uanim, vanimはUVアニメの毎フレームの移動量です。 texruleはテクスチャの貼り方です。 usercoef.hで定義されているTEXRULE_で始まる定数を使います。 TEXRULE_X, TEXRULE_Y, TEXRULE_ZはそれぞれX,Y,Z軸投影。 TEXRULE_CYLINDERは円筒貼り付け。 TEXRULE_SPHEREは球貼り付け。 TEXRULE_MQはメタセコイア(mqoファイル)のUV値による貼り付け。 texanimtypeはUVアニメのタイプです。 TEXANIM_WRAPは0から1でラップします。 TEXANIM_NOLIMITはラップしない無制限モードです。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : materialno マテリアルを識別する番号を指定してください。 3. [OUT] MATERIALTEX* : dstparams パラメータを受け取る構造体へのポインタを指定してください。 |
ver5.3.2.0 |
E3DSetMaterialTexParams | マテリアル | 面マテリアルのテクスチャのパラメータを設定します。 パラメータの指定にはusercoef.hで定義されているMATERIALTEX構造体を使用します。 MATERIALTEX構造体のメンバーの説明はE3DGetMaterialTexParamsの説明をお読みください。 exttexmodeがEXTTEXMODE_GLOWのときはtrasparentは0に、EXTTEXMODE_GLOWALPHAのときはtranspaerntが2に強制的にセットされます。 テクスチャの複数指定の際には1枚目をtexに 2枚目以降をexttexにセットしてください。 exttexnumはexttexだけの(texを勘定しない)枚数です。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : materialno マテリアルを識別する番号を指定してください。 3. [IN] MATERIALTEX* : srcparams パラメータを指定する構造体へのポインタを指定してください。 |
ver5.3.2.0 |
E3DCreateTexKey | テクスチャアニメ | テクスチャアニメのキーを作成します。 キーは複数のTEXCHANGEから構成されます。 TEXCHANGE構造体はusercoef.hで定義されています。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno テクスチャアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 |
ver5.3.2.0 |
E3DDelTexKey | テクスチャアニメ | テクスチャアニメのキーを削除します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno テクスチャアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 |
ver5.3.2.0 |
E3DAddTexChange | テクスチャアニメ | テクスチャアニメのキーにTEXCHANGEを追加します。TEXCHANGEはusercoef.hで定義されています。テクスチャ変更のトリガーです。 TEXCHANGEのtexnameに指定するテクスチャ名は面マテリアルにすでに追加されている必要があります。面マテリアルへのテクスチャの追加はE3DSetMaterialTexParamsで行います。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno テクスチャアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 5. [IN] TEXCHANGE : srctc テクスチャの変更情報を指定します。 |
ver5.3.2.0 |
E3DDelTexChange | テクスチャアニメ | テクスチャアニメのキーからTEXCHANGEを削除します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno テクスチャアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 5. [IN] int : materialno 面マテリアルを識別する番号を指定してください。 |
ver5.3.2.0 |
E3DGetTexChangeNum | テクスチャアニメ | テクスチャアニメのキーの中に何個TEXCHANGEが存在するかを取得します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno テクスチャアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 5. [OUT] int* : tcnumptr TEXCHANGEの数が代入されます。 |
ver5.3.2.0 |
E3DGetTexChange | テクスチャアニメ | テクスチャアニメのキーの中のTEXCHANGEを取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno テクスチャアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 5. [IN] int : tcindex TEXCHANGEのインデックスを指定します。 E3DGetTexChangeNumで取得した数をtcnumとすると、この引数には0から(tcnum - 1)までの数値を指定します。 6. [OUT] TEXCHANGE* : dsttc 情報を受け取る構造体へのポインタを指定してください。 |
ver5.3.2.0 |
E3DGetTexAnimKeyframeNoRange | テクスチャアニメ | startとendで指定したフレーム範囲のキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGetTexAnimKeyframeNoRange( hsid, boneno, motid, start, end, 0, 0, &keynum ); framearray = (int*)malloc( sizeof( int ) * keynum ); E3DGetTexAnimKeyframeNoRange( hsid, boneno, motid, start, end, framearray, keynum, &chknum ); のようにして使ってください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno テクスチャアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : start 5. [IN] int : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 6. [OUT] int* : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 7. [IN] int : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 8. [OUT] int* : getnumptr 取得したキーフレーム番号の個数が代入されます。 |
ver5.3.2.0 |
E3DCreateDSKey | ディスプレイスイッチ | DispSwitchアニメのキーを作成します。 キーは複数のDSCHANGEから構成されます。 DSCHANGE構造体はusercoef.hで定義されています。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno DispSwitchアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 |
ver5.3.2.0 |
E3DDelDSKey | ディスプレイスイッチ | DispSwitchアニメのキーを削除します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno DispSwitch情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 |
ver5.3.2.0 |
E3DAddDSChange | ディスプレイスイッチ | DispSwitchアニメのキーにDSCHANGEを追加します。DSCHANGEはusercoef.hで定義されています。DispSwitch変更のトリガーです。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno DispSwitch情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 5. [IN] DSCHANGE : srcdsc DispSwitch変更情報の構造体を指定します。 |
ver5.3.2.0 |
E3DDelDSChange | ディスプレイスイッチ | DispSwitchアニメのキーからDSCHANGEを削除します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno DispSwitch情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 5. [IN] int : switchno DispSwitchのスイッチ番号を指定します。 |
ver5.3.2.0 |
E3DGetDSChangeNum | ディスプレイスイッチ | DispSwitchアニメのキーの中に何個DSCHANGEが存在するかを取得します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno DispSwitch情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 5. [OUT] int* : dscnumptr DSCHANGEの個数が代入されます。 |
ver5.3.2.0 |
E3DGetDSChange | ディスプレイスイッチ | DispSwitchアニメのキーの中のDSCHANGEを取得します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno DispSwitchアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : frameno モーションのフレーム番号を指定します。 5. [IN] int : dscindex DSCHANGEのインデックスを指定します。 E3DGetDSChangeNumで取得した数をdscnumとすると、この引数には0から(dscnum - 1)までの数値を指定します。 6. [OUT] DSCHANGE* : dstdsc 情報を受け取る構造体へのポインタを指定してください。 |
ver5.3.2.0 |
E3DGetDSAnimKeyframeNoRange | ディスプレイスイッチ | startとendで指定したフレーム範囲のキーフレームの個数とフレーム番号を取得します。 arraylengに0を指定して呼び出すとframearray引数への代入を行わずにキーの個数のみを取得します。 E3DGetDSAnimKeyframeNoRange( hsid, boneno, motid, start, end, 0, 0, &keynum ); framearray = (int*)malloc( sizeof( int ) * keynum ); E3DGetDSAnimKeyframeNoRange( hsid, boneno, motid, start, end, framearray, keynum, &chknum ); のようにして使ってください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno テクスチャアニメ情報を格納するボーンを識別する番号を指定します。 3. [IN] int : motid モーションのIDを指定します。 4. [IN] int : start 5. [IN] int : end キーを調べたいフレーム番号の最初と最後の値を指定してください。 6. [OUT] int* : framearray フレーム番号がgetnum個だけ代入されます。 arraylengが0の場合は代入されません。 7. [IN] int : arrayleng framearrayの配列長(要素数)を指定してください。 0を指定するとキーの個数だけを調べます。 8. [OUT] int* : getnumptr 取得したキーフレーム番号の個数が代入されます。 |
ver5.3.2.0 |
E3DGetMaterialAlphaTest | マテリアル | マテリアルのアルファテストの情報を取得します。 | 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] int* : test0ptr 不透明を描画時にアルファテストする場合は1が しない場合は0が代入されます。 4. [OUT] int* : val0ptr 不透明時のアルファテストのアルファの閾値が代入されます。 (0から255) 5. [OUT] int* : test1ptr 半透明を描画時にアルファテストする場合は1が しない場合は0が代入されます。 6. [OUT] int* : val1ptr 半透明時のアルファテストのアルファの閾値が代入されます。 (0から255) |
ver5.3.2.1 |
E3DGetMaterialTexParams1DIM | マテリアル | マテリアルのテクスチャ情報を取得します。 MATERIALTEX構造体がMATERIALTEX1DIMになっていること以外はE3DGetMaterialTexParamsと同じです。 E3DGetMaterialTexParamsの説明をお読みください。 変更箇所はexttexが1次元になったことです。 exttexnum個分のテクスチャ名が'\n'終端で連結されて代入されます。 exttexの一番最後の要素の最後にも'\n'が付きます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : materialno マテリアルを識別する番号を指定してください。 3. [OUT] MATERIALTEX1DIM* : dstparams パラメータを受け取る構造体へのポインタを指定してください。 |
ver5.3.2.1 |
E3DSetMaterialTexParams1DIM | マテリアル | マテリアルのテクスチャ情報を設定します。 MATERIALTEX構造体がMATERIALTEX1DIMになっていること以外はE3DSetMaterialTexParamsと同じです。 E3DSetMaterialTexParamsの説明をお読みください。 変更箇所はexttexが1次元になったことです。 exttexには各テクスチャ名を'\n'終端で連結して指定します。 exttexの一番最後の要素の終端にも'\n'が必要です。 テクスチャ名は255バイトまでです。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : materialno マテリアルを識別する番号を指定してください。 3. [IN] MATERIALTEX1DIM* : srcparams パラメータを指定する構造体へのポインタを指定してください。 |
ver5.3.2.1 |
E3DSet3DSoundDopplerScaler | サウンド | ドップラー効果の係数を設定します。 値が大きいほどドップラー効果が大きくなります。 ドップラー効果は音源やリスナーの速度によって生じます。 音源の速度は E3DSet3DSoundMovementで指定する速度です。 リスナーの速度は E3DSet3DSoundListenerMovementで指定したキャラクターまたはカメラの現在の位置から1回前の呼び出し時の位置を引いたものとなります。 |
1. [IN] int : soundid 音を識別する番号を、指定します。 -1を指定すると読み込み済みの全ての音に対して処理をします。 2. [IN] float : srcdp ドップラー効果の係数を指定します。 0以上の数値を指定します。 |
ver5.3.2.2 |
E3DGet3DSoundDopplerScaler | サウンド | ドップラー効果の係数を取得します。 | 1. [IN] int : soundid 音を識別する番号を、指定します。 2. [OUT] float* : dpptr ドップラー効果の係数が代入されます。 |
ver5.3.2.2 |
E3DLoadMQOFileAsChara | モデルデータ | mqoファイルをキャラクターとして読み込みます。 ツール用の命令です。 ゲームなどではRokDeBone2でmqoを読み込みsigで保存して、E3DSigLoadで読み込んでください。 sigの読み込みのほうが高速です。 |
1. [IN] char* : filename 読み込む、mqo ファイル名。 2. [IN] float : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0 3. [IN] int : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 2を指定すると0.0から1.0の間にクランプします。 4. [IN] int : bonetype mqoにボーンが含まれている場合は ボーンのタイプを指定します。 BONETYPE_RDB2を指定するとRokDeBone2形式の 線分をボーンと認識するタイプになります。 BONETYPE_MIKOを指定すると mikoto形式のタイプになります。 これらの定数はusercoef.hで定義されています。 5. [OUT] int* : hsidptr 作成したキャラクターを識別するhsidが代入されます。 |
ver5.3.2.2 |
E3DGetPartPropName | モデル情報 | パーツの名前を取得します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] char* : nameptr 名前を取得するための配列へのポインタを指定してください。 4. [IN] int : arrayleng nameptrの配列の長さを指定してください。 名前の最大長は255バイトなので配列は256バイトあれば十分です。 |
ver5.3.2.3 |
E3DSetPartPropName | モデル情報 | パーツの名前を設定します。 | 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] char* : srcname 名前のセットしてある配列へのポインタ。名前は最大255バイトまで。 |
ver5.3.2.3 |
E3DGetPartPropDS | モデル情報 | パーツのディスプレイスイッチ番号を取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] int* : dsptr ディスプレイスイッチ番号が代入されます。 ディスプレイスイッチは0から(DISPSWITCHNUM - 1)までの数値です。DISPSWITCHNUMはusercoef.hで定義されています。 |
ver5.3.2.3 |
E3DSetPartPropDS | モデル情報 | パーツにディスプレイスイッチ番号を設定します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : srcds ディスプレイスイッチ番号を指定します。 ディスプレイスイッチは0から(DISPSWITCHNUM - 1)までの数値です。DISPSWITCHNUMはusercoef.hで定義されています。 |
ver5.3.2.3 |
E3DGetPartPropNotUse | モデル情報 | パーツの無効化フラグを取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] int* : flagptr notuseが代入されます。 notuseが0のときパーツは有効になっています。notuseが1のときパーツは無効となります。 |
ver5.3.2.3 |
E3DSetPartPropNotUse | モデル情報 | パーツに無効化フラグを設定します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : srcflag notuseを指定します。 0のときパーツは有効になっています。1のときパーツは無効となります。 ジョイントの有効無効を切り替えた場合はE3DJointRemakeを呼び出す必要があります。 |
ver5.3.2.3 |
E3DLoadSSF | 音セット | 音セットファイル*.ssfを読み込みます。 |
1. [IN] char* : filename ssfファイルのパスを指定します。 |
ver5.3.2.5 |
E3DDestroyAllSoundSet | 音セット | 読み込み済みの全ての音セットを破棄します。 |
なし | ver5.3.2.5 |
E3DGetSoundSetNum | 音セット | 読み込み済みの音セットの数を取得します。 |
1. [OUT] int* : numptr 音セットの数が代入されます。 |
ver5.3.2.5 |
E3DGetSoundSetInfo | 音セット | 音セットの情報を取得します。 音セットごとに呼び出します。 ssindexには0からE3DGetSoundSetNumで取得したnum - 1までの数値を指定します。 |
1. [IN] int : ssindex 音セットのインデックス。 音セットのIDではありません。 2. [OUT] E3DSSINFO* : infoptr 音セットの情報が代入されます。 E3DSSINFOはusercoef.hで定義されています。 |
ver5.3.2.5 |
E3DGetSoundSetBGM | 音セット | 音セットに関連付けられているBGMのサウンドIDを取得します。 |
1. [IN] int : setid 音セットのIDを指定します。 音セットのインデックスではありません。 2. [OUT] int* : bgmidptr BGMのサウンドIDが代入されます。 |
ver5.3.2.5 |
E3DLoadSAF | 音アニメ | 音アニメファイル*.safを読み込みアニメを識別するIDを取得します。 |
1. [IN] char* : filename safファイルのパスを指定します。 2. [OUT] int* : animnoptr 読み込んだアニメを識別するIDが代入されます。 |
ver5.3.2.5 |
E3DDestroyAllSndAnim | 音アニメ | 読み込み済みの全ての音アニメを破棄します。 |
なし |
ver5.3.2.5 |
E3DGetSndAnimFrameNum | 音アニメ | 音アニメのフレーム長を取得します。 |
1. [IN] int : animno アニメを識別する番号を指定します。 2. [OUT] int* : numptr アニメのフレーム長が代入されます。 |
ver5.3.2.5 |
E3DGetSndAnimBGM | 音アニメ | 音アニメに関連付けられているBGMのサウンドIDを取得します。 |
1. [IN] int : animno アニメを識別する番号を指定します。 2. [OUT] int* : bgmidptr BGMのサウンドIDが代入されます。 |
ver5.3.2.5 |
E3DGetSndAnimFPS | 音アニメ | 音アニメのFPSを取得します。 |
1. [IN] int : animno アニメを識別する番号を指定します。 2. [OUT] int* : fpsptr FPSが代入されます。 |
ver5.3.2.5 |
E3DGetSndAnimMode | 音アニメ | 音アニメの繰り返しモードを取得します。 |
1. [IN] int : animno アニメを識別する番号を指定します。 2. [OUT] int* : modeptr 繰り返しなしの場合は1が繰り返し再生の場合は255が代入されます。 |
ver5.3.2.5 |
E3DStartSndAnim | 音アニメ | 音アニメの再生を開始します。 |
1. [IN] int : animno アニメを識別する番号を指定します。 2. [IN] int : startframe 再生を開始する際のスタートフレーム番号を指定します。 |
ver5.3.2.5 |
E3DSetSndAnimFrameNo | 音アニメ | 再生する音アニメのフレーム番号を指定します。 この命令は音アニメで設定されている効果音用のものです。 BGMには影響を与えません。 |
1. [IN] int : animno アニメを識別する番号を指定します。 2. [IN] int : frameno 再生するフレーム番号を指定します。 |
ver5.3.2.5 |
E3DStopSndAnim | 音アニメ | 音アニメの再生を停止します。 |
1. [IN] int : animno アニメを識別する番号を指定します。 |
ver5.3.2.5 |
E3DGetSoundTotalTime | サウンド | 音のトータルタイムを取得します。 |
1. [IN] int : soundid 音を識別するIDを指定します。 2. [OUT] double* : timeptr トータルタイムが代入されます。 |
ver5.3.2.5 |
E3DConvSoundSampleToFrame | サウンド | 音のサンプル数をフレーム番号に変換します。 現在再生中の位置(サンプル数)は E3DGetSoundSamplesPlayedで取得できます。 |
1. [IN] int : soundid 音を識別するIDを指定します。 2. [IN] int : srcfps 音アニメのFPSを指定します。 3. [IN] double : srcsample サンプル数を指定します。 4. [OUT] int* : frameptr フレーム番号が代入されます。 |
ver5.3.2.5 |
E3DGetSoundStartCnt | サウンド | 音のstartcntを取得します。 startcntは0から始まり、音の再生が実際に開始されたときに1ずつ増えます。 音の再生命令を呼び出しても実際に再生されるまでには少し時間がかかります。 このstartcntの値を監視することで 実際に再生が開始された時を把握できます。 |
1. [IN] int : soundid 音を識別するIDを指定します。 2. [OUT] int* : cntptr startcntが代入されます。 |
ver5.3.2.5 |
E3DGetSoundEndCnt | サウンド | 音のendcntを取得します。 endcntは0から始まり、音の再生が実際に終了したときに1ずつ増えます。 音の停止命令を呼ばない場合でも再生が最後まで達し終了すればカウントが増えるので 実際に再生が終了したときを把握できます。 |
1. [IN] int : soundid 音を識別するIDを指定します。 2. [OUT] int* : cntptr endcntが代入されます。 |
ver5.3.2.5 |
E3DPCWait | 同期 | 指定したFPSに近くなるように待機します。 E3DWaitByFPSよりも高精度ですがCPUを消費します。 音の同期の際には正確なタイミングが必要になるのでこの命令を使ってください。 |
1. [IN] int : srcfps 目標のFPSを指定します。 2. [OUT] double* : dstfps 実際のFPSが代入されます。 |
ver5.3.2.5 |
E3DCloneDispObj | モデル情報 | 表示用オブジェクトを複製します。 ボーンには使えません。 モーフターゲットの複製などに使ってください。 この命令を実行すると読み込み済みの全てのモーションが破棄されます。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : partno 複製したい表示オブジェクトのパーツID。 3. [IN] char* : newname 新しいパーツの名前。 255バイトまで。0終端。 4. [OUT] int* : seriptr 作成した表示オブジェクトを識別するID。 |
ver5.3.2.5_2 |
E3DGetJointNotSel | モデル情報 | ジョイントの選択禁止フラグを取得します。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : boneno ボーン(ジョイント)を識別する番号。 3. [OUT] int* : notselptr 選択禁止フラグが代入されます。 0か1です。 |
ver5.3.3.0 |
E3DSetJointNotSel | モデル情報 | ジョイントの選択禁止フラグを設定します。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : boneno ボーン(ジョイント)を識別する番号。 3. [IN] int : notsel 選択禁止フラグを指定します。 0か1を指定してください。 |
ver5.3.3.0 |
E3DDestroyMorph | モデル情報 | モーフオブジェクトを削除します。 モーフのベースとターゲットは削除されずに通常の表示用オブジェクトとしてシリアル番号1の子供になります。 モーフをまとめるオブジェクトが削除されます。 今の仕様では削除してもどうしてもごみが残るので多用するのはお勧めしません。 読み込み済みのモーションは削除されます。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : baseno モーフのベースを識別する番号。 |
ver5.3.3.0 |
E3DDestroyDispObj | モデル情報 | 表示用オブジェクトを削除します。 モーフのベースには使えません。 (モーフのベースを削除したい場合はまずE3DDestroyMorphを実行し、モーフの外に出してから削除します) モーフのターゲットには使えます。 今の仕様では削除してもどうしてもごみが残るので多用するのはお勧めしません。 読み込み済みのモーションは削除されます。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : partno 表示オブジェクトを識別する番号。 |
ver5.3.3.0 |
E3DSetCameraOffset | カメラ | カメラのオフセットを設定します。 詳しくはマニュアルのe3d_CameraOffset.htmをご覧ください。 具体的な使用例は CameraOffsetソリューションをご覧ください。 |
1. [IN] D3DXVECTOR3 : camoffbef 回転前の移動成分を指定してください。 2. [IN] int : camqid 回転を表すクォータニオンのIDを指定してください。 3. [IN] D3DXVECTOR3 : camoffaft 回転後の移動成分を指定してください。 |
ver5.3.3.3 |
E3DAllClearInfElem | ボーン影響 | ボーンの影響度を全て削除しまっさらな状態にします。 ボーンの影響度が1つも定義されていない状態で E3DCreateSkinMatや描画命令を呼び出すとエラーになります。 この命令を呼び出した場合は 必ず少なくとも1つはボーンの影響度を設定し 影響度の設定が全部終わったら E3DCreateSkinMatを呼び出さなければなりません。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : partno 表示オブジェクトを識別する番号。 -1を指定すると全てのパーツに対して処理します。 3. [IN] int : vertno 頂点の番号。 -1を指定すると全ての頂点に処理します。 partnoに-1を指定した場合は 自動的に内部でvertnoに-1がセットされます。 |
ver5.3.3.7 |
E3DSetGPOffset | GPA | GPAの再生開始位置と向きを指定します。 この命令を呼ぶ前に E3DSetGPGroundHSIDを呼び、 この命令を呼んだ後に E3DCalcGPFullFrameを呼ばないとオフセットはアニメに反映されません。 具体的な使用例は GPOffsetソリューションをご覧ください。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] D3DXVECTOR3 : tra GPAを開始する位置。 3. [IN] int : 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] int : ltype 1を指定すると平行光源とスポットライトを使用できます。 0を指定すると平行光源とポイントライトを使用できます。 |
ver5.3.4.6 |
E3DSetSpotLight | ライト | E3DCreateLightで作成したライトに スポットライトのパラメータをセットする。 |
1. [IN] int : lightID 光源を識別するid 2. [IN] D3DXVECTOR3 : pos スポットライトの位置を (pos.x, pos.y, pos.z)に設定する。 3. [IN] D3DXVECTOR3 : dir スポットライトの向きを設定する。 4. [IN] float : dist スポットライトの光が届く距離を設定します。 5. [IN] float : angle スポットライトのコーンの角度を設定します。 6. [IN] E3DCOLOR4UC : col スポットライトの色を (col.r, col.g, col.b)に設定する。 col.aは無視される。 |
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] int : outzscid Z情報を出力するscid 2. [IN, OUT] int : outnscid 法線情報を出力するscid 3. [IN] int : inzscid 出力の際に使用するZバッファのscid 4. [IN] int : hsid 形状データを識別するID 5. [IN] int : skipflag 処理のスキップフラグ。 1を足すとZ出力スキップ。 2を足すと法線出力スキップ。 4を足すとZバッファー初期化スキップ。 8を足すとモーションの姿勢計算スキップ。 16を足すとBeginScene, EndSceneをスキップ。 6. [IN] int : renderflag レンダーフラグ。 1を足すとZ情報を出力。 2を足すと法線情報を出力。 4を足すとカメラ座標系の法線を出力。ただし2と組み合わせないと無効。 |
ver5.3.4.7 |
E3DCreateInfScope | ボーン影響2 | 影響度2用の影響範囲形状を作成します。 影響範囲形状はボーンの番号と表示オブジェクトの番号の組み合わせごとに1つだけ作成できます。 この命令で得られるisindexの値は恒久的なものではありません。 編集作業で 影響範囲形状を削除したりした場合はE3DExistInfScopeでisindexを再取得しなければなりません。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : boneno ボーンのパーツ番号。 3. [IN] int : dispno 表示オブジェクトのパーツ番号。 4. [OUT] int* : isindexptr 影響範囲形状操作用のインデックスが代入されます。 |
ver5.3.4.8 |
E3DDestroyInfScope | ボーン影響2 | 影響範囲形状を削除します。 この命令で得られるisindexの値は恒久的なものではありません。 編集作業で 影響範囲形状を削除したりした場合はE3DExistInfScopeでisindexを再取得しなければなりません。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : isindex 削除する影響範囲形状のインデックス。 |
ver5.3.4.8 |
E3DExistInfScope | ボーン影響2 | 影響範囲形状が存在する場合はそのインデックスを取得し、存在しないときは-1を取得します。 mikoto形式のデータを読み込むと アンカーが影響範囲形状に自動的に変換されるので、E3DCreateInfScopeを呼び出さなくても影響範囲形状が存在する場合があります。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : boneno ボーンのパーツ番号。 3. [IN] int : dispno 表示オブジェクトのパーツ番号。 4. [OUT] int* : isindexptr 影響範囲形状操作用のインデックスが代入されます。 影響範囲形状が存在しないときは-1が代入されます。 |
ver5.3.4.8 |
E3DGetInfScopeNum | ボーン影響2 | 影響範囲形状の個数を取得します。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [OUT] int* : numptr 影響範囲形状の総数が代入されます。 |
ver5.3.4.8 |
E3DGetInfScopeInfo | ボーン影響2 | 影響範囲形状の情報を取得します。 ISINFO構造体はusercoef.hで定義されています。 E3DGetInfScopeNumで取得した総数をisnumとすると、isiptrにはisnum個以上の要素を持つ配列のポインタを渡してください。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [OUT] ISINFO* : isiptr 影響範囲形状の情報が代入されます。 3. [IN] int : arrayleng isiptrの配列要素数を指定します。 4. [OUT] int* : getnumptr isiptrに格納した要素数が代入されます。 |
ver5.3.4.8 |
E3DSetInfScopeVert | ボーン影響2 | 影響範囲形状の頂点位置を設定します。 ISVERT構造体はusercoef.hで定義されています。 ローカル座標系の位置を渡してください。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] ISVERT : srcisv 頂点情報。 |
ver5.3.4.8 |
E3DGetInfScopeVert | ボーン影響2 | 影響範囲形状の頂点位置を取得します。 ISVERT構造体はusercoef.hで定義されています。 isv.isid、isv.vertnoに取得したい形状のインデックスと頂点番号をセットして呼び出します。 ローカル座標系の位置です。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN, OUT] ISVERT* : isvptr 頂点情報が代入されます。 isidメンバには自分で値を設定してから渡してください。 |
ver5.3.4.8 |
E3DGetInfScopeVertNum | ボーン影響2 | 影響範囲形状の頂点数を取得します。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : isindex 影響範囲形状のインデックス。 3. [OUT] int* : numptr 頂点数が代入されます。 |
ver5.3.4.8 |
E3DPickInfScopeVert | ボーン影響2 | スクリーン座標に近い、影響範囲形状の頂点情報を取得します。 モーションやキャラクターの位置と向きは初期化した状態で使用してください。 |
1. [IN] int : scid スワップチェインID。 2. [IN] int : hsid モデルデータを識別するID。 3. [IN] POINT : scpos スクリーン(2D)座標。 4. [IN] POINT : range scposからrangeだけずれていてもピックします。 5. [IN] int : isindex 影響範囲形状のインデックス。 -1指定は出来ません。 6. [OUT] ISVERT* : isvptr 頂点情報が代入されます。 arrayleng要素数のISVERT構造体の配列へのポインタを渡します。 7. [IN] int : arrayleng isvptrの配列の要素数。 8. [OUT] int* : getnumptr isvptrにセットした要素数が代入されます。 |
ver5.3.4.8 |
E3DGetInfScopeAxis | ボーン影響2 | 影響範囲形状に関連付けられているボーンの座標軸(直交する3軸)を取得します。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : isindex 影響範囲形状のインデックス。 3. [OUT] D3DXVECTOR3* : dstvec3x3ptr 3軸が代入されます。 例えばD3DXVECTOR3 vec3[3]; と宣言しvec3と指定します。 |
ver5.3.4.8 |
E3DSetInfScopeColor | ボーン影響2 | 影響範囲形状の色を設定します。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : isindex 影響範囲形状のインデックス。 3. [IN] E3DCOLOR4UC : srccol 形状の色。 |
ver5.3.4.8 |
E3DGetInfScopeColor | ボーン影響2 | 影響範囲形状の色を取得します。 | 1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : isindex 影響範囲形状のインデックス。 3. [OUT] E3DCOLOR4UC* : colptr 形状の色が代入されます。 |
ver5.3.4.8 |
E3DSetInfScopeDispFlag | ボーン影響2 | 影響範囲形状を表示するかどうかのフラグを設定します。 形状を作成してもこの命令でflagを1に設定しないと表示されません。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : isindex 影響範囲形状のインデックス。 -1指定で全ての影響範囲形状に設定。 3. [IN] int : dispflag 表示したいとき1、しないとき0。 4. [IN] int : exclusiveflag isindexに-1以外を指定したときのみ有効。 1を指定するとisindexにdispflagを設定し、isindex以外の形状に!dispflagを設定します。 0を指定するとisindexのみに処理を行います。 |
ver5.3.4.8 |
E3DGetInfScopeDispFlag | ボーン影響2 | 影響範囲形状を表示するかどうかのフラグを取得します。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : isindex 影響範囲形状のインデックス。 3. [OUT] int* : flagptr 表示するかどうかのフラグが代入されます。 |
ver5.3.4.8 |
E3DImportMQOAsInfScope | ボーン影響2 | mqoファイルを読み込み、それを影響範囲形状に変換します。 現在のバージョンでは形状は1立体のみで 凸型である必要があります。 直方体である必要はありません。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] char* : mqoname mqoファイルのフルパス。 3. [IN] float : mult 読み込み倍率。 4. [IN] int : boneno 対応つけるボーンのパーツ番号。 5. [IN] int : dispno 対応つける表示オブジェクトのパーツ番号。 6. [OUT] int* : isindexptr 作成した影響範囲形状のインデックスが代入されます。 |
ver5.3.4.8 |
E3DGetMOELocalMotionFrameNo | MOE | モーション(qua)のモーション番号とフレーム番号を取得します。 moeanimno, moeframenoは E3DGetMOEFrameNo hsid, moeanimno, moeframeno で取得した値を指定します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : moeanimno MOEのアニメの番号を指定します。 quaのアニメ番号ではありません。 3. [IN] int : moeframeno MOEのフレーム番号を指定します。 quaのフレーム番号ではありません。 4. [OUT] int* : localanimno MOEの指定フレームに対応するquaのアニメ番号が代入されます。 5. [OUT] int* : 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] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : moeanimno MOEのアニメの番号を指定します。 quaのアニメ番号ではありません。 3. [IN] int : moeframeno MOEのフレーム番号を指定します。 quaのフレーム番号ではありません。 4. [OUT] int* : localnextanimno MOEの指定フレームに再生中のquaの次に再生が予約されているアニメの番号が代入されます。 5. [OUT] int* : localnextframeno MOEの指定フレームに再生中のquaの次に再生が予約されているアニメの開始フレーム番号が代入されます。 |
ver5.3.4.8 |
E3DSetMotionBlurMaxAlpha | エフェクト | モーションブラーの一番濃い部分の透明度の係数を指定します。 マテリアルのアルファにこの命令で指定した係数を掛け算したものを、透明度として設定します。 E3DSetMotionBlurMinAlphaは透明度の値を指定するのに対し、この命令は係数を指定する点に注意してください。 |
1. [IN] int : hsid 形状データを識別するID。 2. [IN] int : partno 設定したいパーツの番号。 -1を指定すると全てのパーツに設定します。 3. [IN] float : maxAlpha 0.0から1.0までのfloat。 ブラーの最大透明度の係数を指定します。 |
ver5.4.0.5 |
E3DGetMOEKeyGoOnFlag | MOE | MOEのイベント継続フラグを取得します。 指定したフレームにキーが無い場合はエラーになります。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : animno MOEのアニメ番号を指定します。 3. [IN] int : frameno MOEアニメのフレーム番号。 4. [OUT] int* : flagptr フラグが代入されます。 継続のときは1。単発のときは0。 |
ver5.4.0.6 |
E3DSetMOEKeyGoOnFlag | MOE | MOEのイベント継続フラグを設定します。 指定したフレームにキーが無い場合はエラーになります。 E3DCalcMOEFullFrame命令を呼び出すとこの設定が反映されます。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : animno MOEのアニメ番号を指定します。 3. [IN] int : frameno MOEアニメのフレーム番号。 4. [IN] int : flag フラグを指定します。 継続のときは1。単発のときは0。 |
ver5.4.0.6 |
E3DSetMOATrunkNotComID | モーション | moaの共通分岐禁止IDの個数とIDを設定します。 |
1. [IN] int : hsid 形状データを識別するid 2. [IN] int : motid Trunkのモーションを識別するid 3. [IN] int* : arrayelng notcomid引数に指定する配列の要素数。 4. [IN] int : notcomid IDを格納した配列。 |
ver5.4.0.7 |
E3DGetMOELocalMotionFrameNoML | MOE | MOEのアニメ番号とフレーム番号に対応するquaのモーションの情報をボーンごとに取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : moeanimno MOEのアニメの番号を指定します。 quaのアニメ番号ではありません。 3. [IN] int : moeframeno MOEのフレーム番号を指定します。 quaのフレーム番号ではありません。 4. [IN] int : boneno ボーンを識別する番号を指定してください。 5. [OUT] int* : localanimno MOEの指定フレームに対応するquaのアニメ番号が代入されます。 6. [OUT] int* : localframeno MOEの指定フレームに対応するquaのフレーム番号が代入されます。 |
ver5.4.1.0 |
E3DGetMOELocalNextMotionFrameNoML | MOE | MOEのアニメ番号とフレーム番号に対応するquaの次のモーションの情報をボーンごとに取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : moeanimno MOEのアニメの番号を指定します。 quaのアニメ番号ではありません。 3. [IN] int : moeframeno MOEのフレーム番号を指定します。 quaのフレーム番号ではありません。 4. [IN] int : boneno ボーンを識別する番号を指定してください。 5. [OUT] int* : localnextanimno MOEの指定フレームに再生中のquaの次に再生が予約されているアニメの番号が代入されます。 6. [OUT] int* : localnextframeno MOEの指定フレームに再生中のquaの次に再生が予約されているアニメの開始フレーム番号が代入されます。 |
ver5.4.1.0 |
E3DSetDefaultGP | GPA | GPアニメのデフォルトのパラメータを設定します。 gpstateの詳細はE3DSetGPKeyの説明をご覧ください。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] E3DGPSTATE : gpstate 設定するパラメータ。 |
ver5.4.1.1 |
E3DSetDefaultCamera | カメラ | カメラアニメのデフォルトのパラメータを カメラ番号ごとに設定します。 camstateの詳細はE3DSetCameraKeyの説明をご覧ください。 |
1. [IN] int : camno カメラの番号(0から2)。 -1は禁止。 2. [IN] E3DCAMERASTATE : camstate 設定するパラメータ。 |
ver5.4.1.1 |
E3DValidHsid | 描画パラメータ | hsidが使用可能かどうかをチェックします。 例えばE3DDestroyHandlerSetを呼び出した後のhsidに対して呼び出すと無効のフラグが返されます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [OUT] int* : flagptr hsidが有効のときは1、無効のときは0が代入されます。 |
ver5.4.1.4 |
E3DKinectLoadLib | Kinect | Kinect操作用のライブラリをロードします。 OpenNIがインストールされていてOpenNIのサンプルが動く状態にマシンがないといけません。 |
1. [OUT] int* : validflagptr 正常にライブラリがロードできたら1が代入されます。失敗すると0が代入されます。 |
ver5.5.0.0 |
E3DKinectSetChara | Kinect | KinectのキャプチャとEasy3Dのキャラクターの関連付けをします。 kstファイルはRokDeBone2で作成します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] char* : kstname kstファイルのファイル名を指定します。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : 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] int* : flagptr トラッキング状態のときに1、そうでないときに0が代入されます。 2. [OUT] int* : capcntptr トラッキングが開始されてから何回E3DKinectSetSkelPosを呼び出したかを代入します。 |
ver5.5.0.0 |
E3DKinectGetSkelPos | Kinect | Kinectでキャプチャしたボーンの位置を取得します。 ボーンの名前はusercoef.hにSKEL_*で定義されています。 posptrには D3DXVECTOR3 pos[SKEL_MAX]; で定義したposを指定してください。 位置はトラッキングが開始されていないと取得できません。 |
1. [OUT] D3DXVECTOR3* : posptrd 位置を格納する配列を指定してください。詳しくは前記をご覧ください。 2. [OUT] int* : getflagptr 位置が取得できたら1が出来なかったら0が代入されます。 トラッキング状態でないと位置は取得できません。 |
ver5.5.0.0 |
E3DKinectSetSkelPos | Kinect | E3DKinectGetSkelPosで取得したボーンの位置を ボーンの姿勢情報に変換してからキャラクターに適応します。 Kinectといっしょに使わない方法もあります。 bulletなどで計算したボーンの位置をキャラクターに適用する場合はkinectflagに0を指定してください。その場合はこの命令を呼ぶ前に1回E3DKinectSetCharaを呼ぶ必要があります。 |
1. [IN] int : kinectflag Kinectといっしょに使う場合は1を、Kinect以外で使う場合は0を指定してください。 2. [IN] int : posmode 全体移動の姿勢をどう処理するかを指定します。 POSMODE_TOPOFJOINTを指定すると全体移動を一番親のボーンの姿勢に格納します。 POSMODE_GLOBALを指定すると全体移動をキャラクターのグローバルの位置情報に格納します。つまりE3DGetPosでこの情報を取得できます。 POSMODE_ZEROを指定すると全体移動をキャンセルします。 3. [IN] D3DXVECTOR3* : posptr ボーンの位置情報を指定します。 D3DXVECTOR3 pos[SKEL_MAX};のposを指定します。 4. [OUT] int* : framenoptr 再生されるフレーム番号が代入されます。 |
ver5.5.0.0 |
E3DKinectRenderSilhouette | Kinect | Kinectでキャプチャしているプレイヤーのシルエットを2D描画する命令です。 E3DBeginSceneとE3DEndSceneの間に記述します。 |
1. [IN] int : withalpha 半透明で描画するときは1、不透明で描画するときは0を指定します。 2. [IN] TPOS* : tposptr 描画するエリア(四角)の四隅の値を指定します。 画面の中心が0です。 横は左が-1.0f右が+1.0f 上下は上が1.0f下が-1.0fです。 TPOS構造体はusercoef.hで定義されています。 |
ver5.5.0.0 |
E3DGetInViewFlag | モデル情報 | E3DChkInViewの後で呼び出します。 E3DChkInViewの結果(視野内にあるかどうか)をパーツごとに取得できます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] int* : flagptr 視野内にある場合は1が、視野内にない場合は0が代入されます。 |
ver5.5.0.5 |
E3DWriteBmpFromSurface | 出力 | 画面をBMPファイルに出力します。 アンチエイリアスを有効にしていても使用できます。 |
1. [IN] char* : filename 出力ファイルのフルパスを指定してください。 2. [IN] int : scid 出力したい画面のスワップチェインIDを指定してください。 |
ver5.5.0.5 |
E3DGetMotionJumpFrame | モーション | モーションジャンプ設定を取得します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [OUT] int* : jumpframeptr ジャンプするフレーム番号が代入されます。 |
ver5.5.0.5 |
E3DSetMotionJumpFrame | モーション | モーションジャンプ設定を設定します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : jumpframe ジャンプするフレーム番号を指定します。 |
ver5.5.0.5 |
E3DCopyTexAnimFrame | テクスチャアニメ | テクスチャアニメをフレームコピーします。 キーが無くても計算してコピーします。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : srcmotid コピー元のモーションを識別する番号を指定してください。 3. [IN] int : srcframe コピー元のフレーム番号を指定します。 4. [IN] int : dstmotid コピー先のモーションを識別する番号を指定します。。 5. [IN] int : dstframe コピー先のフレーム番号を指定します。 |
ver5.5.0.5 |
E3DDestroyTexAnimFrame | テクスチャアニメ | テクスチャアニメのフレームを削除します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : frameno フレーム番号を指定します。 |
ver5.5.0.5 |
E3DGetMaterialExtTextureNum | マテリアル | マテリアルの拡張テクスチャがいくつ設定されているかを取得します。 拡張テクスチャはテクスチャアニメで使用されます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : matno マテリアルを識別する番号を指定してください。 3. [OUT] int* : numptr 拡張テクスチャの数が代入されます。 |
ver5.5.0.5 |
E3DGetMaterialExtTexture | マテリアル | マテリアルの拡張テクスチャの名前を取得します。 extnoには 0からE3DGetMaterialExtTextureNumで取得した数字から1引いた数までの間の数値を指定します。 nameptrには長さ256バイトのcharの配列のポインタを指定します。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : matno マテリアルを識別する番号を指定してください。 3. [IN] int : extno 拡張番号。 0から(exttexnum - 1)の値を指定。 4. [OUT] char* : nameptr 拡張テクスチャの名前が代入されます。 |
ver5.5.0.5 |
E3DLoadMQOFileAsGroundFromBuf | 地面 | mqoファイルをバッファから読み込みます。 地面として読み込みます。 |
1. [IN] char* : dirname テクスチャの存在するフォルダへのパスを指定します。 2. [IN] char* : bufptr mqoをメモリに展開したバッファのポインタを指定します。 3. [IN] int : bufsize 読み込むバッファの長さを指定します。 4. [OUT] int* : hsidptr モデルを識別する番号が代入されます。 5. [IN] int : adjustuvflag UVの正規化をするかどうかのフラグ。 通常0。 6. [IN] float : mult 読み込み倍率を指定します。 |
ver5.5.0.5 |
E3DChgMaterial1stTexFromBuf | マテリアル | マテリアルの1個目のテクスチャを変更します。 削除と作成を行うので重い処理です。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : matno マテリアルを識別する番号を指定してください。 3. [IN] char* : bufptr テクスチャをメモリに展開したバッファのポインタを指定します。 4. [IN] int : bufsize 読み込むバッファのサイズを指定します。 5. [OUT] int* : texidptr テクスチャを識別する番号が代入されます。 |
ver5.5.0.5 |
E3DChgMaterialExtTexFromBuf | マテリアル | マテリアルの拡張テクスチャを変更します。 削除と作成を行うので重い処理です。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : matno マテリアルを識別する番号を指定してください。 3. [IN] int : extno 拡張番号を指定してください。 4. [IN] char* : bufptr テクスチャをメモリに展開したバッファのポインタを指定します。 5. [IN] int : bufsize 読み込むバッファのサイズを指定します。 6. [OUT] int* : texidptr テクスチャを識別する番号が代入されます。 |
ver5.5.0.5 |
E3DChgMaterial1stTexFromID | マテリアル | マテリアルの1つめのテクスチャの内容を 指定したIDのテクスチャに変更します。 内部ではテクスチャのコピーは行わず、テクスチャのリンクを行います。 この命令を呼ぶと一番最初のオリジナルのテクスチャ内容は破棄されます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : matno マテリアルを識別する番号を指定してください。 3. [IN] int : texid テクスチャIDを指定します。 |
ver5.5.0.6 |
E3DChgMaterialExtTexFromID | マテリアル | マテリアルの拡張テクスチャ(テクスチャアニメ用)の内容を 指定したIDのテクスチャに変更します。 内部ではテクスチャのコピーは行わず、テクスチャのリンクを行います。 この命令を呼ぶと一番最初のオリジナルのテクスチャ内容は破棄されます。 |
1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : matno マテリアルを識別する番号を指定してください。 3. [IN] int : extno 拡張番号を指定してください。 4. [IN] int : texid テクスチャIDを指定します。 |
ver5.5.0.6 |
E3DSetCameraAnimeTargetHsidAll | カメラ | camファイルの注視点となるモデルのhsidを設定します。 注視点のボーンやlooktypeも設定しないと機能しません。 これらはRokDeBone2のカメラタブで設定します。 RokDeBone2のカメラタブで注視ボーンの設定をすると、注視hsidは値「1」が設定されます。 この数値を変更するのがこの命令の目的です。 |
1. [IN] int : animno カメラアニメを識別する番号を指定してください。 2. [IN] int : hsid モデルを識別する番号を指定してください。 |
ver5.5.0.7 |
E3DSetDispSwitchForce | モデル情報 | DispSwitchをプログラムから強制的に設定します。 この命令で設定すると、アニメーションに設定されているDispSwitchを無視して、設定内容が反映されます。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : swid スイッチのID。 0から99。 3. [IN] int : state スイッチの状態。 0はオフ。1はオン。2はモーションの設定を反映。 |
ver5.5.1.1 |
E3DSetWindowRgn | 描画 | 不定形リージョンをメインウインドウ(scid1)に設定します。 scid2はレンダーターゲットテクスチャを想定します。 scid2のアルファが0以外の部分がウインドウ領域になります。 具体的な使い方は DesktopM_Rgnソリューション をご覧ください。 |
1. [IN] int : scid1 メインウインドウのスワップチェインID。 2. [IN] int : scid2 レンダーターゲットテクスチャのスワップチェインID。 |
ver5.5.1.3 |
E3DDestroyDispPart | モデル情報 | 表示用のパーツを削除します。 使用しないパーツを削除することで メモリを節約できます。 一度削除するともとには戻せません。 一時的に無効にする場合は E3DSetValidFlagを使用してください。 |
1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : partno パーツを識別する番号。 |
ver5.5.1.5 |
E3DPlayMovie | 描画 | wmv, mpegなどの拡張子のムービーを 再生します。 この命令は動画の再生が終わるまで ブロックします。 つまり再生が終わるまで次のプログラム行に制御が戻りません。 |
1. [IN] int : scid スワップチェインを識別するID。 2. [IN] const char* : filename ムービーのファイル名。 |
ver5.5.1.6 |