FineKernelToolKit: FK::fk_Performer クラス

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
FK::fk_Performer クラス

FK Performer キャラクターランタイムクラス [詳解]

`#include <FK/MotionCharactor.h>`

## 公開メンバ関数

| fk_Performer (void)
| コンストラクタ
| ~fk_Performer (void)
| デストラクタ
bool | cloneCharactor (fk_Performer *perf)
| キャラクタークローン関数
データ入力関数
bool | loadObjectData (const std::string &filename)
| MQO オブジェクト読み込み関数
bool | loadJointData (const std::string &filename)
| FKC ジョイント読み込み関数
bool | loadMotionData (const std::string &filename)
| FKM モーション読み込み関数
シーン登録制御関数
void | entryScene (fk_Scene *scene)
| シーン登録関数
void | removeScene (fk_Scene *scene)
| シーン登録解除関数
各種オブジェクト取得関数
int | getObjectNum (void)
| オブジェクト数取得関数
fk_Model * | getBaseModel (void)
| ベースモデル取得関数
fk_Model * | getObjectModel (int id)
| オブジェクトモデル取得関数
fk_Model * | getJointModel (int id)
| ジョイントモデル取得関数
モーション再生制御関数
int | getNowFrame (int id)
| モーション再生位置取得関数
int | getTotalFrame (int id)
| モーションのトータルフレーム数取得関数
bool | playMotion (int id)
| モーション再生関数
void | stillMotion (int motionID, int frameID)
| 姿勢制御付きフレーム頭出し関数
void | setNowFrame (int motionID, int frameID)
| 姿勢制御無しフレーム頭出し関数
bool | isMotionFinished (int id)
| モーション再生終了状態取得関数
int | getLoopCount (void)
| モーションのループ回数取得関数

## 詳解

FK Performer キャラクターランタイムクラス

このクラスは、FK Performer で作成したキャラクターやオブジェクトの表示、 モーション再生などを行う機能を提供します。

FK Performer は、メタセコイアで作成した MQO 形式の形状モデルを読み込み、 キーフレームアニメーションを作成することができるツールです。 ツールやデータの仕様に関する詳細は、次の URL を参照してください。 https://gamescience.jp/~rita/FKP/

本クラスにおいて、各関節は階層構造的に接続されることになり、 内部的にはそれぞれに対応する fk_Model 型のインスタンスを保持します。 最も上位となるモデルは getBaseModel() によって得られるインスタンスです。 その一つ下位に <base> というモデルがあり、 全ての関節モデルはこの <base> の子モデル、あるいはそれらの子孫のモデルとなります。 FK における親子関係の詳細は fk_Model のマニュアルを参照して下さい。

本クラスでの「モーション」とは、実際には各オブジェクトモデルの移動動作を指します。 各モーションは経過時間ごとの配置状況が記録されており、 この経過時間を「フレーム」と呼びます。 さらに、フレームを1つずつ進めていくことを「再生」と呼びます。 この「再生」を画面更新と一緒に行っていくことによって、 FK Performer で作成した動作アニメーションを FK 内で実行することが可能となります。

FK Performer では、一つのモーションデータに複数のモーションを格納することが可能です。 各モーションには「モーション番号」という ID が割り振られ、最初のものが 0 となります。 先述した再生フレームは、各モーションごとに個別に管理されます。

参照
  fk_Model, fk_Scene, fk_AppWindow

## 構築子と解体子

## ◆ fk_Performer()

FK::fk_Performer::fk_Performer | ( | void |  | ) |

コンストラクタ

## ◆ ~fk_Performer()

FK::fk_Performer::~fk_Performer | ( | void |  | ) |

デストラクタ

## 関数詳解

## ◆ cloneCharactor()

bool FK::fk_Performer::cloneCharactor | ( | fk_Performer * | perf | ) |

キャラクタークローン関数

異なるインスタンス間に、キャラクターのデータをクローンします。

引数

  [in] | perf | コピー元インスタンスのポインタ。

戻り値
  クローン成功時に true を、失敗時に false を返します。

## ◆ loadObjectData()

bool FK::fk_Performer::loadObjectData | ( | const std::string & | filename | ) |

MQO オブジェクト読み込み関数

メタセコイアの形状モデル(MQOデータ)を読み込みます。

引数

  [in] | filename | 形状モデルファイル名。

戻り値
  成功時に true、失敗時に false を返します。

## ◆ loadJointData()

bool FK::fk_Performer::loadJointData | ( | const std::string & | filename | ) |

FKC ジョイント読み込み関数

FK Performer による関節セットアップデータ(FKCデータ)を読み込みます。

引数

  [in] | filename | 間接セットアップデータファイル名。

戻り値
  成功時に true、失敗時に false を返します。

## ◆ loadMotionData()

bool FK::fk_Performer::loadMotionData | ( | const std::string & | filename | ) |

FKM モーション読み込み関数

FK Performer によるモーションデータ(FKMデータ)を読み込みます。 複数のモーションを読み込みたい場合は、1つずつ順番に読み込みます。 読み込んだモーションには、最初に読み込んだものを 0 番とし、読み込む順番で 1 ずつ追加した ID が割り振られます。

引数

  [in] | filename | モーションデータファイル名。

戻り値
  成功時に true、失敗時に false を返します。

## ◆ entryScene()

void FK::fk_Performer::entryScene | ( | fk_Scene * | scene | ) |

シーン登録関数

キャラクターをシーンに登録します。 既にシーンに登録されていた場合は変化はありません。

引数

  [in] | scene | 登録するシーンのポインタ。

参照
  removeScene()

## ◆ removeScene()

