RokDeBone2 Plugin SDK
1、概要
RokDeBone2 ver1.0.7.6 から、プラグイン機能が付きました。
このページでは、RokDeBone2から呼び出すことの出来るプラグインの作り方について説明します。
プラグインは、C言語で作成します。
RokDeBone2には、プラグインの種類というものは、ありません。
RokDeBone2のプラグインメニューから、実行したいプラグインを選ぶと、
プラグインのRDBOnSelectPlugin() という関数が、RokDeBone2から、1回、呼ばれるようになっています。
この機能により、エクスポーターの作成などが、可能になります。
SDKver1.0.7.6では、RDBOnSelectPlugin()にしか、対応しませんが、
将来、
RDBOnRender()
RDBOnTransform()
RDBOnLoadModel()
RDBOnDestroyModel()
RDBOnLoadMotion()
RDBOnDestroyMotion()
などを実装し、レンダーや、モーション制御のプラグインも作れるようにするかもしれません。
プラグインの種類を決めないため、これらの関数を、好きな組み合わせで、必要なものだけ、実装する形に出来たらいいな、と思っています。
##############
ver5.5.0.5で追加
RokDeBone2が終了する直前にプラグインのRDBOnClose()が呼ばれます。
RokDeBone2でユーザーがボーンの姿勢を操作し、マウスを離した時に
プラグインのRDBOnPose( int motid )が呼ばれます。
RDBOnPoseが呼ばれた段階ではモーションポイントは変化していますがFillUpは行われていません。
##############
2、サンプル
SDKに、エクスポータのサンプルを付けてありますので、
まずは、どんなものかを、見てみてください。
Visual Studio 2008 SP1で、使用できるようになっています。
まず、「プロジェクトを開く」から、slnファイルを開いてください。
RDBPlugin.h, RDBInit.cpp, coef_r.hが、プラグインの共通ファイルです。
これらのファイルは、必ず、プロジェクトファイルに追加する必要があります。
また、これらのファイルは、編集する必要は、ありません。
サンプルのShapeExporterの場合は、
自分で編集するのは、ShapeExporter.cppのみです。
RDBGetPlugInID, RDBGetPlugInName, は、RokDeBone2で、プラグインを識別するための情報として使用します。
IDや名前などを、適当に決めて、編集してください。
これらの関数を削除すると、RokDeBone2用のプラグインとは識別されず、
RokDeBone2のプラグインメニューに、羅列されませんので、注意してください。
作成したdllは、Pluginsフォルダーに入れてください。
3、プラグインから呼び出せる関数
プラグインから呼び出せる関数には、関数の頭に、RDBが付いています。
ほとんど、Easy3Dと同じ形になっています。
Easy3Dをお使いの方は、おわかりと思いますが、
モデルデータには、hsid (ハンドラーセットIDの略) というIDが付いています。
モデルデータに対する処理には、ほとんど、全て、このhsidが必要になります。
RokDeBone2では、このhsidで、どのモデルデータに対する処理なのかを、識別することになります。
hsidは、RDBGetCurrentHSIDという関数で、取得できるようになっています。
モデルデータを読み込んでいないときは、hsidに-1の値がセットされます。
RDBOnSelectPluginなどの関数の最初の部分で、
必ず、RDBGetCurrentHSIDで、hsidを取得し、-1でないかどうかを、チェックするようにしてください。
モーションについても、同様です。
RDBGetCurrentMotIDという関数で、モーションを識別するIDが取得できます。
モーションを読み込んでいない場合は、-1が取得されます。
IDは、表示用パーツ、ジョイントを識別する際にも、使用します。
表示用パーツ、ジョイントは、シリアル番号で、識別されます。
シリアル番号は、
RDBGetPartNoByNameや、RDBGetDispObjInfoや、RDBGetJointInfoなどで、取得できます。
猫のモデルデータの手のオブジェクトに対する処理を行いたいときは、
まず、猫モデルのhsidを取得し、次に、手のオブジェクトのシリアル番号を取得し、
RDBで始まる関数を、hsidと、シリアル番号を引数に渡して、呼び出せば、OKです。
プラグインから呼び出せる関数を表にしました。
関数表をご覧ください。
ユーザーさんが作成したRokDeBone2のプラグインは、
http://www5d.biglobe.ne.jp/~ochikko/usersplugin.htmで紹介しています。
更新ログ
2005/10/23
ver1.0.7.7を公開
2005/10/27
RDB2PluginSDKのバージョンアップ ver1.0.7.7
UV情報取得関数の追加
RDBGetUV
法線情報の取得関数追加
RDBGetNormal
モーションを適用した法線と、初期状態の法線の両方を取得できます。
SDKサンプル(ShapeExporter.cpp)に、追加関数の使用例の記述を追加。
ver1.0.7.7のSDKで作ったプラグインは、RokDeBone2 ver1.0.7.7以降でないと実行できません。
2005/11/13
RDB2PluginSDKのバージョンアップ ver1.0.7.9
自己照明の値、スペキュラーPowerの値を、プラグインから取得できるようにしました。
ver1.0.7.9のSDKで作ったプラグインは、ver1.0.7.9以降のRokDeBone2でしか、実行できません。
2006/07/18
RDB2PluginSDKのバージョンアップ ver1.1.1.5
頂点単位の影響度をプラグインから設定できるようになりました。
RDBGetInfElem2
頂点単位の影響度を取得。子供ジョイント番号も取得
RDBGetOrgVertNo
RokDeBone2の内部データの頂点番号を、読み込みmqoの頂点番号に変換
RDBSaveSigFile
頂点単位の影響度の入ったsigを出力
RDBSetInfElem
頂点単位の影響度をセット
RDBChkIM2Status
RDBGetOrgVertNoが使用可能かどうかをチェック
ver1.1.1.5のSDKで作ったプラグインは、ver1.1.1.5以降のRokDeBone2でしか、実行できません。
2006/07/22
RDB2PluginSDKのバージョンアップ ver1.1.1.7
プログレスバー操作関数の追加
RDBCreateProgressBar
RDBSetProgressBar
RDBDestroyProgressBar
ver1.1.1.7のSDKで作ったプラグインは、ver1.1.1.7以降のRokDeBone2でしか、実行できません。
2006/08/17
RDB2PluginSDKのバージョンアップ ver2.0.0.5
関数追加
RDBGetVersion RokDeBone2のバージョンを取得
RDBIsJoint パーツがジョイントかどうかを判定
ver2.0.0.5のSDKで作ったプラグインは、ver2.0.0.5以降のRokDeBone2でしか、実行できません。
2008/01/15
RDB2PluginSDKのバージョンアップ ver3.0.4.0
RDBGetNotionNum, RDBGetMotionName, RDBGetKeyFrameSRT2の追加。
RDBGetKeyFrameLeng関数をカレントモーション以外のmotidでも呼び出せるように修正。
マニュアルの間違い修正
RDBGetClockwiseの引数。
RDBGetKeyFrameNoの引数。
ver3.0.4.0のSDKで作ったプラグインは、ver3.0.4.0以降のRokDeBone2でしか、実行できません。
2008/04/02
RDB2PluginSDKのバージョンアップ ver4.0.0.1
マテリアルに対応。
RDBGetMaterialNum
RDBGetMaterial
RDBGetMaterialNo
の追加。
ShapeExporterの更新
ver4.0.0.1のSDKで作ったプラグインは、ver4.0.0.1以降のRokDeBone2でしか、実行できません。
2009/08/08
RDB2PluginSDKのバージョンアップ ver5.1.0.0
32ビットの頂点インデックスに対応。
RDBGetTriIndicesInt命令を追加。
2009/11/28
RDB2PluginSDKのバージョンアップ ver5.2.1.4
ボーンの作成削除命令を追加。
ボーンのインポーターも作れるようになりました。
RDBCreateBone
RDBDestroyBone
RDBGetSelectedJoint
RDBSetJointInitialPos
コンパイラをVisual Studio 2005からVisual Studio 2008 SP1 に変更しました。
2009/12/13
RDB2PluginSDKのバージョンアップ ver5.2.1.7
モーフの情報取得設定のための命令を追加。
RDBGetMorphBaseNum
RDBGetMorphBaseInfo
RDBGetMorphTargetInfo
RDBGetMorphKeyNum
RDBGetMorphKey
RDBGetCurMorphInfo
RDBCreateMorph
RDBAddMorphTarget
RDBSetMorphKey
RDBDestroyMorphKey
モーション制御用の命令を追加。
RDBSetMotionFrameNo
新しい命令はRokDeBone2 ver5.2.1.7以降でしか実行できません。
2009/12/31
RDB2PluginSDKのバージョンアップ ver5.2.2.0
トゥーン情報の取得設定命令を追加。
RDBGetToon1MaterialNum
RDBGetToon1Material
RDBSetToon1Name
RDBSetToon1Diffuse
RDBSetToon1Specular
RDBSetToon1Ambient
RDBSetToon1NL
RDBSetToon1Edge0
このバージョンで作成したプラグインはRokDeBone2 ver5.2.2.0以降でしか実行できません。
2011/06/21
RDB2PluginSDKのバージョンアップ ver5.5.0.5
RokDeBone2から呼び出される命令の追加。
RDBOnClose
RokDeBone2終了時に呼び出されます。
RDBOnPose
RokDeBone2でユーザーがボーンの姿勢を編集し、マウスを離したときに呼び出されます。
プラグインから呼び出せる命令の追加。
RDBSetKeyFrameSRT2
RDBFillUpMotion
RDBGetSplineParams
RDBSetSplineParams
RDBCalcSplineParams
これらの新しい命令はRokDeBone2 ver5.5.0.5以降にプラグインをインストールしたときにのみ使えます。