FineKernelToolKit  2.9.0
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
Public メソッド | すべてのメンバ一覧
クラス 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_ShapegetShape (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_MaterialgetMaterial (void)
 マテリアル参照関数 [詳細]
 
fk_MaterialgetInhMaterial (void)
 継承マテリアル参照関数 [詳細]
 
fk_ColorgetPointColor (void)
 頂点色参照関数 [詳細]
 
fk_ColorgetInhPointColor (void)
 継承頂点色参照関数 [詳細]
 
fk_ColorgetLineColor (void)
 稜線色参照関数 [詳細]
 
fk_ColorgetInhLineColor (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_ModelgetParent (void) const
 親モデル参照関数 [詳細]
 
bool entryChild (fk_Model *model, bool setMode=false)
 子モデル設定関数 [詳細]
 
bool deleteChild (fk_Model *model, bool setMode=false)
 子モデル解除関数 [詳細]
 
void deleteChildren (bool setMode=false)
 全子モデル解除関数 [詳細]
 
fk_ModelforeachChild (fk_Model *model)
 子モデル逐次参照関数 [詳細]
 
状態保存制御関数
void snapShot (void)
 位置・姿勢保存関数 [詳細]
 
bool restore (void)
 位置・姿勢復元関数 [詳細]
 
bool restore (double t)
 位置・姿勢途中復元関数 [詳細]
 
描画制御用関数
virtual void preShader (void)
 描画処理事前関数 [詳細]
 
virtual void postShader (void)
 描画処理事後関数 [詳細]
 
- Public メソッド inherited from fk_MatrixAdmin
 fk_MatrixAdmin (fk_ObjectType=FK_MATRIXADMIN)
 コンストラクタ [詳細]
 
virtual ~fk_MatrixAdmin ()
 デストラクタ [詳細]
 
fk_Vector getPosition (void) const
 位置ベクトル取得関数 [詳細]
 
fk_Vector getVec (void) const
 方向ベクトル取得関数 [詳細]
 
fk_Vector getUpvec (void) const
 アップベクトル取得関数 [詳細]
 
fk_Angle getAngle (void) const
 オイラー角取得関数 [詳細]
 
fk_Matrix getMatrix (void) const
 変換行列取得関数 [詳細]
 
fk_Matrix getInvMatrix (void) const
 逆変換行列取得関数 [詳細]
 
fk_OrthoMatrix getBaseMatrix (void) const
 移動・回転要素変換行列取得関数 [詳細]
 
fk_OrthoMatrix getInvBaseMatrix (void) const
 移動・回転要素逆変換行列取得関数 [詳細]
 
bool setScale (const double scale)
 全体絶対倍率設定関数 [詳細]
 
bool setScale (const double scale, fk_Axis axis)
 軸方向絶対倍率設定関数 [詳細]
 
bool setScale (const double x, const double y, const double z)
 軸方向個別絶対倍率設定関数 [詳細]
 
bool prdScale (const double scale)
 全体相対倍率設定関数 [詳細]
 
bool prdScale (const double scale, fk_Axis axis)
 軸方向相対倍率設定関数 [詳細]
 
bool prdScale (const double x, const double y, const double z)
 軸方向個別相対倍率設定関数 [詳細]
 
double getScale (void) const
 全体倍率取得関数 [詳細]
 
double getScale (fk_Axis axis) const
 軸方向倍率取得関数 [詳細]
 
bool getScaleMode (void) const
 拡大縮小状態判定関数 [詳細]
 
bool glRotate (fk_Vector origin, fk_Axis axis, double theta)
 グローバル座標系座標軸回転関数1 [詳細]
 
bool glRotate (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
 グローバル座標系座標軸回転関数2 [詳細]
 
bool glRotate (fk_Vector A, fk_Vector B, double theta)
 グローバル座標系任意軸回転関数1 [詳細]
 
bool glRotate (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
 グローバル座標系任意軸回転関数2 [詳細]
 
bool loRotate (fk_Vector origin, fk_Axis axis, double theta)
 ローカル座標系座標軸回転関数1 [詳細]
 
bool loRotate (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
 ローカル座標系座標軸回転関数2 [詳細]
 
bool loRotate (fk_Vector A, fk_Vector B, double theta)
 ローカル座標系任意軸回転関数1 [詳細]
 
bool loRotate (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
 ローカル座標系任意軸回転関数2 [詳細]
 
bool glRotateWithVec (fk_Vector origin, fk_Axis axis, double theta)
 グローバル座標系座標軸回転(姿勢付き)関数1 [詳細]
 
bool glRotateWithVec (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
 グローバル座標系座標軸回転(姿勢付き)関数2 [詳細]
 
bool glRotateWithVec (fk_Vector A, fk_Vector B, double theta)
 グローバル座標系任意軸回転(姿勢付き)関数1 [詳細]
 
bool glRotateWithVec (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
 グローバル座標系任意軸回転(姿勢付き)関数2 [詳細]
 
bool loRotateWithVec (fk_Vector origin, fk_Axis axis, double theta)
 ローカル座標系座標軸回転(姿勢付き)関数1 [詳細]
 
bool loRotateWithVec (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
 ローカル座標系座標軸回転(姿勢付き)関数2 [詳細]
 
bool loRotateWithVec (fk_Vector A, fk_Vector B, double theta)
 ローカル座標系任意軸回転(姿勢付き)関数1 [詳細]
 
bool loRotateWithVec (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
 ローカル座標系任意軸回転(姿勢付き)関数2 [詳細]
 
bool glTranslate (fk_Vector v)
 グローバル座標系平行移動関数1 [詳細]
 
bool glTranslate (double x, double y, double z)
 グローバル座標系平行移動関数2 [詳細]
 
bool loTranslate (fk_Vector v)
 ローカル座標系平行移動関数1 [詳細]
 
bool loTranslate (double x, double y, double z)
 ローカル座標系平行移動関数2 [詳細]
 
bool glMoveTo (fk_Vector p)
 グローバル座標系位置指定関数1 [詳細]
 
bool glMoveTo (double x, double y, double z)
 グローバル座標系位置指定関数2 [詳細]
 
bool glFocus (fk_Vector p)
 グローバル座標系注視点設定関数1 [詳細]
 
bool glFocus (double x, double y, double z)
 グローバル座標系注視点設定関数2 [詳細]
 
bool loFocus (fk_Vector p)
 ローカル座標系注視点設定関数1 [詳細]
 
bool loFocus (double x, double y, double z)
 ローカル座標系注視点設定関数2 [詳細]
 
bool glVec (fk_Vector v)
 グローバル座標系方向ベクトル設定関数1 [詳細]
 
bool glVec (double x, double y, double z)
 グローバル座標系方向ベクトル設定関数2 [詳細]
 
bool glUpvec (fk_Vector v)
 グローバル座標系アップベクトル設定関数1 [詳細]
 
bool glUpvec (double x, double y, double z)
 グローバル座標系アップベクトル設定関数2 [詳細]
 
bool loUpvec (fk_Vector v)
 ローカル座標系アップベクトル設定関数1 [詳細]
 
bool loUpvec (double x, double y, double z)
 ローカル座標系アップベクトル設定関数2 [詳細]
 
bool glAngle (fk_Angle angle)
 グローバル座標系オイラー角設定関数1 [詳細]
 
bool glAngle (double h, double p, double b)
 グローバル座標系オイラー角設定関数2 [詳細]
 
bool loAngle (fk_Angle angle)
 ローカル座標系オイラー角設定関数1 [詳細]
 
bool loAngle (double h, double p, double b)
 ローカル座標系オイラー角設定関数2 [詳細]
 
- Public メソッド inherited from fk_BaseObject
 fk_BaseObject (fk_ObjectType type=FK_BASEOBJECT)
 コンストラクタ [詳細]
 
fk_ObjectType getObjectType (void) const
 タイプ取得関数 [詳細]
 

説明

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

このクラスは、「モデル」を制御する機能を提供します。 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_TEXTUREMODE: テクスチャを描画します。

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

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]modetrue である場合、ピックモードが有効となります。 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]modetrue である場合、スムースモードを有効とします。 false である場合無効とします。
bool fk_Model::getSmoothMode ( void  ) const

スムースモード参照関数

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

戻り値
有効である場合 true を、無効である場合 false を返します。
参照
setSmoothMode()
void fk_Model::setReverseDrawMode ( const bool  mode)

描画順序制御関数

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

引数
[in]modetrue の場合、モデル内の描画が通常と逆順になります。 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]setModetrue の場合、現在のグローバル座標系の位置と姿勢を、 親モデル設定後も保持します。 false の場合は、当モデルでの位置と姿勢を親モデルからの 相対的な位置、姿勢として扱います。 そのため、設定後にグローバル座標系での位置や姿勢は変化することになります。 この引数を省略した場合は false と同様の挙動となります。
戻り値
設定に成功すれば true を、失敗すれば false を返します。
参照
deleteParent(), getParent(), entryChild()
void fk_Model::deleteParent ( bool  setMode = false)

親モデル解除関数

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

引数
[in]setModetrue の場合、現在のグローバル座標系の位置と姿勢を、 親モデル解除後も保持します。 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]setModetrue の場合、子モデルの現在のグローバル座標系の位置と姿勢を、 設定後も保持します。 false の場合は、子モデルでの位置と姿勢を当モデルからの 相対的な位置、姿勢として扱います。 そのため、設定後にグローバル座標系での位置や姿勢は変化することになります。 この引数を省略した場合は false と同様の挙動となります。
戻り値
設定に成功すれば true を、失敗すれば false を返します。
参照
setParent(), deleteChild(), deleteChildren(), foreachChild()
bool fk_Model::deleteChild ( fk_Model model,
bool  setMode = false 
)

子モデル解除関数

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

引数
[in]model子モデルインスタンスのポインタ。 もし model が子モデルの中に存在しない場合は、false を返します。
[in]setModetrue の場合、子モデルのグローバル座標系の位置と姿勢を、 解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 この引数を省略した場合は false と同様の挙動となります。
戻り値
解除に成功すれば true を、失敗すれば false を返します。
参照
entryChild(), deleteChildren(), foreachChild()
void fk_Model::deleteChildren ( bool  setMode = false)

全子モデル解除関数

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

引数
[in]setModetrue の場合、子モデルのグローバル座標系の位置と姿勢を、 解除後も保持します。 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  )
inlinevirtual

描画処理事前関数

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

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

virtual void fk_Model::postShader ( void  )
inlinevirtual

描画処理事後関数

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

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