# クラス fk_Model

モデルを生成、管理するクラス [詳細]

fk_Modelに対する継承グラフ
[凡例]
fk_Modelのコラボレーション図
[凡例]

すべてのメンバ一覧

## Public メソッド
| fk_Model (fk_Shape *shape=(fk_Shape *) NULL)
| コンストラクタ
virtual | ~fk_Model ()
| デストラクタ
unsigned int | getID (void) const
| ID参照関数.
形状データ制御関数
void | setShape (fk_Shape *shape)
| 形状設定関数
fk_Shape * | getShape (void) const
| 形状参照関数
マテリアル属性設定関数
void | setMaterial (const fk_Material &mat)
| マテリアル設定関数
void | setPointColor (fk_Color *col)
| 頂点色設定関数1
void | setPointColor (float r, float g, float b)
| 頂点色設定関数2
void | setLineColor (fk_Color *col)
| 稜線色設定関数1
void | setLineColor (float r, float g, float b)
| 稜線色設定関数2
void | deleteMaterial (void)
| 基本マテリアル削除関数
void | deletePointColor (void)
| 頂点色削除関数
void | deleteLineColor (void)
| 稜線色削除関数
マテリアル属性参照関数
fk_Material * | getMaterial (void)
| マテリアル参照関数
fk_Material * | getInhMaterial (void)
| 継承マテリアル参照関数
fk_Color * | getPointColor (void)
| 頂点色参照関数
fk_Color * | getInhPointColor (void)
| 継承頂点色参照関数
fk_Color * | getLineColor (void)
| 稜線色参照関数
fk_Color * | getInhLineColor (void)
| 継承稜線色参照関数
描画属性制御関数
void | setSize (const double size)
| 頂点描画サイズ設定関数
void | setWidth (const double width)
| 稜線描画幅設定関数
double | getSize (void) const
| 頂点描画サイズ参照関数
double | getWidth (void) const
| 稜線描画幅設定関数
描画モード制御関数
void | setDrawMode (const fk_DrawMode mode)
| 描画モード設定関数
fk_DrawMode | getDrawMode (void) const
| 描画モード参照関数
void | setMaterialMode (const fk_MaterialMode mode)
| マテリアルモード設定関数
fk_MaterialMode | getMaterialMode (void) const
| マテリアルモード参照関数
void | setPickMode (const bool mode)
| ピックモード設定関数
bool | getPickMode (void) const
| ピックモード参照関数
void | setSmoothMode (const bool mode)
| スムースモード設定関数
bool | getSmoothMode (void) const
| スムースモード参照関数
void | setReverseDrawMode (const bool mode)
| 描画順序制御関数
bool | getReverseDrawMode (void) const
| 描画順序参照関数
座標系情報参照関数
fk_Matrix | getInhMatrix (void) const
| 継承変換行列取得関数
fk_Matrix | getInhInvMatrix (void) const
| 継承逆変換行列取得関数
fk_OrthoMatrix | getInhBaseMatrix (void) const
| 継承移動・回転要素変換行列取得関数
fk_OrthoMatrix | getInhInvBaseMatrix (void) const
| 継承移動・回転要素逆変換行列取得関数
fk_Vector | getInhPosition (void) const
| 継承位置ベクトル参照関数
fk_Vector | getInhVec (void) const
| 継承方向ベクトル参照関数
fk_Vector | getInhUpvec (void) const
| 継承アップベクトル参照関数
fk_Angle | getInhAngle (void) const
| 継承オイラー角参照関数
親子関係制御関数
bool | setParent (fk_Model *model, bool setMode=false)
| 親モデル設定関数
void | deleteParent (bool setMode=false)
| 親モデル解除関数
fk_Model * | getParent (void) const
| 親モデル参照関数
bool | entryChild (fk_Model *model, bool setMode=false)
| 子モデル設定関数
bool | deleteChild (fk_Model *model, bool setMode=false)
| 子モデル解除関数
void | deleteChildren (bool setMode=false)
| 全子モデル解除関数
fk_Model * | foreachChild (fk_Model *model)
| 子モデル逐次参照関数
状態保存制御関数
void | snapShot (void)
| 位置・姿勢保存関数
bool | restore (void)
| 位置・姿勢復元関数
bool | restore (double t)
| 位置・姿勢途中復元関数
描画制御用関数
virtual void | preShader (void)
| 描画処理事前関数
virtual void | postShader (void)
| 描画処理事後関数