void FK::fk_Performer::removeScene | ( | fk_Scene * | scene | ) |

シーン登録解除関数

キャラクターのシーン登録を解除します。 シーンに登録されていなかった場合は変化はありません。

引数

  [in] | scene | 登録解除するシーンのポインタ。

参照
  entryScene()

## ◆ getObjectNum()

int FK::fk_Performer::getObjectNum | ( | void |  | ) |

オブジェクト数取得関数

そのキャラクターのオブジェクト数(関節数)を返します。<base> の分も含みます。

戻り値
  オブジェクト数(関節数)

## ◆ getBaseModel()

fk_Model * FK::fk_Performer::getBaseModel | ( | void |  | ) |

ベースモデル取得関数

そのキャラクターの全体的な位置・姿勢を制御するモデルのインスタンスを取得します。 この getBaseModel() で制御できるのは、FK Performer 中での <base> ではなく、 <base> を子とした更に上位の親モデルです。あえて二重構造にしてあります。 <base> を直接制御したい場合は getJointModel() 関数で引数に 0 を代入して使ってください。

戻り値
  ベースモデルインスタンスのポインタ

参照
  getObjectModel(), getJointModel()

## ◆ getObjectModel()

fk_Model * FK::fk_Performer::getObjectModel | ( | int | id | ) |

オブジェクトモデル取得関数

引数で指定した関節番号の fk_Model へポインタを返します。 オブジェクトモデルとは、実際に表示する形状がセットされているインスタンスを指します。 関節番号の順番は、Performer で読み込んだ時にリストに表示される順です。 0 が <base> に対応し、以降順番通りに 1,2,3... と割り振られます。 関節ごとの位置や姿勢を知りたいときに使えます。

引数

  [in] | id | 関節番号

戻り値
  関節番号に対応するオブジェクトモデルインスタンスのポインタ。 無効な関節番号を指定した場合は nullptr が返ります。

参照
  getBaseModel(), getJointModel()

## ◆ getJointModel()

fk_Model * FK::fk_Performer::getJointModel | ( | int | id | ) |

ジョイントモデル取得関数

引数で指定した関節番号の fk_Model へポインタを返します。 ジョイントモデルとは、オブジェクトモデルをレイアウトするために利用している 形状を持たないインスタンスを指します。通常の場合は利用しませんが、 親子関係を辿ったり、座標系を可視化したりといった用途に用いると便利です。 関節番号の順番は、Performer で読み込んだ時にリストに表示される順です。 0 が <base> に対応し、以降順番通りに 1,2,3... と割り振られます。 関節ごとの位置や姿勢を知りたいときに使えます。

引数

  [in] | id | 関節番号

戻り値
  関節番号に対応するジョイントモデルインスタンスのポインタ。 無効な関節番号を指定した場合は nullptr が返ります。

参照
  getBaseModel(), getObjectModel()

## ◆ getNowFrame()

int FK::fk_Performer::getNowFrame | ( | int | id | ) |

モーション再生位置取得関数

引数で指定したモーション番号が、現在何フレーム目まで進んでいるかを返します。

引数

  [in] | id | モーション番号

戻り値
  現在のフレーム番号。 無効なモーション番号を指定した場合は -1 が返ります。

## ◆ getTotalFrame()

int FK::fk_Performer::getTotalFrame | ( | int | id | ) |

モーションのトータルフレーム数取得関数

引数で指定したモーション番号のトータルフレーム数を返します。

引数

  [in] | id | モーション番号

戻り値
  指定したモーションの総フレーム数。 無効なモーション番号を指定した場合は -1 が返ります。

## ◆ playMotion()

bool FK::fk_Performer::playMotion | ( | int | id | ) |

モーション再生関数

引数で指定したモーション番号に対応するモーションの再生を行います。 終端まで到達した場合は、次の呼び出し時には自動的に先頭に巻き戻って再生します。

引数

  [in] | id | モーション番号

戻り値
  正常に再生がおこなれた場合は true を返します。 モーションが読み込まれていない時に再生しようとした場合 false を返します。 無効なモーション番号を指定した場合も false を返します。

## ◆ stillMotion()

void FK::fk_Performer::stillMotion | ( | int | motionID,
|  | int | frameID )

姿勢制御付きフレーム頭出し関数

指定したモーションの、指定したフレームの姿勢を強制的に取らせます。 今再生しているモーションを強制的に巻き戻す場合などに便利です。 無効なモーション番号、及びフレーム数を指定した場合は何もしません。

引数

  [in] | motionID | モーション番号
  [in] | frameID | フレーム番号

## ◆ setNowFrame()

void FK::fk_Performer::setNowFrame | ( | int | motionID,
|  | int | frameID )

姿勢制御無しフレーム頭出し関数

指定したモーションの再生位置を、指定したフレームにセットしますが、 実際にはその姿勢は取らせません。裏でこっそり巻き戻しておく場合に使えます。 無効なモーション番号、及びフレーム数を指定した場合は何もしません。

引数

  [in] | motionID | モーション番号
  [in] | frameID | フレーム番号

## ◆ isMotionFinished()

bool FK::fk_Performer::isMotionFinished | ( | int | id | ) |

モーション再生終了状態取得関数

指定したモーション番号が、終端まで到達しているかどうかをチェックします。

引数

  [in] | id | モーション番号

戻り値
  終端に到達していたら true、していなかったら false が返ります。

## ◆ getLoopCount()

int FK::fk_Performer::getLoopCount | ( | void |  | ) |

モーションのループ回数取得関数

現在再生しているモーションが、何回ループしているかを返します。

戻り値
  ループ回数