Easy3D For HSP3 HSP2.61版からの変更点


HSP2.61版から変わった点は、
1,実数対応になった。
2,スワップチェインが使えるようになった。
の主に2点です。

まずは、1の実数対応について。
HSP3からは、数値に整数だけでなく、実数が使えるようになりました。
これで、小数点が混じった値も、少ない誤差で、使用できることになります。

Easy3D For HSP3では、
座標値、ベクトル(法線など)、角度、影響度、UV値などを実数型の引数に変更しました。
これにより、いままで、実際の値の10000倍とか100倍とかの整数で使用してきた引数が、
誤差の少ない実数に変更になりました。



次にスワップチェインについて。
スワップチェインとは、複数の画面に3D描画を行うための機構です。
この機能を使うと、2つ以上のウインドウに、3D描画を行ったり、
1つのウインドウ内に、複数のボタンを配置し、その上にそれぞれ、3D描画を行ったりが出来るようになります。

Easy3D For HSPでは、scidというスワップチェインを識別するためのIDが追加されました。
このIDは、E3DInitや、E3DCreateSwapChainで取得できるもので、
どこの画面に描画するのか、ということを、プログラムに知らせるために使います。
画面を識別するための番号、と覚えておいてください。

実際の使い方については、関数表のE3DCreateSwapChainの説明と、サンプルe3dhsp3_SwapChain.asをご覧ください。


その他の変更
stat変数への出力をやめて、
明示的に、変数で、値を受け取るようになりました。


実数対応で、注意するべき点
実数に対応したことで、注意する点があります。
配列変数でなければ、型を整数にしたり、実数にしたりは、かなり自由度が高いですが、
配列を使用する場合には、注意してください。

実数を格納するための配列は、dimではなくて、ddimで作成します。
下の関数表で、「実数型の変数」と書いてある引数に、dimで確保したメモリを渡すと、エラーとなります。
実数型の配列は、必ず、ddimで作成してください。


バッファからの読み込み関数について。
Easy3Dには、バッファからモデルデータやモーションなどを読み込む関数があります。
これらの関数に渡すbuf引数には、多次元配列を渡さないでください。
sdim buf, SIZE
のように作成したメモリを渡してください。



最後に、HSP2.61版から、引数が増えたり減ったりした関数と
引数の倍率が変わった関数を、羅列しておきます。

E3DInit
  関数タイプ変更
  COM初期化をなしに
  第一引数にwid、第2引数にobjid追加
  最後の引数に、scidを追加

E3DSigLoad
  mult100 --> mult 100倍をやめる。

E3DRender
  scid追加

E3DPresent
  scid追加

E3DCreateBG
  scid追加
  uanim, vaminを実数に。

E3DSetBGU, E3DSetBGV
  scid追加
  startu10000, endu10000を実数に。

E3DDestroyBG
  scid追加

E3DBeginScene
  scid追加

E3DSetNewPose, E3DSetNewPause
  frameno引数追加。
  stat出力止め

E3DChkConflict, E3DChkConflict2
  inviewflag追加
  stat出力止め

E3DSetAlpha2
  mult引数削除
  alphavalを実数に。

E3DSetPos
  posx, posy, poszを実数に。

E3DChkInView
  scid引数追加


E3DRotateX, E3DRotateY, E3DRotateZ
  mult引数削除
  角度を実数に

E3DCloseTo
  movestep追加

E3DCos, E3DSin, E3DACos, E3DDot, E3DCross, E3DAtan, E3DAtan2, E3DSqrt
  mult, degmult引数削除
  実数対応

E3DWaitByFPS
  retfps引数追加
  stat出力止め

E3DRenderSprite
  scalex, scaley は100倍の値ではなく、実倍率の実数

E3DSetSpriteRotation
  mult引数削除
  degを実数に

E3DChkConfBillboard2, E3DChkConfBillboard
  confrate100 --> 100倍でなく実倍率の実数

E3DChkConfGround
  nx10000, ny10000, nz10000の1万倍をやめる。実倍率。

E3DGetVertPos, E3DSetVertPos
  mult引数削除。位置を実数に。

E3DRenderBillboard
  scid引数追加

E3DLoadMQOFileAsGround
  mult100の100倍をやめ、実倍率の実数