## 説明

モデルを生成、管理するクラス

このクラスは、「モデル」を制御する機能を提供します。 FK における「モデル」とは、位置や方向を持ったオブジェクトのことを指します。 利用者は、このクラスを通じてカメラを含むオブジェクトの位置や姿勢を制御していきます。 従って、このクラスは FK システムにおいて最も中心的な存在であると言えます。 位置や姿勢を制御するための関数の多くは、 fk_MatrixAdmin クラスから継承しています。 (ただし、後述する「親子関係」に関連する機能は本クラス自体が持っています。) fk_MatrixAdmin クラスの説明も合わせて参照して下さい。

FK において、モデルと形状は別の存在として扱います。 形状は別のクラスで作成しておき、モデルに対して形状をリンクするという考え方です。 このような設計になっている利点は、 まず第1に1つのモデルが複数の形状を使い分けられるということがあります。 第2に、1つの形状を複数のモデルで共有することでメモリ利用量を削減できます。 形状については fk_Shape クラスおよびその派生クラスを参照して下さい。

位置や姿勢の制御と共に、このクラスの重要な機能の1つが「親子関係」です。 あるモデルを別のモデルに「子モデル」として登録したとします。 親モデルの位置や姿勢を制御すると、 子モデルの形状は親モデル内の形状と同じように追従するようになります。 例えば、車を車体モデルとタイヤモデルで別々に作成し、 タイヤモデルを車体モデルの子モデルとして登録しておけば、 車体モデルの位置移動にあわせてタイヤモデルも位置関係を維持しながら一緒に移動します。 マテリアルや頂点色、稜線色については、 何も設定しない場合は親モデルの設定が用いられます。 それぞれのモデルにマテリアルや色属性を設定した場合、 そのモデルについては個々の設定が利用されるようになります。

参照:
  fk_MatrixAdmin, fk_Shape, fk_Scene, fk_DisplayLink

## コンストラクタとデストラクタ

fk_Model::fk_Model | ( | fk_Shape * | shape = `(fk_Shape *) NULL` | ) |

コンストラクタ

引数:

  `[in]` | shape | 形状インスタンスのポインタ。 NULL を代入した場合や引数を省略した場合は、 初期形状が無い状態になります。

virtual fk_Model::~fk_Model | ( |  | ) | `[virtual]`

デストラクタ

## 関数

unsigned int fk_Model::getID | ( | void |  | ) | const

ID参照関数.

モデルの固有IDを取得します。 IDの最小値は 1 で、 同一プロセス中では同じ ID が別のモデルに割り振られることはありません。

戻り値:
  固有モデルID

void fk_Model::setShape | ( | fk_Shape * | shape | ) |

形状設定関数

モデルの形状を設定します。 形状は、 fk_Shape クラスの派生クラスであれば設定可能です。 なお、呼ぶ前に形状が設定されていた場合、前の設定は破棄されます。

設定した形状インスタンスは、モデルに設定した状態で解放しないようにしてください。 もし解放された場合、プログラムが誤動作を起こします。

引数:

  `[in]` | shape | 形状インスタンスのポインタ

fk_Shape* fk_Model::getShape | ( | void |  | ) | const

形状参照関数

現在設定されている形状を取得します。 形状が設定されていない場合は NULL を返します。

戻り値:
  形状インスタンスのポインタ

void fk_Model::setMaterial | ( | const fk_Material & | mat | ) |

マテリアル設定関数

モデルの基本マテリアルを設定します。 マテリアルに関しての詳細は、 fk_Material の説明およびユーザーズマニュアルを参照して下さい。

覚え書き:
  稜線の色は setLineColor(), 頂点の色は setPointColor() を利用して設定して下さい。 個別位相要素のマテリアルとの制御については、 setMaterialMode() を参照して下さい。 テクスチャを描画する際には、テクスチャモードによって混合の仕方が異なりますので、 fk_Texture::setTextureMode() を参照して下さい。

引数:

  `[in]` | mat | マテリアル

参照:
  fk_Material, setLineColor(), setPointColor(), fk_Texture::setTextureMode()

void fk_Model::setPointColor | ( | fk_Color * | col | ) |

