Easy3D For HSP3 ver5.0.4.0 (HSP3.2同梱バージョン)
Easy3D（e3dhsp3.dll）は、DirectXで３Ｄゲームを作るためのプラグインです。
DirectX9.0c がインストールされていないと、動きません。

（図はサンプルのe3dhsp3_fight_MOA.hspのスクリーンショット
簡単な格闘ゲームなら投げ技なども入れて３００行程度で作成可能。）

おちゃっこＬＡＢでは、 Easy3Dで使用する３Ｄ形状データ、モーションデータを編集するためのツールRokDeBone2も公開していますので、あわせてご使用ください。
RokDeBone2のバージョンだけが新しい場合、 Easy3Dでの形状やモーションファイルの読み込みで失敗することがあります。 そんなときは、Easy3Dのバージョンも最新のものをダウンロードして使用するようにしてください。 なぜかといいますと、 RokDeBone2がバージョンアップした際には、ファイルのフォーマットが新しくなることがあります。 新しいファイルは古いプログラムで読み込もうとするとエラーになります。 ですので、そういう症状が出た場合は、Easy3Dも最新版をダウンロードしなおして使用してください。 古いファイルは、新しいプログラムでも問題なく読み込めるようにしていくつもりです。
おちゃっこ
http://www5d.biglobe.ne.jp/~ochikko/
スクリプトを組む上で、必要な、関数の説明は、こちらのページです。
Easy3D For HSPの関数の説明
Easy3D For HSPについてのTIPSや最新情報は、
おちゃっこＬＡＢのEasy3D For HSP3公式ページへどうぞ。
（サンプルや関連ツールも公開されています。）
Tips　：　モーションアクセラレータについて
Tips　：　ver2.0.0.1での変更点について
Tips　：　ver3.0.0.1での変更点について
Tips　：　ver4.0.0.1での変更点について
Tips　：　ver5.0.0.1での変更点について
Tips　：　Sig, Qua, Moaファイルの読み込みがエラーになるとき

Tips　：　HSP３．１同梱版からのバージョンアップについて

#### 著作権・ライセンス

本プログラムの著作権は、製作者である"おちゃっこ"にあります。
本プログラムを使用したことによって生じたいかなる損害についても、 著作権保有者はその保障義務を一切負わないものとします。
Easy3Dや、RokDeBone2を使用して作ったデータや作品は、 自由に配布できることにします。 ただし、サンプルなどで使用しているデータには、それぞれ作者さんの著作権があるので注意してください。
Easy3Dを使った自分で作った作品などを配布する場合は、 必須ではありませんがreadme.txtの隅っこにでもおちゃっこＬＡＢの名前を書いておいてもらえると宣伝になるのでうれしいです。 （書かなくてもかまいません。）
あと、これは著作権とは関係ありませんが、何か途中経過でもいいのでおもしろいものが出来たら掲示板などで報告してもらえると、こちらもやる気が出てうれしいです。

