Easy3D For HSP3 関数の説明

既にEasy3Dを使ったことがある方へ
ＨＳＰ2.61からHSP3対応になるにあたって、変更した点などは、
変更点について
に書きました。
（スワップチェインについての説明も書いてあります。）
ver3.0.0.1での変更点についてもお読みください。

おおざっぱに説明しますと、
形状データに　*.sig ファイルを、モーションデータに *.qua ファイルを使用します。
それぞれのデータは、RokDeBone2で作成可能です。
（詳しくは、RokDeBone2のページをご覧ください。）
さて、e3dhsp.dllの関数の説明ですが、
まず、E3DSigLoadで、モデルデータ(sig file)を読み込むごとに、hsid というものが得られます。
(hsid とは、Handler Set ID の略です。)
各モデルデータを識別したり、モデルデータに対して処理を行う際は、
いつも、この、hsid を使用します。
また、E3DAddMotionで、モーションデータを読み込むごとに、モーションの番号が得られます。
e3dhsp3_fight.hsp　中では、mk1_* などというように、表記しています。
（ちなみに、ｍｋ　は　motion kind の略です。）
モーションのセットや、変更には、いつも、この、モーション番号を使います。
カメラの操作方法は、２種類用意しました。
E3DSetCameraPos と、E3DSetCameraDeg、E3DSetCameraTwist を組で使用する方法と、
E3DSetCameraPos と、E3DSetCameraTarget、E3DSetCameraTwistを組で使用する方法とがあります。
どちらか一方の方法で、統一して、使用することを想定しています。
ver1.0.4.0から、カメラの操作方法が、１種類増えました。
E3DSetCameraPos
E3DCameraLookAt
E3DCameraOnNaviLine
E3DCameraDirUp
E3DCameraDirDown
E3DCameraDirRight
E3DCameraDirLeft
E3DSetCameraTwist
を組で、使用する方法です。
他の２種類の方法と混ぜて使用することは、想定していません。

それぞれの、関数の役割と、引数の説明を表にしました。