頂点色設定関数1

モデルの頂点色を設定します。 頂点は、光源による陰影の影響はなく、常に設定色で表示されます。

引数:

  `[in]` | col | 頂点色のポインタ

参照:
  fk_Color

void fk_Model::setPointColor | ( | float | r,
|  | float | g,
|  | float | b |
| ) |  |  |

頂点色設定関数2

モデルの頂点色を設定します。 頂点は、光源による陰影の影響はなく、常に設定色で表示されます。 各色要素は 0 から 1 までの値を取ります。 それ以外の値が与えられた場合、0 以下なら 0 に、1 以上なら 1 に丸められます。

引数:

  `[in]` | r | 頂点色の赤要素
  `[in]` | g | 頂点色の緑要素
  `[in]` | b | 頂点色の青要素

void fk_Model::setLineColor | ( | fk_Color * | col | ) |

稜線色設定関数1

モデルの稜線色を設定します。 稜線は、光源による陰影の影響はなく、常に設定色で表示されます。

引数:

  `[in]` | col | 稜線色のポインタ

参照:
  fk_Color

void fk_Model::setLineColor | ( | float | r,
|  | float | g,
|  | float | b |
| ) |  |  |

稜線色設定関数2

モデルの稜線色を設定します。 稜線は、光源による陰影の影響はなく、常に設定色で表示されます。 各色要素は 0 から 1 までの値を取ります。 それ以外の値が与えられた場合、0 以下なら 0 に、1 以上なら 1 に丸められます。

引数:

  `[in]` | r | 稜線色の赤要素
  `[in]` | g | 稜線色の緑要素
  `[in]` | b | 稜線色の青要素

void fk_Model::deleteMaterial | ( | void |  | ) |

基本マテリアル削除関数

基本マテリアル設定を削除します。 これにより、親モデルが存在する場合は親モデルの基本マテリアルを継承します。 親モデルが存在しない場合は、システムのデフォルトマテリアルが採用されます。

void fk_Model::deletePointColor | ( | void |  | ) |

頂点色削除関数

頂点色設定を削除します。 これにより、親モデルが存在する場合は親モデルの頂点色を継承します。 親モデルが存在しない場合は、システムのデフォルト頂点色が採用されます。

void fk_Model::deleteLineColor | ( | void |  | ) |

稜線色削除関数

稜線色設定を削除します。 これにより、親モデルが存在する場合は親モデルの稜線色を継承します。 親モデルが存在しない場合は、システムのデフォルト稜線色が採用されます。

fk_Material* fk_Model::getMaterial | ( | void |  | ) |

マテリアル参照関数

現在モデルに設定されている基本マテリアルを参照します。 モデルにマテリアルが設定されていない場合は NULL を返します。

戻り値:
  基本マテリアルのポインタ

参照:
  fk_Material, setMaterial(), getInhMaterial()

fk_Material* fk_Model::getInhMaterial | ( | void |  | ) |

継承マテリアル参照関数

親子関係を踏まえた基本マテリアルを参照します。 当モデルにマテリアルが設定されている場合、そのマテリアルを返します。 当モデルにマテリアルが設定されていない場合は、親モデルのマテリアルを返します。

戻り値:
  継承マテリアルのポインタ

参照:
  fk_Material, setMaterial(), getMaterial()

fk_Color* fk_Model::getPointColor | ( | void |  | ) |

頂点色参照関数

現在モデルに設定されている頂点色を参照します。 モデルに頂点色が設定されていない場合は NULL を返します。

戻り値:
  頂点色のポインタ

参照:
  fk_Color, setPointColor(), getInhPointColor()

fk_Color* fk_Model::getInhPointColor | ( | void |  | ) |

継承頂点色参照関数

親子関係を踏まえた頂点色を参照します。 当モデルに頂点色が設定されている場合、その頂点色を返します。 当モデルに頂点色が設定されていない場合は、親モデルの頂点色を返します。

戻り値:
  頂点色のポインタ

参照:
  fk_Color, setPintColor(), getPointColor()

fk_Color* fk_Model::getLineColor | ( | void |  | ) |

稜線色参照関数

現在モデルに設定されている稜線色を参照します。 モデルに稜線色が設定されていない場合は NULL を返します。

戻り値:
  稜線色のポインタ

