Easy3D For HSP3 関数の説明
既にEasy3Dを使ったことがある方へ
HSP2.61からHSP3対応になるにあたって、変更した点などは、
変更点について
に書きました。
(スワップチェインについての説明も書いてあります。)
ver3.0.0.1での変更点についてもお読みください。
おおざっぱに説明しますと、
形状データに *.sig ファイルを、モーションデータに *.qua ファイルを使用します。
それぞれのデータは、RokDeBone2で作成可能です。
(詳しくは、RokDeBone2のページをご覧ください。)
さて、e3dhsp.dllの関数の説明ですが、
まず、E3DSigLoadで、モデルデータ(sig file)を読み込むごとに、hsid というものが得られます。
(hsid とは、Handler Set ID の略です。)
各モデルデータを識別したり、モデルデータに対して処理を行う際は、
いつも、この、hsid を使用します。
また、E3DAddMotionで、モーションデータを読み込むごとに、モーションの番号が得られます。
e3dhsp_fight.as 中では、mk1_* などというように、表記しています。
(ちなみに、mk は motion kind の略です。)
モーションのセットや、変更には、いつも、この、モーション番号を使います。
カメラの操作方法は、2種類用意しました。
E3DSetCameraPos と、E3DSetCameraDeg、E3DSetCameraTwist を組で使用する方法と、
E3DSetCameraPos と、E3DSetCameraTarget、E3DSetCameraTwistを組で使用する方法とがあります。
どちらか一方の方法で、統一して、使用することを想定しています。
ver1.0.4.0から、カメラの操作方法が、1種類増えました。
E3DSetCameraPos
E3DCameraLookAt
E3DCameraOnNaviLine
E3DCameraDirUp
E3DCameraDirDown
E3DCameraDirRight
E3DCameraDirLeft
E3DSetCameraTwist
を組で、使用する方法です。
他の2種類の方法と混ぜて使用することは、想定していません。
それぞれの、関数の役割と、引数の説明を表にしました。
関数名 | 種類 | 説明 | 引数 | 備考 |
---|---|---|---|---|
E3DInit | 初期化 | Direct3Dの初期化をする。 フルスクリーンにも対応しています。 フルスクリーンの解像度は、 指定したウインドウIDの幅に、 一番近いものを、自動で選びます。 640×480、 800×600、 1024×768、 1280×1024、 1400×1050、 1600×1200 の中から選びます。 HAL(ハードウェアの機能)が使えない場合は、エラーになります。 指定したビット数が使えない場合にも、 エラーになります。 エラーでアプリケーションが終了するのが 嫌な場合は、 この命令を呼ぶ前に、E3DCheckFullScreenParamsを呼んで、 チェックすることをおすすめします。 フルスクリーンの具体的な使用例は、 e3dhsp_fullscreen.as に書きましたので、ご覧ください。 アンチエイリアスについて。 multisamplenumは0または2から16の値を指定してください。 multisamplenumの値が大きいほど、 画像のエッジがなめらかになります。 0を指定すると、アンチエイリアスは使えません。 multisamplenumに0以外を指定する場合は、 その前に、 E3DGetMaxMultiSampleNumで 指定できる最大値を取得してください。 アンチエイリアスをオンにすると(0以外を指定すると)、 BMP保存や、AVI保存の命令が使えなくなります。 (E3DWriteDisplay2BMP、E3DCreateAVIFileと他のAVI関連関数が使用できなくなります。) アンチエイリアスを有効にするには、 作成した全てのhsidに対して、 E3DSetRenderState hsid, -1, D3DRS_MULTISAMPLEANTIALIAS, 1 を呼んでください。 アンチエイリアスの具体的な使用例は、 e3dhsp_antialias.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : wid ウインドウのIDを渡してください。 screen命令やbgscr命令に指定したのと同じ番号を 指定してください。 2. [IN] 変数または、数値 : objid オブジェクトID。 HSPでボタンなどのオブジェクトを作り、 その上に3D表示したい場合に、この引数を使います。 HSPでは、オブジェクト作成直後のstat変数に、 オブジェクトIDが入っています。 このIDを指定してください。 widで指定したウインドウ全体に、 3D描画を行いたい場合は、 この引数には-1を指定してください。 3. [IN] 変数または、数値 : fullscreenflag フルスクリーンにするときは1を、 しないとき(ウインドウモード)は0を指定してください。 省略した場合は、ウインドウモードになります。 4. [IN] 変数または、数値 : bits 色数を決めるビット数を指定してください。 16あるいは、32のみ有効です。 fullscreenflagに1を指定したときのみ、結果に反映されます。 5. [IN] 変数または、数値 : multisamplenum マルチサンプルの数。 詳しくは、右記をご覧ください。 6. [OUT] 変数 : scid スワップチェインIDが代入されます。 このIDは、どの部分に描画を行うかを指定するのに 使います。 E3DChkInView, E3DRender, E3DBeginScene, E3DPresent などで 必要になります。 |
ver1.0.0.1 |
E3DBye | 後処理 | Direct3Dの後処理をする。 作成したメモリなどの解放を行います。 アプリケーションの終了時に呼んでください。 |
なし | ver1.0.0.1 |
E3DSigLoad | モデルデータ | 形状データ(*.sig)を読み込んで、hsidを得る。 | 1. [IN] 文字列または、文字列の変数 : fname *.sig のパス文字列。 2. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 3. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 4. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 実数。 |
ver1.0.0.1 |
E3DCreateSwapChain | スワップチェイン | スワップチェインを作成します。 スワップチェインとは、複数の画面に描画を行うためのものです。 E3DInitで指定したウインドウとオブジェクト以外のところに、 描画したい場合に、この命令を呼びます。 この命令で取得したscidを、 E3DChkInView, E3DBeginScene, E3DRender, E3DPresentなどに渡すことにより、 複数画面に3D描画できるようになります。 具体的な使用例は、 e3dhsp_SwapChain.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : wid ウインドウのIDを渡してください。 screen命令やbgscr命令に指定したのと同じ番号を 指定してください。 2. [IN] 変数または、数値 : objid オブジェクトID。 HSPでボタンなどのオブジェクトを作り、 その上に3D表示したい場合に、この引数を使います。 HSPでは、オブジェクト作成直後のstat変数に、 オブジェクトIDが入っています。 このIDを指定してください。 widで指定したウインドウ全体に、 3D描画を行いたい場合は、 この引数には-1を指定してください。 3 [OUT] 変数 : scid スワップチェインIDが代入されます。 このIDは、どの部分に描画を行うかを指定するのに 使います。 E3DChkInView, E3DRender, E3DBeginScene, E3DPresent などで 必要になります。 |
ver1.0.0.1 |
E3DDestroySwapChain | スワップチェイン | スワップチェインを破棄します。 E3DCreateSwapChainで作成したスワップチェインが、 もういらなくなった場合に、呼んでください。 E3DInitで取得したscidに対しては、呼び出さないでください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DCreateSwapChainで取得したIDを指定してください。 |
ver1.0.0.1 |
E3DRender | 描画 | バックバッファにレンダリングする。 変更したボーンの中で、 一番親の番号をlastparentに指定すると、 そのボーンツリーの影響を受ける頂点のみを 抽出して、計算します。 lastparentは、高速化のためのものです。 E3DIKRotateBetaで取得できるlastparentの値を 渡すことを想定しています。 キャラクター全体が移動した場合や、 カメラが移動した場合には、使わないでください。 また、E3DRenderの初回の呼び出し時にも 使わないでください。 lastparentを使用したくない場合は、 0をセットしてください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 変数または、数値 : hsid 形状データを識別するid 3. [IN] 変数または、数値 : withalpha 0を指定すると、不透明パーツのみレンダリングする。 1を指定すると、半透明パーツのみレンダリングする。 4. [IN] 変数または、数値 : framecnt E3DSetNewPose実行後のstatの値を指定する。 (AfterImageの処理でのみ使用する。) 5. [IN] 変数または、数値 : projection mode プロジェクションの、モードを指定する。 0を指定すると、通常の表示。 1を指定すると、画面中央にレンズがあるように表示される。 6. [IN] 変数または、数値 : lastparent 変更が生じた一番親のボーンの番号を指定します。 詳しくは、左記をご覧ください。 7. [IN] 変数または、数値 : sigLightFlag sigのライティング計算を有効にしたいときは1を、 無効にしたいときは0を指定してください。 デフォルトは1です。 背面カリングを行わずに、 全ての頂点の色計算をしたい場合には、 2を指定してください。 8. [IN] 変数または、数値 : transskip transskipに1をセットすると、 頂点変換処理がスキップされます。 不透明、半透明と、2回、E3DRenderを呼び出す場合は、 2回目の呼び出し時に、transskipに1を指定してください。 |
ver1.0.0.1 ver1.0.0.5で引数追加 |
E3DPresent | 描画 | バックバッファの内容を、 プライマリバッファに転送する。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver1.0.0.1 |
E3DBeginScene | 描画 | アプリケーションでは、レンダリングを実行する前には必ずこのメソッドを呼び出し、 レンダリングの終了時、 および再度E3DBeginSceneを呼び出す前には、 必ず E3DEndSceneを呼び出す。 具体的には、 E3DRender, E3DDrawText, E3DDrawBigTextを、 E3DBeginSceneと、E3DEndSceneでサンドイッチするように記述する。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 変数または、数値 : skipflag skipflagに0以外を指定すると、 バックバッファのクリア、背景の表示をスキップします。 E3DCopyTextureToBackBufferを使うときなどに、 使用してください。 |
ver1.0.0.1 |
E3DEndScene | 描画 | このメソッドが成功すると、シーンがレンダリングされ、レンダリング後のシーンがデバイス サーフェスに保持される。 | なし | ver1.0.0.1 |
E3DCreateBG | 背景 | 画面の一番奥に表示される背景をセットします。 画像ファイルは、2つまで、指定できます。 2個目の画像は、雲や、もや用を想定しています。 1つ目の画像と2つ目の画像は、モジュレートされて、表示されます。 isroundに1をセットすると、 背景が、視点の回転に対応して、回転するようになります。 ビデオカードがマルチテクスチャに対応していない場合、 または、モジュレート処理が出来ない場合は、 1個目のテクスチャーしか表示しないように なっています。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 文字列または、文字列変数 : filename1 1つ目の画像ファイル名。 3. [IN] 文字列または、文字列変数 : filename2 2つ目の画像ファイル名。 2つ目が不必要な場合は、存在しないファイル名を、 渡してください。 4. [IN] 変数または、数値 : u 5. [IN] 変数または、数値 : v 2枚目の画像の、UV座標を、毎フレーム、どれくらい、 移動させるかを指定します。 通常は、0から1までの値を指定してください。 実数。 6. [IN] 変数または、数値 : isround isroundに、1を指定すると、 ビューの回転に対応して、 一つ目の画像ファイルのUV座標が、回転します。 この際、画像ファイルの左端と、右端が、 連続するようなデータでないと、 つなぎ目が見えてしまいますので、注意してください。 isroundに0を指定すると、 1つ目の画像は、回転しません。 7. [IN] 変数または、数値 : fogdist フォグの計算に使う、カメラからの距離を指定します。 この引数に、E3DSetLinearFogParamsで指定する endより小さい値を指定すれば、 背景は、フォグの色に染まりながらも、 うっすらと見えるように出来ます。 |
ver1.0.0.1 ver2.0.0.9で引数追加 |
E3DSetBGU | 背景 | 背景のUV座標のU座標を指定します。 画面の左端のU座標の値をstartu引数に、 画面の右端のU座標の値をendu引数に、 それぞれ、指定してください。 この機能を使った、背景のスクロールの例は、 e3dhsp_scrollBG.as にあります。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : startu 画面左端のU座標の値。 実数。 3. [IN] 数値または、変数 : endu 画面右端のU座標の値。 実数。 |
ver1.0.0.1 |
E3DSetBGV | 背景 | 背景のUV座標のV座標を指定します。 画面の一番上のV座標の値をstartv引数に、 画面の一番下のV座標の値をendv引数に、 それぞれ、指定してください。 この機能を使った、背景のスクロールの例は、 e3dhsp_scrollBG.as にあります。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : startv 画面左端のV座標の値。 実数。 3. [IN] 数値または、変数 : endv 画面右端のV座標の値。 実数。 |
ver1.0.0.1 |
E3DDestroyBG | 背景 | 背景を破棄します。 | 1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver1.0.0.1 |
E3DAddMotion | モーション | モーションデータ(*.qua)を読み込む。 | 1. [IN] 変数または、数値 : hsid どのモデルデータに対するモーションかを指定する。 2. [IN] 文字列または、文字列の変数 : fname *.quaのパス文字列。 3. [OUT] 変数 : mk 読み込んだモーションを識別する番号 4. [OUT] 変数 : maxframe 読み込んだモーションの最大フレーム番号 (総フレーム数 - 1 と同じ) |
ver1.0.0.1 |
E3DSetMotionKind | モーション | カレントの、モーション番号を指定する。 (カレントモーションを変更する。) この関数を実行すると、 モーションのフレーム番号は、 0にセットされる。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : mk モーションを識別する番号 |
ver1.0.0.1 |
E3DGetMotionKind | モーション | カレントの、モーション番号を取得する。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : mk モーションを識別する番号 |
ver1.0.0.1 |
E3DSetNewPose | モーション | カレントのモーションを、 E3DSetMotionStepでセットしたstepフレーム数分、 進ませる。 nextframeに、 次に再生するフレーム番号がセットされる。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : nextframe 次に再生されるフレーム番号が代入されます。 |
ver1.0.0.1 |
E3DSetMotionStep | モーション | モーションのステップ数を指定する。 例えば、stepに、2を指定すると、 2フレームごとに(1フレームおきに)、 モーションを再生するようになる。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : mk モーションを識別する番号 3. [IN] 変数または、数値 : step 何フレームごとに、モーションを再生するかを指定する。 |
ver1.0.0.1 |
E3DChkConflict | 当たり判定 | 2つの形状データが、衝突しているかどうかを、判定する。 (判定の元になるデータは、 E3DChkInView命令によって、更新される。) hsid1が視野外にある場合は、inviewflagに1が、 hsid2が視野外にある場合は、inviewflagに2が、 両方とも視野外の場合は、inviewflagに3が、 両方とも視野内の場合は、inviewflagに0が代入されます。 現在は、 E3DChkConflict2があります。 パーツ同士のあたり判定が出来るようになりました。 モデル全体のあたり判定も出来ます。 モデル全体のあたり判定をする場合でも、 E3DChkConflict2の方が、パーツごとの計算をするので、この関数よりも、計算精度が高いです。 新しい、E3DChkConflict2をお使いください。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数または、数値 : hsid2 形状データを識別するid 3. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 4. [OUT] 変数 : inviewflag hsid1が視野外にある場合は、inviewflagに1を、 hsid2が視野外にある場合は、inviewflagに2を、 両方とも視野外の場合は、inviewflagに3を、 両方とも視野内の場合は、inviewflagに0を代入します。 |
ver1.0.0.1 |
E3DChkConflict2 | 当たり判定 | 2つの形状データの指定したパーツ同士が、衝突しているかどうを、判定します。 partno1, partno2には、 E3DGetPartNoByNameで取得した、 パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 (判定の元になるデータは、 E3DChkInView命令によって、更新されます。) hsid1が視野外にある場合は、inviewflagに1が、 hsid2が視野外にある場合は、inviewflagに2が、 両方とも視野外の場合は、inviewflagに3が、 両方とも視野内の場合は、inviewflagに0が代入されます。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数または、数値 : partno1 hsid1のモデル中のパーツの番号 3. [IN] 変数または、数値 : hsid2 形状データを識別するid 4. [IN] 変数または、数値 : partno2 hsid2のモデル中のパーツの番号 5. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 6. [OUT] 変数 : inviewflag hsid1が視野外にある場合は、inviewflagに1を、 hsid2が視野外にある場合は、inviewflagに2を、 両方とも視野外の場合は、inviewflagに3を、 両方とも視野内の場合は、inviewflagに0を代入します。 |
ver1.0.0.1 |
E3DCreateAfterImage | 残像 | この関数は、現在、機能していません。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : imagenum 表示する残像の数を指定する。 |
ver1.0.0.1 |
E3DDestroyAfterImage | 残像 | E3DCreateAfterImageで作成した、残像用のオブジェクトを破棄する。 (残像が表示されなくなる。) 必要回数より多く実行しても、害はないが、 実行し忘れると、 メモリリークするので注意してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid |
ver1.0.0.1 |
E3DSetAlpha | 描画パラメータ | 半透明の設定。 この関数は、過去のバージョンとの互換性のためだけに、存在します。 半透明の設定は、 E3DSetAlpha2 関数を、ご使用ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : usealphaflag 0を指定すると、不透明で描画され、 1を指定すると、alpha = 0.5 で描画されます。 3. [IN] 変数または、数値 : updateflag 1を指定してください。 |
ver1.0.0.1 |
E3DSetAlpha2 | 描画パラメータ | 形状データの、頂点のアルファ値を設定します。 alphaval が、1.0の時は、不透明に、 alphavalが、0.0の時は、完全に透明になります。 alphavalに、1.0以外の値を指定した場合は、 E3DRenderの2番目の引数、withalphaに、 1を指定して、描画します。 具体的な使用例は、zip中の、 e3dhsp_alpha.as をご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの透明度を設定できます。 2. [IN] 数値または、変数 : alphaval 頂点のアルファ値を指定します。 頂点のアルファ値は、0.0から1.0の値で 指定してください。 範囲外の値は、クランプしてセットします。 実数。 3. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツにアルファをセットできます。 4. [IN] 変数または、数値 : updateflag 1を指定してください。 |
ver1.0.0.1 |
E3DSetPos | モデル位置 | 形状データの位置をセットする。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz 実数。 形状データを ( posx, posy, posz) に移動する。 |
ver1.0.0.1 |
E3DGetPos | モデル位置 | 形状データの位置を取得する。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : posx 3. [OUT] 変数 : posy 4. [OUT] 変数 : posz 実数型の変数。 形状データの位置を取得する。 |
ver1.0.0.1 |
E3DSetDir | モデル向き | 形状データの向きを指定する。 X軸、Y軸、Z軸の順番に、 指定した角度だけ回転します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : degx 3. [IN] 変数または、数値 : degy 4. [IN] 変数または、数値 : degz 形状データの向きを、 X,Y,Z軸のそれぞれの角度(degree)で指定する。 実数。 |
ver1.0.0.1 |
E3DRotateInit | モデル向き | 形状データの向きを初期化します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid |
ver1.0.0.1 |
E3DRotateX | モデル向き | 形状データを、X軸に関して、degx 度だけ回転します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : degx 回転角度。 実数。 |
ver1.0.0.1 |
E3DRotateY | モデル向き | 形状データを、Y軸に関して、degy 度だけ回転します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : degy 回転角度。 実数。 |
ver1.0.0.1 |
E3DRotateZ | モデル向き | 形状データを、Z軸に関して、degz 度だけ回転します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : degz 回転角度。 実数。 |
ver1.0.0.1 |
E3DTwist | モデル向き | 形状データを、現在向いている方向を軸として、deg度だけ、回転します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : deg 回転角度。 実数。 |
ver1.0.0.1 |
E3DPosForward | モデル位置 | 形状データを、現在向いている方向に、stepだけ移動する。 ただし、形状データが、default状態で、 Z軸の方向を向いていると仮定する。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : step 移動距離を指定する。 実数。 |
ver1.0.0.1 |
E3DCloseTo | モデル位置 | hsid1で識別される形状を、hsid2で識別される形状の方向に、動かす。 内部で、E3DDirToTheOtherを呼び出します。 |
1. [IN] 変数または、数値 : hsid1 移動する形状データを、識別するid 2. [IN] 変数または、数値 : hsid2 hsid2で指定した形状データの方向に移動する。 3. [IN] 変数または、数値 : step 移動距離を指定する。 実数。 |
ver1.0.0.1 |
E3DDirToTheOtherXZ | モデル向き | hsid1で識別される形状を、XZ平面で、hsid2で識別される形状の方向を、向くようにする。 ただし、形状データが、初期状態で、 Z軸の負の方向(0.0, 0.0, -1.0)を向いているものと仮定しています。 |
1. [IN] 変数または、数値 : hsid1 向きを変える形状データを、識別するid 2. [IN] 変数または、数値 : hsid2 hsid2で指定した形状データの方向を向く。 |
ver1.0.0.1 |
E3DDirToTheOther | モデル向き | E3DDirToTheOtherXZの3次元版。 ただし、形状データが、初期状態で、 Z軸の負の方向(0.0, 0.0, -1.0)を向いているものと仮定しています。 |
1. [IN] 変数または、数値 : hsid1 向きを変える形状データを、識別するid 2. [IN] 変数または、数値 : hsid2 hsid2で指定した形状データの方向を向く。 |
ver1.0.0.1 |
E3DSeparateFrom | モデル位置 | hsid1で識別される形状を、hsid2で識別される形状と、逆の方向に、動かす。 | 1. [IN] 変数または、数値 : hsid1 移動する形状データを、識別するid 2. [IN] 変数または、数値 : hsid2 hsid2で指定した形状データと反対方向に移動する。 3. [IN] 変数または、数値 : dist 形状同士をどのくらいの距離、離すかを指定する。 実数。 |
ver1.0.0.1 |
E3DGetCameraPos | カメラ | カメラの位置を取得する。 | 1. [OUT] 変数 : posx 2. [OUT] 変数 : posy 3. [OUT] 変数 : posz 実数型の変数。 カメラの位置、 ( posx, posy, posz) を取得する。 |
ver1.0.0.1 |
E3DSetCameraPos | カメラ | カメラの位置を指定する。 | 1. [IN] 変数または、数値 : posx 2. [IN] 変数または、数値 : posy 3. [IN] 変数または、数値 : posz カメラを ( posx, posy, posz) に移動する。 実数。 |
ver1.0.0.1 |
E3DGetCameraDeg | カメラ | カメラの向きを取得する。 | 1. [OUT] 変数 : degxz カメラのXZ平面での角度を取得する。 実数型の変数。 2. [OUT] 変数 : degy カメラの仰ぎ角度を取得する。 実数型の変数。 |
ver1.0.0.1 |
E3DSetCameraDeg | カメラ | カメラの向きを指定する。 | 1. [IN] 変数または、数値 : degxz カメラのXZ平面での角度を指定する。 実数。 2. [IN] 変数または、数値 : degy カメラの仰ぎ角度を指定する。 実数。 |
ver1.0.0.1 |
E3DSetCameraTarget | カメラ | カメラの注視点を指定する。 | 1. [IN] 変数または、数値 : targetx 2. [IN] 変数または、数値 : targety 3. [IN] 変数または、数値 : targetz カメラの注視点を(targetx, targety, targetz)にセットする。 実数。 4. [IN] 変数または、数値 : upvecx 5. [IN] 変数または、数値 : upvecy 6. [IN] 変数または、数値 : upvecz カメラの上方向のベクトルを指定する。 内部で、正規化して使用される。 実数。 |
ver1.0.0.1 |
E3DChkInView | 描画準備 | hsidで識別されるモデルが、視野内にあるかどうかを、判定します。 結果は、E3DHSPの内部データに、セットされます。 視野外のオブジェクトや、パーツは、 E3DRender時に、 自動的に、処理をスキップするようになります。 必ず、E3DSetPosや、E3DSetNewPoseより後、 E3DRenderより前に、 呼び出してください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 変数または、数値 : hsid 形状データを識別するid |
ver1.0.0.1 |
E3DEnableDbgFile | デバッグ | デバッグ情報を、dbg.txtに出力するように、します。 | なし | ver1.0.0.1 |
E3DSetProjection | 描画パラメータ | プロジェクションを指定する。 この関数を呼び出さなかった場合は、 near面:100.0, far面:10000.0, 視野角:45.0度 がdefaultで適用される。 引数に不正な値が渡された場合も、 default値が適用される。 |
1. [IN] 変数または、数値 : near クリッピングの近い側の距離 実数。 2. [IN] 変数または、数値 : far クリッピングの遠い側の距離 実数。 3. [IN] 変数または、数値 : fovdeg 視野角(degree) 実数。 |
ver1.0.0.1 |
E3DGetKeyboardState | キーボード | 256 個の仮想キーの状態を、指定されたバッファkeybufへコピーします。 keybuf は、この関数を使用する前に、 dim keybuf, 256 で、確保してください。 複数のキーの状態を、一度の呼び出しで、 取得できます。 例えば、Aキーが押されているかどうかを 確かめる場合は、 E3DGetKeyboardState 呼び出し後に、 keybuf.'A' の値を調べます。 ( ’ を忘れずに。 ) 0が入っていた場合は、押されていません。 1が入っていた場合は、押されています。 具体的な使用例は、zip中の、as ファイルをご覧ください。 バーチャルキー情報は、zip中の、 e3dhsp3.as で、 VK_ で始まる定数として、宣言しています。 |
1. [OUT] 変数 : keybuf keybufに、キーの状態が、代入されます。 keybufは、dim keybuf, 256 で、 作成されている必要があります。 |
ver1.0.0.1 |
E3DCos | 算術 | cosを取得する。 | 1. [IN] 変数または、数値 : degree degree度のcosを計算します。 実数。 2. [OUT] 変数 : ret cos の結果がセットされる。 実数型の変数。 |
ver1.0.0.1 |
E3DSin | 算術 | sinを取得する。 | 1. [IN] 変数または、数値 : degree degree度のsinを計算します。 実数。 2. [OUT] 変数 : ret sin の結果がセットされる。 実数型の変数。 |
ver1.0.0.1 |
E3DACos | 算術 | acosを取得する。 | 1. [IN] 変数または、数値 : dot たとえば、内積をいれる。 2. [OUT] 変数 : degree acos( dot ) が degreeにセットされる。 実数型の変数。 |
ver1.0.0.1 |
E3DDot | 算術 | (vecx1, vecy1, vecz1)と、(vecx2, vecy2, vecz2)を、それぞれ正規化したもの同士の内積を取得する。 |
1. [IN] 変数または、数値 : vecx1 2. [IN] 変数または、数値 : vecy1 3. [IN] 変数または、数値 : vecz1 実数。 4. [IN] 変数または、数値 : vecx2 5. [IN] 変数または、数値 : vecy2 6. [IN] 変数または、数値 : vecz2 実数。 7. [OUT] 変数 : ret 結果が代入される。 実数型の変数。 |
ver1.0.0.1 |
E3DCross | 算術 | (vecx1, vecy1, vecz1)と、(vecx2, vecy2, vecz2)の両方に垂直で、大きさが1 なベクトル(retx, rety,
retz)を取得する。 |
1. [IN] 変数または、数値 : vecx1 2. [IN] 変数または、数値 : vecy1 3. [IN] 変数または、数値 : vecz1 実数。 4. [IN] 変数または、数値 : vecx2 5. [IN] 変数または、数値 : vecy2 6. [IN] 変数または、数値 : vecz2 実数。 7. [OUT] 変数 : retx 8. [OUT] 変数 : rety 9. [OUT] 変数 : retz 結果が代入される。 実数型の変数。 |
ver1.0.0.1 |
E3DAtan | 算術 | atan ( val ) のdegreeを取得します。 | 1. [IN] 変数または、数値 : val 実数。 2. [OUT] 変数 : retdeg retdegに、atan( val ) の角度(degree)が入ります。 実数型の変数。 |
ver1.0.0.1 |
E3DAtan2 | 算術 | atan2( y, x ) のdegreeを取得します。 | 1. [IN] 変数または、数値 : y 2. [IN] 変数または、数値 : x 実数。 3. [OUT] 変数 : retdeg retdegに、atan2( y, x ) の角度(degree)が入ります。 実数型の変数。 |
ver1.0.0.1 |
E3DSqrt | 算術 | sqrt( val ) を取得します。 | 1. [IN] 変数または、数値 : val 実数。 2. [OUT] 変数 : ret retに、sqrt( val ) が入ります。 実数型の変数。 |
ver1.0.0.1 |
E3DDrawText | テキスト | 画面上の(posx, posy) に、r, g, b で指定した色で、strの文字列を書く。 英数字のみ。 scaleが1.0のときは、12ポイントの大きさ。 |
1. [IN] 変数または、数値 : posx 2. [IN] 変数または、数値 : posy 座標。整数。 3. [IN] 変数または、数値 : scale 実数。 4. [IN] 変数または、数値 : r 5. [IN] 変数または、数値 : g 6. [IN] 変数または、数値 : b 色(0から255) 7. [IN] 文字列または、文字列変数 : str 表示文字列。 |
ver1.0.0.1 |
E3DDrawBigText | テキスト | 画面上の(posx, posy) に、r, g, b で指定した色で、strの文字列を書く。 英数字のみ。 scaleが1のときは、36ポイントの大きさ。 |
1. [IN] 変数または、数値 : posx 2. [IN] 変数または、数値 : posy 座標。整数。 3. [IN] 変数または、数値 : scale 実数。 4. [IN] 変数または、数値 : r 5. [IN] 変数または、数値 : g 6. [IN] 変数または、数値 : b 色(0から255) 7. [IN] 文字列または、文字列変数 : str 表示文字列。 |
ver1.0.0.1 |
E3DRand | 算術 | 0から(range - 1)までの間の、乱数を取得する。 | 1. [IN] 変数または、数値 : range 乱数の範囲を指定する。 整数。 2. [OUT] 変数 : rand 乱数がセットされる。 整数。 |
ver1.0.0.1 |
E3DSeed | 算術 | 乱数の初期化をする。 (乱数のseedをセットする。) srand( (unsigned)seed )を実行する。 |
1. [IN] 変数または、数値 : seed srandに渡す値を指定する。 |
ver1.0.0.1 |
E3DWaitByFPS | 同期 | 指定したfpsに、近くなるように、waitします。 fpsとは、1秒間に描画するのこと回数です。 指定したfps以上、 処理を行わないようにするための命令です。 遅いマシンが、速くなるわけではないので、 注意してください。 必ず、HSPの標準命令、”await 0”と セットで使用してください。 実際のfpsが、retfps変数に、代入されます。 |
1. [IN] 変数または、数値 : fps 指定したfpsに、近くなるように、waitします。 整数。 2. [OUT] 変数 : retfps 実際のfpsが代入されます。 整数。 |
ver1.0.0.1 |
E3DGetFPS | 同期 | fpsを計測します。 メインループの最後などで呼び出すことを想定しています。 E3DGetFPSが呼ばれる時間間隔から、 1秒間あたりに、何回呼び出されるかを計算します。 |
1. [OUT] 変数 : retfps fpsが代入されます。 整数。 |
ver1.0.0.1 |
E3DCreateLight | ライト | 光源を作成します。 光源の識別番号、lightIDが取得できます。 以後、光源のパラメータの設定には、 この、lightIDを使用します。 |
1. [OUT] 変数 : lightID | ver1.0.0.1 |
E3DSetDirectionalLight | ライト | lightIDで識別される光源に、平行光源のパラメータをセットする。 |
1. [IN] 変数または、数値 : lightID 光源を識別するid 2. [IN] 変数または、数値 : dirx 3. [IN] 変数または、数値 : diry 4. [IN] 変数または、数値 : dirz 平行光源の向きを、 ベクトル(dirx, diry, dirz)を正規化したベクトルに、 設定する。 実数。 5. [IN] 変数または、数値 : r 6. [IN] 変数または、数値 : g 7. [IN] 変数または、数値 : b 平行光源の色を、 (r, g, b)に設定する。 各色の値は、0から255までの値とする。 |
ver1.0.0.1 |
E3DSetPointLight | ライト | lightIDで識別される光源に、ポイントライトのパラメータをセットする。 | 1. [IN] 変数または、数値 : lightID 光源を識別するid 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz ポイントライトの位置を、 (posx, posy, posz)に設定する。 実数。 5. [IN] 変数または、数値 : dist ポイントライトの光が届く距離を設定します。 実数。 6. [IN] 変数または、数値 : r 7. [IN] 変数または、数値 : g 8. [IN] 変数または、数値 : b ポイントライトの色を、 (r, g, b)に設定する。 各色の値は、0から255までの値とする。 |
ver1.0.0.1 |
E3DSetSpotLight | ライト | lightIDで識別される光源に、スポットライトのパラメータをセットする。 | 1. [IN] 変数または、数値 : lightID 光源を識別するid 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz スポットライトの位置を、 (posx, posy, posz)に設定する。 実数。 5. [IN] 変数または、数値 : dirx 6. [IN] 変数または、数値 : diry 7. [IN] 変数または、数値 : dirz スポットライトの向きを、 ベクトル(dirx, diry, dirz)を正規化したベクトルに、 設定する。 実数。 8. [IN] 変数または、数値 : dist スポットライトの光が届く距離を設定します。 実数。 9. [IN] 変数または、数値 : angle スポットライトの照らす角度(degree)を設定します。 実数。 10. [IN] 変数または、数値 : r 11. [IN] 変数または、数値 : g 12. [IN] 変数または、数値 : b スポットライトの色を、 (r, g, b)に設定する。 各色の値は、0から255までの値とする。 |
ver1.0.0.1 |
E3DDestroyLight | ライト | ライトを破棄します。 | 1. [IN] 変数または、数値 : lightID 削除する光源を、識別するid |
ver1.0.0.1 |
E3DClearZ | 描画 | Zバッファーをクリアーします | なし | ver1.0.0.1 |
E3DDestroyHandlerSet | 後処理 | E3DSigLoad, E3DAddMotionで作成した、 オブジェクトを破棄します。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid |
ver1.0.0.1 |
E3DSetDispSwitch | 描画パラメータ | ディスプレイスイッチのオン、オフを 行うことが出来ます。 ディスプレイスイッチの詳細は、 ディスプレイスイッチの説明をご覧ください。 mk引数に-1を指定すると、 モーションを読み込んでいなくても、 ディスプレイスイッチをオンオフすることが出来ます。 mkに-1を指定して、 スイッチを一個でもオンにした場合は、 モーションを読み込んだ場合も、 モーションのスイッチ状態よりも優先されます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : mk モーションを識別する番号 3. [IN] 変数または、数値 : switchID 変更したいスイッチの番号 4. [IN] 変数または、数値 : frameno フレーム番号、framenoより後のフレームの スイッチを、 flagに基づいて、オン、オフします。 5. [IN] 変数または、数値 : flag flagに1を指定すると、スイッチをオンに、 0を指定すると、スイッチをオフにします。 |
ver1.0.0.1 |
E3DSetMotionFrameNo | モーション | E3DSetMotionKindの拡張版です。 モーションの種類と、フレーム番号を セットすることが出来ます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : mk モーションを識別する番号 3. [IN] 変数または、数値 : frameno フレーム番号 |
ver1.0.0.1 |
E3DCreateSprite | スプライト | スプライトを作成します。 spriteIDで、スプライトを識別するIDを、 取得できます。 スプライトの操作時には、この、spriteIDを 使用します。 作成されるスプライトのサイズは、 元の画像ファイルの大きさと、 異なる場合があります。 サイズは、E3DGetSpriteSize で、 確認してください。 |
1. [IN] 文字列または、文字列変数 : filename 画像ファイル名。 2. [IN] 変数または、数値 : transparentflag 透過フラグ。 画像ファイルのアルファをもとに透過する場合、 あるいは、画像ファイルにアルファが無く透過もしない場合、 0を指定してください。 1をセットすると、黒色を透過色として色抜きします。 2をせっとすると、(tpR, tpG, tpB)で指定した色を 透過色とします この関数のtransparetflagの意味は、 他の関数のtransparentとは、違うので、 気を付けてください。 3. [OUT] 変数 : spriteID 作成したスプライトを識別するID。 4. [IN] 変数または、数値 : tpR 5. [IN] 変数または、数値 : tpG 6. [IN] 変数または、数値 : tpB transparentflag = 2 のとき、 透過色を、(tpR, tpG, tpB)で指定します。 |
ver1.0.0.1 |
E3DBeginSprite | スプライト | スプライトを描画できるように、 デバイスを準備します。 E3DRenderSprite命令を、 E3DBeginSpriteと、E3DEndSpriteで、 サンドイッチするように、記述してください。 E3DBeginSpriteとE3DEndSpriteは、 E3DBeginSceneとE3DEndSceneの間に記述してください。 スプライトを描画すると、レンダーステートが変化するので、 hsidなどを描画した後、最後に、スプライトの描画命令を書くことをおすすめします。 |
なし | ver1.0.0.1 |
E3DEndSprite | スプライト |
E3DRenderSprite命令を、 E3DBeginSpriteと、E3DEndSpriteで、 サンドイッチするように、記述してください。 |
なし | ver1.0.0.1 |
E3DRenderSprite | スプライト | spriteIDで識別される、スプライトを、レンダリングします。 | 1. [IN] 変数または、数値 : spriteID スプライトを識別するID。 2. [IN] 変数または、数値 : scalex 3. [IN] 変数または、数値 : scaley スプライトのx軸、y軸方向の倍率を指定します。 実数を指定。(等倍は1.0) 4. [IN] 変数または、数値 : trax 5. [IN] 変数または、数値 : tray スプライトの描画位置(trax, tray)を指定します。 指定した位置が、スプライトの左上の座標となります。 整数。 6. [IN] 変数または、数値 : traz 描画時の奥行き情報。 3D描画との前後関係にも、反映されます。 0.0から1.0の実数を指定してください。 0.0のとき、一番手前に描画され、 1.0のとき、一番奥に描画されます。 0.0から1.0の間は、均等な効果ではありません。 値を増やしても、あまり効果の無い場所や、 少し、値を増やしただけで、効果が大きくなる範囲が あります。 Easy3Dの場合は、0.99以降が、 少し値を増やしただけで、 効果が大きい範囲となります。 |
ver1.0.0.1 ver2.0.0.4で引数追加 |
E3DGetSpriteSize | スプライト | spriteIDで識別される、スプライトの、サイズを取得します。 | 1. [IN] 変数または、数値 : spriteID スプライトを識別するID。 2. [OUT] 変数 : spriteWidth 3. [OUT] 変数 : spriteHeight 幅と、高さが、それぞれ、spriteWidth, spriteHeightに 代入されます。 整数型変数。 |
ver1.0.0.1 |
E3DSetSpriteRotation | スプライト | E3DCreateSprite命令で作成したスプライトを回転させます。 (centerx, centery)の座標を中心に回転します。 (0, 0)を指定すると、スプライトの左上を中心に回転します。 スプライトの中央を中心に回転したいときは、 まず、E3DGetSpriteSize命令で、 スプライトのサイズ、sizex, sizey を取得します。 centerx = sizex / 2 centery = sizey / 2 の値をこの関数に渡せば、OKです。 回転角度は、絶対量です。 相対量ではありません。 E3DSetSpriteRotation命令は、 一度、呼び出せば、内部で、情報を記憶しますので、次に異なるパラメータで呼び出すまで、 その値が有効になります。 |
1. [IN] 数値または、変数 : spid スプライトデータを識別するID 2. [IN] 数値または、変数 : centerx 3. [IN] 数値または、変数 : centery (centerx, centery)の座標を中心に回転します。 実数対応。 4. [IN] 数値または、変数 : rotdeg rotdeg 度だけ、スプライトを回転します。 実数。 |
ver1.0.0.1 |
E3DSetSpriteARGB | スプライト | スプライトに乗算する色を指定します。 alpha, r, g, b には、それぞれ、 0から255までの値を渡してください。 alpha に255より小さい値を渡せば、 半透明のスプライトの描画が出来ます。 スプライトの色を変えたくない場合には、 r, g, bには、255を渡してください。 |
1. [IN] 数値または、変数 : spid スプライトデータを識別するID 2. [IN] 数値または、変数 : alpha 3. [IN] 数値または、変数 : r 4. [IN] 数値または、変数 : g 5. [IN] 数値または、変数 : b スプライトに乗算する色を指定します。 半透明にする場合には、 alphaに255より小さい値を入れます。 |
ver1.0.0.1 |
E3DDestroySprite | スプライト | spriteIDで識別される、スプライトを、 破棄します。 |
1. [IN] 変数または、数値 : spriteID スプライトを識別するID。 |
ver1.0.0.1 |
E3DChkConfBillboard2 | ビルボード | 指定した境界球(中心と半径)と、全てのビルボードとのあたり判定をします。 hsidの代わりに、境界球を指定すること以外は、 E3DChkConfBillboardと同じです。 衝突したビルボードのIDが取得できます。 |
1. [IN] 変数または、数値 : centerx 2. [IN] 変数または、数値 : centery 3. [IN] 変数または、数値 : centerz 境界球の中心座標( centerx, centery, centerz ) 実数。 4. [IN] 変数または、数値 : r 境界球の半径 実数。 5. [IN] 変数または、数値 : confrate ビルボードの境界球の半径に、掛ける係数(%) 半径 × confrate で計算されます。 実数。 6. [OUT] 変数 : resultptr あたり判定の結果が代入されます。 当たった場合は1が、 当たらなかった場合は0が代入されます。 7. [OUT] 変数 : confbbid 8. [IN] 変数または、数値 : arrayleng 衝突したビルボードのIDを格納するための配列 dim confbbid, arrayleng などの命令で、配列を作成して、 この関数に指定してください。 arrayleng個以上のビルボードと、 同時に衝突した場合には、エラーになるので、 配列長のarraylengは、少し大きめの値にしてください。 9. [OUT] 変数 : confnum 衝突したビルボードの個数が代入されます。 maxno = confnum - 1 とすると、 confbbid.0 から、confbbid.maxno までの間に、 衝突したビルボードのIDが代入されます。 |
ver1.0.0.1 |
E3DChkConfBillboard | ビルボード | hsidで識別されるモデルデータと、全てのビルボードのあたり判定をします。 境界球による判定を行います。 当たらなかった場合は、 resultに0が代入され、 当たった場合は、 resultに1が代入されます。 confrateで、ビルボードの境界球の大きさを、変更することが出来ます。 例えば、confrateに、0.5を入れると、 実際の半径×0.5 つまり、半分の半径で、計算されます。 confrateに小さな値を入れることで、 モデルが、ビルボードの近くを、 すり抜けることが出来るようになります。 衝突したビルボードのIDが取得できます。。 具体的な使用例は、 e3dhsp_ground.as をご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 2. [IN] 変数または、数値 : confrate ビルボードの境界球の半径に、掛ける係数 半径 × confrate で計算されます。 実数。 3. [OUT] 変数 : result あたり判定の結果が代入されます。 当たった場合は1が、 当たらなかった場合は0が代入されます。 4. [OUT] 変数 : confbbid 5. [IN] 変数または、数値 : arrayleng 衝突したビルボードのIDを格納するための配列 dim confbbid, arrayleng などの命令で、配列を作成して、 この関数に指定してください。 arrayleng個以上のビルボードと、 同時に衝突した場合には、エラーになるので、 配列長のarraylengは、少し大きめの値にしてください。 6. [OUT] 変数 : confnum 衝突したビルボードの個数が代入されます。 maxno = confnum - 1 とすると、 confbbid.0 から、confbbid.maxno までの間に、 衝突したビルボードのIDが代入されます。 |
ver1.0.0.1 |
E3DChkConfBySphere | 当たり判定 | 境界球によるあたり判定を、行います。 判定の際に、E3DChkInViewでセットした、 データを使用します。 conflevelに1を指定した場合は、 モデル単位の、粗い判定のみを行います。 conflevelに2を指定した場合は、 パーツ単位の判定を行います。 現在は、 任意のパーツ同士のあたり判定の出来る、 E3DChkConfBySphere2があります。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数または、数値 : hsid2 形状データを識別するid 3. [IN] 変数または、数値 : conflevel 1を指定した場合は、モデル単位の判定を、 2を指定した場合は、パーツ単位の判定をします。 4. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 |
ver1.0.0.1 |
E3DChkConfBySphere2 | 当たり判定 | 境界球によるあたり判定を、任意のパーツごとに行います。 判定の際に、E3DChkInViewでセットした、 データを使用します。 partno1, partno2には、 E3DGetPartNoByNameで取得した、 パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数または、数値 : partno1 hsid1のモデル中のパーツの番号 3. [IN] 変数または、数値 : hsid2 形状データを識別するid 4. [IN] 変数または、数値 : partno2 hsid2のモデル中のパーツの番号 5. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 |
ver1.0.0.1 |
E3DCreateProgressBar | プログレスバー | メインウインドウの下の部分に、プログレスバーを作ります。 |
なし | ver1.0.0.1 |
E3DSetProgressBar | プログレスバー | 作業の達成率などを、 プログレスバーに表示させます。 newpos は、0から100の間の数を、 セットしてください。 |
1. [IN] 変数または、数値 : newpos 0から100の値。 |
ver1.0.0.1 |
E3DDestroyProgressBar | プログレスバー | プログレスバーを削除します。 |
なし | ver1.0.0.1 |
E3DLoadGroundBMP | 地面 | BMPデータから、地面を生成します。 詳しくは、地面データの作り方をご覧ください。 |
1. [IN] 文字列または、文字列変数 : filename1 地面の座標情報の元となる、BMPファイル名 2. [IN] 文字列または、文字列変数 : filename2 地面の道の情報の元となる、BMPファイル名 3. [IN] 文字列または、文字列変数 : filename3 地面の川の情報の元となる、BMPファイル名 4. [IN] 文字列または、文字列変数 : filename4 地面、道、川の模様を決める、BMPファイル名 5. [IN] 変数または、数値 : maxx 地面のX座標の最大値 実数。 6. [IN] 変数または、数値 : maxz 地面のZ座標の最大値 実数。 7. [IN] 変数または、数値 : divx X方向の分割数 8. [IN] 変数または、数値 : divz Z方向の分割数 9. [IN] 変数または、数値 : maxheight 地面の高さの最大値 実数。 10. [OUT] 変数 : hsid 作成した地面データを識別する、ID |
ver1.0.0.1 |
E3DCameraPosForward | カメラ | カメラを、向いている方向に、 stepの距離だけ、 移動させます。 stepにマイナスを与えると、 後ろに進めます。 |
1. [IN] 変数または、数値 : step 進む距離を指定してください。 実数。 |
ver1.0.0.1 |
E3DSetBeforePos | モデル位置 | E3DChkConfGroundで使用する座標を保存します。 一つ前の座標を保存するための命令です。 保存した値は、内部で、当たり判定命令で使用します。 メインループの最後の部分などで、 呼んでください。 一番最初のE3DPosの直後でも、 呼んでください。 |
1. [IN] 変数または、数値 : charahsid 形状データを識別するid |
ver1.0.0.1 |
E3DChkConfGround | 当たり判定 | groundhsidで識別される地面と、charahsidで識別されるキャラクターとのあたり判定をします。 groundhsidは、E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで取得したものでなければいけません。 キャラクターの現在の座標と、E3DSetBeforePosで保存された古い座標とを結ぶ線分と、 地面の各ポリゴンとのあたり判定をします。 地面の上を這うように動くためのモードと、 飛行機のように、飛ぶためのモードの 2種類あります。 這うモードの時は、毎回、adjustx,y,zに 地面の座標が返されます。 飛ぶモードの時は、地面と衝突したときに、 その座標がadjustx,y,zに返されます。 |
1. [IN] 変数または、数値 : charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値 : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 3. [IN] 変数または、数値 : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 4. [IN] 変数または、数値 : diffmaxy 一度の移動で、登ることが出来る高さの最大値を 指定してください。 実数。 5. [IN] 変数または、数値 : mapminy groundhsidで識別されるデータの一番低いY座標の値 通常は、0.0です。 実数。 6. [OUT] 変数 : result あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 となります。 7. [OUT] 変数 : adjustx 8. [OUT] 変数 : adjusty 9. [OUT] 変数 : adjustz result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 10. [OUT] 変数 : nx 11. [OUT] 変数 : ny 12. [OUT] 変数 : nz result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが、 (nx ny, nz)に代入されます。 跳ね返る方向を決めるときなどに、 使用できるのではないかと思い、 加えてみました。 実数型の変数。 |
ver1.0.0.1 |
E3DChkConfGround2 | 当たり判定 | befposとnewposを結ぶ線分と、groundhsidで識別される地面との、あたり判定をします。 線分の座標を、ユーザーが指定すること以外は、 E3DChkConfGroundと全く、同じです。 |
1. [IN] 変数または、数値 : befposx 2. [IN] 変数または、数値 : befposy 3. [IN] 変数または、数値 : befposz 線分の始点を(befposx, befposy, befposz)で、 指定します。 実数。 4. [IN] 変数または、数値 : newposx 5. [IN] 変数または、数値 : newposy 6. [IN] 変数または、数値 : newposz 線分の終点を(newposx, newposy, newposz)で、 指定します。 実数。 7. [IN] 変数または、数値 : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 8. [IN] 変数または、数値 : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 9. [IN] 変数または、数値 : diffmaxy 一度の移動で、登ることが出来る高さの最大値を 指定してください。 実数。 10. [IN] 変数または、数値 : mapminy groundhsidで識別されるデータの一番低いY座標の値 通常は、0.0です。 実数。 11. [OUT] 変数 : result あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 12. [OUT] 変数 : adjustx 13. [OUT] 変数 : adjusty 14. [OUT] 変数 : adjustz result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 15. [OUT] 変数 : nx 16. [OUT] 変数 : ny 17. [OUT] 変数 : nz result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが、 (nx, ny, nz)に代入されます。 跳ね返る方向を決めるときなどに、 使用できるのではないかと思い、 加えてみました。 実数型の変数。 |
ver1.0.0.1 |
E3DGetPartNoByName | モデル情報 | モデル内のパーツの名前から、パーツの番号を取得します。 取得したパーツの番号は、 E3DGetVertNumOfPart, E3DGetVertPos E3DSetVertPos で使用します。 パーツの名前は、RokDeBone2で確認してください。 ver1.0.6.1以前のRokDeBone2では、 メタセコイアから読み込んだデータの、 パーツの名前には、 " が付いているので、 注意してください。 昔のファイルの場合、 例えば、名前が、"obj1" である場合、 引数partname には、 "\"obj1\"" というように、\" を使用しなくては、いけません。 ( 現在のRokDeBone2で新規作成したファイルでは、 パーツ名に”は付いていません。 ) また、同じ名前のパーツが、複数ある場合、 常に、一番最初に、見つかったパーツの番号が、取得されることに、注意してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 文字列または、文字列変数 : partname RokDeBone2で表示される、パーツの名前。 3. [OUT] 変数 : partno 名前がpartnameである、パーツの番号。 |
ver1.0.0.1 |
E3DGetVertNumOfPart | モデル情報 | partnoで識別されるパーツに、いくつの頂点が含まれるかを取得します。 E3DGetVertPos, E3DSetVertPos に渡す、vertno は、 0 〜 (vertnum - 1) の間でなくては、なりません。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号 3. [OUT] 変数 : vertnum パーツに含まれる頂点数。 |
ver1.0.0.1 |
E3DGetVertPos | モデル情報 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標を取得します。 E3DSetPos, E3DSetDirなどの、 影響を受けていない、 ローカルな座標値が、返されます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号 3. [IN] 変数または、数値 : vertno 頂点の番号 4. [OUT] 変数 : vertx 5. [OUT] 変数 : verty 6. [OUT] 変数 : vertz 頂点の座標が(vx, vy, vz)に代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DSetVertPos | モデル情報 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標(ローカル座標)をセットします。 ユーザーが、座標、姿勢を、 全て、自分で管理することを想定した、 上級者向けの機能です。 例えば、目標地点に頂点座標を近づけていきたい場合などは、 E3DSetPos hsid, 0.0, 0.0, 0.0 E3DSetDir hsid, 0.0, 0.0, 0.0 でワールド変換が行われないようにした状態で、 E3DSetVertPosを使い、希望位置へ、 頂点座標をセットする。 などの、使用方法が、考えられます。 AddMotionを行った、モデルデータにも、 使用しないでください。 (使用しても、ハングしたりはしませんが、 あたり判定が、正確に行われません。) 具体的な使用例は、 zip中の、e3dhsp_vertpos.as をご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号 3. [IN] 変数または、数値 : vertno 頂点の番号 4. [IN] 変数または、数値 : vertx 5. [IN] 変数または、数値 : verty 6. [IN] 変数または、数値 : vertz (vertx, verty, vertz )の座標を、 指定の頂点にセットします。 実数型の変数。 |
ver1.0.0.1 |
E3DSetPosOnGround | モデル位置 | E3DLoadGroundBMP、または、E3DLoadMQOFileAsGroundで作成した地面上の、適切な高さに、モデルデータを配置するための、関数です。 (posx, mapmaxy, posz)と、 (posx, mapminy, posz)を結ぶ線分と、 地面データとの交点を求めて、 その位置に、hsidのモデルデータを配置します。 交点が複数ある場合は、 (posx, mapmaxy, posz)から、一番近い交点が、選ばれます。 この命令を使う前に、少なくとも、一回は、 E3DChkInView groundid が、呼ばれていないと、ちゃんと動作しません。 (groundid部分には、配置する地面のhsidを入れてください。) 現バージョンではgroundidは、 E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGround で取得したものしか、使用できません。 |
1. [IN] 変数または、数値 : hsid 配置したい形状データを識別するid 2. [IN] 変数または、数値 : groundid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した地面を識別するid 3. [IN] 変数または、数値 : mapmaxy 地面データの高さの最大値 実数。 4. [IN] 変数または、数値 : mapminy 地面データの高さの最小値 実数。 5. [IN] 変数または、数値 : posx 6. [IN] 変数または、数値 : posz 地面の高さをYとすると、 (posx, Y,. posz)に、hsidのモデルデータを配置します。 実数。 |
ver1.0.0.1 |
E3DSetPosOnGroundPart | モデル位置 | 地面パーツを指定して、地面にオブジェクトを配置します。 パーツを指定すること以外は、 E3DSetPosOnGroundと同じです。 詳しくは、E3DSetPosOnGroundの説明をお読みください。 |
1. [IN] 変数または、数値 : hsid 配置したい形状データを識別するid 2. [IN] 変数または、数値 : groundid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した地面を識別するid 3. [IN] 変数または、数値 : groundpart 地面のパーツ番号を指定します。 E3DGetPartNoByNameで取得した番号を 指定してください。 4. [IN] 変数または、数値 : mapmaxy 地面データの高さの最大値 実数。 5. [IN] 変数または、数値 : mapminy 地面データの高さの最小値 実数。 6. [IN] 変数または、数値 : posx 7. [IN] 変数または、数値 : posz 地面の高さをYとすると、 (posx, Y,. posz)に、hsidのモデルデータを配置します。 実数。 |
ver1.0.0.1 |
E3DCreateBillboard | ビルボード | ビルボードを作成します。 1500個まで、ビルボードを作ることが出来ます。 billboardidに、作成したビルボードを識別する 番号が、代入されます。 billboardidは、 E3DSetBillboardPos, E3DSetBillboardOnGround, E3DDestroyBillboard, E3DChkConfBillboard の関数で、使用します。 billboardidは、hsidとは、全く異なるものなので、E3DSetPosなどの、hsidを使用する関数には、使えません。 E3DCreateBillboardでは、 transparentflagに、1をセットすれば、 黒色を透過色として、扱えます。 |
1. [IN] 文字列または、文字列変数 : filename ビルボードに貼り付けるテクスチャーのファイル名 2. [IN] 変数または、数値 : width ビルボードの幅。 実数。 3. [IN] 変数または、数値 : height ビルボードの高さ。 実数。 4. [IN] 変数または、数値 : transparentflag 1を指定すると、 テクスチャーの黒色(r = 0, g=0, b=0)を透過色として、 扱います。 0を指定すると、 テクスチャーファイルの、 アルファ値を元に、透過します。 5. [OUT] 変数 : billboardid 作成したビルボードを識別する番号が、代入されます。 6. [IN] 変数または、数値 : dirmode dirmodeに0を指定すると、 ビルボードは、Y軸に関してのみ、回転します。 地面に立っている木などに使用してください。 dirmodeの1を指定すると、 ビルボードは、全方向に回転します。 カメラの高さにかかわらず、カメラの方向を向かせたいもの 例えば、火や煙などに、使用してください。 7. [IN] 変数または、数値 : orgflag ビルボードの原点の位置を指定します。 orgflagに0を指定すると、 原点は、ビルボードの四角形の下の辺の中心になります。 地面に生やす木などの場合に、便利です。 orgflagに1を指定すると、 原点は、ビルボードの中心になります。 爆発などの、特殊効果に使う場合に、便利です。 |
ver1.0.0.1 |
E3DRenderBillboard | ビルボード | E3DCreateBillboard で作成されたビルボード全てを、 描画します。 各ビルボードは、 視線の方向を向くようにセットされます。 また、 視点から、遠い方から順番に、描画されます。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver1.0.0.1 |
E3DSetBillboardPos | ビルボード | billboardidで識別されるビルボードの、位置を指定します。 |
1. [IN] 変数または、数値 : billboardid ビルボードを識別する番号 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz ビルボードの位置を、(posx, posy, posz) にセットします。 実数。 |
ver1.0.0.1 |
E3DSetBillboardOnGround | ビルボード | billboardidで識別されるビルボードの、位置を、指定したXZ座標の、地面の高さにセットします。 この命令を使う前に、少なくとも、一回は、 E3DChkInView groundid が呼ばれている必要があります。 (groundid部分には、配置する地面のhsidを入れてください。) 現バージョンではgroundidは、 E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGround で取得したものしか、使用できません。 |
1. [IN] 変数または、数値 : billboardid ビルボードを識別する番号 2. [IN] 変数または、数値 : groundid groundidで識別される地面の上に、 ビルボードが配置されます。 3. [IN] 変数または、数値 : mapmaxy 地面データの一番大きなY座標 実数。 4. [IN] 変数または、数値 : mapminy 地面データの一番小さなY座標 (通常0.0) 実数。 5. [IN] 変数または、数値 : posx 6. [IN] 変数または、数値 : posz (posx, mapmaxy, posz)と、(posx, mapminy, posz) と地面データとの交点を求めて、 地面上の適切な高さに、ビルボードを配置します。 実数。 |
ver1.0.0.1 |
E3DDestroyBillboard | ビルボード | billboardidで識別されるビルボードを、削除します。 |
1. [IN] 変数または、数値 : billboardid ビルボードを識別する番号 |
ver1.0.0.1 |
E3DLoadMQOFileAsGround | 地面 | mqo ファイルを地面データとして、読み込みます。 地面データを識別するidが、戻り値となります。 取得したid は、E3DChkConfGroundなどの関数で、使用できます。 |
1. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0 実数。 3. [OUT] 変数 : hsid 作成した地面を識別するhsidが代入されます。 4. [IN] 変数または、数値 : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 何も指定しないときは、0として扱われます。 |
ver1.0.0.1 |
E3DSaveMQOFile | モデルデータ | hsidで指定したモデルのデータを、mqoの形式で出力します。 地面データの出力などに、使用してください。 |
1. [IN] 変数または、数値 : hsid 出力するモデルのhsid 2. [IN] 文字列または、文字列変数 : filename 出力するファイル名 |
ver1.0.0.1 |
E3DGetBillboardInfo | ビルボード | 指定した番号の、ビルボード情報を、取得します。 ビルボードの番号には、 E3DCreateBillboardで取得した番号を、 指定してください。 texname には、256以上の大きさの バッファを指定してください。 例えば、 sdim texname, 256, 1 などで、確保した変数を、 指定してください。 |
1. [IN] 変数または、数値 : billboardid 情報を取得したいビルボードの番号。 E3DCreateBillboardで取得した番号を 指定してください。 2. [OUT] 変数 : posx 3. [OUT] 変数 : posy 4. [OUT] 変数 : posz ビルボードの座標が、 (posx, posy, posz)に代入されます。 実数型の変数。 5. [OUT] 変数 : texname ビルボードの、テクスチャファイル名が、 代入されます。 texname には、256以上の大きさのバッファを 指定してください。 例えば、sdim texname, 256, 1 などで、確保した変数を、指定してください。 6. [OUT] 変数 : transparent ビルボードの、透過モードが、代入されます。 transparent == 0 のときは、 ビルボードは、 テクスチャファイルのアルファ情報によって、 透過されます。 transparent == 1 のときは、 ビルボードは、 (R, G, B) == (0, 0, 0)を透過色として、処理されます。 7. [OUT] 変数 : width ビルボードの幅が、代入されます。 実数型の変数。 8. [OUT] 変数 : height ビルボードの高さが、代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DGetNearBillboard | ビルボード | 指定した座標に、一番近いビルボードのIDを取得します。 maxdist で指定した、距離より、遠いビルボードしか存在しない場合は、 IDに、-1 が代入されます。 |
1. [IN] 変数または、数値 : posx 2. [IN] 変数または、数値 : posy 3. [IN] 変数または、数値 : posz 位置座標を、(posx, posy, posz)で指定します。 実数。 4. [IN] 変数または、数値 : maxdist maxdistで、指定した距離より、 遠いビルボードしかない場合は、 nearbbidに-1が代入されます。 実数。 5. [OUT] 変数 : nearbbid (posx, posy, posz) に一番近く、 maxdistより近いビルボードのIDを代入します。 存在しない場合は、-1を代入します。 |
ver1.0.0.1 |
E3DGetInvisibleFlag | モデル情報 | hsidで識別されるモデルの、partnoのパーツのInvisibleFlag(見えないフラグ)を取得します。 InvisibleFlagが、1になっているパーツは、あたり判定は、行われますが、 表示はされません。 進入禁止区域との、境目に置く、見えないオブジェクトとして、使用することなどが、 考えられます。 partno には、E3DGetPartNoByNameで取得した番号を指定してください。 また、hsidに負の値を渡し、partnoに、ビルボードのid を渡すと、 ビルボードのInvisibleFlag を取得することが出来ます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID ビルボードのInvisibleFlagを取得する場合は、負の値 を渡してください。 2. [IN] 変数または、数値 : partno パーツの番号。 E3DGetPartNoByNameで取得した番号、 または、ビルボードのID。 3. [OUT] 変数 : flag 指定したパーツのInvisibleFlag が代入されます。 |
ver1.0.0.1 |
E3DSetInvisibleFlag | モデル情報 | hsidで識別されるモデルの、partnoのパーツのInvisibleFlag(見えないフラグ)をセットします。 partno には、E3DGetPartNoByNameで取得した番号を指定してください。 また、hsidに負の値を渡し、partnoに、ビルボードのid を渡すと、 ビルボードのInvisibleFlag をセットすることが出来ます。 InvisibleFlag == 0 のとき可視状態(デフォルト)で、 InvisibleFlag == 1 のとき、表示されず、あたり判定だけとなります。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するID ビルボードのInvisibleFlagを取得する場合は、 負の値を渡してください。 2. [IN] 変数または、数値 : partno パーツの番号。 E3DGetPartNoByNameで取得した番号、 または、ビルボードのID。 3. [IN] 変数または、数値 : flag 指定したパーツのInvisibleFlag をセットします。 |
ver1.0.0.1 |
E3DSetMovableArea | 壁 | 移動可能領域を、BMPファイルから、自動生成します。 (色の付いた部分と、付いていない部分の 境界部分に、地面に垂直な、非表示の壁ポリゴンを生成します。) E3DChkConfWall 命令と併用すれば、 BMPで、濃い色を付けた部分のみ、移動できるようになります。 具体的な使用例は、zip中の、 e3dhsp_wall.as をご覧ください。 メタセコイアデータで、 壁データを作りたい場合は、 メタセコイアのプラグイン、MakeWallをご使用ください。 (おちゃっこLABのトップページにリンクがあります。) |
1. [IN] 文字列または、文字列変数 : filename1 壁の座標情報の元となる、BMPファイル名 2. [IN] 変数または、数値 : maxx 壁のX座標の最大値 実数。 3. [IN] 変数または、数値 : maxz 壁のZ座標の最大値 実数。 4. [IN] 変数または、数値 : divx X方向の分割数 5. [IN] 変数または、数値 : divz Z方向の分割数 6. [IN] 変数または、数値 : wallheight 作成する壁の高さ 実数。 7. [OUT] 変数 : hsid 作成した壁データを識別する、ID |
ver1.0.0.1 |
E3DChkConfWall | 当たり判定 | E3DSetMovableArea, または、E3DLoadMQOFileAsMovableAreaで、作成した、壁データと、キャラクターのあたり判定を行います。 キャラクターの現在の座標と、E3DSetBeforePosで保存された古い座標とを結ぶ線分と、 壁の各ポリゴンとのあたり判定をします。 壁に沿って、位置を移動するために、 使用します。 壁の外側から、内側へは、移動できますが、内側から外側へは、移動できないようにします。 具体的な使用例は、zip中の、 e3dhsp_wall.as をご覧ください。 |
1. [IN] 変数または、数値 : charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値 : groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 3. [IN] 変数または、数値 : dist 跳ね返る距離。 distに大きな値を入れると、 ぶつかった際に、大きく、跳ね返るようになります。 実数。 4. [OUT] 変数 : result あたり判定の結果が代入されます。 壁とぶつかった場合は、1が、 ぶつからなかった場合は、0が、代入されます。 5. [OUT] 変数 : adjustx 6. [OUT] 変数 : adjusty 7. [OUT] 変数 : adjustz result != 0 のときに、 修正後の座標が、 (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 8. [OUT] 変数 : nx 9. [OUT] 変数 : ny 10. [OUT] 変数 : nz result != 0 のときに、 ぶつかった面の法線ベクトルの値が、 代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DChkConfWall2 | 当たり判定 | E3DSetMovableArea, または、E3DLoadMQOFileAsMovableAreaで、作成した、壁データと、キャラクターのあたり判定を行います。 befposで指定した座標と、 newposで指定した座標を結ぶ線分と、 壁の各ポリゴンとのあたり判定をします。 壁に沿って、位置を移動するために、 使用します。 壁の外側から、内側へは、移動できますが、内側から外側へは、移動できないようにします。 |
1. [IN] 変数または、数値 : befposx 2. [IN] 変数または、数値 : befposy 3. [IN] 変数または、数値 : befposz 線分の始点を(befposx, befposy, befposz)で、 指定します。 実数。 4. [IN] 変数または、数値 : newposx 5. [IN] 変数または、数値 : newposy 6. [IN] 変数または、数値 : newposz 線分の終点を(newposx, newposy, newposz)で、 指定します。 実数。 7. [IN] 変数または、数値 : groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 8. [IN] 変数または、数値 : dist 壁からの距離の最小値。 distに大きな値を入れると、 ぶつかった際に、大きく、跳ね返るようになります。 実数。 9. [OUT] 変数 : result あたり判定の結果が代入されます。 壁とぶつかった場合は、1が、 ぶつからなかった場合は、0が、代入されます。 10. [OUT] 変数 : adjustx 11. [OUT] 変数 : adjusty 12. [OUT] 変数 : adjustz result != 0 のときに、 修正後の座標が、 (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 13. [OUT] 変数 : nx10000 14. [OUT] 変数 : ny10000 15. [OUT] 変数 : nz10000 result != 0 のときに、 ぶつかった面の法線ベクトルの値が、 代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DVec3Normalize | 算術 | 指定したベクトルを、正規化た値を取得します。 つまり、指定したベクトルの向きを持つ、 大きさ1のベクトルが、取得できます。 |
1. [IN] 変数または、数値 : vecx 2. [IN] 変数または、数値 : vecy 3. [IN] 変数または、数値 : vecz ベクトルを、(vecx, vecy, vecz)で指定します。 実数。 4. [OUT] 変数 : newvecx 5. [OUT] 変数 : newvecy 6. [OUT] 変数 : newvecz 向きが(vecx, vecy, vecz)で、 大きさが1な、ベクトルを、 (newvecx, newvecy, newvecz)に代入します。 実数型の変数。 |
ver1.0.0.1 |
E3DVec2CCW | 算術 | vec2 がvec1 に対して、反時計回りの時、 resultに、1を代入し、 時計回りの時、 resultに、-1を代入する。 |
1. [IN] 変数または、数値 : vecx1 2. [IN] 変数または、数値 : vecy1 vec1( vecx1, vecy1 )を指定する。 実数。 3. [IN] 変数または、数値 : vecx2 4. [IN] 変数または、数値 : vecy2 vec2( vecx2, vecy2 )を指定する。 実数。 5. [OUT] 変数 : result vec2 がvec1 に対して、反時計回りの時、 resultに、1を代入し、 時計回りの時、 resultに、-1を代入する。 |
ver1.0.0.1 |
E3DVec3RotateY | 算術 | ベクトルbefvecを、Y軸に関して、degy 度だけ回転したベクトルnewvec を取得します。 |
1. [IN] 変数または、数値 : befvecx 2. [IN] 変数または、数値 : befvecy 3. [IN] 変数または、数値 : befvecz 回転したいベクトルを、 (befvecx, befvecy, befvecz)で指定します。 実数。 4. [IN] 変数または、数値 : degy 回転角度を指定します。 degy の角度だけ回転します。 実数。 5. [OUT] 変数 : newvecx 6. [OUT] 変数 : newvecy 7. [OUT] 変数 : newvecz 回転後のベクトルが、 (newvecx, newvecy, newvecz)に代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DLoadMQOFileAsMovableArea | 壁 | メタセコイアの、MQOファイルで作成した壁のデータを、移動可能領域情報として、読み込みます。 メタセコイアで、データを作る場合には、次の2点に気を付けてください。 1.壁データは、常に、移動可能領域の内側を向くように、面の向きを設定してください。両面ポリゴンは、不可です。 2.壁データは、少しの隙間もないように、 作成してください。 自動的に壁データを作りたい場合は、 メタセコイアのプラグイン、MakeWallをご使用ください。 (おちゃっこLABのトップページにリンクがあります。) |
1. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値 : mult 形状データの座標に掛ける係数の数値。 座標値 * mult で計算されます。 等倍は1.0 実数。 3. [OUT] 変数 : hsid 作成した壁データを識別するhsidが代入されます。 |
ver1.0.0.1 |
E3DLoadSound | サウンド | 音のデータを読み込み、音を識別する番号、soundid、を取得します。 ver1.0.5.0から3Dサウンドに対応できるように なりました。 use3dflagに1を指定すると、 3Dサウンドとしてロードします。 読み込める音データの種類は、 *.wav, *.mid, *.sgt ファイルです。 3Dサウンドは、wavファイルのモノラル形式のみです。 3Dサウンドの設定については、 E3DSet3DSoundで始まる関数名を お調べください。 同じIDの、3Dサウンドを同時にいくつ 重ねて再生できるかはbufnum引数で指定します。 実際の使用例は、zip中の、 e3dhsp_sound.as をご覧ください。 3Dサウンドの使用例は、 e3dhsp_3Dsound.as をご覧ください。 |
1. [IN] 文字列または、文字列変数 : filename 読み込む、サウンド ファイル名。 2. [OUT] 変数 : soundid 作成した音データを識別する番号が代入されます。 3. [IN] 変数または、数値 : use3dflag ファイルをステレオサウンドとして読み込む場合は0を、 3Dサウンドとして読み込む場合は1を指定してください。 指定しなかった場合は、ステレオサウンドと見なされます。 4. [IN] 変数または、数値 : bufnum 同じIDの、3Dサウンドを、同時にいくつ重ねて再生できるかを 指定します。 3Dサウンドではない場合は、 今まで通り、DirectMusicが、自動的に、 重ねて再生してくれます。 |
ver1.0.0.1 |
E3DPlaySound | サウンド | E3DLoadSoundで、読み込んだ、音データを再生します。 isprimary 引数には、 BGM再生時に、1を、 効果音再生時に0を指定してください。 boundaryflagには、再生境界を指定します。 e3dhsp.as内で定義している、 DMUS_SEGF_ で始まる定数を指定してください。 それぞれの意味は、以下の通りです。 DMUS_SEGF_BEAT 拍の境界で演奏する。 DMUS_SEGF_DEFAULT セグメントのデフォルトの境界を使用する。 DMUS_SEGF_GRID グリッド(拍の小分割)境界で演奏する。 DMUS_SEGF_MEASURE 小節境界で演奏する。 DMUS_SEGF_QUEUE プライマリ セグメント キューの最後に置く。 プライマリ セグメントに対してのみ 有効である。 DMUS_SEGF_SEGMENTEND 開始タイムで演奏中のプライマリ セグメント の最後で演奏する。 現在演奏中のプライマリ セグメント後に 既に挿入されているセグメントは、 フラッシュ (解放) される。 3Dサウンドの再生時には、 isprimary, boundaryflagを指定しても反映されません。 |
1. [IN] 変数または、数値 : soundid 再生したい音を識別する番号を、指定します。 2. [IN] 変数または、数値 : isprimary isprimaryに1を指定すると、 プライマリセグメントとして再生されます。 プライマリセグメントは、一度に、一つだけ、 再生できます。 isprimaryに0を指定すると、 セカンダリセグメントとして、再生されます。 プライマリセグメントに、重ねて、再生されます。 BGMを再生するときには、 isprimaryを1に、 効果音を再生するときには、 isprimaryを0に、 指定すると、うまくいきます。 3. [IN] 変数または、数値 : boundaryflag 右の説明をお読みください。 |
ver1.0.0.1 |
E3DStopSound | サウンド | 音の再生を停止します。 |
1. [IN] 変数または、数値 : soundid 停止したい音を識別する番号を、指定します。 2. [IN] 変数または、数値 : flag 3Dサウンドの停止状態を指定します。 flagに0を指定すると、E3DStopSoundした後に、 E3DPlaySoundした場合、停止した続きの場所から 再生されます。 flagに1を指定すると、次にE3DPlaySoundした場合、 最初から再生されます。 デフォルトでは、flag 0 を指定したのと同じ状態になっています。 3Dサウンド以外は、常に、次回のE3DPlaySound時に、 最初から再生されます。 |
ver1.0.0.1 |
E3DSetSoundLoop | サウンド | 音を繰り返し再生するかどうかを、指定します。 デフォルトでは、 繰り返さない状態になっています。 |
1. [IN] 変数または、数値 : soundid ループ設定したい音を識別する番号を、指定します。 2. [IN] 変数または、数値 : loopflag loopflag に1を指定すると、 音を、無限回、再生するようになります。 loopflagに0を指定すると、 一回のみ、音を再生するようになります。 |
ver1.0.0.1 |
E3DSetSoundVolume | サウンド | 音の音量を設定します。 3Dサウンドは、 音ごとに音量の設定が出来ます。 その代わり、音の増幅は出来ません。 3Dサウンドは、音量の設定をしても、 次のE3DPlaySound時まで、反映されません。 ステレオサウンドは、 個々に音量の設定をすることはできません。 |
1. [IN] 変数または、数値 : volume 音量を指定します。 0 から -10000 の値を指定してください。 -10000 は、-100dB に相当します。 2. [IN] 変数または、数値 : soundid 設定したい音を識別する番号を指定します。 -1を指定すると、全ての音の音量を設定できます。 何も設定しなかった場合は、-1と見なされます。 |
ver1.0.0.1 |
E3DSetSoundTempo | サウンド | 音のテンポを設定します。 E3DPlaySoundで、再生している、 全ての音に、影響します。 (音ごとに設定することは、出来ません) 音を早く再生したり、遅く再生したり、出来るようになります。 3Dサウンドには、反映されません。 |
1. [IN] 変数または、数値 : tempo テンポを指定します。 tempo には、0.01 から 100.0 の値を 指定してください。 0.01を指定した場合は、 0.01 倍のテンポ、 つまり、おそーく、再生されます。 100.0を指定した場合は、 100 倍のテンポ、 つまり、すごく早く再生されます。 1.0を指定した場合は、 1 倍のテンポ、 つまり、通常の、速さで、再生されます。 |
ver1.0.0.1 |
E3DDestroySound | サウンド | 読み込んだ音データを破棄します。 破棄した音は、その後、操作することは出来ません。 ただ、再生を終了させる場合は、 E3DStopSound関数を使用してくださ |
1. [IN] 変数または、数値 : soundid 破棄したい音を識別する番号 |
ver1.0.0.1 |
E3DSetSoundFrequency | サウンド | 音の周波数を設定します。 3Dサウンドに周波数を設定しても、 次回のE3DPlaySound時まで、反映されません。 |
1. [IN] 変数または、数値 : soundid 設定したい音を識別する番号 2. [IN] 変数または、数値 : freq 周波数を指定します。 |
ver1.0.0.1 |
E3DGetSoundVolume | サウンド | 現在の音量を取得します。 | 1. [IN] 変数または、数値 : soundid 音を識別する番号 2. [OUT] 変数 : vol 音量が代入されます。 |
ver1.0.0.1 |
E3DGetSoundFrequency | サウンド | 現在の周波数を取得します。 | 1. [IN] 変数または、数値 : soundid 音を識別する番号 2. [OUT] 変数 : freq 周波数が代入されます。 |
ver1.0.0.1 |
E3DSet3DSoundListener | サウンド | 3Dサウンド再生時に関係するリスナー(聞き手)の パラメータを設定します。 ここで設定したパラメータは、3Dサウンド全体に影響します。 ここで設定する係数は、 DirectXのドキュメントに詳しく書いてあります。 お持ちの方は、 [DirectX9ドキュメント]-> [DirectSound]-> [DirectSoundの使い方]-> [3Dサウンド]-> [DirectSound の3D リスナー]-> [ドップラー効果] [DirectX9ドキュメント]-> [DirectSound]-> [DirectSoundの使い方]-> [3Dサウンド]-> [DirectSound の3D リスナー]-> [ロールオフ係数] をお読みください。 3Dサウンドの使用例は、 e3dhsp_3Dsound.as をご覧ください。 |
1. [IN] 変数または、数値 : doppler ドップラー係数を指定してください。 0.0から10.0の値が有効です。 0.0を指定すると、ドップラー効果なし。 2.0を指定すると、実世界の2倍のドップラー効果が得られます。 実数。 2. [IN] 変数または、数値 : rolloff ロールオフ係数を指定してください。 リスナーと音の距離による減衰の具合を操作できます。 0.0から10.0の値が有効です。 0.0を指定すると、減衰なし。 2.0を指定すると、実世界の2倍の減衰効果が得られます。 実数。 |
ver1.0.0.1 |
E3DSet3DSoundListenerMovement | サウンド | リスナーの位置と向きを設定します。 hsidにモデルデータの番号を渡した場合には、 そのモデルデータの位置と向きが、 リスナーの位置と向きとして設定されます。 hsidに-1を渡した場合には、 視点の位置と向きが、 リスナーの位置と向きとして設定されます。 一回呼び出せば、ずっと、hsidの更新情報を リスナーに反映させるわけではありません。 情報の更新が必要になるたびに、 呼び出してください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別する番号 -1のときは、視点をリスナーとします。 |
ver1.0.0.1 |
E3DSet3DSoundDistance | サウンド | 3Dサウンドの最小距離と最大距離を設定します。 E3DLoadSoundのuse3dflagに1を指定して 読み込んだサウンドのみに対し、有効です。 ここで設定する係数は、 DirectXのドキュメントに詳しく書いてあります。 お持ちの方は、 [DirectX9ドキュメント]-> [DirectSound]-> [DirectSoundの使い方]-> [3Dサウンド]-> [DirectSound 3D のバッファ]-> [最小距離と最大距離] をお読みください。 3Dサウンドの使用例は、 e3dhsp_3Dsound.as をご覧ください。 |
1. [IN] 変数または、数値 : soundid 3Dサウンドを識別する番号 2. [IN] 変数または、数値 : min 3. [IN] 変数または、数値 : max 最小距離と最大距離を指定します。 実数。 以下は、DirectXのドキュメントからの引用です。 リスナーが音源に近づくにつれてサウンドが大きくなり、 |
ver1.0.0.1 |
E3DSet3DSoundMovement | サウンド |
3Dサウンドの位置と速度を設定します。 E3DLoadSoundのuse3dflagに1を指定して 読み込んだサウンドのみに対し、有効です。 3Dサウンドの使用例は、 e3dhsp_3Dsound.as をご覧ください。 |
1. [IN] 変数または、数値 : soundid 3Dサウンドを識別する番号 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 4. [IN] 変数または、数値 : posz 3Dサウンドの位置を(posx, posy, posz)で指定します。 実数。 5. [IN] 変数または、数値 : vx 6. [IN] 変数または、数値 : vy 7. [IN] 変数または、数値 : vz 3Dサウンドの速度を(vx, vy, vz)で指定します。 実数。 |
ver1.0.0.1 |
E3DCreateNaviLine | ナビライン | ナビラインを作成します。 ナビラインとは、複数のナビポイントからなる、双方向リンクリストのことです。 ナビポイントとは、キャラクターの自動走行時に、位置を決める基準となるポイントのことです。 この関数が成功すると、 ナビラインを識別するためのID、nlidが得られます。 失敗すると、nlidに負の値が代入されます。 |
1. [OUT] 変数 : nlid 作成したナビラインを識別するためのIDが 代入されます。 |
ver1.0.0.1 |
E3DDestroyNaviLine | ナビライン | ナビラインを削除します。 | 1. [IN] 数値または、変数 : nlid 削除するラインを識別するID |
ver1.0.0.1 |
E3DAddNaviPoint | ナビライン | ナビラインに、ナビポイントを追加します。 成功すると、新しいナビポイントを識別するためのID、npid が得られます。 befnpidで指定したポイントの次の位置に、 追加できる他、 先頭位置や、最後の位置にも追加することができます。 ナビポイントの編集には、 GViewer.exeを使うと便利です。 (おちゃっこLABでDL可能です。) |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : befnpid befnpidで指定したポイントの次の位置に、 新しいポイントを追加します。 befnpidに-1を指定すると、 ナビラインの最後に追加され、 befnpidに-2を指定すると、 ナビラインの先頭に追加されます。 3. [OUT] 変数 : npid 新しく追加したナビポイントのIDが代入されます。 |
ver1.0.0.1 |
E3DRemoveNaviPoint | ナビライン | ナビラインから、ナビポイントを削除します。 | 1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid 削除したいナビポイントのID |
ver1.0.0.1 |
E3DGetNaviPointPos | ナビライン | ナビポイントの座標を取得します。 | 1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [OUT] 変数 : posx 4. [OUT] 変数 : poxy 5. [OUT] 変数 : posz ナビポイントの座標が、 (posx, posy, poz)に、代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DSetNaviPointPos | ナビライン | ナビポイントの座標をセットします。 この座標をもとに、 キャラクターが移動することになります。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : poxy 5. [IN] 数値または、変数 : posz ナビポイントの座標を (posx, posy, posz)に設定します。 実数。 |
ver1.0.0.1 |
E3DGetNaviPointOwnerID | ナビライン | ナビポイントのOwnerIDを取得します。 |
ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [OUT] 変数 : OwnerID ナビポイントのOwnerIDが代入されます。 |
ver1.0.0.1 |
E3DSetNaviPointOwnerID | ナビライン | ナビポイントのOwnerIDをセットします。 ナビポイントに、 排他的な、所有権を設定したいときなどに、 自由に、使用してください。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [IN] 変数 : OwnerID ナビポイントのOwnerIDに設定します。 |
ver1.0.0.1 |
E3DGetNextNaviPoint | ナビライン | npidで指定したナビポイントの、一つ後のナビポイントのIDを取得します。 ナビラインは、ナビポイントを、双方向リストで、格納しています。 一つ後のナビポイントが存在しない場合は、nextid には、負の値が代入されます。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [OUT] 変数 : nextid 一つ後のナビポイントのIDが代入されます。 npid に-1が指定されている場合は、 nextidには、先頭のナビポイントのIDが代入されます |
ver1.0.0.1 |
E3DGetPrevNaviPoint | ナビライン | npidで指定したナビポイントの、一つ前のナビポイントのIDを取得します。 ナビラインは、ナビポイントを、双方向リストで、格納しています。 一つ前のナビポイントが存在しない場合は、previd には、負の値が代入されます。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : npid ナビポイントを識別するID 3. [OUT] 変数 : previd 一つ後のナビポイントのIDが代入されます。 |
ver1.0.0.1 |
E3DGetNearestNaviPoint | ナビライン | 指定した座標に、一番近いナビポイントのIDを取得します。 一番近いナビポイントの前後のポイントの IDも取得できます。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : posx 3. [IN] 数値または、変数 : posy 4. [IN] 数値または、変数 : posz (posx, posy, posz)に一番近いナビポイントを 探します。 実数。 5. [OUT] 変数 : nearid 一番近いナビポイントのIDが代入されます。 6. [OUT] 変数 : previd 一番近いナビポイントの前のポイントのIDが 代入されます。 7. [OUT] 変数 : nextid 一番近いナビポイントの次のポイントのIDが 代入されます。 |
ver1.0.0.1 |
E3DFillUpNaviLine | ナビライン | ナビポイントとナビポイントの間を、指定した分割数で、補間します。 Catmull-Romの公式で、補間します。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : div 何分割して補間するかを指定します。 3. [IN] 数値または、変数 : flag flagに1を指定すると、 チェインの順番にナビポイントのIDをふり直します。 |
ver1.0.0.1 |
E3DSetNaviLineOnGround | ナビライン | ナビライン中の全てのナビポイントの座標を、地面の高さに設定します。 |
1. [IN] 数値または、変数 : nlid ラインを識別するID 2. [IN] 数値または、変数 : grounhdis 地面を識別するhsid 3. [IN] 数値または、変数 : mapmaxy 地面データのY座標の最大値を指定します。 実数。 4. [IN] 数値または、変数 : mapminy 地面データのY座標の最小値を指定します。 実際の最小値より、少し小さな値を入れてください。 実数。 |
ver1.0.0.1 |
E3DControlByNaviLine | ナビライン | ナビラインのデータを元に、キャラクターの位置と、向きを、自動的に設定するための関数です。 引数の、モードなどのパラメータを、 色々変化させることで、 一つのナビラインから、複数の(数え切れないくらいの)走行パターンを得ることが、 可能です。 具体的な使用例は、zip中の、 e3dhsp_autorun.as をご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : nlid ラインを識別するID 3. [IN] 数値または、変数 : ctrlmode ビットの和で、モードを指定します。 ビット1が立っていた場合には、 位置を優先した制御が行われます。 引数maxdist, dirstep は無視されます。 出来るだけ、ナビポイントの近くを通るように なります。 ビット1が立っていない場合には、 向きを優先した制御が行われます。 dirstepで指定した角度より大きな角度では、 移動できなくなります。 ただし、そのままだと、キャラクターが、 ナビラインから、遠くに離れすぎてしまうので、 引数maxdistで、ナビラインからどのくらい離れても 良いかを指定します。 maxdistよりも、遠くに離れた場合には、 dirstepで指定したよりも、大きな角度で、 ナビラインに近づくように修正されます。 なので、dirstepに小さな値を指定すると、 ジグザグにナビラインをたどるようになります。 ビット4が立っていた場合には、 向きの設定は、XZ平面のみで行われます。 例えば、ctrlmode に5を指定した場合は、 位置を優先した制御で、XZ平面での向き設定をする ということになります。 4. [IN] 数値または、変数 : roundflag ナビラインの最後のナビポイントに移動した後、 ナビラインの最初のナビポイントの位置を 目指すかどうかを示します。 1を指定すると、円形のナビラインの場合は、 ずっと、ぐるぐる回ることになります。 5. [IN] 数値または、変数 : reverseflag 1を指定すると、 ナビラインのポイントを逆順にたどるようになります。 6. [IN] 数値または、変数 : maxdist ナビラインから、どのくらいまで離れても良いかを 指定します。 ctrlmodeのビット1が立っていない場合のみ有効です。 実数。 7. [IN] 数値または、変数 : posstep キャラクターを一度にどれくらいの距離を移動させるかを 指定します。 ただし、ナビポイント付近では、 posstepより小さな距離しか移動させないことがあります。 実数。 8. [IN] 数値または、変数 : dirstep 一度の移動で、最大何度まで回転できるかを 指定します。 回転角度の値を渡してください。 実数。 9. [OUT] 変数 : newposx 10. [OUT] 変数 : newposy 11. [OUT] 変数 : newposz 移動後の座標が(newposx, newposy, newposz)に 代入されます。 実数。 12. [OUT] 変数 : newqx 13. [OUT] 変数 : newqy 14. [OUT] 変数 : newqz 15. [OUT] 変数 : newqw 移動後の姿勢を表すクォータニオンの値が、 (newqx, newqy, newqz, newqw ) に代入されます。 実数。 16. [IN] [OUT] 変数 : targetpointid 現在目指しているナビポイントのIDを入れます。 移動後は、次に目指すべきナビポイントのIDが 代入されます。 ですので、一番最初の呼び出し時のみ、 自分でtargetpoinidを指定すれば、 あとは、同じ変数を渡すだけで、 自動的に、目指すべきポイントのIDが 代入されていくことになります。 targetpointidに、 存在しないナビポイントのIDを入れた場合は、 (例えば-1など) 自動的に、目指すべきナビポイントを決定します。 ですが、この場合、 向きを重視したモードのときに、 動きがぎこちなくなることがあるので、 なるべく、-1などは、使わない方が良いです。 |
|
E3DSetDirQ | モデル向き | 姿勢をクォータニオンで指定して、設定します。 E3DControlByNaviLineや、 E3DGetDirQ で得た姿勢データを 設定するときに、使用してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : qx 3. [IN] 数値または、変数 : qy 4. [IN] 数値または、変数 : qz 5. [IN] 数値または、変数 : qw 姿勢を表すクォータニオンの値を 指定してください。 実数。 |
ver1.0.0.1 |
E3DGetDirQ | モデル向き | 姿勢をクォータニオンの形式で、取得します。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : qx 3. [OUT] 変数 : qy 4. [OUT] 変数 : qz 5. [OUT] 変数 : qw 姿勢を表すクォータニオンの値が 代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DSetWallOnGround | 壁 | 壁データを地面の高さに配置します。 | 1. [IN] 数値または、変数 : whsid 壁の形状データを識別するID 2. [IN] 数値または、変数 : ghsid 地面の形状データを識別するID 3. [IN] 数値または、変数 : mapmaxy 地面データの最大の高さ 実数。 4. [IN] 数値または、変数 : mapminy 地面データの最低の高さ 実数。 5. [IN] 数値または、変数 : wheight 壁の高さ。 実数。 |
ver1.0.0.1 |
E3DCreateNaviPointClearFlag | ナビライン | キャラクターが、nlidで識別されるナビライン上の点を、どれだけ進んだかということを、格納するためのデータを作成します。 hsidで識別されるモデルのデータとして 作成します。 このデータは、レースの順位を決定するときなどに、役に立ちます。 この命令は、 E3DInitNaviPointClearFlag, E3DSetNaviPointClearFlag E3DGetOrder の命令を呼び出す前に、呼び出されていないといけません。 複数回、続けて呼び出してはいけません。 作り直したい場合は、必ず、 E3DDestroyNaviPointClearFlag を呼び出してから、 E3DCreateNaviPointClearFlag を呼び出してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : nlid ナビラインを識別するID 3. [IN] 数値または、変数 : roundnum ナビライン上を最大、何周するのかを指定します。 |
ver1.0.0.1 |
E3DDestroyNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータを破棄します。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID |
ver1.0.0.1 |
E3DInitNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータを初期化します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID |
ver1.0.0.1 |
E3DSetNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータに、現在どれだけのナビポイントを通過したかを、セットします。 キャラクターとナビポイントとの距離を元に、 データをセットします。 この関数を使う場合は、 毎フレーム、この関数を呼び出す必要があります。 この関数でセットしたデータを元に、 E3DGetOrderが順位を決定します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : posx 3. [IN] 数値または、変数 : posy 4. [IN] 数値または、変数 : posz キャラクターの位置を(posx, posy, posz)で指定します。 実数。 5. [IN] 数値または、変数 : maxdist ナビポイントとの距離がmaxdistより近かった場合、 そのポイントをクリアー(通過)したと見なします。 実数。 6. [OUT] 変数 : npidptr 現在クリアーしているポイントの内、 一番前方のポイントのIDが代入されます。 7. [OUT] 変数 : roundptr キャラクターが何週目かが、代入されます。 8. [OUT] 変数 : distptr npidptrに代入された、IDのポイントから、 どれだけ距離が離れているかが、代入されます。 |
ver1.0.0.1 |
E3DGetOrder | ナビライン | E3DSetNaviPointClearFlagでセットされたデータを元に、順位情報を取得するための関数です。 |
1. [IN] 変数 : hsidptr 順位を調べたい形状データを識別するIDの配列を 指定します。 arraylengの長さの配列でなくてはなりません。 例えば、 dim hsidptr, arrayleng という命令で、作成したデータを渡してください。 2. [IN] 数値または、変数 : arrayleng 配列の長さを指定します。 hsidptr, orderptr, clearnoptrは、 全て、arraylengの長さの配列でなくてはなりません。 3. [OUT] 変数 : orderptr 順位順に、hsidが代入されます。 orderptr.0 には、1位のhsidの番号が、 orderptr.1 には、2位のhsidの番号が代入されます。 4. [OUT] 変数 : clearnoptr 順位順に、クリアーしたポイントの数が代入されます。 clearnoptr.0 には、 1位のモデルがクリアーしたポイント数が、 clearnoptr.1 には、 2位のモデルがクリアーしたポイント数が 代入されます。 |
ver1.0.0.1 |
E3DDestroyAllBillboard | ビルボード | 全てのビルボードを破棄します。 | なし | ver1.0.0.1 |
E3DSetValidFlag | モデル情報 | RokDeBone2の ”このオブジェクトを無効にする”機能を、プログラムで行えるようにしました。 無効にしたパーツは、描画やあたり判定の際に、無視されるようになります。 ジョイントに対して、E3DSetValidFlagをした場合は、 E3DJointRemakeを呼び出してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードのフラグを設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツの有効、無効をセットできます。 3. [IN] 数値または、変数 : flag flagに0を指定すると、指定パーツが無効になります。 flagに1を指定すると、有効になります。 |
ver1.0.0.1 |
E3DSetDiffuse | モデル情報 | パーツのdiffuse色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 diffuseだけかえても、Specular, Ambientを変えないと、意図した色にはならないと思いますので、注意してください。 (E3DSetSpecular, E3DSetAmbient, E3DSetEmissive, E3DSetSpecularPowerもご覧ください。) 頂点単位で色の設定が出来ます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 7. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DSetSpecular | モデル情報 | パーツのspecular色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 頂点単位で色の設定が出来ます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 7. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DSetAmbient | モデル情報 | パーツのambient色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 頂点単位で色の設定が出来ます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 7. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DSetBlendingMode | 描画パラメータ | 半透明モードを指定します。 加算モードと、頂点アルファ値による半透明モードの2つから選べます。 ver2.0.0.5で、加算モードその2が増えました。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードのモードを設定できます。 -2を指定すると、スプライトの設定が出来ます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 hsidに-2を指定した場合は、 E3DCreateSpriteで取得した、 スプライトのidを渡してください。 partnoに-1を渡すと、 全てのパーツにモードをセットできます。 3. [IN] 数値または、変数 : blendmode 0を指定すると、 頂点アルファ値による半透明モードになります。 1を指定すると、 アッドモードになります。 2を指定すると、 頂点アルファを考慮したアッドモードになります。 |
ver1.0.0.1 ver2.0.0.5で拡張 |
E3DSetRenderState | 描画パラメータ | パーツごとに、RenderStateを設定できます。 描画の度に呼ぶ必要はありません。 一度呼べば、描画時に、自動的に、設定されます。 上級者向けの関数です。 詳しくは、DirectXのヘルプの SetRenderStateをご覧ください。 D3DRS_ALPHABLENDENABLE は、E3DRenderのwithalpha引数を元に、 自動的に呼び出すようにしているので、 このタイプは指定しても、反映されません。 また、オリジナルの頂点計算を行っているため、設定しても、効果のないものも、多くあります。 statetypeは、zip中の、 e3dhsp3.as で、D3DRSで始まる定数として宣言していますので、 このファイルの定数を使用してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードのステートを設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツにステートをセットできます。 3. [IN] 数値または、変数 : statetype 設定するタイプを指定してください。 e3dhsp_rs.as中の定数を使用してください。 4. [IN] 数値または、変数 : value 設定する値を指定してください。 |
ver1.0.0.1 |
E3DSetScale | モデル情報 | パーツ単位で、形状を拡大、縮小できます。 特殊効果用を想定していますので、 地面データには使用できません。 また、拡大縮小の結果は、 E3DChkConflictには反映されますが、 E3DChkConfBySphereには反映されません。 倍率は、形状データ読み込み時の大きさに対する比率です。 その時点で、表示されている大きさに対する比率ではないので、注意してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードのスケールを設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツにスケールをセットできます。 3. [IN] 数値または、変数 : scalex 4. [IN] 数値または、変数 : scaley 5. [IN] 数値または、変数 : scalez X,Y,Zのそれぞれの倍率を指定します。 それぞれ、 scalex、 scaleyt、 scalez 倍されます。 等倍は1.0。 実数。 6. [IN] 数値または、変数 : centerflag 拡大縮小する際の中心を指定します。 0を指定すると、 hsidで指定したモデル全体の中心を拡大の中心とします。 1を指定すると、 それぞれのパーツの中心を拡大の中心とします。 2を指定すると、 原点を拡大の中心とします。 |
ver1.0.0.1 |
E3DGetScreenPos | モデル情報 | 形状データの画面上での2Dの座標を取得する関数です。 パーツ単位、モデル単位、ビルボード単位で 使用できます。 頂点単位での2D座標を取得できます。 3Dキャラクターの位置に、2Dのスプライトを表示する、などの用途に使えます。 E3DChkInViewより後で、呼び出してください。 具体的な使用例は、zip中の、 e3dhsp_screenpos.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの2D位置を取得できます。 3. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 モデル全体の中心座標の2D座標を 取得できます。 4. [OUT] 変数 : scx 5. [OUT] 変数 : scy 指定したパーツの2Dスクリーン座標が代入されます。 整数。 ただし、以下の場合には、 scx = -1, scy = -1が代入されます。 1,パーツが表示用オブジェクトではない場合 2,パーツ全体が画面外にある場合 3,パーツのディスプレイスイッチがオフの場合 4,パーツが無効になっていた場合 (E3DSetValidFlagで0を指定した場合) 6. [IN] 数値または、変数 : vertno 取得したい頂点の番号を指定します。 この引数を省略した場合や、-1を指定した場合は、 パーツの中心の2D座標を取得します。 7. [IN] 数値または、変数 : calcmode 計算モードを指定します。 1を指定すると、 新しいキャラクターの位置や、カメラの位置で、 新たに計算し直します。 0を指定すると、 calcmode 1 で、すでに計算した結果を取得します。 0を指定した方が、処理が軽く、高速です。 |
ver1.0.0.1 |
E3DGetScreenPos2 | モデル情報 | 任意の3D座標から、スクリーン(2D)座標を取得する関数。 ラインの点の位置や、ボーンの位置に スプライトを表示したりできます。 具体的な使用例は、 teste3dhsp_autorun_getscreenpos2.as をご覧ください。 #表示オブジェクトの頂点や、 パーツの中心の2D座標を取得する場合は、 既にある、E3DGetScreenPosをご利用ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 変数または、数値 : x3d 3. [IN] 変数または、数値 : y3d 4. [IN] 変数または、数値 : z3d 3D座標を、(x3d, y3d, z3d)に指定してください。 実数。 5. [OUT] 変数 : x2d 6. [OUT] 変数 : y2d 7. [OUT] 変数 : validflag 変換後の2D座標が、(x2d, y2d)に代入されます。 整数型の変数。 2D座標が、スクリーンの大きさの内側にあるかどうかは、 ユーザーさんがチェックしてください。 指定した3D座標が、カメラより後ろにある場合や、 見えないくらい遠いところにある場合には、 validflag に 0 が代入されます。 validflagに0が代入されているときの、(x2d, y2d)座標は、 意味のない値が入っています。 |
ver1.0.0.1 |
E3DCreateQ | 算術 | クォータニオンを作成し、操作用のid を取得します。 クォータニオンの各操作には、 この関数で取得した qidを使用します。 クォータニオンを知らない方は、 とりあえず、 姿勢情報 (回転情報)を格納できる 便利なもの、 とくらいに、考えておいてください。 モーションポイントや、モデルなどに、 クォータニオンをセットすることにより、 任意の姿勢を持たせることが出来ます。 作成方法は、工夫してみましたが、 それほど、高速ではありません。 この関数は、メインループの外で、 あらかじめ呼んでおくことが、 望ましいです。 |
1. [OUT] 変数 : qid 新しいクォータニオンを作成し、 そのクォータニオンを、 一意に識別する番号を qid に代入します。 クォータニオン操作関数に、 この番号を渡して使用してください。 |
ver1.0.0.1 |
E3DDestroyQ | 算術 | クォータニオンを削除します。 この関数に渡したqidは、使用できなくなります。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DInitQ | 算術 | クォータニオンを初期化します。 姿勢情報が、初期化されます。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DSetQAxisAndDeg | 算術 | クォータニオンを、指定した軸に関して、指定した角度だけ回転した姿勢をセットします。 既に、qidにセットしてある姿勢情報は、 上書きされます(無視されます)。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : axisx 3. [IN] 数値または、変数 : axisy 4. [IN] 数値または、変数 : axisz 回転の軸のベクトルを、 (axisx, axisy, axisz)に指定します。 軸のベクトルは、内部で正規化されます。 実数。 5. [IN] 数値または、変数 : deg 指定した軸に関して、 deg度だけ回転した姿勢をセットします。 実数。 |
ver1.0.0.1 |
E3DGetQAxisAndDeg | 算術 | クォータニオンにセットされている姿勢情報を解析します。 回転軸と、回転角度が得られます。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [OUT] 変数 : axisxptr 3. [OUT] 変数 : axisyptr 4. [OUT] 変数 : axiszptr 回転の軸のベクトルを、 (axisxptr, axisyptr, axiszptr)に代入します。 実数型の変数。 5. [OUT] 変数 : degptr 回転角度を代入します。 実数型の変数。 |
ver1.0.0.1 |
E3DRotateQX | 算術 | クォータニオンの姿勢情報を、X軸に関して回転します。 既に、qidにセットしてある姿勢情報に対して、 さらに、X軸回転することになります。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : deg X軸に関して、deg度だけ回転します。 実数。 |
ver1.0.0.1 |
E3DRotateQY | 算術 | クォータニオンの姿勢情報を、Y軸に関して回転します。 既に、qidにセットしてある姿勢情報に対して、 さらに、Y軸回転することになります。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : deg Y軸に関して、deg度だけ回転します。 実数。 |
ver1.0.0.1 |
E3DRotateQZ | 算術 | クォータニオンの姿勢情報を、Z軸に関して回転します。 既に、qidにセットしてある姿勢情報に対して、 さらに、Z軸回転することになります。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : deg Z軸に関して、deg度だけ回転します。 実数。 |
ver1.0.0.1 |
E3DMultQ | 算術 | クォータニオンの掛け算をします。 例えば、 qid1にX軸に関して30度回転する姿勢が格納されていて、 qid2には、Y軸に関して20度回転する姿勢が格納されていたとします。 このとき、 E3DMultQ qid3, qid1, qid2 という命令を呼んだとします。 すると、 qid3には、 X軸に関して30度回転した後に、 さらにY軸に関して20度回転した姿勢情報が 格納されます。 気を付けなければいけないのは、 E3DMultQ qid3, qid1, qid2 と E3DMultQ qid3, qid2, qid1 では、qid3に格納される姿勢情報が異なる ということです。 2番目の引数に指定した回転の後に、 3番目の引数に指定した回転を適用するからです。 回転の順番によって、結果が異なるのは、 覚えておいてください。 後から処理したい方を、3番目の引数に いれれば、OKです。 |
1. [IN] 数値または、変数 : resqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidのクォータニオンに結果が代入されます。 2. [IN] 数値または、変数 : befqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 3. [IN] 数値または、変数 : aftqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 befqidの回転の後に、aftqidの回転をした結果を、 resqidで識別されるクォータニオンに代入します。 |
ver1.0.0.1 |
E3DNormalizeQ | 算術 | クォータニオンを正規化します。 様々なクォータニオンの操作を、 とてつもない回数繰り返していると、 計算誤差などで、 クォータニオンの情報がおかしくなることがあります。 例えば、E3DRotateQXをメインループで、 延々と繰り返す場合などに、 ひょっとしたら、不具合が出るかもしれません。 そんなときは、 ある程度の回数ごとに、 この関数を呼んでください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DCopyQ | 算術 | srcqidで識別されるクォータニオンの情報を、dstqidで識別されるクォータニオンにコピーします。 |
1. [IN] 数値または、変数 : dstqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数 : srcqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DGetBoneNoByName | モデル情報 | 指定した名前を持つボーンを識別するidを取得します。 該当するボーンが見つからなかった場合は、 bonenoに-1が代入されます。 ボーン以外の名前を指定した場合も、 bonenoに-1が代入されます。 複数のパーツやボーンに、 同じ名前があった場合、 一番最初に見つかった物のidだけしか 取得できません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 文字列または、文字列の変数 : bonename ボーンの名前を渡してください。 3. [OUT] 変数 : boneno ボーンを識別するID |
ver1.0.0.1 |
E3DGetNextMP | モーション | モーションポイントを識別するidを取得します。 モーションポイントとは、 RokDeBone2のモーションダイアログ中の、 下の方に白い長いウインドウがありますが、 その中に表示されている、 点のことだと思ってください。 モーションポイントは、 ユーザーさんがIKで設定した姿勢を 保持しています。 モーションポイントは、ボーンごとに作られています。 気を付けて欲しいのは、 RokDeBone2で、白いウインドウ中に 点が表示されていないフレーム番号には、 モーションポイントは存在しないということです。 モーションポイントが無いフレーム番号の姿勢は どうなっているかというと、 計算で、求めています。 モーションポイントは、フレーム番号の小さい順に、格納されています。 E3DGetNextMPは、prevmpidで指定した モーションポイントのフレーム番号を見て、 そのフレーム番号の次に大きいフレーム番号を持つモーションポイントのidを取得します。 prevmpidに-1を指定すると、 一番小さいフレーム番号を持つ、モーションポイントのidが取得できます。 prevmpidのモーションポイントが持つフレーム番号より、大きいフレーム番号を持つモーションポイントが存在しない場合は、 mpidに-1が代入されます。 つまり、取得したmpidを prevmpidに指定して、 再びE3DGetNextMPを呼び出す、 という作業を、 mpidに-1が代入されるまで、繰り返せば、 フレーム番号の小さい順に、 全てのモーションポイントのidが取得出来る ということになります。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : prevmpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 -1を指定すると、一番小さなフレーム番号を持つ モーションポイントのidがmpidに代入されます。 5. [OUT] 変数 : mpid mpidに、prevmpidの次に大きいフレーム番号を持つ モーションポイントのidが代入されます。 |
ver1.0.0.1 |
E3DGetMPInfo | モーション | mpidで識別されるモーションポイントの情報を取得します。 mpinfoで指定した配列に、 情報が代入されます。 情報は12(MPI_MAX)種類です mpinfoには、 dim mpinfo, MPI_MAX で作成した配列を指定してください。 MPI_で始まる定数は、 e3dhsp.asで、定義されています。 mpinfo.MPI_QUAは、クォータニオン情報 mpinfo.MPI_TRAXは、X方向の移動量の情報 mpinfo.MPI_TRAYは、Y方向の移動量の情報 mpinfo.MPI_TRAZは、Z方向の移動量の情報 mpinfo.MPI_FRAMENOは、フレーム番号の情報 mpinfo.MPI_DISPSWITCHは、 ディスプレイスイッチの情報 mpinfo.MPI_INTERPは、補間計算方法の情報 mpinfo.MPI_SCALEXは、X方向の拡大情報 mpinfo.MPI_SCALEYは、Y方向の拡大情報 mpinfo.MPI_SCALEZは、Z方向の拡大情報 mpinfo.MPI_USERINT1は、ユーザーデータの情報 mpinfo.MPI_SCALEDIVは、拡大率の係数情報 として、使用されます。 mpinfo.0には、 E3DCreateQで取得したqidを、 この関数の呼び出し前に、セットしておく必要があります。 mpinfo.MPI_QUAに格納されているqidで 識別されるクォータニオンに、 モーションポイントの姿勢情報が代入されます。 mpinfo.MPI_DISPSWITCHの ディスプレイスイッチ情報は、ビットごとの和になっています。 ディスプレイスイッチ番号ds がオンの場合は、 2のds乗の値が足されていることになります。 例えば、ディスプレイスイッチ3だけがオンの場合は、2の3乗の8という値が代入されています。 mpinfo.MPI_INTERPの 補間計算方法の情報は、 mpidで識別されるモーションポイントと、 その次に大きいフレーム番号を持つモーションポイントの間の、補間計算方法を示しています。 0の時は、球面線形補間 1の時は、スプライン補間 となります。 現バージョンでは、 スプライン補間は、大きな角度の補間時には 使用できません。 (望ましい結果が得られません) ですので、 急激に変化することがあるかもしれない モーションポイント間の補間計算には、 球面線形補間を使用することを、 おすすめします。 拡大率は、MPI_SCALEDIVで割った値が 適用されています。 例えば、X軸方向の拡大率は、 mpinfo.MPI_SCALEX / mpinfo.MPI_SCALEDIV です。 小数点以下をセットできるように、 MPI_SCALEDIVが用意されています。 具体的な使用例は、 e3dhsp_motionpoint.as をご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : mpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 5. [IN, OUT] 長さMPI_MAXの配列 : mpinfo モーションポイントの情報を格納する配列。 mpinfo.MPI_QUAだけは、呼び出し前に、 あらかじめ設定しておく必要があります。 mpinfo.MPI_QUAで識別されるクォータニオンに モーションポイントの姿勢情報が 代入されることになります。 |
ver1.0.0.1 |
E3DSetMPInfo | モーション | mpidで識別されるモーションポイントに情報をセットします。 mpinfo、mpinfoflagには、それぞれ dim mpinfo, MPI_MAX dim mpinfoflag, MPI_MAX で作成した配列を使用してください。 mpinfoにあらかじめセットされている情報を、 mpidで識別されるモーションポイントに、 設定します。 mpinfoの、どの成分に、 何の情報をセットすれば良いかは E3DGetMPInfoをご覧ください。 mpinfoflagは、部分的に情報をセットできるようにするために、使用します。 mpinfoflag.MPI_QUAが1の場合は、 mpinfo.MPI_QUAのクォータニオン情報を モーションポイントにセットします。 mpinfoflag.MPI_TRAXが1の場合は、 mpinfo.MPI_TRAXのX方向の移動量情報を モーションポイントにセットします。 以下同様に、 mpinfoflagMPI_QUA 〜mpinfoflag.MPI_SCALEDIV までに、セットしたい項目に1を、 セットしたくない項目に0を指定してください。 具体的な使用例は、zip中の、 e3dhsp_motionpoint.as に書いてありますので、 ご覧ください。 モーションポイントに情報をセットしただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : mpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 5. [IN] 長さMPI_MAXの配列 : mpinfo モーションポイントの情報を格納する配列。 6. [IN] 長さMPI_MAXの配列 : mpinfoflag mpinfoのどの成分を有効にするのかを、 mpinfoflagの各成分で指定します。 |
ver1.0.0.1 |
E3DIsExistMP | モーション | framenoで指定したフレーム番号に、モーションポイントがあるかどうかを調べます。 見つかった場合は、 mpidに、モーションポイントのidが代入され、 無かった場合は、 -1が代入されます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : frameno モーションポイントがあるかどうか、 調べたいフレーム番号を指定します。 5. [OUT] 変数 : mpid モーションポイントを識別するID framenoが示すフレーム番号に、 モーションポイントがあった場合は、 そのモーションポイントのidが代入されます。 無かった場合は、-1が代入されます。 |
ver1.0.0.1 |
E3DGetMotionFrameLength | モーション | motidで識別されるモーションのフレーム数を取得します。 気を付けて欲しいのは、 フレーム番号は、0から始まるので、 最大のフレーム番号は、 leng - 1 だということです。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [OUT] 変数 : leng モーションのフレーム数が代入されます。 |
ver1.0.0.1 |
E3DSetMotionFrameLength | モーション | モーションのフレーム数をframelengに変更します。 framelengが、変更前のフレーム数より小さかった場合は、 frameleng - 1より大きなフレーム番号を持つ モーションポイントは、削除されます。 あたり判定情報や、視野内判定情報が 削除されます。 再構築したい場合は、 initflagに1を指定してください。 しなくてもいい、もしくは、後でする場合は、 0を指定してください。 あたり判定情報と、視野内判定情報は、 E3DFillUpMotion呼び出し時の initflagに1を指定することでも、 再構築できます。 再構築の計算は、時間がかかります。 ポーズの情報も、削除されます。 再構築する場合には、 E3DFillUpMotionを呼んでください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : frameleng モーションのフレーム数を指定します。 4. [IN] 数値または、変数 : initflag あたり判定情報と、視野内判定情報を 再構築する場合は1を、 しない場合は0を指定してください。 |
ver1.0.0.1 |
E3DAddMP | モーション | mpinfoで指定した情報を持つモーションポイントを、新たに作成し、作成したモーションポイントを識別するidを取得します。 mpinfoには、 dim mpinfo, MPI_MAX で作成した配列を使用してください。 mpinfoの、どの成分に、 何の情報をセットすれば良いかは E3DGetMPInfoをご覧ください。 mpinfo.MPI_FRAMENOで指定したフレーム番号に、 既に、モーションポイントが存在する場合は、エラーになりますので、 注意してください。 (呼び出し前にE3DIsExistMPで、 チェックすると確実です。) モーションポイントに情報をセットしただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 要素数MPI_MAXの配列 : mpinfo モーションポイントの情報を格納する配列。 5. [OUT] 変数 : mpid 新たに作成したモーションポイントを識別するidが 代入されます。 |
ver1.0.0.1 |
E3DDeleteMP | モーション | mpidで識別されるモーションポイントを削除します。 この関数に渡したmpidは、 以後、使えなくなります。 モーションポイントの情報を更新しただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数 : mpid モーションポイントを識別するID E3DGetNextMPで取得したidを渡してください。 |
ver1.0.0.1 |
E3DFillUpMotion | モーション | モーションを指定したフレーム番号分だけ、補間計算します。 この計算の結果、 モデルのポーズに、モーションポイントの情報が、反映されるようになります。 bonenoで指定したボーンと、 その全ての子供ボーンの計算が行われます。 そのため、 変更したボーンの内で、 一番、親のボーンの番号で、 1回だけこの関数を呼び出せば、 良いことになります。 initflagに1を指定すると、 E3DChkConfBySphere と E3DChkInView で使用する情報を更新します。 これは、かなり時間のかかる計算です。 ですので、操作しているモデルが ずっと視野内にいることが保証されている場合で、かつ、 E3DChkConfBySphereではなく、 E3DChkConflictを使う場合は、 initflagに0を指定することをおすすめします。 リアルタイム処理する場合は、 このフラグの値が、パフォーマンスに かなり、影響します。 具体的な使用例は、zip中の、 e3dhsp_fillupmotion.as に書きましたので、 ご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 bonenoで指定したボーンと その子供ボーン全てのポーズを計算します。 boneno に -1を指定した場合は、 全てのボーンの計算が行われます。 ですが、 bonenoを指定した方が、 計算量が少なくなります。 4. [IN] 数値または、変数 : startframe 5. [IN] 数値または、変数 : endframe フレーム番号が、 startframeから、endframeまでの間の モデルのポーズを計算します。 startframeとendframeには、 モーションポイントが存在しなくても、 計算可能です。 endframeに-1を指定した場合は、 startrframeから、最後のフレームまで 計算されます。 6. [IN] 数値または、変数 : initflag E3DChkConfBySphere と E3DChkInView で使用する情報を更新するかどうかの指定します。 0の時は更新しません。 1の時は更新します。 |
ver1.0.0.1 |
E3DCopyMotionFrame | モーション | srcmotidで識別されるモーションの、フレーム番号srcframenoの、全てのモーションポイントの情報を、dstmotidで識別されるモーションの、フレーム番号dstframenoのモーションポイントへ、コピーします。 dstframenoに、モーションポイントが無い場合は、作成されます。 srcframenoにモーションポイントが無い場合は、 計算で求めて、dstframeにコピーします。 この場合、計算時間が、余分にかかります。 モーションポイントに情報をセットしただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : srcmotid コピー元のモーションを識別するID E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数 : srcframeno コピー元のフレーム番号 4. [IN] 数値または、変数 : dstmotid コピー先のモーションを識別するID E3DAddMotionで取得したmkを指定してください。 5. [IN] 数値または、変数 : dstframeno コピー先のフレーム番号 |
ver1.0.0.1 |
E3DGetDirQ2 | モデル向き | E3DGetDirQをqidで操作できるようにしたものです。 qidで指定したクォータニオンに、 モデルデータの姿勢情報が、 格納されます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN, (OUT)] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DSetDirQ2 | モデル向き | E3DSetDirQをqidで操作できるようにしたものです。 qidで識別されるクォータニオンの 姿勢情報を、 モデルデータにセットします。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 |
ver1.0.0.1 |
E3DLookAtQ | 算術 | 指定した向きを、徐々に向くための姿勢情報を、クォータニオンにセットします。 この関数は、この関数の呼び出し前の クォータニオンの姿勢情報も、計算に使用します。 ですので、 qidには、一回前にこの関数を呼び出したときと、同じqidが渡されるものと仮定しています。 qidを他のボーンの姿勢情報などの計算の際に、使い回ししている場合は、 計算したいボーンの姿勢情報を、 呼び出し前に、 E3DCopyQなどで、コピーしておいてください。 (basevecx, basevecy, basevecz)のベクトルを (vecx, vecy, vecz)の方向に向ける計算をします。 キャラクター全体の姿勢の制御をする場合は、 basevecには、初期状態の向き、 つまり、(0, 0, -1)を与えれば、よいことになります。 ボーンの姿勢を制御する場合には、 初期状態のボーンの向き つまり、ボーンの座標から、親ボーンの座標を 引いたものを、basevecに与えれば、 よいことになります。 (vecx, vecy, vecz)には、 向きたい位置座標から、 自分の位置座標を引いたものを、 与えてください。 upflagの値によって、4つのモードがあります。 upflag == 0 のときは、 上向き方向が、常にY軸上方を向くように 制御されます。 upflag == 1 のときは、 上向き方向が、常にY軸下方を向くように 制御されます。 upflag == 2 のときは、 上向き方向が、連続した向きをとるように、 制御されます。 その結果、宙返りがかのうとなります。 upflag == 3 のときは、 上向き方向を、特に制御しません。 上向き方向は、連続した向きをとりますが、 その方向は、拘束されません。 飛行機の制御などに、upflag 2を使用し、 人型キャラなどの制御に、upflag 0 を使用する ことを、おすすめします。 upflag == 0とupflag== 1のときには、 真上と真下を向かないようにしてください。 upflag == 2とupflag==3のときは、 真上と真下を向いても、大丈夫です。 divnum引数に、分割数を指定します。 現在の位置と、目標地点との間の間隔を 1 / divnum ずつ、内分して、近づきます。 具体的な使用例は、 e3dhsp_lookatq.as に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 指定した方向を向くための情報が、 格納されます。 2. [IN] 数値または、変数 : vecx 3. [IN] 数値または、変数 : vecy 4. [IN] 数値または、変数 : vecz (vecx, vecy, vecz)に、 向きたい向きのベクトルを指定してください。 位置ではなくて、向きを指定してください。 実数。 5. [IN] 数値または、変数 : basevecx 6. [IN] 数値または、変数 : basevecy 7. [IN] 数値または、変数 : basevecz (basevecx, basevecy, basevecz)に、 初期状態の向きを指定してください。 実数。 8. [IN] 数値または、変数 : upflag 上方向の制御モードを指定してください。 9. [IN] 数値または、変数 : divnum 内分する割合を指定してください。 大きな値をいれるほど、 細かく動きます。 |
ver1.0.0.1 |
E3DMultQVec | 算術 | (befvecx, befvecy, befvecz)というベクトルに対して、qidで識別されるクォータニオンによる回転をした後のベクトルを、(aftvecx,
aftvecy, aftvecz)に代入します。 例えば、初期状態で、-Z方向を向いている モデルの場合、 qidに、E3DGetDirQ2呼び出しに使用した qidを渡し、 basevecに、(0, 0, -1)を渡せば、 aftvecに、現在、キャラクターが向いている向きが代入されます。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの 回転変換をします。 2. [IN] 数値または、変数 : befvecx 3. [IN] 数値または、変数 : befvecy 4. [IN] 数値または、変数 : befvecz (befvecx, befvecy, befvecz)に、 回転前のベクトルを指定してください。 実数。 5. [OUT] 変数 : aftvecx 6. [OUT] 変数 : aftvecy 7. [OUT] 変数 : aftvecz (aftvecx, aftvecy, aftvecz)に、 クォータニオンでの回転後のベクトルが 代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DTwistQ | 算術 | クォータニオンに、ねじりを加えます。 basevecには、E3DLookAtQで説明したのと 同じ、初期状態の向きを指定してください。 ねじりの角度は、初期状態からの角度ではなく、現在の姿勢に、追加したい分だけの、 ねじりの角度を、指定してください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 指定した方向を向くための情報が、 格納されます。 2. [IN] 数値または、変数 : twistdeg twistdeg 度だけ、ねじりを加えます。 実数。 3. [IN] 数値または、変数 : basevecx 4. [IN] 数値または、変数 : basevecy 5. [IN] 数値または、変数 : basevecz (basevecx, basevecy, basevecz)に、 初期状態の向きを指定してください。 E3DLookAtQで指定したのと同じbasevecを指定してください。 実数。 |
ver1.0.0.1 |
E3DInitTwistQ | 算術 | E3DTwistQで与えた、ねじれを、初期化します。 basevecには、E3DLookAtQで説明したのと 同じ、初期状態の向きを指定してください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの ねじれを初期化します。 2. [IN] 数値または、変数 : basevecx 3. [IN] 数値または、変数 : basevecy 4. [IN] 数値または、変数 : basevecz (basevecx, basevecy, basevecz)に、 初期状態の向きを指定してください。 E3DLookAtQで指定したのと同じbasevecを指定してください。 実数。 |
ver1.0.0.1 |
E3DGetTwistQ | 算術 | E3DTwistQで与えた、ねじれの角度の合計を取得します。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの ねじれを取得します。 2. [OUT] 変数 : twist ねじれ角度の合計の値を、 代入します。 実数型の変数。 |
ver1.0.0.1 |
E3DRotateQLocalX | 算術 | クォータニオンを、ローカルなX軸に関して、回転します。 現在の姿勢に対して、更に、回転します。 E3DRotateQXと違うのは、 姿勢変換を行う前のX軸に関して、 回転できる点です。 使用例は、e3dhsp_motionpoint.asに書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] 数値または、変数 : deg deg 度だけ、回転を加えます。 実数。 |
ver1.0.0.1 |
E3DRotateQLocalY | 算術 | クォータニオンを、ローカルなY軸に関して、回転します。 現在の姿勢に対して、更に、回転します。 E3DRotateQYと違うのは、 姿勢変換を行う前のY軸に関して、 回転できる点です。 使用例は、e3dhsp_motionpoint.asに書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] 数値または、変数 : deg deg 度だけ、回転を加えます。 |
ver1.0.0.1 |
E3DRotateQLocalZ | 算術 | クォータニオンを、ローカルなZ軸に関して、回転します。 現在の姿勢に対して、更に、回転します。 E3DRotateQZと違うのは、 姿勢変換を行う前のZ軸に関して、 回転できる点です。 使用例は、e3dhsp_motionpoint.asに書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : qid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] 数値または、変数 : deg deg 度だけ、回転を加えます。 |
ver1.0.0.1 |
E3DGetBonePos | モデル情報 | ボーンの位置情報を取得します。 poskind == 0のときは、ローカル座標 poskind == 1のときは、グローバル座標 が取得できます。 partnoには、E3DGetBoneNoByName で取得した番号を指定してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : boneno ボーンを識別するID E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 3. [IN] 数値または、変数 : poskind ローカル座標と、グローバル座標の どちらを取得するかを指定します。 4. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmkを指定してください。 5. [IN] 数値または、変数 : frameno モーションのフレーム番号を指定してください。 E3DSetNewPose呼び出し直後の、 stat変数に、現在のフレーム番号が代入されるので、 参考にしてください。 6. [OUT] 変数 : posx 7. [OUT] 変数 : posy 8. [OUT] 変数 : posz (posx, posy, posz)に、 ボーンの座標が代入されます。 実数型の変数。 9. [IN] 数値または、変数 : scaleflag scaleflagに1をセットすると、 E3DSetScaleの結果を反映したposを計算します。 0がセットされた場合には、 E3DSetScaleの結果が反映されません。 |
ver1.0.0.1 |
E3DCreateLine | ライン | 線を作成して、lineidを取得します。 lineidは、線オブジェクトを一意に識別するための番号です。 E3DCreateLine、E3DDestroyLine E3DSetLineColor、E3DAddPoint2Line E3DDeletePointOfLine、E3DSetPointPosOfLine E3DGetPointPosOfLine E3DGetNextPointOfLine E3DGetPrevPointOfLine に渡すlineidは、この関数で取得したlineidを 使用してください。 pointposには、 ddim pointpos, pointnum, 3 で確保したデータを渡してください。 dimではなくて、ddimで確保してください。 pointnumには、点の数を入れてください。 点の数の最大値は65535です。 pointnumが2より小さい場合は、エラーになります。 pointpos.点の番号.0 にX座標、 pointpos.点の番号.1 にY座標、 pointpos.点の番号.2 にZ座標 を入れて、初期化しておいてください。 作成した線は、 E3DRenderで、描画できます。 hsidの代わりに、lineidを指定してください。 LINE関係の関数の使用例は、 e3dhsp_autorun.as に書きましたので、ご覧ください。 |
1. [IN] 変数 : pointpos 線を構成する点の座標を指定してください。 メモリの確保の仕方、値のセットの仕方は、 左の記述をご覧ください。 必ず、ddimでメモリを作成してください。 実数型の変数。 2. [IN] 数値または、変数 : pointnum 初期化する点の数を指定してください。 pointposのデータを確保する際に使った 点の数を渡してください。 3. [IN] 数値または、変数 : maxpointnum Lineは、E3DAddPoint2Line命令で、 点の数を増やすことが可能です。 最大何個まで、点の数を増やせるかを 指定してください。 (点の数の合計です。) ビデオメモリは、pointnumではなくて、 maxpointnumでアロケートされます。 4. [IN] 数値または、変数 : linekind 線の種類を指定します。 LINELISTの場合は2を、 LINESTRIPの場合は3を指定してください。 LINELIST, LISTSTRIPについての説明は、 線の種類の説明をご覧ください。 5. [OUT] 変数 : lineid 作成した線を識別する番号が、代入されます。 |
ver1.0.0.1 |
E3DDestroyLine | ライン | E3DCreateLine で作成した線を削除します。 削除したlineidは、 以降、どの命令にも使わないでください。 |
1. [IN] 数値または、変数 : lineid 削除する線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 |
ver1.0.0.1 |
E3DSetLineColor | ライン | 線の色を設定します。 | 1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : A 透明度を指定します。 0から255の値を渡してください。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 色の成分(R,G,B)を指定してください。 それぞれ、0から255の値を渡してください。 |
ver1.0.0.1 |
E3DAddPoint2Line | ライン | 線に点を追加し、追加した点を識別するpidを取得します。 点の数の合計が、 E3DCreateLineに渡したmaxpointnum より大きくなると、エラーになります。 取得したpidをE3DSetPointPosOfLine関数に 渡して、 付け足した点の座標をセットしてください。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : prevpid 線の中のどこに、新しい点を追加するかを指定します。 prevpidで指定した点の次の点として、 新しい点を追加します。 prevpidに-2を指定した場合には、線の先頭に、 prevpidに-1を指定した場合には、線の最後に 新しい点を追加します。 3. [OUT] 変数 : pid 新しく追加した点を識別する番号が、代入されます。 pidは、線ごとに固有な値です。 |
ver1.0.0.1 |
E3DDeletePointOfLine | ライン | 線の中の点を削除します。 | 1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : pid 削除する点を識別する番号を指定してください。 |
ver1.0.0.1 |
E3DSetPointPosOfLine | ライン | 線の中の点の座標をセットします。 座標posは、 ddim pos, 3 で確保したメモリを渡してください。 必ず、dimではなくて、ddimでメモリを作成してください。 pos.0には、X座標を、 pos.1には、Y座標を、 pos.2には、Z座標を指定してください。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : pid 点を識別する番号を渡します。 3. [IN] 変数 : pos 点の座標を渡してください。 posの確保の仕方、値のセットの仕方は、 左の記述をご覧ください。 ddimで作成した実数型配列。 |
ver1.0.0.1 |
E3DGetPointPosOfLine | ライン | 線の中の点の座標を取得します。 座標が代入されるposは、 ddim pos, 3 で確保したメモリを渡してください。 必ず、dimではなくて、ddimでメモリを作成してください。 pos.0には、X座標が、 pos.1には、Y座標が、 pos.2には、Z座標が代入されます。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : pid 点を識別する番号を渡します。 3. [OUT] 変数 : pos 点の座標が代入される配列を渡してください。 posの確保の仕方、値のセットのされ方は、 左の記述をご覧ください。 ddimで作成した実数型配列。 |
ver1.0.0.1 |
E3DGetNextPointOfLine | ライン | previdで指定した点の、一つ後の点のIDを取得します。 線は、点を、双方向リストで、格納しています。 一つ後の点が存在しない場合は、 nextid には、負の値が代入されます。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : previd 点を識別する番号 3. [OUT] 変数 : nextid previdの点の、一つ後の点のIDが代入されます。 previd に-1が指定されている場合は、 nextidには、先頭の点のIDが代入されます |
ver1.0.0.1 |
E3DGetPrevPointOfLine | ライン | pidで指定した点の、一つ前の点のIDを取得します。 線は、点を、双方向リストで、格納しています。 一つ前の点が存在しない場合は、 previd には、負の値が代入されます。 |
1. [IN] 数値または、変数 : lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数 : pid 点を識別するID 3. [OUT] 変数 : previd pidの点の、一つ後の点のIDが代入されます。 |
ver1.0.0.1 |
E3DWriteDisplay2BMP | 出力 | バックバッファの内容を、BMPファイルに保存します。 filenameには、拡張子を除いた名前を 指定してください。 E3DInitのmultisamplenumに0以外を指定した場合は、この命令は使えません。 (エラーになります。) |
1. [IN] 文字列または、文字列の変数 : filename 出力するBMP のパス文字列。 拡張子を除いたパスを指定してください。 この関数で、自動的に、”.bmp”が付加されます。 既に同じファイル名が存在している場合は、 そのファイルは、上書きされるので注意してください。 |
ver1.0.0.1 |
E3DCreateAVIFile | 出力 | AVIファイルを初期化して、aviidを取得します。 aviidは、AVIファイルを識別するための番号です。 この命令で作成したAVIファイルに対して、 E3DWriteData2AVIFile命令で、 バックバッファの内容を書き込み、 E3DCompleteAVIFile命令で、 終了処理をします。 E3DWriteData2AVIFile命令、 E3DCompleteAVIFile命令には、 E3DCreateAVIFile命令で取得したaviidを 渡してください。 E3DInitのmultisamplenumに0以外を指定した場合は、この命令は使えません。 (エラーになります。) AVI関係の命令の具体的な使用例は、 e3dhsp_savedisplay.as に書きましたので、ご覧ください。 |
1. [IN] 文字列または、文字列の変数 : filename 出力するBMP のパス文字列。 拡張子を除いたパスを指定してください。 この関数で、自動的に、”.avi”が付加されます。 既に同じファイル名が存在している場合は、 そのファイルは、上書きされるので注意してください。 2. [IN] 数値または、変数 : datatype 作成するデータの種類を指定します。 現バージョンでは、映像のみしか扱わないため、 常に1を指定してください。 3. [IN] 数値または、変数 : compkind 圧縮の種類を指定します。 0を指定した場合は、 圧縮なし 1を指定した場合は、 cinepak Codec by Radiusによる圧縮 2を指定した場合には、 Microsoft Video 1による圧縮 をします。 4. [IN] 数値または、変数 : framerate AVIファイルのフレームレートを指定してください。 通常は、スクリプトプログラムのFPSを指定します。 60FPSで表示している場合は、60と指定します。 5. [IN] 数値または、変数 : frameleng AVIファイルのフレーム数の合計数。 frameleng回だけ、E3DWriteData2AVIFileで、 データをファイルに書き込むことが出来ます。 6. [OUT] 変数 : aviid 作成したAVIファイルを識別するための 番号が代入されます。 |
ver1.0.0.1 |
E3DWriteData2AVIFile | 出力 | バックバッファの内容を、AVIファイルに書き込みます。 E3DCreateAVIFileで指定したframeleng回だけ この命令を呼ぶことが出来ます。 frameleng回を超えた呼び出しは、 エラーとなり、無視されます。 |
1. [IN] 数値または、変数 : aviid AVIファイルを識別するための番号を指定してください。 E3DCreateAVIFileで取得した番号を使用してください。 2. [IN] 数値または、変数 : datatype 作成するデータの種類を指定します。 現バージョンでは、映像のみしか扱わないため、 常に1を指定してください。 |
ver1.0.0.1 |
E3DCompleteAVIFile | 出力 | AVIファイルの終了処理をします。 必要な回数、E3DWriteData2AVIFile命令を 呼び出した後に、この命令を呼び出してください。 |
1. [IN] 数値または、変数 : aviid AVIファイルを識別するための番号を指定してください。 E3DCreateAVIFileで取得した番号を使用してください。 2. [IN] 数値または、変数 : datatype 作成するデータの種類を指定します。 現バージョンでは、映像のみしか扱わないため、 常に1を指定してください。 |
ver1.0.0.1 |
E3DCameraLookAt | カメラ | カメラを向きたい方向に、徐々に向けます。 (vecx, vecy, vecz)には、注視点ではなくて、 向きたい向きのベクトルを指定してください。 例えば、注視点(tx, ty, tz)を向きたい場合は、 E3DGetCameraPos camx, camy, camz として、カメラの位置を求め、 引き算するだけでOKです。 vecx = tx - camx vecy = ty - camy vecz = tz - camz のようにして、計算し、指定してください。 upflagは、E3DLookAtQでの用法と同じです。 upflag == 0 のときは、 上向き方向が、常にY軸上方を向くように 制御されます。 upflag == 1 のときは、 上向き方向が、常にY軸下方を向くように 制御されます。 upflag == 2 のときは、 上向き方向が、連続した向きをとるように、 制御されます。 その結果、宙返りがかのうとなります。 upflag == 3 のときは、 上向き方向を、特に制御しません。 上向き方向は、連続した向きをとりますが、 その方向は、拘束されません。 divnum引数に、分割数を指定します。 現在の位置と、目標地点との間の間隔を 1 / divnum ずつ、内分して、近づきます。 具体的な使用例は、 e3dhsp_CameraOnNaviline.as に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : vecx 2. [IN] 数値または、変数 : vecy 3. [IN] 数値または、変数 : vecz 向きたいベクトルを、指定してください。 ベクトルの計算方法は、左記をご覧ください。 実数。 4. [IN] 数値または、変数 : upflag 上向き制御方法のモードを指定してください。 詳しくは、左記をご覧ください。 5. [IN] 数値または、変数 : divnum 分割数を指定してください。 |
ver1.0.0.1 |
E3DCameraOnNaviLine | カメラ | カメラをナビラインに沿って動かします。 mode引数に0を指定すると、 カメラの位置だけを制御します。 mode引数に1を指定すると、 位置に加え、向きも制御します。 ループ移動や、反対方向への移動も サポートしています。 ナビラインの作成には、 GViewer.exeを使うと便利です。 (おちゃっこLABでダウンロード可能です。) ナビラインは、地面の高さに作成することが、 普通なので、ナビラインからカメラまでの オフセット値を指定できるようにしました。 例えば、地面から1000だけ上方を、 カメラを動かしたいときは、 地面の高さにナビラインを作成し、 この関数のオフセット引数に offsetx = 0 : offsety = 1000 : offsetz = 0 の値を指定すればOKです。 具体的な使用例は、 e3dhsp_CameraOnNaviline.as に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : nlid ナビラインを識別するID 2. [IN] 数値または、変数 : mode 位置だけを制御する場合は0を、 位置と向きを制御する場合は1を指定してください。 3. [IN] 数値または、変数 : roundflag ナビラインの最後のナビポイントに移動した後、 ナビラインの最初のナビポイントの位置を 目指すかどうかを示します。 1を指定すると、円形のナビラインの場合は、 ずっと、ぐるぐる回ることになります。 4. [IN] 数値または、変数 : reverseflag 1を指定すると、 ナビラインのポイントを逆順にたどるようになります。 5. [IN] 数値または、変数 : offsetx 6. [IN] 数値または、変数 : offsety 7. [IN] 数値または、変数 : offsetz ナビラインから、カメラ位置までのオフセット値を 指定します。 詳しくは、左記をご覧ください。 実数。 8. [IN] 数値または、変数 : posstep カメラを一度にどれくらいの距離を移動させるかを 指定します。 ただし、ナビポイント付近では、 posstepより小さな距離しか移動させないことがあります。 実数。 9. [IN] 数値または、変数 : dirdivnum 向きたい向きまで、徐々にカメラを向けるための 引数です。 目標までの角度を1/dirdivnumずつ内分して、 徐々に向きを制御します。 10. [IN] 数値または、変数 : upflag E3DCameraLookAt関数のupflag引数と同じ意味です。 詳しくは、E3DCameraLookAtの説明部分を お読みください。 11. [IN] [OUT] 変数 : targetpointid 現在目指しているナビポイントのIDを入れます。 移動後は、次に目指すべきナビポイントのIDが 代入されます。 ですので、一番最初の呼び出し時のみ、 自分でtargetpoinidを指定すれば、 あとは、同じ変数を渡すだけで、 自動的に、目指すべきポイントのIDが 代入されていくことになります。 targetpointidに、 存在しないナビポイントのIDを入れた場合は、 (例えば-1など) 自動的に、目指すべきナビポイントを決定します。 |
ver1.0.0.1 |
E3DCameraDirUp | カメラ | カメラの現在向いている方向を、徐々に、上の方向に向けます。 現バージョンでは、 宙返りはサポートしていません。 具体的な使用例は、 e3dhsp_CameraOnNaviline.as に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : deg 角度。 実数。 2. [IN] 数値または、変数 : divnum deg度の角度を、1/divnumずつ内分して、 カメラを、上方向に向けます。 |
ver1.0.0.1 |
E3DCameraDirDown | カメラ | カメラの現在向いている方向を、徐々に、下の方向に向けます。 現バージョンでは、 宙返りはサポートしていません。 具体的な使用例は、 e3dhsp_CameraOnNaviline.as に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : deg 角度。 実数。 2. [IN] 数値または、変数 : divnum deg度の角度を、1/divnumずつ内分して、 カメラを、下方向に向けます。 |
ver1.0.0.1 |
E3DCameraDirRight | カメラ | カメラの現在向いている方向を、徐々に、右の方向に向けます。 具体的な使用例は、 e3dhsp_CameraOnNaviline.as に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : deg 角度。 実数。 2. [IN] 数値または、変数 : divnum deg度の角度を、1/divnumずつ内分して、 カメラを、右方向に向けます。 |
ver1.0.0.1 |
E3DCameraDirLeft | カメラ | カメラの現在向いている方向を、徐々に、左の方向に向けます。 具体的な使用例は、 e3dhsp_CameraOnNaviline.as に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 |
1. [IN] 数値または、変数 : deg 角度。 実数。 2. [IN] 数値または、変数 : divnum deg度の角度を、1/divnumずつ内分して、 カメラを、左方向に向けます。 |
ver1.0.0.1 |
E3DCreateFont | テキスト | フォントを作成し、フォントを識別するIDを取得します。 具体的な使用例は、 e3dhsp_font.as に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : height フォントの文字セルまたは文字の高さを論理単位で指定します。 文字の高さとは、 文字セルの高さから内部レディング(アクセント記号などのためのスペース)の 高さを引いたものです。 要求されたサイズを超えない最大のフォントを探して処理されます。 2. [IN] 数値または、変数 : width フォントの平均文字幅を論理単位で指定します。 0 を指定すると、条件に最も近い値が選択されます。 条件に最も近い値は、利用可能な各フォントの現在のデバイスでの 縦横比とデジタル化された縦横比の差の絶対値を比較することにより 決定されます。 3. [IN] 数値または、変数 : weight フォントの太さを表す 0 から 1000 までの範囲内の値を指定します。 たとえば、400 を指定すると標準の太さになり、 700 を指定すると太字になります。 0 を指定すると、既定の太さが選択されます。 4. [IN] 数値または、変数 : bItalic 斜体にするかどうかを指定します。 1 を指定すると、斜体になります。 5. [IN] 数値または、変数 : bUnderline 下線を付けるかどうかを指定します。 1 を指定すると、下線付きになります。 6. [IN] 数値または、変数 : bStrikeout 取り消し線を付けるかどうかを指定します。 1 を指定すると、取り消し線が付きます。 7. [IN] 文字列または、文字列の変数 : fontname フォントの名前が入った 文字列を指定します。 文字列の長さは、 31 文字以下にしなければなりません。 8. [OUT] 変数 : fontid 作成したフォントを識別するための 番号が代入されます。 |
ver1.0.0.1 |
E3DDrawTextByFontID | テキスト | E3DCreateFontで作成したフォントにより、指定した位置、色で、テキストを表示します。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : fontid E3DCreateFontで作成した、フォントの番号を指定します。 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : posy テキストをする位置を (x, y)=(posx, posy)で指定します。 5. [IN] 文字列または、文字列の変数 : textstr 表示したい文字列を指定します。 6. [IN] 数値または、変数 : a 7. [IN] 数値または、変数 : r 8. [IN] 数値または、変数 : g 9. [IN] 数値または、変数 : b 文字の透明度と色を(透明度, 赤, 緑, 青)=(a, r, g, b)で 指定します。 |
ver1.0.0.1 |
E3DDrawTextByFontIDWithCnt | テキスト | カウンター制御で、一定間隔で、徐々に文字列を表示します。 eachcnt引数に、一文字当たりの待機期間を 指定します。 この値と、curcntに指定したカウンターの値を 比較して、文字を表示します。 curcntには、通常、この命令を呼び出すたびに、 1ずつ増えるカウンターの値を指定します。 例えば、eachcntに10を指定した場合には、 一文字当たり10カウントだけ待機するので、 1文字目は、curcntが10になるまで表示されません。 2文字目は、curcntが20になるまで表示されません。 と、このように、curcntの値が、増えるに従って、 徐々に、表示文字長が増えていきます。 現バージョンでは、半角カタカナには、 対応していません。 具体的な使用例は、 e3dhsp_fontWithCnt.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : fontid E3DCreateFontで作成した、フォントの番号を指定します。 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : posy テキストをする位置を (x, y)=(posx, posy)で指定します。 5. [IN] 文字列または、文字列の変数 : textstr 表示したい文字列を指定します。 6. [IN] 数値または、変数 : a 7. [IN] 数値または、変数 : r 8. [IN] 数値または、変数 : g 9. [IN] 数値または、変数 : b 文字の透明度と色を(透明度, 赤, 緑, 青)=(a, r, g, b)で 指定します。 10. [IN] 数値または、変数 : eachcnt 一文字当たり、どれくらい待ってから表示するかを指定します。 11. [IN] 数値または、変数 : curcnt 現在のカウンターを指定します。 |
ver1.0.0.1 |
E3DDrawTextByFontIDWithCnt2 | テキスト | カウンター制御で、文字ごとに表示タイミングを指定して、文字列を表示します。 cntarray引数に、 文字ごとの表示タイミングを指定した配列を 指定してください。 cntarrayの長さは、 E3DGetCharacterNum関数で、 textstrの文字数を取得して、決定してください。 HSPでは、文字列中に、'\n'が見つかった場合には、自動的に、"\r\n"に変換されるようです。 つまり、改行マーク1個に付き、1文字増えることになりますので、ご注意ください。 cntarray中の表示タイミングと、 curcntに指定したカウンターの値を比べて、 文字を表示するかどうかを決定します。 cntarray.0に10を、 cntarray.1に20を指定した場合には、 curcntが10になったときに1文字目が表示され、 curcntが20になったときに2文字目が表示されます。 curcnt.1にcurcnt.0より小さな値を入れることも可能です。 その場合は、2文字目は1文字目よりも後で、 表示されることになります。 \nを文字列中に含む場合は、 自動的に挿入される\rの分の表示タイミングも 指定しないといけませんので、ご注意ください。 現バージョンでは、半角カタカナには、 対応していません。 具体的な使用例は、 e3dhsp_fontWithCnt.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : fontid E3DCreateFontで作成した、フォントの番号を指定します。 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : posy テキストをする位置を (x, y)=(posx, posy)で指定します。 5. [IN] 文字列または、文字列の変数 : textstr 表示したい文字列を指定します。 6. [IN] 数値または、変数 : a 7. [IN] 数値または、変数 : r 8. [IN] 数値または、変数 : g 9. [IN] 数値または、変数 : b 文字の透明度と色を(透明度, 赤, 緑, 青)=(a, r, g, b)で 指定します。 10. [IN] 配列の変数 : cntarray 文字数分の要素数を持つ配列変数を指定します。 それぞれの要素には、文字の表示タイミングを指定します。 11. [IN] 数値または、変数 : arrayleng cntarray中の要素数を指定します。 12. [IN] 数値または、変数 : curcnt 現在のカウンターを指定します。 |
ver1.0.0.1 |
E3DGetCharacterNum | テキスト | 1バイト文字、2バイト文字を判別して、textstr中の文字数を取得します。 HSPでは、文字列中に、'\n'が見つかった場合には、自動的に、"\r\n"に変換されるようです。 つまり、改行マーク1個に付き、1文字増えることになりますので、ご注意ください。 現バージョンでは、半角カタカナには、 対応していません。 |
1. [IN] 文字列または、文字列の変数 : textstr 調べたい文字列を指定します。 2. [OUT] 変数 : charanum 文字の数が代入されます。 |
ver1.0.0.1 |
E3DDestroyFont | テキスト | E3DCreateFontで作成したフォントを、 削除します。 |
1. [IN] 数値または、変数 : fontid E3DCreateFontで作成した、フォントの番号を指定します。 |
ver1.0.0.1 |
E3DSlerpQ | 算術 | クォータニオンを、球面線形補間します。 startqid, endqid, resqid には、 E3DCreateQ で取得した、IDを渡してください。 resqidで識別されるクォータニオンに、 startqid, endqidの間の姿勢を、 t の比率に基づいて補間計算し、 セットします。 t の値が、0.0 から1.0の間になるように、指定してください。 t が0.0のときは、 startqidと同じ姿勢がセットされます。 t が1.0のときは、 endqidと同じ姿勢がセットされます。 具体的な使い方は、 e3dhsp_Spline.as をご覧ください。 |
1. [IN] 数値または、変数 : startqid 2. [IN] 数値または、変数 : endqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 startqidとendqidのクォータニオンの間の姿勢を、 補間計算して、resqidのクォータニオンにセットします。 3. [IN] 数値または、変数 : t 補間計算するクォータニオンのstartqidからの比率を指定してください。 t の値は、0.0から1.0の間の値を指定してください。 実数。 5. [IN] 数値または、変数 : resqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 計算結果が、resqidのクォータニオンに代入されます。 |
ver1.0.0.1 |
E3DSquadQ | 算術 | クォータニオンを、スプライン補間します。 befqid, startqid, endqid, aftqid, resqidには、 E3DCreateQ で取得した、IDを渡してください。 resqidで識別されるクォータニオンに、 startqid, endqidの間の姿勢を、 t の比率に基づいて補間計算し、 セットします。 befqidには、startqidの一つ前の姿勢を、 aftqidには、endqidの一つ後の姿勢を、 セットしておいてください。 この関数は、大きく姿勢が変化する場合には、 向いていません。 大きく変化する姿勢を補完する場合には、 E3DSlerpQを使用してください。 または、2つを組み合わせて、使用してください。 t の値が、0.0 から1.0の間になるように、指定してください。 t が0.0のときは、 startqidと同じ姿勢がセットされます。 t が1.0のときは、 endqidと同じ姿勢がセットされます。 具体的な使い方は、 e3dhsp_Spline.as をご覧ください。 |
1. [IN] 数値または、変数 : befqid 2. [IN] 数値または、変数 : startqid 3. [IN] 数値または、変数 : endqid 4. [IN] 数値または、変数 : aftqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 startqidとendqidのクォータニオンの間の姿勢を、 補間計算して、resqidのクォータニオンにセットします。 befqidには、startqidの一つ前の姿勢を、 aftqidには、endqidの一つ後の姿勢を、 セットしておいてください。 5. [IN] 数値または、変数 : t 補間計算するクォータニオンのstartqidからの比率を指定してください。 t の値は、0.0から1.0の間の値を指定してください。 6. [IN] 数値または、変数 : resqid クォータニオンを識別するID E3DCreateQで取得したidを渡してください。 計算結果が、resqidのクォータニオンに代入されます。 |
ver1.0.0.1 |
E3DSplineVec | 算術 |
位置座標を、スプライン補間計算します。 befpos, startpos, endpos, aftpos, resposには、 それぞれ、 ddim befpos, 3 ddim startpos, 3 ddim endpos, 3 ddim aftpos, 3 ddim respos, 3 で、確保した配列を渡してください。 必ず、dimではなくて、ddimでメモリを確保してください。 配列の第1要素(例えばbefpos.0)には、 X座標、 配列の第2要素(例えばbefpos.1)には、 Y座標、 配列の第3要素(例えばbefpos.2)には、 Z座標、 をセットしておいてください。 startposとendposの間の座標を、 tvの比率に基づいて、 スプライン補間計算して、 resposに代入します。 befposには、startposの一つ前の座標を、 aftposには、endposの一つ後の座標を セットしておいてください。 t の値が、0.0 から1.0の間になるように、指定してください。 t が0.0のときは、 startposと同じ位置がセットされます。 t が1.0のときは、 endposと同じ位置がセットされます。 具体的な使い方は、 e3dhsp_Spline.as をご覧ください。 |
1. [IN] 変数 : befpos 2. [IN] 変数 : startpos 3. [IN] 変数 : endpos 4. [IN] 変数 : aftpos 計算の元となる、位置座標の配列を指定してください。 詳しくは、左記をご覧ください。 ddimで作成した実数型配列。 5. [IN] 数値または、変数 : t 補間計算する位置座標のstartposからの比率を指定してください。 t の値は、0.0から1.0の間の値を指定してください。 7. [OUT] 変数 : respos 計算結果が、代入される配列を指定してください。 ddimで作成した実数型配列。 |
ver1.0.0.1 |
E3DDbgOut | デバッグ | dbg.txtに、指定した文字列を出力します。 この命令を呼ぶ前に、 一回だけE3DEnableDbgFileを 呼ぶ必要があります。 |
1. [IN] 文字列または、文字列変数 : dbgstr 出力文字列を指定してください。 |
ver1.0.0.1 |
E3DGetDiffuse | モデル情報 | 任意のパーツの任意の頂点の、diffuse色を取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 指定した頂点のdiffuse色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.0.1 |
E3DGetAmbient | モデル情報 | 任意のパーツの任意の頂点の、ambient色を取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 指定した頂点のambient色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.0.1 |
E3DGetSpecular | モデル情報 | 任意のパーツの任意の頂点の、specular色を取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 指定した頂点のspecular色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.0.1 |
E3DGetAlpha | モデル情報 | 任意のパーツの透明度を取得します。 | 1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno この引数は、ver1.0.4.4では、使用されません。 適当な数字を入れてください。 4. [OUT] 変数 : alpha 指定したパーツの透明度が、0〜255の値で代入されます。 |
ver1.0.0.1 |
E3DSaveQuaFile | 出力 | 読み込み済みのモーションを、ファイルに保存します。 | 1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : mkid モーションを識別する番号を指定してください。 3. [IN] 文字列または、文字列変数 : filename 保存ファイル名(パス)を指定してください。 |
ver1.0.0.1 |
E3DSaveSigFile | 出力 | 形状データをsigファイルに保存します。 地面データは、この関数では、 保存しないでください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 文字列または、文字列変数 : filename 保存ファイル名(パス)を指定してください。 |
ver1.0.0.1 |
E3DSetMipMapParams | 描画パラメータ | ミップマップのパラメータを設定します。 この関数を呼んだ後に実行される 全てのE3DSigLoadに影響します。 この命令を一度も呼ばなかった場合は、 miplevelに0、 mipfilterに D3DX_FILTER_TRIANGL|D3DX_FILTER_MIRROR を指定したのと同じになります。 |
1. [IN] 数値または、変数 : miplevels 要求されるミップ レベルの数。 この値が 0 または D3DX_DEFAULT の場合は、 完全なミップマップ チェーンが作成されます。 2. [IN] 数値または、変数 : mipfilter イメージをフィルタリングする方法を制御する 1 つ以上のフラグの組み合わせ。 このパラメータに D3DX_DEFAULT を指定することは、 D3DX_FILTER_BOX を指定することと等しい。 有効なそれぞれのフィルタに、次のフラグの 1 つが含まれていなければならない。 D3DX_FILTER_BOX 各ピクセルは、ソース イメージ内の 2 × 2 (× 2) のサイズのボックスに含まれ ピクセルの平均を算出することにより計算される。 このフィルタは、ミップマップを使用する場合のように、 転送先のディメンジョンがソースの半分の場合のみ機能する。 D3DX_FILTER_LINEAR 各転送先ピクセルは、最も近い 4 つのピクセルをソース イメージからサンプリング することにより計算される。 このフィルタは、両軸のスケールが 2 未満の場合に最も効率よく機能する。 D3DX_FILTER_NONE スケーリングまたはフィルタリングを行わない。 ソース イメージの境界の外側にあるピクセルは透明な黒であると見なされる。 D3DX_FILTER_POINT 各転送先ピクセルは、最も近いピクセルをソース イメージからサンプリング することにより計算される。 D3DX_FILTER_TRIANGLE ソース イメージ内の各ピクセルが、転送先イメージに等しく反映される。 これは、最も処理に時間のかかるフィルタである。 さらに、OR 演算子を使用して、有効なフィルタと共に次に示すオプションの フラグを 0 個以上指定できる。 D3DX_FILTER_MIRROR このフラグを指定すると、D3DX_FILTER_MIRROR_U、D3DX_FILTER_MIRROR_V、 および D3DX_FILTER_MIRROR_W フラグを指定したことになる。 D3DX_FILTER_MIRROR_U u 軸のテクスチャのエッジから離れたピクセルを、ラッピングせずにミラーリング するよう指定する。 D3DX_FILTER_MIRROR_V v 軸のテクスチャのエッジから離れたピクセルを、 ラッピングせずにミラーリングするよう指定する。 D3DX_FILTER_MIRROR_W w 軸のテクスチャのエッジから離れているピクセルを、 ラッピングせずにミラーリングするよう指定する。 D3DX_FILTER_DITHER 結果として作成されたイメージを、4x4 の順序付きディザ アルゴリズム を使ってディザリングする必要がある。 |
ver1.0.0.1 |
E3DPickVert | モデル情報 | 画面上の2D座標を指定して、その座標に、一番近い頂点を検出する関数です。 全く同じ座標の頂点が見つかった場合には、 複数のパーツ、複数の頂点の番号を 取得するするようになっています。 同じ座標でも、UVだけが違う頂点などが 存在するので、複数取得できるようになっています。 取得した情報の数が、getnumに代入されます。 該当するデータが無い場合は、getnumに0が 代入されます。 getnumが0出ない場合には、 maxindex = getnum - 1とすると pickpartarray.0 から、pickpartarray.maxindex までに、パーツの番号が代入されます。 pickvertarray.0から、pickvertarray.maxindex までに、頂点の番号が代入されます。 pickarrayleng変数に、 一度に取得できる情報の数をセットした後、 dim pickpartarray, pickarrayleng dim pickvertarray, pickarrayleng で、メモリを確保してください。 rangex, rangey引数を調整することで、 検出の感度を調整できます。 この関数の使用例は、 e3dhsp_pickvert.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid 形状データを識別するID 3. [IN] 数値または、変数 : posx 4. [IN] 数値または、変数 : posy 画面上の2D座標を(posx, posy)で指定します。 5. [IN] 数値または、変数 : rangex 6. [IN] 数値または、変数 : rangey 検出距離を指定します。 rangexには、X座標がどれだけ離れた点まで検索するかを指定します。 rangeyには、Y座標がどれだけ離れた点まで検索するかを指定します。 大きい値を指定すると、 指定した座標より遠い頂点まで検索します。 感度の調整に使用してください。 7. [OUT] 変数 : pickpartarray 8. [OUT] 変数 : pickvertarray 指定した座標に一番近いパーツ番号と、 頂点の番号がgetnum個だけ、代入されます。 9. [IN] 数値または、変数 : pickarrayleng pickpartarray, pickvertarrayの配列の大きさを指定してください。 dim 命令で使用した値を渡してください。 詳しくは、左記をご覧ください。 10. [OUT] 変数 : getnum pickpartarray, pickvertarrayに、何個の値を代入したかを 取得できます。 例えば、getnum が3だった場合には、 pickpartarray.0, pickpartarray.1, pickpartarray.2に値が代入されています。 |
ver1.0.0.1 |
E3DGetCullingFlag | モデル情報 | この関数は、現在、機能していません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 調べたい頂点の番号を指定してください。 4. [OUT] 変数 : viewcullflag 視野外カリングされているとき1が、 されていないとき0が代入されます。 5. [OUT] 変数 : revcullflag 背面カリングされているとき1が、 されていないとき0が代入されます。 |
ver1.0.0.1 |
E3DGetOrgVertNo | モデル情報 | mqoファイル内での頂点番号を取得する。 パーツ内の頂点の数は、E3DGetVertNumOfPartのvertnumで取得されます。 E3Dのプログラムでは、頂点の番号に、0から(vertnum - 1)の頂点の番号を使用できます。 この頂点の番号は、表示用の最適化をした後の、頂点の番号で、 rok, mqoファイル内での頂点の番号と異なる場合があります。 この関数は、最適化後の頂点番号に対応する、rok,mqoファイル内での頂点の番号を取得します。 mqoの場合は、 mqoファイル中の、パーツごとの頂点の出現順番を返します。(0から始まる数字) rokの場合は、 rokファイル中の、1から始まる頂点のインデックスを返します。 rokの場合は、パーツごとの番号ではなくて、 頂点全体を通しての番号ですので 注意してください。 指定した頂点と同じ座標を持つ頂点の番号が代入されるので、場合によっては、複数取得されます。 この関数は、E3Dのプログラムから、im2ファイルを作る際などに使用することを想定して、作りました。 地面データには使わないでください。 この関数を使う前に、 E3DChkIM2Status関数で、引数に 1が返されることを確認してください。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 orgarraylengに、取得できる情報の数をセットして、 dim orgnoarray, orgarrayleng で、メモリを確保してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 調べたい頂点の番号を指定してください。 4. [OUT] 変数 : orgnoarray この配列に、元データの頂点の番号が代入されます。 maxindex = getnum - 1とすると orgnoarray.0 から、orgnoarray.maxindexまでに 頂点の番号が代入されます。 5. [IN] 数値または、変数 : arrayleng orgnoarrayをdimしたときの、配列の大きさを指定してください。 6. [OUT] 変数 : getnum orgnoarrayに代入した情報の数を取得できます。 |
ver1.0.0.1 |
E3DChkIM2Status | ボーン影響 | 影響マップ情報(im2)が、利用可能かどうかを調べます。 status引数に1が返された場合は、 利用可能。 0が返された場合は、 利用不可能です。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 E3DGetOrgVertNo, E3DLoadIM2File, E3DSaveIM2File関数などを使用する前に、 このE3DChkIM2Status関数で、 影響マップファイルの機能が使えるかどうかを 調べてください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : status 影響マップ情報が、利用可能かどうかが代入されます。 |
ver1.0.0.1 |
E3DLoadIM2File | ボーン影響 | hsidで識別されるモデルデータに、im2ファイルのボーン影響情報をセットします。 この関数を使う前に、 E3DChkIM2Status関数で、引数に 1が返されることを確認してください。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 |
1. [IN] 数値または、変数 : hsid hsidで識別されるモデルデータに、 im2ファイルのボーン影響情報をセットします。 2. [IN] 文字列または、文字列の変数 : fname *.im2 のパス文字列。 |
ver1.0.0.1 |
E3DSaveIM2File | ボーン影響出力 | hsidで識別されるモデルデータの影響マップ情報を、im2ファイルに書き出します。 この関数を使う前に、 E3DChkIM2Status関数で、引数に 1が返されることを確認してください。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 |
1. [IN] 数値または、変数 : hsid hsidで識別されるモデルデータの影響マップ情報を、 im2ファイルに書き出します。 2. [IN] 文字列または、文字列の変数 : fname *.im2 のパス文字列。 |
ver1.0.0.1 |
E3DGetJointNum | モデル情報 | ジョイントの総数を取得します。 E3DGetJointInfoで詳細情報を取得する際の、 配列データの大きさの決定などに、 使用してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : jointnum ジョイントの総数が、代入されます。 |
ver1.0.0.1 |
E3DGetJointInfo | モデル情報 | ジョイントの詳細情報を、一括取得します。 この関数を使用するには、 データ取得用の配列を、sdim, dim命令を使って、 作成する必要があります。 (データによって、ジョイントの総数が変化するので、ユーザーさん側で、データ長を調整する必要があります。) まず、jointmaxnum変数に、 E3DGetJointInfo関数で、 ジョイントの総数を取得してください。 jointname引数は、 sdim jointname, 256, jointmaxnum で作成してください。 maxnameno = jointmaxnum - 1 とすると、 jointname.0 から、jointname.maxnameno で、jointmaxnum個の名前にアクセスできます。 jointinfo引数は、 dim jointinfo, JI_MAX, jointmaxnum で作成してください。 JI_* は、e3dhsp3.asの 最初の方で定義されている定数です。 #define global JI_SERIAL 0 #define global JI_NOTUSE 1 #define global JI_PARENT 2 #define global JI_CHILD 3 #define global JI_BROTHER 4 #define global JI_SISTER 5 #define global JI_MAX 6 のように、定義されています。 配列のインデックスとして、使用してください。 JI_SERIALインデックスは、 ジョイントのシリアル番号にアクセスするときに、 使用します。 ジョイントのシリアル番号とは、 E3DGetPartNoByName あるいは、 E3DGetBoneNoByName で取得できる番号と同じものです。 JI_NOTUSEインデックスは、 ジョイントが無効になっているかどうかの フラグにアクセスするときに、使用します。 無効なときに1が、有効なときに0が代入されています。 JI_PARENT, JI_CHILD, JI_BROTHER, JI_SISTERインデックスは、 ジョイントの階層構造にアクセスするときに 使用します。 詳しくは、 ジョイントの階層構造のページ をご覧ください。 JI_MAXは、 JI_ で始まる定数の個数を定義しています。 jointinfoをdimするときに使用します。 jointinfoの内容を参照する場合には、 1つ目のインデックスに、 JI_で始まる定数を指定し、 2つ目のインデックスに、 何番目のジョイントかを表す番号 (シリアル番号ではありません) を指定します。 例えば、3番目のジョイントのシリアル番号に アクセスしたいときには、 jointinfo.JI_SERIAL.2 と書きます。 同様に、1番目のジョイントの親の番号に アクセスしたい場合には、 jointinfo.JI_PARENT.0 と書きます。 具体的な使用例は、サンプルの e3dhsp_getjointinfo.asをご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : jointmaxnum データ取得用配列の大きさ(ジョイントの数)を指定します。 3. [OUT] 文字列の配列変数 : jointname 名前情報を取得するための配列を渡してください。 右に書いた方法で、sdimした配列を渡してください。 4. [OUT] 配列変数 : jointinfo シリアル番号や、階層構造などを取得するための配列変数を渡してください。 右に書いた方法で、dimした配列を渡してください。 5. [OUT] 変数 : jointgetnum 何個lのジョイントの情報を出力したかが、代入されます。 通常は、jointmaxnumと同じ値が取得されます。 |
ver1.0.0.1 |
E3DGetFirstJointNo | モデル情報 | 相対値0のジョイントの、シリアル番号を取得します。 ジョイント番号の相対値とは、 ボーンファイルや、im2ファイルなどで、 使用します。 各ファイルの説明をご覧ください。 ボーンファイルのページ im2ファイルのページ |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : firstno 相対値0のシリアル番号が、代入されます。 |
ver1.0.0.1 |
E3DGetDispObjNum | モデル情報 | 表示用オブジェクトの総数を取得します。 E3DGetDispObjInfoで詳細情報を取得する際の、 配列データの大きさの決定などに、 使用してください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : dispobjnum 表示オブジェクトの総数が、代入されます。 |
ver1.0.0.1 |
E3DGetDispObjInfo | モデル情報 |
表示オブジェクトの詳細情報を、一括取得します。 この関数を使用するには、 データ取得用の配列を、sdim, dim命令を使って、 作成する必要があります。 (データによって、表示オブジェクトの総数が変化するので、ユーザーさん側で、データ長を調整する必要があります。) まず、dispobjmaxnum変数に、 E3DGetDispObjInfo関数で、 表示オブジェクトの総数を取得してください。 dispobjname引数は、 sdim dispobjname, 256, dispobjmaxnum で作成してください。 maxnameno = dispobjmaxnum - 1 とすると、 dispobjname.0 から、dispobjname.maxnameno で、dispobjmaxnum個の名前にアクセスできます。 dispobjinfo引数は、 dim dispobjinfo, DOI_MAX, dispobjmaxnum で作成してください。 DOI_* は、e3dhsp3.asで定義されている定数です。 #define global DOI_SERIAL 0 #define global DOI_NOTUSE 1 #define global DOI_DISPSWITCH 2 #define global DOI_INVISIBLE 3 #define global DOI_MAX 4 のように、定義されています。 配列のインデックスとして、使用してください。 DOI_SERIALインデックスは、 表示オブジェクトのシリアル番号にアクセスするときに、 使用します。 表示オブジェクトのシリアル番号とは、 E3DGetPartNoByName で取得できる番号と同じものです。 DOI_NOTUSEインデックスは、 表示オブジェクトが無効になっているかどうかの フラグにアクセスするときに、使用します。 無効なときに1が、有効なときに0が代入されています。 DOI_DISPSWITCHインデックスは、 表示オブジェクトのディスプレイスイッチの番号 にアクセスするときに使用します。 ディスプレイスイッチは、 RokDeBone2で、パーツごとに設定可能です。 ディスプレイスイッチのページ DOI_INVISIBLEインデックスは、 表示オブジェクトが表示されているかどうかのフラグにアクセスするときに使用します。 詳しくは、 E3DSetInvisibleFlag の説明をお読みください。 DOI_MAXは、 DOI_ で始まる定数の個数を定義しています。 dispobjinfoをdimするときに使用します。 dispobjinfoの内容を参照する場合には、 1つ目のインデックスに、 DOI_で始まる定数を指定し、 2つ目のインデックスに、 何番目の表示オブジェクトかを表す番号 (シリアル番号ではありません) を指定します。 例えば、3番目の表示オブジェクトのシリアル番号に アクセスしたいときには、 dispobjinfo.DOI_SERIAL.2 と書きます。 同様に、1番目の表示オブジェクトの ディスプレイスイッチ番号に、 アクセスしたい場合には、 jointinfo.DOI_DISPSWITCH.0 と書きます。 具体的な使用例は、サンプルの e3dhsp_getjointinfo.asをご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : dispobjmaxnum データ取得用配列の大きさ(表示オブジェクトの数)を指定します。 3. [OUT] 文字列の配列変数 : dispobjname 名前情報を取得するための配列を渡してください。 右に書いた方法で、sdimした配列を渡してください。 4. [OUT] 配列変数 : dispobjinfo シリアル番号などを取得するための配列変数を渡してください。 右に書いた方法で、dimした配列を渡してください。 5. [OUT] 変数 : dispobjgetnum 何個lの表示オブジェクトの情報を出力したかが、代入されます。 通常は、dispobjmaxnumと同じ値が取得されます。 |
ver1.0.0.1 |
E3DEnableTexture | 描画パラメータ | 一時的に、テクスチャー表示をオンオフする関数です。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号(シリアル番号) 3. [IN] 変数または、数値 : enableflag テクスチャーをオフにするときには0を、 オンにするときには1を指定してください。 |
ver1.0.0.1 |
E3DJointAddToTree | モデル情報 | パーツに親子関係を設定します。 childjointをparentjointの子供として、 設定します。 lastflagが0のときは、長男として追加され、 1のときは、末っ子として追加されます。 ジョイント以外に、親子関係を設定しても、 現バージョンでは、意味がありません。 childjoint, parentjointは、 E3DGetPratNoByNameまたは、 E3DGetJointInfoで取得した番号を 使用してください。 E3DjointRemake命令もお読みください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 2. [IN] 変数または、数値 : parentjoint 3. [IN] 変数または、数値 : childjoint parentjointの子供として、childjointを設定します。 4. [IN] 変数または、数値 : lastflag 0を指定するとparentjointの長男として、 1を指定するとparentjointの末っ子として設定されます。 |
ver1.0.0.1 |
E3DJointRemoveFromParent | モデル情報 | パーツの親子関係を取り除きます。 rmjointで指定したパーツと、 その親のパーツとの関係を切り離します。 rmjointの子供の情報は、そのまま残ります。 ジョイント以外に、親子関係を設定しても、 現バージョンでは、意味がありません。 この命令で、親が存在しないまま、 E3DSaveSigFileでファイルに保存すると、 そのファイルは、読み込みできなくなります。 最終的には、E3DJointAddToTreeで、 必ず、親を設定するようにしてください。 一番親のジョイントにしたい場合には、 ジョイントではないフォルダ的な役割をしているパーツの番号を取得して、 それを親に設定してください。 rmjointは、 E3DGetPratNoByNameまたは、 E3DGetJointInfoで取得した番号を 使用してください。 E3DjointRemake命令もお読みください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 2. [IN] 変数または、数値 : rmjoint rmjointと、その親の関係を切り離します。 |
ver1.0.0.1 |
E3DJointRemake | モデル情報 | 親子関係や、有効無効の変更を、Easy3D内部の関連データに反映させます。 一連の、E3DJointAddToTreeや E3DJointRemoveFromParent命令や E3DSetValidFlagを 呼び出した後に、一回、呼び出してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 |
ver1.0.0.1 |
E3DSigImport | 形状データ | hsidに読み込み済の形状データに、 filenameで指定した形状データを インポートします。 この命令を呼ぶと、 読み込み済のモーションデータが破棄されます。 |
1. [IN] 変数または、数値 : hsid 形状データを識別する番号 2. [IN] 文字列または、文字列の変数 : fname インポートする*.sig のパス文字列。 3. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 4. [IN] 変数または、数値 : mult 倍率の値を指定してください。 デフォルトは1.0です。 等倍は、1.0。 実数。 5. [IN] 変数または、数値 : offsetx 6. [IN] 変数または、数値 : offsety 7. [IN] 変数または、数値 : offsetz 読み込み位置のオフセット座標を、 (offsetx, offsety, offsetz)で指定します。 ローカル座標で指定します。 実数。 8. [IN] 変数または、数値 : rotx 9. [IN] 変数または、数値 : roty 10. [IN] 変数または、数値 : rotz 追加形状を、X,Y,Zそれぞれの軸に対して、 rotx, roty, rotz度だけ、回転してから、 インポートを行います。 回転順序は、Z,Y,Xの順番です。 実数。 パラメータの適用順序は、 まず、倍率を掛けて、 次に、回転をして、 最後に、移動します。 |
ver1.0.0.1 |
E3DSigLoadFromBuf | 形状データ | メモリから形状データのロードを行います。 メモリ内には、sigファイルと同じフォーマットが 入っているとみなして、処理します。 テクスチャファイルは、通常読込と同様に、 ファイルから行います。 resdirには、テクスチャの存在するフォルダのパスを指定してください。 最後に、"\\"を付けるのを忘れないでください。 例えば、 resdir = "C:\\hsp\\Meida\\" や resdir = dir_cur + "\\" などのように指定してください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 5. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 6. [IN] 変数または、数値 : mult 倍率の値を指定してください。 デフォルトは1.0です。 等倍は1.0。 実数。 |
ver1.0.0.1 |
E3DSigImportFromBuf | 形状データ | メモリから、形状データのインポートを行います。 メモリ内には、sigファイルと同じフォーマットが 入っているとみなして、処理します。 テクスチャファイルは、通常読込と同様に、 ファイルから行います。 resdirには、テクスチャの存在するフォルダのパスを指定してください。 最後に、"\\"を付けるのを忘れないでください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 3. [IN] 変数 : buf バッファの変数 4. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 5. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 6. [IN] 変数または、数値 : mult 倍率の値を指定してください。 デフォルトは1.0です。 等倍は1.0。 実数。 7. [IN] 変数または、数値 : offsetx 8. [IN] 変数または、数値 : offsety 9. [IN] 変数または、数値 : offsetz 読み込み位置のオフセット座標を、 (offsetx, offsety, offsetz)で指定します。 ローカル座標で指定します。 実数。 10. [IN] 変数または、数値 : rotx 11. [IN] 変数または、数値 : roty 12. [IN] 変数または、数値 : rotz 追加形状を、X,Y,Zそれぞれの軸に対して、 rotx, roty, rotz度だけ、回転してから、 インポートを行います。 回転順序は、Z,Y,Xの順番です。 実数。 パラメータの適用順序は、 まず、倍率を掛けて、 次に、回転をして、 最後に、移動します。 |
ver1.0.0.1 |
E3DAddMotionFromBuf | モーション | メモリからモーションデータのロードを行います。 メモリ内には、quaまたはmotファイルと 同じフォーマットが入っているとみなして、 処理します。 quaデータの読み込み時は、 datakindに0を指定し、 motデータの読み込み時には、 datakindに1を指定してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [IN] 変数または、数値 : datakind quaデータの時は0を、 motデータの時は1を指定してください。 3. [IN] 変数 : buf バッファの変数 4. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 5. [OUT] 変数 : mk 読み込んだモーションを識別する番号 6. [OUT] 変数 : maxframe 読み込んだモーションの最大フレーム番号 (総フレーム数 - 1 と同じ) |
ver1.0.0.1 |
E3DCheckFullScreenParams | 描画パラメータ | フルスクリーンのパラメータをチェックし、与えた条件に近いパラメータを取得します。 validflagに1が返された場合のみ、 validw, validh, validbitsの値は有効です。 validflagに0が返された場合には、 ウインドウの大きさなどの条件を変えて、 有効なパラメータが取得できるまで、 繰り返し、この命令を呼び出してください。 この命令は、E3DInitよりも前に呼ぶことを前提にしています。 この命令で、取得したvalidwとvalidhでウインドウを作成した後(screen命令やbgscr命令などで)、 E3DInit 1, validbits で、フルスクリーン初期化してください。 具体的な使用例は、 e3dhsp_fullscreen.as に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : screenw 2. [IN] 数値または、変数 : screenh 3. [IN] 数値または、変数 : bits 使用したいフルスクリーンのパラメータを指定します。 screenwにスクリーンの幅 screenhにスクリーンの高さ bitsに色数を示すビット数を指定します。 4. [OUT] 変数 : validflag screenw, screenh, bitsで指定したパラメータに近い フルスクリーンが作れることが分かった場合に、 1がセットされます。 与えられたパラメータでは、フルスクリーンが作れないことが 分かった場合には、0がセットされます。 5. [OUT] 変数 : validw 6. [OUT] 変数 : validh 7. [OUT] 変数 : validbits フルスクリーンの作成に有効なパラメータが返されます。 screenw, screenh, bitsで指定したものとは、 多少、異なる場合があります。 これらの値は、validflagに1が代入されているときのみ有効です。 |
ver1.0.0.1 |
E3DGetMaxMultiSampleNum | 描画パラメータ | アンチエイリアスに必要な、マルチサンプルの数の最大値を取得します。 この関数は、E3DInitよりも前に呼び出すことを 想定しています。 E3DInitに渡すmultisamplenumの値の決定に 使用してください。 具体的な使用例は、 e3dhsp_antialias.as に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : bits 色数を決めるビット数を指定してください。 2. [IN] 数値または、変数 : iswindowmode ウインドウモードの時は1を フルスクリーンの時は0を指定してください。 3. [OUT] 変数 : maxmultisamplenum マルチサンプルの数の指定に有効な、最大の値を代入します。 0または、2から16の値が代入されます。 ハードウェアによって、異なる値が代入されます。 |
ver1.0.0.1 |
E3DChkConfLineAndFace | 当たり判定 | 任意の線分と、sigの面との当たり判定をします。 この当たり判定は、 hsidで指定したデータのボーン変形が、 必要になります。 ですが、同じポーズで、何回も当たり判定を行う場合などには、いちいち、ボーン変形を計算し直さない方が、高速です。 needtransに、0を指定すると、 ボーン変形計算を、省略することが出来ます。 (ポーズが変わった場合や、 カメラ位置を変えた場合には、 needtransを1にしてください。) 線分と面との当たりE3DChkConfLineAndFaceは、結構、重い処理です。 ですので、出来るだけ、呼び出し回数を、 少なくするように、心がけてください。 呼び出し回数を少なくするための工夫として、 まず、E3DChkConflictで、 おおざっぱな当たり判定を行い、 E3DChkConflictで、当たっていると判定されたときのみ、 E3DChkConfLineAndFaceを、呼び出す、 などの方法が、有効です。 E3DChkInViewより後で呼び出してください。 具体的な使用例は、 e3dhsp_ConfLineAndFace.as に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : posx1 2. [IN] 数値または、変数 : posy1 3. [IN] 数値または、変数 : posz1 4. [IN] 数値または、変数 : posx2 5. [IN] 数値または、変数 : posy2 6. [IN] 数値または、変数 : posz2 線分を、(posx1, posy1, posz1)と、(posx2, posy2, posz2)で 指定してください。 実数。 7. [IN] 数値または、変数 : hsid モデルデータを識別するID 8. [IN] 数値または、変数 : needtrans ボーン変形計算をするかどうかのフラグ 詳しくは、左記をご覧ください。 9. [OUT] 変数 : partno 10. [OUT] 変数 : faceno 線分とhsidのモデルが衝突していた場合に、 衝突したパーツの番号と、面の番号が、代入されます。 衝突していなかった場合は、-1が代入されます。 11. [OUT] 変数 : confx 12. [OUT] 変数 : confy 13. [OUT] 変数 : confz 衝突していた場合に、衝突した座標が代入されます。 実数型の変数。 14. [OUT] 変数 : nx 15. [OUT] 変数 : ny 16. [OUT] 変数 : nz 衝突していた場合に、衝突したhsidの面の法線ベクトルが代入されます。 実数型の変数。 17. [OUT] 変数 : revfaceflag 衝突していた面が、裏面だった場合、1が代入されます。 表面だった場合は、0が代入されます。 |
ver1.0.0.1 |
E3DPickFace | 当たり判定 | 2Dの画面の座標に対応する、3Dモデルの座標を取得できます。 マウスでクリックした場所に、 3Dオブジェクトを移動させることなどに使用してください。 E3DPickVertが、3Dモデルの頂点を抽出するのに対し、 E3DPickFaceは、3Dモデルの面を抽出し、 2D座標に対応する面上の3D座標を取得します。 maxdist によって、どのくらい遠くまで 検索するかを指定できます。 maxdistの値を小さくするほど、 処理は高速になります。 計算には、E3DChkInViewの結果を 使用しています。 具体的な使用例は、 e3dhsp_pickface.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 3. [IN] 数値または、変数 : pos2x 4. [IN] 数値または、変数 : pos2y 画面上の2D座標を指定してください。 5. [IN] 数値または、変数 : maxdist どのくらいの距離まで、3Dモデルの検索をするかを指定します。 この値を小さくするほど、処理は高速になります。 6. [OUT] 変数 : partno 7. [OUT] 変数 : faceno 2D座標に対応する3D座標が見つかった場合に、 その3Dモデルのパーツの番号と、面の番号が 代入されます。 見つからなかった場合は、-1が代入されます。 8. [OUT] 変数 : pos3x 9. [OUT] 変数 : pos3y 10. [OUT] 変数 : pos3z 2D座標に対応する3D座標が代入されます。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数。 11. [OUT] 変数 : nx 12. [OUT] 変数 : ny 13. [OUT] 変数 : nz 2D座標に対応する3D座標を含む面の法線ベクトルが 代入されます。 ベクトルの大きさは1のものを代入します。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 14. [OUT] 変数 : dist 視点と(pos3x, pos3y, pos3z)との距離が代入されます。 partnoに-1以外の値が代入されているときのみ、 この値は意味を持ちます。 実数型の変数。 15. [IN] 数値または、変数 : calcmode 1を指定してください。 |
ver1.0.0.1 |
E3DGetBBox | モデル情報 | 読み込んだモデルデータのバウンダリーボックスの取得が出来ます。 カメラの設定や、プロジェクションの設定を、モデルの大きさに応じて変更する場合などに使ってください。 mode引数で、 ローカル座標か、グローバル座標かを 指定できるようにする予定です。 現在は、ローカル座標しか取得できません。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 -1を指定した場合は、モデル全体のバウンダリーボックスを取得します。 3. [IN] 数値または、変数 : mode 現在はサポートされていません。 0を指定してください。 4. [OUT] 変数 : minx 5. [OUT] 変数 : maxx 6. [OUT] 変数 : miny 7. [OUT] 変数 : maxy 8. [OUT] 変数 : minz 9. [OUT] 変数 : maxz X座標の最小、最大 Y座標の最小、最大 Z座標の最小、最大 がそれぞれ、代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DGetVertNoOfFace | モデル情報 | facenoで指定した面に含まれる頂点の番号を3つ取得します。(3角形の頂点です) facenoには、E3DPickFaceなどで取得した 面の番号を指定してください。 E3DGetSamePosVertの説明も お読みください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [IN] 数値または、変数 : faceno 面を識別する番号を指定してください。 4. [OUT] 変数 : vertno1 5. [OUT] 変数 : vertno2 6. [OUT] 変数 : vertno3 3角形の面を構成する3つの頂点の番号が 代入されます。 |
ver1.0.0.1 |
E3DGetSamePosVert | モデル情報 | 同じ位置の頂点番号を取得する。 モデルデータ中には、同じ頂点座標で、 UV座標だけ違う頂点が存在します。 同じ位置の頂点の番号を取得する関数です。 E3DGetVertNoOfFaceと組み合わせて 使うことを想定しています。 samevertno には、見つかった頂点数分の 頂点番号が代入されます。 arraylengに5くらいの値を入れて、 dim samevertno, arrayleng で、配列を作成してください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [IN] 数値または、変数 : vertno 頂点を識別する番号を指定してください。 4. [OUT] 変数 : samevertno dim samevertno, arraylengで作成した配列を指定してください。 見つかった頂点の番号が代入されます。 5. [IN] 数値または、変数 : arrayleng samevertno配列を作成したときの大きさを指定してください。 6. [OUT] 変数 : samenum 見つかった頂点の数が代入されます。 つまり、maxindex = samenum - 1とすると samevertno.0 から samevertno.maxindex まで、見つかった頂点の番号が、代入されていることになります。 |
ver1.0.0.1 |
E3DRdtscStart | 同期 | 時間の計測。 E3DRdtscStartとE3DRdtscStopは、セットで使用します。 E3DRdtscStartを呼び出してから、 E3DRdtscStopを呼び出すまでに、 プロセッサのタイムスタンプカウンタが どれくらい増えたかを取得できます。 |
なし | ver1.0.0.1 |
E3DRdtscStop | 同期 | 時間の計測。 E3DRdtscStartとE3DRdtscStopは、セットで使用します。 E3DRdtscStartを呼び出してから、 E3DRdtscStopを呼び出すまでに、 プロセッサのタイムスタンプカウンタが どれくらい増えたかを取得できます。 実数型の値が取得されます。 |
1. [OUT] 変数 : time E3DRdtscStartを呼んでからの、 タイムスタンプカウンタの増分が代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DSaveSig2Buf | モデル出力 | 読み込み済の形状データを、メモリ上に保存します。 保存するためのバッファは、 ユーザーさん側が用意します。 バッファの長さが分からないと、 保存操作が行えないため、 バッファ長の取得と、実際の保存とで、 合計2回、この関数を呼び出してください。 bufsize引数に0を指定すると、 保存を行わずに、 保存に必要なバッファの長さを取得します。 バッファの長さを取得した後に、 その長さをbufsize引数に指定して、 実際の保存を行ってください。 実際のコードは、以下のようになります。 E3DSaveSig2Buf hsid, sigbuf, 0, sigwritesize sdim sigbuf, sigwritesize E3DSaveSig2Buf hsid2, sigbuf, sigwritesize, writesize1 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 変数 : buf バッファの変数を指定してください。 3. [IN] 数値または、変数 : bufsize 0を指定すると、 保存に必要なバッファの長さが、writesizeに代入されます。 0以外を指定すると、 バッファbufに、形状データを保存します。 4. [OUT] 変数 : writesize bufsizeに0が指定されている場合には、 必要なバッファのサイズが代入されます。 bufsizeに0以外が指定されている場合には、 実際に保存したデータのバイト数を代入します。 |
ver1.0.0.1 |
E3DSaveQua2Buf | モーション出力 | 読み込み済のモーションデータを、メモリ上に保存します。 保存するためのバッファは、 ユーザーさん側が用意します。 バッファの長さが分からないと、 保存操作が行えないため、 バッファ長の取得と、実際の保存とで、 合計2回、この関数を呼び出してください。 bufsize引数に0を指定すると、 保存を行わずに、 保存に必要なバッファの長さを取得します。 バッファの長さを取得した後に、 その長さをbufsize引数に指定して、 実際の保存を行ってください。 実際のコードは、以下のようになります。 E3DSaveQua2Buf hsid, mkid, quabuf, 0, quawritesize sdim quabuf, quawritesize E3DSaveQua2Buf hsid, mkid, quabuf, quawritesize, writesize2 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : mkid モーションを識別する番号を指定してください。 3. [IN] 変数 : buf バッファの変数を指定してください。 4. [IN] 数値または、変数 : bufsize 0を指定すると、 保存に必要なバッファの長さが、writesizeに代入されます。 0以外を指定すると、 バッファbufに、形状データを保存します。 5. [OUT] 変数 : writesize bufsizeに0が指定されている場合には、 必要なバッファのサイズが代入されます。 bufsizeに0以外が指定されている場合には、 実際に保存したデータのバイト数を代入します。 |
ver1.0.0.1 |
E3DCameraShiftLeft | カメラ | カメラを左に平行移動します。 | 1. [IN] 数値または、変数 : shift 移動量。 実数。 |
ver1.0.0.1 |
E3DCameraShiftRight | カメラ | カメラを右に平行移動します。 | 1. [IN] 数値または、変数 : shift 移動量。 実数。 |
ver1.0.0.1 |
E3DCameraShiftUp | カメラ | カメラを上に平行移動します。 | 1. [IN] 数値または、変数 : shift 移動量。 実数。 |
ver1.0.0.1 |
E3DCameraShiftDown | カメラ | カメラを下に平行移動します。 | 1. [IN] 数値または、変数 : shift 移動量。 実数。 |
ver1.0.0.1 |
E3DGetCameraQ | カメラ | カメラの回転変換を表すクォータニオンを 取得します。 使い方の例は、 e3dhsp_toolscamera.as にあります。 |
1. [IN] 数値または、変数 : qid クォータニオンのIDを渡してください。 qidで識別されるクォータニオンに、 カメラの回転情報を代入します。 qidには、E3DCreateQで取得したIDを使用してください。 |
ver1.0.0.1 |
E3DInvQ | 算術 | 逆クォータニオンを取得します。 使い方の例は、 e3dhsp_toolscamera.as にあります。 |
1. [IN] 数値または、変数 : srcqid 2. [IN] 数値または、変数 : dstqid クォータニオンのIDを渡してください。 dstqidで識別されるクォータニオンに、 srcqidで識別されるクォータニオンの逆クォータニオンを代入します。 srcqid, dstqidには、 E3DCreateQで取得したIDを使用してください。 |
ver1.0.0.1 |
E3DSetCameraTwist | カメラ | カメラをツイスト(ロール)させます。 カメラの使い方は、この表の前に書いてある部分をお読みください。 E3DSetCameraTwistは、どのタイプのカメラ関数を使用している場合でも、有効です。 E3DSetCameraTargetを使用している場合には、 E3DSetCameraTargetで指定した上方向のベクトルを、さらにtwistdeg分ねじります。 |
1. [IN] 数値または、変数 : twistdeg カメラをtwistdeg度だけ、ツイストします。 実数。 |
ver1.0.0.1 |
E3DIKRotateBeta | モーション | IKによるジョイントの回転を行います。 目標の座標などを指定すると、 そこに近づくように、回転します。 この関数は、ベータ版です。 今後のバージョンアップで、 互換性のとれない変更をする場合がありますので、ご注意ください。 この関数では、指定したモーションの1フレーム分の姿勢情報しか変更しません。 モーション全体に、IK結果を反映させたい場合は、 IK計算した前後のキーフレーム間で、 E3DFillUpMotionを呼び出す必要があります。 使い方の例は、 e3dhsp_ikrotatebeta.as にあります。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 3. [IN] 数値または、変数 : jointno ジョイントパーツを識別する番号を指定してください。 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定するとエラーになります。 4. [IN] 数値または、変数 : motionid モーションを識別する番号を指定してください。 5. [IN] 数値または、変数 : frameno モーションのフレーム番号を指定してください。 6. [IN] 数値または、変数 : iklevel IK計算時の階層数を指定します。 何階層、親をさかのぼって、IK計算するかを指定します。 7. [IN] 数値または、変数 : axiskind IKの回転の際の軸をどのように決定するかを指定します。 0の時は、視線に平行なベクトルを使います。 1の時は、axisx, axisy, axiszに指定した軸を使います。 2の時は、自動的に軸を設定します。 8. [IN] 数値または、変数 : axisx 9. [IN] 数値または、変数 : axisy 10. [IN] 数値または、変数 : axisz IKの回転軸を指定します。 axiskindに、1を指定したときのみ、有効です。 実数。 11. [IN] 数値または、変数 : calclevel 計算の細かさを指定します。 正の整数を指定してください。 値が大きいほど細かく動きますが、 現バージョンでは、大きすぎても、うまくいきません。 12. [IN] 数値または、変数 : targetx 13. [IN] 数値または、変数 : targety 14. [IN] 数値または、変数 : targetz jointnoで指定したジョイントが、 座標(targetx, targety, targetz)に近づくように、回転します。 実数。 15. [OUT] 数値または、変数 : resx 16. [OUT] 数値または、変数 : resy 17. [OUT] 数値または、変数 : resz jointnoで指定したジョイントの、計算後の座標が代入されます。 実数。 18. [OUT] 数値または、変数 : lastparent 姿勢の変更のあったボーンのうち、 一番親の番号が代入されます。 この値を、E3DRenderに渡すと、処理の高速化が出来ます。 詳しくは、E3DRednerのところの注意事項をお読みください。 |
ver1.0.0.1 |
E3DIKRotateBeta2D | モーション | E3DIKRotateBetaの2D座標指定バージョンです。 目標座標が、2Dになった以外は、 E3DIKRotateBetaと同じです。 詳しくは、E3DIKRotateBetaの説明を お読みください。 具体的な使用例は、 e3dhsp_MouseDePose.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 3. [IN] 数値または、変数 : jointno ジョイントパーツを識別する番号を指定してください。 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定するとエラーになります。 4. [IN] 数値または、変数 : motionid モーションを識別する番号を指定してください。 5. [IN] 数値または、変数 : frameno モーションのフレーム番号を指定してください。 6. [IN] 数値または、変数 : iklevel IK計算時の階層数を指定します。 何階層、親をさかのぼって、IK計算するかを指定します。 7. [IN] 数値または、変数 : axiskind IKの回転の際の軸をどのように決定するかを指定します。 0の時は、視線に平行なベクトルを使います。 1の時は、axisx, axisy, axiszに指定した軸を使います。 2の時は、自動的に軸を設定します。 8. [IN] 数値または、変数 : axisx 9. [IN] 数値または、変数 : axisy 10. [IN] 数値または、変数 : axisz IKの回転軸を指定します。 axiskindに、1を指定したときのみ、有効です。 実数。 11. [IN] 数値または、変数 : calclevel 計算の細かさを指定します。 正の整数を指定してください。 値が大きいほど細かく動きますが、 現バージョンでは、大きすぎても、うまくいきません。 12. [IN] 数値または、変数 : target2dx 13. [IN] 数値または、変数 : target2dy jointnoで指定したジョイントが、 指定した2D座標に近づくように、回転します。 14. [OUT] 変数 : resx 15. [OUT] 変数 : resy 16. [OUT] 変数 : resz jointnoで指定したジョイントの、計算後の座標が代入されます。 実数。 17. [OUT] 変数 : lastparent 姿勢の変更のあったボーンのうち、 一番親の番号が代入されます。 この値を、E3DRenderに渡すと、処理の高速化が出来ます。 詳しくは、E3DRednerのところの注意事項をお読みください。 |
ver1.0.0.1 |
E3DGetMotionType | モーション | モーションのタイプを取得します。 得られるタイプの意味は、以下のようになります。 1がフレーム番号固定(Stop) 2が最終フレーム番号まで進んだら固定(Clamp) 3が最終フレーム番号まで進んだら、先頭フレームに戻る(Round) 4が最終フレーム番号まで進んだら、先頭フレームの方向に逆進する(PingPong) 5が最終フレームまで進んだら、指定フレームにジャンプする(Jump) |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 3. [OUT] 変数 : typeptr 左で説明したモーションの種類が代入されます。 |
ver1.0.0.1 |
E3DSetMotionType | モーション | モーションのタイプをセットします。 typeに指定する値の意味は、以下のようになります。 1がフレーム番号固定(Stop) 2が最終フレーム番号まで進んだら固定(Clamp) 3が最終フレーム番号まで進んだら、先頭フレームに戻る(Round) 4が最終フレーム番号まで進んだら、先頭フレームの方向に逆進する(PingPong) |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 3. [IN] 数値または、変数 : type 左で説明したモーションの種類を指定してください。 |
ver1.0.0.1 |
E3DGetIKTransFlag | モデル情報 | IK伝達禁止情報を、ジョイントから取得します。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : jointid ジョイントを識別する番号を指定してください。 3. [OUT] 変数 : flagptr 通常の場合は0が、 IK伝達禁止の時は1が代入されます。 |
ver1.0.0.1 |
E3DSetIKTransFlag | モデル情報 | IK伝達禁止情報を、ジョイントにセットします。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : jointid ジョイントを識別する番号を指定してください。 3. [IN] 数値または、変数 : flag 通常の場合は0を、 IK伝達禁止の時は1を指定してください。 |
ver1.0.0.1 |
E3DDestroyAllMotion | モーション | E3DAddMotionで読み込んだ、モーションデータを、全て、破棄します。 | 1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 |
ver1.0.0.1 |
E3DGetUserInt1OfPart | モデル情報 | パーツに設定されている、ユーザーデータを、取得します。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [OUT] 変数 : dataptr ユーザーデータが代入されます。 |
ver1.0.0.1 |
E3DSetUserInt1OfPart | モデル情報 | パーツに、ユーザーデータをセットします。 | 1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [IN] 数値または、変数 : data ユーザーデータを指定してください。 |
ver1.0.0.1 |
E3DGetBSphere | モデル情報 |
パーツ毎の、境界球情報を取得します。 ボーン変形を考慮した、グローバル座標系の 値が取得できます。 E3DChkInViewの計算結果を、もとにしています。 表示用オブジェクトのみに対して有効です。 (ボーンに対して呼んでも、無意味です。) |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno パーツを識別する番号を指定してください。 3. [OUT] 変数 : centerx 4. [OUT] 変数 : centery 5. [OUT] 変数 : centerz 境界球の中心座標が代入されます。 実数型の変数。 6. [OUT] 変数 : r 境界球の半径が代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DGetChildJoint | モデル情報 | 指定したジョイントの、子供ジョイントの数と、子供のシリアル番号を取得します。 childarray配列に、 子供の数分の、シリアル番号が 代入されます。 子供の数より、配列の長さが、大きいように してください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : parentno 親のジョイントの番号を指定してください。 3. [IN] 数値または、変数 : arrayleng childarray引数に格納できる要素数を指定してください。 dim childarray, 100とした場合は、 100を指定してください。 childnum引数に代入される数が、arraylengより大きい場合は、 配列の長さが足りないことになります。 4. [OUT] 変数 : childarray 子供ジョイントの、シリアル番号が、代入されます。 arraylengがchildnumより、小さい場合は、 arrayleng個の、シリアル番号しか、代入されません。 5. [OUT] 変数 : childnum 子供ジョイントの数が、代入されます。 |
ver1.0.0.1 |
E3DDestroyMotionFrame | モーション | 指定したキーフレームを削除します。 モーションの変更を反映させるには、 E3DFillUpMotionを呼ぶ必要があります。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 3. [IN] 数値または、変数 : frameno 削除するフレームの番号を指定してください。 -1を指定すると、全てのキーフレームを削除します。 |
ver1.0.0.1 |
E3DGetKeyFrameNo | モーション | 指定したボーンの、キーフレームのフレーム番号を全て取得します。 framearrayには、 dim framearray, 50 などで作成した、大きめの配列を使用してください。 配列の長さより、framenumが、大きい場合には、エラーになりますので、 注意してください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 3. [IN] 数値または、変数 : boneno ボーンパーツを識別する番号を指定してください。 4. [OUT] 変数 : framearray この配列に、フレーム番号が、代入されます。 5. [IN] 数値または、変数 : arrayleng framearrayをアロケート(dim)したときの要素数を指定してください。 6. [OUT] 変数 : framenum framearrayに格納した要素の数が代入されます。 キーフレームの数です。 |
ver1.0.0.1 |
E3DConvScreenTo3D | 算術 | 任意の2D座標を3D座標に変換します。 マウスの位置に対応する、3D座標を 求める場合などに、便利です。 この関数を使用して、 マウスクリックで、 3Dラインを描画するサンプルを e3dhsp_DrawLine.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : x2d 3. [IN] 数値または、変数 : y2d 変換したい、マウスの位置などを、 (x2d, y2d)で指定します。 4. [IN] 数値または、変数 : z カメラからどのくらいの距離の平面上の点を取得するかを 指定します。 3D座標のZの値ではありません。 カメラからの距離を制御出来るものと考えてください。 (距離の値とは違います。) 0.0のとき、カメラに一番近い座標がえられます。 1.0のとき、カメラから、一番遠い(見える範囲での) 座標がえられます。 見える範囲とは、 E3DSetProjectionで指定した範囲のことです。 実際のカメラの距離と、このzの値は、 比例関係にありません。 zの値をちょっと大きくしただけで、 カメラからの距離が大きく変わったり、 反対に、zを大きく変えても、 カメラからの距離が少ししか変わらない領域もあります。 0に近すぎる値では、 見えないことがあるので注意してください。 実数。 5. [OUT] 変数 : x3d 6. [OUT] 変数 : y3d 7. [OUT] 変数 : z3d 上で指定した2D座標に対応する3D座標が、 (x3d, y3d, z3d)に代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DVec3Length | 算術 | 指定したベクトルの長さを取得します。 2点の距離の計算などに使ってください。 例えば、 (posx1, posy1, posz1)と(posx2, posy2, posz2) の距離を計算したいときには、 vecx = posx1 - posx2 vecy = posy1 - posy2 vecz = posz1 - posz2 として、この関数に渡してください。 |
1. [IN] 数値または、変数 : vecx 2. [IN] 数値または、変数 : vecy 3. [IN] 数値または、変数 : vecz ベクトルを指定します。 実数。 4. [OUT] 変数 : length ベクトルの長さが代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DSetUV | モデル情報 | テクスチャーのUV座標をセットします。 partnoには、 E3DGetPartNoByNameで取得した番号を、 vertnoには、 E3DGetVertNumOfPartで取得した頂点数を vertnumとしたとき、 0から(vertnum - 1)までの値を渡してください。 vertnoに-1を指定すると、 指定パーツの全ての頂点に対して、 処理を行うようにしました。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号 3. [IN] 変数または、数値 : vertno 頂点の番号 -1を指定すると、全ての頂点に対して処理します。 4. [IN] 変数または、数値 : u 5. [IN] 変数または、数値 : v 設定したいUV値の値を指定してください。 通常は0.0から1.0の値。 実数。 6. [IN] 変数または、数値 : setflag setflag に0を指定すると、 指定UV値を、そのままセットします。 setflagに1を指定すると、 指定UV値を、既存のUV値に、足し算します。 |
ver1.0.0.1 |
E3DGetUV | モデル情報 | テクスチャーのUV座標を取得します。 partnoには、 E3DGetPartNoByNameで取得した番号を、 vertnoには、 E3DGetVertNumOfPartで取得した頂点数を vertnumとしたとき、 0から(vertnum - 1)までの値を渡してください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : partno パーツを識別する番号 3. [IN] 変数または、数値 : vertno 頂点の番号 4. [OUT] 変数 : u 5. [OUT] 変数 : v UV座標の値が、代入されます。 実数型の変数。 |
ver1.0.0.1 |
E3DPickBone | モデル情報 | 指定した2D座標に近いジョイントの番号を取得します。 2D座標には、マウスの座標などを指定してください。 具体的な使用例は、 e3dhsp_MouseDePose.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : posx 3. [IN] 変数または、数値 : posy 2D座標を、(posx, posy)で指定します。 4. [OUT] 変数 : jointno 指定した2D座標に近いジョイントがある場合には、 そのジョイントのIDが代入されます。 近くにジョイントがない場合には、0以下が代入されます。 |
ver1.0.0.1 |
E3DShiftBoneTree2D | モーション | 指定した2D座標に近づくように、ボーンツリー全体を、移動します。 具体的な使用例は、 e3dhsp_MouseDePose.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid 形状データを識別するID 3. [IN] 数値または、変数 : jointno ジョイントを識別するID E3DPickBoneなどで取得した、 ジョイントの番号を渡してください。 4. [IN] 数値または、変数 : motid モーションを識別するID E3DAddMotionで取得したmotidを指定してください。 5. [IN] 数値または、変数 : frameno ポーズを設定したいフレーム番号を指定してください。 6. [IN] 数値または、変数 : target2dx 7. [IN] 数値または、変数 : target2dy jointnoで指定したジョイントが、 指定した2D座標に近づくように、 ボーンツリー全体が移動します。 |
ver1.0.0.1 |
E3DGetDispSwitch | モデル情報 | ディスプレイスイッチの状態を取得します。 ディスプレイスイッチ情報は、ビットごとの和になっています。 ディスプレイスイッチ番号ds がオンの場合は、 2のds乗の値が足されていることになります。 例えば、ディスプレイスイッチ3だけがオンの場合は、2の3乗の8という値が代入されています。 ディスプレイスイッチがオンになっているかを調べて処理するには、 &演算子と、2のスイッチ番号乗の値を使います。 例えば、スイッチ3がオンかどうかを調べるには、 if( (dispswitch & 8) != 0 ) { //オンの時の処理 } else { //オフの時の処理 } のようにします。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motid モーションを識別するID motidに-1を指定すると、 E3DSetDispSwitchで、motidに-1を指定して設定した値が dispswitch引数に代入されます。 motidに-2を指定すると、 現在設定されている、モーションのスイッチ状態が、 dispswitch引数に代入されます。 3. [IN] 数値または、変数 : frameno フレーム番号を指定してください。 framenoに-1を指定すると、 現在のフレーム番号の、スイッチ状態が、 dispswitch引数に代入されます。 4. [OUT] 変数 : dispswitch スイッチの状態が代入されます。 詳しくは、左記をご覧ください。 |
ver1.0.0.1 |
E3DRotateBillboard | ビルボード | ビルボードを、カメラの方向を向けたまま、回転します。 |
1. [IN] 変数または、数値 : billboardid ビルボードを識別する番号 2. [IN] 変数または、数値 : rotdeg ビルボードを、rotdeg度だけ、 回転します。 実数。 4. [IN] 変数または、数値 : rotkind rotkindに0を指定すると、相対値モードになります 現在のビルボードの向きに、 更に、指定角度だけ、回転を加えます。 rotkindに1を指定すると、絶対値モードになります。 初期状態に対して、指定角度だけ、回転を加えます。 |
ver1.0.0.1 |
E3DSetBillboardUV | ビルボード | ビルボードのUVを設定します。 横方向にunum個、縦方向にvnum個の、タイル状に作ったテクスチャーの、タイルの番号を指定することで、指定した画像のUVを設定します。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 タイルの数が12個の場合は、 タイルの番号は、0から11になりますが、 それより大きな値や小さな値を指定することも可能です。 例えば、タイルの数が12個の場合、 12を指定すると、 タイル番号0が表示され、 13を指定すると、 タイル番号1が表示され、 -1を指定すると、 タイル番号11が表示されるという具合に 機能します。 |
1. [IN] 変数または、数値 : bbid ビルボードを識別するid 2. [IN] 変数または、数値 : unum 3. [IN] 変数または、数値 : vnum タイルの横と縦の個数 4. [IN] 変数または、数値 : tileno 設定したいテクスチャのタイルの番号 |
ver1.0.0.1 |
E3DCreateTexture | テクスチャ | 指定したファイルからテクスチャを作ります。画面と同じテクスチャを作ることも可能です。 テクスチャの操作には、この関数で取得した テクスチャのID、texidを使用してください。 transparentに1(黒透過)を指定した場合には、 黒透過処理が行われます。 D3DPOOL_DEFAULTで、 テクスチャを作成する場合には、transparentに1を指定すると失敗することがあります。 filenameに、"MainWindow"を指定すると、 バックバッファと同じ内容で、 同じ大きさのサーフェスを作成します。 この際、poolに何を指定しても、 強制的に、システムメモリに作成します。 また、このとき、transparentに1を指定できません。 "MainWindow"を指定した場合は、 E3DSetTextureToDispObjは、使えません。 E3DCopyTextureToBackBufferを使ってください。 "MainWindow"を指定したときは、バックバッファと同じフォーマットで、それ以外は、D3DFMT_A8R8G8B8で作成します。 具体的な使用例は、 e3dhsp_TextureRaster.as e3dhsp_TextureChange.as に書きましたので、ご覧ください。 |
1. [IN] 文字列または、文字列の変数 : filename テクスチャファイル のパス文字列。 "MainWindow"を指定すると、 画面と同じ内容で、同じ大きさのテクスチャが作成されます。 ただし、このとき、注意する点がいつくかあるので、 左記をご覧ください。 2. [IN] 変数または、数値 : pool どのメモリ位置にテクスチャを作成するかを指定します。 e3dhsp.asで定義してある D3DPOOL_DEFAULT (普通はビデオメモリに作られます) D3DPOOL_MANAGED (DirectXの管理(バックアップ有り)) D3DPOOL_SYSTEMMEM (システムメモリに作られます) の中から選びます。 3. [IN] 変数または、数値 : transparent 透過情報を指定します。 0を指定すると、不透明のテクスチャ。 1を指定すると、黒色を透過するテクスチャ。 2を指定すると、テクスチャファイルのアルファに従って 透過するテクスチャになります。 4. [OUT] 変数 : texid 作成したテクスチャを識別するID テクスチャ操作の際には、このIDを使用してください。 |
ver1.0.0.1 |
E3DGetTextureInfo | テクスチャ | 作成したテクスチャの情報を取得します。 テクスチャのサイズは、 ビデオカードによっては、2の乗数のサイズしか 確保できないので、 ファイルのサイズと異なる場合があります。 |
1. [IN] 変数または、数値 : texid テクスチャを識別するID 2. [OUT] 変数 : width 3. [OUT] 変数 : height テクスチャの幅と高さ 4. [OUT] 変数 : pool 作成メモリ位置 5. [OUT] 変数 : transparent 透過モード 6. [OUT] 変数 : format フォーマット |
ver1.0.0.1 |
E3DCopyTextureToTexture | テクスチャ | テクスチャからテクスチャへ、内容をコピーします。 srcとdstで大きさや、フォーマットが違う場合は、 エラーになります。 |
1. [IN] 変数または、数値 : texid コピー元のテクスチャを識別するID 2. [IN] 変数または、数値 : texid コピーされるテクスチャを識別するID |
ver1.0.0.1 |
E3DGetTextureFromDispObj | テクスチャ | 読み込み済の3Dオブジェクトに設定されているテクスチャを取得します。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID -1を指定すると、ビルボードの処理を行います。 2. [IN] 変数または、数値 : partno パーツの番号。 E3DGetPartNoByNameで取得した番号を指定してください。 hsidに-1を指定した場合には、 ビルボードのIDを指定してください。 3. [OUT] 変数 : texid テクスチャを識別するID 指定したパーツにテクスチャが貼られていない場合には、 texidには、-1が代入されます。 |
ver1.0.0.1 |
E3DSetTextureToDispObj | テクスチャ | 読み込み済の3Dオブジェクトに、テクスチャを設定します。 テクスチャをセットしても、 UV座標は自動的に生成されません。 動的にテクスチャを設定する場合は、 UV座標も、E3DSetUVで、設定するか、 もしくは、 あらかじめ、モデルに仮のテクスチャを貼っておいて、UV設定しておく必要があります。 具体的な使用例は、 e3dhsp_TextureChange.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID -1を指定すると、ビルボードの処理を行います。 2. [IN] 変数または、数値 : partno パーツの番号。 E3DGetPartNoByNameで取得した番号を指定してください。 hsidに-1を指定した場合には、 ビルボードのIDを指定してください。 3. [IN] 変数または、数値 : texid 貼り付けたいテクスチャのIDを指定します。 |
ver1.0.0.1 |
E3DRasterScrollTexture | テクスチャ | テクスチャに、ラスタースクロール処理を加えます。 ゆらゆらと揺れる効果が得られます。 srctexidとdesttexidは、同じ時は、エラーになります。 srcとdestで、大きさ、フォーマットが違うときも、エラーになります。 texidには、両方とも、D3DPOOL_SYSTEMMEMで作成したテクスチャーを指定してください。 それ以外も可能ですが、極端に処理速度が落ちます。 ビデオメモリにラスター処理をしたい場合は、 システムメモリのテクスチャー同士で、ラスター処理をしたあと、 ビデオメモリのテクスチャーに、E3DCopyTextureToTextureで転送してください。 具体的な使用例は、 e3dhsp_TextureRaster.as に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : srctexid 処理する前のテクスチャを識別するID 2. [IN] 変数または、数値 : desttexid 処理した結果を格納するテクスチャを識別するID 3. [IN] 変数または、数値 : t 時間経過を指定します。 4. [IN] 変数または、数値 : param1 揺れの縦方向の具合を指定します。 param1の値が大きいほど、 変化が激しくなります。 実数。 5. [IN] 変数または、数値 : param2 揺れの横方向の具合を指定します。 param2の値が大きいほど、 変化が激しくなります。 実数。 |
ver1.0.0.1 |
E3DCopyTextureToBackBuffer | テクスチャ | テクスチャをバックバッファにコピーします。 E3DCreateTextureで、 filenameに"MainWindow"を指定して作成した テクスチャーを、バックバッファにコピーします。 フォーマットが異なる場合は、失敗します。 |
1. [IN] 変数または、数値 : texid コピー元のテクスチャを識別するID |
ver1.0.0.1 |
E3DDestroyTexture | テクスチャ | テクスチャを破棄します。 |
1. [IN] 変数または、数値 : texid テクスチャを識別するID |
ver1.0.0.1 |
E3DSetLightAmbient | ライト | ライトのアンビエント色を指定します。 地面データにのみ、影響します。 |
1. [IN] 変数または、数値 : lightid ライトを識別するID 2. [IN] 変数または、数値 : R 3. [IN] 変数または、数値 : G 4. [IN] 変数または、数値 : B 色のRGBを0から255までの値で、指定します。 |
ver1.0.0.1 |
E3DSetLightSpecular | ライト | ライトのスペキュラー色を指定します。 地面データにのみ、影響します。 |
1. [IN] 変数または、数値 : lightid ライトを識別するID 2. [IN] 変数または、数値 : R 3. [IN] 変数または、数値 : G 4. [IN] 変数または、数値 : B 色のRGBを0から255までの値で、指定します。 |
ver1.0.0.1 |
E3DInvColTexture | テクスチャ | テクスチャの色を反転します。 具体的な使用例は、 e3dhsp_TextureRasteras に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : texid テクスチャを識別するID |
ver1.0.0.1 |
E3DSaveGndFile | 地面出力 | 地面データをgndファイルに保存します。 gndファイルの読み込み速度は、mqoファイルの読み込みよりも、 だいぶ速くなります。 sigファイルをgndファイルに変換するのは禁止とします。 (保証外です) |
1. [IN] 数値または、変数 : hsid 地面データを識別するID 2. [IN] 文字列または、文字列変数 : filename 保存ファイル名(パス)を指定してください。 |
ver1.0.0.1 |
E3DLoadGndFile | 地面 | 地面データ(*.gnd)を読み込んで、hsidを得る。 gndファイルの読み込み速度は、mqoファイルの読み込みよりも、 だいぶ速くなります。 |
1. [IN] 文字列または、文字列の変数 : fname *.gnd のパス文字列。 2. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 3. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 4. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 |
ver1.0.0.1 |
E3DLoadGndFileFromBuf | 地面 | メモリから地面データのロードを行います。 メモリ内には、gndファイルと同じフォーマットが 入っているとみなして、処理します。 テクスチャファイルは、通常読込と同様に、 ファイルから行います。 resdirには、テクスチャの存在するフォルダのパスを指定してください。 最後に、"\\"を付けるのを忘れないでください。 例えば、 resdir = "C:\\hsp\\Meida\\" や resdir = dir_cur+ "\\" などのように指定してください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [OUT] 変数 : hsid 読み込んだ形状データを識別するhsid 5. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 |
ver1.0.0.1 |
E3DCreateTextureFromBuf | テクスチャ | メモリに読み込んだ絵のデータから、テクスチャを作成します。 filenameの代わりに、バッファを指定し、 "MainWindow"が扱えないこと以外は、 E3DCreateTextureと同じです。 E3DCreateTextureの説明を、 お読みください。 例えば、以下のような使い方になります。 sdim buf0, 800000 ;ファイルサイズより大きめ bload "pict.bmp", buf0 bufsize0 = strsize E3DCreateTextureFromBuf buf0, bufsize0, D3DPOOL_MANAGED, 1, texid0 |
1. [IN] 変数 : buf バッファの変数 2. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ(バイト) 3. [IN] 変数または、数値 : pool どのメモリ位置にテクスチャを作成するかを指定します。 e3dhsp.asで定義してある D3DPOOL_DEFAULT (普通はビデオメモリに作られます) D3DPOOL_MANAGED (DirectXの管理(バックアップ有り)) D3DPOOL_SYSTEMMEM (システムメモリに作られます) の中から選びます。 4. [IN] 変数または、数値 : transparent 透過情報を指定します。 0を指定すると、不透明のテクスチャ。 1を指定すると、黒色を透過するテクスチャ。 2を指定すると、テクスチャファイルのアルファに従って 透過するテクスチャになります。 5. [OUT] 変数 : texid 作成したテクスチャを識別するID テクスチャ操作の際には、このIDを使用してください。 |
ver1.0.0.1 |
E3DLoadSoundFromBuf | サウンド | メモリから音データを読み込み、IDを取得します。 メモリから読み込むこと以外は、 E3DLoadSoundと同じです。 E3DLoadSoundの説明をお読みください。 |
1. [IN] 変数 : buf バッファの変数 2. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ(バイト) 3. [IN] 変数または、数値 : type midiのときは1、それ以外は0を指定してください。 4. [IN] 変数または、数値 : use3dflag ファイルをステレオサウンドとして読み込む場合は0を、 3Dサウンドとして読み込む場合は1を指定してください。 指定しなかった場合は、ステレオサウンドと見なされます。 5. [IN] 変数または、数値 : bufnum 同じIDの、3Dサウンドを、同時にいくつ重ねて再生できるかを 指定します。 3Dサウンドではない場合は、 今まで通り、DirectMusicが、自動的に、 重ねて再生してくれます。 6. [OUT] 変数 : soundid 作成した音データを識別する番号が代入されます。 |
ver1.0.0.1 |
E3DTwistBone | モーション | ボーンをツイストします。 指定したジョイントと、その親のジョイントのベクトルを軸として、回転します。 boneno引数に指定したジョイントに 親のジョイントがない場合は、 この関数を呼んでも、 何も効果はありません。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid モーションを識別する番号 3. [IN] 変数または、数値 : frameno 操作するモーションのフレーム番号 4. [IN] 変数または、数値 : jointno ジョイントを識別する番号 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定すると エラーになります。 5. [IN] 変数または、数値 : twistdeg twistdeg 度だけ、ツイストします。 実数。 |
ver1.0.0.1 |
E3DSetStartPointOfSound | サウンド | 音の再生開始位置を指定します。 E3DPlaySoundの直前に呼んでください。 E3DLoadSoundのbufnum引数に1を指定していて、3Dサウンドの場合は、 再生中の音にも影響します。 time引数は、 midiの場合と、3Dサウンド(wav)の場合で 意味が異なりますので、注意してください。 midiと、3Dサウンドのための関数です。 3Dサウンド以外のwavには、 効果がありません。 |
1. [IN] 変数または、数値 : soundid 音を識別する番号を、指定します。 2. [IN] 変数または、数値 : time 3Dサウンドの場合は、 ミリ秒(1秒が1000)を指定してください。 midiの場合は、4分音符の数による数値を指定してください。 4分音符あたり768の数値を指定してください。 |
ver1.0.0.1 |
E3DGetBoneQ | モーション | ボーンのクォータニオンを取得します。 kind引数の値により、 親のクォータニオンの影響を受けたものと、 受けていないものの2種類取得できます。 モーションを読み込んでいないときは、 エラーになります。 指定したframenoに、キーフレームがない場合は、 補間計算した結果を取得します。 エンドジョイント(子供を持たないジョイント) に対しても、呼ぶことが出来ます。 ボーン以外の番号をbonenoに入れると エラーになります。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 4. [IN] 数値または、変数 : frameno フレームの番号を指定してください。 5. [IN] 数値または、変数 : kind 親の影響を受けたクォータニオンを 取得する場合は、1を指定してください。 親の影響を受けていないクォータニオンを 取得する場合は、0を指定してください。 親の影響を受け、 更に、モデル全体の向きの影響を受けたクォータニオンを取得 するには、2を指定してください。 6. [IN] 数値または、変数 : qid クォータニオンを識別する番号。 E3DCreateQで取得した番号を指定してください。 qidで識別されるクォータニオンの内容に、 指定したボーンのクォータニオンの内容を、 代入します。 |
ver1.0.0.1 |
E3DSetBoneQ | モーション | ボーンのクォータニオンをセットします。 指定したフレームに、モーションポイントが存在しない場合は、 自動的に、モーションポイントを作成した後、 クォータニオンをセットします。 E3DFillUpMotionを呼び出さないと、 他のフレームには、反映されません。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 4. [IN] 数値または、変数 : frameno フレームの番号を指定してください。 5. [IN] 数値または、変数 : qid クォータニオンを識別する番号。 E3DCreateQで取得した番号を指定してください。 qidで識別されるクォータニオンの内容を、 ボーンの姿勢にセットします。 |
ver1.0.0.1 |
E3DIsSoundPlaying | サウンド | 音が再生中かどうかを調べます。 |
1. [IN] 変数または、数値 : soundid 音を識別する番号を、指定します。 2. [OUT] 変数 : playing 再生中の場合は1が、 そうでない場合は0が、代入されます。 |
ver1.0.0.1 |
E3DIKTranslate | モーション | IKで、ボーンの位置を移動します。 RokDeBone2のTボタンと同様に、 一番親のボーン以外で、この関数を呼ぶと、 モデルの形状が、崩れます。 形状を保ちたい場合は、E3DIKRotateBetaを使用してください。 位置には、グローバル座標を指定してください。 モーションを読み込んでいないと、エラーになります。 framenoに、モーションポイントがない場合は、 自動的に作成した後に、移動をセットします。 ジョイント以外に対して呼ぶとエラーになります。 他のフレームにも、結果を反映させたい場合は、 E3DFillUpMotionを呼んでください。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数 : motid モーションを識別する番号を指定してください。 4. [IN] 数値または、変数 : frameno フレームの番号を指定してください。 5. [IN] 数値または、変数 : posx 6. [IN] 数値または、変数 : posy 7. [IN] 数値または、変数 : posz ボーンを移動させたいグローバル座標を、 (posx, posy, posz)で指定します。 実数。 |
ver1.0.0.1 |
E3DSetUVTile | モデル情報 | ひとつの画像に、タイル画像を敷き詰めたテクスチャの、UV座標を、タイル番号で、セットできます。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 タイルの数が12個の場合は、 タイルの番号は、0から11になりますが、 それより大きな値や小さな値を指定することも可能です。 例えば、タイルの数が12個の場合、 12を指定すると、 タイル番号0が表示され、 13を指定すると、 タイル番号1が表示され、 -1を指定すると、 タイル番号11が表示されるという具合に 機能します。 5種類の投影、貼り付けをサポートします。 |
1. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数 : partno 表示パーツを識別する番号を指定してください。 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数 : texrule 投影、貼り付けのモードを指定します。 0を指定すると、X軸投影 1を指定すると、Y軸投影 2を指定すると、Z軸投影 3を指定すると、円筒貼り付け 4を指定すると、球貼り付け です。 4. [IN] 数値または、変数 : unum テクスチャのタイル画像の 横方向の個数を指定してください。 5. [IN] 数値または、変数 : vnum テクスチャのタイル画像の 縦方向の個数を指定してください。 6. [IN] 数値または、変数 : tileno 表示したいタイルの番号を指定してください。 タイル番号については、左記をお読みください。 |
ver1.0.0.1 |
E3DImportMQOFileAsGround | 地面 | hsidに読み込み済の地面データに、 filenameで指定した地面データを インポート(追加読み込み)します。 |
1. [IN] 数値または、変数 : hsid 読み込み済の地面モデルを識別する番号を 指定してください。 2. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 3. [IN] 変数または、数値 : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 4. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * multで計算されます。 等倍は1.0。 実数。 5. [IN] 変数または、数値 : offsetx 6. [IN] 変数または、数値 : offsety 7. [IN] 変数または、数値 : offsetz 読み込み位置のオフセット座標を、 (offsetx, offsety, offsetz)で指定します。 ローカル座標で指定します。 実数。 8. [IN] 変数または、数値 : rotx 9. [IN] 変数または、数値 : roty 10. [IN] 変数または、数値 : rotz 追加形状を、X,Y,Zそれぞれの軸に対して、 rotx, roty, rotz度だけ、回転してから、 インポートを行います。 回転順序は、Z,Y,Xの順番です。 実数。 パラメータの適用順序は、 まず、倍率を掛けて、 次に、回転をして、 最後に、移動します。 |
ver1.0.0.1 |
E3DLoadMQOFileAsMovableAreaFromBuf | 壁 | 移動可能領域を定義するデータを、メモリから読み込みます。 メモリから読み込むこと以外は、 E3DLoadMQOFileAsMovableArea と同じです。 E3DLoadMQOFileAsMovableArea の説明をお読みください。 メモリから読み込む手順は、 sdim buf0, 500000 ;ファイルサイズより大きく bload ファイル名, buf0 bufsize = strsize E3DLoadMQOFileAsMovableAreaFromBuf buf0, bufsize, mult100, hsid という流れになります。 |
1. [IN] 変数 : buf バッファの変数 2. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 3. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 実数。 4. [OUT] 変数 : hsid 作成した壁データを識別するhsidが代入されます。 |
ver1.0.0.1 |
E3DChkThreadWorking | スレッド管理 | 関数の最後に、Threadが付いている関数は、新たにスレッドを作成します。 この作成したスレッドが、 現在、動作中であるかどうかをチェックするための関数です。 スレッドが終了している場合には、 スレッドの動作結果が、 returnval1, reteurnval2変数で取得できます。 この変数は、hsidや、モーションIDを取得するために、使用します。 具体的な使用例は、 e3dhsp_LoadByNewThread.as をご覧ください。 |
1. [IN] 変数または、数値 : threadid スレッドを識別するID 名前の最後にThreadが付いている関数で、 取得したIDを指定してください。 2. [OUT] 変数 : working スレッドが、動作中かどうかが代入されます。 動作中の場合は1が、 動作が終了している場合には0が、代入されます。 workingが0の場合は、 returnval1, returnval2に代入される値が、 意味を持ちます。 3. [OUT] 変数 : returnval1 4. [OUT] 変数 : returnval2 スレッドの実行結果が、代入されます。 returnval1, returnval2に代入される値の 意味については、 各Thread作成関数の説明をお読みください。 |
ver1.0.0.1 |
E3DLoadMQOFileAsGroundThread | 地面 | スレッドを作成して、E3DLoadMQOFileAsGroundを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 E3DLoadMQOFileAsGroundの説明もお読みください。 |
1. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 実数。 3. [IN] 変数または、数値 : adjustuvflag UV座標を正規化したいときは1を、 そうでないときは、0を指定してください。 何も指定しないときは、0として扱われます。 4. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DSigLoadThread | 形状データ | スレッドを作成して、E3DSigLoadを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 E3DSigLoadの説明も、お読みください。 |
1. [IN] 文字列または、文字列の変数 : fname *.sig のパス文字列。 2. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 3. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 4. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DSigLoadFromBufThread | 形状データ | スレッドを作成して、E3DSigLoadFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 E3DSigLoadFromBufの説明もお読みください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 5. [IN] 変数または、数値 : mult 倍率を指定してください。 デフォルトは1.0です。 等倍は、1.0。 実数。 6. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DLoadMQOFileAsMovableAreaThread | 壁 | スレッドを作成して、E3DLoadMQOFileAsMovableAreaを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadMQOFileAsMovableAreaの説明もお読みください。 |
1. [IN] 文字列または、文字列変数 : filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 実数。 3. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DLoadMQOFileAsMovableAreaFromBufThread | 壁 | スレッドを作成して、E3DLoadMQOFileAsMovableAreaFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadMQOFileAsMovableAreaFromBufの説明もお読みください。 |
1. [IN] 変数 : buf バッファの変数 2. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 3. [IN] 変数または、数値 : mult 形状データの座標に掛ける数値。 座標値 * mult で計算されます。 等倍は1.0。 実数。 4. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DLoadGroundBMPThread | 地面 | スレッドを作成して、E3DLoadGroundBMPを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadGroundBMPの説明もお読みください。 |
1. [IN] 文字列または、文字列変数 : filename1 地面の座標情報の元となる、BMPファイル名 2. [IN] 文字列または、文字列変数 : filename2 地面の道の情報の元となる、BMPファイル名 3. [IN] 文字列または、文字列変数 : filename3 地面の川の情報の元となる、BMPファイル名 4. [IN] 文字列または、文字列変数 : filename4 地面、道、川の模様を決める、BMPファイル名 5. [IN] 変数または、数値 : maxx 地面のX座標の最大値 実数。 6. [IN] 変数または、数値 : maxz 地面のZ座標の最大値 実数。 7. [IN] 変数または、数値 : divx X方向の分割数 8. [IN] 変数または、数値 : divz Z方向の分割数 9. [IN] 変数または、数値 : maxheight 地面の高さの最大値 実数。 10. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DLoadGndFileThread | 地面 | スレッドを作成して、E3DLoadGNDFileを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 E3DLoadGNDFileの説明もお読みください。 |
1. [IN] 文字列または、文字列の変数 : fname *.gnd のパス文字列。 2. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 3. [IN] 変数または、数値 : mult 読み込み倍率を指定してください。 等倍は1.0。 実数。 4. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DLoadGndFileFromBufThread | 地面 | スレッドを作成して、E3DLoadGNDFileFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 E3DLoadGNDFileFromBufの説明もお読みください。 |
1. [IN] 文字列または、文字列の変数 : resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数 : buf バッファの変数 3. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 4. [IN] 変数または、数値 : adjustuvflag UV値を正規化するかどうかのフラグ 正規化する場合は1を指定 しない場合は0を指定 5. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DAddMotionThread | モーション | スレッドを作成して、E3DAddMotionを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モーションをを識別するhsidが代入されます。 returnval2に、 最大フレーム番号が代入されます。 この関数が終了するまで、 この関数に渡したhsidに対して、 モーションの再生命令などは、使わないようにしてください。 E3DAddMotionの説明もお読みください。 |
1. [IN] 変数または、数値 : hsid どのモデルデータに対するモーションかを指定する。 2. [IN] 文字列または、文字列の変数 : fname *.quaのパス文字列。 3. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DAddMotionFromBufThread | モーション | スレッドを作成して、E3DAddMotionFromBufを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モーションをを識別するhsidが代入されます。 returnval2に、 最大フレーム番号が代入されます。 この関数が終了するまで、 この関数に渡したhsidに対して、 モーションの再生命令などは、使わないようにしてください。 E3DAddMotionFromBufの説明もお読みください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [IN] 変数または、数値 : datakind quaデータの時は0を、 motデータの時は1を指定してください。 3. [IN] 変数 : buf バッファの変数 4. [IN] 変数または、数値 : bufleng バッファの中のデータの長さ 5. [OUT] 変数 : threadid 作成したスレッドを識別するIDが、代入されます。 |
ver1.0.0.1 |
E3DGetShaderType | モデル情報 | シェーダーの種類と、オーバーフロー処理を取得します。 それぞれの値の意味は、 E3DSetShaderTypeの説明をお読みください。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [OUT] 変数 : shader 3. [OUT] 変数 : overflow シェーダーの種類と、 オーバーフロー処理が、代入されます。 |
ver1.0.0.1 |
E3DSetShaderType | モデル情報 | シェーダーの種類と、 色のオーバーフロー処理を設定します。 シェーダーの種類は、 e3dhsp.asのCOL_ で始まる定数で、定義されています。 COL_OLD 従来のRokDeBone2の計算法 emissiveは、無効。 スペキュラーは、形だけの実装。 一番高速。 COL_PHONG Lambertのディフーズ Phongのスペキュラー emissive有り COL_BLINN Lambertのディフーズ Blinnのスペキュラー emissive有り COL_SCHLICK Lambertのディフーズ Schlickのスペキュラー emissive有り COL_MQCLASSIC メタセコイアのマテリアルで Classicを指定したときのモード emissive有り COL_TOON1 テクスチャを使用したトゥーン表示 頂点色は設定しないことを推奨。 色のオーバーフロー処理は、 e3dhsp3.asのOVERFLOW_ で始まる定数で、 定義されています。 OVERFLOW_CLAMP クランプ。 自己照明がきついと、色が破綻する。 一番高速。 OVERFLOW_SCALE スケール。色は破綻しないが、暗くなる。 OVERFLOW_ORG オリジナル。明るさを保つ。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するhsid 2. [IN] 変数または、数値 : shader 3. [IN] 変数または、数値 : overflow シェーダーの種類と、 オーバーフロー処理の指定をします。 値の意味は、左記をご覧ください。 |
ver1.0.0.1 |
E3DSetLightBlendMode | モデル情報 | 頂点のdiffuse色と、ライト色をブレンディングする際の、方法を設定します。 ブレンド方式には、PhotoShopのブレンドモードを使います。 mode引数には、LBLEND_で始まる定数を使用します。 これらの定数は、e3dhsp.asで定義されています。 LBLEND_MULT 乗算 LBLEND_SCREEN スクリーン LBLEND_OVERLAY オーバーレイ LBLEND_HARDLIGHT ハードライト LBLEND_DODGE 覆い焼き |
1. [IN] 変数または、数値 : lid ライトを識別するID 2. [IN] 変数または、数値 : mode ブレンドモードを指定します。 LBLEND_ で始まる定数を使用します。 |
ver1.0.0.1 |
E3DGetLightBlendMode | モデル情報 | 頂点のdiffuse色と、ライト色とのブレンドモードを取得します。 取得されるモードの数値は、 e3dhsp.asで定義されている LBLEND_で始まる定数です。 詳しくは、E3DSetLightBlendModeをお読みください。 |
1. [IN] 変数または、数値 : lid ライトを識別するID 2. [OUT] 変数 : mode ブレンドモードが代入されます。 |
ver1.0.0.1 |
E3DSetEmissive | モデル情報 | パーツのemissive色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : R 4. [IN] 数値または、変数 : G 5. [IN] 数値または、変数 : B 指定したい色を(R,G,B)で指定します。 0から255までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数 : setflag setflagが0のときは、 パーツの色を(R,G,B)にセットします。 setflagが1のときは、 パーツの色に(R/255, G/255, B/255)を乗算します。 setflagが2のときは、 パーツの色に(R,G,B)を足し算します。 setflagが3のときは、 パーツの色から(R,G,B)を減算します。 7. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DSetSpecularPower | モデル情報 | パーツのspecular powerをセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数 : pow 4. [IN] 数値または、変数 : mult pow / mult の値を、setflagに基づいて、 現在の色に対して処理を行います。 5. [IN] 数値または、変数 : setflag setflagが0のときは、 指定した値をセットします。 setflagが1のときは、 現在の値に、指定した値を乗算します。 setflagが2のときは、 現在の値に、指定した値を足し算します。 setflagが3のときは、 現在の値に、指定した値を減算します。 6. [IN] 数値または、変数 : vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 |
ver1.0.0.1 |
E3DGetEmissive | モデル情報 | 任意のパーツの任意の頂点の、emissive色を取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 指定した頂点のdiffuse色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.0.1 |
E3DGetSpecularPower | モデル情報 | 任意のパーツの任意の頂点の、specular powerを取得します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数 : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数 : pow 指定した頂点のspecular powerが、 代入されます。 実数。 |
ver1.0.0.1 |
E3DGetInfElemNum | ボーン影響 | 指定した頂点が、何個のボーンの影響を受けているかを取得します。 影響度情報は、影響を受けるボーンごとに存在します。 (影響を受けるボーンの数だけ存在します) この影響度情報のことを、 Easy3Dでは、InfElemと呼びます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 4. [OUT] 変数 : num 影響度情報の個数が代入されます。 |
ver1.0.0.1 |
E3DGetInfElem | ボーン影響 | 指定した頂点の、ボーン影響度情報を取得します。 infnoには、 E3DGetInfElemNumで取得した数値をinfnumとすると、 0から(infnum - 1)の値を渡してください。 childjointnoに0以下(0を含む)の数値が取得された場合には、そのデータはダミーデータですので、無視するようにしてください。 calcmodeの意味 calcmodeは、影響度の計算方法を表します。 e3dhsp3.as中で定義されているCALCMODE_で始まる定数を使用します。 以下のように定義されています。 #define CALCMODE_NOSKIN0 0 #define CALCMODE_ONESKIN0 1 #define CALCMODE_ONESKIN1 2 #define CALCMODE_DIRECT0 3 #define CALCMODE_SYM 4 NOSKIN0は、スキニング無し。 ONESKIN0は、距離と角度によりスキニング。 ONESKIN1は、距離のみによりスキニング。 DIRECT0は、直接数値指定。 SYMは、対称コピーによる指定。 を表します。 Easy3D内部での影響度の計算方法 影響度を算出する際には、 orginf, dispinf, userrate, normalizeflagを使います。 orginfは、calcmodeで指定した方法で、算出した影響度。 userrateは、比重。 normalizeflagは、正規化(一つの頂点の影響度の合計が1になるようにする)をするかどうかのフラグ。 dispinfが、最終的な、影響度。 まず、InfElemごとに、以下の計算をします。 orginf * userrate / 100 normalizeflagが0のときは、この値がそのまま、dispinfになります。 normalizeflagが1のときは、 全部のInfElemの影響度(dispinf)の合計が1になるように、正規化します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 4. [IN] 数値または、変数 : infno 影響度情報の番号 0から(影響度の個数-1)までの数 5. [OUT] 変数 : childjointno どのボーンの影響を受けるかが代入されます。 この値が、0以下の値の時は、ダミーデータです。 ボーンの線分の内、子供の方のジョイントの番号が 代入されます。 6. [OUT] 変数 : calcmode 影響度の計算方法が代入されます。 7. [OUT] 変数 : userrate 比重が代入されます。 %値が代入されます。 例えば、100%の場合は、100.0が代入されます。 実数。 8. [OUT] 変数 : orginf 9. [OUT] 変数 : dispinf orginf, dispinfの値が代入されます。 それぞれの意味は、左記をご覧ください。 実数型の変数。 |
ver1.0.0.1 |
E3DSetInfElem | ボーン影響 | 頂点にボーン影響度を設定します。 paintmodeの意味 paintmodeは、影響度の設定方法を表します。 e3dhsp3.as内で、PAINT_で始まる定数で、 定義されています。 #define PAINT_NOR 0 #define PAINT_EXC 1 #define PAINT_ADD 2 #define PAINT_SUB 3 #define PAINT_ERA 4 NORは、 すでに設定してある影響度情報に、影響度データを追加します。 同じボーンの情報が既にある場合は、上書きします。 EXCは、すでに設定してある影響度情報を、破棄してから、影響度データを設定します。 ADDは、すでに設定してある影響度の比重に、指定した比重を足し算します。 SUBは、すでに設定してある影響度の比重から、指定した比重を引き算します。 ERAは、指定したボーンの影響度データを削除します。 calcmodeについては、 E3DGetInfElemの説明をご覧ください。 calcmodeとpaintmodeの依存関係 CALCMODE_NOSKIN0のときは、PAINT_EXCを設定してください。 CALCMODE_DIRECT0のときは、PAINT_NORまたは、PAINT_EXCを設定してください。 影響度の計算方法については、 E3DGetInfElemの説明をご覧ください。 directvalは、CALCMODE_DIRECT0のときのみ意味を持ちます。この値をorginfとして設定します。 正の小数を指定してください。 スムージング角度の関係などで、同じ位置に複数の頂点が存在する場合があります。 これらの頂点を同時に同じように設定しないと、ボーン変形が、乱れることがあるので、注意してください。 childjointnoは、ボーンの線分の内の子供のジョイントの番号です。 childjointnoには、必ず親が存在するジョイントの番号を指定してください。 一番親のジョイントは、childjointには、指定できません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 4. [IN] 数値または、変数 : childjointno 影響を受けるボーンの指定。 ボーンの線分の内、子供の方のジョイントの番号を 指定します。 5. [IN] 数値または、変数 : calcmode 影響度の計算方法を指定します。 6. [IN] 数値または、変数 : paintmode 影響度の設定方法を指定します。 7. [IN] 数値または、変数 : normalizeflag 正規化をするときは1、 しないときは0を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 8. [IN] 数値または、変数 : userrate 比重%の値を指定します。 100%の時は、100.0を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 実数。 9. [IN] 数値または、変数 : directval 直接数値指定の数値を指定します。 詳しくは、左記をご覧ください。 実数。 |
ver1.0.0.1 |
E3DDeleteInfElem | ボーン影響 | ボーン影響度情報を削除します。 normalizeflagに1を指定すると、 削除した後に、 指定頂点の残りの影響度情報を、 正規化します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 4. [IN] 数値または、変数 : childjointno 影響を受けるボーンの指定。 ボーンの線分の内、子供の方のジョイントの番号を 指定します。 5. [IN] 数値または、変数 : normalizeflag 正規化をするときは1、 しないときは0を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 |
ver1.0.0.1 |
E3DSetInfElemDefault | ボーン影響 | ボーン影響度情報を、デフォルト状態に戻します。 partnoに、-1を指定すると、 全パーツの全頂点の影響度を デフォルト状態に戻します。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 |
ver1.0.0.1 |
E3DNormalizeInfElem | ボーン影響 | ボーン影響度情報を、正規化します。 指定した頂点の影響度の合計が1になるように、各影響度を合計値で割り算します。 vertnoに、-1を指定すると、 指定パーツの、全頂点に対して、 正規化を行います。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数 : vertno 頂点の番号 |
ver1.0.0.1 |
E3DGetVisiblePolygonNum | モデル情報 | 視野内のポリゴン数を取得します。 E3DRenderの後で呼び出してください。 地面データに対して呼び出した場合は、 num2には、num1と同じ数値が代入されます。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [OUT] 変数 : num1 パーツ単位で計算した視野内ポリゴン数が 代入されます。 3. [OUT] 変数 : num2 クリッピング、背面カリングを考慮した 面単位で計算したポリゴン数が代入されます。 地面データの場合は、num1と同じ値が代入されます。 |
ver1.0.0.1 |
E3DChkConfGroundPart | 当たり判定 | 地面の指定パーツと、キャラクターとの当たり判定を行います。 地面のパーツ番号を指定する他は、 E3DChkConfGroundと同じです。 E3DChkConfGroundの説明をお読みください。 |
1. [IN] 変数または、数値 : charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値 : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 3. [IN] 変数または、数値 : groundpart 当たり判定をしたい地面のパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 指定してください。 4. [IN] 変数または、数値 : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 5. [IN] 変数または、数値 : diffmaxy 一度の移動で、登ることが出来る高さの最大値を 指定してください。 実数。 6. [IN] 変数または、数値 : mapminy groundhsidで識別されるデータの一番低いY座標の値 通常は、0.0です。 実数。 7. [OUT] 変数 : result あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 となります。 8. [OUT] 変数 : adjustx 9. [OUT] 変数 : adjusty 10. [OUT] 変数 : adjustz result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 11. [OUT] 変数 : nx 12. [OUT] 変数 : ny 13. [OUT] 変数 : nz result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが、 (nx, ny, nz)に代入されます。 跳ね返る方向を決めるときなどに、 使用できるのではないかと思い、 加えてみました。 実数型の変数。 |
ver1.0.0.1 |
E3DChkConfGroundPart2 | 当たり判定 | 地面パーツを指定して、線分と地面の当たり判定を行います。 パーツを指定すること以外は、 E3DChkConfGround2と同じです。 詳しくは、E3DChkConfGround2の説明をお読みください。 |
1. [IN] 変数または、数値 : befposx 2. [IN] 変数または、数値 : befposy 3. [IN] 変数または、数値 : befposz 線分の始点を(befposx, befposy, befposz)で、 指定します。 実数。 4. [IN] 変数または、数値 : newposx 5. [IN] 変数または、数値 : newposy 6. [IN] 変数または、数値 : newposz 線分の終点を(newposx, newposy, newposz)で、 指定します。 実数。 7. [IN] 変数または、数値 : groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 8. [IN] 変数または、数値 : groundpart 地面のパーツ番号を指定します。 E3DGetPartNoByNameで取得した番号を 指定してください。 9. [IN] 変数または、数値 : mode 0を指定すると、飛ぶモード 1を指定すると、地面を這うモード 10. [IN] 変数または、数値 : diffmaxy 一度の移動で、登ることが出来る高さの最大値を 指定してください。 実数。 11. [IN] 変数または、数値 : mapminy groundhsidで識別されるデータの一番低いY座標の値 通常は、0です。 実数。 12. [OUT] 変数 : result あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 13. [OUT] 変数 : adjustx 14. [OUT] 変数 : adjusty 15. [OUT] 変数 : adjustz result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 16. [OUT] 変数 : nx 17. [OUT] 変数 : ny 18. [OUT] 変数 : nz result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが、 (nx, ny, nz)に代入されます。 跳ね返る方向を決めるときなどに、 使用できるのではないかと思い、 加えてみました。 実数型の変数。 |
ver1.0.0.1 |
E3DGetMidiMusicTime | サウンド | Midiのミュージックタイムを取得します。 4分音符当たり、768の値が取得されます。 E3DLoadSoundでMidiを読み込んでいるときのみ、機能します。 実際に使用する際には、 E3DPlaySoundの直前に取得したmusictimeを プレイ中に取得したmusictimeから引いた値で 現在位置を確認します。 |
1. [IN] 変数または、数値 : soundid サウンドを識別するID E3DLoadSoundで取得した値を指定してください。 2. [OUT] 変数 : musictime 現在のミュージックタイムが代入されます。 |
ver1.0.0.1 |
E3DSetNextMotionFrameNo | モーション | モーションの最後のフレーム番号に到達した後、どのモーションの、どのフレーム番号に、ジャンプするかを指定できます。 この関数で、次のモーションの指定を行っておけば、E3DSetNewPoseで、自動的にモーションが切り替わります。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : srcmotid 3. [IN] 数値または、変数 : nextmotid 4. [IN] 数値または、変数 : nextframeno srcmotidのモーションが、最後のフレーム番号に達した後、nextmotidのモーションの、nextframenoのフレーム番号に、ジャンプするように設定されます。 |
ver1.0.0.1 |
E3DSetLinearFogParams | 描画パラメータ | 頂点フォグ(線形)を設定します。 頂点フォグなので、ポリゴンのない部分には、フォグはかかりません。 画面全体にフォグをかけたい場合は、 E3DCreateBGで、背景を作成してください。(背景はポリゴンです。) 具体的な使用例は、 e3dhsp3_wall.hsp に書きましたので、ご覧ください。 |
1. [IN] 数値または、変数 : enable 1を指定すると、フォグが有効に、 0を指定すると、フォグが無効になります。 2. [IN] 数値または、変数 : r 3. [IN] 数値または、変数 : g 4. [IN] 数値または、変数 : b フォグの色を、(r, g, b)で指定します。 5 [IN] 数値または、変数 : start 6. [IN] 数値または、変数 : end フォグが開始される距離をstartに、 フォグが終了する(一番濃くなる)距離をendに 指定します。 距離は、カメラからの距離です。 7. [IN] 数値または、変数 : hsid この引数に、モデルデータのhsidを 指定することにより、 モデル単位でのフォグの指定が可能になります。 特殊効果などで、フォグをかけたくない場合などの 表示にお使いください。 この引数を、省略した場合は、 すべてのモデルデータに対して、設定します。 |
ver1.0.0.2で追加 |
E3DChkConflict3 | 当たり判定 | 2つの形状データの指定したパーツ同士が、衝突しているかどうを、判定します。 パーツの番号に、配列を指定できること以外は、 ほとんど、E3DChkConflict2と同じです。 (inviewflagが微妙に違います) パーツ番号には、 E3DGetPartNoByNameで取得した、 パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 (判定の元になるデータは、 E3DChkInView命令によって、更新されます。) すべてのパーツが視野外だった場合は、 inviewflagに3が、 ひとつでも、視野内のパーツがあった場合は、 inviewflagに0が代入されます。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数 : partno1 hsid1のモデル中のパーツの番号の配列 dim partno1, partnum1 などで配列を作成し、それぞれの配列要素に、 判定をしたいパーツの番号を入れてください。 3. [IN] 変数または、数値 : partnum1 partno1に値をセットした要素数を指定してください。 4. [IN] 変数または、数値 : hsid2 形状データを識別するid 5. [IN] 変数 : partno2 hsid2のモデル中のパーツの番号の配列 dim partno2, partnum2 などで配列を作成し、それぞれの配列要素に、 判定をしたいパーツの番号を入れてください。 6. [IN] 変数または、数値 : partnum2 partno2に値をセットした要素数を指定してください。 7. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 8. [OUT] 変数 : inviewflag すべてのパーツが視野外だった場合は、 inviewflagに3が、 ひとつでも、視野内のパーツがあった場合は、 inviewflagに0が代入されます。 |
ver1.0.0.7で追加 |
E3DChkConfBySphere3 | 当たり判定 | 境界球によるあたり判定を、任意のパーツごとに行います。 パーツの番号に配列を指定できること以外は、 E3DChkConfBySphere2と同じです。 判定の際に、E3DChkInViewでセットした、 データを使用します。 パーツ番号には、 E3DGetPartNoByNameで取得した、 パーツの番号を渡してください。 パーツ番号に-1を指定すると、 モデル全体とあたり判定をします。 |
1. [IN] 変数または、数値 : hsid1 形状データを識別するid 2. [IN] 変数 : partno1 hsid1のモデル中のパーツの番号の配列 dim partno1, partnum1 などで配列を作成し、それぞれの配列要素に、 判定をしたいパーツの番号を入れてください。 3. [IN] 変数または、数値 : partnum1 partno1に値をセットした要素数を指定してください。 4. [IN] 変数または、数値 : hsid2 形状データを識別するid 5. [IN] 変数 : partno2 hsid2のモデル中のパーツの番号の配列 dim partno2, partnum2 などで配列を作成し、それぞれの配列要素に、 判定をしたいパーツの番号を入れてください。 6. [IN] 変数または、数値 : partnum2 partno2に値をセットした要素数を指定してください。 7. [OUT] 変数 : confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、1が、 衝突していない場合は0がセットされる。 |
ver1.0.0.7で追加 |
E3DSetMovableAreaThread | 壁 | スレッドを作成して、E3DSetMovableAreaを実行します。 作成したスレッドを識別するためのIDが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 (E3DChkThreadWorkingを除く) スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 E3DSetMovableAreaの説明も、お読みください。 |
1. [IN] 文字列または、文字列変数 : filename1 壁の座標情報の元となる、BMPファイル名 2. [IN] 変数または、数値 : maxx 壁のX座標の最大値 実数。 3. [IN] 変数または、数値 : maxz 壁のZ座標の最大値 実数。 4. [IN] 変数または、数値 : divx X方向の分割数 5. [IN] 変数または、数値 : divz Z方向の分割数 6. [IN] 変数または、数値 : wallheight 作成する壁の高さ 実数。 7. [OUT] 変数 : threadid 作成したスレッドを識別する、ID |
ver2.0.0.2で追加 |
E3DCreateSpriteFromBMSCR | スプライト | HSPの描画画面(E3Dでの描画を除く)と同じ内容のスプライトを作成します。 内部でテクスチャーを使用するため、 画面の大きさが、2の乗数で無い場合は、 スプライトの大きさと画面の大きさが、異なる場合があります。 スプライトの大きさは、 E3DGetSpriteSizeで確認してください。 使い方としては、 非表示のウインドウを作成しておき、 そこに、mes命令などで、描画を行い、 そのウインドウに対して、この関数を呼び、 出来たスプライトを、メインのウインドウに描画する、 などが、考えられます。 screen命令の4番目の引数で、 パレットモードを指定した場合は、 この関数は、使用できません。 |
1. [IN] 変数または、数値 : wid ウインドウID 2. [IN] 変数または、数値 : transparentflag 透過フラグ。 画像ファイルのアルファをもとに透過する場合、 あるいは、画像ファイルにアルファが無く透過もしない場合、 0を指定してください。 1をセットすると、黒色を透過色として色抜きします。 2をせっとすると、(tpR, tpG, tpB)で指定した色を 透過色とします この関数のtransparetflagの意味は、 他の関数のtransparentとは、違うので、 気を付けてください。 3. [OUT] 変数 : spriteID 作成したスプライトを識別するID。 4. [IN] 変数または、数値 : tpR 5. [IN] 変数または、数値 : tpG 6. [IN] 変数または、数値 : tpB transparentflag = 2 のとき、 透過色を、(tpR, tpG, tpB)で指定します。 |
ver2.0.0.5で追加 |
E3DLoadMOAFile | モーションアクセラレータ | モーションアクセラレータファイル(*.moa)を読み込みます。 moaと同じフォルダに、 moaに記述されている全てのquaファイルが、存在しないと エラーになります。 詳しくは、マニュアルの、rdb2_ma.htmと e3dhsp3_MotionAccelerator.hsp をご覧ください。 |
1. [IN] 変数または、数値 : hsid どのモデルデータに対するmoaかを指定する。 2. [IN] 文字列または、文字列の変数 : fname *.moaのパス文字列。 3. [IN] 数値または変数 : FillUpFrameLength 補間モーションのフレーム長 |
ver2.0.1.2で追加 |
E3DSetNewPoseByMOA | モーションアクセラレータ | モーションアクセラレータに基づいて、モーションの更新をします。E3DSetNewPoseの代わりに呼んでください。 詳しくは、マニュアルの、rdb2_ma.htmと e3dhsp3_MotionAccelerator.hsp をご覧ください。 |
1. [IN] 変数または、数値 : hsid モデルデータを識別するID 2. [IN] 変数または、数値 : eventno イベント番号 詳しくは、マニュアルの、rdb2_ma.htmをご覧ください。 |
ver2.0.1.2で追加 |
E3DGetMotionFrameNo | モーション | カレント(現在の)のモーション番号と、フレーム番号を取得します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : mk モーションを識別する番号 3. [OUT] 変数 : frame フレーム番号 |
ver2.0.1.2で追加 |
E3DGetKeyboardCnt | キーボード | 256 個の仮想キーの状態(カウンター)を、指定されたバッファkeybufへコピーします。 E3DGetKeyboardState関数は、呼び出し時に、キーが押されているかどうかしか、取得できませんが、 E3DGetKeyboardCnt関数は、どのくらいの時間、押し続けているかを表すカウンターを取得できます。 Easy3D内部で、 前回のきーの情報を保存しておき、 呼び出し時に、キーが押されていれば、 カウンターを1増やします。 押されていなければ、カウンターを0にします。 keybuf は、この関数を使用する前に、 dim keybuf, 256 で、確保してください。 複数のキーの状態を、一度の呼び出しで、 取得できます。 例えば、Aキーのカウンタを調べる場合は、 E3DGetKeyboardCnt 呼び出し後に、 keybuf.'A' の値を調べます。 ( ’ を忘れずに。 ) 具体的な使用例は、zip中の、 e3dhsp3_MotionAccelerator.hspをご覧ください。 バーチャルキー情報は、zip中の、 e3dhsp3.as で、 VK_ で始まる定数として、宣言しています。 |
1. [OUT] 変数 : keybuf keybufに、キーの状態(カウンタ)が、代入されます。 keybufは、dim keybuf, 256 で、 作成されている必要があります。 |
ver2.0.1.2で追加 |
E3DResetKeyboardCnt | キーボード | E3DGetKeyboardCntが、内部で使用する、前回のキーの情報をリセットします。 |
なし | ver2.0.1.2で追加 |
E3DEncodeBeta | 簡易暗号化 | ファイルの内容を、暗号化します。 暗号化といっても、超簡易な方法ですので、 プログラムに詳しい人なら、復号できてしまう程度のものです。 ファイルを、暗号化して、内容を上書きします。 暗号化したファイルに対して 、この関数を呼べば、暗号化前のファイルに戻ります。 |
1. [IN] 文字列または、文字列変数 : filename 簡易暗号化するファイル名 2. [IN] 配列変数 : rnd10 簡易暗号化する際に使用する、 ランダムなキー配列を指定します。 キーは、10個指定します。 キーの値は、0から255の値を使用してください。 dim rnd10, 10 で、配列を作成してから、値をセットしてください。 |
ver2.0.1.3で追加 |
E3DDecodeBeta | 簡易暗号化 | E3DEncodeBetaで暗号化したファイルを、バッファ上で復号します。 バッファは、sdimで確保してください。 |
1. [IN] 文字列または、文字列変数 : filename 復号するファイル名 2. [IN] 配列変数 : rnd10 E3DEncodeBetaで使用したのと同じ内容の キー配列。 3. [OUT] 配列変数 : dstbuffer 復号した内容が、セットされます。 ファイルの長さをflengthとした場合、 sdim dstbuffer, flength で作成したバッファーを指定してください。 |
ver2.0.1.3で追加 |
E3DGetMoaInfo | モーション | Moaファイルを読み込んだ場合のモーションの名前とIDを取得します。 motmaxnumは、大き目の値を設定してください。 この値が実際のモーションの数よりも小さいとエラーになります。 motionname引数は、 sdim motionname, 256, motmaxnum で作成した配列を指定してください。 motionid引数は、 dim motionid, motmaxnum で作成した配列を指定してください。 詳しい使い方は、 e3dhsp3_MotionAccelerator.hspをご覧ください。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : motmaxnum データ取得用配列の大きさ(モーションの数)を指定します。 3. [OUT] 文字列の配列変数 : motionname 名前情報を取得するための配列を渡してください。 左に書いた方法で、sdimした配列を渡してください。 4. [OUT] 配列変数 : motionid モーションIDを取得するための配列変数を渡してください。 右に書いた方法で、dimした配列を渡してください。 5. [OUT] 変数 : motgetnum 何個lのジョイントの情報を出力したかが、代入されます。 |
ver3.0.0.1で追加 |
E3DGetNextMotionFrameNo | モーション | E3DSetNextMotionFrameNoで設定した情報を取得します。 Moaファイルを読み込んで、 E3DSetNewPoseByMOAを使用する場合、 モーションとモーションの間に補間モーションが入ります。 この補間モーションのもーしょんIDはver3001では常に0です。 この補間モーションには、E3Dが内部で、 次のモーションをE3DSetNextMotionFrameNoでセットしています。 つまり、この補間モーションに対して、 E3DGetNextMotionFrameNoを呼び出せば、 次に再生するモーションの情報が取得できるというわけです。 |
1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 変数または、数値 : motid 現在のモーションのID 3. [OUT] 変数 : nextmotionid 次に再生されるモーションのID 4. [OUT] 変数 : nextframe フレーム番号 |
ver3.0.0.1で追加 |
E3DGetScreenPos3 | モデル情報 | 形状データの画面上での2Dの座標を取得する関数です。 奥行き情報Zも取得できます。 パーツ単位、モデル単位、ビルボード単位で 使用できます。 頂点単位での2D座標も取得できます。 3Dキャラクターの位置に、2Dのスプライトを表示する、などの用途に使えます。 Z情報は、スプライト描画時のZ指定の値に使用できます。 E3DChkInViewより後で、呼び出してください。 具体的な使用例は、zip中の、 e3dhsp_pickvert.hsp に書きましたので、ご覧ください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid 形状データを識別するID -1を指定すると、ビルボードの2D位置を取得できます。 3. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 モデル全体の中心座標の2D座標を 取得できます。 4. [OUT] 変数 : scx 5. [OUT] 変数 : scy 指定したパーツの2Dスクリーン座標が代入されます。 整数。 ただし、以下の場合には、 scx = -1, scy = -1が代入されます。 1,パーツが表示用オブジェクトではない場合 2,パーツ全体が画面外にある場合 3,パーツのディスプレイスイッチがオフの場合 4,パーツが無効になっていた場合 (E3DSetValidFlagで0を指定した場合) 6. [OUT] 変数 : scz 奥行き情報Z 実数の変数。 この値に0から1の範囲外の値が得られた場合は、 画面に描画されない頂点です。 6. [IN] 数値または、変数 : vertno 取得したい頂点の番号を指定します。 この引数を省略した場合や、-1を指定した場合は、 パーツの中心の2D座標を取得します。 7. [IN] 数値または、変数 : calcmode 1を指定してください。 |
ver3.0.0.1で追加 |
E3DEnableToonEdge | 描画パラメータ | 輪郭線のオンオフをします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線のオンオフをします。 3. [IN] 数値または、変数 : type 輪郭線のタイプを指定します。 0を指定してください。 4. [IN] 数値または、変数 : flag 輪郭をオンにしたい場合は1を、 オフにしたい場合は0を指定してください。 |
ver3.0.1.1で追加 |
E3DSetToonEdge0Color | 描画パラメータ | 輪郭線の色をセットします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線の色を設定します。 3. [IN] 文字列または、文字列の変数 : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 partnoに-1を指定している場合は、 "dummy"と指定してください。 4. [IN] 数値または、変数 : r 5. [IN] 数値または、変数 : g 6. [IN] 数値または、変数 : b 色のRGBを指定します。 それぞれ、0から255の整数を指定してください。 |
ver3.0.1.1で追加 |
E3DSetToonEdge0Width | 描画パラメータ | 輪郭線の幅をセットします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線の色を設定します。 3. [IN] 文字列または、文字列の変数 : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 partnoに-1を指定している場合は、 "dummy"と指定してください。 4. [IN] 数値または、変数 : width 輪郭の幅を実数で指定してください。 |
ver3.0.1.1で追加 |
E3DGetToonEdge0Color | 描画パラメータ | 輪郭線の色を取得します。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] 文字列または、文字列の変数 : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 4. [OUT] 変数 : r 5. [OUT] 変数 : g 6. [OUT] 変数 : b 輪郭の色のRGBが代入されます。 それぞれ、0から255の整数が取得されます。 指定したマテリアルが見つからなかった場合は (0, 0, 0)が代入されます。 |
ver3.0.1.1で追加 |
E3DGetToonEdge0Width | 描画パラメータ | 輪郭線の幅を取得します。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 |
1. [IN] 数値または、変数 : hsid 形状データを識別するID 2. [IN] 数値または、変数 : partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] 文字列または、文字列の変数 : materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 4. [OUT] 変数 : width 輪郭の幅が代入されます。 実数型の変数。 指定したマテリアルが見つからなかった場合は、 0.0が代入されます。 |
ver3.0.1.1で追加 |
E3DCreateParticle | パーティクル | パーティクルを作成します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : maxnum 表示できるパーティクルの最大数を指定します。 2. [IN] 文字列または、文字列の変数 : texname テクスチャー名をフルパスで指定します。 3. [IN] 数値または、変数 : width パーティクルの幅を指定します。 実数。 4. [IN] 数値または、変数 : height パーティクルの高さを指定します。 実数。 5. [IN] 数値または、変数 : blendmode 半透明のブレンドモードを指定します。 0を指定すると、 テクスチャのアルファによるブレンドをします。 1を指定すると、 アッドモードでのブレンドをします。 2を指定すると、 頂点のアルファを考慮した アッドモードブレンドをします。 5. [OUT] 変数 : particleid パーティクルを識別するIDが代入されます。 |
ver3.0.1.5で追加 |
E3DDestroyParticle | パーティクル | パーティクルを破棄します。 |
1. [IN] 数値または、変数 : particleid 削除したいパーティクルを識別するIDを指定します。 |
ver3.0.1.5で追加 |
E3DSetParticlePos | パーティクル | パーティクルの場所を設定します。 設定した場所からパーティクルが噴き出します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : posx 3. [IN] 数値または、変数 : posy 4. [IN] 数値または、変数 : posz パーティクルの位置を(posx, posy, posz)に 指定します。 実数。 |
ver3.0.1.5で追加 |
E3DSetParticleGravity | パーティクル | パーティクルの重力を設定します。 設定した値は、Y方向の負の加速度として計算に使用されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : gravity 重力を指定します。 実数。 |
ver3.0.1.5で追加 |
E3DSetParticleLife | パーティクル | パーティクルの寿命を設定します。 パーティクルが噴き出してから消えるまでの時間を 秒で指定します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : life パーティクルの寿命を指定します。 実数。 秒。 |
ver3.0.1.5で追加 |
E3DSetParticleEmitNum | パーティクル | パーティクルの生成個数をします。 E3DRenderParticleを呼ぶたびに指定した個数だけ生成されます。 実数での指定が可能です。 例えば0.2と指定した場合は、 5回E3DRenderParticleを呼び出すごとに1個パーティクルが 生成されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : emitnum パーティクルの1回あたりの生成個数を指定します。 実数。 |
ver3.0.1.5で追加 |
E3DSetParticleVel0 | パーティクル | パーティクルの速度を指定します。 速度の最低値をminvelx, minvely, minvelzに指定し、 速度の最大値をmaxvelx, maxvely, maxvelzに指定します。 最低値と最大値の幅が広いほど、 パーティクルは、まばらに放出されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : minvelx 3. [IN] 数値または、変数 : minvely 4. [IN] 数値または、変数 : minvelz パーティクルの速度の最小値を指定します。 実数。 5. [IN] 数値または、変数 : maxvelx 6. [IN] 数値または、変数 : maxvely 7. [IN] 数値または、変数 : maxvelz パーティクルの速度の最大値を指定します。 実数。 |
ver3.0.1.5で追加 |
E3DSetParticleRotation | パーティクル | パーティクルの回転を指定します。 この関数を呼び出すたびに、 パーティクルが指定角度だけ回転します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : rotation パーティクルの回転を角度(度)で指定します。 |
ver3.0.1.5で追加 |
E3DSetParticleDiffuse | パーティクル | パーティクルの頂点色を指定します。 テクスチャ色とモジュレートされて表示されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : r 3. [IN] 数値または、変数 : g 4. [IN] 数値または、変数 : b パーティクルの頂点色を指定します。 それぞれ、0から255の間の値を指定します。 |
ver3.0.1.5で追加 |
E3DRenderParticle | パーティクル | パーティクルを描画します。 呼び出すたびに、パーティクルの消滅、生成、位置移動をして、 描画します。 1.0 / fps 秒だけ時間を進めて描画します。 fpsにマイナスの値を指定した場合は、 パーティクルが静止した状態で描画します。 E3DCreateParticleで指定したmaxnum個より多いパーティクルは 描画できません。 パーティクルの噴出が、途中で途切れる場合は、 maxnumの値を増やすか、または、 E3DSetParticleEmitNumの値を小さくするか、または、 E3DSetParticleLifeに指定するlifeの値を小さくしてください。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : fps 1秒間に何回、この関数を呼ぶかを 指定してください。 3. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 |
ver3.0.1.5で追加 |
E3DSetParticleAlpha | パーティクル | パーティクルの透明度を設定します。 パーティクルが放出されてからの時間帯ごとに、 設定可能です。 生成されてからの時間が、mintimeからmaxtimeの間にある パーティクルに対して、処理を行います。 ちょっと重い処理です。 具体的な使用例は、 e3dhsp3_particle2.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : mintime 3. [IN] 数値または、変数 : maxtime 処理したいパーティクルの時間帯を 秒で指定します。 4. [IN] 数値または、変数 : alpha 透明度を0から1の間の実数で指定します。 |
ver3.0.1.6で追加 |
E3DSetParticleUVTile | パーティクル | パーティクルのUVを設定します。 パーティクルが放出されてからの時間帯ごとに、 設定可能です。 生成されてからの時間が、mintimeからmaxtimeの間にある パーティクルに対して、処理を行います。 この処理は、ビデオメモリにアクセスする必要があるので、 ちょっと重い処理です。 ひとつの画像に、タイル画像を敷き詰めたテクスチャの、UV座標を、タイル番号で、セットできます。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 具体的な使用例は、 e3dhsp3_particle2.hsp をご覧ください。 |
1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数 : mintime 3. [IN] 数値または、変数 : maxtime 処理したいパーティクルの時間帯を 秒で指定します。 4. [IN] 数値または、変数 : unum テクスチャの横方向の分割数を指定します。 5. [IN] 数値または、変数 : vnum テクスチャの縦方向の分割数を指定します。 6. [IN] 数値または、変数 : tileno 設定したいタイル番号を指定します。 |
ver3.0.1.6で追加 |
E3DInitParticle | パーティクル | パーティクルの発生状態を初期状態に戻します。 | 1. [IN] 数値または、変数 : particleid パーティクルを識別するIDを指定します。 |
ver3.0.1.8で追加 |
E3DPickFace2 | 当たり判定 | 2Dの画面の座標に対応する、3Dモデルの座標を取得できます。 判定したいパーツを指定できる点以外は、 E3DPickFaceと同じです。 詳しくはE3DPciFaceの説明をお読みください。 パーツ番号3とパーツ番号4についてのみ、判定を行いたい場合は、 partnum = 2 dim partarray, partnum partarray( 0 ) = 3 partarray( 1 ) = 4 の用に値をセットして、E3DPickFace2を呼び出してください。 |
1. [IN] 変数または、数値 : scid スワップチェインID。 E3DInitやE3DCreateSwapChainで取得したIDを 指定してください。 2. [IN] 数値または、変数 : hsid モデルを識別する番号を指定してください。 3. [IN] 配列変数 : partarray 判定したいパーツ番号を指定します。 dim partarray, partnumで作成してください。 4. [IN] 数値または、変数 : partnum partarray配列の要素数 5. [IN] 数値または、変数 : pos2x 6. [IN] 数値または、変数 : pos2y 画面上の2D座標を指定してください。 7. [IN] 数値または、変数 : maxdist どのくらいの距離まで、3Dモデルの検索をするかを指定します。 この値を小さくするほど、処理は高速になります。 8. [OUT] 変数 : partno 9. [OUT] 変数 : faceno 2D座標に対応する3D座標が見つかった場合に、 その3Dモデルのパーツの番号と、面の番号が 代入されます。 見つからなかった場合は、-1が代入されます。 10. [OUT] 変数 : pos3x 11. [OUT] 変数 : pos3y 12. [OUT] 変数 : pos3z 2D座標に対応する3D座標が代入されます。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数。 13. [OUT] 変数 : nx 14. [OUT] 変数 : ny 15. [OUT] 変数 : nz 2D座標に対応する3D座標を含む面の法線ベクトルが 代入されます。 ベクトルの大きさは1のものを代入します。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 16. [OUT] 変数 : dist 視点と(pos3x, pos3y, pos3z)との距離が代入されます。 partnoに-1以外の値が代入されているときのみ、 この値は意味を持ちます。 実数型の変数。 17. [IN] 数値または、変数 : calcmode 1を指定してください。 |
ver3.0.2.0で追加 |
E3DChkConfWall3 | 当たり判定 | E3DSetMovableArea, または、E3DLoadMQOFileAsMovableAreaで、作成した、壁データと、キャラクターのあたり判定を行います。 判定したい壁データのパーツ番号を指定できる点以外は、 E3DChkConfWallと同じです。 詳しくは、E3DChkConfWallの説明をお読みください。 壁モデルのパーツ番号3とパーツ番号4についてのみ、 判定を行いたい場合は、 partnum = 2 dim partarray, partnum partarray( 0 ) = 3 partarray( 1 ) = 4 の用に値をセットして、E3DConfWall3を呼び出してください。 |
1. [IN] 変数または、数値 : charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値 : groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 3. [IN] 配列変数 : partarray 判定したい壁のパーツ番号を指定します。 dim partarray, partnumで作成してください。 4. [IN] 数値または、変数 : partnum partarray配列の要素数 5. [IN] 変数または、数値 : dist 跳ね返る距離。 distに大きな値を入れると、 ぶつかった際に、大きく、跳ね返るようになります。 実数。 6. [OUT] 変数 : result あたり判定の結果が代入されます。 壁とぶつかった場合は、1が、 ぶつからなかった場合は、0が、代入されます。 7. [OUT] 変数 : adjustx 8. [OUT] 変数 : adjusty 9. [OUT] 変数 : adjustz result != 0 のときに、 修正後の座標が、 (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 10. [OUT] 変数 : nx 11. [OUT] 変数 : ny 12. [OUT] 変数 : nz result != 0 のときに、 ぶつかった面の法線ベクトルの値が、 代入されます。 実数型の変数。 |
ver3.0.2.0で追加 |
E3DGetMotionIDByName | モーション | モーションの名前からモーションのIDを取得します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [IN] 文字列または、文字列変数 : motname RokDeBone2で設定したモーションの名前。 3. [OUT] 変数 : motid 名前がmotnameであるモーションのIDが代入されます。 |
ver3.0.2.0で追加 |
E3DGetMotionNum | モーション | 読み込んでいるモーションの総数を取得します。 | 1. [IN] 変数または、数値 : hsid 形状データを識別するid 2. [OUT] 変数 : motnum モーションの総数が代入されます。 |
ver3.0.2.0で追加 |
E3DDot2 | 算術 | 内積を計算します。 E3DDotと違って、E3DDot2は、与えたベクトルを正規化しません。 |
1. [IN] 変数または、数値 : vecx1 2. [IN] 変数または、数値 : vecy1 3. [IN] 変数または、数値 : vecz1 実数。 4. [IN] 変数または、数値 : vecx2 5. [IN] 変数または、数値 : vecy2 6. [IN] 変数または、数値 : vecz2 実数。 7. [OUT] 変数 : ret 内積の結果が代入される。 実数型の変数。 |
ver3.0.2.0で追加 |