関数名 | 種類 | 説明 | 引数 | 備考
--- | --- | --- | --- | ---
E3DInit | 初期化 | Direct3Dの初期化をする。 フルスクリーンにも対応しています。 フルスクリーンの解像度は、 指定したウインドウＩＤの幅に 一番近いものを自動で選びます。 ６４０×４８０、 ８００×６００、 １０２４×７６８、 １２８０×１０２４、 １４００×１０５０、 １６００×１２００ の中から選びます。 ＨＡＬ（ハードウェアの機能）が使えない場合は、エラーになります。 指定したビット数が使えない場合にも、 エラーになります。 エラーでアプリケーションが終了するのが 嫌な場合は、 この命令を呼ぶ前に、E3DCheckFullScreenParamsを呼んで チェックすることをおすすめします。 フルスクリーンの具体的な使用例は、 e3dhsp3_fullscreen.hsp に書きましたので、ご覧ください。 アンチエイリアスについて。 multisamplenumは０または２から１６の値を指定してください。 multisamplenumの値が大きいほど、 画像のエッジがなめらかになります。 ０を指定するとアンチエイリアスは使えません。 multisamplenumに０以外を指定する場合は、 その前に、 E3DGetMaxMultiSampleNumで 指定できる最大値を取得してください。 アンチエイリアスをオンにすると（０以外を指定すると）、 ＢＭＰ保存や、ＡＶＩ保存の命令が使えなくなります。 （E3DWriteDisplay2BMP、E3DCreateAVIFileと他のＡＶＩ関連関数が使用できなくなります。） アンチエイリアスを有効にするには、 作成した全てのhsidに対して、 E3DSetRenderState hsid, -1, D3DRS_MULTISAMPLEANTIALIAS, 1 を呼んでください。 アンチエイリアスの具体的な使用例は、 e3dhsp3_antialias.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　wid ウインドウのＩＤを渡してください。 screen命令やbgscr命令に指定したのと同じ番号を 指定してください。 2. [IN] 変数または、数値　：　objid オブジェクトＩＤ。 ＨＳＰでボタンなどのオブジェクトを作り、 その上に３Ｄ表示したい場合に、この引数を使います。 ＨＳＰでは、オブジェクト作成直後のstat変数に、 オブジェクトＩＤが入っています。 このＩＤを指定してください。 widで指定したウインドウ全体に、 3D描画を行いたい場合は、 この引数には-1を指定してください。 3. [IN] 変数または、数値　：　fullscreenflag フルスクリーンにするときは１を、 しないとき（ウインドウモード）は０を指定してください。 省略した場合は、ウインドウモードになります。 4. [IN] 変数または、数値　：　bits 色数を決めるビット数を指定してください。 １６あるいは、３２のみ有効です。 fullscreenflagに１を指定したときのみ、結果に反映されます。 5. [IN] 変数または、数値　：　multisamplenum マルチサンプルの数。 詳しくは、右記をご覧ください。 6. [OUT] 変数　：　scid スワップチェインＩＤが代入されます。 このＩＤは、どの部分に描画を行うかを指定するのに 使います。 E3DChkInView, E3DRender, E3DBeginScene, E3DPresent 　　などで 必要になります。 7. [IN] 変数または、数値　：　gpuflag １を指定するとビデオカードに頂点シェーダー、 ピクセルシェーダーがある場合には、 それを使って頂点処理します。 ０を指定すると、ソフトウェアで頂点処理します。 省略した場合は１が適用されます。 8. [IN] 変数または、数値　：　enablereverb １を指定するとステレオサウンドのリバーブが オンになります。 ０を指定するとリバーブがオフになります。 省略した場合は、１が適用されます。 | ver1.0.0.1
E3DBye | 後処理 | Direct3Dの後処理をする。 作成したメモリなどの解放を行います。 アプリケーションの終了時に呼んでください。 | なし | ver1.0.0.1
E3DSigLoad | モデルデータ | 形状データ（*.sig）を読み込んで、hsidを得る。 | 1. [IN] 文字列または、文字列の変数　：　fname *.sig のパス文字列。 2. [OUT] 変数　：　hsid 読み込んだ形状データを識別するhsid 3. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 4. [IN] 変数または、数値　：　mult 読み込み倍率を指定してください。 実数。 | ver1.0.0.1
E3DCreateSwapChain | スワップチェイン | スワップチェインを作成します。 スワップチェインとは、複数の画面に描画を行うためのものです。 E3DInitで指定したウインドウとオブジェクト以外のところに、 描画したい場合に、この命令を呼びます。 この命令で取得したscidを、 E3DChkInView, E3DBeginScene, E3DRender, E3DPresentなどに渡すことにより、 複数画面に３Ｄ描画できるようになります。 具体的な使用例は、 e3dhsp3_SwapChain.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　wid ウインドウのＩＤを渡してください。 screen命令やbgscr命令に指定したのと同じ番号を 指定してください。 2. [IN] 変数または、数値　：　objid オブジェクトＩＤ。 ＨＳＰでボタンなどのオブジェクトを作り、 その上に３Ｄ表示したい場合に、この引数を使います。 ＨＳＰでは、オブジェクト作成直後のstat変数に、 オブジェクトＩＤが入っています。 このＩＤを指定してください。 widで指定したウインドウ全体に、 3D描画を行いたい場合は、 この引数には-1を指定してください。 3. [OUT] 変数　：　scid スワップチェインＩＤが代入されます。 このＩＤは、どの部分に描画を行うかを指定するのに 使います。 E3DChkInView, E3DRender, E3DBeginScene, E3DPresent　　などで 必要になります。 | ver1.0.0.1
E3DDestroySwapChain | スワップチェイン | スワップチェインを破棄します。 E3DCreateSwapChainで作成したスワップチェインが、 もういらなくなった場合に、呼んでください。 E3DInitで取得したscidに対しては、呼び出さないでください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DCreateSwapChainで取得したＩＤを指定してください。 | ver1.0.0.1
E3DRender | 描画 | バックバッファにレンダリングする。 変更したボーンの中で、 一番親の番号をlastparentに指定すると、 そのボーンツリーの影響を受ける頂点のみを 抽出して、計算します。 lastparentは、高速化のためのものです。 E3DIKRotateBetaで取得できるlastparentの値を 渡すことを想定しています。 キャラクター全体が移動した場合や、 カメラが移動した場合には、使わないでください。 また、E3DRenderの初回の呼び出し時にも 使わないでください。 lastparentを使用したくない場合は、 ０をセットしてください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 変数または、数値　：　hsid 形状データを識別するid 3. [IN] 変数または、数値　：　withalpha ０を指定すると、不透明パーツのみレンダリングする。 １を指定すると、半透明パーツのみレンダリングする。 4. [IN] 変数または、数値　：　framecnt E3DSetNewPose実行後のnextframeの値を指定する。 5. [IN] 変数または、数値　：　projection mode プロジェクションの、モードを指定する。 ０を指定すると、通常の表示。 １を指定すると、画面中央にレンズがあるように表示される。 6. [IN] 変数または、数値　：　lastparent 変更が生じた一番親のボーンの番号を指定します。 詳しくは、左記をご覧ください。 7. [IN] 変数または、数値　：　sigLightFlag sigのライティング計算を有効にしたいときは１を、 無効にしたいときは０を指定してください。 デフォルトは１です。 背面カリングを行わずに、 全ての頂点の色計算をしたい場合には、 ２を指定してください。 8. [IN] 変数または、数値　：　transskip transskipに１をセットすると、 頂点変換処理がスキップされます。 不透明、半透明と、２回、E3DRenderを呼び出す場合は、 ２回目の呼び出し時に、transskipに１を指定してください。 | ver1.0.0.1 ver1.0.0.5で引数追加
E3DPresent | 描画 | バックバッファの内容を、 プライマリバッファに転送する。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 | ver1.0.0.1
E3DBeginScene | 描画 | アプリケーションでは、レンダリングを実行する前には必ずこのメソッドを呼び出し、 レンダリングの終了時、 および再度E3DBeginSceneを呼び出す前には、 必ず E3DEndSceneを呼び出す。 具体的には、 E3DRender, E3DDrawText, E3DDrawBigTextを、 E3DBeginSceneと、E3DEndSceneでサンドイッチするように記述する。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 変数または、数値　：　skipflag skipflagに０以外を指定すると、 バックバッファのクリア、背景の表示をスキップします。 E3DCopyTextureToBackBufferを使うときなどに、 使用してください。 | ver1.0.0.1
E3DEndScene | 描画 | このメソッドが成功すると、シーンがレンダリングされ、レンダリング後のシーンがデバイス サーフェスに保持される。 | なし | ver1.0.0.1
E3DCreateBG | 背景 | 画面の一番奥に表示される背景をセットします。 画像ファイルは、２つまで、指定できます。 ２個目の画像は、雲や、もや用を想定しています。 １つ目の画像と２つ目の画像は、モジュレートされて、表示されます。 isroundに１をセットすると、 背景が、視点の回転に対応して、回転するようになります。 ビデオカードがマルチテクスチャに対応していない場合、 または、モジュレート処理が出来ない場合は、 1個目のテクスチャーしか表示しないように なっています。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 文字列または、文字列変数　：　filename1 １つ目の画像ファイル名。 3. [IN] 文字列または、文字列変数　：　filename2 ２つ目の画像ファイル名。 ２つ目が不必要な場合は、存在しないファイル名を、 渡してください。 4. [IN] 変数または、数値　：　u 5. [IN] 変数または、数値　：　v ２枚目の画像の、ＵＶ座標を、毎フレーム、どれくらい、 移動させるかを指定します。 通常は、0から１までの値を指定してください。 実数。 6. [IN] 変数または、数値　：　isround isroundに、１を指定すると、 ビューの回転に対応して、 一つ目の画像ファイルのＵＶ座標が、回転します。 この際、画像ファイルの左端と、右端が、 連続するようなデータでないと、 つなぎ目が見えてしまいますので、注意してください。 isroundに０を指定すると、 １つ目の画像は、回転しません。 7. [IN] 変数または、数値　：　fogdist フォグの計算に使う、カメラからの距離を指定します。 この引数に、E3DSetLinearFogParamsで指定する endより小さい値を指定すれば、 背景は、フォグの色に染まりながらも、 うっすらと見えるように出来ます。 | ver1.0.0.1 ver2.0.0.9で引数追加
E3DSetBGU | 背景 | 背景のＵＶ座標のＵ座標を指定します。 画面の左端のＵ座標の値をstartu引数に、 画面の右端のＵ座標の値をendu引数に、 それぞれ、指定してください。 この機能を使った、背景のスクロールの例は、 e3dhsp3_scrollBG.hsp にあります。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　startu 画面左端のＵ座標の値。 実数。 3. [IN] 数値または、変数　：　endu 画面右端のＵ座標の値。 実数。 | ver1.0.0.1
E3DSetBGV | 背景 | 背景のＵＶ座標のＶ座標を指定します。 画面の一番上のＶ座標の値をstartv引数に、 画面の一番下のＶ座標の値をendv引数に、 それぞれ、指定してください。 この機能を使った、背景のスクロールの例は、 e3dhsp3_scrollBG.hsp にあります。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　startv 画面左端のV座標の値。 実数。 3. [IN] 数値または、変数　：　endv 画面右端のV座標の値。 実数。 | ver1.0.0.1
E3DDestroyBG | 背景 | 背景を破棄します。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 | ver1.0.0.1
E3DAddMotion | モーション | モーションデータ(*.qua)を読み込む。 | 1. [IN] 変数または、数値　：　hsid どのモデルデータに対するモーションかを指定する。 2. [IN] 文字列または、文字列の変数　：　fname *.quaのパス文字列。 3. [OUT] 変数　：　mk 読み込んだモーションを識別する番号 4. [OUT] 変数　：　maxframe 読み込んだモーションの最大フレーム番号 （総フレーム数 - 1 と同じ） 5. [IN] 変数または、数値　：　mvmult モーションの移動成分に掛ける倍率 省略すると１．０ 実数 | ver1.0.0.1 ver4.0.1.6で引数追加
E3DSetMotionKind | モーション | カレントの、モーション番号を指定する。 （カレントモーションを変更する。） この関数を実行すると、 モーションのフレーム番号は、 ０にセットされる。 | 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に、２を指定すると、 ２フレームごとに（１フレームおきに）、 モーションを再生するようになる。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　mk モーションを識別する番号 3. [IN] 変数または、数値　：　step 何フレームごとに、モーションを再生するかを指定する。 | ver1.0.0.1
E3DChkConflict | 当たり判定 | ２つの形状データが、衝突しているかどうかを判定する。 （判定の元になるデータは、 E3DChkInView命令によって更新される。） hsid1が視野外にある場合は、inviewflagに１が、 hsid2が視野外にある場合は、inviewflagに２が、 両方とも視野外の場合は、inviewflagに３が、 両方とも視野内の場合は、inviewflagに０が代入されます。 現在は、 E3DChkConflict2があります。 パーツ同士のあたり判定が出来るようになりました。 モデル全体のあたり判定も出来ます。 モデル全体のあたり判定をする場合でも、 E3DChkConflict2の方が、パーツごとの計算をするので、この関数よりも計算精度が高いです。 新しい、E3DChkConflict2をお使いください。 | 1. [IN] 変数または、数値　：　hsid1 形状データを識別するid 2. [IN] 変数または、数値　：　hsid2 形状データを識別するid 3. [OUT] 変数　：　confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、１が、 衝突していない場合は０がセットされる。 4. [OUT] 変数　：　inviewflag hsid1が視野外にある場合は、inviewflagに１を、 hsid2が視野外にある場合は、inviewflagに２を、 両方とも視野外の場合は、inviewflagに３を、 両方とも視野内の場合は、inviewflagに０を代入します。 | ver1.0.0.1
E3DChkConflict2 | 当たり判定 | ２つの形状データの指定したパーツ同士が、衝突しているかどうを判定します。 partno1, partno2には、 E3DGetPartNoByNameで取得した、 パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 （判定の元になるデータは、 E3DChkInView命令によって、更新されます。） hsid1が視野外にある場合は、inviewflagに１が、 hsid2が視野外にある場合は、inviewflagに２が、 両方とも視野外の場合は、inviewflagに３が、 両方とも視野内の場合は、inviewflagに０が代入されます。 | 1. [IN] 変数または、数値　：　hsid1 形状データを識別するid 2. [IN] 変数または、数値　：　partno1 hsid1のモデル中のパーツの番号 3. [IN] 変数または、数値　：　hsid2 形状データを識別するid 4. [IN] 変数または、数値　：　partno2 hsid2のモデル中のパーツの番号 5. [OUT] 変数　：　confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は１が、 衝突していない場合は０がセットされる。 6. [OUT] 変数　：　inviewflag hsid1が視野外にある場合は、inviewflagに１を、 hsid2が視野外にある場合は、inviewflagに２を、 両方とも視野外の場合は、inviewflagに３を、 両方とも視野内の場合は、inviewflagに０を代入します。 | 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 ０を指定すると、不透明で描画され、 １を指定すると、alpha = 0.5 で描画されます。 3. [IN] 変数または、数値　：　updateflag 1を指定してください。 | ver1.0.0.1
E3DSetAlpha2 | 描画パラメータ | ビルボードの頂点のアルファ値を設定します。 sigモデルデータのアルファの設定は E3DSetMaterialAlphaをお使いください。 alphaval が１．０の時は、不透明に、 alphavalが０．０の時は、完全に透明になります。 alphavalに１．０以外の値を指定した場合は、 E3DRenderの2番目の引数withalphaに、 １を指定して描画します。 具体的な使用例はzip中の、 e3dhsp3_alpha.hsp　をご覧ください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの透明度を設定できます。 2. [IN] 数値または、変数　：　alphaval 頂点のアルファ値を指定します。 頂点のアルファ値は、０．０から１．０の値で 指定してください。 範囲外の値は、クランプしてセットします。 実数。 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 | モデル向き | 形状データを、Ｙ軸に関して、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の３次元版。 ただし、形状データが、初期状態で、 Z軸の負の方向(0.0, 0.0, -1.0)を向いているものと仮定しています。 | 1. [IN] 変数または、数値　：　hsid1 向きを変える形状データを、識別するid 2. [IN] 変数または、数値　：　hsid2 hsid2で指定した形状データの方向を向く。 | ver1.0.0.1
E3DSeparateFrom | モデル位置 | hsid1で識別される形状を、hsid2で識別される形状と、逆の方向に、動かす。 | 1. [IN] 変数または、数値　：　hsid1 移動する形状データを、識別するid 2. [IN] 変数または、数値　：　hsid2 hsid2で指定した形状データと反対方向に移動する。 3. [IN] 変数または、数値　：　dist 形状同士をどのくらいの距離、離すかを指定する。 実数。 | ver1.0.0.1
E3DGetCameraPos | カメラ | カメラの位置を取得する。 | 1. [OUT] 変数　：　posx 2. [OUT] 変数　：　posy 3. [OUT] 変数　：　posz 実数型の変数。 カメラの位置、　( posx, posy, posz) を取得する。 | ver1.0.0.1
E3DSetCameraPos | カメラ | カメラの位置を指定する。 | 1. [IN] 変数または、数値　：　posx 2. [IN] 変数または、数値　：　posy 3. [IN] 変数または、数値　：　posz カメラを　( posx, posy, posz) に移動する。 実数。 | ver1.0.0.1
E3DGetCameraDeg | カメラ | カメラの向きを取得する。 | 1. [OUT] 変数　：　degxz カメラのXZ平面での角度を取得する。 実数型の変数。 2. [OUT] 変数　：　degy カメラの仰ぎ角度を取得する。 実数型の変数。 | ver1.0.0.1
E3DSetCameraDeg | カメラ | カメラの向きを指定する。 | 1. [IN] 変数または、数値　：　degxz カメラのXZ平面での角度を指定する。 実数。 2. [IN] 変数または、数値　：　degy カメラの仰ぎ角度を指定する。 実数。 | ver1.0.0.1
E3DSetCameraTarget | カメラ | カメラの注視点を指定する。 | 1. [IN] 変数または、数値　：　targetx 2. [IN] 変数または、数値　：　targety 3. [IN] 変数または、数値　：　targetz カメラの注視点を(targetx, targety, targetz)にセットする。 実数。 4. [IN] 変数または、数値　：　upvecx 5. [IN] 変数または、数値　：　upvecy 6. [IN] 変数または、数値　：　upvecz カメラの上方向のベクトルを指定する。 内部で、正規化して使用される。 実数。 | ver1.0.0.1
E3DChkInView | 描画準備 | hsidで識別されるモデルが、視野内にあるかどうかを、判定します。 結果は、E3DHSPの内部データに、セットされます。 視野外のオブジェクトや、パーツは、 E3DRender時に、 自動的に、処理をスキップするようになります。 必ず、E3DSetPosや、E3DSetNewPoseより後、 E3DRenderや、あたり判定より前に、 呼び出してください。 この命令を呼び出した直後のstatシステム変数には、 ひとつも視野内にパーツがない場合は０が、 少なくとも１つは視野内にパーツがある場合は１がセットされます。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 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 で、確保してください。 複数のキーの状態を、一度の呼び出しで、 取得できます。 例えば、Ａキーが押されているかどうかを 確かめる場合は、 E3DGetKeyboardState 呼び出し後に、 keybuf('A') の値を調べます。 （　’　を忘れずに。　） ０が入っていた場合は、押されていません。 １が入っていた場合は、押されています。 具体的な使用例は、zip中の、hsp ファイルをご覧ください。 バーチャルキー情報は、zip中の、 e3dhsp3.as で、 VK_ で始まる定数として、宣言しています。 | 1. [OUT] 変数　：　keybuf keybufに、キーの状態が、代入されます。 keybufは、dim keybuf, 256 で、 作成されている必要があります。 | ver1.0.0.1
E3DCos | 算術 | cosを取得する。 | 1. [IN] 変数または、数値　：　degree degree度のcosを計算します。 実数。 2. [OUT] 変数　：　ret cos の結果がセットされる。 実数型の変数。 | ver1.0.0.1
E3DSin | 算術 | sinを取得する。 | 1. [IN] 変数または、数値　：　degree degree度のsinを計算します。 実数。 2. [OUT] 変数　：　ret sin の結果がセットされる。 実数型の変数。 | ver1.0.0.1
E3DACos | 算術 | acosを取得する。 | 1. [IN] 変数または、数値　：　dot たとえば、内積をいれる。 2. [OUT] 変数　：　degree acos( dot ) が degreeにセットされる。 実数型の変数。 | ver1.0.0.1
E3DDot | 算術 | (vecx1, vecy1, vecz1)と、（vecx2, vecy2, vecz2）を、それぞれ正規化したもの同士の内積を取得する。 | 1. [IN] 変数または、数値　：　vecx1 2. [IN] 変数または、数値　：　vecy1 3. [IN] 変数または、数値　：　vecz1 実数。 4. [IN] 変数または、数値　：　vecx2 5. [IN] 変数または、数値　：　vecy2 6. [IN] 変数または、数値　：　vecz2 実数。 7. [OUT] 変数　：　ret 結果が代入される。 実数型の変数。 | ver1.0.0.1
E3DCross | 算術 | (vecx1, vecy1, vecz1)と、（vecx2, vecy2, vecz2）の両方に垂直で、大きさが１ なベクトル(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が１.0のときは、１２ポイントの大きさ。 | 1. [IN] 変数または、数値　：　posx 2. [IN] 変数または、数値　：　posy 座標。整数。 3. [IN] 変数または、数値　：　scale 実数。 4. [IN] 変数または、数値　：　r 5. [IN] 変数または、数値　：　g 6. [IN] 変数または、数値　：　b 色（０から２５５） 7. [IN] 文字列または、文字列変数　：　str 表示文字列。 | ver1.0.0.1
E3DDrawBigText | テキスト | 画面上の(posx, posy) に、r, g, b で指定した色で、strの文字列を書く。 英数字のみ。 scaleが１のときは、３６ポイントの大きさ。 | 1. [IN] 変数または、数値　：　posx 2. [IN] 変数または、数値　：　posy 座標。整数。 3. [IN] 変数または、数値　：　scale 実数。 4. [IN] 変数または、数値　：　r 5. [IN] 変数または、数値　：　g 6. [IN] 変数または、数値　：　b 色（０から２５５） 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します。 ｆｐｓとは、1秒間に描画するのこと回数です。 指定したｆｐｓ以上、 処理を行わないようにするための命令です。 遅いマシンが、速くなるわけではないので、 注意してください。 必ず、HSPの標準命令、”await 0”と セットで使用してください。 実際のｆｐｓが、retfps変数に、代入されます。 | 1. [IN] 変数または、数値　：　ｆｐｓ 指定したｆｐｓに、近くなるように、waitします。 整数。 2. [OUT] 変数　：　retfps 実際のfpsが代入されます。 整数。 | ver1.0.0.1
E3DGetFPS | 同期 | fpsを計測します。 メインループの最後などで呼び出すことを想定しています。 E3DGetFPSが呼ばれる時間間隔から、 1秒間あたりに、何回呼び出されるかを計算します。 | 1. [OUT] 変数　：　retfps fpsが代入されます。 整数。 | ver1.0.0.1
E3DCreateLight | ライト | 光源を作成します。 光源の識別番号、lightIDが取得できます。 以後、光源のパラメータの設定には、 この、lightIDを使用します。 | 1. [OUT] 変数　：　lightID 作成したライトを識別するID。 | ver1.0.0.1
E3DSetDirectionalLight | ライト | lightIDで識別される光源に、平行光源のパラメータをセットする。 | 1. [IN] 変数または、数値　：　lightID 光源を識別するid 2. [IN] 変数または、数値　：　dirx 3. [IN] 変数または、数値　：　diry 4. [IN] 変数または、数値　：　dirz 平行光源の向きを、 ベクトル(dirx, diry, dirz)を正規化したベクトルに、 設定する。 実数。 5. [IN] 変数または、数値　：　r 6. [IN] 変数または、数値　：　g 7. [IN] 変数または、数値　：　b 平行光源の色を、 （r, g, b）に設定する。 各色の値は、０から２５５までの値とする。 | 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）に設定する。 各色の値は、０から２５５までの値とする。 | 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）に設定する。 各色の値は、０から２５５までの値とする。 | ver1.0.0.1
E3DDestroyLight | ライト | ライトを破棄します。 | 1. [IN] 変数または、数値　：　lightID 削除する光源を、識別するid | ver1.0.0.1
E3DClearZ | 描画 | Ｚバッファーをクリアーします | なし | 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に１を指定すると、スイッチをオンに、 ０を指定すると、スイッチをオフにします。 | ver1.0.0.1
E3DSetMotionFrameNo | モーション | E3DSetMotionKindの拡張版です。 モーションの種類と、フレーム番号を セットすることが出来ます。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　mk モーションを識別する番号 3. [IN] 変数または、数値　：　frameno フレーム番号 | ver1.0.0.1
E3DCreateSprite | スプライト | スプライトを作成します。 spriteIDで、スプライトを識別するＩＤを、 取得できます。 スプライトの操作時には、この、spriteIDを 使用します。 作成されるスプライトのサイズは、 元の画像ファイルの大きさと、 異なる場合があります。 サイズは、E3DGetSpriteSize で、 確認してください。 | 1. [IN] 文字列または、文字列変数　：　filename 画像ファイル名。 2. [IN] 変数または、数値　：　transparentflag 透過フラグ。 画像ファイルのアルファをもとに透過する場合、 あるいは、画像ファイルにアルファが無く透過もしない場合、 ０を指定してください。 １をセットすると、黒色を透過色として色抜きします。 ２をセットすると、（tpR, tpG, tpB）で指定した色を 透過色とします この関数のtransparetflagの意味は、 他の関数のtransparentとは、違うので、 気を付けてください。 3. [OUT] 変数　：　spriteID 作成したスプライトを識別するＩＤ。 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 スプライトを識別するＩＤ。 2. [IN] 変数または、数値　：　scalex 3. [IN] 変数または、数値　：　scaley スプライトのｘ軸、ｙ軸方向の倍率を指定します。 実数を指定。（等倍は１．０） 4. [IN] 変数または、数値　：　trax 5. [IN] 変数または、数値　：　tray スプライトの描画位置（trax, tray）を指定します。 指定した位置が、スプライトの左上の座標となります。 整数。 6. [IN] 変数または、数値　：　traz 描画時の奥行き情報。 ３D描画との前後関係にも、反映されます。 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 スプライトを識別するＩＤ。 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 の値をこの関数に渡せば、ＯＫです。 回転角度は、絶対量です。 相対量ではありません。 E3DSetSpriteRotation命令は、 一度、呼び出せば、内部で、情報を記憶しますので、次に異なるパラメータで呼び出すまで、 その値が有効になります。 | 1. [IN] 数値または、変数　：　spid スプライトデータを識別するＩＤ 2. [IN] 数値または、変数　：　centerx 3. [IN] 数値または、変数　：　centery (centerx, centery)の座標を中心に回転します。 実数対応。 4. [IN] 数値または、変数　：　rotdeg rotdeg 度だけ、スプライトを回転します。 実数。 | ver1.0.0.1
E3DSetSpriteARGB | スプライト | スプライトに乗算する色を指定します。 alpha, r, g, b には、それぞれ、 ０から２５５までの値を渡してください。 alpha に255より小さい値を渡せば、 半透明のスプライトの描画が出来ます。 スプライトの色を変えたくない場合には、 r, g, bには、255を渡してください。 | 1. [IN] 数値または、変数　：　spid スプライトデータを識別するＩＤ 2. [IN] 数値または、変数　：　alpha 3. [IN] 数値または、変数　：　r 4. [IN] 数値または、変数　：　g 5. [IN] 数値または、変数　：　b スプライトに乗算する色を指定します。 半透明にする場合には、 alphaに255より小さい値を入れます。 | ver1.0.0.1
E3DDestroySprite | スプライト | spriteIDで識別される、スプライトを、 破棄します。 | 1. [IN] 変数または、数値　：　spriteID スプライトを識別するＩＤ。 | ver1.0.0.1
E3DChkConfBillboard2 | ビルボード | 指定した境界球（中心と半径）と、全てのビルボードとのあたり判定をします。 hsidの代わりに、境界球を指定すること以外は、 E3DChkConfBillboardと同じです。 衝突したビルボードのＩＤが取得できます。 | 1. [IN] 変数または、数値　：　centerx 2. [IN] 変数または、数値　：　centery 3. [IN] 変数または、数値　：　centerz 境界球の中心座標( centerx, centery, centerz ) 実数。 4. [IN] 変数または、数値　：　r 境界球の半径 実数。 5. [IN] 変数または、数値　：　confrate ビルボードの境界球の半径に、掛ける係数 半径　×　confrate で計算されます。 実数。 6. [OUT] 変数　：　resultptr あたり判定の結果が代入されます。 当たった場合は１が、 当たらなかった場合は０が代入されます。 7. [OUT] 変数　：　confbbid 8. [IN] 変数または、数値　：　arrayleng 衝突したビルボードのＩＤを格納するための配列 dim confbbid, arrayleng などの命令で、配列を作成して、 この関数に指定してください。 arrayleng個以上のビルボードと、 同時に衝突した場合には、エラーになるので、 配列長のarraylengは、少し大きめの値にしてください。 9. [OUT] 変数　：　confnum 衝突したビルボードの個数が代入されます。 maxno = confnum - 1 とすると、 confbbid(0) から、confbbid(maxno) までの間に、 衝突したビルボードのＩＤが代入されます。 | ver1.0.0.1
E3DChkConfBillboard | ビルボード | hsidで識別されるモデルデータと、全てのビルボードのあたり判定をします。 境界球による判定を行います。 当たらなかった場合は、 resultに０が代入され、 当たった場合は、 resultに１が代入されます。 confrateで、ビルボードの境界球の大きさを変更することが出来ます。 例えば、confrateに0.5を入れると、 実際の半径×0.5 つまり、半分の半径で計算されます。 confrateに小さな値を入れることで、 モデルがビルボードの近くを すり抜けることが出来るようになります。 衝突したビルボードのＩＤが取得できます。 具体的な使用例は、 e3dhsp3_ground.hsp をご覧ください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別する番号 2. [IN] 変数または、数値　：　confrate ビルボードの境界球の半径に、掛ける係数 半径　×　confrate で計算されます。 実数。 3. [OUT] 変数　：　result あたり判定の結果が代入されます。 当たった場合は１が、 当たらなかった場合は０が代入されます。 4. [OUT] 変数　：　confbbid 5. [IN] 変数または、数値　：　arrayleng 衝突したビルボードのＩＤを格納するための配列 dim confbbid, arrayleng などの命令で、配列を作成して、 この関数に指定してください。 arrayleng個以上のビルボードと、 同時に衝突した場合には、エラーになるので、 配列長のarraylengは、少し大きめの値にしてください。 6. [OUT] 変数　：　confnum 衝突したビルボードの個数が代入されます。 maxno = confnum - 1 とすると、 confbbid(0) から、confbbid(maxno) までの間に、 衝突したビルボードのＩＤが代入されます。 | ver1.0.0.1
E3DChkConfBySphere | 当たり判定 | 境界球によるあたり判定を行います。 判定の際に、E3DChkInViewでセットした データを使用します。 conflevelに１を指定した場合は、 モデル単位の粗い判定のみを行います。 conflevelに２を指定した場合は、 パーツ単位の判定を行います。 現在は、 任意のパーツ同士のあたり判定の出来る、 E3DChkConfBySphere2があります。 | 1. [IN] 変数または、数値　：　hsid1 形状データを識別するid 2. [IN] 変数または、数値　：　hsid2 形状データを識別するid 3. [IN] 変数または、数値　：　conflevel １を指定した場合は、モデル単位の判定を、 ２を指定した場合は、パーツ単位の判定をします。 4. [OUT] 変数　：　confflag hsid1, hsid2で識別される形状同士が、 衝突している場合は、１が、 衝突していない場合は０がセットされる。 | 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で識別される形状同士が、 衝突している場合は、１が、 衝突していない場合は０がセットされる。 | ver1.0.0.1
E3DCreateProgressBar | プログレスバー | メインウインドウの下の部分に、プログレスバーを作ります。 | なし | ver1.0.0.1
E3DSetProgressBar | プログレスバー | 作業の達成率などを、 プログレスバーに表示させます。 newpos は、０から１００の間の数を、 セットしてください。 | 1. [IN] 変数または、数値　：　newpos 0から１００の値。 | ver1.0.0.1
E3DDestroyProgressBar | プログレスバー | プログレスバーを削除します。 | なし | ver1.0.0.1
E3DLoadGroundBMP | 地面 | BMPデータから、地面を生成します。 詳しくは、地面データの作り方をご覧ください。 | 1. [IN] 文字列または、文字列変数　：　filename1 地面の座標情報の元となる、ＢＭＰファイル名 2. [IN] 文字列または、文字列変数　：　filename2 地面の道の情報の元となる、ＢＭＰファイル名 3. [IN] 文字列または、文字列変数　：　filename3 地面の川の情報の元となる、ＢＭＰファイル名 4. [IN] 文字列または、文字列変数　：　filename4 地面、道、川の模様を決める、ＢＭＰファイル名 5. [IN] 変数または、数値　：　maxx 地面のＸ座標の最大値 実数。 6. [IN] 変数または、数値　：　maxz 地面のＺ座標の最大値 実数。 7. [IN] 変数または、数値　：　divx X方向の分割数 8. [IN] 変数または、数値　：　divz Z方向の分割数 9. [IN] 変数または、数値　：　maxheight 地面の高さの最大値 実数。 10. [OUT] 変数　：　hsid 作成した地面データを識別する、ＩＤ | 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で保存された古い座標とを結ぶ線分と、 地面の各ポリゴンとのあたり判定をします。 地面の上を這うように動くためのモードと、 飛行機のように飛ぶためのモードの ２種類あります。 這うモードの時は、毎回、adjustx,y,zに 地面の座標が返されます。 飛ぶモードの時は、地面と衝突したときに、 その座標がadjustx,y,zに返されます。 | 1. [IN] 変数または、数値　：　charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値　：　groundhsid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した形状データを 識別するid 3. [IN] 変数または、数値　：　mode ０を指定すると、飛ぶモード １を指定すると、地面を這うモード 4. [IN] 変数または、数値　：　diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 実数。 5. [IN] 変数または、数値　：　mapminy groundhsidで識別されるデータの一番低いＹ座標の値 通常は、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 ０を指定すると、飛ぶモード １を指定すると、地面を這うモード 9. [IN] 変数または、数値　：　diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 実数。 10. [IN] 変数または、数値　：　mapminy groundhsidで識別されるデータの一番低いＹ座標の値 通常は、０．０です。 実数。 11. [OUT] 変数　：　result あたり判定の結果が代入されます。 mode == 0 のとき ぶつからなかった場合は、resutl = 0 ぶつかった場合は、result = 1 mode == 1のとき キャラクターの下に地面が無かった場合、 または、全く移動しなかった場合、 result = 0 diffmaxyより高い高さを登ろうとしたとき、 result = 1 地面を下に降りたとき、 または、diffmaxyより低い高さを登ったとき、 result = 2 12. [OUT] 変数　：　adjustx 13. [OUT] 変数　：　adjusty 14. [OUT] 変数　：　adjustz result != 0 のときに、 mode == 0のときは、ぶつかった座標 mode == 1のときは、地面の座標が (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 15. [OUT] 変数　：　nx 16. [OUT] 変数　：　ny 17. [OUT] 変数　：　nz result != 0 のときに、 mode == 0のときは、ぶつかったポリゴン mode == 1のときは、地面のポリゴンの 法線ベクトルが、 (nx, ny, nz)に代入されます。 跳ね返る方向を決めるときなどに 使用できるのではないかと思い、 加えてみました。 実数型の変数。 | ver1.0.0.1
E3DGetPartNoByName | モデル情報 | モデル内のパーツの名前から、パーツの番号を取得します。 パーツの名前は、RokDeBone2で確認してください。 ver1.0.6.1以前のRokDeBone2では、 メタセコイアから読み込んだデータの、 パーツの名前には、　"　が付いているので、 注意してください。 昔のファイルの場合、 例えば、名前が、"obj1" である場合、 引数partname には、 "\"obj1\"" というように、\" を使用しなくては、いけません。 （　現在のRokDeBone2で新規作成したファイルでは、 パーツ名に”は付いていません。　） また、同じ名前のパーツが、複数ある場合、 常に、一番最初に、見つかったパーツの番号が、取得されることに、注意してください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 文字列または、文字列変数　：　partname RokDeBone2で表示される、パーツの名前。 3. [OUT] 変数　：　partno 名前がpartnameである、パーツの番号。 | ver1.0.0.1
E3DGetVertNumOfPart | モデル情報 | partnoで識別されるパーツに、いくつの頂点が含まれるかを取得します。 E3DGetVertPos, E3DSetVertPos に渡す、vertno は、 0 〜 (vertnum - 1) の間でなくては、なりません。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　partno パーツを識別する番号 3. [OUT] 変数　：　vertnum パーツに含まれる頂点数。 | ver1.0.0.1
E3DGetVertPos | モデル情報 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標を取得します。 E3DSetPos, E3DSetDirなどの、 影響を受けていない、 ローカルな座標値が、返されます。 ver5.0.0.4からローカル座標とグローバル座標のどちらかを 取得できるようになりました。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　partno パーツを識別する番号 3. [IN] 変数または、数値　：　vertno 頂点の番号 4. [OUT] 変数　：　vertx 5. [OUT] 変数　：　verty 6. [OUT] 変数　：　vertz 頂点の座標が（vx, vy, vz）に代入されます。 実数型の変数。 7. [IN] 変数または、数値　：　kind ０を指定するとローカル座標 １を指定するとグローバル座標が 取得できます。 | ver1.0.0.1 ver5.0.0.4で拡張
E3DSetVertPos | モデル情報 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標（ローカル座標）をセットします。 ユーザーが、座標、姿勢を、 全て、自分で管理することを想定した、 上級者向けの機能です。 例えば、目標地点に頂点座標を近づけていきたい場合などは、 E3DSetPos hsid, 0.0, 0.0, 0.0 E3DSetDir hsid, 0.0, 0.0, 0.0 でワールド変換が行われないようにした状態で、 E3DSetVertPosを使い、希望位置へ、 頂点座標をセットする。 などの、使用方法が、考えられます。 AddMotionを行った、モデルデータにも、 使用しないでください。 （使用しても、ハングしたりはしませんが、 あたり判定が、正確に行われません。） 具体的な使用例は、 zip中の、e3dhsp3_vertpos.hsp をご覧ください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　partno パーツを識別する番号 3. [IN] 変数または、数値　：　vertno 頂点の番号 4. [IN] 変数または、数値　：　vertx 5. [IN] 変数または、数値　：　verty 6. [IN] 変数または、数値　：　vertz （vertx, verty, vertz ）の座標を、 指定の頂点にセットします。 実数型の変数。 | ver1.0.0.1
E3DSetPosOnGround | モデル位置 | E3DLoadGroundBMP、または、E3DLoadMQOFileAsGroundで作成した地面上の、適切な高さに、モデルデータを配置するための、関数です。 (posx, mapmaxy, posz)と、 (posx, mapminy, posz)を結ぶ線分と、 地面データとの交点を求めて、 その位置に、hsidのモデルデータを配置します。 交点が複数ある場合は、 (posx, mapmaxy, posz)から、一番近い交点が、選ばれます。 この命令を使う前に、少なくとも、一回は、 E3DChkInView groundid が、呼ばれていないと、ちゃんと動作しません。 （groundid部分には、配置する地面のhsidを入れてください。） 現バージョンではgroundidは、 E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGround で取得したものしか、使用できません。 | 1. [IN] 変数または、数値　：　hsid 配置したい形状データを識別するid 2. [IN] 変数または、数値　：　groundid E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGroundで 作成した地面を識別するid 3. [IN] 変数または、数値　：　mapmaxy 地面データの高さの最大値 実数。 4. [IN] 変数または、数値　：　mapminy 地面データの高さの最小値 実数。 5. [IN] 変数または、数値　：　posx 6. [IN] 変数または、数値　：　posz 地面の高さをＹとすると、 （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 地面の高さをＹとすると、 （posx, Y,. posz）に、hsidのモデルデータを配置します。 実数。 | ver1.0.0.1
E3DCreateBillboard | ビルボード | ビルボードを作成します。 1500個まで、ビルボードを作ることが出来ます。 billboardidに、作成したビルボードを識別する 番号が、代入されます。 billboardidは、 E3DSetBillboardPos, E3DSetBillboardOnGround, E3DDestroyBillboard, E3DChkConfBillboard の関数で、使用します。 billboardidは、hsidとは、全く異なるものなので、E3DSetPosなどの、hsidを使用する関数には、使えません。 E3DCreateBillboardでは、 transparentflagに、１をセットすれば、 黒色を透過色として、扱えます。 | 1. [IN] 文字列または、文字列変数　：　filename ビルボードに貼り付けるテクスチャーのファイル名 2. [IN] 変数または、数値　：　width ビルボードの幅。 実数。 3. [IN] 変数または、数値　：　height ビルボードの高さ。 実数。 4. [IN] 変数または、数値　：　transparentflag １を指定すると、 テクスチャーの黒色（r = 0, g=0, b=0）を透過色として、 扱います。 ０を指定すると、 テクスチャーファイルの、 アルファ値を元に、透過します。 5. [OUT] 変数　：　billboardid 作成したビルボードを識別する番号が、代入されます。 6. [IN] 変数または、数値　：dirmode dirmodeに０を指定すると、 ビルボードは、Ｙ軸に関してのみ、回転します。 地面に立っている木などに使用してください。 dirmodeの１を指定すると、 ビルボードは、全方向に回転します。 カメラの高さにかかわらず、カメラの方向を向かせたいもの 例えば、火や煙などに、使用してください。 7. [IN] 変数または、数値　：orgflag ビルボードの原点の位置を指定します。 orgflagに０を指定すると、 原点は、ビルボードの四角形の下の辺の中心になります。 地面に生やす木などの場合に、便利です。 orgflagに１を指定すると、 原点は、ビルボードの中心になります。 爆発などの、特殊効果に使う場合に、便利です。 | ver1.0.0.1
E3DRenderBillboard | ビルボード | E3DCreateBillboard で作成されたビルボード全てを、 描画します。 各ビルボードは、 視線の方向を向くようにセットされます。 また、 視点から、遠い方から順番に、描画されます。 transskip引数の意味については E3DTransformBillboardの説明をお読みください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 変数または、数値　：　transskip 描画準備の計算をスキップします。 E3DTransformBillboardを使った場合に使用します。 | ver1.0.0.1
E3DSetBillboardPos | ビルボード | billboardidで識別されるビルボードの、位置を指定します。 | 1. [IN] 変数または、数値　：　billboardid ビルボードを識別する番号 2. [IN] 変数または、数値　：　posx 3. [IN] 変数または、数値　：　posy 4. [IN] 変数または、数値　：　posz ビルボードの位置を、(posx, posy, posz) にセットします。 実数。 | ver1.0.0.1
E3DSetBillboardOnGround | ビルボード | billboardidで識別されるビルボードの、位置を、指定したＸＺ座標の、地面の高さにセットします。 この命令を使う前に、少なくとも、一回は、 E3DChkInView　groundid が呼ばれている必要があります。 （groundid部分には、配置する地面のhsidを入れてください。） 現バージョンではgroundidは、 E3DLoadGroundBMP、 または、E3DLoadMQOFileAsGround で取得したものしか、使用できません。 | 1. [IN] 変数または、数値　：　billboardid ビルボードを識別する番号 2. [IN] 変数または、数値　：　groundid groundidで識別される地面の上に、 ビルボードが配置されます。 3. [IN] 変数または、数値　：　mapmaxy 地面データの一番大きなＹ座標 実数。 4. [IN] 変数または、数値　：　mapminy 地面データの一番小さなＹ座標 （通常０．０） 実数。 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 で計算されます。 等倍は１．０ 実数。 3. [OUT] 変数　：　hsid 作成した地面を識別するhsidが代入されます。 4. [IN] 変数または、数値　：　adjustuvflag UV座標を正規化したいときは１を、 そうでないときは、０を指定してください。 何も指定しないときは、０として扱われます。 5. [IN] 文字列または、文字列変数　：　bonetype mqoにボーンが含まれている場合は ボーンのタイプを指定します。 BONETYPE_RDB2を指定するとRokDeBone2形式の 線分をボーンと認識するタイプになります。 BONETYPE_MIKOを指定すると mikoto形式のタイプになります。 省略するとBONETYPE_RDB2になります。 これらの定数はe3dhsp3.asで定義されています。 | ver1.0.0.1 ver4.0.1.8で引数追加
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より近いビルボードのＩＤを代入します。 存在しない場合は、-1を代入します。 | ver1.0.0.1
E3DGetInvisibleFlag | モデル情報 | hsidで識別されるモデルの、partnoのパーツのInvisibleFlag(見えないフラグ)を取得します。 InvisibleFlagが、１になっているパーツは、あたり判定は、行われますが、 表示はされません。 進入禁止区域との、境目に置く、見えないオブジェクトとして、使用することなどが、 考えられます。 partno には、E3DGetPartNoByNameで取得した番号を指定してください。 また、hsidに負の値を渡し、partnoに、ビルボードのid を渡すと、 ビルボードのInvisibleFlag を取得することが出来ます。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するID ビルボードのInvisibleFlagを取得する場合は、負の値　　を渡してください。 2. [IN] 変数または、数値　：　partno パーツの番号。 E3DGetPartNoByNameで取得した番号、 または、ビルボードのＩＤ。 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で取得した番号、 または、ビルボードのＩＤ。 3. [IN] 変数または、数値　：　flag 指定したパーツのInvisibleFlag をセットします。 | ver1.0.0.1
E3DSetMovableArea | 壁 | 移動可能領域を、ＢＭＰファイルから、自動生成します。 （色の付いた部分と、付いていない部分の 境界部分に、地面に垂直な、非表示の壁ポリゴンを生成します。） E3DChkConfWall 命令と併用すれば、 ＢＭＰで、濃い色を付けた部分のみ、移動できるようになります。 具体的な使用例は、zip中の、 e3dhsp3_wall.hsp をご覧ください。 メタセコイアデータで、 壁データを作りたい場合は、 メタセコイアのプラグイン、MakeWallをご使用ください。 （おちゃっこＬＡＢのトップページにリンクがあります。） | 1. [IN] 文字列または、文字列変数　：　filename1 壁の座標情報の元となる、ＢＭＰファイル名 2. [IN] 変数または、数値　：　maxx 壁のＸ座標の最大値 実数。 3. [IN] 変数または、数値　：　maxz 壁のＺ座標の最大値 実数。 4. [IN] 変数または、数値　：　divx X方向の分割数 5. [IN] 変数または、数値　：　divz Z方向の分割数 6. [IN] 変数または、数値　：　wallheight 作成する壁の高さ 実数。 7. [OUT] 変数　：　hsid 作成した壁データを識別する、ＩＤ | ver1.0.0.1
E3DChkConfWall | 当たり判定 | E3DSetMovableArea, または、E3DLoadMQOFileAsMovableAreaで作成した壁データと、キャラクターのあたり判定を行います。 キャラクターの現在の座標と、E3DSetBeforePosで保存された古い座標とを結ぶ線分と、 壁の各ポリゴンとのあたり判定をします。 壁に沿って位置を移動するために 使用します。 壁の外側から内側へは移動できますが、内側から外側へは移動できないようにします。 具体的な使用例は、zip中の、 e3dhsp3_wall.hsp をご覧ください。 | 1. [IN] 変数または、数値　：　charahsid 移動する形状データを識別するid 2. [IN] 変数または、数値　：　groundhsid E3DSetMovableArea、 または、E3DLoadMQOFileAsMovableAreaで 作成した形状データを 識別するid 3. [IN] 変数または、数値　：　dist 跳ね返る距離。 distに大きな値を入れると、 ぶつかった際に大きく、跳ね返るようになります。 実数。 4. [OUT] 変数　：　result あたり判定の結果が代入されます。 壁とぶつかった場合は、１が、 ぶつからなかった場合は、０が、代入されます。 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 あたり判定の結果が代入されます。 壁とぶつかった場合は、１が、 ぶつからなかった場合は、０が、代入されます。 10. [OUT] 変数　：　adjustx 11. [OUT] 変数　：　adjusty 12. [OUT] 変数　：　adjustz result != 0 のときに、 修正後の座標が、 (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 13. [OUT] 変数　：　nx 14. [OUT] 変数　：　ny 15. [OUT] 変数　：　nz result != 0 のときに、 ぶつかった面の法線ベクトルの値が、 代入されます。 実数型の変数。 | ver1.0.0.1
E3DVec3Normalize | 算術 | 指定したベクトルを、正規化た値を取得します。 つまり、指定したベクトルの向きを持つ、 大きさ１のベクトルが、取得できます。 | 1. [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に、１を代入し、 時計回りの時、 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に、１を代入し、 時計回りの時、 resultに、-1を代入する。 | ver1.0.0.1
E3DVec3RotateY | 算術 | ベクトルbefvecを、Ｙ軸に関して、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 | 壁 | メタセコイアの、ＭＱＯファイルで作成した壁のデータを、移動可能領域情報として、読み込みます。 メタセコイアで、データを作る場合には、次の２点に気を付けてください。 １．壁データは、常に、移動可能領域の内側を向くように、面の向きを設定してください。両面ポリゴンは、不可です。 ２．壁データは、少しの隙間もないように、 作成してください。 自動的に壁データを作りたい場合は、 メタセコイアのプラグイン、MakeWallをご使用ください。 （おちゃっこＬＡＢのトップページにリンクがあります。） | 1. [IN] 文字列または、文字列変数　：　filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値　：　mult 形状データの座標に掛ける係数の数値。 座標値　＊　mult で計算されます。 等倍は１．０ 実数。 3. [OUT] 変数　：　hsid 作成した壁データを識別するhsidが代入されます。 | ver1.0.0.1
E3DLoadSound | サウンド | 音のデータを読み込み、音を識別する番号、soundid、を取得します。 ver1.0.5.0から３Ｄサウンドに対応できるように なりました。 use3dflagに１を指定すると、 ３Ｄサウンドとしてロードします。 読み込める音データの種類は、 *.wav, *.mid, *.sgt ファイルです。 ３Ｄサウンドは、wavファイルのモノラル形式のみです。 ３Ｄサウンドの設定については、 E3DSet3DSoundで始まる関数名を お調べください。 同じＩＤの、３Ｄサウンドを同時にいくつ 重ねて再生できるかはbufnum引数で指定します。 実際の使用例は、zip中の、 e3dhsp3_sound.hsp をご覧ください。 ３Ｄサウンドの使用例は、 e3dhsp3_3Dsound.hsp をご覧ください。 | 1. [IN] 文字列または、文字列変数　：　filename 読み込む、サウンド ファイル名。 2. [OUT] 変数　：　soundid 作成した音データを識別する番号が代入されます。 3. [IN] 変数または、数値　：　use3dflag ファイルをステレオサウンドとして読み込む場合は０を、 ３Ｄサウンドとして読み込む場合は１を指定してください。 指定しなかった場合は、ステレオサウンドと見なされます。 4. [IN] 変数または、数値　：　bufnum 同じＩＤの、３Ｄサウンドを、同時にいくつ重ねて再生できるかを 指定します。 ３Ｄサウンドではない場合は、 今まで通り、DirectMusicが、自動的に、 重ねて再生してくれます。 | ver1.0.0.1
E3DPlaySound | サウンド | E3DLoadSoundで、読み込んだ、音データを再生します。 isprimary 引数には、 ＢＧＭ再生時に、１を、 効果音再生時に０を指定してください。 boundaryflagには、再生境界を指定します。 e3dhsp3.as内で定義している、 DMUS_SEGF_　で始まる定数を指定してください。 それぞれの意味は、以下の通りです。 DMUS_SEGF_BEAT 拍の境界で演奏する。 DMUS_SEGF_DEFAULT セグメントのデフォルトの境界を使用する。 DMUS_SEGF_GRID グリッド(拍の小分割)境界で演奏する。 DMUS_SEGF_MEASURE 小節境界で演奏する。 DMUS_SEGF_QUEUE プライマリ セグメント キューの最後に置く。 プライマリ セグメントに対してのみ 有効である。 DMUS_SEGF_SEGMENTEND 開始タイムで演奏中のプライマリ セグメント の最後で演奏する。 現在演奏中のプライマリ セグメント後に 既に挿入されているセグメントは、 フラッシュ (解放) される。 ３Ｄサウンドの再生時には、 isprimary, boundaryflagを指定しても反映されません。 | 1. [IN] 変数または、数値　：　soundid 再生したい音を識別する番号を、指定します。 2. [IN] 変数または、数値　：　isprimary isprimaryに１を指定すると、 プライマリセグメントとして再生されます。 プライマリセグメントは、一度に、一つだけ、 再生できます。 isprimaryに０を指定すると、 セカンダリセグメントとして、再生されます。 プライマリセグメントに、重ねて、再生されます。 ＢＧＭを再生するときには、 isprimaryを１に、 効果音を再生するときには、 isprimaryを０に、 指定すると、うまくいきます。 3. [IN] 変数または、数値　：　boundaryflag 右の説明をお読みください。 | ver1.0.0.1
E3DStopSound | サウンド | 音の再生を停止します。 | 1. [IN] 変数または、数値　：　soundid 停止したい音を識別する番号を、指定します。 2. [IN] 変数または、数値　：　flag ３Ｄサウンドの停止状態を指定します。 flagに０を指定すると、E3DStopSoundした後に、 E3DPlaySoundした場合、停止した続きの場所から 再生されます。 flagに１を指定すると、次にE3DPlaySoundした場合、 最初から再生されます。 デフォルトでは、flag 0 を指定したのと同じ状態になっています。 ３Ｄサウンド以外は、常に、次回のE3DPlaySound時に、 最初から再生されます。 | ver1.0.0.1
E3DSetSoundLoop | サウンド | 音を繰り返し再生するかどうかを、指定します。 デフォルトでは、 繰り返さない状態になっています。 | 1. [IN] 変数または、数値　：　soundid ループ設定したい音を識別する番号を、指定します。 2. [IN] 変数または、数値　：　loopflag loopflag に１を指定すると、 音を、無限回、再生するようになります。 loopflagに０を指定すると、 一回のみ、音を再生するようになります。 | ver1.0.0.1
E3DSetSoundVolume | サウンド | 音の音量を設定します。 ３Ｄサウンドは、 音ごとに音量の設定が出来ます。 その代わり、音の増幅は出来ません。 ３Ｄサウンドは、音量の設定をしても、 次のE3DPlaySound時まで、反映されません。 ステレオサウンドは、 個々に音量の設定をすることはできません。 | 1. [IN] 変数または、数値　：　volume 音量を指定します。 0 から -10000 の値を指定してください。 -10000 は、-100dB に相当します。 2. [IN] 変数または、数値　：　soundid 設定したい音を識別する番号を指定します。 -1を指定すると、全ての音の音量を設定できます。 何も設定しなかった場合は、-1と見なされます。 | ver1.0.0.1
E3DSetSoundTempo | サウンド | 音のテンポを設定します。 E3DPlaySoundで、再生している、 全ての音に、影響します。 （音ごとに設定することは、出来ません） 音を早く再生したり、遅く再生したり、出来るようになります。 ３Ｄサウンドには、反映されません。 | 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 | サウンド | 音の周波数を設定します。 ３Ｄサウンドに周波数を設定しても、 次回のE3DPlaySound時まで、反映されません。 ステレオサウンドでリバーブが有効になっている場合は、 この関数は失敗します。 リバーブを無効にするには、E3DInitの８番目の引数に０を 指定してください。 | 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 | サウンド | ３Dサウンド再生時に関係するリスナー（聞き手）の パラメータを設定します。 ここで設定したパラメータは、３Dサウンド全体に影響します。 ここで設定する係数は、 DirectXのドキュメントに詳しく書いてあります。 お持ちの方は、 [DirectX9ドキュメント]-> [DirectSound]-> [DirectSoundの使い方]-> [3Dサウンド]-> [DirectSound の3D リスナー]-> [ドップラー効果] [DirectX9ドキュメント]-> [DirectSound]-> [DirectSoundの使い方]-> [3Dサウンド]-> [DirectSound の3D リスナー]-> [ロールオフ係数] をお読みください。 ３Ｄサウンドの使用例は、 e3dhsp3_3Dsound.hsp をご覧ください。 | 1. [IN] 変数または、数値　：　doppler ドップラー係数を指定してください。 0.0から10.0の値が有効です。 0.0を指定すると、ドップラー効果なし。 2.0を指定すると、実世界の２倍のドップラー効果が得られます。 実数。 2. [IN] 変数または、数値　：　rolloff ロールオフ係数を指定してください。 リスナーと音の距離による減衰の具合を操作できます。 0.0から10.0の値が有効です。 0.0を指定すると、減衰なし。 2.0を指定すると、実世界の２倍の減衰効果が得られます。 実数。 | ver1.0.0.1
E3DSet3DSoundListenerMovement | サウンド | リスナーの位置と向きを設定します。 hsidにモデルデータの番号を渡した場合には、 そのモデルデータの位置と向きが、 リスナーの位置と向きとして設定されます。 hsidに-1を渡した場合には、 視点の位置と向きが、 リスナーの位置と向きとして設定されます。 一回呼び出せば、ずっと、hsidの更新情報を リスナーに反映させるわけではありません。 情報の更新が必要になるたびに、 呼び出してください。 | 1. [IN] 変数または、数値　：　hsid モデルデータを識別する番号 -1のときは、視点をリスナーとします。 | ver1.0.0.1
E3DSet3DSoundDistance | サウンド | ３Dサウンドの最小距離と最大距離を設定します。 E3DLoadSoundのuse3dflagに１を指定して 読み込んだサウンドのみに対し、有効です。 ここで設定する係数は、 DirectXのドキュメントに詳しく書いてあります。 お持ちの方は、 [DirectX9ドキュメント]-> [DirectSound]-> [DirectSoundの使い方]-> [3Dサウンド]-> [DirectSound 3D のバッファ]-> [最小距離と最大距離] をお読みください。 ３Ｄサウンドの使用例は、 e3dhsp3_3Dsound.hsp をご覧ください。 | 1. [IN] 変数または、数値　：　soundid ３Ｄサウンドを識別する番号 2. [IN] 変数または、数値　：　min 3. [IN] 変数または、数値　：　max 最小距離と最大距離を指定します。 実数。 以下は、DirectXのドキュメントからの引用です。 リスナーが音源に近づくにつれてサウンドが大きくなり、 距離が半分になったときに音のボリュームは倍増する。 しかし、特定の点を過ぎると、ボリュームが増加し続けるのは 合理的ではない。これが音源の最小距離である。 音源の最大距離とは、 それ以上離れても音がより小さくならない距離を意味する。 | ver1.0.0.1
E3DSet3DSoundMovement | サウンド | ３Dサウンドの位置と速度を設定します。 E3DLoadSoundのuse3dflagに１を指定して 読み込んだサウンドのみに対し、有効です。 ３Ｄサウンドの使用例は、 e3dhsp3_3Dsound.hsp をご覧ください。 | 1. [IN] 変数または、数値　：　soundid ３Ｄサウンドを識別する番号 2. [IN] 変数または、数値　：　posx 3. [IN] 変数または、数値　：　posy 4. [IN] 変数または、数値　：　posz ３Ｄサウンドの位置を（posx, posy, posz）で指定します。 実数。 5. [IN] 変数または、数値　：　vx 6. [IN] 変数または、数値　：　vy 7. [IN] 変数または、数値　：　vz ３Ｄサウンドの速度を(vx, vy, vz)で指定します。 実数。 | ver1.0.0.1
E3DCreateNaviLine | ナビライン | ナビラインを作成します。 ナビラインとは、複数のナビポイントからなる、双方向リンクリストのことです。 ナビポイントとは、キャラクターの自動走行時に、位置を決める基準となるポイントのことです。 この関数が成功すると、 ナビラインを識別するためのＩＤ、nlidが得られます。 失敗すると、nlidに負の値が代入されます。 | 1. [OUT] 変数　：　nlid 作成したナビラインを識別するためのＩＤが 代入されます。 | ver1.0.0.1
E3DDestroyNaviLine | ナビライン | ナビラインを削除します。 | 1. [IN] 数値または、変数　：　nlid 削除するラインを識別するＩＤ | ver1.0.0.1
E3DAddNaviPoint | ナビライン | ナビラインに、ナビポイントを追加します。 成功すると、新しいナビポイントを識別するためのＩＤ、npid が得られます。 befnpidで指定したポイントの次の位置に 追加できる他、 先頭位置や、最後の位置にも追加することができます。 ナビポイントの編集には、 GViewer.exeを使うと便利です。 （おちゃっこＬＡＢでＤＬ可能です。） | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　befnpid befnpidで指定したポイントの次の位置に、 新しいポイントを追加します。 befnpidに-1を指定すると、 ナビラインの最後に追加され、 befnpidに-2を指定すると、 ナビラインの先頭に追加されます。 3. [OUT] 変数　：　npid 新しく追加したナビポイントのＩＤが代入されます。 | ver1.0.0.1
E3DRemoveNaviPoint | ナビライン | ナビラインから、ナビポイントを削除します。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　npid 削除したいナビポイントのID | ver1.0.0.1
E3DGetNaviPointPos | ナビライン | ナビポイントの座標を取得します。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　npid ナビポイントを識別するID 3. [OUT] 変数　：　posx 4. [OUT] 変数　：　posy 5. [OUT] 変数　：　posz ナビポイントの座標が、 （posx, posy, posz）に、代入されます。 実数型の変数。 | ver1.0.0.1
E3DSetNaviPointPos | ナビライン | ナビポイントの座標をセットします。 この座標をもとに、 キャラクターが移動することになります。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　npid ナビポイントを識別するID 3. [IN] 数値または、変数　：　posx 4. [IN] 数値または、変数　：　poxy 5. [IN] 数値または、変数　：　posz ナビポイントの座標を （posx, posy, posz）に設定します。 実数。 | ver1.0.0.1
E3DGetNaviPointOwnerID | ナビライン | ナビポイントのOwnerIDを取得します。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　npid ナビポイントを識別するID 3. [OUT] 変数　：　OwnerID ナビポイントのOwnerIDが代入されます。 | ver1.0.0.1
E3DSetNaviPointOwnerID | ナビライン | ナビポイントのOwnerIDをセットします。 ナビポイントに、 排他的な、所有権を設定したいときなどに、 自由に、使用してください。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　npid ナビポイントを識別するID 3. [IN] 変数　：　OwnerID ナビポイントのOwnerIDに設定します。 | ver1.0.0.1
E3DGetNextNaviPoint | ナビライン | npidで指定したナビポイントの、一つ後のナビポイントのＩＤを取得します。 ナビラインは、ナビポイントを、双方向リストで、格納しています。 一つ後のナビポイントが存在しない場合は、nextid には、負の値が代入されます。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　npid ナビポイントを識別するID 3. [OUT] 変数　：　nextid 一つ後のナビポイントのＩＤが代入されます。 npid に-1が指定されている場合は、 nextidには、先頭のナビポイントのIDが代入されます | ver1.0.0.1
E3DGetPrevNaviPoint | ナビライン | npidで指定したナビポイントの、一つ前のナビポイントのＩＤを取得します。 ナビラインは、ナビポイントを、双方向リストで、格納しています。 一つ前のナビポイントが存在しない場合は、previd には、負の値が代入されます。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　npid ナビポイントを識別するID 3. [OUT] 変数　：　previd 一つ後のナビポイントのＩＤが代入されます。 | ver1.0.0.1
E3DGetNearestNaviPoint | ナビライン | 指定した座標に、一番近いナビポイントのＩＤを取得します。 一番近いナビポイントの前後のポイントの ＩＤも取得できます。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　posx 3. [IN] 数値または、変数　：　posy 4. [IN] 数値または、変数　：　posz （posx, posy, posz）に一番近いナビポイントを 探します。 実数。 5. [OUT] 変数　：　nearid 一番近いナビポイントのＩＤが代入されます。 6. [OUT] 変数　：　previd 一番近いナビポイントの前のポイントのＩＤが 代入されます。 7. [OUT] 変数　：　nextid 一番近いナビポイントの次のポイントのＩＤが 代入されます。 | ver1.0.0.1
E3DFillUpNaviLine | ナビライン | ナビポイントとナビポイントの間を、指定した分割数で、補間します。 Catmull-Romの公式で、補間します。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　div 何分割して補間するかを指定します。 3. [IN] 数値または、変数　：　flag flagに１を指定すると、 チェインの順番にナビポイントのＩＤをふり直します。 | ver1.0.0.1
E3DSetNaviLineOnGround | ナビライン | ナビライン中の全てのナビポイントの座標を、地面の高さに設定します。 | 1. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 2. [IN] 数値または、変数　：　grounhdis 地面を識別するhsid 3. [IN] 数値または、変数　：　mapmaxy 地面データのＹ座標の最大値を指定します。 実数。 4. [IN] 数値または、変数　：　mapminy 地面データのＹ座標の最小値を指定します。 実際の最小値より、少し小さな値を入れてください。 実数。 | ver1.0.0.1
E3DControlByNaviLine | ナビライン | ナビラインのデータを元に、キャラクターの位置と、向きを、自動的に設定するための関数です。 引数の、モードなどのパラメータを、 色々変化させることで、 一つのナビラインから、複数の（数え切れないくらいの）走行パターンを得ることが、 可能です。 具体的な使用例は、zip中の、 e3dhsp3_autorun.hsp をご覧ください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　nlid ラインを識別するＩＤ 3. [IN] 数値または、変数　：　ctrlmode ビットの和で、モードを指定します。 ビット１が立っていた場合には、 位置を優先した制御が行われます。 引数maxdist, dirstep は無視されます。 出来るだけ、ナビポイントの近くを通るように なります。 ビット１が立っていない場合には、 向きを優先した制御が行われます。 dirstepで指定した角度より大きな角度では、 移動できなくなります。 ただし、そのままだと、キャラクターが、 ナビラインから、遠くに離れすぎてしまうので、 引数maxdistで、ナビラインからどのくらい離れても 良いかを指定します。 maxdistよりも、遠くに離れた場合には、 dirstepで指定したよりも、大きな角度で、 ナビラインに近づくように修正されます。 なので、dirstepに小さな値を指定すると、 ジグザグにナビラインをたどるようになります。 ビット４が立っていた場合には、 向きの設定は、ＸＺ平面のみで行われます。 例えば、ctrlmode に５を指定した場合は、 位置を優先した制御で、ＸＺ平面での向き設定をする ということになります。 4. [IN] 数値または、変数　：　roundflag ナビラインの最後のナビポイントに移動した後、 ナビラインの最初のナビポイントの位置を 目指すかどうかを示します。 １を指定すると、円形のナビラインの場合は、 ずっと、ぐるぐる回ることになります。 5. [IN] 数値または、変数　：　reverseflag １を指定すると、 ナビラインのポイントを逆順にたどるようになります。 6. [IN] 数値または、変数　：　maxdist ナビラインから、どのくらいまで離れても良いかを 指定します。 ctrlmodeのビット１が立っていない場合のみ有効です。 実数。 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 現在目指しているナビポイントのＩＤを入れます。 移動後は、次に目指すべきナビポイントのＩＤが 代入されます。 ですので、一番最初の呼び出し時のみ、 自分でtargetpoinidを指定すれば、 あとは、同じ変数を渡すだけで、 自動的に、目指すべきポイントのＩＤが 代入されていくことになります。 targetpointidに、 存在しないナビポイントのＩＤを入れた場合は、 （例えば-1など） 自動的に、目指すべきナビポイントを決定します。 ですが、この場合、 向きを重視したモードのときに、 動きがぎこちなくなることがあるので、 なるべく、-1などは、使わない方が良いです。 |
E3DSetDirQ | モデル向き | 姿勢をクォータニオンで指定して、設定します。 E3DControlByNaviLineや、 E3DGetDirQ で得た姿勢データを 設定するときに、使用してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　qx 3. [IN] 数値または、変数　：　qy 4. [IN] 数値または、変数　：　qz 5. [IN] 数値または、変数　：　qw 姿勢を表すクォータニオンの値を 指定してください。 実数。 | ver1.0.0.1
E3DGetDirQ | モデル向き | 姿勢をクォータニオンの形式で、取得します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [OUT] 変数　：　qx 3. [OUT] 変数　：　qy 4. [OUT] 変数　：　qz 5. [OUT] 変数　：　qw 姿勢を表すクォータニオンの値が 代入されます。 実数型の変数。 | ver1.0.0.1
E3DSetWallOnGround | 壁 | 壁データを地面の高さに配置します。 | 1. [IN] 数値または、変数　：　whsid 壁の形状データを識別するＩＤ 2. [IN] 数値または、変数　：　ghsid 地面の形状データを識別するＩＤ 3. [IN] 数値または、変数　：　mapmaxy 地面データの最大の高さ 実数。 4. [IN] 数値または、変数　：　mapminy 地面データの最低の高さ 実数。 5. [IN] 数値または、変数　：　wheight 壁の高さ。 実数。 | ver1.0.0.1
E3DCreateNaviPointClearFlag | ナビライン | キャラクターが、nlidで識別されるナビライン上の点を、どれだけ進んだかということを、格納するためのデータを作成します。 hsidで識別されるモデルのデータとして 作成します。 このデータは、レースの順位を決定するときなどに、役に立ちます。 この命令は、 E3DInitNaviPointClearFlag, E3DSetNaviPointClearFlag E3DGetOrder の命令を呼び出す前に、呼び出されていないといけません。 複数回、続けて呼び出してはいけません。 作り直したい場合は、必ず、 E3DDestroyNaviPointClearFlag を呼び出してから、 E3DCreateNaviPointClearFlag を呼び出してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　nlid ナビラインを識別するＩＤ 3. [IN] 数値または、変数　：　roundnum ナビライン上を最大、何周するのかを指定します。 | ver1.0.0.1
E3DDestroyNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータを破棄します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ | ver1.0.0.1
E3DInitNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータを初期化します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ | ver1.0.0.1
E3DSetNaviPointClearFlag | ナビライン | E3DCreateNaviPointClearFlagで作成したデータに、現在どれだけのナビポイントを通過したかを、セットします。 キャラクターとナビポイントとの距離を元に、 データをセットします。 この関数を使う場合は、 毎フレーム、この関数を呼び出す必要があります。 この関数でセットしたデータを元に、 E3DGetOrderが順位を決定します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　posx 3. [IN] 数値または、変数　：　posy 4. [IN] 数値または、変数　：　posz キャラクターの位置を(posx, posy, posz)で指定します。 実数。 5. [IN] 数値または、変数　：　maxdist ナビポイントとの距離がmaxdistより近かった場合、 そのポイントをクリアー（通過）したと見なします。 実数。 6. [OUT] 変数　：　npidptr 現在クリアーしているポイントの内、 一番前方のポイントのＩＤが代入されます。 7. [OUT] 変数　：　roundptr キャラクターが何週目かが、代入されます。 8. [OUT] 変数　：　distptr npidptrに代入された、ＩＤのポイントから、 どれだけ距離が離れているかが、代入されます。 | ver1.0.0.1
E3DGetOrder | ナビライン | E3DSetNaviPointClearFlagでセットされたデータを元に、順位情報を取得するための関数です。 | 1. [IN] 変数　：　hsidptr 順位を調べたい形状データを識別するＩＤの配列を 指定します。 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) には、 ２位のモデルがクリアーしたポイント数が 代入されます。 | ver1.0.0.1
E3DDestroyAllBillboard | ビルボード | 全てのビルボードを破棄します。 | なし | ver1.0.0.1
E3DSetValidFlag | モデル情報 | RokDeBone2の　”このオブジェクトを無効にする”機能を、プログラムで行えるようにしました。 無効にしたパーツは、描画やあたり判定の際に、無視されるようになります。 ジョイントに対して、E3DSetValidFlagをした場合は、 E3DJointRemakeを呼び出してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードのフラグを設定できます。 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツの有効、無効をセットできます。 3. [IN] 数値または、変数　：　flag flagに０を指定すると、指定パーツが無効になります。 flagに１を指定すると、有効になります。 | ver1.0.0.1
E3DSetDiffuse | モデル情報 | パーツのdiffuse色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 diffuseだけかえても、Specular, Ambientを変えないと、意図した色にはならないと思いますので、注意してください。 （E3DSetSpecular, E3DSetAmbient, E3DSetEmissive, E3DSetSpecularPowerもご覧ください。） 頂点単位で色の設定が出来ます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数　：　R 4. [IN] 数値または、変数　：　G 5. [IN] 数値または、変数　：　B 指定したい色を（Ｒ，Ｇ，Ｂ）で指定します。 ０から２５５までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数　：　setflag setflagが０のときは、 パーツの色を（Ｒ，Ｇ，Ｂ）にセットします。 setflagが１のときは、 パーツの色に（R/255, G/255, B/255）を乗算します。 setflagが２のときは、 パーツの色に（Ｒ，Ｇ，Ｂ）を足し算します。 setflagが３のときは、 パーツの色から（Ｒ，Ｇ，Ｂ）を減算します。 7. [IN] 数値または、変数　：　vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 | ver1.0.0.1
E3DSetSpecular | モデル情報 | パーツのspecular色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 頂点単位で色の設定が出来ます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数　：　R 4. [IN] 数値または、変数　：　G 5. [IN] 数値または、変数　：　B 指定したい色を（Ｒ，Ｇ，Ｂ）で指定します。 ０から２５５までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数　：　setflag setflagが０のときは、 パーツの色を（Ｒ，Ｇ，Ｂ）にセットします。 setflagが１のときは、 パーツの色に（R/255, G/255, B/255）を乗算します。 setflagが２のときは、 パーツの色に（Ｒ，Ｇ，Ｂ）を足し算します。 setflagが３のときは、 パーツの色から（Ｒ，Ｇ，Ｂ）を減算します。 7. [IN] 数値または、変数　：　vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 | ver1.0.0.1
E3DSetAmbient | モデル情報 | パーツのambient色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 頂点単位で色の設定が出来ます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数　：　R 4. [IN] 数値または、変数　：　G 5. [IN] 数値または、変数　：　B 指定したい色を（Ｒ，Ｇ，Ｂ）で指定します。 ０から２５５までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数　：　setflag setflagが０のときは、 パーツの色を（Ｒ，Ｇ，Ｂ）にセットします。 setflagが１のときは、 パーツの色に（R/255, G/255, B/255）を乗算します。 setflagが２のときは、 パーツの色に（Ｒ，Ｇ，Ｂ）を足し算します。 setflagが３のときは、 パーツの色から（Ｒ，Ｇ，Ｂ）を減算します。 7. [IN] 数値または、変数　：　vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 | ver1.0.0.1
E3DSetBlendingMode | 描画パラメータ | ビルボードとスプライトの半透明モードを指定します。 加算モードと、頂点アルファ値による半透明モードの２つから選べます。 ver2.0.0.5で、加算モードその２が増えました。 sigモデルデータの半透明モードの設定は E3DSetMaterialBlendingModeをお使いください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードのモードを設定できます。 -2を指定すると、スプライトの設定が出来ます。 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 hsidに-2を指定した場合は、 E3DCreateSpriteで取得した、 スプライトのidを渡してください。 partnoに-1を渡すと、 全てのパーツにモードをセットできます。 3. [IN] 数値または、変数　：　blendmode ０を指定すると、 頂点アルファ値による半透明モードになります。 １を指定すると、 アッドモードになります。 ２を指定すると、 頂点アルファを考慮したアッドモードになります。 | ver1.0.0.1 ver2.0.0.5で拡張
E3DSetRenderState | 描画パラメータ | パーツごとに、RenderStateを設定できます。 描画の度に呼ぶ必要はありません。 一度呼べば、描画時に、自動的に、設定されます。 上級者向けの関数です。 詳しくは、DirectXのヘルプの SetRenderStateをご覧ください。 D3DRS_ALPHABLENDENABLE は、E3DRenderのwithalpha引数を元に、 自動的に呼び出すようにしているので、 このタイプは指定しても、反映されません。 また、オリジナルの頂点計算を行っているため、設定しても、効果のないものも、多くあります。 statetypeは、zip中の、 e3dhsp3.as で、D3DRSで始まる定数として宣言していますので、 このファイルの定数を使用してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードのステートを設定できます。 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツにステートをセットできます。 3. [IN] 数値または、変数　：　statetype 設定するタイプを指定してください。 e3dhsp3.as中の定数を使用してください。 4. [IN] 数値または、変数　：　value 設定する値を指定してください。 | ver1.0.0.1
E3DSetScale | モデル情報 | パーツ単位で、形状を拡大、縮小できます。 特殊効果用を想定していますので、 地面データには使用できません。 倍率は、形状データ読み込み時の大きさに対する比率です。 その時点で、表示されている大きさに対する比率ではないので、注意してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードのスケールを設定できます。 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツにスケールをセットできます。 3. [IN] 数値または、変数　：　scalex 4. [IN] 数値または、変数　：　scaley 5. [IN] 数値または、変数　：　scalez Ｘ，Ｙ，Ｚのそれぞれの倍率を指定します。 それぞれ、 scalex、 scaleyt、 scalez　倍されます。 等倍は１．０。 実数。 6. [IN] 数値または、変数　：　centerflag 拡大縮小する際の中心を指定します。 ０を指定すると、 hsidで指定したモデル全体の中心を拡大の中心とします。 １を指定すると、 それぞれのパーツの中心を拡大の中心とします。 2を指定すると、 原点を拡大の中心とします。 | ver1.0.0.1
E3DGetScreenPos | モデル情報 | 形状データの画面上での2Dの座標を取得する関数です。 パーツ単位、モデル単位、ビルボード単位で 使用できます。 頂点単位での２Ｄ座標を取得できます。 ３Ｄキャラクターの位置に、2Dのスプライトを表示する、などの用途に使えます。 E3DChkInViewより後で、呼び出してください。 具体的な使用例は、zip中の、 e3dhsp3_screenpos.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの２Ｄ位置を取得できます。 3. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 モデル全体の中心座標の２Ｄ座標を 取得できます。 4. [OUT] 変数　：　scx 5. [OUT] 変数　：　scy 指定したパーツの2Dスクリーン座標が代入されます。 整数。 ただし、以下の場合には、 scx = -1, scy = -1が代入されます。 １，パーツが表示用オブジェクトではない場合 ２，パーツ全体が画面外にある場合 ３，パーツのディスプレイスイッチがオフの場合 ４，パーツが無効になっていた場合 （E3DSetValidFlagで０を指定した場合） 6. [IN] 数値または、変数　：　vertno 取得したい頂点の番号を指定します。 この引数を省略した場合や、-1を指定した場合は、 パーツの中心の２Ｄ座標を取得します。 7. [IN] 数値または、変数　：　calcmode 計算モードを指定します。 １を指定すると、 新しいキャラクターの位置や、カメラの位置で、 新たに計算し直します。 ０を指定すると、 calcmode 1 で、すでに計算した結果を取得します。 ０を指定した方が、処理が軽く、高速です。 | ver1.0.0.1
E3DGetScreenPos2 | モデル情報 | 任意の３Ｄ座標から、スクリーン（２Ｄ）座標を取得する関数。 ラインの点の位置や、ボーンの位置に スプライトを表示したりできます。 ＃表示オブジェクトの頂点や、 パーツの中心の２Ｄ座標を取得する場合は、 既にある、E3DGetScreenPosをご利用ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 変数または、数値　：　x3d 3. [IN] 変数または、数値　：　y3d 4. [IN] 変数または、数値　：　z3d 3D座標を、（x3d, y3d, z3d）に指定してください。 実数。 5. [OUT] 変数　：　x2d 6. [OUT] 変数　：　y2d 7. [OUT] 変数　：　validflag 変換後の２Ｄ座標が、（x2d, y2d）に代入されます。 整数型の変数。 ２Ｄ座標が、スクリーンの大きさの内側にあるかどうかは、 ユーザーさんがチェックしてください。 指定した３Ｄ座標が、カメラより後ろにある場合や、 見えないくらい遠いところにある場合には、 validflag に　０　が代入されます。 validflagに０が代入されているときの、(x2d, y2d)座標は、 意味のない値が入っています。 | ver1.0.0.1
E3DCreateQ | 算術 | クォータニオンを作成し、操作用のid を取得します。 クォータニオンの各操作には、 この関数で取得した qidを使用します。 クォータニオンを知らない方は、 とりあえず、 姿勢情報　（回転情報）を格納できる 便利なもの、 とくらいに、考えておいてください。 モーションポイントや、モデルなどに、 クォータニオンをセットすることにより、 任意の姿勢を持たせることが出来ます。 作成方法は、工夫してみましたが、 それほど、高速ではありません。 この関数は、メインループの外で、 あらかじめ呼んでおくことが、 望ましいです。 | 1. [OUT] 変数　：　qid 新しいクォータニオンを作成し、 そのクォータニオンを、 一意に識別する番号を　qid　に代入します。 クォータニオン操作関数に、 この番号を渡して使用してください。 | ver1.0.0.1
E3DDestroyQ | 算術 | クォータニオンを削除します。 この関数に渡したqidは、使用できなくなります。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 | ver1.0.0.1
E3DInitQ | 算術 | クォータニオンを初期化します。 姿勢情報が、初期化されます。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 | ver1.0.0.1
E3DSetQAxisAndDeg | 算術 | クォータニオンを、指定した軸に関して、指定した角度だけ回転した姿勢をセットします。 既に、qidにセットしてある姿勢情報は、 上書きされます（無視されます）。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ 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 クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 2. [OUT] 変数　：　axisxptr 3. [OUT] 変数　：　axisyptr 4. [OUT] 変数　：　axiszptr 回転の軸のベクトルを、 (axisxptr, axisyptr, axiszptr)に代入します。 実数型の変数。 5. [OUT] 変数　：　degptr 回転角度を代入します。 実数型の変数。 | ver1.0.0.1
E3DRotateQX | 算術 | クォータニオンの姿勢情報を、Ｘ軸に関して回転します。 既に、qidにセットしてある姿勢情報に対して、 さらに、Ｘ軸回転することになります。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数　：　deg X軸に関して、deg度だけ回転します。 実数。 | ver1.0.0.1
E3DRotateQY | 算術 | クォータニオンの姿勢情報を、Ｙ軸に関して回転します。 既に、qidにセットしてある姿勢情報に対して、 さらに、Ｙ軸回転することになります。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数　：　deg Ｙ軸に関して、deg度だけ回転します。 実数。 | ver1.0.0.1
E3DRotateQZ | 算術 | クォータニオンの姿勢情報を、Ｚ軸に関して回転します。 既に、qidにセットしてある姿勢情報に対して、 さらに、Ｚ軸回転することになります。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数　：　deg Ｚ軸に関して、deg度だけ回転します。 実数。 | ver1.0.0.1
E3DMultQ | 算術 | クォータニオンの掛け算をします。 例えば、 qid1にＸ軸に関して３０度回転する姿勢が格納されていて、 qid2には、Ｙ軸に関して２０度回転する姿勢が格納されていたとします。 このとき、 E3DMultQ qid3, qid1, qid2 という命令を呼んだとします。 すると、 qid3には、 Ｘ軸に関して３０度回転した後に、 さらにＹ軸に関して２０度回転した姿勢情報が 格納されます。 気を付けなければいけないのは、 E3DMultQ qid3, qid1, qid2 と E3DMultQ qid3, qid2, qid1 では、qid3に格納される姿勢情報が異なる ということです。 2番目の引数に指定した回転の後に、 3番目の引数に指定した回転を適用するからです。 回転の順番によって、結果が異なるのは、 覚えておいてください。 後から処理したい方を、3番目の引数に いれれば、ＯＫです。 | 1. [IN] 数値または、変数　：　resqid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 このidのクォータニオンに結果が代入されます。 2. [IN] 数値または、変数　：　befqid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 3. [IN] 数値または、変数　：　aftqid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 befqidの回転の後に、aftqidの回転をした結果を、 resqidで識別されるクォータニオンに代入します。 | ver1.0.0.1
E3DNormalizeQ | 算術 | クォータニオンを正規化します。 様々なクォータニオンの操作を、 とてつもない回数繰り返していると、 計算誤差などで、 クォータニオンの情報がおかしくなることがあります。 例えば、E3DRotateQXをメインループで、 延々と繰り返す場合などに、 ひょっとしたら、不具合が出るかもしれません。 そんなときは、 ある程度の回数ごとに、 この関数を呼んでください。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 | ver1.0.0.1
E3DCopyQ | 算術 | srcqidで識別されるクォータニオンの情報を、dstqidで識別されるクォータニオンにコピーします。 | 1. [IN] 数値または、変数　：　dstqid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 2. [IN] 数値または、変数　：　srcqid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 | ver1.0.0.1
E3DGetBoneNoByName | モデル情報 | 指定した名前を持つボーンを識別するidを取得します。 該当するボーンが見つからなかった場合は、 bonenoに-1が代入されます。 ボーン以外の名前を指定した場合も、 bonenoに-1が代入されます。 複数のパーツやボーンに、 同じ名前があった場合、 一番最初に見つかった物のidだけしか 取得できません。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 文字列または、文字列の変数　：　bonename ボーンの名前を渡してください。 3. [OUT] 変数　：　boneno ボーンを識別するＩＤ | ver1.0.0.1
E3DGetNextMP | モーション | モーションポイントを識別するidを取得します。 モーションポイントとは、 RokDeBone2のモーションダイアログ中の、 下の方に白い長いウインドウがありますが、 その中に表示されている、 点のことだと思ってください。 モーションポイントは、 ユーザーさんがＩＫで設定した姿勢を 保持しています。 モーションポイントは、ボーンごとに作られています。 気を付けて欲しいのは、 RokDeBone2で、白いウインドウ中に 点が表示されていないフレーム番号には、 モーションポイントは存在しないということです。 モーションポイントが無いフレーム番号の姿勢は どうなっているかというと、 計算で、求めています。 モーションポイントは、フレーム番号の小さい順に、格納されています。 E3DGetNextMPは、prevmpidで指定した モーションポイントのフレーム番号を見て、 そのフレーム番号の次に大きいフレーム番号を持つモーションポイントのidを取得します。 prevmpidに-1を指定すると、 一番小さいフレーム番号を持つ、モーションポイントのidが取得できます。 prevmpidのモーションポイントが持つフレーム番号より、大きいフレーム番号を持つモーションポイントが存在しない場合は、 mpidに-1が代入されます。 つまり、取得したmpidを prevmpidに指定して、 再びE3DGetNextMPを呼び出す、 という作業を、 mpidに-1が代入されるまで、繰り返せば、 フレーム番号の小さい順に、 全てのモーションポイントのidが取得出来る ということになります。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数　：　prevmpid モーションポイントを識別するＩＤ E3DGetNextMPで取得したidを渡してください。 -1を指定すると、一番小さなフレーム番号を持つ モーションポイントのidがmpidに代入されます。 5. [OUT] 変数　：　mpid mpidに、prevmpidの次に大きいフレーム番号を持つ モーションポイントのidが代入されます。 | ver1.0.0.1
E3DGetMPInfo | モーション | mpinfoで指定した配列に、 情報が代入されます。 情報は１2(MPI_MAX)種類です mpinfoには、 dim mpinfo, MPI_MAX で作成した配列を指定してください。 MPI_で始まる定数は、 e3dhsp3.asで、定義されています。 mpinfo(MPI_QUA)は、クォータニオン情報 mpinfo(MPI_TRAX)は、Ｘ方向の移動量の情報 mpinfo(MPI_TRAY)は、Y方向の移動量の情報 mpinfo(MPI_TRAZ)は、Z方向の移動量の情報 mpinfo(MPI_FRAMENO)は、フレーム番号の情報 mpinfo(MPI_DISPSWITCH)は、 ディスプレイスイッチの情報 mpinfo(MPI_INTERP)は、補間計算方法の情報 mpinfo(MPI_SCALEX)は、Ｘ方向の拡大情報 mpinfo(MPI_SCALEY)は、Ｙ方向の拡大情報 mpinfo(MPI_SCALEZ)は、Ｚ方向の拡大情報 mpinfo(MPI_USERINT1)は、ユーザーデータの情報 mpinfo(MPI_SCALEDIV)は、拡大率の係数情報 として、使用されます。 mpinfo(MPI_QUA)には、 E3DCreateQで取得したqidを、 この関数の呼び出し前に、セットしておく必要があります。 mpinfo(MPI_QUA)に格納されているqidで 識別されるクォータニオンに、 モーションポイントの姿勢情報が代入されます。 mpinfo(MPI_DISPSWITCH)の ディスプレイスイッチ情報は、ビットごとの和になっています。 ディスプレイスイッチ番号ds がオンの場合は、 ２のds乗の値が足されていることになります。 例えば、ディスプレイスイッチ３だけがオンの場合は、２の3乗の８という値が代入されています。 mpinfo(MPI_INTERP)の 補間計算方法の情報は、 mpidで識別されるモーションポイントと、 その次に大きいフレーム番号を持つモーションポイントの間の、補間計算方法を示しています。 ０の時は、球面線形補間 １の時は、スプライン補間 となります。 現バージョンでは、 スプライン補間は、大きな角度の補間時には 使用できません。 （望ましい結果が得られません） ですので、 急激に変化することがあるかもしれない モーションポイント間の補間計算には、 球面線形補間を使用することを、 おすすめします。 拡大率は、MPI_SCALEDIVで割った値が 適用されています。 例えば、Ｘ軸方向の拡大率は、 mpinfo(MPI_SCALEX) / mpinfo(MPI_SCALEDIV) です。 小数点以下をセットできるように、 MPI_SCALEDIVが用意されています。 具体的な使用例は、 e3dhsp3_motionpoint.hsp をご覧ください。 | ・引数 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数　：　mpid モーションポイントを識別するＩＤ E3DGetNextMPで取得したidを渡してください。 5. [IN, OUT]　長さＭＰＩ＿ＭＡＸの配列　：　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)が１の場合は、 mpinfo(MPI_QUA)のクォータニオン情報を モーションポイントにセットします。 mpinfoflag(MPI_TRAX)が１の場合は、 mpinfo(MPI_TRAX)のX方向の移動量情報を モーションポイントにセットします。 以下同様に、 mpinfoflag(MPI_QUA) 〜mpinfoflag(MPI_SCALEDIV) までに、セットしたい項目に１を、 セットしたくない項目に０を指定してください。 具体的な使用例は、zip中の、 e3dhsp3_motionpoint.hsp に書いてありますので、 ご覧ください。 モーションポイントに情報をセットしただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数　：　mpid モーションポイントを識別するＩＤ 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 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数　：　frameno モーションポイントがあるかどうか、 調べたいフレーム番号を指定します。 5. [OUT] 変数　：　mpid モーションポイントを識別するＩＤ framenoが示すフレーム番号に、 モーションポイントがあった場合は、 そのモーションポイントのidが代入されます。 無かった場合は、-1が代入されます。 | ver1.0.0.1
E3DGetMotionFrameLength | モーション | motidで識別されるモーションのフレーム数を取得します。 気を付けて欲しいのは、 フレーム番号は、０から始まるので、 最大のフレーム番号は、 leng - 1 だということです。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [OUT] 変数　：　leng モーションのフレーム数が代入されます。 | ver1.0.0.1
E3DSetMotionFrameLength | モーション | モーションのフレーム数をframelengに変更します。 framelengが、変更前のフレーム数より小さかった場合は、 frameleng - 1より大きなフレーム番号を持つ モーションポイントは、削除されます。 あたり判定情報や、視野内判定情報が 削除されます。 再構築したい場合は、 initflagに１を指定してください。 しなくてもいい、もしくは、後でする場合は、 ０を指定してください。 あたり判定情報と、視野内判定情報は、 E3DFillUpMotion呼び出し時の initflagに１を指定することでも、 再構築できます。 再構築の計算は、時間がかかります。 ポーズの情報も、削除されます。 再構築する場合には、 E3DFillUpMotionを呼んでください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数　：　frameleng モーションのフレーム数を指定します。 4. [IN] 数値または、変数　：　initflag あたり判定情報と、視野内判定情報を 再構築する場合は１を、 しない場合は０を指定してください。 | ver1.0.0.1
E3DAddMP | モーション | mpinfoで指定した情報を持つモーションポイントを、新たに作成し、作成したモーションポイントを識別するidを取得します。 mpinfoには、 dim mpinfo, MPI_MAX で作成した配列を使用してください。 mpinfoの、どの成分に、 何の情報をセットすれば良いかは E3DGetMPInfoをご覧ください。 mpinfo(MPI_FRAMENO)で指定したフレーム番号に、 既に、モーションポイントが存在する場合は、エラーになりますので、 注意してください。 （呼び出し前にE3DIsExistMPで、 チェックすると確実です。） モーションポイントに情報をセットしただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN]要素数MPI_MAXの配列：　mpinfo モーションポイントの情報を格納する配列。 5. [OUT] 変数　：　mpid 新たに作成したモーションポイントを識別するidが 代入されます。 | ver1.0.0.1
E3DDeleteMP | モーション | mpidで識別されるモーションポイントを削除します。 この関数に渡したmpidは、 以後、使えなくなります。 モーションポイントの情報を更新しただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 4. [IN] 数値または、変数　：　mpid モーションポイントを識別するＩＤ E3DGetNextMPで取得したidを渡してください。 | ver1.0.0.1
E3DFillUpMotion | モーション | モーションを指定したフレーム番号分だけ、補間計算します。 この計算の結果、 モデルのポーズに、モーションポイントの情報が、反映されるようになります。 bonenoで指定したボーンと、 その全ての子供ボーンの計算が行われます。 そのため、 変更したボーンの内で、 一番親のボーンの番号で、 1回だけこの関数を呼び出せば、 良いことになります。 具体的な使用例は、zip中の、 e3dhsp3_fillupmotion.hsp に書きましたので、 ご覧ください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 bonenoで指定したボーンと その子供ボーン全てのポーズを計算します。 boneno に　-1を指定した場合は、 全てのボーンの計算が行われます。 ですが、 bonenoを指定した方が、 計算量が少なくなります。 4. [IN] 数値または、変数　：　startframe 5. [IN] 数値または、変数　：　endframe フレーム番号が、 startframeから、endframeまでの間の モデルのポーズを計算します。 startframeとendframeには、 モーションポイントが存在しなくても、 計算可能です。 endframeに-1を指定した場合は、 startrframeから、最後のフレームまで 計算されます。 6. [IN] 数値または、変数　：　initflag 過去のバージョンと互換性を取るための引数です。 ０を指定してください。 | ver1.0.0.1
E3DCopyMotionFrame | モーション | srcmotidで識別されるモーションの、フレーム番号srcframenoの、全てのモーションポイントの情報を、dstmotidで識別されるモーションの、フレーム番号dstframenoのモーションポイントへ、コピーします。 dstframenoに、モーションポイントが無い場合は、作成されます。 srcframenoにモーションポイントが無い場合は、 計算で求めて、dstframenoにコピーします。 この場合、計算時間が、余分にかかります。 モーションポイントに情報をセットしただけでは、モデルのポーズに反映されません。 ポーズに反映させるためには、 E3DFillUpMotionを呼んでください。 だたし、E3DFillUpMotionは、 とても、計算量が多く、実行時間が長いので、 なるべく呼び出し回数は少なくしてください。 つまり、必要なモーションポイントの操作が 全て終わってから、 まとめて一回だけ、E3DFillUpMotionするように してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　srcmotid コピー元のモーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 3. [IN] 数値または、変数　：　srcframeno コピー元のフレーム番号 4. [IN] 数値または、変数　：　dstmotid コピー先のモーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 5. [IN] 数値または、変数　：　dstframeno コピー先のフレーム番号 | ver1.0.0.1
E3DGetDirQ2 | モデル向き | E3DGetDirQをqidで操作できるようにしたものです。 qidで指定したクォータニオンに、 モデルデータの姿勢情報が、 格納されます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN, (OUT)] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 | ver1.0.0.1
E3DSetDirQ2 | モデル向き | E3DSetDirQをqidで操作できるようにしたものです。 qidで識別されるクォータニオンの 姿勢情報を、 モデルデータにセットします。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ 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の値によって、４つのモードがあります。 upflag == 0 のときは、 上向き方向が、常にＹ軸上方を向くように 制御されます。 upflag == 1 のときは、 上向き方向が、常にＹ軸下方を向くように 制御されます。 upflag == 2 のときは、 上向き方向が、連続した向きをとるように、 制御されます。 その結果、宙返りがかのうとなります。 upflag == 3 のときは、 上向き方向を、特に制御しません。 上向き方向は、連続した向きをとりますが、 その方向は、拘束されません。 飛行機の制御などに、upflag 2を使用し、 人型キャラなどの制御に、upflag 0 を使用する ことを、おすすめします。 upflag == 0とupflag== 1のときには、 真上と真下を向かないようにしてください。 upflag == 2とupflag==3のときは、 真上と真下を向いても、大丈夫です。 divnum引数に、分割数を指定します。 現在の位置と、目標地点との間の間隔を 1 / divnum ずつ、内分して、近づきます。 具体的な使用例は、 e3dhsp3_lookatq.hsp に書きましたので、ご覧ください。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ 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 クォータニオンを識別するＩＤ 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 クォータニオンを識別するＩＤ 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 クォータニオンを識別するＩＤ 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 クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンの ねじれを取得します。 2. [OUT] 変数　：　twist ねじれ角度の合計の値を、 代入します。 実数型の変数。 | ver1.0.0.1
E3DRotateQLocalX | 算術 | クォータニオンを、ローカルなＸ軸に関して、回転します。 現在の姿勢に対して、更に、回転します。 E3DRotateQXと違うのは、 姿勢変換を行う前のＸ軸に関して、 回転できる点です。 使用例は、e3dhsp3_motionpoint.hspに書きましたので、ご覧ください。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] 数値または、変数　：　deg deg 度だけ、回転を加えます。 実数。 | ver1.0.0.1
E3DRotateQLocalY | 算術 | クォータニオンを、ローカルなＹ軸に関して、回転します。 現在の姿勢に対して、更に、回転します。 E3DRotateQYと違うのは、 姿勢変換を行う前のＹ軸に関して、 回転できる点です。 使用例は、e3dhsp3_motionpoint.hspに書きましたので、ご覧ください。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] 数値または、変数　：　deg deg 度だけ、回転を加えます。 | ver1.0.0.1
E3DRotateQLocalZ | 算術 | クォータニオンを、ローカルなＺ軸に関して、回転します。 現在の姿勢に対して、更に、回転します。 E3DRotateQZと違うのは、 姿勢変換を行う前のＺ軸に関して、 回転できる点です。 使用例は、e3dhsp3_motionpoint.hspに書きましたので、ご覧ください。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 このidで識別されるクォータニオンに、 回転を加えます。 2. [IN] 数値または、変数　：　deg deg 度だけ、回転を加えます。 | ver1.0.0.1
E3DGetBonePos | モデル情報 | ボーンの位置情報を取得します。 poskind == 0のときは、ローカル座標(ボーン変形なし) poskind == 1のときは、グローバル座標 poskind == 2のときは、ローカル座標（ボーン変形あり） が取得できます。 bonenoには、E3DGetBoneNoByName で取得した番号を指定してください。 マルチレイヤーモーションを使用する場合は、 この命令は使えません。 E3DGetCurrentBonePosをお使いください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ E3DGetBoneNoByNameで取得した ボーンの番号を渡してください。 3. [IN] 数値または、変数　：　poskind ローカル座標と、グローバル座標の どちらを取得するかを指定します。 4. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmkを指定してください。 5. [IN] 数値または、変数　：　frameno モーションのフレーム番号を指定してください。 E3DSetNewPose呼び出し時に、現在のフレーム番号が取得できるので、 参考にしてください。 6. [OUT] 変数　：　posx 7. [OUT] 変数　：　posy 8. [OUT] 変数　：　posz (posx, posy, posz)に、 ボーンの座標が代入されます。 実数型の変数。 9. [IN] 数値または、変数　：　scaleflag scaleflagに１をセットすると、 E3DSetScaleの結果を反映したposを計算します。 ０がセットされた場合には、 E3DSetScaleの結果が反映されません。 | ver3.0.3.4で拡張
E3DCreateLine | ライン | 線を作成して、lineidを取得します。 lineidは、線オブジェクトを一意に識別するための番号です。 E3DCreateLine、E3DDestroyLine E3DSetLineColor、E3DAddPoint2Line E3DDeletePointOfLine、E3DSetPointPosOfLine E3DGetPointPosOfLine E3DGetNextPointOfLine E3DGetPrevPointOfLine に渡すlineidは、この関数で取得したlineidを 使用してください。 pointposには、 ddim pointpos, pointnum, 3 で確保したデータを渡してください。 dimではなくて、ddimで確保してください。 pointnumには、点の数を入れてください。 点の数の最大値は６５５３５です。 pointnumが２より小さい場合は、エラーになります。 pointpos(点の番号,0) にＸ座標、 pointpos(点の番号,１) にＹ座標、 pointpos(点の番号,２) にＺ座標 を入れて、初期化しておいてください。 作成した線は、 E3DRenderで、描画できます。 hsidの代わりに、lineidを指定してください。 LINE関係の関数の使用例は、 e3dhsp3_autorun.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数　：　pointpos 線を構成する点の座標を指定してください。 メモリの確保の仕方、値のセットの仕方は、 左の記述をご覧ください。 必ず、ddimでメモリを作成してください。 実数型の変数。 2. [IN] 数値または、変数　：　pointnum 初期化する点の数を指定してください。 pointposのデータを確保する際に使った 点の数を渡してください。 3. [IN] 数値または、変数　：　maxpointnum Lineは、E3DAddPoint2Line命令で、 点の数を増やすことが可能です。 最大何個まで、点の数を増やせるかを 指定してください。 （点の数の合計です。） ビデオメモリは、pointnumではなくて、 maxpointnumでアロケートされます。 4. [IN] 数値または、変数　：　linekind 線の種類を指定します。 LINELISTの場合は２を、 LINESTRIPの場合は３を指定してください。 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 透明度を指定します。 ０から２５５の値を渡してください。 3. [IN] 数値または、変数　：　R 4. [IN] 数値または、変数　：　G 5. [IN] 数値または、変数　：　B 色の成分(Ｒ，Ｇ，Ｂ)を指定してください。 それぞれ、０から２５５の値を渡してください。 | 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)には、Ｘ座標を、 pos(1)には、Ｙ座標を、 pos(2)には、Ｚ座標を指定してください。 | 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)には、Ｘ座標が、 pos(1)には、Ｙ座標が、 pos(2)には、Ｚ座標が代入されます。 | 1. [IN] 数値または、変数　：　lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数　：　pid 点を識別する番号を渡します。 3. [OUT] 変数　：　pos 点の座標が代入される配列を渡してください。 posの確保の仕方、値のセットのされ方は、 左の記述をご覧ください。 ddimで作成した実数型配列。 | ver1.0.0.1
E3DGetNextPointOfLine | ライン | previdで指定した点の、一つ後の点のＩＤを取得します。 線は、点を、双方向リストで、格納しています。 一つ後の点が存在しない場合は、 nextid には、負の値が代入されます。 | 1. [IN] 数値または、変数　：　lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数　：　previd 点を識別する番号 3. [OUT] 変数　：　nextid previdの点の、一つ後の点のＩＤが代入されます。 previd に-1が指定されている場合は、 nextidには、先頭の点のIDが代入されます | ver1.0.0.1
E3DGetPrevPointOfLine | ライン | pidで指定した点の、一つ前の点のＩＤを取得します。 線は、点を、双方向リストで、格納しています。 一つ前の点が存在しない場合は、 previd には、負の値が代入されます。 | 1. [IN] 数値または、変数　：　lineid 線を識別する番号を渡します。 E3DCreateLineで取得した番号を使ってください。 2. [IN] 数値または、変数　：　pid 点を識別するID 3. [OUT] 変数　：　previd pidの点の、一つ後の点のＩＤが代入されます。 | ver1.0.0.1
E3DWriteDisplay2BMP | 出力 | バックバッファの内容を、ＢＭＰファイルに保存します。 filenameには、拡張子を除いた名前を 指定してください。 E3DInitのmultisamplenumに０以外を指定した場合は、この命令は使えません。 （エラーになります。） | 1. [IN] 文字列または、文字列の変数　：　filename 出力するＢＭＰ のパス文字列。 拡張子を除いたパスを指定してください。 この関数で、自動的に、”.bmp”が付加されます。 既に同じファイル名が存在している場合は、 そのファイルは、上書きされるので注意してください。 2. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 | ver1.0.0.1 ver3.0.2.4で引数追加
E3DCreateAVIFile | 出力 | ＡＶＩファイルを初期化して、aviidを取得します。 aviidは、ＡＶＩファイルを識別するための番号です。 この命令で作成したＡＶＩファイルに対して、 E3DWriteData2AVIFile命令で、 バックバッファの内容を書き込み、 E3DCompleteAVIFile命令で、 終了処理をします。 E3DWriteData2AVIFile命令、 E3DCompleteAVIFile命令には、 E3DCreateAVIFile命令で取得したaviidを 渡してください。 E3DInitのmultisamplenumに０以外を指定した場合は、この命令は使えません。 （エラーになります。） ＡＶＩ関係の命令の具体的な使用例は、 e3dhsp3_savedisplay.hsp に書きましたので、ご覧ください。 | 1. [IN] 文字列または、文字列の変数　：　filename 出力するＢＭＰ のパス文字列。 拡張子を除いたパスを指定してください。 この関数で、自動的に、”.avi”が付加されます。 既に同じファイル名が存在している場合は、 そのファイルは、上書きされるので注意してください。 2. [IN] 数値または、変数　：　datatype 作成するデータの種類を指定します。 現バージョンでは、映像のみしか扱わないため、 常に１を指定してください。 3. [IN] 数値または、変数　：　compkind 圧縮の種類を指定します。 ０を指定した場合は、 圧縮なし １を指定した場合は、 cinepak Codec by Radiusによる圧縮 ２を指定した場合には、 Microsoft Video 1による圧縮 をします。 4. [IN] 数値または、変数　：　framerate ＡＶＩファイルのフレームレートを指定してください。 通常は、スクリプトプログラムのＦＰＳを指定します。 ６０ＦＰＳで表示している場合は、６０と指定します。 5. [IN] 数値または、変数　：　frameleng ＡＶＩファイルのフレーム数の合計数。 frameleng回だけ、E3DWriteData2AVIFileで、 データをファイルに書き込むことが出来ます。 6. [OUT] 変数　：　aviid 作成したＡＶＩファイルを識別するための 番号が代入されます。 7. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 | ver1.0.0.1 ver3.0.2.4で引数追加
E3DWriteData2AVIFile | 出力 | バックバッファの内容を、ＡＶＩファイルに書き込みます。 E3DCreateAVIFileで指定したframeleng回だけ この命令を呼ぶことが出来ます。 frameleng回を超えた呼び出しは、 エラーとなり、無視されます。 | 1. [IN] 数値または、変数　：　aviid AVIファイルを識別するための番号を指定してください。 E3DCreateAVIFileで取得した番号を使用してください。 2. [IN] 数値または、変数　：　datatype 作成するデータの種類を指定します。 現バージョンでは、映像のみしか扱わないため、 常に１を指定してください。 3. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 | ver1.0.0.1 ver3.0.2.4で引数追加
E3DCompleteAVIFile | 出力 | ＡＶＩファイルの終了処理をします。 必要な回数、E3DWriteData2AVIFile命令を 呼び出した後に、この命令を呼び出してください。 | 1. [IN] 数値または、変数　：　aviid AVIファイルを識別するための番号を指定してください。 E3DCreateAVIFileで取得した番号を使用してください。 2. [IN] 数値または、変数　：　datatype 作成するデータの種類を指定します。 現バージョンでは、映像のみしか扱わないため、 常に１を指定してください。 3. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 | ver1.0.0.1 ver3.0.2.4で引数追加
E3DCameraLookAt | カメラ | カメラを向きたい方向に、徐々に向けます。 （vecx, vecy, vecz）には、注視点ではなくて、 向きたい向きのベクトルを指定してください。 例えば、注視点(tx, ty, tz)を向きたい場合は、 E3DGetCameraPos camx, camy, camz として、カメラの位置を求め、 引き算するだけでＯＫです。 vecx = tx - camx vecy = ty - camy vecz = tz - camz のようにして、計算し、指定してください。 upflagは、E3DLookAtQでの用法と同じです。 upflag == 0 のときは、 上向き方向が、常にＹ軸上方を向くように 制御されます。 upflag == 1 のときは、 上向き方向が、常にＹ軸下方を向くように 制御されます。 upflag == 2 のときは、 上向き方向が、連続した向きをとるように 制御されます。 その結果、宙返りがかのうとなります。 upflag == 3 のときは、 上向き方向を特に制御しません。 上向き方向は、連続した向きをとりますが、 その方向は拘束されません。 divnum引数に、分割数を指定します。 現在の位置と、目標地点との間の間隔を 1 / divnum ずつ、内分して、近づきます。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 | 1. [IN] 数値または、変数　：　vecx 2. [IN] 数値または、変数　：　vecy 3. [IN] 数値または、変数　：　vecz 向きたいベクトルを、指定してください。 ベクトルの計算方法は、左記をご覧ください。 実数。 4. [IN] 数値または、変数　：　upflag 上向き制御方法のモードを指定してください。 詳しくは、左記をご覧ください。 5. [IN] 数値または、変数　：　divnum 分割数を指定してください。 | ver1.0.0.1
E3DCameraOnNaviLine | カメラ | カメラをナビラインに沿って動かします。 mode引数に０を指定すると、 カメラの位置だけを制御します。 mode引数に１を指定すると、 位置に加え、向きも制御します。 ループ移動や、反対方向への移動も サポートしています。 ナビラインの作成には、 GViewer.exeを使うと便利です。 （おちゃっこＬＡＢでダウンロード可能です。） ナビラインは、地面の高さに作成することが 普通なので、ナビラインからカメラまでの オフセット値を指定できるようにしました。 例えば、地面から１０００だけ上方を、 カメラを動かしたいときは、 地面の高さにナビラインを作成し、 この関数のオフセット引数に offsetx = 0 : offsety = 1000 : offsetz = 0 の値を指定すればＯＫです。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 | 1. [IN] 数値または、変数　：　nlid ナビラインを識別するＩＤ 2. [IN] 数値または、変数　：　mode 位置だけを制御する場合は０を、 位置と向きを制御する場合は１を指定してください。 3. [IN] 数値または、変数　：　roundflag ナビラインの最後のナビポイントに移動した後、 ナビラインの最初のナビポイントの位置を 目指すかどうかを示します。 １を指定すると、円形のナビラインの場合は、 ずっと、ぐるぐる回ることになります。 4. [IN] 数値または、変数　：　reverseflag １を指定すると、 ナビラインのポイントを逆順にたどるようになります。 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 現在目指しているナビポイントのＩＤを入れます。 移動後は、次に目指すべきナビポイントのＩＤが 代入されます。 ですので、一番最初の呼び出し時のみ、 自分でtargetpoinidを指定すれば、 あとは、同じ変数を渡すだけで、 自動的に、目指すべきポイントのＩＤが 代入されていくことになります。 targetpointidに、 存在しないナビポイントのＩＤを入れた場合は、 （例えば-1など） 自動的に、目指すべきナビポイントを決定します。 | ver1.0.0.1
E3DCameraDirUp | カメラ | カメラの現在向いている方向を、徐々に上の方向に向けます。 現バージョンでは、 宙返りはサポートしていません。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 | 1. [IN] 数値または、変数　：　deg 角度。 実数。 2. [IN] 数値または、変数　：　divnum deg度の角度を、1/divnumずつ内分して、 カメラを、上方向に向けます。 | ver1.0.0.1
E3DCameraDirDown | カメラ | カメラの現在向いている方向を、徐々に下の方向に向けます。 現バージョンでは、 宙返りはサポートしていません。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 | 1. [IN] 数値または、変数　：　deg 角度。 実数。 2. [IN] 数値または、変数　：　divnum deg度の角度を、1/divnumずつ内分して、 カメラを、下方向に向けます。 | ver1.0.0.1
E3DCameraDirRight | カメラ | カメラの現在向いている方向を、徐々に右の方向に向けます。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 | 1. [IN] 数値または、変数　：　deg 角度。 実数。 2. [IN] 数値または、変数　：　divnum deg度の角度を、1/divnumずつ内分して、 カメラを、右方向に向けます。 | ver1.0.0.1
E3DCameraDirLeft | カメラ | カメラの現在向いている方向を、徐々に左の方向に向けます。 具体的な使用例は、 e3dhsp3_CameraOnNaviline.hsp に書きましたので、 ご覧ください。 また、このページの最初に書いてある、 カメラの使い方の所も、お読みください。 | 1. [IN] 数値または、変数　：　deg 角度。 実数。 2. [IN] 数値または、変数　：　divnum deg度の角度を、1/divnumずつ内分して、 カメラを、左方向に向けます。 | ver1.0.0.1
E3DCreateFont | テキスト | フォントを作成し、フォントを識別するＩＤを取得します。 具体的な使用例は、 e3dhsp3_font.hsp に書きましたので、ご覧ください。 | 1. [IN] 数値または、変数　：　height フォントの文字セルまたは文字の高さを論理単位で指定します。 文字の高さとは、 文字セルの高さから内部レディング（アクセント記号などのためのスペース）の 高さを引いたものです。 要求されたサイズを超えない最大のフォントを探して処理されます。 2. [IN] 数値または、変数　：　width フォントの平均文字幅を論理単位で指定します。 0 を指定すると、条件に最も近い値が選択されます。 条件に最も近い値は、利用可能な各フォントの現在のデバイスでの 縦横比とデジタル化された縦横比の差の絶対値を比較することにより 決定されます。 3. [IN] 数値または、変数　：　weight フォントの太さを表す 0 から 1000 までの範囲内の値を指定します。 たとえば、400 を指定すると標準の太さになり、 700 を指定すると太字になります。 0 を指定すると、既定の太さが選択されます。 4. [IN] 数値または、変数　：　bItalic 斜体にするかどうかを指定します。 １ を指定すると、斜体になります。 5. [IN] 数値または、変数　：　bUnderline 下線を付けるかどうかを指定します。 １ を指定すると、下線付きになります。 6. [IN] 数値または、変数　：　bStrikeout 取り消し線を付けるかどうかを指定します。 １ を指定すると、取り消し線が付きます。 7. [IN] 文字列または、文字列の変数　：　fontname フォントの名前が入った 文字列を指定します。 文字列の長さは、 31 文字以下にしなければなりません。 8. [OUT] 変数　：　fontid 作成したフォントを識別するための 番号が代入されます。 | ver1.0.0.1
E3DDrawTextByFontID | テキスト | E3DCreateFontで作成したフォントにより、指定した位置、色で、テキストを表示します。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 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には、通常、この命令を呼び出すたびに、 １ずつ増えるカウンターの値を指定します。 例えば、eachcntに１０を指定した場合には、 一文字当たり１０カウントだけ待機するので、 １文字目は、curcntが１０になるまで表示されません。 ２文字目は、curcntが２０になるまで表示されません。 と、このように、curcntの値が、増えるに従って、 徐々に、表示文字長が増えていきます。 現バージョンでは、半角カタカナには、 対応していません。 具体的な使用例は、 e3dhsp3_fontWithCnt.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 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の文字数を取得して、決定してください。 ＨＳＰでは、文字列中に、'\n'が見つかった場合には、自動的に、"\r\n"に変換されるようです。 つまり、改行マーク１個に付き、１文字増えることになりますので、ご注意ください。 cntarray中の表示タイミングと、 curcntに指定したカウンターの値を比べて、 文字を表示するかどうかを決定します。 cntarray(0)に１０を、 cntarray(1)に２０を指定した場合には、 curcntが１０になったときに１文字目が表示され、 curcntが２０になったときに２文字目が表示されます。 cntarray(1)にcntarray(0)より小さな値を入れることも可能です。 その場合は、２文字目は１文字目よりも後で、 表示されることになります。 \nを文字列中に含む場合は、 自動的に挿入される\rの分の表示タイミングも 指定しないといけませんので、ご注意ください。 現バージョンでは、半角カタカナには、 対応していません。 具体的な使用例は、 e3dhsp3_fontWithCnt.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 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 | テキスト | １バイト文字、２バイト文字を判別して、textstr中の文字数を取得します。 ＨＳＰでは、文字列中に、'\n'が見つかった場合には、自動的に、"\r\n"に変換されるようです。 つまり、改行マーク１個に付き、１文字増えることになりますので、ご注意ください。 現バージョンでは、半角カタカナには、 対応していません。 | 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 で取得した、ＩＤを渡してください。 resqidで識別されるクォータニオンに、 startqid, endqidの間の姿勢を、 t の比率に基づいて補間計算し、 セットします。 t の値が、0.0 から1.0の間になるように、指定してください。 t が0.0のときは、 startqidと同じ姿勢がセットされます。 t が1.0のときは、 endqidと同じ姿勢がセットされます。 具体的な使い方は、 e3dhsp3_Spline.hsp をご覧ください。 | 1. [IN] 数値または、変数　：　startqid 2. [IN] 数値または、変数　：　endqid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 startqidとendqidのクォータニオンの間の姿勢を、 補間計算して、resqidのクォータニオンにセットします。 3. [IN] 数値または、変数　：　t 補間計算するクォータニオンのstartqidからの比率を指定してください。 t の値は、0.0から1.0の間の値を指定してください。 実数。 4. [IN] 数値または、変数　：　resqid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 計算結果が、resqidのクォータニオンに代入されます。 | ver1.0.0.1
E3DSquadQ | 算術 | クォータニオンを、スプライン補間します。 befqid, startqid, endqid, aftqid, resqidには、 E3DCreateQ で取得した、ＩＤを渡してください。 resqidで識別されるクォータニオンに、 startqid, endqidの間の姿勢を、 t の比率に基づいて補間計算し、 セットします。 befqidには、startqidの一つ前の姿勢を、 aftqidには、endqidの一つ後の姿勢を、 セットしておいてください。 この関数は、大きく姿勢が変化する場合には、 向いていません。 大きく変化する姿勢を補完する場合には、 E3DSlerpQを使用してください。 または、２つを組み合わせて、使用してください。 t の値が、0.0 から1.0の間になるように、指定してください。 t が0.0のときは、 startqidと同じ姿勢がセットされます。 t が1.0のときは、 endqidと同じ姿勢がセットされます。 具体的な使い方は、 e3dhsp3_Spline.hsp をご覧ください。 | 1. [IN] 数値または、変数　：　befqid 2. [IN] 数値または、変数　：　startqid 3. [IN] 数値または、変数　：　endqid 4. [IN] 数値または、変数　：　aftqid クォータニオンを識別するＩＤ E3DCreateQで取得したidを渡してください。 startqidとendqidのクォータニオンの間の姿勢を、 補間計算して、resqidのクォータニオンにセットします。 befqidには、startqidの一つ前の姿勢を、 aftqidには、endqidの一つ後の姿勢を、 セットしておいてください。 5. [IN] 数値または、変数　：　t 補間計算するクォータニオンのstartqidからの比率を指定してください。 t の値は、0.0から1.0の間の値を指定してください。 6. [IN] 数値または、変数　：　resqid クォータニオンを識別するＩＤ 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でメモリを確保してください。 配列の第１要素（例えばbefpos(0)）には、 Ｘ座標、 配列の第２要素（例えばbefpos(1)）には、 Ｙ座標、 配列の第３要素（例えばbefpos(2)）には、 Ｚ座標、 をセットしておいてください。 startposとendposの間の座標を、 tvの比率に基づいて、 スプライン補間計算して、 resposに代入します。 befposには、startposの一つ前の座標を、 aftposには、endposの一つ後の座標を セットしておいてください。 t の値が、0.0 から1.0の間になるように、指定してください。 t が0.0のときは、 startposと同じ位置がセットされます。 t が1.0のときは、 endposと同じ位置がセットされます。 具体的な使い方は、 e3dhsp3_Spline.hsp をご覧ください。 | 1. [IN] 変数　：　befpos 2. [IN] 変数　：　startpos 3. [IN] 変数　：　endpos 4. [IN] 変数　：　aftpos 計算の元となる、位置座標の配列を指定してください。 詳しくは、左記をご覧ください。 ddimで作成した実数型配列。 5. [IN] 数値または、変数　：　t 補間計算する位置座標のstartposからの比率を指定してください。 t の値は、0.0から1.0の間の値を指定してください。 6. [OUT] 変数　：　respos 計算結果が、代入される配列を指定してください。 ddimで作成した実数型配列。 | ver1.0.0.1
E3DDbgOut | デバッグ | dbg.txtに、指定した文字列を出力します。 この命令を呼ぶ前に、 一回だけE3DEnableDbgFileを 呼ぶ必要があります。 | 1. [IN] 文字列または、文字列変数　：　dbgstr 出力文字列を指定してください。 | ver1.0.0.1
E3DGetDiffuse | モデル情報 | 任意のパーツの任意の頂点の、diffuse色を取得します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -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それぞれ、０から２５５の値が代入されます。 | ver1.0.0.1
E3DGetAmbient | モデル情報 | 任意のパーツの任意の頂点の、ambient色を取得します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -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それぞれ、０から２５５の値が代入されます。 | ver1.0.0.1
E3DGetSpecular | モデル情報 | 任意のパーツの任意の頂点の、specular色を取得します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -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それぞれ、０から２５５の値が代入されます。 | ver1.0.0.1
E3DGetAlpha | モデル情報 | 任意のパーツの透明度を取得します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数　：　partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数　：　vertno この引数は、現在使用されていません。 適当な数字を入れてください。 4. [OUT] 変数　：　alpha 指定したパーツの透明度が、０〜２５５の値で代入されます。 | ver1.0.0.1
E3DSaveQuaFile | 出力 | 読み込み済みのモーションを、ファイルに保存します。 quatype引数でファイルのタイプを指定します。 e3dhsp3.asで定義されているQUATYPE_ で始まる定数を使います。 QUATYPE_NUMはボーンの階層構造から計算した番号を基準にファイルを作ります。 QUATYPE_NAMEはボーンの名前を基準にファイルを作ります。 ver5.0.3.8より前のバージョンのquaファイルはQUATYPE_NUMです。 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　mkid モーションを識別する番号を指定してください。 3. [IN] 文字列または、文字列変数　：　filename 保存ファイル名（パス）を指定してください。 4. [IN] 数値または、変数　：　quatype QUATYPE_ で始まる定数を指定。 デフォルト値はQUATYPE_NAME。 | ver1.0.0.1 ver5.0.3.8で引数追加
E3DSaveSigFile | 出力 | 形状データをsigファイルに保存します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 文字列または、文字列変数　：　filename 保存ファイル名（パス）を指定してください。 | ver1.0.0.1
E3DSetMipMapParams | 描画パラメータ | ミップマップのパラメータを設定します。 この関数を呼んだ後に実行される 全てのE3DSigLoadに影響します。 この命令を一度も呼ばなかった場合は、 miplevelに０、 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 | モデル情報 | 画面上の２Ｄ座標を指定して、その座標に、一番近い頂点を検出する関数です。 全く同じ座標の頂点が見つかった場合には、 複数のパーツ、複数の頂点の番号を 取得するするようになっています。 同じ座標でも、ＵＶだけが違う頂点などが 存在するので、複数取得できるようになっています。 取得した情報の数が、getnumに代入されます。 該当するデータが無い場合は、getnumに０が 代入されます。 getnumが０出ない場合には、 maxindex = getnum - 1とすると pickpartarray(0) から、pickpartarray(maxindex) までに、パーツの番号が代入されます。 pickvertarray(0)から、pickvertarray(maxindex) までに、頂点の番号が代入されます。 pickarrayleng変数に、 一度に取得できる情報の数をセットした後、 dim pickpartarray, pickarrayleng dim pickvertarray, pickarrayleng で、メモリを確保してください。 rangex, rangey引数を調整することで、 検出の感度を調整できます。 この関数の使用例は、 e3dhsp3_pickvert.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 3. [IN] 数値または、変数　：　posx 4. [IN] 数値または、変数　：　posy 画面上の２Ｄ座標を（posx, posy）で指定します。 5. [IN] 数値または、変数　：　rangex 6. [IN] 数値または、変数　：　rangey 検出距離を指定します。 rangexには、Ｘ座標がどれだけ離れた点まで検索するかを指定します。 rangeyには、Ｙ座標がどれだけ離れた点まで検索するかを指定します。 大きい値を指定すると、 指定した座標より遠い頂点まで検索します。 感度の調整に使用してください。 7. [OUT] 変数　：　pickpartarray 8. [OUT] 変数　：　pickvertarray 指定した座標に一番近いパーツ番号と、 頂点の番号がgetnum個だけ、代入されます。 9. [IN] 数値または、変数　：　pickarrayleng pickpartarray, pickvertarrayの配列の大きさを指定してください。 dim 命令で使用した値を渡してください。 詳しくは、左記をご覧ください。 10. [OUT] 変数　：　getnum pickpartarray, pickvertarrayに、何個の値を代入したかを 取得できます。 例えば、getnum が３だった場合には、 pickpartarray(0), pickpartarray(1), pickpartarray(2)に値が代入されています。 | ver1.0.0.1
E3DGetCullingFlag | モデル情報 | この関数は、現在、機能していません。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数　：　vertno 調べたい頂点の番号を指定してください。 4. [OUT] 変数　：　viewcullflag 視野外カリングされているとき１が、 されていないとき０が代入されます。 5. [OUT] 変数　：　revcullflag 背面カリングされているとき１が、 されていないとき０が代入されます。 | ver1.0.0.1
E3DGetOrgVertNo | モデル情報 | mqoファイル内での頂点番号を取得する。 パーツ内の頂点の数は、E3DGetVertNumOfPartのvertnumで取得されます。 E3Dのプログラムでは、頂点の番号に、０から(vertnum - 1)の頂点の番号を使用できます。 この頂点の番号は、表示用の最適化をした後の、頂点の番号で、 rok, mqoファイル内での頂点の番号と異なる場合があります。 この関数は、最適化後の頂点番号に対応する、rok,mqoファイル内での頂点の番号を取得します。 mqoの場合は、 mqoファイル中の、パーツごとの頂点の出現順番を返します。（０から始まる数字） rokの場合は、 rokファイル中の、１から始まる頂点のインデックスを返します。 rokの場合は、パーツごとの番号ではなくて、 頂点全体を通しての番号ですので 注意してください。 指定した頂点と同じ座標を持つ頂点の番号が代入されるので、場合によっては、複数取得されます。 この関数は、E3Dのプログラムから、im2ファイルを作る際などに使用することを想定して、作りました。 地面データには使わないでください。 この関数を使う前に、 E3DChkIM2Status関数で、引数に １が返されることを確認してください。 ０が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 orgarraylengに、取得できる情報の数をセットして、 dim orgnoarray, orgarrayleng で、メモリを確保してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 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引数に１が返された場合は、 利用可能。 ０が返された場合は、 利用不可能です。 ０が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 E3DGetOrgVertNo, E3DLoadIM2File, E3DSaveIM2File関数などを使用する前に、 このE3DChkIM2Status関数で、 影響マップファイルの機能が使えるかどうかを 調べてください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [OUT] 変数　：　status 影響マップ情報が、利用可能かどうかが代入されます。 | ver1.0.0.1
E3DLoadIM2File | ボーン影響 | hsidで識別されるモデルデータに、im2ファイルのボーン影響情報をセットします。 この関数を使う前に、 E3DChkIM2Status関数で、引数に １が返されることを確認してください。 ０が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 | 1. [IN] 数値または、変数　：　hsid hsidで識別されるモデルデータに、 im2ファイルのボーン影響情報をセットします。 2. [IN] 文字列または、文字列の変数　：　fname *.im2 のパス文字列。 | ver1.0.0.1
E3DSaveIM2File | ボーン影響出力 | hsidで識別されるモデルデータの影響マップ情報を、im2ファイルに書き出します。 この関数を使う前に、 E3DChkIM2Status関数で、引数に １が返されることを確認してください。 ０が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 コンバーターについては、 SigConvForIM2のページをご覧ください。 | 1. [IN] 数値または、変数　：　hsid hsidで識別されるモデルデータの影響マップ情報を、 im2ファイルに書き出します。 2. [IN] 文字列または、文字列の変数　：　fname *.im2 のパス文字列。 | ver1.0.0.1
E3DGetJointNum | モデル情報 | ジョイントの総数を取得します。 E3DGetJointInfoで詳細情報を取得する際の、 配列データの大きさの決定などに、 使用してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [OUT] 変数　：　jointnum ジョイントの総数が、代入されます。 | ver1.0.0.1
E3DGetJointInfo | モデル情報 | ジョイントの詳細情報を、一括取得します。 この関数を使用するには、 データ取得用の配列を、sdim, dim命令を使って、 作成する必要があります。 （データによって、ジョイントの総数が変化するので、ユーザーさん側で、データ長を調整する必要があります。） まず、jointmaxnum変数に、 E3DGetJointNum関数で、 ジョイントの総数を取得してください。 jointname引数は、 sdim jointname, 256, jointmaxnum で作成してください。 maxnameno = jointmaxnum - 1 とすると、 jointname(0) から、jointname(maxnameno) で、jointmaxnum個の名前にアクセスできます。 jointinfo引数は、 dim jointinfo, JI_MAX, jointmaxnum で作成してください。 JI_* は、e3dhsp3.asの 最初の方で定義されている定数です。 #define global JI_SERIAL 0 #define global JI_NOTUSE 1 #define global JI_PARENT 2 #define global JI_CHILD 3 #define global JI_BROTHER 4 #define global JI_SISTER 5 #define global JI_MAX 6 のように、定義されています。 配列のインデックスとして、使用してください。 JI_SERIALインデックスは、 ジョイントのシリアル番号にアクセスするときに、 使用します。 ジョイントのシリアル番号とは、 E3DGetPartNoByName あるいは、 E3DGetBoneNoByName で取得できる番号と同じものです。 JI_NOTUSEインデックスは、 ジョイントが無効になっているかどうかの フラグにアクセスするときに、使用します。 無効なときに１が、有効なときに０が代入されています。 JI_PARENT, JI_CHILD, JI_BROTHER, JI_SISTERインデックスは、 ジョイントの階層構造にアクセスするときに 使用します。 詳しくは、 ジョイントの階層構造のページ をご覧ください。 JI_MAXは、 JI_　で始まる定数の個数を定義しています。 jointinfoをdimするときに使用します。 jointinfoの内容を参照する場合には、 １つ目のインデックスに、 JI_で始まる定数を指定し、 2つ目のインデックスに、 何番目のジョイントかを表す番号 （シリアル番号ではありません） を指定します。 例えば、3番目のジョイントのシリアル番号に アクセスしたいときには、 jointinfo(JI_SERIAL,2) と書きます。 同様に、１番目のジョイントの親の番号に アクセスしたい場合には、 jointinfo(JI_PARENT,0) と書きます。 具体的な使用例は、サンプルの e3dhsp3_getjointinfo.hspをご覧ください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　jointmaxnum データ取得用配列の大きさ（ジョイントの数）を指定します。 3. [OUT] 文字列の配列変数　：　jointname 名前情報を取得するための配列を渡してください。 右に書いた方法で、sdimした配列を渡してください。 4. [OUT] 配列変数　：　jointinfo シリアル番号や、階層構造などを取得するための配列変数を渡してください。 右に書いた方法で、dimした配列を渡してください。 5. [OUT] 変数　：　jointgetnum 何個のジョイントの情報を出力したかが、代入されます。 通常は、jointmaxnumと同じ値が取得されます。 | ver1.0.0.1
E3DGetFirstJointNo | モデル情報 | 相対値０のジョイントの、シリアル番号を取得します。 ジョイント番号の相対値とは、 ボーンファイルや、im2ファイルなどで、 使用します。 各ファイルの説明をご覧ください。 ボーンファイルのページ im2ファイルのページ | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [OUT] 変数　：　firstno 相対値０のシリアル番号が、代入されます。 | ver1.0.0.1
E3DGetDispObjNum | モデル情報 | 表示用オブジェクトの総数を取得します。 E3DGetDispObjInfoで詳細情報を取得する際の、 配列データの大きさの決定などに、 使用してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 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インデックスは、 表示オブジェクトが無効になっているかどうかの フラグにアクセスするときに、使用します。 無効なときに１が、有効なときに０が代入されています。 DOI_DISPSWITCHインデックスは、 表示オブジェクトのディスプレイスイッチの番号 にアクセスするときに使用します。 ディスプレイスイッチは、 RokDeBone2で、パーツごとに設定可能です。 ディスプレイスイッチのページ DOI_INVISIBLEインデックスは、 表示オブジェクトが表示されているかどうかのフラグにアクセスするときに使用します。 詳しくは、 E3DSetInvisibleFlag の説明をお読みください。 DOI_MAXは、 DOI_　で始まる定数の個数を定義しています。 dispobjinfoをdimするときに使用します。 dispobjinfoの内容を参照する場合には、 １つ目のインデックスに、 DOI_で始まる定数を指定し、 2つ目のインデックスに、 何番目の表示オブジェクトかを表す番号 （シリアル番号ではありません） を指定します。 例えば、3番目の表示オブジェクトのシリアル番号に アクセスしたいときには、 dispobjinfo(DOI_SERIAL, 2) と書きます。 同様に、１番目の表示オブジェクトの ディスプレイスイッチ番号に、 アクセスしたい場合には、 jointinfo(DOI_DISPSWITCH, 0) と書きます。 具体的な使用例は、サンプルの e3dhsp3_getjointinfo.hspをご覧ください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　dispobjmaxnum データ取得用配列の大きさ（表示オブジェクトの数）を指定します。 3. [OUT] 文字列の配列変数　：　dispobjname 名前情報を取得するための配列を渡してください。 右に書いた方法で、sdimした配列を渡してください。 4. [OUT] 配列変数　：　dispobjinfo シリアル番号などを取得するための配列変数を渡してください。 右に書いた方法で、dimした配列を渡してください。 5. [OUT] 変数　：　dispobjgetnum 何個の表示オブジェクトの情報を出力したかが、代入されます。 通常は、dispobjmaxnumと同じ値が取得されます。 | ver1.0.0.1
E3DEnableTexture | 描画パラメータ | 一時的に、テクスチャー表示をオンオフする関数です。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　partno パーツを識別する番号（シリアル番号） 3. [IN] 変数または、数値　：　enableflag テクスチャーをオフにするときには０を、 オンにするときには１を指定してください。 | ver1.0.0.1
E3DJointAddToTree | モデル情報 | パーツに親子関係を設定します。 childjointをparentjointの子供として、 設定します。 lastflagが０のときは、長男として追加され、 １のときは、末っ子として追加されます。 ジョイント以外に、親子関係を設定しても、 現バージョンでは、意味がありません。 childjoint, parentjointは、 E3DGetPratNoByNameまたは、 E3DGetJointInfoで取得した番号を 使用してください。 E3DJointRemake命令もお読みください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別する番号 2. [IN] 変数または、数値　：　parentjoint 3. [IN] 変数または、数値　：　childjoint parentjointの子供として、childjointを設定します。 4. [IN] 変数または、数値　：　lastflag ０を指定するとparentjointの長男として、 １を指定するとparentjointの末っ子として設定されます。 | ver1.0.0.1
E3DJointRemoveFromParent | モデル情報 | パーツの親子関係を取り除きます。 rmjointで指定したパーツと、 その親のパーツとの関係を切り離します。 rmjointの子供の情報は、そのまま残ります。 ジョイント以外に、親子関係を設定しても、 現バージョンでは、意味がありません。 この命令で、親が存在しないまま、 E3DSaveSigFileでファイルに保存すると、 そのファイルは、読み込みできなくなります。 最終的には、E3DJointAddToTreeで、 必ず、親を設定するようにしてください。 一番親のジョイントにしたい場合には、 ジョイントではないフォルダ的な役割をしているパーツの番号を取得して、 それを親に設定してください。 rmjointは、 E3DGetPratNoByNameまたは、 E3DGetJointInfoで取得した番号を 使用してください。 E3DJointRemake命令もお読みください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別する番号 2. [IN] 変数または、数値　：　rmjoint rmjointと、その親の関係を切り離します。 | ver1.0.0.1
E3DJointRemake | モデル情報 | 親子関係や、有効無効の変更を、Easy3D内部の関連データに反映させます。 一連の、E3DJointAddToTreeや E3DJointRemoveFromParent命令や E3DSetValidFlagを 呼び出した後に、一回、呼び出してください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別する番号 | ver1.0.0.1
E3DSigImport | 形状データ | hsidに読み込み済の形状データに、 filenameで指定した形状データを インポートします。 この命令を呼ぶと、 読み込み済のモーションデータが破棄されます。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別する番号 2. [IN] 文字列または、文字列の変数　：　filename インポートする*.sig のパス文字列。 3. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 4. [IN] 変数または、数値　：　mult 倍率の値を指定してください。 デフォルトは1.0です。 等倍は、１．０。 実数。 5. [IN] 変数または、数値　：　offsetx 6. [IN] 変数または、数値　：　offsety 7. [IN] 変数または、数値　：　offsetz 読み込み位置のオフセット座標を、 （offsetx, offsety, offsetz）で指定します。 ローカル座標で指定します。 実数。 8. [IN] 変数または、数値　：　rotx 9. [IN] 変数または、数値　：　roty 10. [IN] 変数または、数値　：　rotz 追加形状を、Ｘ，Ｙ，Ｚそれぞれの軸に対して、 rotx, roty, rotz度だけ、回転してから、 インポートを行います。 回転順序は、Ｚ，Ｙ，Ｘの順番です。 実数。 パラメータの適用順序は、 まず、倍率を掛けて、 次に、回転をして、 最後に、移動します。 | 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 ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 6. [IN] 変数または、数値　：　mult 倍率の値を指定してください。 デフォルトは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 ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 6. [IN] 変数または、数値　：　mult 倍率の値を指定してください。 デフォルトは１．０です。 等倍は１．０。 実数。 7. [IN] 変数または、数値　：　offsetx 8. [IN] 変数または、数値　：　offsety 9. [IN] 変数または、数値　：　offsetz 読み込み位置のオフセット座標を、 （offsetx, offsety, offsetz）で指定します。 ローカル座標で指定します。 実数。 10. [IN] 変数または、数値　：　rotx 11. [IN] 変数または、数値　：　roty 12. [IN] 変数または、数値　：　rotz 追加形状を、Ｘ，Ｙ，Ｚそれぞれの軸に対して、 rotx, roty, rotz度だけ、回転してから、 インポートを行います。 回転順序は、Ｚ，Ｙ，Ｘの順番です。 実数。 パラメータの適用順序は、 まず、倍率を掛けて、 次に、回転をして、 最後に、移動します。 | ver1.0.0.1
E3DAddMotionFromBuf | モーション | メモリからモーションデータのロードを行います。 メモリ内には、quaまたはmotファイルと 同じフォーマットが入っているとみなして、 処理します。 quaデータの読み込み時は、 datakindに０を指定し、 motデータの読み込み時には、 datakindに１を指定してください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するhsid 2. [IN] 変数または、数値　：　datakind quaデータの時は０を、 motデータの時は１を指定してください。 3. [IN] 変数　：　buf バッファの変数 4. [IN] 変数または、数値　：　bufleng バッファの中のデータの長さ 5. [OUT] 変数　：　mk 読み込んだモーションを識別する番号 6. [OUT] 変数　：　maxframe 読み込んだモーションの最大フレーム番号 （総フレーム数 - 1 と同じ） 7. [IN] 変数または、数値　：　mvmult モーションの移動成分に掛ける倍率 省略すると１．０ 実数 | ver1.0.0.1 ver4.0.1.6で引数追加
E3DCheckFullScreenParams | 描画パラメータ | フルスクリーンのパラメータをチェックし、与えた条件に近いパラメータを取得します。 validflagに１が返された場合のみ、 validw, validh, validbitsの値は有効です。 validflagに０が返された場合には、 ウインドウの大きさなどの条件を変えて、 有効なパラメータが取得できるまで、 繰り返し、この命令を呼び出してください。 この命令は、E3DInitよりも前に呼ぶことを前提にしています。 この命令で、取得したvalidwとvalidhでウインドウを作成した後（screen命令やbgscr命令などで）、 E3DInitのbits引数にvalidbitsを指定して、フルスクリーン初期化してください。 具体的な使用例は、 e3dhsp3_fullscreen.hsp に書きましたので、ご覧ください。 | 1. [IN] 数値または、変数　：　screenw 2. [IN] 数値または、変数　：　screenh 3. [IN] 数値または、変数　：　bits 使用したいフルスクリーンのパラメータを指定します。 screenwにスクリーンの幅 screenhにスクリーンの高さ bitsに色数を示すビット数を指定します。 4. [OUT] 変数　：　validflag screenw, screenh, bitsで指定したパラメータに近い フルスクリーンが作れることが分かった場合に、 １がセットされます。 与えられたパラメータでは、フルスクリーンが作れないことが 分かった場合には、０がセットされます。 5. [OUT] 変数　：　validw 6. [OUT] 変数　：　validh 7. [OUT] 変数　：　validbits フルスクリーンの作成に有効なパラメータが返されます。 screenw, screenh, bitsで指定したものとは、 多少、異なる場合があります。 これらの値は、validflagに１が代入されているときのみ有効です。 | ver1.0.0.1
E3DGetMaxMultiSampleNum | 描画パラメータ | アンチエイリアスに必要な、マルチサンプルの数の最大値を取得します。 この関数は、E3DInitよりも前に呼び出すことを 想定しています。 E3DInitに渡すmultisamplenumの値の決定に 使用してください。 具体的な使用例は、 e3dhsp3_antialias.hsp に書きましたので、ご覧ください。 | 1. [IN] 数値または、変数　：　bits 色数を決めるビット数を指定してください。 2. [IN] 数値または、変数　：　iswindowmode ウインドウモードの時は１を フルスクリーンの時は０を指定してください。 3. [OUT] 変数　：　maxmultisamplenum マルチサンプルの数の指定に有効な、最大の値を代入します。 ０または、２から１６の値が代入されます。 ハードウェアによって、異なる値が代入されます。 | ver1.0.0.1
E3DChkConfLineAndFace | 当たり判定 | 任意の線分と、sigの面との当たり判定をします。 この当たり判定は、 hsidで指定したデータのボーン変形が、 必要になります。 ですが、同じポーズで何回も当たり判定を行う場合などには、いちいちボーン変形を計算し直さない方が高速です。 needtransに０を指定すると、 ボーン変形計算を省略することが出来ます。 （ポーズが変わった場合や、 カメラ位置を変えた場合には、 needtransを１にしてください。） 線分と面との当たりE3DChkConfLineAndFaceは、結構、重い処理です。 ですので、出来るだけ、呼び出し回数を 少なくするように心がけてください。 呼び出し回数を少なくするための工夫として、 まず、E3DChkConflictで、 おおざっぱな当たり判定を行い、 E3DChkConflictで、当たっていると判定されたときのみ、 E3DChkConfLineAndFaceを呼び出す、 などの方法が有効です。 E3DChkInViewより後で呼び出してください。 具体的な使用例は、 e3dhsp3_ConfLineAndFace.hsp に書きましたので、ご覧ください。 | 1. [IN] 数値または、変数　：　posx1 2. [IN] 数値または、変数　：　posy1 3. [IN] 数値または、変数　：　posz1 4. [IN] 数値または、変数　：　posx2 5. [IN] 数値または、変数　：　posy2 6. [IN] 数値または、変数　：　posz2 線分を、（posx1, posy1, posz1）と、(posx2, posy2, posz2)で 指定してください。 実数。 7. [IN] 数値または、変数　：　hsid モデルデータを識別するＩＤ 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 衝突していた面が裏面だった場合、１が代入されます。 表面だった場合は、０が代入されます。 | ver1.0.0.1
E3DPickFace | 当たり判定 | ２Ｄの画面の座標に対応する、３Ｄモデルの座標を取得できます。 マウスでクリックした場所に、 ３Ｄオブジェクトを移動させることなどに使用してください。 E3DPickVertが、３Ｄモデルの頂点を抽出するのに対し、 E3DPickFaceは、３Ｄモデルの面を抽出し、 ２Ｄ座標に対応する面上の３Ｄ座標を取得します。 maxdist によって、どのくらい遠くまで 検索するかを指定できます。 maxdistの値を小さくするほど、 処理は高速になります。 計算には、E3DChkInViewの結果を 使用しています。 具体的な使用例は、 e3dhsp3_pickface.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 3. [IN] 数値または、変数　：　pos2x 4. [IN] 数値または、変数　：　pos2y 画面上の２Ｄ座標を指定してください。 5. [IN] 数値または、変数　：　maxdist どのくらいの距離まで、３Ｄモデルの検索をするかを指定します。 この値を小さくするほど、処理は高速になります。 6. [OUT] 変数　：　partno 7. [OUT] 変数　：　faceno 2D座標に対応する３Ｄ座標が見つかった場合に、 その３Ｄモデルのパーツの番号と、面の番号が 代入されます。 見つからなかった場合は、-1が代入されます。 8. [OUT] 変数　：　pos3x 9. [OUT] 変数　：　pos3y 10. [OUT] 変数　：　pos3z ２Ｄ座標に対応する３Ｄ座標が代入されます。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 11. [OUT] 変数　：　nx 12. [OUT] 変数　：　ny 13. [OUT] 変数　：　nz 2D座標に対応する３Ｄ座標を含む面の法線ベクトルが 代入されます。 ベクトルの大きさは１のものを代入します。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 14. [OUT] 変数　：　dist 視点と（pos3x, pos3y, pos3z）との距離が代入されます。 partnoに-1以外の値が代入されているときのみ、 この値は意味を持ちます。 実数型の変数。 15. [IN] 数値または、変数　：　calcmode １を指定してください。 | ver1.0.0.1
E3DGetBBox | モデル情報 | 読み込んだモデルデータのバウンダリーボックスの取得が出来ます。 カメラの設定や、プロジェクションの設定を、モデルの大きさに応じて変更する場合などに使ってください。 mode引数で、 ローカル座標か、グローバル座標かを 指定できるようにする予定です。 現在は、グローバル座標しか取得できません。 この命令で使用する情報は、E3DChkInViewで更新されます。 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 ビルボードの情報を得たい場合は-1を指定してください。 2. [IN] 数値または、変数　：　partno パーツを識別する番号を指定してください。 -1を指定した場合は、モデル全体のバウンダリーボックスを取得します。 hsidに-1を指定した場合は ビルボードのIDを指定してください。 3. [IN] 数値または、変数　：　mode 現在はサポートされていません。 ０を指定してください。 4. [OUT] 変数　：　minx 5. [OUT] 変数　：　maxx 6. [OUT] 変数　：　miny 7. [OUT] 変数　：　maxy 8. [OUT] 変数　：　minz 9. [OUT] 変数　：　maxz Ｘ座標の最小、最大 Ｙ座標の最小、最大 Ｚ座標の最小、最大 がそれぞれ、代入されます。 実数型の変数。 | ver1.0.0.1 ver5.0.2.9で拡張
E3DGetVertNoOfFace | モデル情報 | facenoで指定した面に含まれる頂点の番号を３つ取得します。（３角形の頂点です） facenoには、E3DPickFaceなどで取得した 面の番号を指定してください。 E3DGetSamePosVertの説明も お読みください。 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　partno パーツを識別する番号を指定してください。 3. [IN] 数値または、変数　：　faceno 面を識別する番号を指定してください。 4. [OUT] 変数　：　vertno1 5. [OUT] 変数　：　vertno2 6. [OUT] 変数　：　vertno3 ３角形の面を構成する３つの頂点の番号が 代入されます。 | ver1.0.0.1
E3DGetSamePosVert | モデル情報 | 同じ位置の頂点番号を取得する。 モデルデータ中には、同じ頂点座標で、 ＵＶ座標だけ違う頂点が存在します。 同じ位置の頂点の番号を取得する関数です。 E3DGetVertNoOfFaceと組み合わせて 使うことを想定しています。 samevertno には、見つかった頂点数分の 頂点番号が代入されます。 arraylengに５くらいの値を入れて、 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 | モデル出力 | 読み込み済の形状データを、メモリ上に保存します。 保存するためのバッファは、 ユーザーさん側が用意します。 バッファの長さが分からないと、 保存操作が行えないため、 バッファ長の取得と、実際の保存とで、 合計２回、この関数を呼び出してください。 bufsize引数に０を指定すると、 保存を行わずに、 保存に必要なバッファの長さを取得します。 バッファの長さを取得した後に、 その長さをbufsize引数に指定して、 実際の保存を行ってください。 実際のコードは、以下のようになります。 E3DSaveSig2Buf hsid, sigbuf, 0, sigwritesize sdim sigbuf, sigwritesize E3DSaveSig2Buf hsid2, sigbuf, sigwritesize, writesize1 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 変数　：　buf バッファの変数を指定してください。 3. [IN] 数値または、変数　：　bufsize ０を指定すると、 保存に必要なバッファの長さが、writesizeに代入されます。 ０以外を指定すると、 バッファbufに、形状データを保存します。 4. [OUT] 変数　：　writesize bufsizeに０が指定されている場合には、 必要なバッファのサイズが代入されます。 bufsizeに０以外が指定されている場合には、 実際に保存したデータのバイト数を代入します。 | ver1.0.0.1
E3DSaveQua2Buf | モーション出力 | 読み込み済のモーションデータを、メモリ上に保存します。 保存するためのバッファは、 ユーザーさん側が用意します。 バッファの長さが分からないと、 保存操作が行えないため、 バッファ長の取得と、実際の保存とで、 合計２回、この関数を呼び出してください。 bufsize引数に０を指定すると、 保存を行わずに、 保存に必要なバッファの長さを取得します。 バッファの長さを取得した後に、 その長さをbufsize引数に指定して、 実際の保存を行ってください。 実際のコードは、以下のようになります。 E3DSaveQua2Buf hsid, mkid, quabuf, 0, quawritesize, quatype sdim quabuf, quawritesize E3DSaveQua2Buf hsid, mkid, quabuf, quawritesize, writesize2, quatype quatype引数でファイルのタイプを指定します。 e3dhsp3.asで定義されているQUATYPE_ で始まる定数を使います。 QUATYPE_NUMはボーンの階層構造から計算した番号を基準にファイルを作ります。 QUATYPE_NAMEはボーンの名前を基準にファイルを作ります。 ver5.0.3.8より前のバージョンのquaファイルはQUATYPE_NUMです。 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　mkid モーションを識別する番号を指定してください。 3. [IN] 変数　：　buf バッファの変数を指定してください。 4. [IN] 数値または、変数　：　bufsize ０を指定すると、 保存に必要なバッファの長さが、writesizeに代入されます。 ０以外を指定すると、 バッファbufに、モーションデータを保存します。 5. [OUT] 変数　：　writesize bufsizeに０が指定されている場合には、 必要なバッファのサイズが代入されます。 bufsizeに０以外が指定されている場合には、 実際に保存したデータのバイト数を代入します。 6. [IN] 数値または、変数　：　quatype QUATYPE_ で始まる定数を指定。 デフォルト値はQUATYPE_NAME。 | ver1.0.0.1 ver5.0.3.8で引数追加
E3DCameraShiftLeft | カメラ | カメラを左に平行移動します。 | 1. [IN] 数値または、変数　：　shift 移動量。 実数。 | ver1.0.0.1
E3DCameraShiftRight | カメラ | カメラを右に平行移動します。 | 1. [IN] 数値または、変数　：　shift 移動量。 実数。 | ver1.0.0.1
E3DCameraShiftUp | カメラ | カメラを上に平行移動します。 | 1. [IN] 数値または、変数　：　shift 移動量。 実数。 | ver1.0.0.1
E3DCameraShiftDown | カメラ | カメラを下に平行移動します。 | 1. [IN] 数値または、変数　：　shift 移動量。 実数。 | ver1.0.0.1
E3DGetCameraQ | カメラ | カメラの回転変換を表すクォータニオンを 取得します。 使い方の例は、 e3dhsp3_toolscamera.hsp にあります。 | 1. [IN] 数値または、変数　：　qid クォータニオンのＩＤを渡してください。 qidで識別されるクォータニオンに、 カメラの回転情報を代入します。 qidには、E3DCreateQで取得したＩＤを使用してください。 | ver1.0.0.1
E3DInvQ | 算術 | 逆クォータニオンを取得します。 使い方の例は、 e3dhsp3_toolscamera.hsp にあります。 | 1. [IN] 数値または、変数　：　srcqid 2. [IN] 数値または、変数　：　dstqid クォータニオンのＩＤを渡してください。 dstqidで識別されるクォータニオンに、 srcqidで識別されるクォータニオンの逆クォータニオンを代入します。 srcqid, dstqidには、 E3DCreateQで取得したＩＤを使用してください。 | ver1.0.0.1
E3DSetCameraTwist | カメラ | カメラをツイスト（ロール）させます。 カメラの使い方は、この表の前に書いてある部分をお読みください。 E3DSetCameraTwistは、どのタイプのカメラ関数を使用している場合でも、有効です。 E3DSetCameraTargetを使用している場合には、 E3DSetCameraTargetで指定した上方向のベクトルを、さらにtwistdeg分ねじります。 | 1. [IN] 数値または、変数　：　twistdeg カメラをtwistdeg度だけ、ツイストします。 実数。 | ver1.0.0.1
E3DIKRotateBeta | モーション | ＩＫによるジョイントの回転を行います。 目標の座標などを指定すると、 そこに近づくように、回転します。 この関数は、ベータ版です。 今後のバージョンアップで、 互換性のとれない変更をする場合がありますので、ご注意ください。 この関数では、指定したモーションの1フレーム分の姿勢情報しか変更しません。 モーション全体に、ＩＫ結果を反映させたい場合は、 ＩＫ計算した前後のキーフレーム間で、 E3DFillUpMotionを呼び出す必要があります。 使い方の例は、 e3dhsp3_ikrotatebeta.hsp にあります。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 3. [IN] 数値または、変数　：　jointno ジョイントパーツを識別する番号を指定してください。 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定するとエラーになります。 4. [IN] 数値または、変数　：　motionid モーションを識別する番号を指定してください。 5. [IN] 数値または、変数　：　frameno モーションのフレーム番号を指定してください。 6. [IN] 数値または、変数　：　iklevel ＩＫ計算時の階層数を指定します。 何階層、親をさかのぼって、ＩＫ計算するかを指定します。 7. [IN] 数値または、変数　：　axiskind IKの回転の際の軸をどのように決定するかを指定します。 ０の時は、視線に平行なベクトルを使います。 １の時は、axisx, axisy, axiszに指定した軸を使います。 2の時は、自動的に軸を設定します。 8. [IN] 数値または、変数　：　axisx 9. [IN] 数値または、変数　：　axisy 10. [IN] 数値または、変数　：　axisz IKの回転軸を指定します。 axiskindに、１を指定したときのみ、有効です。 実数。 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の２Ｄ座標指定バージョンです。 目標座標が、２Ｄになった以外は、 E3DIKRotateBetaと同じです。 詳しくは、E3DIKRotateBetaの説明を お読みください。 具体的な使用例は、 e3dhsp3_MouseDePose.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 3. [IN] 数値または、変数　：　jointno ジョイントパーツを識別する番号を指定してください。 E3DGetPartNoByNameなどで取得した値や、 E3DGetJointInfoで取得したシリアル番号を指定してください。 ジョイント以外のパーツの番号を指定するとエラーになります。 4. [IN] 数値または、変数　：　motionid モーションを識別する番号を指定してください。 5. [IN] 数値または、変数　：　frameno モーションのフレーム番号を指定してください。 6. [IN] 数値または、変数　：　iklevel ＩＫ計算時の階層数を指定します。 何階層、親をさかのぼって、ＩＫ計算するかを指定します。 7. [IN] 数値または、変数　：　axiskind IKの回転の際の軸をどのように決定するかを指定します。 ０の時は、視線に平行なベクトルを使います。 １の時は、axisx, axisy, axiszに指定した軸を使います。 2の時は、自動的に軸を設定します。 8. [IN] 数値または、変数　：　axisx 9. [IN] 数値または、変数　：　axisy 10. [IN] 数値または、変数　：　axisz IKの回転軸を指定します。 axiskindに、１を指定したときのみ、有効です。 実数。 11. [IN] 数値または、変数　：　calclevel 計算の細かさを指定します。 正の整数を指定してください。 値が大きいほど細かく動きますが、 現バージョンでは、大きすぎても、うまくいきません。 12. [IN] 数値または、変数　：　target2dx 13. [IN] 数値または、変数　：　target2dy jointnoで指定したジョイントが、 指定した２Ｄ座標に近づくように、回転します。 14. [OUT] 変数　：　resx 15. [OUT] 変数　：　resy 16. [OUT] 変数　：　resz jointnoで指定したジョイントの、計算後の座標が代入されます。 実数型の変数。 17. [OUT] 変数　：　lastparent 姿勢の変更のあったボーンのうち、 一番親の番号が代入されます。 この値を、E3DRenderに渡すと、処理の高速化が出来ます。 詳しくは、E3DRednerのところの注意事項をお読みください。 | ver1.0.0.1
E3DGetMotionType | モーション | モーションのタイプを取得します。 得られるタイプの意味は、以下のようになります。 １がフレーム番号固定(Stop) ２が最終フレーム番号まで進んだら固定(Clamp) ３が最終フレーム番号まで進んだら、先頭フレームに戻る(Round) ４が最終フレーム番号まで進んだら、先頭フレームの方向に逆進する（PingPong） ５が最終フレームまで進んだら、指定フレームにジャンプする（Jump） | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　motid モーションを識別する番号を指定してください。 3. [OUT] 変数　：　typeptr 左で説明したモーションの種類が代入されます。 | ver1.0.0.1
E3DSetMotionType | モーション | モーションのタイプをセットします。 typeに指定する値の意味は、以下のようになります。 １がフレーム番号固定(Stop) ２が最終フレーム番号まで進んだら固定(Clamp) ３が最終フレーム番号まで進んだら、先頭フレームに戻る(Round) ４が最終フレーム番号まで進んだら、先頭フレームの方向に逆進する（PingPong） | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　motid モーションを識別する番号を指定してください。 3. [IN] 数値または、変数　：　type 左で説明したモーションの種類を指定してください。 | ver1.0.0.1
E3DGetIKTransFlag | モデル情報 | ＩＫ伝達禁止情報を、ジョイントから取得します。 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　jointid ジョイントを識別する番号を指定してください。 3. [OUT] 変数　：　flagptr 通常の場合は０が、 ＩＫ伝達禁止の時は１が代入されます。 | ver1.0.0.1
E3DSetIKTransFlag | モデル情報 | ＩＫ伝達禁止情報を、ジョイントにセットします。 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　jointid ジョイントを識別する番号を指定してください。 3. [IN] 数値または、変数　：　flag 通常の場合は０を、 ＩＫ伝達禁止の時は１を指定してください。 | 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とした場合は、 １００を指定してください。 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 | 算術 | 任意の２Ｄ座標を３Ｄ座標に変換します。 マウスの位置に対応する、３Ｄ座標を 求める場合などに、便利です。 この関数を使用して、 マウスクリックで、 ３Ｄラインを描画するサンプルを e3dhsp3_DrawLine.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　x2d 3. [IN] 数値または、変数　：　y2d 変換したい、マウスの位置などを、 (x2d, y2d)で指定します。 4. [IN] 数値または、変数　：　z カメラからどのくらいの距離の平面上の点を取得するかを 指定します。 ３Ｄ座標のＺの値ではありません。 カメラからの距離を制御出来るものと考えてください。 （距離の値とは違います。） 0.0のとき、カメラに一番近い座標がえられます。 1.0のとき、カメラから、一番遠い（見える範囲での） 座標がえられます。 見える範囲とは、 E3DSetProjectionで指定した範囲のことです。 実際のカメラの距離と、このzの値は、 比例関係にありません。 zの値をちょっと大きくしただけで、 カメラからの距離が大きく変わったり、 反対に、zを大きく変えても、 カメラからの距離が少ししか変わらない領域もあります。 ０に近すぎる値では、 見えないことがあるので注意してください。 実数。 5. [OUT] 変数　：　x3d 6. [OUT] 変数　：　y3d 7. [OUT] 変数　：　z3d 上で指定した２Ｄ座標に対応する３Ｄ座標が、 （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 | モデル情報 | テクスチャーのＵＶ座標をセットします。 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 設定したいＵＶ値の値を指定してください。 通常は0.0から1.0の値。 実数。 6. [IN] 変数または、数値　：　setflag setflag に０を指定すると、 指定ＵＶ値を、そのままセットします。 setflagに１を指定すると、 指定ＵＶ値を、既存のＵＶ値に、足し算します。 | ver1.0.0.1
E3DGetUV | モデル情報 | テクスチャーのＵＶ座標を取得します。 partnoには、 E3DGetPartNoByNameで取得した番号を、 vertnoには、 E3DGetVertNumOfPartで取得した頂点数を vertnumとしたとき、 0から(vertnum - 1)までの値を渡してください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　partno パーツを識別する番号 3. [IN] 変数または、数値　：　vertno 頂点の番号 4. [OUT] 変数　：　u 5. [OUT] 変数　：　v ＵＶ座標の値が、代入されます。 実数型の変数。 | ver1.0.0.1
E3DPickBone | モデル情報 | 指定した２Ｄ座標に近いジョイントの番号を取得します。 ２Ｄ座標には、マウスの座標などを指定してください。 具体的な使用例は、 e3dhsp3_MouseDePose.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　posx 3. [IN] 変数または、数値　：　posy ２Ｄ座標を、（posx, posy）で指定します。 4. [OUT] 変数　：　jointno 指定した２Ｄ座標に近いジョイントがある場合には、 そのジョイントのＩＤが代入されます。 近くにジョイントがない場合には、０以下が代入されます。 | ver1.0.0.1
E3DShiftBoneTree2D | モーション | 指定した２Ｄ座標に近づくように、ボーンツリー全体を、移動します。 具体的な使用例は、 e3dhsp3_MouseDePose.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 3. [IN] 数値または、変数　：　jointno ジョイントを識別するＩＤ E3DPickBoneなどで取得した、 ジョイントの番号を渡してください。 4. [IN] 数値または、変数　：　motid モーションを識別するＩＤ E3DAddMotionで取得したmotidを指定してください。 5. [IN] 数値または、変数　：　frameno ポーズを設定したいフレーム番号を指定してください。 6. [IN] 数値または、変数　：　target2dx 7. [IN] 数値または、変数　：　target2dy jointnoで指定したジョイントが、 指定した２Ｄ座標に近づくように、 ボーンツリー全体が移動します。 | ver1.0.0.1
E3DGetDispSwitch | モデル情報 | ディスプレイスイッチの状態を取得します。 ディスプレイスイッチ情報は、ビットごとの和になっています。 ディスプレイスイッチ番号ds がオンの場合は、 ２のds乗の値が足されていることになります。 例えば、ディスプレイスイッチ３だけがオンの場合は、２の3乗の８という値が代入されています。 ディスプレイスイッチがオンになっているかを調べて処理するには、 ＆演算子と、２のスイッチ番号乗の値を使います。 例えば、スイッチ3がオンかどうかを調べるには、 if( (dispswitch & 8) != 0 ) { //オンの時の処理 } else { //オフの時の処理 } のようにします。 この命令はver5.0.0.1以降は機能しません。 新しいE3DGetDispSwitch2をご利用ください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ motidに-1を指定すると、 E3DSetDispSwitchで、motidに-1を指定して設定した値が dispswitch引数に代入されます。 motidに-2を指定すると、 現在設定されている、モーションのスイッチ状態が、 dispswitch引数に代入されます。 3. [IN] 数値または、変数　：　frameno フレーム番号を指定してください。 framenoに-1を指定すると、 現在のフレーム番号の、スイッチ状態が、 dispswitch引数に代入されます。 4. [OUT] 変数　：　dispswitch スイッチの状態が代入されます。 詳しくは、左記をご覧ください。 | ver1.0.0.1
E3DRotateBillboard | ビルボード | ビルボードを、カメラの方向を向けたまま、回転します。 | 1. [IN] 変数または、数値　：　billboardid ビルボードを識別する番号 2. [IN] 変数または、数値　：　rotdeg ビルボードを、rotdeg度だけ、 回転します。 実数。 3. [IN] 変数または、数値　：　rotkind rotkindに０を指定すると、相対値モードになります 現在のビルボードの向きに、 更に、指定角度だけ、回転を加えます。 rotkindに１を指定すると、絶対値モードになります。 初期状態に対して、指定角度だけ、回転を加えます。 | ver1.0.0.1
E3DSetBillboardUV | ビルボード | ビルボードのＵＶを設定します。 横方向にunum個、縦方向にvnum個の、タイル状に作ったテクスチャーの、タイルの番号を指定することで、指定した画像のＵＶを設定します。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 タイルの数が12個の場合は、 タイルの番号は、０から１１になりますが、 それより大きな値や小さな値を指定することも可能です。 例えば、タイルの数が12個の場合、 １２を指定すると、 タイル番号０が表示され、 13を指定すると、 タイル番号１が表示され、 -1を指定すると、 タイル番号１１が表示されるという具合に 機能します。 | 1. [IN] 変数または、数値　：　bbid ビルボードを識別するid 2. [IN] 変数または、数値　：　unum 3. [IN] 変数または、数値　：　vnum タイルの横と縦の個数 4. [IN] 変数または、数値　：　tileno 設定したいテクスチャのタイルの番号 | ver1.0.0.1
E3DCreateTexture | テクスチャ | 指定したファイルからテクスチャを作ります。画面と同じテクスチャを作ることも可能です。 テクスチャの操作には、この関数で取得した テクスチャのＩＤ、texidを使用してください。 transparentに１（黒透過）を指定した場合には、 黒透過処理が行われます。 D3DPOOL_DEFAULTで、 テクスチャを作成する場合には、transparentに１を指定すると失敗することがあります。 filenameに、"MainWindow"を指定すると、 バックバッファと同じ内容で、 同じ大きさのサーフェスを作成します。 この際、poolに何を指定しても、 強制的に、システムメモリに作成します。 また、このとき、transparentに１を指定できません。 "MainWindow"を指定した場合は、 E3DSetTextureToDispObjは、使えません。 E3DCopyTextureToBackBufferを使ってください。 "MainWindow"を指定したときは、バックバッファと同じフォーマットで、それ以外は、D3DFMT_A8R8G8B8で作成します。 DX8からDX9への移行時の変更の関係で、 ver3.0.3.4現在、"MainWindow"指定は使用できない状態です。 具体的な使用例は、 e3dhsp3_TextureChange.hsp に書きましたので、ご覧ください。 | 1. [IN] 文字列または、文字列の変数　：　filename テクスチャファイル のパス文字列。 "MainWindow"を指定すると、 画面と同じ内容で、同じ大きさのテクスチャが作成されます。 ただし、このとき、注意する点がいつくかあるので、 左記をご覧ください。 2. [IN] 変数または、数値　：　pool どのメモリ位置にテクスチャを作成するかを指定します。 e3dhsp3.asで定義してある D3DPOOL_DEFAULT　（普通はビデオメモリに作られます） D3DPOOL_MANAGED　（DirectXの管理（バックアップ有り）） D3DPOOL_SYSTEMMEM　（システムメモリに作られます） の中から選びます。 3. [IN] 変数または、数値　：　transparent 透過情報を指定します。 ０を指定すると、不透明のテクスチャ。 １を指定すると、黒色を透過するテクスチャ。 ２を指定すると、テクスチャファイルのアルファに従って 透過するテクスチャになります。 4. [OUT] 変数　：　texid 作成したテクスチャを識別するＩＤ テクスチャ操作の際には、このＩＤを使用してください。 | ver1.0.0.1
E3DGetTextureInfo | テクスチャ | 作成したテクスチャの情報を取得します。 テクスチャのサイズは、 ビデオカードによっては、２の乗数のサイズしか 確保できないので、 ファイルのサイズと異なる場合があります。 | 1. [IN] 変数または、数値　：　texid テクスチャを識別するＩＤ 2. [OUT] 変数　：　width 3. [OUT] 変数　：　height テクスチャの幅と高さ 4. [OUT] 変数　：　pool 作成メモリ位置 5. [OUT] 変数　：　transparent 透過モード 6. [OUT] 変数　：　format フォーマット | ver1.0.0.1
E3DCopyTextureToTexture | テクスチャ | テクスチャからテクスチャへ、内容をコピーします。 srcとdstで大きさや、フォーマットが違う場合は、 エラーになります。 | 1. [IN] 変数または、数値　：　srctexid コピー元のテクスチャを識別するＩＤ 2. [IN] 変数または、数値　：　dsttexid コピーされるテクスチャを識別するＩＤ | ver1.0.0.1
E3DGetTextureFromDispObj | テクスチャ | 読み込み済の３Ｄオブジェクトに設定されているテクスチャを取得します。 sigモデルデータに対する操作には E3DGetTextureFromMaterialをお使いください。 | 1. [IN] 変数または、数値　：　hsid モデルデータを識別するＩＤ -1を指定すると、ビルボードの処理を行います。 2. [IN] 変数または、数値　：　partno パーツの番号。 E3DGetPartNoByNameで取得した番号を指定してください。 hsidに-1を指定した場合には、 ビルボードのＩＤを指定してください。 3. [OUT] 変数　：　texid テクスチャを識別するID 指定したパーツにテクスチャが貼られていない場合には、 texidには、-1が代入されます。 | ver1.0.0.1
E3DSetTextureToDispObj | テクスチャ | 読み込み済の３Ｄオブジェクトに、テクスチャを設定します。 sigモデルデータに対する操作には E3DSetTextureToMaterialをお使いください。 テクスチャをセットしても、 ＵＶ座標は自動的に生成されません。 動的にテクスチャを設定する場合は、 ＵＶ座標も、E3DSetUVで、設定するか、 もしくは、 あらかじめ、モデルに仮のテクスチャを貼っておいて、ＵＶ設定しておく必要があります。 具体的な使用例は、 e3dhsp3_TextureChange.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　hsid モデルデータを識別するＩＤ -1を指定すると、ビルボードの処理を行います。 -2を指定するとスプライトの処理を行います。 2. [IN] 変数または、数値　：　partno パーツの番号。 E3DGetPartNoByNameで取得した番号を指定してください。 hsidに-1を指定した場合には、 ビルボードのＩＤを指定してください。 hsidに-2を指定した場合には スプライトのIDを指定してください。 3. [IN] 変数または、数値　：　texid 貼り付けたいテクスチャのＩＤを指定します。 | ver1.0.0.1
E3DRasterScrollTexture | テクスチャ | テクスチャに、ラスタースクロール処理を加えます。 ゆらゆらと揺れる効果が得られます。 srctexidとdesttexidは、同じ時は、エラーになります。 srcとdestで、大きさ、フォーマットが違うときも、エラーになります。 texidには、両方とも、D3DPOOL_SYSTEMMEMで作成したテクスチャーを指定してください。 それ以外も可能ですが、極端に処理速度が落ちます。 ビデオメモリにラスター処理をしたい場合は、 システムメモリのテクスチャー同士で、ラスター処理をしたあと、 ビデオメモリのテクスチャーに、E3DCopyTextureToTextureで転送してください。 DX8からDX9への移行時の変更の関係で、 ver3.0.3.4現在この命令は使用できない状態です。 | 1. [IN] 変数または、数値　：　srctexid 処理する前のテクスチャを識別するＩＤ 2. [IN] 変数または、数値　：　desttexid 処理した結果を格納するテクスチャを識別するＩＤ 3. [IN] 変数または、数値　：　t 時間経過を指定します。 4. [IN] 変数または、数値　：　param1 揺れの縦方向の具合を指定します。 param1の値が大きいほど、 変化が激しくなります。 実数。 5. [IN] 変数または、数値　：　param2 揺れの横方向の具合を指定します。 param2の値が大きいほど、 変化が激しくなります。 実数。 | ver1.0.0.1
E3DCopyTextureToBackBuffer | テクスチャ | テクスチャをバックバッファにコピーします。 E3DCreateTextureで、 filenameに"MainWindow"を指定して作成した テクスチャーを、バックバッファにコピーします。 フォーマットが異なる場合は、失敗します。 | 1. [IN] 変数または、数値　：　texid コピー元のテクスチャを識別するＩＤ | ver1.0.0.1
E3DDestroyTexture | テクスチャ | テクスチャを破棄します。 | 1. [IN] 変数または、数値　：　texid テクスチャを識別するＩＤ | ver1.0.0.1
E3DSetLightAmbient | ライト | ライトのアンビエント色を指定します。 地面データにのみ、影響します。 この命令は、現在サポートされていません。 | 1. [IN] 変数または、数値　：　lightid ライトを識別するＩＤ 2. [IN] 変数または、数値　：　R 3. [IN] 変数または、数値　：　G 4. [IN] 変数または、数値　：　B 色のＲＧＢを０から２５５までの値で、指定します。 | ver1.0.0.1
E3DSetLightSpecular | ライト | ライトのスペキュラー色を指定します。 | 1. [IN] 変数または、数値　：　lightid ライトを識別するＩＤ 2. [IN] 変数または、数値　：　R 3. [IN] 変数または、数値　：　G 4. [IN] 変数または、数値　：　B 色のＲＧＢを０から２５５までの値で、指定します。 | ver1.0.0.1
E3DInvColTexture | テクスチャ | テクスチャの色を反転します。 具体的な使用例は、 e3dhsp_TextureRasteras に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　texid テクスチャを識別するＩＤ | ver1.0.0.1
E3DSaveGndFile | 地面出力 | 地面データをgndファイルに保存します。 この関数はサポートが中止されました。 地面を高速に読み込みたい場合はsigを使ってください。 | 1. [IN] 数値または、変数　：　hsid 地面データを識別するＩＤ 2. [IN] 文字列または、文字列変数　：　filename 保存ファイル名（パス）を指定してください。 | ver1.0.0.1
E3DLoadGndFile | 地面 | 地面データ（*.gnd）を読み込んで、hsidを得る。 gndファイルの読み込み速度は、mqoファイルの読み込みよりも、 だいぶ速くなります。 | 1. [IN] 文字列または、文字列の変数　：　fname *.gnd のパス文字列。 2. [OUT] 変数　：　hsid 読み込んだ形状データを識別するhsid 3. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 4. [IN] 変数または、数値　：　mult 読み込み倍率を指定してください。 等倍は１．０。 実数。 | 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 ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 | 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 どのメモリ位置にテクスチャを作成するかを指定します。 e3dhsp3.asで定義してある D3DPOOL_DEFAULT　（普通はビデオメモリに作られます） D3DPOOL_MANAGED　（DirectXの管理（バックアップ有り）） D3DPOOL_SYSTEMMEM　（システムメモリに作られます） の中から選びます。 4. [IN] 変数または、数値　：　transparent 透過情報を指定します。 ０を指定すると、不透明のテクスチャ。 １を指定すると、黒色を透過するテクスチャ。 ２を指定すると、テクスチャファイルのアルファに従って 透過するテクスチャになります。 5. [OUT] 変数　：　texid 作成したテクスチャを識別するＩＤ テクスチャ操作の際には、このＩＤを使用してください。 | ver1.0.0.1
E3DLoadSoundFromBuf | サウンド | メモリから音データを読み込み、ＩＤを取得します。 メモリから読み込むこと以外は、 E3DLoadSoundと同じです。 E3DLoadSoundの説明をお読みください。 | 1. [IN] 変数　：　buf バッファの変数 2. [IN] 変数または、数値　：　bufleng バッファの中のデータの長さ(バイト) 3. [IN] 変数または、数値　：　type midiのときは１、それ以外は０を指定してください。 4. [IN] 変数または、数値　：　use3dflag ファイルをステレオサウンドとして読み込む場合は０を、 ３Ｄサウンドとして読み込む場合は１を指定してください。 指定しなかった場合は、ステレオサウンドと見なされます。 5. [IN] 変数または、数値　：　bufnum 同じＩＤの、３Ｄサウンドを、同時にいくつ重ねて再生できるかを 指定します。 ３Ｄサウンドではない場合は、 今まで通り、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引数に１を指定していて、3Ｄサウンドの場合は、 再生中の音にも影響します。 time引数は、 midiの場合と、３Ｄサウンド(wav)の場合で 意味が異なりますので、注意してください。 midiと、3Dサウンドのための関数です。 ３Ｄサウンド以外のwavには、 効果がありません。 | 1. [IN] 変数または、数値　：　soundid 音を識別する番号を、指定します。 2. [IN] 変数または、数値　：　time ３Ｄサウンドの場合は、 ミリ秒（1秒が１０００）を指定してください。 midiの場合は、4分音符の数による数値を指定してください。 4分音符あたり768の数値を指定してください。 | ver1.0.0.1
E3DGetBoneQ | モーション | ボーンのクォータニオンを取得します。 kind引数の値により、 親のクォータニオンの影響を受けたものと、 受けていないものを取得できます。 モーションを読み込んでいないときは、 エラーになります。 指定したframenoに、キーフレームがない場合は、 補間計算した結果を取得します。 エンドジョイント（子供を持たないジョイント） に対しても、呼ぶことが出来ます。 ボーン以外の番号をbonenoに入れると エラーになります。 マルチレイヤーモーションを使用する場合は この命令は使えません。 E3DGetCurrentBoneQをお使いください。 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数　：　motid モーションを識別する番号を指定してください。 4. [IN] 数値または、変数　：　frameno フレームの番号を指定してください。 5. [IN] 数値または、変数　：　kind 親の影響を受けたクォータニオンを 取得する場合は、１を指定してください。 親の影響を受けていないクォータニオンを 取得する場合は、０を指定してください。 親の影響を受け、 更に、モデル全体の向きの影響を受けたクォータニオンを取得 するには、２を指定してください。 6. [IN, OUT] 数値または、変数　：　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 再生中の場合は１が、 そうでない場合は０が、代入されます。 | ver1.0.0.1
E3DIKTranslate | モーション | ＩＫで、ボーンの位置を移動します。 RokDeBone2のＴボタンと同様に、 一番親のボーン以外で、この関数を呼ぶと、 モデルの形状が、崩れます。 形状を保ちたい場合は、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 | モデル情報 | ひとつの画像に、タイル画像を敷き詰めたテクスチャの、ＵＶ座標を、タイル番号で、セットできます。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 タイルの数が12個の場合は、 タイルの番号は、０から１１になりますが、 それより大きな値や小さな値を指定することも可能です。 例えば、タイルの数が12個の場合、 １２を指定すると、 タイル番号０が表示され、 13を指定すると、 タイル番号１が表示され、 -1を指定すると、 タイル番号１１が表示されるという具合に 機能します。 5種類の投影、貼り付けをサポートします。 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　partno 表示パーツを識別する番号を指定してください。 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数　：　texrule 投影、貼り付けのモードを指定します。 ０を指定すると、Ｘ軸投影 １を指定すると、Ｙ軸投影 ２を指定すると、Ｚ軸投影 ３を指定すると、円筒貼り付け ４を指定すると、球貼り付け です。 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座標を正規化したいときは１を、 そうでないときは、０を指定してください。 4. [IN] 変数または、数値　：　mult 形状データの座標に掛ける数値。 座標値　＊　multで計算されます。 等倍は１．０。 実数。 5. [IN] 変数または、数値　：　offsetx 6. [IN] 変数または、数値　：　offsety 7. [IN] 変数または、数値　：　offsetz 読み込み位置のオフセット座標を、 （offsetx, offsety, offsetz）で指定します。 ローカル座標で指定します。 実数。 8. [IN] 変数または、数値　：　rotx 9. [IN] 変数または、数値　：　roty 10. [IN] 変数または、数値　：　rotz 追加形状を、Ｘ，Ｙ，Ｚそれぞれの軸に対して、 rotx, roty, rotz度だけ、回転してから、 インポートを行います。 回転順序は、Ｚ，Ｙ，Ｘの順番です。 実数。 パラメータの適用順序は、 まず、倍率を掛けて、 次に、回転をして、 最後に、移動します。 | 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 で計算されます。 等倍は１．０。 実数。 4. [OUT] 変数　：　hsid 作成した壁データを識別するhsidが代入されます。 | ver1.0.0.1
E3DChkThreadWorking | スレッド管理 | 関数の最後に、Threadが付いている関数は、新たにスレッドを作成します。 この作成したスレッドが、 現在、動作中であるかどうかをチェックするための関数です。 スレッドが終了している場合には、 スレッドの動作結果が、 returnval1, reteurnval2変数で取得できます。 この変数は、hsidや、モーションＩＤを取得するために、使用します。 スレッド読み込み関数に、存在しないファイル名などを指定した場合などは、エラーにならずに、 hsidが代入される引数に-1が代入されるので注意してください。 具体的な使用例は、 e3dhsp3_LoadByNewThread.hsp をご覧ください。 | 1. [IN] 変数または、数値　：　threadid スレッドを識別するＩＤ 名前の最後にThreadが付いている関数で、 取得したＩＤを指定してください。 2. [OUT] 変数　：　working スレッドが、動作中かどうかが代入されます。 動作中の場合は１が、 動作が終了している場合には０が、代入されます。 workingが０の場合は、 returnval1, returnval2に代入される値が、 意味を持ちます。 3. [OUT] 変数　：　returnval1 4. [OUT] 変数　：　returnval2 スレッドの実行結果が、代入されます。 returnval1, returnval2に代入される値の 意味については、 各Thread作成関数の説明をお読みください。 | ver1.0.0.1
E3DLoadMQOFileAsGroundThread | 地面 | スレッドを作成して、E3DLoadMQOFileAsGroundを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DLoadMQOFileAsGroundの説明もお読みください。 | 1. [IN] 文字列または、文字列変数　：　filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値　：　mult 形状データの座標に掛ける数値。 座標値　＊　mult で計算されます。 等倍は１．０。 実数。 3. [IN] 変数または、数値　：　adjustuvflag UV座標を正規化したいときは１を、 そうでないときは、０を指定してください。 何も指定しないときは、０として扱われます。 4. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DSigLoadThread | 形状データ | スレッドを作成して、E3DSigLoadを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DSigLoadの説明も、お読みください。 | 1. [IN] 文字列または、文字列の変数　：　fname *.sig のパス文字列。 2. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 3. [IN] 変数または、数値　：　mult 読み込み倍率を指定してください。 等倍は１．０。 実数。 4. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DSigLoadFromBufThread | 形状データ | スレッドを作成して、E3DSigLoadFromBufを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DSigLoadFromBufの説明もお読みください。 | 1. [IN] 文字列または、文字列の変数　：　resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数　：　buf バッファの変数 3. [IN] 変数または、数値　：　bufleng バッファの中のデータの長さ 4. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 5. [IN] 変数または、数値　：　mult 倍率を指定してください。 デフォルトは1.0です。 等倍は、１．０。 実数。 6. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DLoadMQOFileAsMovableAreaThread | 壁 | スレッドを作成して、E3DLoadMQOFileAsMovableAreaを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadMQOFileAsMovableAreaの説明もお読みください。 | 1. [IN] 文字列または、文字列変数　：　filename 読み込む、mqo ファイル名。 2. [IN] 変数または、数値　：　mult 形状データの座標に掛ける数値。 座標値　＊　mult で計算されます。 等倍は１．０。 実数。 3. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DLoadMQOFileAsMovableAreaFromBufThread | 壁 | スレッドを作成して、E3DLoadMQOFileAsMovableAreaFromBufを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadMQOFileAsMovableAreaFromBufの説明もお読みください。 | 1. [IN] 変数　：　buf バッファの変数 2. [IN] 変数または、数値　：　bufleng バッファの中のデータの長さ 3. [IN] 変数または、数値　：　mult 形状データの座標に掛ける数値。 座標値　＊　mult で計算されます。 等倍は１．０。 実数。 4. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DLoadGroundBMPThread | 地面 | スレッドを作成して、E3DLoadGroundBMPを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadGroundBMPの説明もお読みください。 | 1. [IN] 文字列または、文字列変数　：　filename1 地面の座標情報の元となる、ＢＭＰファイル名 2. [IN] 文字列または、文字列変数　：　filename2 地面の道の情報の元となる、ＢＭＰファイル名 3. [IN] 文字列または、文字列変数　：　filename3 地面の川の情報の元となる、ＢＭＰファイル名 4. [IN] 文字列または、文字列変数　：　filename4 地面、道、川の模様を決める、ＢＭＰファイル名 5. [IN] 変数または、数値　：　maxx 地面のＸ座標の最大値 実数。 6. [IN] 変数または、数値　：　maxz 地面のＺ座標の最大値 実数。 7. [IN] 変数または、数値　：　divx X方向の分割数 8. [IN] 変数または、数値　：　divz Z方向の分割数 9. [IN] 変数または、数値　：　maxheight 地面の高さの最大値 実数。 10. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DLoadGndFileThread | 地面 | スレッドを作成して、E3DLoadGNDFileを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DLoadGNDFileの説明もお読みください。 | 1. [IN] 文字列または、文字列の変数　：　fname *.gnd のパス文字列。 2. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 3. [IN] 変数または、数値　：　mult 読み込み倍率を指定してください。 等倍は１．０。 実数。 4. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DLoadGndFileFromBufThread | 地面 | スレッドを作成して、E3DLoadGNDFileFromBufを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DLoadGNDFileFromBufの説明もお読みください。 | 1. [IN] 文字列または、文字列の変数　：　resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数　：　buf バッファの変数 3. [IN] 変数または、数値　：　bufleng バッファの中のデータの長さ 4. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 5. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DAddMotionThread | モーション | スレッドを作成して、E3DAddMotionを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モーションをを識別するIDが代入されます。 returnval2に、 最大フレーム番号が代入されます。 この関数が終了するまで、 この関数に渡したhsidに対して、 モーションの再生命令などは、使わないようにしてください。 E3DAddMotionの説明もお読みください。 | 1. [IN] 変数または、数値　：　hsid どのモデルデータに対するモーションかを指定する。 2. [IN] 文字列または、文字列の変数　：　fname *.quaのパス文字列。 3. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DAddMotionFromBufThread | モーション | スレッドを作成して、E3DAddMotionFromBufを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モーションをを識別するIDが代入されます。 returnval2に、 最大フレーム番号が代入されます。 この関数が終了するまで、 この関数に渡したhsidに対して、 モーションの再生命令などは、使わないようにしてください。 E3DAddMotionFromBufの説明もお読みください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するhsid 2. [IN] 変数または、数値　：　datakind quaデータの時は０を、 motデータの時は１を指定してください。 3. [IN] 変数　：　buf バッファの変数 4. [IN] 変数または、数値　：　bufleng バッファの中のデータの長さ 5. [OUT] 変数　：　threadid 作成したスレッドを識別するＩＤが、代入されます。 | ver1.0.0.1
E3DGetShaderType | モデル情報 | シェーダーの種類と、オーバーフロー処理を取得します。 それぞれの値の意味は、 E3DSetShaderTypeの説明をお読みください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するhsid 2. [OUT] 変数　：　shader 3. [OUT] 変数　：　overflow シェーダーの種類と、 オーバーフロー処理が、代入されます。 | ver1.0.0.1
E3DSetShaderType | モデル情報 | シェーダーの種類と、 色のオーバーフロー処理を設定します。 シェーダーの種類は、 e3dhsp3.asのCOL_ で始まる定数で、定義されています。 COL_OLD 従来のRokDeBone2の計算法 emissiveは、無効。 スペキュラーは、形だけの実装。 一番高速。 COL_PHONG Lambertのディフーズ Phongのスペキュラー emissive有り COL_BLINN Lambertのディフーズ Blinnのスペキュラー emissive有り COL_SCHLICK Lambertのディフーズ Schlickのスペキュラー emissive有り COL_MQCLASSIC メタセコイアのマテリアルで Classicを指定したときのモード emissive有り COL_TOON1 テクスチャを使用したトゥーン表示 頂点色は設定しないことを推奨。 COL_TOON0 ピクセルシェーダーを使用したトゥーン表示。 色のオーバーフロー処理は、 e3dhsp3.asのOVERFLOW_ で始まる定数で、 定義されています。 OVERFLOW_CLAMP クランプ。 自己照明がきついと、色が破綻する。 一番高速。 OVERFLOW_SCALE スケール。色は破綻しないが、暗くなる。 OVERFLOW_ORG オリジナル。明るさを保つ。 ver3.0.0.1での仕様変更により、現在は、COL_PHONGとCOL_TOON1とCOL_TOON0のみのサポートとなります（ver3.0.3.4現在） | 1. [IN] 変数または、数値　：　hsid 形状データを識別するhsid 2. [IN] 変数または、数値　：　shader 3. [IN] 変数または、数値　：　overflow シェーダーの種類と、 オーバーフロー処理の指定をします。 値の意味は、左記をご覧ください。 | ver1.0.0.1
E3DSetLightBlendMode | モデル情報 | 頂点のdiffuse色と、ライト色をブレンディングする際の、方法を設定します。 ブレンド方式には、PhotoShopのブレンドモードを使います。 mode引数には、LBLEND_で始まる定数を使用します。 これらの定数は、e3dhsp3.asで定義されています。 LBLEND_MULT 乗算 LBLEND_SCREEN スクリーン LBLEND_OVERLAY オーバーレイ LBLEND_HARDLIGHT ハードライト LBLEND_DODGE 覆い焼き | 1. [IN] 変数または、数値　：　lid ライトを識別するＩＤ 2. [IN] 変数または、数値　：　mode ブレンドモードを指定します。 LBLEND_ で始まる定数を使用します。 | ver1.0.0.1
E3DGetLightBlendMode | モデル情報 | 頂点のdiffuse色と、ライト色とのブレンドモードを取得します。 取得されるモードの数値は、 e3dhsp3.asで定義されている LBLEND_で始まる定数です。 詳しくは、E3DSetLightBlendModeをお読みください。 | 1. [IN] 変数または、数値　：　lid ライトを識別するＩＤ 2. [OUT] 変数　：　mode ブレンドモードが代入されます。 | ver1.0.0.1
E3DSetEmissive | モデル情報 | パーツのemissive色をセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数　：　R 4. [IN] 数値または、変数　：　G 5. [IN] 数値または、変数　：　B 指定したい色を（Ｒ，Ｇ，Ｂ）で指定します。 ０から２５５までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 6. [IN] 数値または、変数　：　setflag setflagが０のときは、 パーツの色を（Ｒ，Ｇ，Ｂ）にセットします。 setflagが１のときは、 パーツの色に（R/255, G/255, B/255）を乗算します。 setflagが２のときは、 パーツの色に（Ｒ，Ｇ，Ｂ）を足し算します。 setflagが３のときは、 パーツの色から（Ｒ，Ｇ，Ｂ）を減算します。 7. [IN] 数値または、変数　：　vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 | ver1.0.0.1
E3DSetSpecularPower | モデル情報 | パーツのspecular powerをセットする関数です。 指定した色を、 そのまま設定、乗算して設定、加算して設定、 減算して設定の、4種類出来ます。 その時点で、表示されている色に対して、 乗算、加算、減算します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの色を設定できます。 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 全てのパーツに色をセットできます。 3. [IN] 数値または、変数　：　pow 実数。 pow の値を、setflagに基づいて、 現在の色に対して処理を行います。 4. [IN] 数値または、変数　：　setflag setflagが０のときは、 指定した値をセットします。 setflagが１のときは、 現在の値に、指定した値を乗算します。 setflagが２のときは、 現在の値に、指定した値を足し算します。 setflagが３のときは、 現在の値に、指定した値を減算します。 5. [IN] 数値または、変数　：　vertno 指定した頂点番号の色をセットします。 この引数を省略、または、-1をセットした場合には、 partnoで指定したパーツ全体の色の設定をします。 | ver1.0.0.1
E3DGetEmissive | モデル情報 | 任意のパーツの任意の頂点の、emissive色を取得します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数　：　partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数　：　vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数　：　r 5. [OUT] 変数　：　g 6. [OUT] 変数　：　b 指定した頂点のemissive色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、０から２５５の値が代入されます。 | ver1.0.0.1
E3DGetSpecularPower | モデル情報 | 任意のパーツの任意の頂点の、specular powerを取得します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの色を取得できます。 2. [IN] 数値または、変数　：　partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 3. [IN] 数値または、変数　：　vertno 色を取得したい頂点の番号を指定します。 4. [OUT] 変数　：　pow 指定した頂点のspecular powerが、 代入されます。 実数1型の変数。 | ver1.0.0.1
E3DGetInfElemNum | ボーン影響 | 指定した頂点が、何個のボーンの影響を受けているかを取得します。 影響度情報は、影響を受けるボーンごとに存在します。 （影響を受けるボーンの数だけ存在します） この影響度情報のことを、 Easy3Dでは、InfElemと呼びます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数　：　vertno 頂点の番号 4. [OUT] 変数　：　num 影響度情報の個数が代入されます。 | ver1.0.0.1
E3DGetInfElem | ボーン影響 | 指定した頂点の、ボーン影響度情報を取得します。 infnoには、 E3DGetInfElemNumで取得した数値をinfnumとすると、 0から(infnum - 1)の値を渡してください。 childjointnoに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は、正規化（一つの頂点の影響度の合計が１になるようにする）をするかどうかのフラグ。 dispinfが、最終的な、影響度。 まず、InfElemごとに、以下の計算をします。 orginf * userrate / 100 normalizeflagが０のときは、この値がそのまま、dispinfになります。 normalizeflagが１のときは、 全部のInfElemの影響度（dispinf）の合計が１になるように、正規化します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数　：　vertno 頂点の番号 4. [IN] 数値または、変数　：　infno 影響度情報の番号 ０から（影響度の個数-1）までの数 5. [OUT] 変数　：　childjointno どのボーンの影響を受けるかが代入されます。 この値が、0以下の値の時は、ダミーデータです。 ボーンの線分の内、子供の方のジョイントの番号が 代入されます。 6. [OUT] 変数　：　calcmode 影響度の計算方法が代入されます。 7. [OUT] 変数　：　userrate 比重が代入されます。 ％値が代入されます。 例えば、１００％の場合は、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には、指定できません。 CALCMODE_SYMの影響度設定はこの命令ではできません。 E3DSetSymInfElemをお使いください。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数　：　vertno 頂点の番号 4. [IN] 数値または、変数　：　childjointno 影響を受けるボーンの指定。 ボーンの線分の内、子供の方のジョイントの番号を 指定します。 5. [IN] 数値または、変数　：　calcmode 影響度の計算方法を指定します。 6. [IN] 数値または、変数　：　paintmode 影響度の設定方法を指定します。 7. [IN] 数値または、変数　：　normalizeflag 正規化をするときは１、 しないときは０を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 8. [IN] 数値または、変数　：　userrate 比重％の値を指定します。 １００％の時は、100.0を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 実数。 9. [IN] 数値または、変数　：　directval 直接数値指定の数値を指定します。 詳しくは、左記をご覧ください。 実数。 | ver1.0.0.1
E3DDeleteInfElem | ボーン影響 | ボーン影響度情報を削除します。 normalizeflagに１を指定すると、 削除した後に、 指定頂点の残りの影響度情報を、 正規化します。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数　：　vertno 頂点の番号 4. [IN] 数値または、変数　：　childjointno 影響を受けるボーンの指定。 ボーンの線分の内、子供の方のジョイントの番号を 指定します。 5. [IN] 数値または、変数　：　normalizeflag 正規化をするときは１、 しないときは０を指定します。 詳しくは、E3DGetInfElemの説明をお読みください。 | ver1.0.0.1
E3DSetInfElemDefault | ボーン影響 | ボーン影響度情報を、デフォルト状態に戻します。 partnoに、-1を指定すると、 全パーツの全頂点の影響度を デフォルト状態に戻します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数　：　vertno 頂点の番号 | ver1.0.0.1
E3DNormalizeInfElem | ボーン影響 | ボーン影響度情報を、正規化します。 指定した頂点の影響度の合計が１になるように、各影響度を合計値で割り算します。 vertnoに、-1を指定すると、 指定パーツの、全頂点に対して、 正規化を行います。 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno パーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 3. [IN] 数値または、変数　：　vertno 頂点の番号 | ver1.0.0.1
E3DGetVisiblePolygonNum | モデル情報 | 視野内のポリゴン数を取得します。 E3DRenderの後で呼び出してください。 地面データに対して呼び出した場合は、 num2には、num1と同じ数値が代入されます。 ver3.0.0.1での変更で、この関数は意味を持たなくなりました。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 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 ０を指定すると、飛ぶモード １を指定すると、地面を這うモード 5. [IN] 変数または、数値　：　diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 実数。 6. [IN] 変数または、数値　：　mapminy groundhsidで識別されるデータの一番低いＹ座標の値 通常は、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 ０を指定すると、飛ぶモード １を指定すると、地面を這うモード 10. [IN] 変数または、数値　：　diffmaxy 一度の移動で登ることが出来る高さの最大値を 指定してください。 実数。 11. [IN] 変数または、数値　：　mapminy groundhsidで識別されるデータの一番低いＹ座標の値 通常は、０です。 実数。 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 サウンドを識別するＩＤ E3DLoadSoundで取得した値を指定してください。 2. [OUT] 変数　：　musictime 現在のミュージックタイムが代入されます。 | ver1.0.0.1
E3DSetNextMotionFrameNo | モーション | モーションの最後のフレーム番号に到達した後、どのモーションの、どのフレーム番号に、ジャンプするかを指定できます。 この関数で、次のモーションの指定を行っておけば、E3DSetNewPoseで、自動的にモーションが切り替わります。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　srcmotid 3. [IN] 数値または、変数　：　nextmotid 4. [IN] 数値または、変数　：　nextframeno srcmotidのモーションが、最後のフレーム番号に達した後、nextmotidのモーションの、nextframenoのフレーム番号に、ジャンプするように設定されます。 | ver1.0.0.1
E3DSetLinearFogParams | 描画パラメータ | 頂点フォグ（線形）を設定します。 頂点フォグなので、ポリゴンのない部分には、フォグはかかりません。 画面全体にフォグをかけたい場合は、 E3DCreateBGで、背景を作成してください。（背景はポリゴンです。） 具体的な使用例は、 e3dhsp3_wall.hsp に書きましたので、ご覧ください。 | 1. [IN] 数値または、変数　：　enable １を指定すると、フォグが有効に、 ０を指定すると、フォグが無効になります。 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 | 当たり判定 | ２つの形状データの指定したパーツ同士が、衝突しているかどうを判定します。 パーツの番号に、配列を指定できること以外は、 ほとんど、E3DChkConflict2と同じです。 （inviewflagが微妙に違います） パーツ番号には、 E3DGetPartNoByNameで取得した、 パーツの番号を渡してください。 partnoに-1を指定すると、 モデル全体とあたり判定をします。 （判定の元になるデータは、 E3DChkInView命令によって、更新されます。） すべてのパーツが視野外だった場合は、 inviewflagに３が、 ひとつでも視野内のパーツがあった場合は、 inviewflagに０が代入されます。 | 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で識別される形状同士が、 衝突している場合は、１が、 衝突していない場合は０がセットされる。 8. [OUT] 変数　：　inviewflag すべてのパーツが視野外だった場合は、 inviewflagに３が、 １つでも、視野内のパーツがあった場合は、 inviewflagに０が代入されます。 | 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で識別される形状同士が、 衝突している場合は、１が、 衝突していない場合は０がセットされる。 | ver1.0.0.7で追加
E3DSetMovableAreaThread | 壁 | スレッドを作成して、E3DSetMovableAreaを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 複数のスレッド読み込み関数を、 同時に呼ぶ場合には、 テクスチャが同じディレクトリにないと、 テクスチャの読み込みに失敗することがあります。 ver5.0.0.7からは命令ごとに異なるディレクトリにテクスチャがあっても読み込めるようになりました。 E3DSetMovableAreaの説明も、お読みください。 | 1. [IN] 文字列または、文字列変数　：　filename1 壁の座標情報の元となる、ＢＭＰファイル名 2. [IN] 変数または、数値　：　maxx 壁のＸ座標の最大値 実数。 3. [IN] 変数または、数値　：　maxz 壁のＺ座標の最大値 実数。 4. [IN] 変数または、数値　：　divx X方向の分割数 5. [IN] 変数または、数値　：　divz Z方向の分割数 6. [IN] 変数または、数値　：　wallheight 作成する壁の高さ 実数。 7. [OUT] 変数　：　threadid 作成したスレッドを識別する、ＩＤ | ver2.0.0.2で追加
E3DCreateSpriteFromBMSCR | スプライト | HSPの描画画面（E3Dでの描画を除く）と同じ内容のスプライトを作成します。 内部でテクスチャーを使用するため、 画面の大きさが、２の乗数で無い場合は、 スプライトの大きさと画面の大きさが、異なる場合があります。 スプライトの大きさは、 E3DGetSpriteSizeで確認してください。 使い方としては、 非表示のウインドウを作成しておき、 そこに、mes命令などで、描画を行い、 そのウインドウに対して、この関数を呼び、 出来たスプライトを、メインのウインドウに描画する、 などが、考えられます。 screen命令の４番目の引数で、 パレットモードを指定した場合は、 この関数は、使用できません。 | 1. [IN] 変数または、数値　：　wid ウインドウID 2. [IN] 変数または、数値　：　transparentflag 透過フラグ。 透過をしない場合は、０を指定してください。 １をセットすると、黒色を透過色として色抜きします。 ２をセットすると、（tpR, tpG, tpB）で指定した色を 透過色とします この関数のtransparetflagの意味は、 他の関数のtransparentとは、違うので、 気を付けてください。 3. [OUT] 変数　：　spriteID 作成したスプライトを識別するＩＤ。 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 補間モーションのフレーム長 4. [IN] 変数または、数値　：　mvmult モーションの移動成分に掛ける倍率 省略すると１．０ 実数 | ver2.0.1.2で追加 ver4.0.1.6で引数追加
E3DSetNewPoseByMOA | モーションアクセラレータ | モーションアクセラレータに基づいて、モーションの更新をします。E3DSetNewPoseの代わりに呼んでください。 eventno引数には、通常、２の乗数の値を使用します。 値が大きくなると記述が大変なので、 ２の乗数は、e3dhsp3.asで定義しているPOW2X配列を 使用してください。 例えば、２の１５乗の値は、POW2X( 15 ) でアクセス可能です。 詳しくは、マニュアルの、rdb2_ma.htmと e3dhsp3_MotionAccelerator.hsp をご覧ください。 | 1. [IN] 変数または、数値　：　hsid モデルデータを識別するID 2. [IN] 変数または、数値　：　eventno イベント番号 詳しくは、マニュアルの、rdb2_ma.htmをご覧ください。 | ver2.0.1.2で追加
E3DGetMotionFrameNo | モーション | カレント（現在の）のモーション番号と、フレーム番号を取得します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [OUT] 変数　：　mk モーションを識別する番号 3. [OUT] 変数　：　frame フレーム番号 | ver2.0.1.2で追加
E3DGetKeyboardCnt | キーボード | 256 個の仮想キーの状態(カウンター)を、指定されたバッファkeybufへコピーします。 E3DGetKeyboardState関数は、呼び出し時に、キーが押されているかどうかしか、取得できませんが、 E3DGetKeyboardCnt関数は、どのくらいの時間、押し続けているかを表すカウンターを取得できます。 Easy3D内部で、 前回のきーの情報を保存しておき、 呼び出し時に、キーが押されていれば、 カウンターを１増やします。 押されていなければ、カウンターを０にします。 keybuf は、この関数を使用する前に、 dim keybuf, 256 で、確保してください。 複数のキーの状態を、一度の呼び出しで、 取得できます。 例えば、Ａキーのカウンタを調べる場合は、 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 簡易暗号化する際に使用する、 ランダムなキー配列を指定します。 キーは、１０個指定します。 キーの値は、０から２５５の値を使用してください。 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 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motmaxnum データ取得用配列の大きさ（モーションの数）を指定します。 3. [OUT] 文字列の配列変数　：　motionname 名前情報を取得するための配列を渡してください。 左に書いた方法で、sdimした配列を渡してください。 4. [OUT] 配列変数　：　motionid モーションIDを取得するための配列変数を渡してください。 右に書いた方法で、dimした配列を渡してください。 5. [OUT] 変数　：　motgetnum 何個のモーションの情報を出力したかが、代入されます。 | ver3.0.0.1で追加
E3DGetNextMotionFrameNo | モーション | E3DSetNextMotionFrameNoで設定した情報を取得します。 Moaファイルを読み込んで、 E3DSetNewPoseByMOAを使用する場合、 モーションとモーションの間に補間モーションが入ります。 この補間モーションのモーションIDはver3001では常に０です。 この補間モーションには、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のスプライトを表示する、などの用途に使えます。 Z情報は、スプライト描画時のZ指定の値に使用できます。 E3DChkInViewより後で、呼び出してください。 具体的な使用例は、zip中の、 e3dhsp3_pickvert.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ -1を指定すると、ビルボードの２Ｄ位置を取得できます。 3. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を渡してください。 hsidに-1を指定した場合は、 E3DCreateBillboardで取得した、 ビルボードidを渡してください。 partnoに-1を渡すと、 モデル全体の中心座標の２Ｄ座標を 取得できます。 4. [OUT] 変数　：　scx 5. [OUT] 変数　：　scy 指定したパーツの2Dスクリーン座標が代入されます。 整数。 ただし、以下の場合には、 scx = -1, scy = -1が代入されます。 １，パーツが表示用オブジェクトではない場合 ２，パーツ全体が画面外にある場合 ３，パーツのディスプレイスイッチがオフの場合 ４，パーツが無効になっていた場合 （E3DSetValidFlagで０を指定した場合） 6. [OUT] 変数　：　scz 奥行き情報Z 実数の変数。 この値に０から１の範囲外の値が得られた場合は、 画面に描画されない頂点です。 7. [IN] 数値または、変数　：　vertno 取得したい頂点の番号を指定します。 この引数を省略した場合や、-1を指定した場合は、 パーツの中心の２Ｄ座標を取得します。 8. [IN] 数値または、変数　：　calcmode 1を指定してください。 | ver3.0.0.1で追加
E3DEnableToonEdge | 描画パラメータ | 輪郭線のオンオフをします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線のオンオフをします。 3. [IN] 数値または、変数　：　type 輪郭線のタイプを指定します。 ０を指定してください。 4. [IN] 数値または、変数　：　flag 輪郭をオンにしたい場合は１を、 オフにしたい場合は０を指定してください。 | ver3.0.1.1で追加
E3DSetToonEdge0Color | 描画パラメータ | 輪郭線の色をセットします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 partnoに-1を渡すと、 モデル全体の輪郭線の色を設定します。 3. [IN] 文字列または、文字列の変数　：　materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 partnoに-1を指定している場合は、 "dummy"と指定してください。 4. [IN] 数値または、変数　：　r 5. [IN] 数値または、変数　：　g 6. [IN] 数値または、変数　：　b 色のRGBを指定します。 それぞれ、０から２５５の整数を指定してください。 | ver3.0.1.1で追加
E3DSetToonEdge0Width | 描画パラメータ | 輪郭線の幅をセットします。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 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 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　partno 設定したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] 文字列または、文字列の変数　：　materialname マテリアルの名前を指定します。 RokDeBone2の「トゥ」ボタンを押したときに リストボックスに表示されるマテリアル名を 指定してください。 4. [OUT] 変数　：　r 5. [OUT] 変数　：　g 6. [OUT] 変数　：　b 輪郭の色のRGBが代入されます。 それぞれ、０から２５５の整数が取得されます。 指定したマテリアルが見つからなかった場合は (0, 0, 0)が代入されます。 | ver3.0.1.1で追加
E3DGetToonEdge0Width | 描画パラメータ | 輪郭線の幅を取得します。 トゥーン設定されたsigを読み込んでいる状態か、 もしくは、E3DSetShaderTypeでCOL_TOON1を設定している状態か でしか機能しません。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 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 半透明のブレンドモードを指定します。 ０を指定すると、 テクスチャのアルファによるブレンドをします。 １を指定すると、 アッドモードでのブレンドをします。 ２を指定すると、 頂点のアルファを考慮した アッドモードブレンドをします。 6. [OUT] 変数　：　particleid パーティクルを識別するIDが代入されます。 7. [IN] 数値または、変数　：　transparentflag １を指定すると黒色を透過します（BMP用）。 ０を指定すると、画像ファイルのアルファを そのまま使います。 引数を省略すると１が適用されます。 8. [IN] 数値または、変数　：　cmpalways １を指定するとZバッファの比較を行わずに 常に描画するようになります。 デフォルトは０。 | ver3.0.1.5で追加 ver3.0.3.1で引数追加 ver4.0.0.1で引数追加
E3DDestroyParticle | パーティクル | パーティクルを破棄します。 | 1. [IN] 数値または、変数　：　particleid 削除したいパーティクルを識別するIDを指定します。 | ver3.0.1.5で追加
E3DSetParticlePos | パーティクル | パーティクルの場所を設定します。 設定した場所からパーティクルが噴き出します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 | 1. [IN] 数値または、変数　：　particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数　：　posx 3. [IN] 数値または、変数　：　posy 4. [IN] 数値または、変数　：　posz パーティクルの位置を（posx, posy, posz）に 指定します。 実数。 | ver3.0.1.5で追加
E3DSetParticleGravity | パーティクル | パーティクルの重力を設定します。 設定した値は、Y方向の負の加速度として計算に使用されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 | 1. [IN] 数値または、変数　：　particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数　：　gravity 重力を指定します。 実数。 | ver3.0.1.5で追加
E3DSetParticleLife | パーティクル | パーティクルの寿命を設定します。 パーティクルが噴き出してから消えるまでの時間を 秒で指定します。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 | 1. [IN] 数値または、変数　：　particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数　：　life パーティクルの寿命を指定します。 実数。 秒。 | ver3.0.1.5で追加
E3DSetParticleEmitNum | パーティクル | パーティクルの生成個数をします。 E3DRenderParticleを呼ぶたびに指定した個数だけ生成されます。 実数での指定が可能です。 例えば０．２と指定した場合は、 ５回E3DRenderParticleを呼び出すごとに１個パーティクルが 生成されます。 具体的な使用例は、 e3dhsp3_particle.hsp をご覧ください。 | 1. [IN] 数値または、変数　：　particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数　：　emitnum パーティクルの１回あたりの生成個数を指定します。 実数。 | 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 パーティクルの頂点色を指定します。 それぞれ、０から２５５の間の値を指定します。 | 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 １秒間に何回、この関数を呼ぶかを 指定してください。 3. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 4. [IN] 変数または、数値　：　onlyupdate １を指定した場合は、 描画を行わず状態のアップデートのみ行います。 ０を指定した場合や省略した場合は 通常通りアップデートと描画を行います。 | ver3.0.1.5で追加 ver4.0.0.8で引数追加
E3DSetParticleAlpha | パーティクル | パーティクルの透明度を設定します。 パーティクルが放出されてからの時間帯ごとに、 設定可能です。 生成されてからの時間が、mintimeからmaxtimeの間にある パーティクルに対して、処理を行います。 この処理は、ビデオメモリにアクセスする必要があるので、 ちょっと重い処理です。 ver3.0.1.7で負荷は気にしなくていい程度になりました。 呼び出すたびに設定されます。 ループ中で使用します。 （一回だけ呼び出しても意味がありません） 具体的な使用例は、 e3dhsp3_particle2.hsp をご覧ください。 | 1. [IN] 数値または、変数　：　particleid パーティクルを識別するIDを指定します。 2. [IN] 数値または、変数　：　mintime 3. [IN] 数値または、変数　：　maxtime 処理したいパーティクルの時間帯を 秒で指定します。 4. [IN] 数値または、変数　：　alpha 透明度を０から１の間の実数で指定します。 | ver3.0.1.6で追加
E3DSetParticleUVTile | パーティクル | パーティクルのUVを設定します。 パーティクルが放出されてからの時間帯ごとに、 設定可能です。 生成されてからの時間が、mintimeからmaxtimeの間にある パーティクルに対して、処理を行います。 この処理は、ビデオメモリにアクセスする必要があるので、 ちょっと重い処理です。 ひとつの画像に、タイル画像を敷き詰めたテクスチャの、ＵＶ座標を、タイル番号で、セットできます。 タイル状のテクスチャ画像とタイル番号の対応は、タイル番号の説明をご覧ください。 呼び出すたびに設定されます。 ループ中で使用します。 （一回だけ呼び出しても意味がありません） 具体的な使用例は、 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 | 当たり判定 | ２Ｄの画面の座標に対応する、３Ｄモデルの座標を取得できます。 判定したいパーツを指定できる点以外は、 E3DPickFaceと同じです。 詳しくはE3DPciFaceの説明をお読みください。 パーツ番号３とパーツ番号４についてのみ、判定を行いたい場合は、 partnum = 2 dim partarray, partnum partarray( 0 ) = 3 partarray( 1 ) = 4 の様に値をセットして、E3DPickFace2を呼び出してください。 | 1. [IN] 変数または、数値　：　scid スワップチェインＩＤ。 E3DInitやE3DCreateSwapChainで取得したＩＤを 指定してください。 2. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 3. [IN] 配列変数　：　partarray 判定したいパーツ番号を指定します。 dim partarray, partnumで作成してください。 4. [IN] 数値または、変数　：　partnum partarray配列の要素数 5. [IN] 数値または、変数　：　pos2x 6. [IN] 数値または、変数　：　pos2y 画面上の２Ｄ座標を指定してください。 7. [IN] 数値または、変数　：　maxdist どのくらいの距離まで、３Ｄモデルの検索をするかを指定します。 この値を小さくするほど、処理は高速になります。 8. [OUT] 変数　：　partno 9. [OUT] 変数　：　faceno 2D座標に対応する３Ｄ座標が見つかった場合に、 その３Ｄモデルのパーツの番号と、面の番号が 代入されます。 見つからなかった場合は、-1が代入されます。 10. [OUT] 変数　：　pos3x 11. [OUT] 変数　：　pos3y 12. [OUT] 変数　：　pos3z ２Ｄ座標に対応する３Ｄ座標が代入されます。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 13. [OUT] 変数　：　nx 14. [OUT] 変数　：　ny 15. [OUT] 変数　：　nz 2D座標に対応する３Ｄ座標を含む面の法線ベクトルが 代入されます。 ベクトルの大きさは１のものを代入します。 partnoに-1以外の値が代入されているときのみ、 これらの値は意味を持ちます。 実数型の変数。 16. [OUT] 変数　：　dist 視点と（pos3x, pos3y, pos3z）との距離が代入されます。 partnoに-1以外の値が代入されているときのみ、 この値は意味を持ちます。 実数型の変数。 17. [IN] 数値または、変数　：　calcmode １を指定してください。 | ver3.0.2.0で追加
E3DChkConfWall3 | 当たり判定 | E3DSetMovableArea, または、E3DLoadMQOFileAsMovableAreaで作成した壁データと、キャラクターのあたり判定を行います。 判定したい壁データのパーツ番号を指定できる点以外は、 E3DChkConfWallと同じです。 詳しくは、E3DChkConfWallの説明をお読みください。 壁モデルのパーツ番号３とパーツ番号４についてのみ、 判定を行いたい場合は、 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 あたり判定の結果が代入されます。 壁とぶつかった場合は１が、 ぶつからなかった場合は、０が、代入されます。 7. [OUT] 変数　：　adjustx 8. [OUT] 変数　：　adjusty 9. [OUT] 変数　：　adjustz result != 0 のときに、 修正後の座標が、 (adjustx, adjusty, adjustz)に代入されます。 実数型の変数。 10. [OUT] 変数　：　nx 11. [OUT] 変数　：　ny 12. [OUT] 変数　：　nz result != 0 のときに、 ぶつかった面の法線ベクトルの値が、 代入されます。 実数型の変数。 | ver3.0.2.0で追加
E3DGetMotionIDByName | モーション | モーションの名前からモーションのIDを取得します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 文字列または、文字列変数　：　motname RokDeBone2で設定したモーションの名前。 3. [OUT] 変数　：　motid 名前がmotnameであるモーションのIDが代入されます。 | ver3.0.2.0で追加
E3DGetMotionNum | モーション | 読み込んでいるモーションの総数を取得します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [OUT] 変数　：　motnum モーションの総数が代入されます。 | ver3.0.2.0で追加
E3DDot2 | 算術 | 内積を計算します。 E3DDotと違って、E3DDot2は、与えたベクトルを正規化しません。 | 1. [IN] 変数または、数値　：　vecx1 2. [IN] 変数または、数値　：　vecy1 3. [IN] 変数または、数値　：　vecz1 実数。 4. [IN] 変数または、数値　：　vecx2 5. [IN] 変数または、数値　：　vecy2 6. [IN] 変数または、数値　：　vecz2 実数。 7. [OUT] 変数　：　ret 内積の結果が代入される。 実数型の変数。 | ver3.0.2.0で追加
E3DChkConfParticle | 当たり判定 | パーティクルとモデルデータのあたり判定をします。 境界球を使用した判定を行います。 モデルデータ側の境界球の半径が大きすぎるときは、 rate引数に１より小さい値を指定して調整してください。 | 1. [IN] 変数または、数値　：　ptclid パーティクルを識別するid 2. [IN] 変数または、数値　：　hsid 形状データを識別するid 3. [IN] 変数または、数値　：　rate モデルデータの境界球の半径に掛け算して 判定します。 １より小さい値を指定すれば、 判定の感度が落ちます。 実数。 4. [OUT] 変数　：　confflag パーティクルとモデルデータが ぶつかっているときは１が ぶつかっていないときは０が代入されます。 | ver3.0.2.3で追加
E3DLoadSigFileAsGround | 地面 | sigファイルを地面として読み込んで、hsidを得る。 sigファイルの読み込み速度は、mqoファイルの読み込みよりも、 だいぶ速くなります。 | 1. [IN] 文字列または、文字列の変数　：　fname *.sig のパス文字列。 2. [OUT] 変数　：　hsid 読み込んだ形状データを識別するhsid 3. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 4. [IN] 変数または、数値　：　mult 読み込み倍率を指定してください。 等倍は１．０。 実数。 | ver3.0.2.5で追加
E3DLoadSigFileAsGroundFromBuf | 地面 | メモリから地面データのロードを行います。 メモリ内には、sigファイルと同じフォーマットが 入っているとみなして、処理します。 テクスチャファイルは、通常読込と同様に、 ファイルから行います。 resdirには、テクスチャの存在するフォルダのパスを指定してください。 最後に、"\\"を付けるのを忘れないでください。 例えば、 resdir = "C:\\hsp\\Meida\\" や resdir = dir_cur+ "\\" などのように指定してください。 | 1. [IN] 文字列または、文字列の変数　：　resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数　：　buf バッファの変数 3. [IN] 変数または、数値　：　bufleng バッファの中のデータの長さ 4. [OUT] 変数　：　hsid 読み込んだ形状データを識別するhsid 5. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 6. [IN] 変数または、数値　：　mult 読み込み倍率を指定してください。 等倍は１．０。 実数。 | ver3.0.2.5で追加
E3DGetCenterPos | モデル位置 | パーツの中心のグローバル座標を取得します。 パーツの中心の座標は、E3DChkInViewで計算されます。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 数値または、変数　：　partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 -1を指定すると、モデル全体の中心座標が 取得できます。 3. [OUT] 変数　：　posx 4. [OUT] 変数　：　posy 5. [OUT] 変数　：　posz 実数型の変数。 中心の座標が代入されます。 | ver3.0.2.7で追加
E3DGetFaceNum | モデル情報 | 指定した表示オブジェクトの面の総数を取得します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 数値または、変数　：　partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [OUT] 変数　：　facenum 面の総数が代入されます。 | ver3.0.3.0で追加
E3DGetFaceNormal | モデル情報 | 指定した表示オブジェクトの面の法線を取得します。 E3DGetFaceNumで取得した面の総数をfacenumとしたとき、 faceno引数には、０からfacenum - 1までの値を 指定してください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 数値または、変数　：　partno 取得したいパーツの番号を指定します。 E3DGetPartNoByNameで取得した番号を 渡してください。 3. [IN] 数値または、変数　：　faceno 面の番号を指定します。 4. [OUT] 変数　：　nx 5. [OUT] 変数　：　ny 6. [OUT] 変数　：　nz 実数型の変数。 法線のベクトルが代入されます。 | ver3.0.3.0で追加
E3DGetReferenceTime | サウンド | ステレオサウンドのリファレンスタイムを取得します。 この命令は、３Dサウンドには使えません。 ステレオサウンドのwavに使用できます。 リファレンスタイムは、１秒あたり約10,000,000の値です。 この時間は音データを読み込んだ直後から増加していきます。 ですので、再生してからの時間を測りたいときは、 再生直後のリファレンスタイムを取得しておいて、 現在のリファレンスタイムから引き算して計算してください。 | 1. [IN] 変数または、数値　：　soundid 音データを識別するIDを指定してください。 2. [OUT] 変数　：　mtime 整数型の変数 ミュージックタイムが代入されます。 ４分音符あたり768の値です。 MIDI用の時間です。 3. [OUT] 変数　：　reftime 実数型の変数 リファレンスタイムが代入されます。 １秒あたり約10,000,000の値です。 wav用の時間です。 | ver3.0.3.0で追加
E3DCreateEmptyMotion | モーション | 姿勢情報の入っていない空のモーションを作成します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 文字列または、文字列の変数　：　motname モーションの名前の文字列。 3. [IN] 変数または、数値　：　frameleng 作成するモーションの長さ。フレーム長。 4. [OUT] 変数　：　mk 作成したモーションを識別する番号 | ver3.0.3.5で追加
E3DSetTextureMinMagFilter | 描画パラメータ | テクスチャーを拡大縮小表示する際のフィルターを指定します。 ３Dモデル、背景、スプライト、ビルボードに指定できます。 minfilter引数には縮小する際のフィルターを指定し、 magfilter引数には拡大する際のフィルターを指定します。 フィルターの指定にはe3dhsp3.asで定義されている以下の２つの定数を使います。 D3DTEXF_POINT 最近点フィルタ。 目的のピクセル値に最も近い座標のテクセルを使います。 テクスチャがぼやけるのが嫌な場合などに使います。 D3DTEXF_LINEAR 双線形補間フィルタ。 目的のピクセルを取り囲む 2 x 2 領域のテクセルの重み付けした平均を使います。 なめらかな表示をしたいときに使います。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid E3DCreateBGで作成した背景に対して処理を行いたい場合は０を指定します。 ビルボードに対して処理を行いたい場合は-1を指定します。 スプライトに対して処理を行いたい場合は-2を指定します。 2. [IN] 変数または、数値　：　partno 形状データを識別するidを指定します。 背景の場合は０を指定します。 ビルボードの場合はビルボードIDを指定します。 スプライトの場合はスプライトIDを指定します。 3. [IN] 変数または、数値　：　minfilter 縮小フィルター 4. [IN] 変数または、数値　：　magfilter 拡大フィルター 5. [IN] 変数または、数値　：　scid スワップチェインID。 この引数は、背景の指定の場合のみ意味を持ちます。 | ver3.0.3.7で追加
E3DGetMotionName | モーション | 読み込み済みのモーションの名前を取得します。 motname引数には sdim motname, 256 で確保したメモリを指定してください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　motid モーションを識別するid 3. [OUT] 文字列型の変数　：　motname モーションの名前が代入されます。 sdim motname, 256 で確保したメモリを指定してください。 | ver3.0.3.8で追加
E3DSetMotionName | モーション | モーションに名前を設定します。 ２５５文字以下（２５５バイト以下）の名前を設定してください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　motid モーションを識別するid 3. [IN] 文字列または、文字列変数　：　motname モーションの名前を指定します。 名前の長さは２５５文字（２５５バイト）までです。 | ver3.0.3.8で追加
E3DGetMaterialNoByName | マテリアル | マテリアル名からマテリアル番号を取得します。 マテリアル名はRokDeBone2のメインメニューの 「面マテリアル」メニューを押したときに現れるダイアログで 確認できます。 ver4.0.0.1以降のRokDeBone2でmqoからデータを読み込んでいる場合には、マテリアル名はメタセコイアの材質名と同じです。 存在しないマテリアル名を渡した場合は、 マテリアル番号には-3が返されます。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 文字列または、文字列変数　：　motname マテリアルの名前を指定します。 名前の長さは２５５文字（２５５バイト）までです。 3. [OUT] 変数　：　matno マテリアルの番号が代入されます。 存在しない名前を渡した場合は-3が代入されます。 | ver4.0.0.1で追加
E3DGetMaterialAlpha | マテリアル | マテリアルの透明度を取得します。 透明度は0.0から1.0までの実数です。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数　：　alpha 透明度が代入されます。 実数型の変数。 | ver4.0.0.1で追加
E3DGetMaterialDiffuse | マテリアル | マテリアルの拡散光（diffuse）を取得します。 R, G, Bはそれぞれ赤、緑、青の強さを０から２５５で表したものです。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数　：　R 4. [OUT] 変数　：　G 5. [OUT] 変数　：　B diffuseのRGBが代入されます。 | ver4.0.0.1で追加
E3DGetMaterialSpecular | マテリアル | マテリアルの反射光（specular）を取得します。 R, G, Bはそれぞれ赤、緑、青の強さを０から２５５で表したものです | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数　：　R 4. [OUT] 変数　：　G 5. [OUT] 変数　：　B specularのRGBが代入されます。 | ver4.0.0.1で追加
E3DGetMaterialAmbient | マテリアル | マテリアルの周囲光（ambient）を取得します。 R, G, Bはそれぞれ赤、緑、青の強さを０から２５５で表したものです | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数　：　R 4. [OUT] 変数　：　G 5. [OUT] 変数　：　B ambientのRGBが代入されます。 | ver4.0.0.1で追加
E3DGetMaterialEmissive | マテリアル | マテリアルの自己照明（emissiver）を取得します。 R, G, Bはそれぞれ赤、緑、青の強さを０から２５５で表したものです | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数　：　R 4. [OUT] 変数　：　G 5. [OUT] 変数　：　B emissiveのRGBが代入されます。 | ver4.0.0.1で追加
E3DGetMaterialPower | マテリアル | マテリアルの反射の強さ(power)を取得します。 powerは実数です。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数　：　power powerが代入されます。 実数型の変数。 | ver4.0.0.1で追加
E3DGetMaterialBlendingMode | マテリアル | マテリアルの半透明モードを取得します。 modeの値の意味は ０のとき 頂点アルファ値による半透明モードです。 １のとき アッドモードです。 ２のとき 頂点アルファを考慮したアッドモードです。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 変数　：　mode 半透明モードが代入されます。 | ver4.0.0.1で追加
E3DSetMaterialAlpha | マテリアル | マテリアルの透明度を設定します。 透明度は0.0から1.0の実数で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 変数または、数値　：　alpha 透明度。 実数。 | ver4.0.0.1で追加
E3DSetMaterialDiffuse | マテリアル | マテリアルの拡散光(diffuse)を設定します。 RGBは０から２５５の値で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数　：　setflag setflagが０のときは、 パーツの色を（Ｒ，Ｇ，Ｂ）にセットします。 setflagが１のときは、 パーツの色に（R/255, G/255, B/255）を乗算します。 setflagが２のときは、 パーツの色に（Ｒ，Ｇ，Ｂ）を足し算します。 setflagが３のときは、 パーツの色から（Ｒ，Ｇ，Ｂ）を減算します。 4. [IN] 数値または、変数　：　R 5. [IN] 数値または、変数　：　G 6. [IN] 数値または、変数　：　B 指定したい色を（Ｒ，Ｇ，Ｂ）で指定します。 ０から２５５までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 | ver4.0.0.1で追加
E3DSetMaterialSpecular | マテリアル | マテリアルの反射光(specular)を設定します。 RGBは０から２５５の値で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数　：　setflag setflagが０のときは、 パーツの色を（Ｒ，Ｇ，Ｂ）にセットします。 setflagが１のときは、 パーツの色に（R/255, G/255, B/255）を乗算します。 setflagが２のときは、 パーツの色に（Ｒ，Ｇ，Ｂ）を足し算します。 setflagが３のときは、 パーツの色から（Ｒ，Ｇ，Ｂ）を減算します。 4. [IN] 数値または、変数　：　R 5. [IN] 数値または、変数　：　G 6. [IN] 数値または、変数　：　B 指定したい色を（Ｒ，Ｇ，Ｂ）で指定します。 ０から２５５までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 | ver4.0.0.1で追加
E3DSetMaterialAmbient | マテリアル | マテリアルの周囲光(ambient)を設定します。 RGBは０から２５５の値で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数　：　setflag setflagが０のときは、 パーツの色を（Ｒ，Ｇ，Ｂ）にセットします。 setflagが１のときは、 パーツの色に（R/255, G/255, B/255）を乗算します。 setflagが２のときは、 パーツの色に（Ｒ，Ｇ，Ｂ）を足し算します。 setflagが３のときは、 パーツの色から（Ｒ，Ｇ，Ｂ）を減算します。 4. [IN] 数値または、変数　：　R 5. [IN] 数値または、変数　：　G 6. [IN] 数値または、変数　：　B 指定したい色を（Ｒ，Ｇ，Ｂ）で指定します。 ０から２５５までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 | ver4.0.0.1で追加
E3DSetMaterialEmissive | マテリアル | マテリアルの自己照明(emissive)を設定します。 RGBは０から２５５の値で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数　：　setflag setflagが０のときは、 パーツの色を（Ｒ，Ｇ，Ｂ）にセットします。 setflagが１のときは、 パーツの色に（R/255, G/255, B/255）を乗算します。 setflagが２のときは、 パーツの色に（Ｒ，Ｇ，Ｂ）を足し算します。 setflagが３のときは、 パーツの色から（Ｒ，Ｇ，Ｂ）を減算します。 4. [IN] 数値または、変数　：　R 5. [IN] 数値または、変数　：　G 6. [IN] 数値または、変数　：　B 指定したい色を（Ｒ，Ｇ，Ｂ）で指定します。 ０から２５５までの値を指定してください。 setflagに乗算を指定した場合は、 各成分に、R/255, G/255, B/255を乗算します。 | ver4.0.0.1で追加
E3DSetMaterialPower | マテリアル | マテリアルの反射の強さ(power)を設定します。 実数で指定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数　：　setflag setflagが０のときは、 powerをそのままセットします。 setflagが１のときは、 現在のマテリアルにpowerを乗算します。 setflagが２のときは、 現在のマテリアルにpowerを足し算します。 setflagが３のときは、 現在のマテリアルからpowerを減算します。 4. [IN] 数値または、変数　：　power 反射の強さを指定します。 実数。 | ver4.0.0.1で追加
E3DSetMaterialBlendingMode | マテリアル | マテリアルの半透明モードを設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 blendmode 0, 1, 2はアルファテストの設定も変更します。 アルファテストの設定を変更したくない場合は blendmode 100, 101, 102をお使いください。 アルファテストを設定したい場合は E3DSetMaterialAlphaTestをご使用ください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数　：　blendmode ０を指定すると 頂点アルファ値による半透明モードになります。 アルファテストはオフになります。 １を指定すると アッドモードになります。 アルファテストはオンになり８より小さいアルファのときに描画されなくなります（Zバッファにも）。 ２を指定すると、 頂点アルファを考慮したアッドモードになります。 アルファテストはオフになります。 １００を指定すると 頂点アルファ値による半透明モードになります。 アルファテストは変更しません。 １０１を指定すると アッドモードになります。 アルファテストは変更しません。 １０２を指定すると、 頂点アルファを考慮したアッドモードになります。 アルファテストは変更しません。 | ver4.0.0.1で追加 ver5.0.2.9で拡張
E3DGetTextureFromMaterial | マテリアル | マテリアルに設定されているテクスチャを取得します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [OUT] 数値　：　texid テクスチャのIDが代入されます。 エラーのときは-1が代入されます。 | ver4.0.0.1で追加
E3DSetTextureToMaterial | マテリアル | マテリアルにテクスチャを設定します。 マテリアルの変更により 表示オブジェクトの対応する部分の表示が面単位で変化します。 テクスチャをセットしても、 ＵＶ座標は自動的に生成されません。 動的にテクスチャを設定する場合は、 ＵＶ座標もE3DSetUVで設定するか、 もしくは、 あらかじめ、モデルに仮のテクスチャを貼っておいてＵＶ設定しておく必要があります。 具体的な使用例は、 e3dhsp3_TextureChange.hsp に書きましたので、ご覧ください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数　：　texid テクスチャのIDを指定してください。 | ver4.0.0.1で追加
E3DGetMaterialNo | マテリアル | 面のマテリアル番号を取得します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 数値または、変数　：　partno パーツを識別する番号を指定してください。 3. [IN] 数値または、変数　：　faceno 面を識別する番号を指定してください。 4. [OUT] 変数　：　matno マテリアルの番号が代入されます。 | ver4.0.0.6で追加
E3DSetMotionKindML | モーション | ボーンごとに再生するモーションの番号を設定します。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には０をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を２、左ひじの番号を３、左手の番号を４、 右肩のボーン番号を１２、右ひじの番号を１３、右手の番号を１４、 手に持っている武器のボーン番号を２２として 武器を除く手の部分にモーションを設定したい場合は、 list(0) = 2 list(1) = 12 list(2) = 0 notlist(0) = 22 notlist(1) = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 ２を指定すれば２の子供全部に処理が行われるので３，４を指定する必要はない。 同様に１２を指定すれば１２の子供全部に処理が行われるので１３，１４を指定する必要はない。 リストの最後には必ず0を指定する。 具体的な使用例は e3dhsp3_MultiLayerMotion.hspに書きましたのでご覧ください。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　motid モーションを識別するid 3. [IN] 配列変数　：　list 4. [IN] 配列変数　：　notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列。 詳しくは前記をご覧ください。 | ver4.0.0.6で追加
E3DSetMotionFrameNoML | モーション | ボーンごとに再生するモーションの番号とフレーム番号を設定します。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には０をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を２、左ひじの番号を３、左手の番号を４、 右肩のボーン番号を１２、右ひじの番号を１３、右手の番号を１４、 手に持っている武器のボーン番号を２２として 武器を除く手の部分にモーションを設定したい場合は、 list(0) = 2 list(1) = 12 list(2) = 0 notlist(0) = 22 notlist(1) = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 ２を指定すれば２の子供全部に処理が行われるので３，４を指定する必要はない。 同様に１２を指定すれば１２の子供全部に処理が行われるので１３，１４を指定する必要はない。 リストの最後には必ず0を指定する。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　motid モーションを識別するid 3. [IN] 変数または、数値　：　frameno フレーム番号。 4. [IN] 配列変数　：　list 5. [IN] 配列変数　：　notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列。 詳しくは前記をご覧ください。 | ver4.0.0.6で追加
E3DSetNextMotionFrameNoML | モーション | 現在再生しているモーションの後につづけて再生するモーションをボーンごとに設定します。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には０をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を２、左ひじの番号を３、左手の番号を４、 右肩のボーン番号を１２、右ひじの番号を１３、右手の番号を１４、 手に持っている武器のボーン番号を２２として 武器を除く手の部分にモーションを設定したい場合は、 list(0) = 2 list(1) = 12 list(2) = 0 notlist(0) = 22 notlist(1) = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 ２を指定すれば２の子供全部に処理が行われるので３，４を指定する必要はない。 同様に１２を指定すれば１２の子供全部に処理が行われるので１３，１４を指定する必要はない。 リストの最後には必ず0を指定する。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　srcmotid 3. [IN] 数値または、変数　：　nextmotid 4. [IN] 数値または、変数　：　nextframeno 5. [IN] 数値または、変数　：　befframeno srcmotidのモーションが、befframeフレーム番号に達した後、nextmotidのモーションの、nextframenoのフレーム番号に、ジャンプするように設定されます。 befframeに-1をセットした場合は、srcmotidが最終フレームに達した後にジャンプします。 6. [IN] 配列変数　：　list 7. [IN] 配列変数　：　notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列。 詳しくは前記をご覧ください。 | ver4.0.0.6で追加
E3DSetMOAEventNoML | モーション | モーションアクセラレータのイベント番号をボーンごとに設定します。 この命令を必要な分だけ呼んだ後に１回E3DSetNewPoseMLを呼ぶ必要があります。 list, notlistはボーンの番号をセットした配列 listに指定した番号とその子供全部に対して再帰的に処理を行う。 notlistには除外したいボーンの内、一番親の番号を記述する。 notlistに記述した番号は、listに記述した番号よりも優先される。 list, notlistには複数の番号を指定できるが、一番最後の要素には０をセットしなければならない。 listの先頭要素に限り-1を指定できる。 -1指定はすべてのボーンに対する処理を表す。 左肩のボーン番号を２、左ひじの番号を３、左手の番号を４、 右肩のボーン番号を１２、右ひじの番号を１３、右手の番号を１４、 手に持っている武器のボーン番号を２２として 武器を除く手の部分にモーションを設定したい場合は、 list(0) = 2 list(1) = 12 list(2) = 0 notlist(0) = 22 notlist(1) = 0 のようにlist, notlistの配列に値をセットして命令を呼び出す。 ２を指定すれば２の子供全部に処理が行われるので３，４を指定する必要はない。 同様に１２を指定すれば１２の子供全部に処理が行われるので１３，１４を指定する必要はない。 リストの最後には必ず0を指定する。 具体的な使用例は e3dhsp3_MultiLayerMotion_MOA.hsp に書きましたのでご覧ください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　eventno モーションの変化のトリガーとなるイベント番号。 3. [IN] 配列変数　：　list 4. [IN] 配列変数　：　notlist 設定したいボーン番号と 設定したくないボーン番号をセットした配列。 詳しくは前記をご覧ください。 | ver4.0.0.6で追加
E3DGetMotionFrameNoML | モーション | 指定したボーンのモーション番号とフレーム番号を取得します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ 3. [OUT] 変数　：　motid モーション番号が代入されます。 4. [OUT] 変数　：　frameno フレーム番号が代入されます。 | ver4.0.0.6で追加
E3DGetNextMotionFrameNoML | モーション | E3DSetNextMotionFrameNoMLで設定した情報をボーンごとに取得します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ 3. [IN] 数値または、変数　：　motid モーションを識別するＩＤ 4. [OUT] 変数　：　nextmotid ジャンプ先のモーション番号が代入されます。 5. [OUT] 変数　：　nextframeno ジャンプ先のフレーム番号が代入されます。 | ver4.0.0.6で追加
E3DSetNewPoseML | モーション | マルチレイヤーモーションの仕様に従って、新しい姿勢情報をそれぞれのボーンにセットします。 具体的な使用例は e3dhsp3_MultiLayerMotion.hspと e3dhsp3_MultiLayerMotion_MOA.hsp に書きましたのでご覧ください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ | ver4.0.0.6で追加
E3DGetCurrentBonePos | モデル情報 | 現在のボーンの位置を取得します。 E3DSetNewPose, E3DSetNewPoseMLの結果を使用します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　boneno ボーンを識別するＩＤ 3. [IN] 数値または、変数　：　poskind poskind = 0 ---> ローカル座標（ボーン変形なし） poskind = 1 ---> グローバル座標（ボーン変形あり） poskind = 2 ---> ローカル座標（ボーン変形あり） 4. [OUT] 変数　：　posx 5. [OUT] 変数　：　posy 6. [OUT] 変数　：　posz ボーンの位置が代入されます。 実数型の変数。 | ver4.0.0.8で追加
E3DGetCurrentBoneQ | モーション | 現在のボーンの姿勢情報を取得します。 E3DSetNewPose, E3DSetNewPoseMLの結果を使用します。 | 1. [IN] 数値または、変数　：　hsid モデルを識別する番号を指定してください。 2. [IN] 数値または、変数　：　boneno ボーンを識別する番号を指定してください。 E3DGetBoneNoByNameまたは、 E3DGetPartNoByNameで取得した番号を指定してください。 3. [IN] 数値または、変数　：　kind 親の影響を受けたクォータニオンを 取得する場合は、１を指定してください。 親の影響を受けていないクォータニオンを 取得する場合は、０を指定してください。 親の影響を受け、 更に、モデル全体の向きの影響を受けたクォータニオンを取得 するには、２を指定してください。 4. [IN, OUT] 数値または、変数　：　qid クォータニオンを識別する番号。 E3DCreateQで取得した番号を指定してください。 qidで識別されるクォータニオンの内容に、 指定したボーンのクォータニオンの内容を、 代入します。 | ver4.0.0.8で追加
E3DChkBumpMapEnable | 描画パラメータ | ハードウェアがバンプマップを表示可能かどうかを調べます。 | 1. [OUT]変数　：　flag バンプマップ表示可能の場合は０以外が、 表示不可能のときは０が代入されます。 | ver4.0.1.4で追加
E3DEnableBumpMap | 描画パラメータ | バンプマップ表示を使用するかどうかを設定します。 | 1. [IN] 数値または、変数　：　flag ０を指定するとバンプマップを表示しません。 １を指定するとハードウェアに能力がある場合に限り、バンプマップを表示可能にします。 | ver4.0.1.4で追加
E3DConvHeight2NormalMap | テクスチャ | 白黒の高さマップの画像データを、E3Dで使用可能な法線マップに変換します。 | 1. [IN] 文字列または、文字列変数　：　hmapname 白黒画像のファイルのパス。 2. [IN] 文字列または、文字列変数　：　nmapname 法線マップのファイルのパス。 出力ファイル名。BMPのみ有効。 3. [IN] 数値または、変数　：　hparam バンプマップの高さのパラメータ。 値が大きいほど段差がきつくなります。 実数。 | ver4.0.1.4で追加
E3DSetBumpMapToMaterial | マテリアル | E3DCreateTextureで作成したテクスチャをバンプマップに設定します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 数値または、変数　：　texid テクスチャのIDを指定してください。 -1を指定するとバンプマップが無効になります。 | ver4.0.1.4で追加
E3DGetMOATrunkInfo | モーション | MOAの分岐元モーションの情報を取得します。 trunkinfo引数には dim trunkinfo, MOAT_MAX で作成した配列を指定してください。 取得したtrunkinfo情報にはe3dhsp3.asで定義している MOAT_で始まる定数でアクセスします。 それぞれの定数の役割は以下のとおりです。 MOAT_IDLING　アイドリングモーションかどうかのデータ MOAT_EV0IDLE　イベント番号０でアイドリングに戻すかどうかのデータ MOAT_COMID　共通分岐イベント番号 MOAT_NOTCOMID　共通分岐禁止イベント番号 MOAT_BRANCHNUM　分岐先モーションがいくつあるか 例えば共通分岐番号の情報にアクセスする場合は trunkinfo( MOAT_COMID ) のように記述します。 この命令に渡すmotidはE3DGetMOAInfoで取得したIDを使用してください。 motid 0 (補間モーション)を指定すると trunkinfoにはすべて０が代入されます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ 3. [OUT] 配列変数　：　trunkinfo 分岐元モーションの情報が代入されます。 前述の方法でdimした配列を指定してください。 |
E3DGetMOABranchInfo | モーション | MOAの分岐先モーションの情報を取得します。 branchinfo引数には dim branchinfo, MOAB_MAX, branchnum で作成した配列を指定してください。 branchnumにはE3DGetMOATrunkInfoで取得した trunkinfo( MOAT_BRANCHNUM ) を指定してください。 取得したbranchinfo情報にはe3dhsp3.asで定義している MOAB_で始まる定数でアクセスします。 それぞれの定数の役割は以下のとおりです。 MOAB_MOTID　分岐先モーションのモーションID MOAB_EVENTID　イベント番号 MOAB_FRAME1　分岐元フレーム番号 MOAB_FRAME2　分岐先フレーム番号 MOAB_NOTFU　補間なしで変化させるかどうか branchinfoの１番目のインデックスにはMOAB_で始まる定数を指定し、２番目のインデックスには０から(getnum - 1) の値（分岐先の番号）を指定します。 例えば、最初の分岐のイベント番号にアクセスする場合は branchinfo( MOAB_EVENTID, 0 ) のように記述します。 この命令に渡すmotidはE3DGetMOAInfoで取得したIDを使用してください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　motid モーションを識別するＩＤ 3. [OUT] 配列変数　：　branchinfo 分岐先モーションの情報が代入されます。 前述の方法でdimした配列を指定してください。 4. [IN] 数値または、変数　：　branchnum branchinfoをdimしたときのbranchnumを指定してください。 5. [OUT] 変数　：　getnum 分岐先モーション情報をいくつ取得したかが代入されます。 |
E3DSetMOABranchFrame1 | モーション | MOAの分岐の分岐元フレーム番号情報を設定します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　tmotid 分岐元モーションを識別するＩＤ 3. [IN] 数値または、変数　：　bmotid 分岐先モーションを識別するＩＤ 4. [IN] 数値または、変数　：　frame1 分岐の分岐元フレーム番号 -1指定は、いつでも分岐することを表します。 |
E3DSetMOABranchFrame2 | モーション | MOAの分岐の分岐先フレーム番号情報を設定します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　tmotid 分岐元モーションを識別するＩＤ 3. [IN] 数値または、変数　：　bmotid 分岐先モーションを識別するＩＤ 4. [IN] 数値または、変数　：　frame2 分岐の分岐先フレーム番号 |
E3DSetDispSwitch2 | 描画パラメータ | ディスプレイスイッチのアニメーションの設定をします。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　boneno ボーンを識別するパーツの番号 3. [IN] 数値または、変数　：　motid モーションを識別するＩＤ 4. [IN] 数値または、変数　：　switchid スイッチの番号。０から９９ 5. [IN] 数値または、変数　：　frameno モーションのフレーム番号 6. [IN] 数値または、変数　：　switchflag スイッチの状態。 ０がオフ。１がオン。 | ver5.0.0.1で追加
E3DQtoEuler | 算術 | クォータニオンの姿勢をオイラー角に変換します。 回転の順番はZ軸、X軸、Y軸です。 | 1. [IN] 数値または、変数　：　qid クォータニオンを識別するＩＤ 2. [OUT] 数値または、変数　：　newx 3. [OUT] 数値または、変数　：　newy 4. [OUT] 数値または、変数　：　newz オイラー角が代入されます。 実数型の変数。 5. [IN] 数値または、変数　：　oldx 6. [IN] 数値または、変数　：　oldy 7. [IN] 数値または、変数　：　oldz 前回E3DQtoEulerした結果を指定します。 計算時にoldに一番近い角度をnewに代入します。 初回時には０を指定してください。 | ver5.0.0.1で追加
E3DEnablePhongEdge | 描画パラメータ | 色P時に輪郭線を表示するかを指定します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　flag 輪郭線を表示するとき１、しないとき０ | ver5.0.0.1で追加
E3DSetPhongEdge0Params | 描画パラメータ | 色P時の輪郭線の色と幅と半透明モードを設定します。 半透明の輪郭線はE3DRenderのwithalpha引数に１を指定したときに表示されます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　r 3. [IN] 数値または、変数　：　g 4. [IN] 数値または、変数　：　b 輪郭線の色をRGBで指定します。 それぞれ０から２５５までの値。 5. [IN] 数値または、変数　：　width 輪郭線の幅を実数で指定します。 6. [IN] 数値または、変数　：　blendmode 輪郭線の半透明モードを指定します。 ０を指定すると頂点アルファによる半透明 １を指定するとアッドモード ２を指定すると頂点アルファを考慮したアッドモード ３を指定すると不透明 になります。 デフォルト値は３です。 7. [IN] 数値または、変数　：　alpha 輪郭線の頂点アルファを指定します。 blendmodeで０または２を指定したときに 意味を持ちます。 0.0から1.0の間の実数を指定してください。 | ver5.0.0.1で追加 ver5.0.0.3で拡張
E3DGetDispSwitch2 | モーション | ディスプレイスイッチを取得します。 E3DSetNewPose, E3DSetNewPoseMLの結果を利用します。 dispswitch変数は dim dispswitch, DISPSWITCHNUM で確保してからこの命令に渡してください。 DISPSWITCHNUMはe3dhsp3.asで定義されています。 （スイッチの総数です） スイッチがオフのとき０がオンのときは０以外が代入されます。 例えばスイッチ３がオンのときは dispswitch( 3 ) に０以外が代入されます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [OUT] 配列変数　：　dispswitch スイッチの状態が代入されます。 詳しくは前記をご覧ください。 3. [IN] 数値または、変数　：　leng dispswitch配列を作成したときの 要素数を指定します。 | ver5.0.0.6で追加
E3DFreeThread | スレッド管理 | スレッドのリソースを解放します。 この命令を実行が終わったスレッドに対して呼ぶことで 4098回の呼び出し回数制限を緩和することが出来ます。 ただしこの命令を使用しても一度にアクティブにできる スレッド命令は4098個のままです。 | 1. [IN] 数値または、変数　：　threadid スレッドを識別するＩＤ | ver5.0.0.7で追加
E3DLoadSigFileAsGroundThread | 地面 | スレッドを作成して、E3DLoadSigFileAsGroundを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadSigFileAsGroundの説明も、お読みください。 | 1. [IN] 文字列または、文字列の変数　：　fname *.sig のパス文字列。 2. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 3. [IN] 変数または、数値　：　mult 読み込み倍率を指定してください。 等倍は１．０。 実数。 4. [OUT] 変数　：　threadid 作成したスレッドを識別するID。 | ver5.0.0.7で追加
E3DLoadSigFileAsGroundFromBufThread | 地面 | スレッドを作成して、E3DLoadSigFileAsGroundFromBufを実行します。 作成したスレッドを識別するためのＩＤが threadidに代入されます。 スレッドの作成に失敗した場合には、 threadidにマイナスの値が、代入されます。 threadidは、 E3DChkThreadWorkingに使用することが 出来ます。 スレッド作成関数は、全部で、4098回まで、 呼ぶことが出来ます。 （E3DChkThreadWorkingを除く） E3DFreeThreadの説明もご覧ください。 スレッドが終了すると、 E3DChkThreadWorkingで取得される returnval1に、 モデルデータを識別するhsidが代入されます。 E3DLoadSigFileAsGroundFromBufの説明も、お読みください。 | 1. [IN] 文字列または、文字列の変数　：　resdir テクスチャーのあるフォルダ のパス文字列。 最後に、"\\"が必要。 2. [IN] 変数　：　buf バッファの変数 3. [IN] 変数または、数値　：　bufleng バッファの中のデータの長さ 4. [IN] 変数または、数値　：　adjustuvflag ＵＶ値を正規化するかどうかのフラグ 正規化する場合は１を指定 しない場合は０を指定 5. [IN] 変数または、数値　：　mult 読み込み倍率を指定してください。 等倍は１．０。 実数。 6. [OUT] 変数　：　threadid 作成したスレッドを識別するID。 | ver5.0.0.7で追加
E3DSetLightIdOfBumpMap | ライト | バンプマップを照らす光源を１つだけ選択します。 平行光源でも点光源でもOKです。 | 1. [IN] 数値または、変数　：　lid ライトを識別するＩＤ | ver5.0.0.8で追加
E3DSetSpriteUV | スプライト | スプライトのUVを設定します。 具体的な使用例は e3dhsp3_SpriteUV.hspをご覧ください。 | 1. [IN] 数値または、変数　：　spid スプライトを識別するＩＤ 2. [IN] 数値または、変数　：　startu U方向の表示開始点を０から１で指定します。 実数。 3. [IN] 数値または、変数　：　endu U方向の表示終了点を０から１で指定します。 実数。 4. [IN] 数値または、変数　：　startv V方向の表示開始点を０から１で指定します。 実数。 5. [IN] 数値または、変数　：　endv V方向の表示終了点を０から１で指定します。 実数。 | ver5.0.0.8で追加
E3DCreateRenderTargetTexture | テクスチャ | レンダリング可能なテクスチャを作成します。 この命令が成功するとスワップチェインIDとテクスチャIDが取得できます。 テクスチャのサイズは２の乗数にしてください。 消費するビデオメモリ量は sizex * sizey * ( 4 + 2 ) バイトです。 メモリ不足などでこの命令が失敗した場合には エラーにならずにokflagに０が代入されます。 失敗した場合はテクスチャサイズを小さくするなどして 再試行してみてください。 具体的な使用例は e3dhsp3_RenderTargetTexture.hspをご覧ください。 | 1. [IN] 数値または、変数　：　sizex 2. [IN] 数値または、変数　：　sizey 作成するテクスチャのサイズ ２の乗数を推奨。 3. [OUT] 変数　：　scid スワップチェインIDが代入されます。 4. [OUT] 変数　：　texid テクスチャIDが代入されます。 5. [OUT] 変数　：　okflag 成功した場合は１が 失敗した場合は０が代入されます。 6. [IN] 数値または、変数　：　fmt 作成したいテクスチャのフォーマットを指定します。 e3dhsp3.asで定義されているD3DFMT_で始まる 定数を使用してください。 この引数を省略した場合は D3DFMT_A8R8G8B8で作成されます。 | ver5.0.0.9で追加 ver5.0.1.6で引数追加
E3DDestroyRenderTargetTexture | テクスチャ | レンダーターゲットテクスチャを破棄します。 | 1. [IN] 数値または、変数　：　scid E3DCreateRednerTargetTextureで 取得したスワップチェインIDを指定します。 2. [IN] 数値または、変数　：　texid E3DCreateRednerTargetTextureで 取得したテクスチャIDを指定します。 | ver5.0.0.9で追加
E3DSetDSFillUpMode | モーション | 補間時に補間前のモーションのスイッチ状態を表示するか、もしくは補間後のモーションのスイッチ状態を表示するかを選びます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　mode ０を指定すると補間前のモーションの スイッチ状態を表示します。 １を指定すると補間後のモーションの スイッチ状態を表示します。 | ver5.0.1.2で追加
E3DSetTexFillUpMode | モーション | 補間時に補間前のモーションのテクスチャアニメの状態を表示するか、もしくは補間後のモーションのテクスチャアニメの状態を表示するかを選びます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　mode ０を指定すると補間前のモーションの テクスチャを表示します。 １を指定すると補間後のモーションの テクスチャを表示します。 |
E3DSetShadowBias | 描画パラメータ | 影をレンダリングする際のZバッファのバイアスを設定します。 一般に大きい値を設定すればマッハバンド（縞模様）が消えます。 具体的な使用例はe3dhsp3_shadow2.hspをご覧ください。 | 1. [IN] 数値または、変数　：　bias Zバッファの誤差を緩和するためのバイアスを指定します。 デフォルト値は0.005です。 | ver5.0.1.6で追加
E3DRenderWithShadow | 描画 | 影付きのシーンを一括レンダリングします。 内部でE3DChkInView、E3DBeginScene、E3DEndSceneも 呼ばれます。 全ての不透明を描画後、半透明が描画されます。 hsidarray（配列）にレンダリングしたいhsidを格納してから呼び出します。 具体的な使用例はe3dhsp3_shadow2.hspをご覧ください。 | 1. [IN] 数値または、変数　：　scid 影付きのシーンをレンダリングするための スワップチェインIDを指定してください。 2. [IN] 数値または、変数　：　rtscid 3. [IN] 数値または、変数　：　rttexid シャドウマップ用のE3DCreateRenderTargetTexture で取得したscidとtexidを指定してください。 4. [IN] 配列変数　：　hsidarray 描画したいhsidを配列に格納してください。 ビルボードを描画したいときはhsidに-1を 格納してください。 5. [IN] 数値または、変数　：　num hsidarrayに何個のhsidを格納したかを指定してください。 6. [IN] 数値または、変数　：　skipflag skipflagに１を指定すると 画面のバッファのクリアと背景の描画を スキップします。 デフォルト値は０． BeginSceneとEndSceneはスキップしません。 E3DBeginScene scid1 前に描画したいものをレンダー E3DEndScene E3DRenderWithShadow (skipflag = 1) E3DBeginScene scid1, 1 後に描画したいものをレンダー E3DEndScene のように描画してください。 | ver5.0.1.6で追加 ver5.0.1.7で引数追加
E3DChkShadowEnable | 描画パラメータ | ハードウェアで影の描画が出来るかどうかを調べます。 | 1. [OUT] 変数　：　flag 影の描画が出来る時は０以外が 出来ないときは０が代入されます。 | ver5.0.1.6で追加
E3DEnableShadow | 描画パラメータ | 影の描画をオンまたはオフにします。 | 1. [IN] 数値または、変数　：　flag １をセットすると影の描画が可能な時は描画するようにします。 ０をセットすると影の描画は行わないようにします。 | ver5.0.1.6で追加
E3DCheckRTFormat | テクスチャ | E3DCreateRenderTargetTextureで作成できるフォーマットを調べます。 具体的な使用例はe3dhsp3_shadow.hspをご覧ください。 | 1. [IN] 数値または、変数　：　fmt 調べたいフォーマットを指定します。 e3dhsp3.asで定義されているD3DFMT_で始まる 定数を使用してください。 2. [OUT] 変数　：　okflag 指定したフォーマットが使用可能な時は０以外が 使用不可な時は０が代入されます。 | ver5.0.1.6で追加
E3DSetShadowDarkness | 描画パラメータ | 影の暗さを設定します。 darknessに指定した係数にAmbientを掛けたものが 影の色となります。 デフォルト値は１．０です。 ０に近づくほど暗くなります。 | 1. [IN] 数値または、変数　：　darkness ０以上の実数。 アンビエントに掛け算して影の色とする。 | ver5.0.1.7で追加
E3DRenderBatch | 描画 | E3DRenderのバッチ版。hsidをまとめて描画することにより高速化。 内部でE3DChkInView、E3DBeginScene、E3DEndSceneも 呼ばれます。 全ての不透明を描画後、半透明が描画されます。 | 1. [IN] 数値または、変数　：　scid スワップチェインIDを指定してください。 2. [IN] 配列変数　：　hsidarray 描画したいhsidを格納した配列。 3. [IN] 数値または、変数　：　num hsidarrayに何個のhsidをセットしたか。 4. [IN] 数値または、変数　：　needchkinview 内部でChkInViewを呼ぶかどうかのフラグ。 5. [IN] 数値または、変数　：　skipflag ０以外をセットすると 画面バッファのクリアと背景の描画をスキップします。 BeginSceneとEndSceneはスキップしません。 デフォルト値は０。 | ver5.0.1.7で追加
E3DSetVertPosBatch | モデル情報 | E3DSetVertPosのバッチ版。まとめて高速化。 あたり判定データの更新はされません。 vertarrayには、 ddim vertarray, vnum, 3 で確保したデータを渡してください。 dimではなくて、ddimで確保してください。 vnumには、点の数を入れてください。 vertarray(点の番号,0) にＸ座標、 vertarray(点の番号,１) にＹ座標、 vertarray(点の番号,２) にＺ座標 を入れて、初期化しておいてください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するID。 2. [IN] 数値または、変数　：　partno パーツを識別するID。 3. [IN] 配列変数　：　vertnoarray 位置を設定したい頂点の番号を配列にセットしてください。 4. [IN] 数値または、変数　：　vnum 何個の頂点の位置を設定するかをセットしてください。 5. [IN] 配列変数　：　vertarray 頂点の座標を実数型の配列にセットしてください。 詳しくは前記をご覧ください。 | ver5.0.1.7で追加
E3DSetShadowMapLightDir | 描画パラメータ | 影用の平行光源の向きを設定します。 | 1. [IN] 数値または、変数　：　dirx 2. [IN] 数値または、変数　：　diry 3. [IN] 数値または、変数　：　dirz 平行光源の向きをベクトル（dirx, diry, dirz）で 指定します。 実数です。 | ver5.0.2.0で追加
E3DRenderBatchMode | 描画 | E3DRenderBatchの拡張版。 hsidごとに不透明のみを描画するか 半透明のみを描画するか 不透明と半透明の両方を描画するかを指定できます。 適切に設定することで描画速度が速くなります。 hsidarrayにはパーティクルのIDを指定することもできます。 パーティクルはmode 2のみ有効です。 パーティクルをhsidarrayに含める場合はこの命令を呼ぶ前に onlyupdate引数を１にしてE3DRenderParticleを呼んでおく必要があります。 | 1. [IN] 数値または、変数　：　scid スワップチェインIDを指定してください。 2. [IN] 配列変数　：　hsidarray 描画したいhsidを格納した配列。 3. [IN] 数値または、変数　：　num hsidarrayに何個のhsidをセットしたか。 4. [IN] 数値または、変数　：　needchkinview 内部でChkInViewを呼ぶかどうかのフラグ。 5. [IN] 数値または、変数　：　skipflag ０以外をセットすると 画面バッファのクリアと背景の描画をスキップします。 BeginSceneとEndSceneはスキップしません。 デフォルト値は０。 6. [IN] 配列変数　：　modearray 描画モードを格納した配列。 hsidarrayと同じ長さの配列。 配列の要素に１を指定すると不透明のみ ２を指定すると半透明のみ ３を指定すると両方を描画します。 | ver5.0.2.1で追加
E3DGlobalToLocal | 算術 | グローバル座標系からキャラクターのローカル座標系への変換。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　srcx 3. [IN] 数値または、変数　：　srcy 4. [IN] 数値または、変数　：　srcz 変換前の座標を指定します。 実数。 5. [OUT] 変数　：　dstx 6. [OUT] 変数　：　dsty 7. [OUT] 変数　：　dstz 変換後の座標が代入されます。 実数型の変数。 | ver5.0.2.1で追加
E3DLocalToGlobal | 算術 | キャラクターのローカル座標系からグローバル座標系への変換。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するＩＤ 2. [IN] 数値または、変数　：　srcx 3. [IN] 数値または、変数　：　srcy 4. [IN] 数値または、変数　：　srcz 変換前の座標を指定します。 実数。 5. [OUT] 変数　：　dstx 6. [OUT] 変数　：　dsty 7. [OUT] 変数　：　dstz 変換後の座標が代入されます。 実数型の変数。 | ver5.0.2.1で追加
E3DSetShadowMapMode | 描画パラメータ | シャドウマップのモードを設定します。 モード０を指定するとLiSPSMの方法で E3DSetShadowMapLightDirを呼び出すだけで自動的に 適切なシャドウマップを作成します。 モード１を指定するとE3DSetShadowMapCameraと E3DSetShadowMapProjOrthoを使用する マニュアル設定のモードになります。 この命令を呼び出さなかった場合は モード０が適用されます。 | 1. [IN] 数値または、変数　：　mode モード（０または１）を指定します。 詳しくは前記をご覧ください。 | ver5.0.2.2で追加
E3DSetShadowMapCamera | 描画パラメータ | シャドウマップを作成する際のカメラの位置を設定します。 影を落とす際のライトの位置と同じ意味です。 | 1. [IN] 実数型配列変数 pos カメラの位置を実数型の配列で指定します。 ddim pos, 3で作成し pos(0)にX座標、pos(1)にY座標、pos(2)にZ座標を 指定します。 2. [IN] 実数型配列変数 target カメラの注視点を実数型の配列で指定します。 ddim target, 3で作成し pos(0)にX座標、pos(1)にY座標、pos(2)にZ座標を 指定します。 3. [IN] 実数型配列変数 upvec カメラの上方向ベクトルを 実数型の配列で指定します。 ddim upvec, 3で作成し pos(0)にX座標、pos(1)にY座標、pos(2)にZ座標を 指定します。 通常は( 0.0, 1.0, 0.0 )を指定します。 | ver5.0.2.2で追加
E3DSetShadowMapProjOrtho | 描画パラメータ | シャドウマップを作成する際のプロジェクションを設定します。 どのくらいの範囲のシーンをシャドウマップにするかが決定されます。 | 1. [IN] 数値または、変数　：　rttexid E3DCreateRenderTargetTextureで作成したシャドウマップ用のテクスチャIDを渡します。 2. [IN] 数値または、変数　：　near 視野内のカメラから一番近い距離を指定します。 あまり小さいとZバッファの精度が悪くなります。 実数。 3. [IN] 数値または、変数　：　far 視野内のカメラから一番遠い距離を指定します。 あまり大きいとZバッファの精度が悪くなります。 実数。 4. [IN] 数値または、変数　：　viewsize 正射影のビューのボリュームサイズを指定します。 実数。 | ver5.0.2.2で追加
E3DSetVertPosBatchAOrder | モデル情報 | E3DSetVertPosのバッチ版。まとめて高速化。 あたり判定データの更新はされません。 E3DSetVertPosBatchとはvertarrayの２次元配列の順番が 異なります。 vertarrayには、 ddim vertarray, 3, vnum で確保したデータを渡してください。 dimではなくて、ddimで確保してください。 vnumには、点の数を入れてください。 vertarray(0, 点の番号) にＸ座標、 vertarray(1, 点の番号) にＹ座標、 vertarray(2, 点の番号) にＺ座標 を入れて、初期化しておいてください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するID。 2. [IN] 数値または、変数　：　partno パーツを識別するID。 3. [IN] 配列変数　：　vertnoarray 位置を設定したい頂点の番号を配列にセットしてください。 4. [IN] 数値または、変数　：　vnum 何個の頂点の位置を設定するかをセットしてください。 5. [IN] 配列変数　：　vertarray 頂点の座標を実数型の配列にセットしてください。 詳しくは前記をご覧ください。 | ver5.0.2.2で追加
E3DLoadTextureFromBuf | テクスチャ | 作成済みのテクスチャにバッファから画像ファイルを読み込みます。 テクスチャの内容を頻繁に更新したいときに この命令を使えばテクスチャの作成と破棄を繰り返さなくても すみます。 ループの外で１回E3DCreateTextureなどでテクスチャを作っておき ループ中でこのE3DLoadTextureFromBufを呼び出すことを想定しています。 | 1. [IN] 変数または、数値　：　texid 作成済みのテクスチャを識別するID 2. [IN] 変数　：　buf バッファの変数 ファイルのイメージがバッファに入っていると 想定します。 3. [IN] 変数または、数値　：　bufleng バッファの中のデータの長さ(バイト) 4. [IN] 変数または、数値　：　transparent 透過情報を指定します。 texidを取得するときのテクスチャ作成命令に 指定したのと同じtransparentを指定してください。 | ver5.0.2.5で追加
E3DLoadSpriteFromBMSCR | スプライト | 作成済みのスプライトにHSPの画像バッファから画像を読み込みます。 スプライトの内容を頻繁に更新したいときに この命令を使えばスプライトの作成と破棄を繰り返さなくても すみます。 この命令に渡すspriteidは E3DCreateSpriteFromBMSCRで作成したスプライトでなければなりません。 他の命令で作成したスプライトIDを渡すとエラーになります。 ループの外で１回E3DCreateSpriteFromBMSCRでスプライトを作っておき ループ中でこのE3DLoadSpriteFromBMSCRを呼び出すことを想定しています。 | 1. [IN] 変数または、数値　：　spriteid E3DCreateSpriteFromBMSCRで作成した スプライトID。 2. [IN] 変数または、数値　：　wid ウインドウID 3. [IN] 変数または、数値　：　transparentflag 透過フラグ。 E3DCreateSpriteFromBMSCR に指定したのと同じ値を指定してください。 （異なるものを渡すとエラーになります。） 4. [IN] 変数または、数値　：　tpR 5. [IN] 変数または、数値　：　tpG 6. [IN] 変数または、数値　：　tpB 透過色。 | ver5.0.2.5で追加
E3DSetShadowMapInterFlag | 描画パラメータ | シャドウマップにパーツを含めるかどうかのフラグを設定します。 シャドウマップモード０用です。 フラグには e3dhsp3.asで定義されているSHADOWIN_*を指定します。 SHADOWIN_PROJのときは パーツの一部分でも視野内に入っている場合には パーツ全体がシャドウマップに含まれるようにします。 キャラクターデータのデフォルト値です。 SHADOWIN_ALWAYSのときは 視野内に入っているかどうかにかかわらず 必ずシャドウマップにパーツ全体が含まれるようにします。 シャドウマップに入るパーツが広い範囲に散らばれば散らばるほど 影の品質は悪くなります。 ですのでシャドウマップに入れるかどうかを動的に判定し、 必要がなくなったら SHADOWIN_PROJやSHADOWIN_NOTに戻すことを推奨します。 SHADOWIN_NOTのときは シャドウマップに入れるかどうかをE3D側で制御しません。 地面などの大きいオブジェクト用のモードです。 地面データのデフォルト値です。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するID。 2. [IN] 数値または、変数　：　partno パーツを識別するID。 3. [IN] 数値または、変数　：　flag SHADOWIN_ではじまる定数を指定します。 詳しくは前記をご覧ください。 | ver5.0.2.7で追加
E3DSetMaterialAlphaTest | マテリアル | マテリアルごとにアルファテストのオンオフを設定できます。 E3DSetMaterialBlendingModeで０、１、２の値をセットしている場合はアルファテストも自動的に設定されるようになっています。 自動設定させたくない場合はblendmode １００、１０１、１０２を使用するか、もしくはE3DSetMaterialBlendingModeの後で E3DSetMaterialAlphaTestを呼び出してください。 アルファテストをオンにした場合は アルファの値が閾値よりも小さい場合に描画されなくなります。 （Zバッファにも描画されなくなります。） | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid 2. [IN] 変数または、数値　：　matno マテリアル番号。 E3DGetMaterialNoByNameで取得した番号、 もしくは RokDeBone2の「面マテリアル」メニューで 表示されている「マテリアル番号」 3. [IN] 変数または、数値　：　alphatest0 不透明を描画時にアルファテストする場合は１を しない場合は０を指定します。 4. [IN] 変数または、数値　：　alphaval0 不透明時のアルファテストのアルファの閾値。 （０から２５５） 5. [IN] 変数または、数値　：　alphatest1 半透明を描画時にアルファテストする場合は１を しない場合は０を指定します。 6. [IN] 変数または、数値　：　alphaval1 半透明時のアルファテストのアルファの閾値。 （０から２５５） | ver5.0.2.9で追加
E3DTransformBillboard | 描画準備 | ビルボードの視野内判定と位置計算とソートを行います。 デフォルト状態のE3DRenderBillboardでは これらの描画準備の計算と描画の処理がいっぺんに行われていました。 そのためあたり判定は描画の後にしなくてはならず、 実際の描画と判定が１フレームずれるという問題がありました。 この問題を解決するためにこの命令を追加しました。 この命令を呼び出したあとビルボードの位置などに変更がない場合は、E3DRenderBillboardのtransskip引数に１を設定します。 そうすることで２度同じ描画準備の計算を行うことを防ぎます。 E3DTransformBillboard あたり判定 E3DRenderBillboard (transskip = 1) のように使ってください。 | 引数なし | ver5.0.2.9で追加
E3DCalcMLMotion | モーション | マルチレイヤーモーションの姿勢情報を計算します。ローカルの姿勢から親子関係を反映した姿勢を計算します。 E3DSetNewPoseMLより後でE3DSetBoneQした場合などに 呼んでください。 （E3DSetNewPoseML内部からも呼ばれています） 使用例としては E3DSetMotionKindML E3DSetNewPoseML E3DGetMotionFrameNo E3DSetBoneQ E3DCalcMLMotion のような順序で呼び出します。 | 1. [IN] 変数または、数値　：　hsid 形状データを識別するid | ver5.0.3.4で追加
E3DCreateSkinMat | ボーン影響 | 影響度の編集結果を表示用データに反映させます。 E3DSetInfElem, E3DDeleteInfElem, E3DNormalizeInfElem, E3DSetSymInfElemなどで影響度を全て編集し終わったら この命令を呼んでください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するID。 2. [IN] 数値または、変数　：　partno パーツを識別するID。 -1を指定すると全てのパーツに対して処理を行います。 | ver5.0.3.7で追加
E3DSetSymInfElem | ボーン影響 | CALCMODE_SYM（対称セット）で頂点のボーン影響度を設定します。 対称軸symaxis引数にはe3dhsp3.asで定義されているSYMAXIS_で始まる定数を使用してください。 SYMAXIS_XはX軸対称 SYMAXIS_YはY軸対称 SYMAXIS_ZはZ軸対称 この命令を呼んだだけでは表示には反映されません。 影響度の編集がすべて終わったら、E3DCreateSkinMatを呼んで表示に反映させてください。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するID。 2. [IN] 数値または、変数　：　partno パーツを識別するID。 -1を指定すると全てのパーツに対して処理を行います。 3. [IN] 数値または、変数　：　vertno 頂点の番号。 -1を指定するとパーツ中のすべての頂点に対して処理を行います。 4. [IN] 数値または、変数　：　symaxis 対称軸をSYMAXIS_で始まる定数で指定します。 5. [IN] 数値または、変数　：　symdist 対称距離。 ぴったり対称な位置からどれくらい離れていても対称とみなすかを指定します。 実数。 | ver5.0.3.7で追加
E3DUpdateSymInfElem | ボーン影響 | CALCMODE_SYM（対称設定）の設定してある頂点の影響度を最新の状態に更新します。 内部でCreateSkinMatも呼ばれます。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するID。 2. [IN] 数値または、変数　：　excludeflag 0を指定すると全てのパーツに対して処理を行います。１を指定するとE3DSetValidFlagで無効にしているパーツは除外して処理を行います。 | ver5.0.3.7で追加
E3DSetJointInitialPos | モデル情報 | ジョイント（ボーン）の初期位置をローカル座標系で設定します。 | 1. [IN] 数値または、変数　：　hsid 形状データを識別するid 2. [IN] 数値または、変数　：　jointno ジョイントを識別するパーツのid 3. [IN] 数値または、変数　：　posx 4. [IN] 数値または、変数　：　posy 5. [IN] 数値または、変数　：　posz ジョイントの位置をローカル座標系で指定します。 実数。 6. [IN] 数値または、変数　：　calcflag 頂点の影響度の再計算をするときは１を、しないときは０を指定します。 7. [IN] 数値または、変数　：　excludeflag calcflagに１を指定したときのみ意味を持ちます。 １を指定するとE3DSetValidFlagで無効にしているパーツの影響度は再計算しません。 ０を指定すると無効にしているパーツも全て再計算の対象になります。 |