参照:
  fk_Color, setLineColor(), getInhLineColor()

fk_Color* fk_Model::getInhLineColor | ( | void |  | ) |

継承稜線色参照関数

親子関係を踏まえた稜線色を参照します。 当モデルに稜線色が設定されている場合、その稜線色を返します。 当モデルに稜線色が設定されていない場合は、親モデルの稜線色を返します。

戻り値:
  稜線色のポインタ

参照:
  fk_Color, setLineColor(), getLineColor()

void fk_Model::setSize | ( | const double | size | ) |

頂点描画サイズ設定関数

頂点の描画サイズを設定します。 単位はピクセルです。整数以外も設定可能です。

/param[in] size 頂点描画サイズ

void fk_Model::setWidth | ( | const double | width | ) |

稜線描画幅設定関数

稜線の描画幅を設定します。 単位はピクセルです。整数以外も設定可能です。

引数:

  `[in]` | width | 稜線幅

double fk_Model::getSize | ( | void |  | ) | const

頂点描画サイズ参照関数

頂点の描画サイズを取得します。

戻り値:
  頂点描画サイズ

double fk_Model::getWidth | ( | void |  | ) | const

稜線描画幅設定関数

稜線の描画幅を取得します。

戻り値:
  稜線幅

void fk_Model::setDrawMode | ( | const fk_DrawMode | mode | ) |

描画モード設定関数

モデルの描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。

- FK_NONEMODE: 何も描画しません。
- FK_POINTMODE: 頂点を描画します。
- FK_LINEMODE: 稜線を描画します。
- FK_POLYMODE: 面の表を描画します。
- FK_BACK_POLYMODE: 面の裏を描画します。
- FK_FRONTBACK_POLYMODE: 面の表と裏を描画します。

これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。

        fk_Model        model;

        model.setDrawMode(FK_POINTMODE | FK_LINEMODE | FK_POLYMODE);

引数:

  `[in]` | mode | 描画モード

fk_DrawMode fk_Model::getDrawMode | ( | void |  | ) | const

描画モード参照関数

現在の描画モードを参照します。

戻り値:
  描画モード

参照:
  setDrawMode()

void fk_Model::setMaterialMode | ( | const fk_MaterialMode | mode | ) |

マテリアルモード設定関数

形状中の各要素を描画する際に、どの要素のマテリアルを採用するかを設定します。 マテリアルの採用は、以下のような優先順で決定します。

1. fk_Model のマテリアルモードが FK_CHILD_MODE の場合、 モデルのマテリアルが採用されます。 FK_NONE_MODE の場合は描画されません。 FK_PARENT_MODE の場合は以下の条件に従います。
2. fk_Shape の派生クラスにてマテリアルモードが FK_CHILD_MODE になっている場合、形状のマテリアルが採用されます。 FK_NONE_MODE の場合は描画されません。 FK_PARENT_MODE の場合は以下の条件に従います。 (fk_Shape::setMaterialMode() を参照して下さい。)
3. 各位相要素でのマテリアルモードが、 FK_CHILD_MODE になっている場合は個別のマテリアルが採用されます。 FK_NONE_MODE の場合は描画されません。 FK_PARENT_MODE の場合はモデルのマテリアルが採用されます。 (fk_TopologyMaterial::setElemMaterialMode() を参照して下さい。)

引数:

  `[in]` | mode | マテリアルモードを設定します。与えられる値は以下の3種類です。 FK_CHILD_MODE FK_PARENT_MODE FK_NONE_MODE

参照:
  getMaterialMode(), fk_Shape::setMaterialMode(), fk_TopologyMaterial::setElemMaterialMode()

fk_MaterialMode fk_Model::getMaterialMode | ( | void |  | ) | const

マテリアルモード参照関数

モデルのマテリアルモードを取得します。

戻り値:
  マテリアルモード

参照:
  setMaterialMode()

void fk_Model::setPickMode | ( | const bool | mode | ) |

ピックモード設定関数

モデルのピックモードを設定します。 ピックモードとは、 モデルをピックによる取得操作の対象とするかどうかを制御するものです。 ピックモードが有効である場合、モデルはピック取得の候補となります。 デフォルトでは無効となっています。

引数:

  `[in]` | mode | true である場合、ピックモードが有効となります。 false である場合は無効となります。

