FK Performer キャラクターランタイムクラス [詳細]
Public メソッド | |
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 を参照してください。 http://www2.teu.ac.jp/aqua/~rita/FKP/
本クラスにおいて、各関節は階層構造的に接続されることになり、 内部的にはそれぞれに対応する fk_Model 型のインスタンスを保持します。 最も上位となるモデルは getBaseModel() によって得られるインスタンスです。 その一つ下位に <base> というモデルがあり、 全ての関節モデルはこの <base> の子モデル、あるいはそれらの子孫のモデルとなります。 FK における親子関係の詳細は fk_Model のマニュアルを参照して下さい。
本クラスでの「モーション」とは、実際には各オブジェクトモデルの移動動作を指します。 各モーションは経過時間ごとの配置状況が記録されており、 この経過時間を「フレーム」と呼びます。 さらに、フレームを1つずつ進めていくことを「再生」と呼びます。 この「再生」を画面更新と一緒に行っていくことによって、 FK Performer で作成した動作アニメーションを FK 内で実行することが可能となります。
FK Performer では、一つのモーションデータに複数のモーションを格納することが可能です。 各モーションには「モーション番号」という ID が割り振られ、最初のものが 0 となります。 先述した再生フレームは、各モーションごとに個別に管理されます。
fk_Performer::fk_Performer | ( | void | ) |
コンストラクタ
fk_Performer::~fk_Performer | ( | void | ) |
デストラクタ
bool fk_Performer::cloneCharactor | ( | fk_Performer * | perf | ) |
キャラクタークローン関数
異なるインスタンス間に、キャラクターのデータをクローンします。
[in] | perf | コピー元インスタンスのポインタ。 |
bool fk_Performer::loadObjectData | ( | const std::string & | filename | ) |
MQO オブジェクト読み込み関数
メタセコイアの形状モデル(MQOデータ)を読み込みます。
[in] | filename | 形状モデルファイル名。 |
bool fk_Performer::loadJointData | ( | const std::string & | filename | ) |
FKC ジョイント読み込み関数
FK Performer による関節セットアップデータ(FKCデータ)を読み込みます。
[in] | filename | 間接セットアップデータファイル名。 |
bool fk_Performer::loadMotionData | ( | const std::string & | filename | ) |
FKM モーション読み込み関数
FK Performer によるモーションデータ(FKMデータ)を読み込みます。 複数のモーションを読み込みたい場合は、1つずつ順番に読み込みます。 読み込んだモーションには、最初に読み込んだものを 0 番とし、読み込む順番で 1 ずつ追加した ID が割り振られます。
[in] | filename | モーションデータファイル名。 |
void fk_Performer::entryScene | ( | fk_Scene * | scene | ) |
void fk_Performer::removeScene | ( | fk_Scene * | scene | ) |
int fk_Performer::getObjectNum | ( | void | ) |
オブジェクト数取得関数
そのキャラクターのオブジェクト数(関節数)を返します。<base> の分も含みます。
fk_Model* fk_Performer::getBaseModel | ( | void | ) |
ベースモデル取得関数
そのキャラクターの全体的な位置・姿勢を制御するモデルのインスタンスを取得します。 この getBaseModel() で制御できるのは、FK Performer 中での <base> ではなく、 <base> を子とした更に上位の親モデルです。あえて二重構造にしてあります。 <base> を直接制御したい場合は getJointModel() 関数で引数に 0 を代入して使ってください。
fk_Model* fk_Performer::getObjectModel | ( | int | id | ) |
オブジェクトモデル取得関数
引数で指定した関節番号の fk_Model へポインタを返します。 オブジェクトモデルとは、実際に表示する形状がセットされているインスタンスを指します。 関節番号の順番は、Performer で読み込んだ時にリストに表示される順です。 0 が <base> に対応し、以降順番通りに 1,2,3... と割り振られます。 関節ごとの位置や姿勢を知りたいときに使えます。
[in] | id | 関節番号 |
fk_Model* fk_Performer::getJointModel | ( | int | id | ) |
ジョイントモデル取得関数
引数で指定した関節番号の fk_Model へポインタを返します。 ジョイントモデルとは、オブジェクトモデルをレイアウトするために利用している 形状を持たないインスタンスを指します。通常の場合は利用しませんが、 親子関係を辿ったり、座標系を可視化したりといった用途に用いると便利です。 関節番号の順番は、Performer で読み込んだ時にリストに表示される順です。 0 が <base> に対応し、以降順番通りに 1,2,3... と割り振られます。 関節ごとの位置や姿勢を知りたいときに使えます。
[in] | id | 関節番号 |
int fk_Performer::getNowFrame | ( | int | id | ) |
モーション再生位置取得関数
引数で指定したモーション番号が、現在何フレーム目まで進んでいるかを返します。
[in] | id | モーション番号 |
int fk_Performer::getTotalFrame | ( | int | id | ) |
モーションのトータルフレーム数取得関数
引数で指定したモーション番号のトータルフレーム数を返します。
[in] | id | モーション番号 |
bool fk_Performer::playMotion | ( | int | id | ) |
モーション再生関数
引数で指定したモーション番号に対応するモーションの再生を行います。 終端まで到達した場合は、次の呼び出し時には自動的に先頭に巻き戻って再生します。
[in] | id | モーション番号 |
void fk_Performer::stillMotion | ( | int | motionID, |
int | frameID | ||
) |
姿勢制御付きフレーム頭出し関数
指定したモーションの、指定したフレームの姿勢を強制的に取らせます。 今再生しているモーションを強制的に巻き戻す場合などに便利です。 無効なモーション番号、及びフレーム数を指定した場合は何もしません。
[in] | motionID | モーション番号 |
[in] | frameID | フレーム番号 |
void fk_Performer::setNowFrame | ( | int | motionID, |
int | frameID | ||
) |
姿勢制御無しフレーム頭出し関数
指定したモーションの再生位置を、指定したフレームにセットしますが、 実際にはその姿勢は取らせません。裏でこっそり巻き戻しておく場合に使えます。 無効なモーション番号、及びフレーム数を指定した場合は何もしません。
[in] | motionID | モーション番号 |
[in] | frameID | フレーム番号 |
bool fk_Performer::isMotionFinished | ( | int | id | ) |
モーション再生終了状態取得関数
指定したモーション番号が、終端まで到達しているかどうかをチェックします。
[in] | id | モーション番号 |
int fk_Performer::getLoopCount | ( | void | ) |
モーションのループ回数取得関数
現在再生しているモーションが、何回ループしているかを返します。