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以降にプラグインをインストールしたときにのみ使えます。

トップページに戻る