参照:
  fk_Window::getPickModel(), fk_PickData

bool fk_Model::getPickMode | ( | void |  | ) | const

ピックモード参照関数

現在のピックモードを取得します。

戻り値:
  有効である場合 true を、無効である場合 false を返します。

参照:
  setPickMode(), fk_Window::getPickModel(), fk_PickData

void fk_Model::setSmoothMode | ( | const bool | mode | ) |

スムースモード設定関数

モデルのスムースモードを設定します。 スムースモードを有効にすると、 形状の隣り合う面同士の法線ベクトルが補間され、 擬似的に滑らかな曲面として表示を行うようになります。

引数:

  `[in]` | mode | true である場合、スムースモードを有効とします。 false である場合無効とします。

bool fk_Model::getSmoothMode | ( | void |  | ) | const

スムースモード参照関数

現在のモデルのスムースモードを取得します。

戻り値:
  有効である場合 true を、無効である場合 false を返します。

参照:
  setSmoothMode()

void fk_Model::setReverseDrawMode | ( | const bool | mode | ) |

描画順序制御関数

この関数では、モデルの持つ位相要素の描画順序を制御します。 モデルの各位相要素が同一平面上にあり、描画順序を逆にしたい場合に用います。

引数:

  `[in]` | mode | true の場合、モデル内の描画が通常と逆順になります。 false の場合、順序を通常の状態に戻します。

bool fk_Model::getReverseDrawMode | ( | void |  | ) | const

描画順序参照関数

setReverseDrawMode() で設定した描画順序を取得します。

戻り値:
  逆順である場合 true を、正順である場合 false を返します。

参照:
  setReverseDrawMode()

fk_Matrix fk_Model::getInhMatrix | ( | void |  | ) | const

継承変換行列取得関数

モデルの位置と姿勢を表す変換行列を取得します。 当モデルに親モデルがあった場合、 その親モデルの変換行列と当モデルの変換行列の積が返されます。 結果として、この関数を用いることでグローバル座標系における 当モデルの変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin::getMatrix() と結果が同じとなります。

戻り値:
  モデルの継承変換行列

参照:
  fk_MatrixAdmin::getMatrix(), getInhInvMatrix()

fk_Matrix fk_Model::getInhInvMatrix | ( | void |  | ) | const

継承逆変換行列取得関数

モデルの位置と姿勢を表す変換行列の、逆行列を取得します。 これは、 getInhMatrix() で得られる行列の逆行列となります。 当モデルに親モデルがあった場合、 その親モデルの逆変換行列と当モデルの逆変換行列の積が返されます。 結果として、この関数を用いることでグローバル座標系における 当モデルの逆変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin::getInvMatrix() と結果が同じとなります。

戻り値:
  モデルの継承逆変換行列

参照:
  fk_MatrixAdmin::getInvMatrix(), getInhMatrix()

fk_OrthoMatrix fk_Model::getInhBaseMatrix | ( | void |  | ) | const

継承移動・回転要素変換行列取得関数

モデルの持つ変換要素のうち、 位置と姿勢のみを反映した、 すなわち拡大縮小の要素を省いた変換行列を取得します。 当モデルに親モデルがあった場合、 その親モデルの変換行列と当モデルの変換行列の積が返されます。 その結果として、この関数を用いることでグローバル座標系における 当モデルの変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin::getBaseMatrix() と結果が同じとなります。

戻り値:
  モデルの継承移動・回転要素変換行列

参照:
  fk_MatrixAdmin::getBaseMatrix(), getInhMatrix(), getInhInvBaseMatrix()

fk_OrthoMatrix fk_Model::getInhInvBaseMatrix | ( | void |  | ) | const

継承移動・回転要素逆変換行列取得関数

モデルの持つ変換要素のうち、 位置と姿勢のみを反映した、 すなわち拡大縮小の要素を省いた変換行列の逆行列を取得します。 当モデルに親モデルがあった場合、 その親モデルの逆変換行列と当モデルの逆変換行列の積が返されます。 その結果として、この関数を用いることでグローバル座標系における 当モデルの逆変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin::getInvBaseMatrix() と結果が同じとなります。

戻り値:
  モデルの継承移動・回転要素逆変換行列

参照:
  fk_MatrixAdmin::getInvBaseMatrix(), getInhInvMatrix(), getInhBaseMatrix()