E3DChkConfWall, E3DChkConfWall2
  nx10000, ny10000, nz10000の1万倍をやめ、実倍率の実数。

E3DVec3Normalize
  mult引数廃止。

E3DVec3RotateY
  degmult引数廃止。

E3DSetSoundTempo
  tempo100をtempoに。

E3DSet3DSoundListener
  doppler100, rolloff100の100倍を止め。

E3DSet3DSoundDistance
  min100, max100の100倍を止める。

E3DControlByNaviLine
  dirstep100の100倍をやめ。
  newqx10000, newqy10000, newqz10000の10000倍をやめ。

E3DSetDirQ, E3DGetDirQ
  qx10000, qy10000, qz10000, qw10000の10000倍をやめる。


E3DSetScale
  mult引数廃止


E3DGetScreenPos, E3DGetScreenPos2
  scid追加

E3DSetQAxisAndDeg
  degmult引数廃止。

E3DGetQAxisAndDeg
  取得される数は、10000倍ではなくて、実倍率の実数。

E3DRotateQX, E3DRotateQY, E3DRotateQZ
  mult引数廃止。

E3DTwistQ
  degmult引数廃止

E3DGetTwistQ
  twist10000の10000倍をやめる。

E3DRotateQLocalX, E3DRotateQLocalY, E3DRotateQLocalZ
  degmult引数廃止。

E3DCreateLine
  posptr 座標が実数になったので、配列作成時は、dimではなくて、ddimで作成しないとエラー

E3DDrawTextByFontID, E3DDrawTextByFontIDWithCnt, E3DDrawTextByFontIDWithCnt2
  表示文字数を、4096バイトまでに制限
  scid引数追加。

E3DGetCharacterNum
  4096バイトの文字列まで対応。

E3DSlerpQ, E3DSquadQ
  tdiv引数廃止

E3DSplineVec
  位置を実数に。ddimで確保した変数でないとエラー。
  tdiv引数廃止。

E3DPickVert
  scid引数追加

E3DSetIM2Params, E3DGetIM2Params
  関数廃止
  InfElemをお使いください。

E3DSigImport, E3DSigLoadFromBuf
  mult100の100倍をやめ。

E3DChkConfLineAndFace
  nx, ny, nzの10000倍をやめる。

E3DRdtscStop
  timeを実数に。

E3DCameraShiftLeft, E3DCameraShiftRight, E3DCameraShiftUp, E3DCameraShiftDown
  shift実数

E3DSetCameraTwist
  mult引数廃止。

E3DIKRotateBeta, E3DIKRotateBeta2D
  scid追加

E3DConvScreenTo3D
  z100000の100000倍を止める。
  scid引数追加。

E3DSetUV, E3DGetUV
  u10000, v10000の10000倍をやめる。

E3DShiftBoneTree2D
  scid引数追加

E3DRotateBillboard
  mult引数廃止

E3DRasterScrollTexture
  param1div, param2div引数廃止
  param1, param2を実数に。

E3DLoadGndFile
  mult100の100倍をやめる。

E3DTwistBone
  divdeg引数廃止

E3DImportMQOFileAsGround, E3DLoadMQOFileAsMovableAreaFromBuf
E3DLoadMQOFileAsGroundThread, E3DSigLoadThread,
E3DSigLoadFromBufThread, E3DLoadMQOFileAsMovableAreaThread,
E3DLoadMQOFileAsMovableAreaFromBufThread,
E3DLoadGndFileThread,
  mult100の100倍をやめる。


E3DSetSpecularPower
  mult引数廃止。

E3DGetSpecularPower
  pow100の100倍をやめる。

E3DGetInfElem
  userrate10000, orginf10000, dispinf10000の10000倍をやめる。
  (userrateは%)

E3DSetInfElem
  userrate, directvalの10000倍を止める。
  (userrateは%)

E3DChkConfGroundPart, E3DChkConfGroundPart2
  nx10000, ny10000, nz10000の10000倍をやめる。


E3DPickFace
  scid追加。

E3DCos, E3DSin, E3DAtan, E3DAtan2, E3DDot, E3DCross
  実数対応に伴い、係数などの引数を削除。