RokDeBone2 Plugin SDK から呼び出せる関数
関数名 | 種類 | 説明、引数 | バージョン |
---|---|---|---|
RDBGetVersion | version | RokDeBone2のバージョンを取得します。 引数: int* verptr [OUT] バージョン番号がセットされます。 |
|
RDBGetCurrentHSID | ID | RokDeBone2で、現在操作対象になっている、モデルデータを識別するためのIDを取得します。 モデルデータを読み込んでいない場合は、-1が取得されます。 プラグインの関数の最初で、必ず、チェックするようにしてください。 引数: int* hsidptr [OUT] モデルデータを識別するためのIDがセットされます。 |
ver1.0.7.6で新規 |
RDBGetCurrentMotID | ID | RokDeBone2で、現在、操作対象になっているモーションを識別するためのIDを取得します。 モーションが存在しない場合は、-1が取得されます。 引数: int hsid [IN] モデルデータを識別するためのID int* motidptr [OUT] モーションデータを識別するためのIDがセットされます。 |
ver1.0.7.6で新規 |
RDBGetSelectedJoint | ID | RokDeBone2で現在操作対象になっているジョイントを識別するためのIDを取得します。 マニピュレータの表示されているジョイントのIDです。 存在しない場合は0以下の値が取得されます。 引数: int* hsidptr [OUT] カレントのモデルデータを識別するID。 int* jointnoptr [OUT] 操作対象のジョイントを識別するためのIDがセットされます。 |
ver5.2.1.4 |
RDBSelectJoint | ID | ジョイントを選択状態にします。 選択状態のジョイントは3Dウインドウにマニピュレータが表示され 階層エディタで対応する名前が選択された状態になります。 引数: int hsid [IN] モデルデータを識別するためのID int jointno [IN] 選択したいジョイントを識別するID。 |
ver5.5.0.5 |
RDBGetParent | 階層 | 親のシリアル番号を取得します。 親は1個しかありません。 引数: int hsid [IN] モデルデータを識別するためのID int partno [IN] パーツを識別するID、シリアル番号 int* parentnoptr [OUT] 親のシリアル番号、親がないときは、-1がセットされる。 |
ver1.0.7.6で新規 |
RDBGetChild | 階層 | 子供のシリアル番号を取得します。 子供は、複数ある場合もあります。 childarray配列に、 子供の数分の、シリアル番号が 代入されます。 子供の数より、配列の長さが、大きいように してください。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : parentno 親のジョイントの番号を指定してください。 3. [OUT] int* : childarray 子供ジョイントの、シリアル番号が、代入されます。 arraylengがchildnumより、小さい場合は、 arrayleng個の、シリアル番号しか、代入されません。 4. [IN] int : arrayleng childarray引数に格納できる要素数を指定してください。 int childarray[100]; とした場合は、 100を指定してください。 childnum引数に代入される数が、arraylengより大きい場合は、 配列の長さが足りないことになります。 5. [OUT] int* : childnum 子供ジョイントの数が、代入されます。 |
ver1.0.7.6で新規 |
RDBGetName | 名前 | シリアル番号から、名前を取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : parentno シリアル番号を指定してください。 3. [OUT] char* : nameptr 名前が代入されます。 4. [IN] int : strleng nameptrに渡した配列の長さを指定します。 |
ver1.0.7.6で新規 |
RDBGetPartNoByName | 名前 | パーツ、ジョイントの名前から、 シリアル番号を取得します。 同じ名前のパーツが、複数ある場合、 常に、一番最初に、見つかったパーツの番号が、取得されることに、注意してください。 ただし、表示オブジェクトと、ジョイントは、区別して、検索します。 引数: 1. [IN] int : hsid 形状データを識別するid 2. [IN] char* : partname RokDeBone2で表示される、パーツの名前。 3. [IN] int : isjoint 表示オブジェクトを探すときは0,ジョイントを探すときは1を指定してください。 3. [OUT] int* : partno 名前がpartnameである、パーツの番号が代入されます。 |
ver1.0.7.6で新規 |
RDBGetDispObjNum | 表示オブジェクト情報 | 表示用オブジェクトの総数を取得します。 RDBGetDispObjInfoで詳細情報を取得する際の、 配列データの大きさの決定などに、 使用してください。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : dispobjnumptr 表示オブジェクトの総数が、代入されます。 |
ver1.0.7.6で新規 |
RDBGetDispObjInfo | 表示オブジェクト情報 | 表示オブジェクトの詳細情報を、一括取得します。 この関数を使用するには、 データ取得用の配列を、malloc命令を使って、 作成する必要があります。 (データによって、表示オブジェクトの総数が変化するので、ユーザーさん側で、データ長を調整する必要があります。) まず、dispobjmaxnum変数に、 RDBGetDispObjInfo関数で、 表示オブジェクトの総数を取得してください。 dispobjname引数は、 dispobjname = (char*)malloc( sizeof(char) * 256 * dispobjmaxnum ); で作成してください。 dnoを0からdispobjmaxnum - 1とすると、 任意の表示オブジェクトの名前のポインターは、 dispobjname + 256 * jno でアクセスできます。 dispobjinfo引数は、 dispobjinfo = (int*)malloc( sizeof(int) * DOI_MAX * dispobjmaxnum ); で作成してください。 DOI_* は、coef_r.h で定義されている定数です。 #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インデックスは、 表示オブジェクトのシリアル番号にアクセスするときに、 使用します。 表示オブジェクトのシリアル番号とは、 RDBGetPartNoByName で取得できる番号と同じものです。 DOI_NOTUSEインデックスは、 表示オブジェクトが無効になっているかどうかの フラグにアクセスするときに、使用します。 無効なときに1が、有効なときに0が代入されています。 DOI_DISPSWITCHインデックスは、 表示オブジェクトのディスプレイスイッチの番号 にアクセスするときに使用します。 ディスプレイスイッチは、 RokDeBone2で、パーツごとに設定可能です。 詳しくは、RokDeBone2のマニュアルをご覧ください。 DOI_INVISIBLEインデックスは、 表示オブジェクトが表示されているかどうかのフラグにアクセスするときに使用します。 DOI_MAXは、 DOI_ で始まる定数の個数を定義しています。 dispobjinfoをmallocするときに使用します。 dnoを0からdispobjmaxnum - 1とすると、 任意の表示オブジェクト情報のシリアル番号には、 *( dispobjinfo + DOI_MAX * dno + DOI_SERIAL ) でアクセスできます。 同様に、ディスプレイスイッチは、 *( dispobjinfo + DOI_MAX * dno + DOI_DISPSWITCH ) でアクセスできます。 mallocしたポインタは、用事が済んだら、 freeすることをお忘れなく。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : dispobjmaxnum データ取得用配列の大きさ(表示オブジェクトの数)を指定します。 3. [OUT] char* : dispobjname 名前情報を取得するための配列を渡してください。 上に書いた方法で、mallocしたポインタを渡してください。 4. [OUT] int* : dispobjinfo シリアル番号などを取得するための配列変数を渡してください。 上に書いた方法で、mallocしたポインタを渡してください。 5. [OUT] int* : dispobjgetnum 何個lの表示オブジェクトの情報を出力したかが、代入されます。 通常は、dispobjmaxnumと同じ値が取得されます。 |
ver1.0.7.6で新規 |
RDBGetClockwise | 表示オブジェクト情報 | 表面、裏面、両面のどの表示モードになっているかを取得します。 引数: 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号 3. [OUT] int* : clockwiseptr 表面の時は2 裏面の時は1 両面の時は3が代入されます。 |
ver1.0.7.6で新規 |
RDBGetJointNum | ジョイント情報 | ジョイントの総数を取得します。 RDBGetJointInfoで詳細情報を取得する際の、 配列データの大きさの決定などに、 使用してください。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : jointnumptr ジョイントの総数が、代入されます。 |
ver1.0.7.6で新規 |
RDBGetJointInfo | ジョイント情報 | ジョイントの詳細情報を、一括取得します。 この関数を使用するには、 データ取得用の配列を、malloc命令などを使って、 作成する必要があります。 (データによって、ジョイントの総数が変化するので、ユーザーさん側で、データ長を調整する必要があります。) まず、jointmaxnum変数に、 RDBGetJointInfo関数で、 ジョイントの総数を取得してください。 jointname引数は、 jointname = (char*)malloc( sizeof(char) * 256 * jointmaxnum ); で作成してください。 mallocが嫌な方は、 char jointname[maxnum][256]; のように、jointmaxnumより大きい値maxnumで配列を確保してください。 jno を0からjointmaxnum - 1としたとき、 任意のジョイントの名前へのポインタは、 jointname + 256 * jno でアクセスできます。 jointinfo引数は、 jointinfo = (int*)malloc( sizeof(int) * JI_MAX * jointmaxnum ); で作成してください。 mallocが嫌な方は、 int jointinfo[maxnum][JI_MAX]; のように、jointmaxnumより大きい値maxnumで配列を確保してください。 JI_* は、coef_v.hの 最初の方で定義されている定数です。 #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インデックスは、 ジョイントのシリアル番号にアクセスするときに、 使用します。 JI_NOTUSEインデックスは、 ジョイントが無効になっているかどうかの フラグにアクセスするときに、使用します。 無効なときに1が、有効なときに0が代入されています。 JI_PARENT, JI_CHILD, JI_BROTHER, JI_SISTERインデックスは、 ジョイントの階層構造にアクセスするときに 使用します。 詳しくは、 ジョイントの階層構造のページ をご覧ください。 JI_MAXは、 JI_ で始まる定数の個数を定義しています。 jointinfoをmallocするときに使用します。 jnoを0からjointmaxnum - 1 としたとき、 任意のジョイントのシリアル番号は、 *( jointinfo + JI_MAX * jno + JI_SERIAL ) でアクセスできます。 同様に、親の番号は、 *( jointinfo + JI_MAX * jno + JI_PARENT ) でアクセスできます。 mallocしたポインターは、用が済んだら freeすることをお忘れなく。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : jointmaxnum データ取得用配列の大きさ(ジョイントの数)を指定します。 3. [OUT] char* : jointname 名前情報を取得するための配列を渡してください。 上に書いた方法で、mallocしたポインタを渡してください。 4. [OUT] int* : jointinfo シリアル番号や、階層構造などを取得するための配列変数を渡してください。 上に書いた方法で、mallocしたポインタを渡してください。 5. [OUT] int* : jointgetnum 何個lのジョイントの情報を出力したかが、代入されます。 通常は、jointmaxnumと同じ値が取得されます。 |
ver1.0.7.6で新規 |
RDBIsJoint | ジョイント情報 | 指定したパーツが、ジョイントかどうかを判定します。 引数: 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号 3. [OUT] int* : isjoint ジョイントだった場合は 1 が、 ジョイントではない場合は 0 が、セットされます。 |
|
RDBCreateBone | ジョイント情報 | ボーンを新規に作成します。 読み込み済みのモーションは全て破棄されます。 影響度の再計算はしません。 ボーンの位置はRDBSetJointInitialPosで設定してください。 仕様上ボーンを破棄するとゴミデータが残ります。 ゴミデータはあまり多くなると描画速度に影響します。 RDBCreateBoneにはゴミデータが存在すればそれを再利用するような仕組みがあります。 ですのでまず不要なボーンをRDBDestroyBoneした後にRDBCreateBoneするとゴミが少なくて済みます。 ゴミの掃除の仕方はRokDeBone2ver5.2.1.3の新機能のページの説明をご覧ください。 引数: 1. [IN] int : hsid モデルデータを識別するID。 2. [IN] const char* : nameptr ボーンの名前を格納した文字列。 255バイトまでです。 終端はNULL(0)にしてください。 3. [IN] int : parentid 親になるジョイントを識別するパーツのID。 一番親のボーンを作成する場合以外は必ずジョイントのIDを指定してください。 一番親のボーンを作成するときは-1を指定してください。-1を指定するとパーツをまとめる役割をするパーツのうちで一番最後に作られたパーツが親になります。 ( 通常は「Joint Part」という名前のパーツになります。) 4. [OUT] int* : serialidptr 新たに作成されたボーンを識別するID(パーツのID)が代入されます。 エラーが生じた場合は-1が代入されます。 |
ver5.2.1.4 |
RDBDestroyBone | ジョイント情報 | ボーンを破棄します。 読み込み済みのモーションは全て破棄されます。 影響度の再計算は強制的に行われます。 RDBCreateBoneの説明もお読みください。 引数: 1. [IN] int : hsid モデルデータを識別するID。 2. [IN] int : boneno 削除したいボーンを識別するID。 |
ver5.2.1.4 |
RDBSetJointInitialPos | ジョイント情報 | ジョイント(ボーン)の初期位置をローカル座標系で設定します。 引数: 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : jointno ジョイントを識別するパーツのid 3. [IN] RDBPoint : pos ジョイントの位置をローカル座標系で指定します。 4. [IN] int : calcflag 頂点の影響度の再計算をするときは1を、しないときは0を指定します。 5. [IN] int : excludeflag calcflagに1を指定したときのみ意味を持ちます。 1を指定すると無効にしているパーツの影響度は再計算しません。 0を指定すると無効にしているパーツも全て再計算の対象になります。 |
ver5.2.1.4 |
RDBGetVertNumOfPart | 頂点位置 | partnoで識別されるパーツに、 いくつの頂点が含まれるかを取得します。 引数: 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号 3. [OUT] int* : vertnum パーツに含まれる頂点数が代入されます。 |
ver1.0.7.6で新規 |
RDBGetVertPos | 頂点位置 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標を取得します。 ボーン変形や、カメラ移動などの影響を受けていない ローカルな座標値が、返されます。 ボーン変形を考慮した座標を取得したい場合は、 RDBGetVertPos2を使用してください。 引数: 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号 3. [IN] int : vertno 頂点の番号 4. [OUT] RDBPoint* : vertpos 頂点の座標が代入されます。 |
ver1.0.7.6で新規 |
RDBGetVertPos2 | 頂点位置 | partnoで識別されるパーツ内の、頂点番号vertnoの、頂点の座標を取得します。 ボーン変形後の座標を取得できます。 引数: 1. [IN] int : hsid 形状データを識別するid 2. [IN] int : partno パーツを識別する番号 3. [IN] int : vertno 頂点の番号 4. [IN] int : motid モーションを識別するID 5. [IN] int : frameno モーションのフレーム番号 6. [OUT] RDBPoint* : vertpos 頂点の座標が代入されます。 |
ver1.0.7.6で新規 |
RDBGetVertNoOfFace | 頂点位置 | facenoで指定した面に含まれる頂点の番号を 3つ取得します。(3角形の頂点です) RDBGetSamePosVertの説明も お読みください。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : faceno 面を識別する番号を指定してください。 4. [OUT] int* : vertnoptr1 5. [OUT] int* : vertnoptr2 6. [OUT] int* : vertnoptr3 3角形の面を構成する3つの頂点の番号が 代入されます。 |
ver1.0.7.6で新規 |
RDBGetSamePosVert | 頂点位置 | モデルデータ中には、同じ頂点座標で、 UV座標だけ違う頂点が存在します。 同じ位置の頂点の番号を取得する関数です。 RDBGetVertNoOfFaceと組み合わせて 使うことを想定しています。 samevertno には、見つかった頂点数分の 頂点番号が代入されます。 int samevertno[5]; などで、長さ5くらいの配列を用意してください。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : vertno 頂点を識別する番号を指定してください。 4. [OUT] int* : samevertno dim samevertno, arraylengで作成した配列を指定してください。 見つかった頂点の番号が代入されます。 5. [IN] int : arrayleng samevertno配列を作成したときの大きさを指定してください。 6. [OUT] int* : samenum 見つかった頂点の数が代入されます。 つまり、maxindex = samenum - 1とすると samevertno[0] から samevertno[maxindex] まで、見つかった頂点の番号が、代入されていることになります。 |
ver1.0.7.6で新規 |
RDBGetNormal | 頂点位置 | 表示用オブジェクトの、法線を取得します。 オブジェクトの頂点の数分の法線を、一括で、取得します。 モーションを適用した法線を取得したい場合は、motidにRDBGetCurrentMotIDで取得したIDを渡し、 モーションを適用していない、初期状態の法線を取得したい場合は、motid に -1 を渡します。 法線取得用のメモリは、プラグイン作成者が、作成、破棄してください。 具体的な使用例は、ShapeExporter.cppにありますので、ご覧ください。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : motid モーションを識別するIDを指定してください。 初期状態の法線を取得したい場合は、-1を指定してください。 4. [IN] int : frameno モーションのフレーム番号を指定してください。 motidに-1以外を指定したときに、参照されます。 5. [OUT] RDBPoint* : normalptr 頂点の数分の法線が、代入されます。 RDBGetVertNumOfPart( hsid, partno, &vertnum ); normalptr = (RDBPoint*)malloc( sizeof( RDBPoint ) * vertnum ); などで、取得用のメモリを作成してください。 6. [IN] int : arrayleng normalptrに渡した、メモリの要素数を指定してください。 normalptr = (RDBPoint*)malloc( sizeof( RDBPoint ) * vertnum ); で作成した場合は、vertnumを指定してください。 |
ver1.0.7.7で追加 |
RDBGetOrgVertNo | 頂点情報 | mqoファイル内での頂点番号を取得する。 パーツ内の頂点の数は、RDBGetVertNumOfPartのvertnumで取得されます。 プラグインの関数では、頂点の番号に、0から(vertnum - 1)の頂点の番号を使用できます。 この頂点の番号は、表示用の最適化をした後の、頂点の番号で、 rok, mqoファイル内での頂点の番号と異なる場合があります。 この関数は、最適化後の頂点番号に対応する、rok,mqoファイル内での頂点の番号を取得します。 mqoの場合は、 mqoファイル中の、パーツごとの頂点の出現順番を返します。(0から始まる数字) rokの場合は、 rokファイル中の、1から始まる頂点のインデックスを返します。 rokの場合は、パーツごとの番号ではなくて、 頂点全体を通しての番号ですので 注意してください。 指定した頂点と同じ座標を持つ頂点の番号が代入されるので、場合によっては、複数取得されます。 この関数を使う前に、 RDBChkIM2Status関数で、引数に 1が返されることを確認してください。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 orgarraylengに、取得できる情報の数をセットして、 int* orgnoarray = (int*)malloc( sizeof( int ) * orgarrayleng ); で、メモリを確保してください。 または、単に、int orgnoarray[ orgarrayleng ]; でもいいです。 引数: 1. [IN] int : hsid モデルを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 RDBGetPartNoByNameで取得した番号を渡してください。 3. [IN] int : vertno 調べたい頂点の番号を指定してください。 4. [OUT] int* : orgnoarray この配列に、元データの頂点の番号が代入されます。 maxindex = getnum - 1とすると *orgnoarray から、*(orgnoarray + maxindex)までに 頂点の番号が代入されます。 5. [IN] int : arrayleng orgnoarrayをmallocしたときの、配列の大きさ(要素数)を指定してください。 6. [OUT] int* : getnum この関数が、orgnoarrayに代入した情報の数を取得できます。 |
ver1.1.1.5で新規 |
RDBGetInfElemNum | 影響度 | 頂点毎のボーンの影響数を取得します。 2と取得された場合、 その頂点は、2個のボーンの影響を受けることを意味します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : vertno 頂点を識別する番号を指定してください。 4. [OUT] int* : numptr ボーンの影響数がセットされます。 |
ver1.0.7.6で新規 |
RDBGetInfElem | 影響度 | 頂点毎のボーンの影響度を取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : vertno 頂点を識別する番号を指定してください。 4. [IN] int : infno 要素の番号 RDBGetInfElemNum で取得した数をnumとすると、 この引数には、0から(num - 1)までの値を指定してください。 5. [OUT] int* : bonenoptr 影響を受けるボーンのシリアル番号 -1がセットされたときは、無効なデータを意味します。 6. [OUT] float* : rateptr *bonenoptrにセットされたボーンからの影響度が、代入されます。 |
ver1.0.7.6で新規 |
RDBSetInfElem | 影響度 | 頂点にボーン影響度を設定します。 paintmodeの意味 paintmodeは、影響度の設定方法を表します。 coef_r.h内で、PAINT_で始まる定数で、 enum { PAINT_NOR, PAINT_EXC, PAINT_ADD, PAINT_SUB, PAINT_ERA, PAINT_MAX }; NORは、 すでに設定してある影響度情報に、影響度データを追加します。 同じボーンの情報が既にある場合は、上書きします。 EXCは、すでに設定してある影響度情報を、破棄してから、影響度データを設定します。 ADDは、すでに設定してある影響度の比重に、指定した比重を足し算します。 SUBは、すでに設定してある影響度の比重から、指定した比重を引き算します。 ERAは、指定したボーンの影響度データを削除します。 calcmodeの意味 calcmodeは、影響度の計算方法を表します。 coef_r.h中で定義されているCALCMODE_で始まる定数を使用します。 以下のように定義されています。 enum{ CALCMODE_NOSKIN0, CALCMODE_ONESKIN0, CALCMODE_ONESKIN1, CALCMODE_DIRECT0, CALCMODE_SYM, CALCMODE_MAX }; NOSKIN0は、スキニング無し。 ONESKIN0は、距離と角度によりスキニング。 ONESKIN1は、距離のみによりスキニング。 DIRECT0は、直接数値指定。 SYMは、対称コピーによる指定。 を表します。 calcmodeとpaintmodeの依存関係 CALCMODE_NOSKIN0のときは、PAINT_EXCを設定してください。 CALCMODE_DIRECT0のときは、PAINT_NORまたは、PAINT_EXCを設定してください。 Easy3D内部での影響度の計算方法 影響度を算出する際には、 orginf, dispinf, userrate, normalizeflagを使います。 orginfは、calcmodeで指定した方法で、算出した影響度。 userrateは、比重。 normalizeflagは、正規化(一つの頂点の影響度の合計が1になるようにする)をするかどうかのフラグ。 dispinfが、最終的な、影響度。 まず、InfElemごとに、以下の計算をします。 orginf * userrate / 100 normalizeflagが0のときは、この値がそのまま、dispinfになります。 normalizeflagが1のときは、 全部のInfElemの影響度(dispinf)の合計が1になるように、正規化します。 directvalは、CALCMODE_DIRECT0のときのみ意味を持ちます。この値をorginfとして設定します。 正の小数を指定してください。 スムージング角度の関係などで、同じ位置に複数の頂点が存在する場合があります。 これらの頂点を同時に同じように設定しないと、ボーン変形が、乱れることがあるので、注意してください。 childjointnoは、ボーンの線分の内の子供のジョイントの番号です。 childjointnoには、必ず親が存在するジョイントの番号を指定してください。 一番親のジョイントは、childjointには、指定できません。 引数: 1. [IN] int : hsid モデルを識別するID 2. [IN] int : partno パーツの番号を指定します。 RDBGetPartNoByNameで取得した番号を渡してください。 3. [IN] int : vertno 頂点の番号 4. [IN] int : childjointno 影響を受けるボーンの指定。 ボーンの線分の内、子供の方のジョイントの番号を 指定します。 5. [IN] int : calcmode 影響度の計算方法を指定します。 6. [IN] int : paintmode 影響度の設定方法を指定します。 7. [IN] int : normalizeflag 正規化をするときは1、 しないときは0を指定します。 8. [IN] float : userrate 比重%の値を指定します。 100%の時は、100.0を指定します。 9. [IN] float : directval 直接数値指定の数値を指定します。 |
ver1.1.1.5で新規 |
RDBChkIM2Status | 影響度 | 影響マップ情報(im2)が、利用可能かどうかを調べます。 status引数に1が返された場合は、 利用可能。 0が返された場合は、 利用不可能です。 0が返された場合は、sigファイルを新しい形式にコンバートする必要があります。 RDBGetOrgVertNoを使用する前に、 このRDBChkIM2Status関数で、 影響マップファイルの機能が使えるかどうかを 調べてください。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : status 影響マップ情報が、利用可能かどうかが代入されます。 |
ver1.1.1.5で新規 |
RDBGetFaceNum | 面 | 表示オブジェクトの面の数を取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] int* : numptr 面の数が代入されます。 |
ver1.0.7.6で新規 |
RDBGetTriIndices | 面 | 表示用パーツの、TRIANGLELISTを取得します。 一つの3角形に付き、3つの頂点番号が取得されます。 取得に必要なバッファの長さを取得するためには、 wordnum引数に0をセットします。 バッファ長を取得した後、バッファをアロケートし、 そのバッファに情報を代入するために、もう一度、この関数を呼んでください。 具体的には、以下のようになります。 WORD* buf = 0; int wordnum, setwordnum, revflag; RDBGetTriIndices( hsid, partno, buf, 0, &setwordnum, &revflag ); buf = (WORD*)malloc( sizeof( WORD ) * setwordnum ); wordnum = setwordnum; RDBGetTriIndices( hsid, partno, buf, wordnum, &setwordnum, &revflag ); free( buf ); bufはint*ではなくて、WORD*なので、注意してください。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] WORD* : buf インデックスが代入されるバッファを指定してください。 4. [IN] int : wordnum bufの要素数を指定してください。 バッファ長が、sizeof( WORD ) * wordnumとRDBが解釈します。 必要なバッファ長を調べたいだけのときは、0を指定してください。 5. [OUT] int* : setwordnumptr wordnumに0を指定したときには、必要なバッファの要素数を、 それ以外の時は、bufに代入したWORDの要素数を代入します。 6. [OUT] int* : revflagptr 表示パーツが両面表示の時に1がセットされます。 bufには、片面の情報のみしか代入されません。 |
ver1.0.7.6で新規 |
RDBGetTriIndicesInt | 面 | 表示用パーツの、TRIANGLELISTを取得します。RDBGetTriIndicesの32ビット版です。 一つの3角形に付き、3つの頂点番号が取得されます。 取得に必要なバッファの長さを取得するためには、 intnum引数に0をセットします。 バッファ長を取得した後、バッファをアロケートし、 そのバッファに情報を代入するために、もう一度、この関数を呼んでください。 具体的には、以下のようになります。 int* buf = 0; int intnum, setintnum, revflag; RDBGetTriIndicesInt( hsid, partno, buf, 0, &setintnum, &revflag ); buf = (int*)malloc( sizeof( int ) * setintnum ); intnum = setintnum; RDBGetTriIndicesInt( hsid, partno, buf, intnum, &setintnum, &revflag ); free( buf ); 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] int* : buf インデックスが代入されるバッファを指定してください。 4. [IN] int : intnum bufの要素数を指定してください。 バッファ長が、sizeof( int ) * intnumとRDBが解釈します。 必要なバッファ長を調べたいだけのときは、0を指定してください。 5. [OUT] int* : setintnumptr intnumに0を指定したときには、必要なバッファの要素数を、 それ以外の時は、bufに代入したintの要素数を代入します。 6. [OUT] int* : revflagptr 表示パーツが両面表示の時に1がセットされます。 bufには、片面の情報のみしか代入されません。 |
|
RDBGetAlpha | 色 | パーツの透明度を取得します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 3. [IN] int : vertno この引数は、現在、使用されません。 適当な数字を入れてください。 4. [OUT] int* : alpha 指定したパーツの透明度が、0〜255の値で代入されます。 |
ver1.0.7.6で新規 |
RDBGetDiffuse | 色 | パーツの任意の頂点のdiffuse色を取得します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 3. [IN] int : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] int* : r 5. [OUT] int* : g 6. [OUT] int* : b 指定した頂点のdiffuse色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.7.6で新規 |
RDBGetAmbient | 色 | パーツの任意の頂点のambient色を取得します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 3. [IN] int : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] int* : r 5. [OUT] int* : g 6. [OUT] int* : b 指定した頂点のambient色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.7.6で新規 |
RDBGetSpecular | 色 | パーツの任意の頂点のspecular色を取得します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 3. [IN] int : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] int* : r 5. [OUT] int* : g 6. [OUT] int* : b 指定した頂点のspecular色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.7.6で新規 |
RDBGetEmissive | 色 | パーツの任意の頂点のemissive色を取得します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 3. [IN] int : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] int* : r 5. [OUT] int* : g 6. [OUT] int* : b 指定した頂点のspecular色が、 RGB = ( r, g, b )に代入されます。 r, g, bそれぞれ、0から255の値が代入されます。 |
ver1.0.7.9で新規 |
RDBGetSpecularPower | 色 | パーツの任意の頂点のスペキュラーPowerの値を取得します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 取得したいパーツの番号を指定します。 3. [IN] int : vertno 色を取得したい頂点の番号を指定します。 4. [OUT] float* : powerptr 指定した頂点のpowerが代入されます。 |
ver1.0.7.9で新規 |
RDBGetShaderType | 色 | モデルデータのシェーダーのタイプを取得します。 シェーダーのタイプと、色のオーバーフロー処理の2つを取得できます。 シェーダーのタイプは、SDKのCoef_r.hの COL_ で始まるenumで定義されています。 COL_OLD 従来のRokDeBone2の計算法 emissiveは、無効。スペキュラーは、形だけの実装。 COL_PHONG Lambertのディフーズ Phongのスペキュラー emissive有り COL_BLINN Lambertのディフーズ Blinnのスペキュラー emissive有り COL_SCHLICK Lambertのディフーズ Schlickのスペキュラー emissive有り COL_MQCLASSIC メタセコイアのマテリアルでClassicを指定したときのモード emissive有り 色のオーバーフロー処理は、SDKのCoef_r.hの OVERFLOW_ で始まるenumで定義されています。 OVERFLOW_CLAMP クランプ。自己照明がきついと、色が破綻する。 一番高速。 OVERFLOW_SCALE スケール。色は破綻しないが、暗くなる。 OVERFLOW_ORG オリジナル。明るさを保つ。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : shaderptr 3. [OUT] int* : overflowptr シェーダータイプと、オーバーフロー処理が代入されます。 値の意味は、上記を参照。 |
ver1.0.7.9で新規 |
RDBGetTextureInfo | テクスチャ | 表示用のパーツに設定されている、テクスチャーの情報を取得します。 nameptr引数には、256長のバッファのポインタを指定してください。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] char* : nameptr テクスチャーファイル名を代入します。 char texname[256]などで、確保した配列のポインタなどを渡してください。 テクスチャーが設定されていない場合には、 *nameptr = 0 とします。 4. [OUT] int* : repuptr 5. [OUT] int* : repvptr テクスチャーの繰り返し数が代入されます。 U方向、V方向の繰り返しがそれぞれ、 *revuptrと*repvptrに代入されます。 6. [OUT] float* : animuptr 7. [OUT] float* : animvptr テクスチャーのUVの移動値がセットされます。 1フレームごとに、テクスチャーのUV値に足される値です。 8. [OUT] int* : transparentptr テクスチャーの透過モードがセットされます。 不透明の時0 黒を透過色とするとき1 テクスチャデータのアルファで透過するとき2 がセットされます。 |
ver1.0.7.6で新規 |
RDBGetExtTextureInfo | テクスチャ | テクスチャーの拡張情報を取得します。 テクスチャーのパラパラアニメや、 マルチテクスチャ(現在非対応)のための情報です。 最大100枚までのテクスチャ情報が取得されます。 extnameptrには、100×256長のバッファのポインタを渡してください。 合計25枚のテクスチャーパラパラアニメをRokDeBone2で 指定した場合、 1枚目のテクスチャファイル名は、RDBGetTextureInfoで、 2枚目から25枚目までのファイル名は、RDBGetExtTextureInfoで 取得されます。 4番目の引数に代入されるテクスチャーの数は、 RDBGetExtTextureInfoで取得されるテクスチャーの数です。 (RDBGetTextureInfoで取得される枚数(1枚分)は、カウントしません。) 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [OUT] char* : extnameptr 拡張テクスチャーファイル名を代入します。 char extname[100][256] などで確保したバッファを (char*)extname などとキャストして渡してください。 256長ごとに、ファイル名がコピーされます。 テクスチャーが存在しない場合には0が代入されます。 4. [OUT] int* : texnumptr 拡張テクスチャーの数が代入されます。 この数分、extnameptrにファイル名がコピーされます。 5. [OUT] int* : texmodeptr 拡張モードがセットされます。 通常モード(拡張テクスチャー無し)のとき0 パラパラアニメモードのとき1 マルチテクスチャモード(現在非対応)のとき2 がセットされます。 6. [OUT] int* : repflagptr パラパラアニメの繰り返しモードがセットされます。 パラパラアニメしないとき0 最大フレーム数に達したときに、そこで停止する場合1 最大フレームの後、先頭フレームに戻る場合2 がセットされます。 7. [OUT] int* : stepptr パラパラアニメにおいて、 何フレームごとにテクスチャーが変化するかが代入されます。 例えば、3がセットされていた場合、 3フレームに1枚の速さで、パラパラアニメします。 |
ver1.0.7.6で新規 |
RDBGetUV | テクスチャ | テクスチャの、UV情報を、取得します。 テクスチャを貼っていないオブジェクトでも、 デフォルト状態で、X軸投影でテクスチャを貼り付けるときのUV座標が、セットされています。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 3. [IN] int : vertno 頂点を識別する番号を指定してください。 4. [OUT] float* : uptr 5. [OUT] float* : vptr テクスチャのUV座標が、セットされます。 |
ver1.0.7.7で追加 |
RDBGetMotionNum | ボーン、モーション | hsidで識別される形状データがいくつのモーションを読み込んでいるかを取得します。 この関数で取得したモーションの数をmotnumとすると、 モーション関数のmotidに渡すことの出来る有効な値は、0から(motnum - 1)までの数です。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [OUT] int* : motnumptr 何個のモーションを読み込んでいるかがセットされます。 |
ver3.0.4.0で追加 |
RDBGetMotionName | ボーン、モーション | モーションのIDからモーションの名前を取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [OUT] char* : motnameptr モーションの名前がセットされます。 motnameptrには長さが256以上の配列のポインタを渡してください。 例えば、char motname[256];で宣言し、motnameを引数に渡してください。 |
ver3.0.4.0で追加 |
RDBGetBonePos | ボーン、モーション | ボーンの位置情報を取得します。 poskind == 0のときは、ローカル座標 poskind == 1のときは、グローバル座標 が取得できます。 bonenoには、RDBGetPartNoByName で取得した番号を指定してください。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : boneno ボーンを識別するID RDBGetPartNoByNameで取得した パーツの番号を渡してください。 3. [IN] int : poskind ローカル座標と、グローバル座標の どちらを取得するかを指定します。 4. [IN] int : motid モーションを識別するID -1を指定すると、初期状態の位置を取得します。 (-1を指定した場合は、ローカル座標のみ) 5. [IN] int : frameno モーションのフレーム番号を指定してください。 6. [OUT] RDBPoint* : posptr (posptr->x, posptr->y, posptr->z)に、 ボーンの座標が代入されます。 |
ver1.0.7.6で新規 |
RDBGetBoneMatrix | ボーン、モーション | ボーンの姿勢情報を表すマトリクスを取得します。 マトリックスには、スケール、回転、移動の操作が反映されています modeに0を指定すると、親の姿勢が掛かっていないマトリックスを、 modeに1を指定すると、親の姿勢が掛かっているマトリックスを取得できます。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno モーションのフレーム番号を指定してください。 5. [IN] int : mode 親の姿勢が掛かっていない情報を取得したい場合は0を、 親の姿勢が掛かっている情報を取得したい場合は1を指定してください。 6. [OUT] RDBMatrix* : bonematptr マトリクスが代入されます。 |
ver1.0.7.6で新規 |
RDBGetBoneQuaternion | ボーン、モーション | ボーンの回転情報のクォータニオンを取得します。 modeに0を指定すると、親の姿勢が掛かっていないクォータニオンを、 modeに1を指定すると、親の姿勢が掛かっているクォータニオンを取得できます。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno モーションのフレーム番号を指定してください。 5. [IN] int : mode 親の姿勢が掛かっていない情報を取得したい場合は0を、 親の姿勢が掛かっている情報を取得したい場合は1を指定してください。 6. [OUT] RDBQuaternion* : qptr クォータニオンが代入されます。 |
ver1.0.7.6で新規 |
RDBGetFrameLeng | ボーン、モーション | モーションのフレーム長を取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [OUT] int* : lengptr モーションの長さが代入されます。 |
ver1.0.7.6で新規 |
RDBGetKeyFrameNo | ボーン、モーション | 指定したジョイントのキーフレームの番号(フレーム番号)を取得します。 framearrayに、キーフレームの番号が代入されます。 RDBGetFrameLengで取得した値をlengとすると。 framearrayは、 framearray = (int*)malloc( sizeof( int ) * leng ); でアロケートしてください。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンパーツを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [OUT] int* : framearray この配列に、フレーム番号が、代入されます。 アロケートの仕方は、上記をご覧ください。 5. [IN] int : arrayleng framearrayをアロケートしたときの要素数を指定してください。 上記の例ですと、 (framemax + 1)を指定することになります。 6. [OUT] int* : framenumptr framearrayに格納した要素の数が代入されます。 キーフレームの数です。 |
ver1.0.7.6で新規 |
RDBGetKeyFrameSRT | ボーン、モーション | 指定したキーフレームの姿勢情報を、SRTに分けて取得します。 RDBGetOffsetMatrixとセットで使うことを想定しています。 DX9SDKのSkinnedMeshサンプルと同じ形式のSRTを取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンパーツを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno RDBGetKeyFrameNoで取得したフレーム番号の1つを指定してください。 6. [OUT] RDBPoint* : pscale 姿勢情報の拡大を表すベクトルが代入されます。 7. [OUT] RDBQuaternion* : prot 姿勢情報の回転を表すクォータニオンが代入されます。 8. [OUT] RDBPoint* : ptra 姿勢情報の移動を表すベクトルが代入されます。 |
ver1.0.7.6で新規 |
RDBGetKeyFrameSRT2 | ボーン、モーション | 指定したキーフレームの姿勢情報を、SRTに分けて取得します。 RokDeBone2が内部で保持している形式のままのSRTを取得します。 内部ではOffsetMatrixを使用しないので、RDBGetKeyFrameSRTの結果とはTが異なります。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンパーツを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno RDBGetKeyFrameNoで取得したフレーム番号の1つを指定してください。 6. [OUT] RDBPoint* : pscale 姿勢情報の拡大を表すベクトルが代入されます。 7. [OUT] RDBQuaternion* : prot 姿勢情報の回転を表すクォータニオンが代入されます。 8. [OUT] RDBPoint* : ptra 姿勢情報の移動を表すベクトルが代入されます。 |
ver3.0.4.0で追加 |
RDBGetOffsetMatrix | ボーン、モーション | DX9のSetBoneOffsetMatrixに渡すマトリックスを取得します。 モーション番号、フレーム番号にかかわらず、同じ値が取得されます。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンパーツを識別する番号を指定してください。 3. [OUT] RDBMatrix* : offsetmatptr マトリクスが代入されます。 |
ver1.0.7.6で新規 |
RDBGetCurrentFrameNo | ボーン、モーション | RokDeBone2のモーションダイアログの、現在のフレーム番号を取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [OUT] int* : framenoptr 現在のフレーム番号が代入されます。 |
ver1.0.7.6で新規 |
RDBSetMotionFrameNo | ボーン、モーション | モーションのIDとフレーム番号をセットします。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : frameno モーションのフレーム番号。 RDBGetFrameLengで取得したフレーム長をframelengとすると この引数に指定する数字は0から(frameleng - 1)までの数字でないといけません。 |
ver5.2.1.7で新規 |
RDBDbgOut | デバッグ出力 | RokDeBone2で作成する、dbg.txtに、文字列を出力します。 printfの要領で、使ってください。 一度の命令で出力できる文字は、4097バイトまでです。 RDBDbgOut( char* lpFormat, ... ); |
ver1.0.7.6で新規 |
RDBSaveSigFile | ファイル出力 | 形状データ、影響度の入った、sigファイルを、出力します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] char* : filename 保存ファイル名(パス)を指定してください。 |
ver1.1.1.5で新規 |
RDBCreateProgressBar | プログレスバー | RokDeBone2のメインウインドウの下部に、プログレスバーを作成します。 引数: なし |
ver1.1.1.7で新規 |
RDBSetProgressBar | プログレスバー | 作業の達成率などを、 プログレスバーに表示させます。 pos は、0から100の間の数を、 セットしてください。 引数: 1. [IN] int : pos 達成率(0から100) |
ver1.1.1.7で新規 |
RDBDestroyProgressBar | プログレスバー | RDBCreateProgressBarで作成したプログレスバーを、削除します。 引数: なし |
ver1.1.1.7で新規 |
RDBGetMaterialNum | マテリアル | マテリアルの総数を取得します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [OUT] int* : matnumptr マテリアルの総数が代入されます。 |
|
RDBGetMaterial | マテリアル | マテリアルを取得します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : matno マテリアル番号 RDBGetMaterialNumで取得した数をmatnumとすると、0から(matnum - 1)の値を指定してください。 3. [OUT] RDBMaterialt* : matptr マテリアルが代入されます。 |
|
RDBGetMaterialNo | マテリアル | 表示オブジェクトの指定した面にどのマテリアルが貼られているかを取得します。 引数: 1. [IN] int : hsid 形状データを識別するID 2. [IN] int : partno 表示オブジェクトのシリアル番号を指定してください。 3. [IN] int : faceno 面の番号を指定してください。0から(面の総数-1)までの値。 4. [OUT] intt* : matnoptr マテリアル番号が代入されます。 |
|
RDBGetMorphBaseNum | モーフ | モーフのベースの数を取得します。 それぞれのモーフにはベースは1個だけしか含まれないので この数はモーフの数と一致します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [OUT] int* : basenumptr ベースの数が代入されます。 |
ver5.2.1.7で新規 |
RDBGetMorphBaseInfo | モーフ | モーフのベースの情報を一括で取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [OUT] RDBMORPHBASE* : baseinfoptr ベースの情報が代入されます。 RDBMORPHBASEはRDBPlugin.hで定義されています。 RDBGetMorphBaseNum( hsid, &basenum ); baseinfo = (RDBMORPHBASE*)malloc( sizeof( RDBMORPHBASE ) * basenum ); のようにして作成したメモリを指定してください。 3. [IN] int : arrayleng baseinfoの要素数を指定してください。 RDBGetMorphBaseNumで取得したbasenum個じゃないとエラーになります。 |
ver5.2.1.7で新規 |
RDBGetMorphTargetInfo | モーフ | モーフのターゲットの情報をモーフごと(ベースごと)に取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : baseid モーフのベースを識別する番号を指定してください。 E3DGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 3. [OUT] RDBMORPHTARGET* : targetinfoptr ターゲットの情報が代入されます。 RDBMORPHTARGETはRDBPlugin.hで定義されています。 ベースに含まれるターゲット数分の要素数のメモリを渡してください。 targetinfo = (RDBTARGETINFO*)malloc( sizeof( RDBTARGETINFO ) * (baseinfo + baseno)->targetnum ); のようにして作成してください。 4. [IN] int : arrayleng targetinfoの要素数を指定してください。 ベースに含まれるターゲット数と異なる場合にはエラーになります。 |
ver5.2.1.7で新規 |
RDBGetMorphKeyNum | モーフ | モーフモーションのキーの数を取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 4. [IN] int : baseid モーフのベースを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 5. [IN] int : targetid モーフのターゲットを識別する番号を指定してください。 RDBGetMorphTargetInfoで取得したtargetinfoptr->dispnoを指定してください。 6. [OUT] int* : keynumptr キーの数が代入されます。 |
ver5.2.1.7で新規 |
RDBGetMorphKey | モーフ | モーフモーションの情報をキーの数分取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 4. [IN] int : baseid モーフのベースを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 5. [IN] int : targetid モーフのターゲットを識別する番号を指定してください。 RDBGetMorphTargetInfoで取得したtargetinfoptr->dispnoを指定してください。 6. [OUT] RDBMORPHMOTION* : motioninfoptr モーション情報が代入されます。 RDBMORPHMOTIONはRDBPlugin.hで定義されています。 RDBGetMorphKeyNum( hsid, motid, baseid, targetid, &keynum ); motioninfo = (RDBMORPHMOTION*)malloc( sizeof( RDBMORPHMOTION ) * keynum ); のようにしてメモリを作成してください。 7. [IN] int : arrayleng motioninfoptrの要素数を指定してください。 RDBGetMorphKeyNumで取得したkeynum個じゃないとエラーになります。 |
ver5.2.1.7で新規 |
RDBGetCurMorphInfo | モーフ | 任意のフレーム番号の補間済みのモーフモーション情報を取得します。 この命令では現在編集中のモーションID、フレーム番号についての情報を取得します。 任意のモーション、フレーム番号の情報を取得したい場合は RDBSetMotionFrameNoと組み合わせて使ってください。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 3. [IN] int : baseid モーフのベースを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 4. [IN] int : targetid モーフのターゲットを識別する番号を指定してください。 RDBGetMorphTargetInfoで取得したtargetinfoptr->dispnoを指定してください。 5. [OUT] RDBMORPHMOTION* : motioninfoptr モーション情報が代入されます。 RDBMORPHMOTIONはRDBPlugin.hで定義されています。 要素数は1。 |
ver5.2.1.7で新規 |
RDBCreateMorph | モーフ | モーフを作成します。 ベースのIDとボーンのIDを指定します。 ここで指定したボーンに作成したモーフのモーション情報が格納されます。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : baseid ベースを識別する番号を指定してください。 RDBGetPartNoByNameなどでIDを取得して指定してください。 3. [IN] int : boneid ボーンを識別する番号を指定してください。 RDBGetPartNoByNameなどでIDを取得して指定してください。 |
ver5.2.1.7で新規 |
RDBAddMorphTarget | モーフ | RDBCreateMorphで作成したモーフにターゲットを追加します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : baseid ベースを識別する番号を指定してください。 RDBGetPartNoByNameなどでIDを取得して指定してください。 3. [IN] int : targetid ターゲットを識別する番号を指定してください。 RDBGetPartNoByNameなどでIDを取得して指定してください。 |
ver5.2.1.7で新規 |
RDBSetMorphKey | モーフ | モーフモーションのキーを作成します。 キーがすでにある場合は既存のキーに上書きします。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 4. [IN] int : baseid モーフのベースを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 5. [IN] int : targetid モーフのターゲットを識別する番号を指定してください。 RDBGetMorphTargetInfoで取得したtargetinfoptr->dispnoを指定してください。 6. [IN] RDBMORPHMOTION* : motioninfoptr モーフモーション情報を指定します。要素数1。 RDBMORPHMOTIONはRDBPlugin.hで定義されています。 |
ver5.2.1.7で新規 |
RDBDestroyMorphKey | モーフ | モーフモーションのキーを削除します。 モーフに含まれる全てのターゲットのキーが削除されます。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : boneid モーフモーション情報の格納先のボーンを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->bonenoを指定してください。 4. [IN] int : frameno 削除したいキーが存在するフレーム番号を指定してください。 5. [IN] int : baseid モーフのベースを識別する番号を指定してください。 RDBGetMorphBaseInfoで取得したbaseinfoptr->dispnoを指定してください。 |
ver5.2.1.7で新規 |
RDBGetToon1MaterialNum | トゥーン | トゥーンマテリアルの数を取得します。 トゥーンマテリアルとは通常のマテリアルとは異なります。 RokDeBone2の「トゥ」ボタンを押したときに出てくるダイアログに表示されているマテリアルのことです。 一回もトゥーン表示したことが無い状態でこの命令を呼ぶと、マテリアル数には0が返ってきます。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 RDBGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [OUT] int* : matnumptr トゥーンマテリアルの数が代入されます。 |
ver5.2.2.0で新規 |
RDBGetToon1Material | トゥーン | トゥーンマテリアルの情報をパーツごとに一括取得します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 RDBGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [OUT] E3DTOON1MATERIAL* : toon1ptr トゥーンマテリアルの情報が代入されます。 E3DTOON1MATERIALはRDBPlugin.hで定義されています。 E3DGetToon1MaterialNumで取得した数をmatnumとすると toon1ptr = (E3DTOON1MATERIAL*)malloc( sizeof( E3DTOON1MATERIAL ) * matnum ); のように作成したメモリを渡してください。 4. [IN] int : arrayleng toon1ptrを作成したときの要素数を指定します。 E3DGetToon1MaterialNumで取得できるmatnumと異なるとエラーになります。 |
ver5.2.2.0で新規 |
RDBSetToon1Name | トゥーン | トゥーンマテリアルの名前を変更します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 RDBGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : oldname 名前を変えたいトゥーンマテリアルの元の名前 4. [IN] char* : newname トゥーンマテリアルの新しい名前。 名前の長さは31バイトまでです。 |
ver5.2.2.0で新規 |
RDBSetToon1Diffuse | トゥーン | トゥーンマテリアルのDiffuse色を設定します。 ライトが当たった明るい部分の色です。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 RDBGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] RDBColor3f : diffuse diffuse色。 |
ver5.2.2.0で新規 |
RDBSetToon1Specular | トゥーン | トゥーンマテリアルのSpecular色を設定します。 ハイライトの部分の色です。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 RDBGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] RDBColor3f : specular specular色。 |
ver5.2.2.0で新規 |
RDBSetToon1Ambient | トゥーン | トゥーンマテリアルのAmbient色を設定します。 ライトが当たらない暗い部分の色です。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 RDBGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] RDBColor3f : ambient ambient色。 |
ver5.2.2.0で新規 |
RDBSetToon1NL | トゥーン | トゥーン表示のdiffuse, specular, ambientの割合を決めるための係数を設定します。 色の割合は面の法線とライトの反転ベクトルとのなす角度(deg)で決定します。 暗い色の角度の閾値をdarkdeg, ハイライトの角度の閾値をbrightdegとします。 degがdarkdegより大きい角度の部分は暗い色(ambient)で塗ります。 degがbrightdegより小さい角度の場合はハイライト(specular)で塗ります。 それ以外の部分は明るい色(diffuse)で塗ります。 darkdeg >= brightdegでないといけません。 ピンとこない方はRokDeBone2で「トゥ」ボタンを押してdarkdegとbrightdegを設定するスライダーを動かしてみて理解してください。 RokDeBone2内部ではこれらの閾値は角度ではなくてcosの値で保持しています。 そのためこの命令に渡す値もcos( darkdeg * DEG2PAI )とcos( brightdeg * DEG2PAI )を渡してください。 DEG2PAIはcoef_r.hで定義されています。「度」を「ラジアン」に変換するための定数です。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 RDBGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] float : darknl cos( darkdeg * DEG2PAI )を指定してください。 詳しくは前記をご覧ください。 5. [IN] float : brightnl cos( brightdeg * DEG2PAI )を指定してください。 詳しくは前記をご覧ください。 |
ver5.2.2.0で新規 |
RDBSetToon1Edge0 | トゥーン | トゥーンマテリアルのエッジ(輪郭線)のパラメータを設定します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : partno パーツを識別する番号を指定してください。 RDBGetDispObjInfoで取得した表示オブジェクトのIDを指定してください。 3. [IN] char* : matname トゥーンマテリアルの名前 4. [IN] RDBColor3f : col 輪郭線の色。 5. [IN] int : validflag 輪郭線を表示するときは1。しないときは0。 6. [IN] int : invflag 輪郭線用の面の向きを反転するときは1。しないときは0。通常は0。 両面オブジェクトの調整用。 7. [IN] float : width 輪郭線の幅。 |
ver5.2.2.0で新規 |
RDBSetKeyFrameSRT2 | ボーン、モーション | キーフレームのSRTを設定します。 OffsetMatrixを使用しないRokDeBone2形式のSRTです。 この命令を呼んだだけではモーションに姿勢は反映されません。 モーションに反映させるにはRDBFillUpMotionを呼んでください。 RDBFillUpMotionは重い処理なので、全ての姿勢の操作が終わってから1回だけ呼ぶようにしてください。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno モーションのフレーム番号。 RDBGetFrameLengで取得したフレーム長をframelengとすると この引数に指定する数字は0から(frameleng - 1)までの数字でないといけません。 5. [IN] RDBPoint* : scaleptr 拡大率を指定します。 6. [IN] RDBQuaternion* : rotptr 回転姿勢を指定します。 7. [IN] RDBPoint* : traptr 移動量を指定します。 |
ver5.5.0.5 |
RDBFillUpMotion | ボーン、モーション | キーフレームの情報から指定フレームの姿勢情報を計算します。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : motid モーションを識別する番号を指定してください。 3. [IN] int : topboneno ボーンを識別する番号を指定してください。 ここで指定したボーンとその子供全部の姿勢を再帰的に計算します。 -1を指定すると全てのボーンの姿勢を計算します。 4. [IN] int : startframe 計算を開始するフレーム番号。 RDBGetFrameLengで取得したフレーム長をframelengとすると この引数に指定する数字は0から(frameleng - 1)までの数字でないといけません。 5. [IN] int : endframe 計算を終了するフレーム番号。 RDBGetFrameLengで取得したフレーム長をframelengとすると この引数に指定する数字は0から(frameleng - 1)までの数字でないといけません。 |
ver5.5.0.5 |
RDBGetSplineParams | ボーン、モーション | キーフレームのスプライン補間のパラメータを取得します。 データタイプを以下に示します。 typedef struct tag_rdbspctrl { float spt;//制御点の横方向の係数 float spdist;//制御点の縦方向の係数 float distmax;//縦方向の係数の最大値(編集用のスライダーの最大値) float sppoint[2];//制御点の画面上の座標 float tmin;//横方向係数の最小値 float tmax;//横方向係数の最大値 int reserved[2];//未使用 }RDBSPCTRL; typedef struct tag_spparam { RDBSPCTRL ctrlS[INDMAX];//前半制御点。X,Y,Zそれぞれに。 RDBSPCTRL ctrlE[INDMAX];//後半制御点 int syncflag; int lockflag; int reserved[3]; }RDBSPPARAM; typedef struct tag_rdbspparamset { RDBSPPARAM m_rotparam;//回転のパラメータ RDBSPPARAM m_mvparam;//移動のパラメータ RDBSPPARAM m_scparam;//スケールのパラメータ int reserved[4]; } RDBSPPARAMSET; 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno モーションのフレーム番号。 RDBGetFrameLengで取得したフレーム長をframelengとすると この引数に指定する数字は0から(frameleng - 1)までの数字でないといけません。 5. [OUT] RDBSPPARAMSET* : sppptr パラメータを取得するデータのポインタを指定します。 |
ver5.5.0.5 |
RDBSetSplineParams | ボーン、モーション | キーフレームのスプライン補間のパラメータを設定します。 RDBSPCTRLのsppointメンバはRDBCalcSplineParamsで計算されるので特に指定しなくていいです。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 3. [IN] int : motid モーションを識別する番号を指定してください。 4. [IN] int : frameno モーションのフレーム番号。 RDBGetFrameLengで取得したフレーム長をframelengとすると この引数に指定する数字は0から(frameleng - 1)までの数字でないといけません。 5. [IN] int : setflag setflagに1を足すとrotparamを設定します。 setflagに2を足すとmvparamを設定します。 setflagに4を足すとscparamを設定します。 6. [IN] RDBSPPARAMSET* : sppptr パラメータを指定します。 |
ver5.5.0.5 |
RDBCalcSplineParams | ボーン、モーション | スプラインパラメータを計算し、表示できるようにします。 引数: 1. [IN] int : hsid モデルを識別する番号を指定してください。 2. [IN] int : boneno ボーンを識別する番号を指定してください。 -1を指定すると全てのボーンの計算をします。 3. [IN] int : motid モーションを識別する番号を指定してください。 |
ver5.5.0.5 |