fk_Vector fk_Model::getInhPosition | ( | void |  | ) | const

継承位置ベクトル参照関数

モデルの位置ベクトルを取得します。 本関数は、親モデルの有無にかかわらずグローバル座標系の位置ベクトルを返します。

戻り値:
  グローバル座標系での位置ベクトル

参照:
  getInhVec(), getInhUpvec(), getInhAngle(), fk_MatrixAdmin::getPosition()

fk_Vector fk_Model::getInhVec | ( | void |  | ) | const

継承方向ベクトル参照関数

モデルの方向ベクトルを取得します。 本関数は、親モデルの有無にかかわらずグローバル座標系の方向ベクトルを返します。

戻り値:
  グローバル座標系での方向ベクトル

参照:
  getInhPosition(), getInhUpvec(), getInhAngle(), fk_MatrixAdmin::getVec()

fk_Vector fk_Model::getInhUpvec | ( | void |  | ) | const

継承アップベクトル参照関数

モデルのアップベクトルを取得します。 本関数は、親モデルの有無にかかわらずグローバル座標系のアップベクトルを返します。

戻り値:
  グローバル座標系でのアップベクトル

参照:
  getInhPosition(), getInhVec(), getInhAngle(), fk_MatrixAdmin::getUpvec()

fk_Angle fk_Model::getInhAngle | ( | void |  | ) | const

継承オイラー角参照関数

モデルのオイラー角を取得します。 本関数は、親モデルの有無にかかわらずグローバル座標系のオイラー角を返します。 オイラー角の詳細については、 fk_Angle の説明を参照して下さい。

戻り値:
  グローバル座標系でのオイラー角

参照:
  getInhPosition(), getInhVec(), getInhUpvec(), fk_MatrixAdmin::getAngle(), fk_Angle

bool fk_Model::setParent | ( | fk_Model * | model,
|  | bool | setMode = `false` |
| ) |  |  |

親モデル設定関数

親モデルを設定します。 親モデルは 1 個しか設定できません。 前に設定されていた場合は、前のモデル設定は破棄されます。

引数:

  `[in]` | model | 親モデルインスタンスのポインタ
  `[in]` | setMode | true の場合、現在のグローバル座標系の位置と姿勢を、 親モデル設定後も保持します。 false の場合は、当モデルでの位置と姿勢を親モデルからの 相対的な位置、姿勢として扱います。 そのため、設定後にグローバル座標系での位置や姿勢は変化することになります。 この引数を省略した場合は false と同様の挙動となります。

戻り値:
  設定に成功すれば true を、失敗すれば false を返します。

参照:
  deleteParent(), getParent(), entryChild()

void fk_Model::deleteParent | ( | bool | setMode = `false` | ) |

親モデル解除関数

親モデルの設定を解除します。

引数:

  `[in]` | setMode | true の場合、現在のグローバル座標系の位置と姿勢を、 親モデル解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 この引数を省略した場合は false と同様の挙動となります。

参照:
  setParent(), getParent(), deleteChild()

fk_Model* fk_Model::getParent | ( | void |  | ) | const

親モデル参照関数

親モデルを取得します。

戻り値:
  親モデルインスタンスのポインタ。 親モデルが設定されていない場合は NULL を返します。

参照:
  setParent(), deleteParent()

bool fk_Model::entryChild | ( | fk_Model * | model,
|  | bool | setMode = `false` |
| ) |  |  |

子モデル設定関数

子モデルを設定します。 子モデルは複数持つことが可能なので、 既に子モデルが登録されている場合でも、その設定は破棄されません。

引数:

  `[in]` | model | 子モデルインスタンスのポインタ
  `[in]` | setMode | true の場合、子モデルの現在のグローバル座標系の位置と姿勢を、 設定後も保持します。 false の場合は、子モデルでの位置と姿勢を当モデルからの 相対的な位置、姿勢として扱います。 そのため、設定後にグローバル座標系での位置や姿勢は変化することになります。 この引数を省略した場合は false と同様の挙動となります。

戻り値:
  設定に成功すれば true を、失敗すれば false を返します。

参照:
  setParent(), deleteChild(), deleteChildren(), foreachChild()

bool fk_Model::deleteChild | ( | fk_Model * | model,
|  | bool | setMode = `false` |
| ) |  |  |