/////////////////////////////////////////////////////////
// 更新ログ
ver1.0.0.1
ＨＳＰ３．１β３に対応しました。
ver1.0.0.1（2006/06/09）
サンプルのe3dhsp3_SwapChain.asが、マウス入力により表示がちらつくというご指摘があったので、修正しました。
サンプルの拡張子をhspに変えました。
e3dhsp3.dllは、同じままです。
同じバージョン番号での、マイナーバージョンアップとします。
ver1.0.0.2(2006/07/09)
フォグ（頂点フォグ）が使えるようになりました。
E3DSetLinearFogParams関数の追加。
ver1.0.0.3(2006/07/10)
スプライトやフォント描画時には、フォグが影響しないように、修正しました。
同じファイル(sig, gnd, mqo, im2)を、複数のプログラムで、同時に読もうとしたときに、エラーになるのを修正しました。
ver1.0.0.4(2006/07/10 その２)
dual coreプロセッサで、うまく同期できないことがあるのを修正しました。
ver1.0.0.5(2006/07/10　その３)
E3DRenderの８番目の引数に、transskipを追加。
transskipに１をセットすると、頂点変換処理がスキップされます。
不透明、半透明と、２回、E3DRenderを呼び出す場合は、２回目の呼び出し時に、transskipに１を指定してください。
このフラグを使用することで、e3dhsp3_fight.hspの描画速度は、１．７倍速になりました。
ver1.0.0.6(2006/07/16)
デバッグ
E3DGetBBoxで、partnoに-1を指定すると、エラーになるバグを修正しました。
マニュアルのE3DGetScreenPos2の引数が、間違っていたのを修正しました。
１番目の引数は、scidです。
ver1.0.0.7(2006/07/26)
あたり判定関数の追加
E3DChkConflict3
E3DChkConfBySphere3
判定パーツ番号に、配列を指定できるようにし、複数パーツ同士の当たり判定を、一回の呼び出しで、出来るようにしました。
ver2.0.0.1(2006/08/04)
DirectX9.0cへ対応（ただし、ハードウェア頂点処理は、まだ、封印した状態）
RokDeBone2　ver2.0.0.1のデータに対応。
トゥーン表示に対応
E3DSetShaderTypeに、COL_TOON1を指定すると、トゥーン表示できます。
COL_TOON1でのE3DSetShaderType命令は、割と重い処理なので、初期化時に、１回だけ実行してください。
詳しくは、サンプル、e3dhsp3_toon1.hspをご覧ください。
E3DInitを呼び出さない状態で、E3DByeを呼んでも、エラーにならないように修正。
ver2.0.0.2(2006/08/07)
RokDeBone2で、「色ト」ボタンを押した状態で、保存したsigファイルに対応。
E3DSetMovableAreaThread関数を追加。
E3DSetShaderType で、COL_TOON1を指定して、複数回呼び出すと、メモリリークするバグを修正。
ver2.0.0.3(2006/08/11)
ver2.0.0.3のRokDeBone2のsigファイルに対応。
ver2.0.0.4(2006/08/15)
E3DRenderSpriteに、引数を追加。
traz引数を追加。
奥行き情報を、指定できるようになりました。
ver2.0.0.5(2006/08/21)
半透明のブレンディングモード（アッドモードその２）を、追加。
E3DSetBlendingMode で、モードに２を指定すると、頂点アルファを考慮したアッドモードになります。
E3DCreateSpriteFromBMSCRを追加
HSPの描画画面（E3Dでの描画を除く）と同じ内容のスプライトを作成します。
非表示の画面に対しても、使用できます。
ver2.0.0.6(2006/08/23)
デバッグ
同名ファイルから、複数のスプライトを作成し、そのうちのひとつを、E3DDestroySpriteで破棄すると、
残りのスプライトの描画時に、エラーになるバグ、を修正しました。
ver2.0.0.7(2006/09/21)
E3DGetBoneNoByNameを、エンドジョイントに対しても、呼び出せるようにしました。
マニュアルの微調整
ver2.0.0.1で、エンドジョイントにも、姿勢情報が格納されるようになったので、
エンドジョイントに関する記述を修正。
Visual Studio 2005でビルド。
ver2.0.0.8(2006/09/22)
モデルデータ中で、絶対パスで指定されているテクスチャが、見つからなかった場合は、
モデルデータと同じディレクトリを探して、読み込むようにしました。
ver2.0.0.9(2006/09/25)
E3DCreateBGに引数を追加。
７番目の引数に、フォグの計算に使う、カメラからの距離を指定します。
この引数に、E3DSetLinearFogParamsで指定するendより小さい値を指定すれば、
背景は、フォグの色に染まりながらも、うっすらと見えるように出来ます。
ver2.0.1.0(2006/10/08)
デバッグ
ドライブのルートで、exeを実行すると、E3DInitでエラーになることがあるバグを、修正しました。
ver2.0.1.1(2006/10/17)
デバッグ
E3DCreateSpriteFromBMSCR　で作成したスプライトが、E3DDestroySpriteで削除できないバグを修正しました。
ver2.0.1.2(2007/01/26)
モーションアクセラレータの設定機能の追加。
詳しくは、モーションアクセラレータについてをご覧ください。
E3DLoadMOAFile
E3DSetNewPoseByMOA
E3DGetMotionFrameNo
E3DGetKeyboardCnt
E3DResetKeyboardCnt
の追加。
ver2.0.1.3(2007/01/29)
デバッグ
モーションアクセラレータ使用時に、補間終了後、同じポーズが３つ続くバグを修正。
新ボーンを追加後に、それを無効にして、旧モーションを読むと、モーションがよれるバグを修正。
PingPongモーション処理を修正。
超簡易暗号化関数追加
E3DEncodeBeta
E3DDecodeBeta
ver2.0.1.4(2007/02/01)
デバッグ
E3DCreateSpriteFromBMSCRを複数回呼び出した場合、
複数回E3DestroySpriteを呼んでも、一回分しかメモリが開放されないバグを修正。
E3DestroyBillboardが、必要なビルボードのテクスチャまで、破棄してしまうバグを修正。
ver2.0.1.5(2007/02/03)
デバッグ
MOA（モーションアクセラレータファイル）読み込み時のバグを修正。
ファイルの終端検出処理のバグ。
ファイルの読み込みが終わっていないのに、終わっていると判断し、読み残しをしてしまうバグでした。
ver2.0.1.6(2007/02/09)
デバッグ
モーションアクセラレータのバグ修正
「指定フレームより前で分岐」に、数値を指定したとき、
実際には、指定フレームより後で分岐していたバグ。
ver2.0.1.7(2007/03/13)
デバッグ
メタセコイアで設定した頂点色が反映されないことがあるバグを修正しました。
ver3.0.0.1(2007/04/16)
ver3.0.0.1リリース。
頂点シェーダ２．０、ピクセルシェーダ１．１対応版となりました。
描画速度２から４倍！！
変更点は、ver3.0.0.1での変更点をご覧ください。
ver3.0.0.2(2007/04/17)
一回もE3DSetMotionKindを呼び出さない場合でもエラーにならないようにしました。
１個目のqua読み込み時に、自動的に、E3DSetMotionKindします。
ver3.0.0.3(2007/04/19)
デバッグ
E3DInitの７番目の引数に０を指定したときの振る舞いを修正。
E3DSetUV, E3DGetUV, E3DSetUVTile, E3DSetBillboardUVが機能していなかったのを修正。
ver3.0.0.4(2007/04/20)
デバッグ
トゥーン設定のモデルと、トゥーン以外の設定のモデルを混在させた場合に、
トゥーン以外のモデルが表示されないことがあるバグを修正。
ver3.0.0.5(2007/04/22)
デバッグ
スムージング関係での法線の計算が間違っていたバグを修正。
色にむらが出来たり、角がシャープに表示されなかったりするバグが直りました。
ver3.0.0.6(2007/04/24)
スムージング処理の修正
スムージング処理を、標準的な方法に変えました。
メタセコイアで設定したスムージング角度に忠実に表示します。
新しいスムージング処理は、mqoまたは、ver3.0.0.3以降のRokDeBone2で保存したsigを読み込んだ場合のみ有効になります。
ver3.0.0.7(2007/04/25)
頂点シェーダー１．１でも、ハードウェアで動くようにしました。
頂点シェーダー２．０が使える環境では２．０で、１．１しか使えない環境では１．１で、
頂点シェーダーが無い環境では、ソフトウェアで実行します。
ただし、制限が付きます。
ライト
頂点シェーダー２．０では、平行光源とポイントライトで合計３個までライトを有効に出来ますが、
頂点シェーダー１．１では、平行光源を１個しか有効に出来ません。
ボーン数
頂点シェーダー２．０では、１つのパーツに影響するボーンの総数が４４個を超えると、オーバーヘッドが生じますが、
頂点シェーダ１．１では、１４個を超えるとオーバーヘッドが生じます。
ver3.0.0.8(2007/04/27)
moaファイル読み込み時のモーション遷移（E3DSetNewPoseByMOA）を修正。
補間モーション中にモーション遷移が起こった場合の処理を修正。
より、なめらかになりました。
ver3.0.0.9(2007/05/01)
デバッグ
E3DAddMPが、MPI_SCALEDIVを考慮していなかったのを修正。
E3DSetMPInfoで、スケールを指定しなかったときの処理にバグがあったのを修正。
マニュアルの誤字をいくつか修正。
ver3.0.1.0(2007/05/04)
トゥーン表示(COL_TOON1)に輪郭線を加えました。
マテリアルごとに、輪郭線のオンオフ、色、太さを設定できます。
押し出し反転法で、２パスで描画します。
RokDeBone2 ver3.0.0.8で設定した輪郭データの入ったsigファイルを表示することにより、輪郭線機能が有効になります。
ver3.0.1.1(2007/05/05)
デバッグ
E3DDestroySpriteのバグを修正。
同じファイル名でE3DCreateSpriteを複数回呼び出し、１回だけE3DDestroySpriteを呼び出したときに、
同名の全てのスプライトが削除されてしまうバグ。
トゥーン輪郭線操作関数の追加
E3DEnableToonEdge　　輪郭線のオンオフをします。
E3DSetToonEdge0Color　　輪郭線の色をセットします。
E3DSetToonEdge0Width　　輪郭線の幅をセットします。
E3DGetToonEdge0Color　　輪郭線の色を取得します。
E3DGetToonEdge0Width　　輪郭線の幅を取得します。
ver3.0.1.2(2007/05/06)
デバッグ
テクスチャを貼ったパーツを半透明に出来なくなっていたバグを修正。
ver3.0.1.3(2007/05/07)
デバッグ
im2ファイルの読み込みが、画面に反映されないバグを修正。
E3DSetScaleのcenterflagが０と１のとき、正しく座標変換されないバグを修正。
ver3.0.1.4(2007/05/08)
E3DSetRenderStateのD3DRS_LIGHTINGの設定が描画に反映されるようにしました。
「色P」設定の　sig, ビルボードの場合は、頂点のdiffuse色のみをライティング効果なしで適用します。
「色ト」設定の場合は、暗いところの色を適用します。
ver3.0.1.5(2007/05/10)
パーティクルのサポートを追加しました。
E3DCreateParticle maxnum, texname, width, height, blendmode, particleid
E3DDestroyParticle particleid
E3DSetParticlePos particleid, posx, posy, posz
E3DSetParticleGravity particleid, gravity;
E3DSetParticleLife particleid, life
E3DSetParticleEmitNum particleid, emitnum
E3DSetParticleVel0 particleid, minvelx, minvely, minvelz, maxveclx, maxvely, maxvelz
E3DSetParticleRotation particleid, rotation
E3DSetParticleDiffuse particleid, r, g, b
E3DRenderParticle particleid, fps, scid
サンプル　e3dhsp3_particle.hsp　を追加。
ver3.0.1.6(2007/05/11)
デバッグ
パーティクルの最小速度と最大速度の差が大きいときに、うまく分散して放出されないバグを修正。
差が３００００くらいまで大丈夫です。
パーティクル関数の追加
E3DSetParticleAlpha
E3DSetParticleUVTile の追加。
パーティクルが放出されてからの経過時間範囲ごとに、透明度とUVを設定できます。
サンプル　e3dhsp3_particle2.hsp　を追加。
ver3.0.1.7(2007/05/14)
E3DSetAlpha, E3DSetAlpha2, E3DSetParticleAlphaの高速化。
ビデオメモリへのアクセスがほとんどなくなりました。
負荷は気にしなくていい程度になりました。
E3DSetParticleUVTileの高速化。
tilenoの変更が生じない場合は、処理をスキップするようにしました。
地面に対するE3DSetPosの高速化。
当たり判定の座標系を変更することにより、データ更新が最小限で済むようになりました。
負荷は気にしないでいい程度になりました。
地面の当たり判定の修正
内部での判定時の座標系を変更しました。
ver3.0.1.8(2007/05/16)
デバッグ
ビルボードに対するE3DSetScale呼び出しで、centerflagを１にしたときの動作が間違っていたのを修正。
E3DRenderParticleのfps引数にマイナスの値を指定した場合は、
パーティクルを静止したまま描画するように修正。
E3DInitParticleを追加。
パーティクルの発生状態を初期状態に戻します。
マニュアルの誤記修正
当たり判定の引数説明で、adjustx, adjusty, adjustzとあるべきとろころが、３つともadjustxになっていた部分を修正。
E3DChkConflictはver3.0.0.1から視野外でも機能するのに、機能しないと書いてあったのを修正。
ver3.0.1.9(2007/05/29)
デバッグ
トゥーン設定したモデルデータを表示すると、E3DCreateBGで作成した背景が真っ白になるバグを修正。
ver3.0.2.0(2007/06/24)
モーションアクセラレータのバージョンアップ
共通分岐機能の追加。
補間なしで分岐するオプションを追加。
イベント番号０でアイドリングに戻すオプションを追加。
ファイルフォーマットをver2.0にバージョンアップ。
詳しくは、モーションアクセラレータのページをご覧ください。
関数の追加
E3DPickFace2 (E3DPickFaceに判定パーツを指定できるようにしました)
E3DChkConfWall3 (E3DChkConfWallに判定パーツを指定できるようにしました。)
E3DGetMotionIDByName (モーション名からモーションIDを取得できます)
E3DGetMotionNum (読み込んでいるモーションの数を取得します。)
E3DDot2 (正規化をしない内積計算です)
ver3.0.2.1(2007/07/02)
デバッグ
E3DLookAtQが現在向いている向きの正反対の向きを、向きたい向きとして指定されると、機能しないバグを修正。
あたり判定が、E3DSetScaleの結果を考慮するようにしました。
E3DSetScaleの後のE3DChkInViewでスケールがあたり判定データに反映されます。
！！注意！！
Easy3Dのプラグインを使用すると、HSP3.1の実数計算の精度が３２ビットに落ちます。
（direct3Dの初期化時に、FPUの精度が単精度に設定されるため）
ver3.0.2.2(2007/07/03)
デバッグ
ボーンのないsig読み込み時のあたり判定がE3DSetScaleを考慮していなかったバグを修正。
centerflagに０を指定したE3DSetScaleが、E3DSetPosと併用すると不安定になるバグを修正。
ver3.0.2.3(2007/07/10)
パーティクルとモデルデータのあたり判定関数の追加
E3DChkConfParticle
ver3.0.2.4(2007/07/24)
デバッグ
トゥーンの輪郭線の１つを非表示設定にすると、表示設定の輪郭線の座標が乱れるバグを修正しました。
BMP出力、AVI出力をスワップチェインに対応させました。
E3DWriteDisplay2BMP
E3DCreateAVIFile
E3DWriteData2AVIFile
E3DCompleteAIVFile
にscid引数を追加。
scid引数を省略した場合は、E3DInitで取得されるscidに対して処理を行います。
ver3.0.2.5(2007/07/25)
E3DSaveGNDFileのサポートを終了しました。
地面の高速読み込みは、新しい関数
E3DLoadSigFileAsGround
E3DLoadSigFileAsGroundFromBuf
をお使いください（ver3.0.2.5で追加しました）。
アニメーションする地面のサポートは、もう少し先の話になります。
E3DLoadSigFileAsGroundは、E3DLoadMQOFileAsGroundより何倍も高速ですので、
ゲーム中では、RokDeBone2でmqoをsigに変換したものをE3DLoadSigFileAsGroundで読み込むことを推奨します。
ver3.0.2.6(2007/07/26)
マトリックス計算の高速化をしました。
E3DFillUpMotion, E3DAddMotionが３０％高速化しました。
高速化というか、今までが遅すぎたみたい（汗）
デバッグ
E3DFillUpMotionでstartframeとendframeを同じに設定した場合、モーション全体を補間計算してしまっていたバグを修正しました。
ver3.0.2.7(2007/08/07)
デバッグ
E3DSetSoundVolumeが、リバーブの残響音に対して効いていなかったのを修正。
ステレオサウンドで、リバーブ有りと無しを選択できるようにしました。
E3DInitに引数を追加しました。
デフォルトでリバーブ有りの設定です。
E3DGetCenterPosの追加
パーツの中心のグローバル座標を取得できます。
中心座標はE3DChkInViewで計算されます。
ver3.0.2.8(2007/08/14)
プロジェクション行列を修正しました。
dbg.txtがメモ帳で読みやすいように、改行を\r\nにしました。
モーションアクセラレータの説明を修正しました。
1つのモーションには、１こだけイベント番号を指定すること（２の乗数の値を使うこと）を推奨するように修正しました。
ver3.0.2.9(2007/08/22)
デバッグ
mqoを地面として読み込み、E3DSaveSigFileで保存したときに、不正なsigファイルが出来るバグを修正。
地面としてではなく、RokDeBone2でmqo読み込みしRokDeBone2でsig保存したものは、過去のものも正常です。
引き続きE3DLoadSigFileAsGroundで地面として使用出来ます。
E3DLoadMqoFileAsGroundやE3DImportMQOFileAsGroundで読み込みE3DSaveSigFileしたものは不正データで
救済できません。破棄して、ver3.0.2.9以降のEasy3Dで保存しなおしてください。
E3DLoadSigFileAsGroundが一部のデータタイプに対応できていなかったのを修正。
ver3.0.3.0(2007/08/29)
モーションアクセラレータのイベント番号の増量に対応。
３０個まで
モーションアクセラレータのイベント番号に使用する大きな２の乗数を覚えるのが大変なので、
e3dhsp3.asに、POW2Xという配列を定義しました。
例えば、２の１５乗の値は、POW2X( 15 )　でアクセス出来ます。
E3DSaveMQOFileで両面オブジェクトも出力できるようになりました。
E3DGetFaceNum追加
表示オブジェクトの面の数を取得
E3DGetFaceNormal追加
面の法線を取得
E3DGetReferenceTime追加
ステレオサウンドの再生時間を取得
E3DGetMidiMusicTimeは、MIDIの時間しか取得できませんでしたが、この関数はwavの時間も取得できます。
３Dサウンドには使えません。
E3DGetMidiMusicTimeが四分音符あたり７６８の値なのに対し、この関数の時間は１秒あたり約10,000,000の値です。
ver3.0.3.1(2007/08/30)
E3DCreateParticleにtransparentflag引数を追加
pngファイルなどのアルファ情報の入った画像ファイルが、パーティクルに使えるようになりました。
マニュアルの修正
E3DGetReferenceTimeの説明文で、「読み込み直後のリファレンスタイムを取得しておいて」という部分は間違いで、
正しくは、「再生直後のリファレンスタイムを取得しておいて」でした。
ver3.0.3.2(2007/09/03)
E3DChkConfGround, E3DPickFace, E3DPickVertがE3DSetScaleの結果を反映するようにしました。
ver3.0.3.3(2007/09/06)
デバッグ
E3DLoadSoundで３Dサウンドを指定し、bufnumに２以上の値を指定した場合でも、
パラメータによっては、重ねて音が再生されないことがあるバグを修正しました。
ただし、ループ設定の３Dサウンドは、同じ音を重ねて再生できなくなりました。
ver3.0.3.4(2007/09/17)
デバッグ
モーションアクセラレータ再生で、補間モーション終了後の１フレーム分、フレーム番号だけ進み、ポーズが更新されないバグを修正。
E3DSetDiffuse, E3DSetAmbient, E3DSetSpecular, E3DSetEmissive, E3DSetSpecularPower
のsetflagが機能していなかったバグを修正。
E3DCreateTextureで作ったテクスチャを貼ったモデルをE3DSaveMQOFileすると、
テクスチャ名がフルパスになった上に、拡張子の後ろに_TEXIDという文字が入る不具合を修正。
E3DByeの後にE3DInitを呼び出した場合、フォグとプロジェクションのパラメータが初期化されていないバグを修正。
E3DChkInViewを呼び出した直後のstatシステム変数で、モデルーデータが視野内にあるかどうかを取得できるようにしました。
statが０のときは、１つも視野内にパーツがなく、statが１のときは、少なくとも１つは視野内にパーツがあることを示します。
E3DGetBonePosのposkindの種類を増やしました。
poskindに２を指定すると、ローカル座標（ボーン変形あり）の座標が取得できます。
ver3.0.3.4マイナーバージョンアップ(2007/09/18)
マニュアルを微調整して、こっそり同じバージョンでアップしなおしました。
E3DCreateTexture, E3DRasterScrollTexture, E3DChkInView, E3DSetSpecularPower, E3DGetBBoxの説明を修正。
ver3.0.3.4マイナーバージョンアップ(2007/10/15)
瀬戸晴生さんhttp://ctime.cool.ne.jp/haruo/が作ってくださった新しいヘルププログラム「Easy3DFunctions.exe」を
「マニュアル」フォルダに入れました。
（旧ヘルププログラムは削除しました。）
ver3.0.3.4マイナーバージョンアップ(2007/11/04)
瀬戸晴生さんhttp://ctime.cool.ne.jp/haruo/が作ってくださった新しいヘルププログラム「Easy3DFunctions.exe」が
バージョンアップしました。
「マニュアル」フォルダに入っています。
ver3.0.3.5(2007/11/09)
デバッグ
ボーンの入ったsigを読み込み、モーションを読み込まない状態でE3DGetFaceNormalを呼ぶとエラー終了するバグを修正。
ver3.0.3.6(2008/01/07)
関数表を修正。
E3DCreateEmptyMotion命令を追加。
デバッグ
E3DLookAtQが、ある条件下で不正な値をクォータニオンに書き込むことがあるバグを修正。
アンチエイリアスを有効にした状態で、E3DCreateSwapChainを呼び出すとエラー終了するバグを修正。
ver3.0.3.7(2008/01/12)
E3DSetTextureMinMagFilter命令を追加。
テクスチャーを拡大縮小表示する際のフィルターを指定できます。
３Dモデル、背景、スプライト、ビルボードに指定できます。
例えば、テクスチャがぼやけるのが嫌な場合は、D3DTEXF_POINTフィルターを指定します。
ver4.0.0.1(2008/04/02)
RokDeBone2 ver4.0.0.1のデータに対応。
マテリアル関係の命令を追加
E3DGetMaterialNoByName
E3DGetMaterialAlpha
E3DGetMaterialDiffuse
E3DGetMaterialSpecular
E3DGetMaterialAmbient
E3DGetMaterialEmissive
E3DGetMaterialPower
E3DGetMaterialBlendingMode
E3DSetMaterialAlpha
E3DSetMaterialDiffuse
E3DSetMaterialSpecular
E3DSetMaterialAmbient
E3DSetMaterialEmissive
E3DSetMaterialPower
E3DSetMaterialBlendingMode
E3DGetTextureFromMaterial
E3DSetTextureToMaterial
マテリアル方式の導入につき、古い命令を修正
E3DSetAlpha, E3DSetAlpha2, E3DSetBlendingMode, E3DGetTextureFromDispObj, E3DSetTextureToDispObjの修正。
これらの命令は、パーツの先頭の面が参照しているマテリアルに対して操作を行うように修正しました。
ビルボードはマテリアル方式ではありません。
ビルボードに対する操作はいままでの古い命令を使ってください。
E3DCreateParticleに引数追加
８番目の引数に１を指定すると、Zバッファの内容にかかわらず、常に描画されるようになります。
E3DDestroyAllMotionが機能していなかったのを修正。
パーティクルがfpsに-1を指定したときにもカメラの向きを向くように修正。
E3DGetMaxMultiSampleNumがエラーになることがあるバグを修正。
e3dhsp3_fight.hspサンプルがact1の後に動きが固まるバグを修正。（サンプルの修正）
ver4.0.0.2(2008/04/03)
デバッグ
E3DSetTextureToMaterialで透過モードの異なるテクスチャを貼ると表示されなくなることがあるバグを修正。
１つのパーツの中で複数のテクスチャの貼り方（UV指定とZ軸投影など）を組み合わせたモデルの
表示がおかしくなることがあるバグを修正。
ver4.0.0.3(2008/04/04)
不透明オブジェクト描画時にもアルファテストをするように変更しました。
中間のアルファは出せませんが、色抜きに使用できます。
pngなどのファイルで色を抜きたいところをアルファ０にすれば、半透明設定をしないでもその部分が透過されます。
ver4.0.0.4(2008/04/07)
少し最適化しました。
(自分の環境では）ver4.0.0.1以降、１０％近く描画が遅くなっていましたが、
今回の修正でver3.0.3.7とほぼ同じ速さで描画できるようになりました。
ver4.0.0.5(2008/04/07 その２)
デバッグ
ラインを描画した後にテキストを描画するとテキストが矩形に塗りつぶされてしまうバグを修正。
ver4.0.0.6(2008/04/15)
マルチレイヤーモーションを実装しました。
ボーンごとに異なるモーションを自由なタイミングで再生できます。
moa非対応版
E3DSetMotionKindML
E3DSetMotionFrameNoML
E3DSetNextMotionFrameNoML
moa対応版
E3DSetMOAEventNoML
共通
E3DSetNewPoseML
E3DGetMotionFrameNoML
E3DGetNextMotionFrameNoML
マルチレイヤーモーションのサンプルを追加しました。
e3dhsp3_MultiLayerMotion.hsp
e3dhsp3_MultiLayerMotion_MOA.hsp
マテリアル番号取得命令追加
E3DGetMaterialNo
デバッグ
ビルボードをアッドモードで描画したのち、スプライトを描画すると、
その後のsigモデルの半透明部分がアッドモードで描画されてしまうバグを修正。
修正しましたが、スプライトの描画は一番最後にしないと、直したバージョンでも不具合が出ますので注意してください。
ver4.0.0.7(2008/04/16)
デバッグ
ver4.0.0.1以降のRokDeBone2でmikoto形式から作ったsigファイルを読み込もうとするとエラーになるバグを修正。
ver4.0.0.8(2008/05/06)
バンプマップに対応しました。
設定方法はRokDeBone2の説明をお読みください。
E3DGetCurrentBonePos、E3DGetCurrentBoneQの追加。
マルチレイヤーモーションを使用する場合は、E3DSetNewPoseMLを呼ぶまで、各ボーンの位置と姿勢は確定しません。
そのため、E3DGetBonePos, E3DGetBoneQは使えなくなります。
マルチレイヤーモーションを使用する場合は、このE3DGetCurrentBonePos, E3DGetCurrentBoneQをお使いください。
E3DRenderParticleに引数を追加
onlyupdate引数を追加しました。
これに１を指定すると、パーティクルの状態アップデートだけを行い、描画を行いません。
この引数を省略した場合は、従来通り描画も行われます。
ver4.0.0.9(2008/05/07)
バンプマップのテクスチャのアドレッシングモードを変更。
ver4.0.1.0(2008/05/08)
バンプマップの表示方法を変更しました。
デコボコ表示とテクスチャ表示を２パスでアルファブレンドする方法にしました。
ver4.0.0.9のバンプで黒いポリゴンが表示されていた方は直っていると思います。
ver4.0.1.1(2008/05/09)
バンプマップ処理の変更。
また１パスに戻しました。
頂点シェーダーにミスが見つかったので直しました。
ver4.0.1.2(2008/05/10)
デバッグ
バンプマップの表示が乱れるバグを修正しました。
ver4.0.1.3(2008/05/10 その２)
デバッグ
バンプのdiffuseの影の付き方が逆になっていたバグを修正しました。
ver4.0.1.4(2008/05/13)
命令の追加。
E3DChkBumpMapEnable flag
ハードウェアがバンプマップ表示可能かを調べます。
E3DEnableBumpMap flag
バンプマップを表示するかどうかを設定します。
E3DConvHeight2NormalMap hmapname, nmapname, hparam
白黒の高さ画像データを法線マップデータに変換します。
E3DSetBumpMapToMaterial hsid, matno, texid
E3DCreateTextureで作成したテクスチャをバンプマップに設定します。
ver4.0.1.5(2008/05/21)
デバッグ
マルチレイヤーモーションの各命令で、listの先頭要素しか有効になっていなかったバグを修正しました。
マルチレイヤーモーションの補間計算の無駄を省いて少し高速化しました。
ver4.0.1.6(2008/05/22)
モーション読み込み命令に、移動成分の倍率引数を追加。
E3DAddMotion
E3DAddMotionFromBuf
E3DLoadMOAFile
に引数を追加。
ver4.0.1.7(2008/05/25)
ver4.0.1.7のRokDeBone2のファイルに対応しました。
ver4.0.1.8(2008/05/26)
デバッグ
オブジェクトの最後のポリゴンにだけ別の材質が設定されている場合に読み込みエラーになるバグを修正。
地面データとしてmikoto形式データを読み込めるようにしました。
E3DLoadMQOFileAsGroundにbonetype引数を追加。
（ボーン変形した地面とのあたり判定命令は、まだサポートしていません。）
ver4.0.1.9(2008/06/02)
RokDeBone2 ver4.0.1.9の新しいquaファイルに対応。
(2008/06/12)
マニュアルにTips　：　マルチレイヤーモーションとは？を追加しました。
ver4.0.2.0(2008/06/17)
デバッグ
モデルデータによっては、アルファテストがうまく行われないことがあるバグを修正。
ver4.0.2.1(2008/06/27)
デバッグ
E3DGetSamePosVertのsamenumに値が代入されていなかったバグを修正しました。
ver4.0.2.2(2008/07/12)
デバッグ
E3DSetMOAEventNoMLを複数回呼び出すと、呼び出すたびにフレーム番号が１ずつずれるバグを修正しました。
ver4.0.2.3(2008/07/20)
キーフレームによるテクスチャアニメ再生機能を追加しました。
RokDeBone2 ver4.0.2.6のquaファイルに対応。
ver4.0.2.4(2008/07/23)
MOAの情報取得と設定用の命令を追加。
E3DGetMOATrunkInfo
E3DGetMOABranchInfo
E3DSetMOABranchFrame1
E3DSetMOABranchFrame2
モーション変化する際の分岐元フレーム番号と分岐先フレーム番号をHSP側から動的に設定できるようになりました。
ver5.0.0.1(2008/08/31)
ver5.0.0.1での変更点をご覧ください。
RokDeBone2　ver5.0.0.1　の各ファイルに対応。
命令の追加
ディスプレイスイッチの設定
E3DSetDispSwitch2
オイラー角の取得
E3DQtoEuler
色P時にも輪郭表示を可能にしました。
E3DEnablePhongEdge
E3DSetPhongEdge0Params
ver5.0.0.2(2008/09/10)
デバッグ
VistaでEasy3Dを使ったソフトを実行中に他のソフトをアクティブにすると、Easy3Dのソフトが応答なしになるバグを修正。
E3DWaitByFPSを修正しました。
ver5.0.0.3(2008/09/14)
E3DSetPhongEdge0Paramsの拡張
色P時の輪郭線を半透明で表示できるようになりました。
半透明モードは４種類から選びます。
ver5.0.0.4(2008/09/15)
デバッグ
E3DDestroyHandlerSetを呼ぶと、必要な（使用中の）テクスチャまでが削除されてしまうことがあるバグを修正。
テクスチャの破棄処理がver4以降のマテリアル構造に対応していなかったのが原因でした。
E3DGetVertPosの拡張
頂点のグローバル座標が取得できるようになりました。
ver5.0.0.5(2008/09/15 その２)
デバッグ
E3DDestroyHandlerSetを呼ぶと必要なバンプマップテクスチャが削除されてしまうことがあるバグを修正。
ver5.0.0.6(2008/09/18)
E3DGetDispSwitch2を追加。
新しいディスプレイスイッチに対応。
古いE3DGetDispSwitchは機能しません。
ver5.0.0.7(2008/09/23)
スレッド系命令の整備
テクスチャのディレクトリ
今まではスレッド命令で参照するテクスチャはすべて１か所にないと読み込めませんでしたが
これからはsig, mqoごとに異なるディレクトリにデータが入っていてもテクスチャが読み込めるようになりました。
呼び出し回数制限緩和
今までは総呼び出し回数が４０９８回という制限がありましたが
これからはE3DFreeThreadという命令を実行が終わったスレッドに対して呼び出すことで
実質的に何回でも呼び出せるようになります。
ただし一度にアクティブにできるスレッド命令の数は４０９８個のままです。
E3DFreeThread命令でデータ領域の使い回しが可能になり、またスレッドリソースの解放を行えるようになりました。
新命令追加
E3DFreeThread
E3DLoadSigFileAsGroundThread
E3DLoadSigFileAsGroundFromBufThread
ver5.0.0.8(2008/10/02)
最適化しました
シェーダーの定数周りの処理を最適化しました。
少し高速化出来ました。
バンプマップに点光源を適用できるようにしました。
E3DSetLightIdOfBumpMap でバンプマップを照光するライトを１つだけ選択できるようにしました。
（シェーダー２．０があるマシンでは、色P時（バンプ以外）には３つまでライトを適用できます。）
スプライトのUVを設定できるようにしました。
１枚の画像でもUVを変えることでさまざまな模様を表示できるようになります。
E3DSetSpriteUV命令で設定します。
スプライトUVのサンプルを追加しました。
e3dhsp3_SpriteUV.hspを新規作成しました。
(2008/10/03)
e3dhsp3_SpriteUV.hspの修正。
スプライト描画時のscalex, scaleyを実数にしました。
ver5.0.0.9(2008/10/18)
テクスチャへのレンダリングに対応しました。
テクスチャへのレンダリングはE3DCreateRenderTargetTextureで作成したテクスチャでのみ可能です。
E3DCreateRenderTargetTextureが成功するとスワップチェインIDとテクスチャIDが取得できます。
スワップチェインIDで描画を行い、テクスチャIDでマテリアルへの貼り付けを行います。
（内部データの種類的には厳密にはスワップチェインではないのですが、
Easy3Dの既存の機能を流用するためにスワップチェインの一種として分類しました。）
車のバックミラーや疑似的なTV画面などに使えると思います。
命令の追加
E3DCreateRenderTargetTexture
E3DDestroyRenderTargetTexture
鏡面として応用したサンプル　e3dhsp3_RenderTargetTexture.hsp　を作りました。
ver5.0.1.0(2008/10/28)
デバッグ
MOAの補間がディスプレイスイッチアニメを考慮していなかったのを修正しました。
補間モーションの最初のフレームに、変化前のモーションのスイッチの状態がセットされるようにしました。
ver5.0.1.1(2008/10/31)
デバッグ
補間モーション再生中にまた新たな補間モーションに変化する場合に、
ディスプレイスイッチの情報がうまく引き継げないバグを修正しました。
ver5.0.1.2(2008/10/31 その２)
E3DSetDSFillUpMode命令の追加。
補間時に補間前のモーションのスイッチ状態を表示するか
もしくは補間後のモーションのスイッチ状態を表示するかを選びます。
キーフレームが１つもないスイッチアニメの補間時にモーションがおかしくなる不具合を修正。
ver5.0.1.3(2008/11/01)
MOAのモーションの補間時にテクスチャアニメも考慮するようにしました。
E3DSetTexFillUpMode命令の追加。
補間時に補間前のモーションのテクスチャを表示するか
もしくは補間後のモーションのテクスチャを表示するかを選びます。
ver5.0.1.4(2008/11/02)
E3DCameraDirRight, E3DCameraDirLeftの修正。
左右にカメラを振っていると突然全く動かなくなることがあるのを修正。
たぶん直ったと思いますが、まだ不具合が出るようでしたら連絡ください。
ver5.0.1.5(2008/11/05)
デバッグ
E3DSetLightIdOfBumpMapが正常に動作していなかったのを修正。
ver5.0.1.6(2008/11/16)
影表示機能の追加。
深度バッファ法で影の描画が出来るようになりました。
新命令
E3DSetShadowMapCamera
E3DSetShadowMapProjOrtho
E3DRenderWithShadow
E3DSetShadowBias
E3DCheckRTFormat
E3DChkShadowEnable
E3DEnableShadow
影表示のサンプルの追加
e3dhsp3_shadow.hsp
E3DCreateRenderTargetTextureに引数追加。
フォーマットを指定できるようにしました。
マニュアルに影付きレンダリングの仕方を追加。
ver5.0.1.7(2008/11/19)
ビデオカードによってはビルボードの影が四角くなってしまうのを修正。
e3dhsp3_shadow.hspのD3DFMT_R32FをD3DFMT_A16B16G16R16Fに変更しました。
影付きレンダリングの仕方に追記しました。
影の暗さを設定できるようにしました。
E3DSetShadowDarkness
E3DRenderWithShadowにskipflag引数を追加しました。
画面バッファのクリアと背景の描画をスキップできます。
hsidをまとめて描画できる命令を追加しました（影なし）
E3DRenderBatch
２０体のキャラクターでテストしたところ１０％程度高速化しました。
頂点座標をまとめてセットできる命令を追加しました。
E3DSetVertPosBatch
ver5.0.1.9(2008/11/22)
デバッグ
シャドウマップ描画時の視野内判定のプロジェクション行列が間違っていたのを修正しました。
シャドウマップの視野内に入っているのに影が落ちない不具合が直りました。
ver5.0.2.0(2008/11/24)
影の表示にLiSPSMを導入しました。
影用のカメラの位置やプロジェクションをユーザーさんが設定しなくても自動的に適切なシャドウマップが作成されます。
地面以外の視野内オブジェクトが必ずシャドウマップに含まれるように自動的に設定されます。（パーツ数合計１０００個まで）
影のサンプルを新しくしました（e3dhsp3_shadow2.hsp）
新命令追加
E3DSetShadowMapLightDir
以下の命令は無効になりました（何もしないでリターンします）
E3DSetShadowMapCamera
E3DSetShadowMapProjOrtho
影付きレンダリングの仕方を書き直しました。
ver5.0.2.1(2008/11/28)
hsidの個数に制限を設けました。
同時にアクティブにできるhsidの個数は１０００個までです。
内部オブジェクトの検索が速くなりました。
１０００個のsigを表示したときのFPS　変更前２４FPS-->変更後３９FPS
１００個くらいだとあまり効果がありません。
E3DRenderBatchModeの追加。
不透明のみ描画するか半透明のみ描画するか両方描画するかをhsidごとに指定できます。
１０００個のsigで計測時、１０％ほど高速化。
E3DGlobalToLocal, E3DLocalToGlobalの追加。
グローバル座標系とキャラクターのローカル座標系の座標値を変換する命令です。
動く乗物に乗ったり降りたりするときに便利です。
ver5.0.2.2(2008/11/29)
デバッグ
Lineが表示されないバグを修正。
E3DSetVertPosBatchAOrderを追加。
２次元配列の順番を変えたバージョンです。
E3DSetShadowMapModeを追加。
モード１を指定するとver5.0.2.0以前の手動によるシャドウマップの作成が出来ます。
モード０はLiSPSMの自動設定です。
３Dサウンドのサンプルから周波数設定部分を取り除きました。
リバーブ有効時はエラーになるため。
ver5.0.2.3(2008/11/30)
デバッグ
カメラ命令の呼び方によってはバンプモデルがキー入力やマウス移動に合わせてちらつくバグを修正。
ver5.0.2.4(2008/12/01)
デバッグ
一度でも描画を行うと、その後のデータロードが待機状態になり終了しなくなるバグを修正。
同期オブジェクト（クリティカルセクション）の解放し忘れが原因でした。
ver5.0.2.1からのバグです。
ver5.0.2.5(2008/12/02)
命令の追加
E3DLoadTextureFromBuf
作成済みのテクスチャにバッファから画像を読み込む。
E3DLoadSpriteFromBMSCR
作成済みのスプライトにHSPバッファから画像を読み込む。
両方とも既存のテクスチャやスプライトに対する処理なので
頻繁に内容を更新したいときに作成と破棄の必要がなく
メモリ周りの心配も軽減されます。
ver5.0.2.6(2008/12/10)
トゥーンでも影表示できるように拡張しました。
COL_TOON1, COL_TOON0の両方に対応しました。
デバッグ
E3DDestroyHandlerSetでテクスチャが破棄されなくなっていたバグを修正。
ver5.0.2.1からのバグでした。
ver5.0.2.7(2008/12/17)
E3DSetShadowMapInterFlagを追加。
パーツをシャドウマップに含めるかどうかを制御するフラグを設定出来ます。
デバッグ
E3DLoadSpriteFromBMSCRでtransparentが２のときの透過色指定が有効になっていなかったのを修正。
マニュアル追記
E3DLoadTextureFromBufはテクスチャ作成命令で指定したのと同じtransparentを指定しないとエラーになること、
E3DLoadSpriteFromBMSCRはE3DCreateSpriteFromBMSCRで指定したのと同じtransparentを指定しないとエラーになること
を追記しました。
ver5.0.2.8(2008/12/29)
RokDeBone2 ver5.0.2.9の新しいsigファイルに対応。
ver5.0.2.9(2009/01/07)
RokDeBone2 ver5.0.3.0のアルファテストに対応したsigファイルに対応。
E3DSetMaterialAlphaTest追加。
マテリアルごとに不透明描画時と半透明描画時のアルファテストを設定できます。
E3DGetScreenPos, E3DGetScreenPos3, E3DGetBBoxがビルボードで機能していなかったのを修正。
E3DTransformBillboardを追加。E3DRenderBillboardにtransskip引数を追加。
デフォルト状態のE3DRenderBillboardでは描画準備の計算と描画の処理がいっぺんに行われていました。
そのためあたり判定は描画の後にしなくてはならず、実際の描画と判定が１フレームずれるという問題がありました。
この問題を解決するためにE3DTransformBillboardを追加しました。
この命令は視野内判定と位置計算とソートを行います。
この命令を呼び出したあとビルボードの位置などに変更がない場合は、E3DRenderBillboardのtransskip引数に１を設定します。
そうすることで２度同じ描画準備の計算を行うことを防ぎます。
つまり、E3DTransformBilboard ---> あたり判定 ---> E3DRenderBillboard (transskip = 1)　のようにして使います。
ver5.0.3.0(2009/01/11)
hsidに対する回転、移動の命令をパーティクルにも使用できるようにしました。
hsidの代わりにパーティクルIDを命令に渡します。
例えばE3DSetPos ptlid, posx, posy, poszとするとパーティクル全体が（posx, posy, posz）だけ移動します。
ver5.0.3.1(2009/01/23)
E3DRenderBatch使用時にライン表示がカメラなどのパラメータを反映していなかったバグを修正。
ver5.0.3.2(2009/01/29)
E3DSaveMQOFileでテクスチャ名からパスを取り除く処理をやめました。
sig, mqoに記述されているのと同じ文字列を出力します。
ver5.0.3.3(2009/03/03)
デバッグ
E3DIKTranslateの内部の座標系が一部間違っており、繰り返し呼び出すと正しく動作しないバグを修正。
ver5.0.3.3(2009/03/15)
サンプルの追加。
e3dhsp3_fight_MOA.hspを追加しました。
MOAを使った格ゲーサンプルです。
モデルデータはISAOさんのpooちゃん。
dllはそのまま。バージョン番号もver5.0.3.3のまま。
ver5.0.3.4(2009/03/20)
E3DCalcMLMotion命令の追加。
マルチレイヤーモーション用の命令。
ローカルの姿勢から親子関係を反映した姿勢を計算します。
この命令はE3DSetNewPoseML内部からも呼ばれています。
E3DSetNewPoseMLより後でE3DSetBoneQした場合などに、この命令を呼んでください。
ver5.0.3.5(2009/03/28)
RokDeBone2 ver5.0.3.3のsigファイルに対応。
ver5.0.3.6(2009/03/29)
デバッグ
E3DRenderBatchModeのhsidarrayにパーティクルのIDを指定した際
パーティクルより後の半透明オブジェクトが不透明で描画されてしまうバグを修正。
関数表のE3DRenderBatchModeの項に追記。
ver5.0.3.7(2009/04/01)
影響度の設定関数を追加。
E3DCreateSkinMat　影響度の設定を表示データに反映させる。
E3DSetSymInfElem　軸対称の影響度を頂点にセットする。
E3DUpdateSymInfElem　軸対称設定の頂点の影響度を最新に更新する。
E3DSetInfElem, E3DDeleteInfElem, E3DNormalizeInfElemのマニュアルに追記。
E3DCreateSkinMatを呼ばないと表示に反映されないことを追記。
ver5.0.3.8(2009/04/12)
デバイスロスト時の処理を修正しました。
E3DSaveQuaFileとE3DSaveQua2Buf命令に引数を追加。
quatype引数で、番号基準のフォーマットか名前基準のフォーマットかを指定するようになりました。
RokDeBone2 ver5.0.3.4のquaファイルに対応。
ver5.0.3.8(2009/04/13 その２)
マニュアルにSig, Qua, Moaファイルの読み込みがエラーになるときを追加しました。
プログラムはそのまま。
ver5.0.3.9(2009/04/16)
デバイスロストの処理を修正。
ビルボード、スプライト、フォント、D3DPOOL_DEFAULTのテクスチャなどの処理を修正しました。
これでXP,VistaともCtrl + Alt + Delしても落ちたり固まらなくなりました。
ver5.0.4.0(2009/04/20)
デバイスロストが起こるとBG（背景）のUV座標が初期化されてしまう不具合を修正しました。
E3DSetJointInitialPosを追加。