子モデル解除関数

子モデルの設定を解除します。

引数:

  `[in]` | model | 子モデルインスタンスのポインタ。 もし model が子モデルの中に存在しない場合は、false を返します。
  `[in]` | setMode | true の場合、子モデルのグローバル座標系の位置と姿勢を、 解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 この引数を省略した場合は false と同様の挙動となります。

戻り値:
  解除に成功すれば true を、失敗すれば false を返します。

参照:
  entryChild(), deleteChildren(), foreachChild()

void fk_Model::deleteChildren | ( | bool | setMode = `false` | ) |

全子モデル解除関数

当モデルの全ての子モデルの設定を解除します。

引数:

  `[in]` | setMode | true の場合、子モデルのグローバル座標系の位置と姿勢を、 解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 この引数を省略した場合は false と同様の挙動となります。

参照:
  entryChild(), deleteChild(), foreachChild()

fk_Model* fk_Model::foreachChild | ( | fk_Model * | model | ) |

子モデル逐次参照関数

当モデルに設定されている子モデルを順番に帰します。 まず、引数に NULL を渡したとき、1番目の子モデルを返します。 子モデルが存在しない場合は、その時点で NULL を返します。 次に、1番目に帰ってきたモデルを引数として渡したとき、 2番目の子モデルを返します。 このように、設定されている子モデルを順番に参照することができます。 最後の子モデルが引数として渡されたとき、NULL を返します。

以下のコードは、「parent」の全ての子モデルに対し、 描画モードを FK_LINEMODE に設定する例です。

        fk_Model    parentModel, *childModel;

        for(childModel = parentModel.foreachChild(NULL);
            childModel != NULL;
            childModel = parentModel.foreachChild(childModel)) {

            childModel->setDrawMode(FK_LINEMODE);
        }

引数:

  `[in]` | model | 順番に渡す子モデルインスタンスのポインタ

戻り値:
  次にあたる子モデルインスタンスのポインタ。 引数に最後の子モデルが渡された場合、NULL を返します。

参照:
  entryChild(), deleteChild(), deleteChildren()

void fk_Model::snapShot | ( | void |  | ) |

位置・姿勢保存関数

現時点でのモデルの位置と姿勢を保存します。 restore() 関数を用いることで復元します。

参照:
  restore()

bool fk_Model::restore | ( | void |  | ) |

位置・姿勢復元関数

snapShot() 関数によって保存した位置・姿勢を復元します。

戻り値:
  復元に成功すれば true を、失敗すれば false を返します。

bool fk_Model::restore | ( | double | t | ) |

位置・姿勢途中復元関数

snapShot() 関数によって保存した位置・姿勢に対し、 現在の位置・姿勢と線形補間した状態にします。

引数:

  `[in]` | t | 線形補間パラメータ。 0 を snapShot() 関数による保存時、 1 を現時点とし、 与えられた実数によって線形補間した位置と姿勢に設定します。

戻り値:
  設定に成功すれば true を、失敗すれば false を返します。

virtual void fk_Model::preShader | ( | void |  | ) | `[inline, virtual]`

描画処理事前関数

この関数は、 描画エンジン内部でモデルが実際に描画される前に自動的に呼び出されます。 デフォルトの状態では中身は空ですが、 fk_Model クラスの派生クラスを作成した上で、 この関数を上書きすることにより、 描画処理前の時点の処理を記述することが可能です。 主な利用用途はシェーダプログラミングやデバッグ、 あるいは独自形状描画などが考えられます。

本関数を利用するには、FK の描画エンジン内部に精通している必要があります。 ソースコードを解析し、内部処理を理解した上で利用することを推奨します。

virtual void fk_Model::postShader | ( | void |  | ) | `[inline, virtual]`

描画処理事後関数

この関数は、 描画エンジン内部でモデルが実際に描画された後に自動的に呼び出されます。 デフォルトの状態では中身は空ですが、 fk_Model クラスの派生クラスを作成した上で、 この関数を上書きすることにより、 描画処理後の時点の処理を記述することが可能です。 主な利用用途はシェーダプログラミングやデバッグ、 あるいは独自形状描画などが考えられます。

本関数を利用するには、FK の描画エンジン内部に精通している必要があります。 ソースコードを解析し、内部処理を理解した上で利用することを推奨します。