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

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

#include <FK/Model.h>

+ FK::fk_Model の継承関係図
+ FK::fk_Model 連携図

公開メンバ関数

 fk_Model (fk_Shape *shape=nullptr)
 コンストラクタ
 
virtual ~fk_Model ()
 デストラクタ
 
unsigned int getID (void) const
 ID参照関数
 
回転制御関数
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
 
形状データ制御関数
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 setCurveColor (fk_Color *col)
 曲線色設定関数1
 
void setCurveColor (float r, float g, float b)
 曲線色設定関数2
 
マテリアル属性参照関数
fk_MaterialgetMaterial (void)
 マテリアル参照関数
 
fk_ColorgetPointColor (void)
 頂点色参照関数
 
fk_ColorgetLineColor (void)
 稜線色参照関数
 
fk_ColorgetCurveColor (void)
 曲線色参照関数
 
描画属性制御関数
void setDrawMode (const fk_Draw mode)
 描画モード設定関数
 
fk_Draw getDrawMode (void) const
 描画モード参照関数
 
void setElementMode (const fk_ElementMode mode)
 要素モード設定関数
 
fk_ElementMode getElementMode (void) const
 要素モード設定関数
 
void setShadingMode (fk_ShadingMode mode)
 シェーディングモード設定関数
 
fk_ShadingMode getShadingMode (void) const
 シェーディングモード取得関数
 
void setBlendMode (const fk_BlendMode mode, const fk_BlendFactor srcFactor=fk_BlendFactor::SRC_ALPHA, const fk_BlendFactor dstFactor=fk_BlendFactor::ONE_MINUS_SRC_ALPHA)
 ブレンドモード設定関数
 
fk_BlendMode getBlendMode (fk_BlendFactor *outSrc=nullptr, fk_BlendFactor *outDst=nullptr) const
 ブレンドモード参照関数
 
void setSmoothMode (const bool mode)
 スムースモード設定関数
 
bool getSmoothMode (void) const
 スムースモード参照関数
 
void setReverseDrawMode (const bool mode)
 描画順序制御関数
 
bool getReverseDrawMode (void) const
 描画順序参照関数
 
void setDepthMode (const fk_DepthMode mode)
 前後関係制御関数
 
fk_DepthMode getDepthMode (void) const
 前後関係参照関数
 
void setTextureMode (fk_TexMode mode)
 テクスチャモード設定関数
 
fk_TexMode getTextureMode (void)
 テクスチャモード取得関数
 
void setPointSize (const double size)
 頂点描画サイズ設定関数
 
double getPointSize (void) const
 頂点描画サイズ参照関数
 
void setShadowEffect (bool mode)
 影投影設定関数
 
bool getShadowEffect (void)
 影投影設定参照関数
 
void setShadowDraw (bool mode)
 影表示設定関数
 
bool getShadowDraw (void)
 影表示設定参照関数
 
void setFogMode (bool mode)
 霧効果設定関数
 
bool getFogMode (void)
 霧効果設定参照関数
 
座標系情報参照関数
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
 継承オイラー角参照関数
 
double getInhScale (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)
 位置・姿勢途中復元関数
 
描画制御用関数
void setShader (fk_ShaderBinder *shader)
 シェーダー設定関数
 
fk_ShaderBindergetShader (void)
 シェーダー取得関数
 
境界ボリューム自動設定関数
void adjustSphere (void)
 境界球自動設定関数
 
void adjustAABB (void)
 AABB 自動設定関数
 
void adjustOBB (void)
 OBB 自動設定関数
 
void adjustCapsule (void)
 境界カプセル自動設定関数(全自動)
 
void adjustCapsule (fk_Axis axis)
 境界カプセル自動設定関数(座標軸による中心軸設定)
 
void adjustCapsule (fk_Vector P, fk_Axis axis)
 境界カプセル自動設定関数(中心軸上の点と座標軸)
 
void adjustCapsule (fk_Vector S, fk_Vector E, bool mode=false)
 境界カプセル自動設定関数(中心軸直接指定)
 
干渉判定・衝突判定関数
bool isInter (fk_Model *model)
 モデル間干渉判定関数
 
std::tuple< bool, double > isCollision (fk_Model *model)
 モデル間衝突判定関数
 
void setInterMode (bool mode)
 干渉継続モード設定関数
 
bool getInterMode (void)
 干渉継続モード取得関数
 
bool getInterStatus (void)
 干渉継続状態取得関数
 
void resetInter (void)
 干渉継続状態初期化関数
 
干渉自動停止制御関数
void setInterStopMode (bool mode)
 干渉自動停止モード設定関数
 
bool getInterStopMode (void)
 干渉自動停止モード取得関数
 
void entryInterModel (fk_Model *model)
 干渉自動停止モデル登録関数
 
void deleteInterModel (fk_Model *model)
 干渉自動停止モデル解除関数
 
void clearInterModel (void)
 干渉自動停止モデル初期化関数
 
- 基底クラス FK::fk_Boundary に属する継承公開メンバ関数
 fk_Boundary (fk_Type)
 コンストラクタ
 
virtual ~fk_Boundary ()
 デストラクタ
 
void setBMode (fk_BoundaryMode mode)
 境界ボリューム選択関数
 
fk_BoundaryMode getBMode (void)
 境界ボリューム選択状態参照関数
 
void setSphere (double r)
 境界球半径設定関数
 
void setSpherePos (fk_Vector pos)
 境界球位置設定関数
 
double getSphere (void)
 境界球半径参照関数
 
fk_Vector getSpherePos (void)
 境界球位置参照関数
 
void setAABBSize (double x, double y, double z)
 軸平行境界ボックス (AABB) サイズ設定関数1
 
void setAABBSize (fk_Vector size)
 軸平行境界ボックス (AABB) サイズ設定関数2
 
void setAABBMaxMin (fk_Vector max, fk_Vector min)
 軸平行境界ボックス (AABB) 最大最小設定関数
 
void setAABBMax (fk_Vector v)
 軸平行境界ボックス (AABB) 最大値側設定関数
 
void setAABBMin (fk_Vector v)
 軸平行境界ボックス (AABB) 最小値側設定関数
 
fk_Vector getAABBSize (void)
 軸平行境界ボックス (AABB) サイズ取得関数
 
fk_Vector getAABBMax (void)
 軸平行境界ボックス (AABB) 最大値側取得関数
 
fk_Vector getAABBMin (void)
 軸平行境界ボックス (AABB) 最小値側取得関数
 
std::tuple< fk_Vector, fk_VectorgetAABBMaxMin (void)
 軸平行境界ボックス (AABB) 最大最小取得関数
 
void setOBBSize (double x, double y, double z)
 有向境界ボックス (OBB) サイズ設定関数1
 
void setOBBSize (fk_Vector size)
 有向境界ボックス (OBB) サイズ設定関数2
 
void setOBBMaxMin (fk_Vector max, fk_Vector min)
 有向境界ボックス (OBB) 最大最小設定関数
 
void setOBBMax (fk_Vector v)
 有向境界ボックス (OBB) 最大値側設定関数
 
void setOBBMin (fk_Vector v)
 有向境界ボックス (OBB) 最小値側設定関数
 
fk_Vector getOBBSize (void)
 有向境界ボックス (OBB) サイズ取得関数
 
fk_Vector getOBBMax (void)
 有向境界ボックス (OBB) 最大値側取得関数
 
fk_Vector getOBBMin (void)
 有向境界ボックス (OBB) 最小値側取得関数
 
std::tuple< fk_Vector, fk_VectorgetOBBMaxMin (void)
 有向境界ボックス (OBB) 最大最小取得関数
 
void setCapsule (fk_Vector sPos, fk_Vector ePos, double r)
 カプセル型設定関数
 
void setCapsuleStartPos (fk_Vector argP)
 カプセル型中心軸始点設定関数
 
void setCapsuleEndPos (fk_Vector argP)
 カプセル型中心軸終点設定関数
 
void setCapsuleRadius (double r)
 カプセル型領域規定距離設定関数
 
double getCapsuleRadius (void)
 カプセル型領域規定距離取得関数
 
double getCapsuleLength (void)
 カプセル型中心軸長取得関数
 
std::tuple< fk_Vector, fk_VectorgetCapsulePos (void)
 カプセル型中心軸両端点取得関数
 
fk_Vector getCapsuleStartPos (void)
 カプセル型中心軸始点取得関数
 
fk_Vector getCapsuleEndPos (void)
 カプセル型中心軸終点取得関数
 
void setBDrawToggle (bool mode)
 境界ボリューム描画有無設定関数
 
bool getBDrawToggle (void)
 境界ボリューム描画有無取得関数
 
void setBLineColor (fk_Color col)
 境界ボリューム非干渉描画色設定関数
 
fk_ColorgetBLineColor (void)
 境界ボリューム非干渉描画色取得関数
 
void setBIntLineColor (fk_Color col)
 境界ボリューム干渉状態描画色設定関数
 
fk_ColorgetBIntLineColor (void)
 境界ボリューム干渉状態描画色取得関数
 
void setBLineWidth (double width)
 境界ボリューム描画線幅設定関数
 
double getBLineWidth (void)
 境界ボリューム描画線幅取得関数
 
- 基底クラス FK::fk_MatrixAdmin に属する継承公開メンバ関数
 fk_MatrixAdmin (fk_Type=fk_Type::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
 
- 基底クラス FK::fk_BaseObject に属する継承公開メンバ関数
 fk_BaseObject (fk_Type type=fk_Type::BASEOBJECT)
 コンストラクタ
 
fk_Type getObjectType (void) const
 タイプ取得関数
 

詳解

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

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

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

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

また、モデル同士の干渉判定や衝突判定を検出することができます。 干渉・衝突判定を行うには、 まず「境界ボリューム」と呼ばれるモデルを覆う領域を設定します。 その後、その境界ボリューム同士が干渉部分や衝突時間の検出を行うことで実現します。 本マニュアルにおいて、「干渉判定」と「衝突判定」は以下のような意味を持ちます。

本クラスのメンバ関数では、以下のような機能を提供します。

干渉判定は現在すべての種類の境界ボリュームで対応していますが、 同じ種類同士である必要があります。 衝突判定については、現在は境界球のみで対応しています。 境界ボリュームの種類に関する解説や、適用する境界ボリュームの選択については fk_Boundary クラスのリファレンスを参照して下さい。

参照
fk_MatrixAdmin, fk_Boundary, fk_Shape, fk_Scene, fk_DisplayLink

構築子と解体子

◆ fk_Model()

FK::fk_Model::fk_Model ( fk_Shape shape = nullptr)

コンストラクタ

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

◆ ~fk_Model()

virtual FK::fk_Model::~fk_Model ( )
virtual

デストラクタ

関数詳解

◆ getID()

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

ID参照関数

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

戻り値
固有モデルID

◆ glRotate() [1/4]

bool FK::fk_Model::glRotate ( fk_Vector  origin,
fk_Axis  axis,
double  theta 
)

グローバル座標系座標軸回転関数1

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、origin を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は glRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は loRotate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotate_(fk_Vector &, fk_Axis, double) を用いた方が、処理がわずかに速くなります。
引数
[in]originグローバル座標系での回転軸上の点
[in]axis回転軸に平行な軸。fk_X, fk_Y, fk_Z のいずれかになります。
[in]theta回転角度(ラジアン)
戻り値
この関数は常に true を返します。
参照
glRotateWithVec(fk_Vector, fk_Axis, double), loRotate(fk_Vector, fk_Axis, double), fk_MatrixAdmin::glRotate_(fk_Vector &, fk_Axis, double)

◆ glRotate() [2/4]

bool FK::fk_Model::glRotate ( double  orgX,
double  orgY,
double  orgZ,
fk_Axis  axis,
double  theta 
)

グローバル座標系座標軸回転関数2

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、(orgX, orgY, orgZ) を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は glRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は loRotate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotate_(double, double, double, fk_Axis, double) を用いた方が、処理がわずかに速くなります。
引数
[in]orgXグローバル座標系での回転軸上の点のx成分
[in]orgYグローバル座標系での回転軸上の点のy成分
[in]orgZグローバル座標系での回転軸上の点のz成分
[in]axis回転軸に平行な軸。fk_X, fk_Y, fk_Z のいずれかになります。
[in]theta回転角度(ラジアン)
戻り値
この関数は常に true を返します。
参照
glRotateWithVec(double, double, double, fk_Axis, double), loRotate(double, double, double, fk_Axis, double), fk_MatrixAdmin::glRotate_(double, double, double, fk_Axis, double)

◆ glRotate() [3/4]

bool FK::fk_Model::glRotate ( fk_Vector  A,
fk_Vector  B,
double  theta 
)

グローバル座標系任意軸回転関数1

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は glRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は loRotate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotate_(fk_Vector &, fk_Vector &, double) を用いた方が、処理がわずかに速くなります。
引数
[in]A回転軸上の1点。B と一致してはいけません。
[in]B回転軸上の1点。A と一致してはいけません。
[in]theta回転角度(ラジアン)
戻り値
回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。
参照
glRotateWithVec(fk_Vector, fk_Vector, double), loRotate(fk_Vector, fk_Vector, double), fk_MatrixAdmin::glRotate_(fk_Vector &, fk_Vector &, double)

◆ glRotate() [4/4]

bool FK::fk_Model::glRotate ( double  Ax,
double  Ay,
double  Az,
double  Bx,
double  By,
double  Bz,
double  theta 
)

グローバル座標系任意軸回転関数2

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、(Ax, Ay, Az) と (Bx, By, Bz) を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は glRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は loRotate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotate_(double, double, double, double, double, double, double) を用いた方が、処理がわずかに速くなります。
引数
[in]Ax回転軸上の1点 A の x 成分
[in]Ay回転軸上の1点 A の y 成分
[in]Az回転軸上の1点 A の z 成分
[in]Bx回転軸上の1点 B の x 成分
[in]By回転軸上の1点 B の y 成分
[in]Bz回転軸上の1点 B の z 成分
[in]theta回転角度(ラジアン)
戻り値
回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。
参照
glRotateWithVec(double, double, double, double, double, double, double), loRotate(double, double, double, double, double, double, double), fk_MatrixAdmin::glRotate_(double, double, double, double, double, double, double)

◆ loRotate() [1/4]

bool FK::fk_Model::loRotate ( fk_Vector  origin,
fk_Axis  axis,
double  theta 
)

ローカル座標系座標軸回転関数1

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) origin を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は loRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は glRotate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotate_(fk_Vector &, fk_Axis, double) を用いた方が、処理がわずかに速くなります。
引数
[in]originローカル座標系での回転軸上の点
[in]axis回転軸に平行なローカル座標系上の軸。 fk_X, fk_Y, fk_Z のいずれかになります。
[in]theta回転角度(ラジアン)
戻り値
この関数は常に true を返します。
参照
glRotate(fk_Vector, fk_Axis, double), loRotateWithVec(fk_Vector, fk_Axis, double), fk_MatrixAdmin::loRotate_(fk_Vector &, fk_Axis, double)

◆ loRotate() [2/4]

bool FK::fk_Model::loRotate ( double  orgX,
double  orgY,
double  orgZ,
fk_Axis  axis,
double  theta 
)

ローカル座標系座標軸回転関数2

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) (orgX, orgY, orgZ) を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は loRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は glRotate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotate_(double, double, double, fk_Axis, double) を用いた方が、処理がわずかに速くなります。
引数
[in]orgXローカル座標系での回転軸上の点のx成分
[in]orgYローカル座標系での回転軸上の点のy成分
[in]orgZローカル座標系での回転軸上の点のz成分
[in]axis回転軸に平行なローカル座標系上の軸。 fk_X, fk_Y, fk_Z のいずれかになります。
[in]theta回転角度(ラジアン)
戻り値
この関数は常に true を返します。
参照
glRotate(double, double, double, fk_Axis, double), loRotateWithVec(double, double, double, fk_Axis, double), fk_MatrixAdmin::loRotate_(double, double, double, fk_Axis, double)

◆ loRotate() [3/4]

bool FK::fk_Model::loRotate ( fk_Vector  A,
fk_Vector  B,
double  theta 
)

ローカル座標系任意軸回転関数1

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は loRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は glRotate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotate_(fk_Vector &, fk_Vector &, double) を用いた方が、処理がわずかに速くなります。
引数
[in]Aローカル座標系における回転軸上の1点。B と一致してはいけません。
[in]Bローカル座標系における回転軸上の1点。A と一致してはいけません。
[in]theta回転角度(ラジアン)
戻り値
回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。
参照
glRotateWithVec(fk_Vector, fk_Vector, double), loRotate(fk_Vector, fk_Vector, double), fk_MatrixAdmin::loRotate_(fk_Vector &, fk_Vector &, double)

◆ loRotate() [4/4]

bool FK::fk_Model::loRotate ( double  Ax,
double  Ay,
double  Az,
double  Bx,
double  By,
double  Bz,
double  theta 
)

ローカル座標系任意軸回転関数2

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) (Ax, Ay, Az) と (Bx, By, Bz) を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は loRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は glRotate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotate_(double, double, double, double, double, double, double) を用いた方が、処理がわずかに速くなります。
引数
[in]Axローカル座標系における回転軸上の1点 A の x 成分
[in]Ayローカル座標系における回転軸上の1点 A の y 成分
[in]Azローカル座標系における回転軸上の1点 A の z 成分
[in]Bxローカル座標系における回転軸上の1点 B の x 成分
[in]Byローカル座標系における回転軸上の1点 B の y 成分
[in]Bzローカル座標系における回転軸上の1点 B の z 成分
[in]theta回転角度(ラジアン)
戻り値
回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。
参照
glRotateWithVec(double, double, double, double, double, double, double), loRotate(double, double, double, double, double, double, double), fk_MatrixAdmin::loRotate_(double, double, double, double, double, double, double)

◆ glRotateWithVec() [1/4]

bool FK::fk_Model::glRotateWithVec ( fk_Vector  origin,
fk_Axis  axis,
double  theta 
)

グローバル座標系座標軸回転(姿勢付き)関数1

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、origin を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は glRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 loRotateWithVec() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotateWithVec_(fk_Vector &, fk_Axis, double) を用いた方が、処理がわずかに速くなります。
引数
[in]originグローバル座標系での回転軸上の点
[in]axis回転軸に平行な軸。fk_X, fk_Y, fk_Z のいずれかになります。
[in]theta回転角度(ラジアン)
戻り値
この関数は常に true を返します。
参照
glRotate(fk_Vector, fk_Axis, double), loRotateWithVec(fk_Vector, fk_Axis, double), fk_MatrixAdmin::glRotateWithVec_(fk_Vector &, fk_Axis, double)

◆ glRotateWithVec() [2/4]

bool FK::fk_Model::glRotateWithVec ( double  orgX,
double  orgY,
double  orgZ,
fk_Axis  axis,
double  theta 
)

グローバル座標系座標軸回転(姿勢付き)関数2

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、(orgX, orgY, orgZ) を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は glRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 loRotateWithVec() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotateWithVec_(double, double, double, fk_Axis, double) を用いた方が、処理がわずかに速くなります。
引数
[in]orgXグローバル座標系での回転軸上の点のx成分
[in]orgYグローバル座標系での回転軸上の点のy成分
[in]orgZグローバル座標系での回転軸上の点のz成分
[in]axis回転軸に平行な軸。fk_X, fk_Y, fk_Z のいずれかになります。
[in]theta回転角度(ラジアン)
戻り値
この関数は常に true を返します。
参照
glRotate(double, double, double, fk_Axis, double), loRotateWithVec(double, double, double, fk_Axis, double), fk_MatrixAdmin::glRotateWithVec_(double, double, double, fk_Axis, double)

◆ glRotateWithVec() [3/4]

bool FK::fk_Model::glRotateWithVec ( fk_Vector  A,
fk_Vector  B,
double  theta 
)

グローバル座標系任意軸回転(姿勢付き)関数1

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は glRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 loRotateWithVec() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotateWithVec_(fk_Vector &, fk_Vector &, double) を用いた方が、処理がわずかに速くなります。
引数
[in]A回転軸上の1点。B と一致してはいけません。
[in]B回転軸上の1点。A と一致してはいけません。
[in]theta回転角度(ラジアン)
戻り値
回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。
参照
glRotate(fk_Vector, fk_Vector, double), loRotateWithVec(fk_Vector, fk_Vector, double), fk_MatrixAdmin::glRotateWithVec_(fk_Vector &, fk_Vector &, double)

◆ glRotateWithVec() [4/4]

bool FK::fk_Model::glRotateWithVec ( double  Ax,
double  Ay,
double  Az,
double  Bx,
double  By,
double  Bz,
double  theta 
)

グローバル座標系任意軸回転(姿勢付き)関数2

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、(Ax, Ay, Az) と (Bx, By, Bz) を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は glRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 loRotateWithVec() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、同機能を持つ fk_MatrixAdmin::glRotateWithVec_(double, double, double, double, double, double, double) を用いた方が、処理がわずかに速くなります。
引数
[in]Ax回転軸上の1点 A の x 成分
[in]Ay回転軸上の1点 A の y 成分
[in]Az回転軸上の1点 A の z 成分
[in]Bx回転軸上の1点 B の x 成分
[in]By回転軸上の1点 B の y 成分
[in]Bz回転軸上の1点 B の z 成分
[in]theta回転角度(ラジアン)
戻り値
回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。
参照
glRotate(double, double, double, double, double, double, double), loRotateWithVec(double, double, double, double, double, double, double), fk_MatrixAdmin::glRotateWithVec_(double, double, double, double, double, double, double)

◆ loRotateWithVec() [1/4]

bool FK::fk_Model::loRotateWithVec ( fk_Vector  origin,
fk_Axis  axis,
double  theta 
)

ローカル座標系座標軸回転(姿勢付き)関数1

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) origin を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は loRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 glRotateWithVec() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotateWithVec_(fk_Vector &, fk_Axis, double) を用いた方が、処理がわずかに速くなります。
引数
[in]originローカル座標系での回転軸上の点
[in]axis回転軸に平行なローカル座標系上の軸。 fk_X, fk_Y, fk_Z のいずれかになります。
[in]theta回転角度(ラジアン)
戻り値
この関数は常に true を返します。
参照
loRotate(fk_Vector, fk_Axis, double), glRotateWithVec(fk_Vector, fk_Axis, double), fk_MatrixAdmin::loRotateWithVec_(fk_Vector &, fk_Axis, double)

◆ loRotateWithVec() [2/4]

bool FK::fk_Model::loRotateWithVec ( double  orgX,
double  orgY,
double  orgZ,
fk_Axis  axis,
double  theta 
)

ローカル座標系座標軸回転(姿勢付き)関数2

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) (orgX, orgY, orgZ) を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は loRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 glRotateWithVec() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotateWithVec_(double, double, double, fk_Axis, double) を用いた方が、処理がわずかに速くなります。
引数
[in]orgXローカル座標系での回転軸上の点のx成分
[in]orgYローカル座標系での回転軸上の点のy成分
[in]orgZローカル座標系での回転軸上の点のz成分
[in]axis回転軸に平行なローカル座標系上の軸。 fk_X, fk_Y, fk_Z のいずれかになります。
[in]theta回転角度(ラジアン)
戻り値
この関数は常に true を返します。
参照
loRotate(double, double, double, fk_Axis, double), glRotateWithVec(double, double, double, fk_Axis, double), fk_MatrixAdmin::loRotateWithVec_(double, double, double, fk_Axis, double)

◆ loRotateWithVec() [3/4]

bool FK::fk_Model::loRotateWithVec ( fk_Vector  A,
fk_Vector  B,
double  theta 
)

ローカル座標系任意軸回転(姿勢付き)関数1

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は loRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 glRotateWithVec() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotateWithVec_(fk_Vector &, fk_Vector &, double) を用いた方が、処理がわずかに速くなります。
引数
[in]Aローカル座標系における回転軸上の1点。B と一致してはいけません。
[in]Bローカル座標系における回転軸上の1点。A と一致してはいけません。
[in]theta回転角度(ラジアン)
戻り値
回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。
参照
glRotateWithVec(fk_Vector, fk_Vector, double) loRotate(fk_Vector, fk_Vector, double), fk_MatrixAdmin::loRotateWithVec_(fk_Vector &, fk_Vector &, double)

◆ loRotateWithVec() [4/4]

bool FK::fk_Model::loRotateWithVec ( double  Ax,
double  Ay,
double  Az,
double  Bx,
double  By,
double  Bz,
double  theta 
)

ローカル座標系任意軸回転(姿勢付き)関数2

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) (Ax, Ay, Az) と (Bx, By, Bz) を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は loRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 glRotateWithVec() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、同機能を持つ fk_MatrixAdmin::loRotateWithVec_(double, double, double, double, double, double, double) を用いた方が、処理がわずかに速くなります。
引数
[in]Axローカル座標系における回転軸上の1点 A の x 成分
[in]Ayローカル座標系における回転軸上の1点 A の y 成分
[in]Azローカル座標系における回転軸上の1点 A の z 成分
[in]Bxローカル座標系における回転軸上の1点 B の x 成分
[in]Byローカル座標系における回転軸上の1点 B の y 成分
[in]Bzローカル座標系における回転軸上の1点 B の z 成分
[in]theta回転角度(ラジアン)
戻り値
回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。
参照
glRotateWithVec(double, double, double, double, double, double, double), loRotate(double, double, double, double, double, double, double), fk_MatrixAdmin::loRotateWithVec_(double, double, double, double, double, double, double)

◆ glTranslate() [1/2]

bool FK::fk_Model::glTranslate ( fk_Vector  v)

グローバル座標系平行移動関数1

モデルを、クローバル座標系によって平行移動した位置に移動します。 平行移動量はベクトルで指定します。

ローカル座標系による平行移動量の指定を行いたい場合は、 loTranslate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glTranslate_(fk_Vector &) を用いた方が、処理がわずかに速くなります。
引数
[in]v平行移動量ベクトル
戻り値
この関数は常に true を返します。
参照
loTranslate(fk_Vector), fk_MatrixAdmin::glTranslate_(fk_Vector &)

◆ glTranslate() [2/2]

bool FK::fk_Model::glTranslate ( double  x,
double  y,
double  z 
)

グローバル座標系平行移動関数2

モデルを、クローバル座標系によって平行移動した位置に移動します。 平行移動量はベクトルの成分を意味する3個の実数で指定します。

ローカル座標系による平行移動量の指定を行いたい場合は、 loTranslate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glTranslate_(double, double, double) を用いた方が、処理がわずかに速くなります。
引数
[in]x平行移動量ベクトルのx成分
[in]y平行移動量ベクトルのy成分
[in]z平行移動量ベクトルのz成分
戻り値
この関数は常に true を返します。
参照
loTranslate(double, double, double), fk_MatrixAdmin::glTranslate_(double, double, double)

◆ loTranslate() [1/2]

bool FK::fk_Model::loTranslate ( fk_Vector  v)

ローカル座標系平行移動関数1

モデルを、ローカル座標系によって平行移動した位置に移動します。 平行移動量はベクトルで指定します。

グローバル座標系による平行移動量の指定を行いたい場合は、 glTranslate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loTranslate_(fk_Vector &) を用いた方が、処理がわずかに速くなります。
引数
[in]v平行移動量ベクトル
戻り値
この関数は常に true を返します。
参照
glTranslate(fk_Vector), glMoveTo(fk_Vector), fk_MatrixAdmin::loTranslate_(fk_Vector &)

◆ loTranslate() [2/2]

bool FK::fk_Model::loTranslate ( double  x,
double  y,
double  z 
)

ローカル座標系平行移動関数2

モデルを、ローカル座標系によって平行移動した位置に移動します。 平行移動量はベクトルの成分を意味する3個の実数で指定します。

グローバル座標系による平行移動量の指定を行いたい場合は、 glTranslate() を利用して下さい。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loTranslate_(double, double, double) を用いた方が、処理がわずかに速くなります。
引数
[in]x平行移動量ベクトルのx成分
[in]y平行移動量ベクトルのy成分
[in]z平行移動量ベクトルのz成分
戻り値
この関数は常に true を返します。
参照
glTranslate(double, double, double), glMoveTo(double, double, double), fk_MatrixAdmin::loTranslate_(double, double, double)

◆ glMoveTo() [1/2]

bool FK::fk_Model::glMoveTo ( fk_Vector  p)

グローバル座標系位置指定関数1

モデルの位置を、指定した位置ベクトルに移動します。 位置はベクトルで指定します。

glMoveTo() 関数に対応するローカル座標系関数 「loMoveTo()」関数は存在しません。 これは、loMoveTo() 関数はその意味的に loTranslate() とまったく同一の挙動となるためです。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glMoveTo_(fk_Vector &) を用いた方が、処理がわずかに速くなります。
引数
[in]p移動先位置ベクトル
戻り値
この関数は常に true を返します。
参照
glTranslate(fk_Vector), loTranslate(fk_Vector), fk_MatrixAdmin::glMoveTo_(fk_Vector &)

◆ glMoveTo() [2/2]

bool FK::fk_Model::glMoveTo ( double  x,
double  y,
double  z 
)

グローバル座標系位置指定関数2

モデルの位置を、指定した位置ベクトルに移動します。 位置はベクトルの成分を意味する3個の実数で指定します。

glMoveTo() 関数に対応するローカル座標系関数 「loMoveTo()」関数は存在しません。 これは、loMoveTo() 関数はその意味的に loTranslate() とまったく同一の挙動となるためです。

覚え書き
「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glMoveTo_(double, double, double) を用いた方が、処理がわずかに速くなります。
引数
[in]x移動先位置ベクトルのx成分
[in]y移動先位置ベクトルのy成分
[in]z移動先位置ベクトルのz成分
戻り値
この関数は常に true を返します。
参照
glTranslate(double, double, double), loTranslate(double, double, double), fk_MatrixAdmin::glMoveTo_(double, double, double)

◆ setShape()

void FK::fk_Model::setShape ( fk_Shape shape)

形状設定関数

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

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

引数
[in]shape形状インスタンスのポインタ

◆ getShape()

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

形状参照関数

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

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

◆ setMaterial()

void FK::fk_Model::setMaterial ( const fk_Material mat)

マテリアル設定関数

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

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

◆ setPointColor() [1/2]

void FK::fk_Model::setPointColor ( fk_Color col)

頂点色設定関数1

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

引数
[in]col頂点色のポインタ
参照
fk_Color

◆ setPointColor() [2/2]

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

頂点色設定関数2

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

引数
[in]r頂点色の赤要素
[in]g頂点色の緑要素
[in]b頂点色の青要素

◆ setLineColor() [1/2]

void FK::fk_Model::setLineColor ( fk_Color col)

稜線色設定関数1

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

引数
[in]col稜線色のポインタ
参照
fk_Color

◆ setLineColor() [2/2]

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

稜線色設定関数2

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

引数
[in]r稜線色の赤要素
[in]g稜線色の緑要素
[in]b稜線色の青要素

◆ setCurveColor() [1/2]

void FK::fk_Model::setCurveColor ( fk_Color col)

曲線色設定関数1

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

引数
[in]col曲線色のポインタ
参照
fk_Color

◆ setCurveColor() [2/2]

void FK::fk_Model::setCurveColor ( float  r,
float  g,
float  b 
)

曲線色設定関数2

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

引数
[in]r曲線色の赤要素
[in]g曲線色の緑要素
[in]b曲線色の青要素

◆ getMaterial()

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

マテリアル参照関数

現在モデルに設定されている基本マテリアルを参照します。

戻り値
基本マテリアルのポインタ
参照
fk_Material, setMaterial()

◆ getPointColor()

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

頂点色参照関数

現在モデルに設定されている頂点色を参照します。

戻り値
頂点色のポインタ
参照
fk_Color, setPointColor()

◆ getLineColor()

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

稜線色参照関数

現在モデルに設定されている稜線色を参照します。

戻り値
稜線色のポインタ
参照
fk_Color, setLineColor()

◆ getCurveColor()

fk_Color * FK::fk_Model::getCurveColor ( void  )

曲線色参照関数

現在モデルに設定されている曲線色を参照します。

戻り値
曲線色のポインタ
参照
fk_Color, setCurveColor()

◆ setDrawMode()

void FK::fk_Model::setDrawMode ( const fk_Draw  mode)

描画モード設定関数

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

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

fk_Model        model;

model.setDrawMode(fk_Draw::POINT | fk_Draw::LINE | fk_Draw::FACE);
引数
[in]mode描画モード

◆ getDrawMode()

fk_Draw FK::fk_Model::getDrawMode ( void  ) const

描画モード参照関数

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

戻り値
描画モード
参照
setDrawMode()

◆ setElementMode()

void FK::fk_Model::setElementMode ( const fk_ElementMode  mode)

要素モード設定関数

形状表示の際、モデル設定と形状個別要素設定のどちらを採用するかを設定します。 モードには以下のものがあります。

引数
[in]mode設定モード

◆ getElementMode()

fk_ElementMode FK::fk_Model::getElementMode ( void  ) const

要素モード設定関数

表示の際の優先モードを取得します。

戻り値
設定モード
参照
setElementMode()

◆ setShadingMode()

void FK::fk_Model::setShadingMode ( fk_ShadingMode  mode)

シェーディングモード設定関数

面描画またはテクスチャ描画の際の、 シェーディングアルゴリズムを設定します。 グーローシェーディングは、各頂点ごとに発色輝度を計算し、 頂点以外の面内部は色値の線形補間によって発色輝度を決定します。 フォンシェーディングでは、色値ではなく法線ベクトルを補間決定し、 面内部の発色は補間法線ベクトルに対し発色輝度を計算します。 一般的には、速度重視の場合はグーロー、質重視の場合はフォンを選択します。 なお、本館数は面またはテクスチャの描画の際のみに関与するものであり、 線や点の描画の際には影響を及ぼしません。

引数
[in]modeモード

◆ getShadingMode()

fk_ShadingMode FK::fk_Model::getShadingMode ( void  ) const

シェーディングモード取得関数

表示の差異のシェーディングモードを取得します。

戻り値
モード
参照
setShadingMode()

◆ setBlendMode()

void FK::fk_Model::setBlendMode ( const fk_BlendMode  mode,
const fk_BlendFactor  srcFactor = fk_BlendFactor::SRC_ALPHA,
const fk_BlendFactor  dstFactor = fk_BlendFactor::ONE_MINUS_SRC_ALPHA 
)

ブレンドモード設定関数

テクスチャ画像を伴うモデルを表示する場合、 表示色はテクスチャ画像の各画素色と、 モデルに設定されているマテリアルの両方が関与します。 この関数は、テクスチャ画像の画素色とモデルのマテリアル色に対し、 どのような計算式で双方を混合(ブレンド)するかを設定します。 ここでブレンドモードを設定しても、fk_Scene:setBlendStatus() で ブレンドを有効にしていないと実際の描画で有効になりません。 ブレンドモードの設定は、一般的な設定をプリセットの中から選択するか、 カスタムモードを選択した上で、入力ピクセルと出力ピクセルに対する係数を 個別に指定するかのどちらかによって行います。

引数
[in]modeブレンドモードを設定します。与えられる値は以下の8種類です。
[in]srcFactor入力ピクセルに対する係数を設定します。 mode に fk_BlendMode::CUSTOM を指定した場合のみ有効です。 それ以外のモードでは省略可能です。 本関数の仕様は OpenGL 関数の glBlendFunc() に準拠します。 詳細は glBlendFunc() の情報を参照して下さい。 与えられる値は以下の10種類で、 それぞれの値に「GL」に置き換えた GLenum 型の値に対応します。
[in]dstFactor出力ピクセルに対する係数を設定します。 mode に fk_BlendFactor::CUSTOM を指定した場合のみ有効です。 それ以外のモードでは省略可能です。与えられる値は srcFactor と同様です。
参照
getBlendMode(), fk_Scene::setBlendStatus(), fk_Scene::getBlendStatus()

◆ getBlendMode()

fk_BlendMode FK::fk_Model::getBlendMode ( fk_BlendFactor outSrc = nullptr,
fk_BlendFactor outDst = nullptr 
) const

ブレンドモード参照関数

モデルのブレンドモードを取得します。

引数
[out]outSrc入力ピクセルにかかる係数の種類を取得します。省略可能です。
[out]outDst出力ピクセルにかかる係数の種類を取得します。省略可能です。
戻り値
ブレンドモード
参照
setBlendMode()

◆ setSmoothMode()

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

スムースモード設定関数

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

引数
[in]modetrue である場合、スムースモードを有効とします。 false である場合無効とします。

◆ getSmoothMode()

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

スムースモード参照関数

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

戻り値
有効である場合 true を、無効である場合 false を返します。
参照
setSmoothMode()

◆ setReverseDrawMode()

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

描画順序制御関数

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

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

◆ getReverseDrawMode()

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

描画順序参照関数

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

戻り値
逆順である場合 true を、正順である場合 false を返します。
参照
setReverseDrawMode()

◆ setDepthMode()

void FK::fk_Model::setDepthMode ( const fk_DepthMode  mode)

前後関係制御関数

この関数では、モデルを描画する際の前後関係に関する設定を制御します。 fk_Scene::entryOverlayModel()でも前後関係を無視した描画はできますが、 通常の描画中に前後関係を無視したり、 半透明物体が後続の描画の前後関係に作用しないようにするなど、 細かな調整を行いたい場合に用います。

引数
[in]mode前後関係の処理モードを設定します。与えられる値は以下の4種類です。

◆ getDepthMode()

fk_DepthMode FK::fk_Model::getDepthMode ( void  ) const

前後関係参照関数

setDepthMode() で設定した前後関係の設定を取得します。

戻り値
前後関係処理モード
参照
setDepthMode()

◆ setTextureMode()

void FK::fk_Model::setTextureMode ( fk_TexMode  mode)

テクスチャモード設定関数

テクスチャの描画時における描画色処理モードを設定します。 これは、ポリゴンに設定されているマテリアルによる発色と、 テクスチャ画像の色をどのように混成するかを制御するものです。 それぞれのモードの概要と厳密な計算式を以下に記載します。 なお、数式中の \( C_f \) はポリゴン色、 \( C_\alpha \) ポリゴンの透明度、 \( T_f \) はテクスチャピクセル色、 \( T_\alpha \) はテクスチャの透明度を表します。

  • fk_TexMode::MODULATE
    この設定では、ポリゴンの色とテクスチャの色を積算します。 そのため、光源による陰影効果が生じます。 透明度に関しても積算となります。 数式として表すと、色と透明度はそれぞれ

    \[ (C_f T_f, \; C_\alpha T_\alpha) \]

    となります。
  • fk_TexMode::REPLACE
    この設定では、ポリゴンの色は完全に無視され、 テクスチャのピクセル色がそのまま表示されます。 そのため、光源による陰影効果が生じません。 また、テクスチャ画像の透明度はそのまま描画に反映されます。 数式として表すと、色と透明度はそれぞれ

    \[ (T_f, \; T_\alpha) \]

    となります。
  • fk_TexMode::DECAL
    この設定では、各ピクセルの透明度に応じて、 ポリゴン色とピクセル色の混合が行われます。 光源による陰影効果は、ピクセルの透明度が低い場合に強くなります。 透明度は、ポリゴンの透明度がそのまま適用されます。 これを数式として表すと、色と透明度はそれぞれ

    \[ (C_f (1-T_\alpha) + T_f T_\alpha, \; C_\alpha) \]

    となります。
  • fk_TexMode::NONE
    この設定では、 fk_Model での設定は無視し、 fk_Texture::setTextureMode() での設定に従います。

デフォルトでは fk_TexMode::NONE が設定されています。 なお、同様の設定は fk_Texture::setTextureMode() でも行うことが可能で、 fk_Model 側で fk_TexMode::NONE 以外が設定されている場合は fk_Model 側の設定が優先されます。 fk_Model 側で fk_TexMode::NONE が設定されている場合のみ、 fk_Texture 側での設定が有効となります。

引数
[in]modeモード
参照
getTextureMode(), fk_Texture::setTextureMode()

◆ getTextureMode()

fk_TexMode FK::fk_Model::getTextureMode ( void  )

テクスチャモード取得関数

現在のテクスチャモードを取得します。

戻り値
テクスチャモード
参照
setTextureMode()

◆ setPointSize()

void FK::fk_Model::setPointSize ( const double  size)

頂点描画サイズ設定関数

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

引数
[in]size頂点描画サイズ
参照
getPointSize(), setLineWidth()

◆ getPointSize()

double FK::fk_Model::getPointSize ( void  ) const

頂点描画サイズ参照関数

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

戻り値
頂点描画サイズ
参照
setPointSize()

◆ setShadowEffect()

void FK::fk_Model::setShadowEffect ( bool  mode)

影投影設定関数

このモデルが別モデル(やこのモデル自身)へ影を投影するかどうかの設定を行います。 この設定を false にすると、シーン全体で影効果が有効であっても、 当モデルの影は別モデル(やこのモデル自身)に投影されなくなります。 デフォルトは true です。

他モデルの影をこのモデルに投影するかどうかを制御する場合は、 setShadowDraw() を用いてください。

引数
[in]modetrue で有効、false で無効となります。
参照
setShadowDraw(), getShadowEffect(), fk_Scene::setShadowMode(), fk_AppWindow::setShadowMode()

◆ getShadowEffect()

bool FK::fk_Model::getShadowEffect ( void  )

影投影設定参照関数

このモデルの影投影設定を参照します。 詳細は setShadowEffect() のマニュアルを参照して下さい。

戻り値
影投影設定。true で有効、false で無効を意味します。
参照
setShadowEffect(), getShadowDraw(), fk_Scene::setShadowMode(), fk_AppWindow::setShadowMode()

◆ setShadowDraw()

void FK::fk_Model::setShadowDraw ( bool  mode)

影表示設定関数

別モデルやこのモデル自身の影を、このモデルに投影するかどうかの設定を行います。

このモデルの影を別のモデル(や自分自身)に投影するかどうかの制御は、 setShadowEffect() を用いて下さい。

引数
[in]modetrue で有効、false で無効となります。
参照
setShadowEffect(), getShadowDraw(), fk_Scene::setShadowMode(), fk_AppWindow::setShadowMode()

◆ getShadowDraw()

bool FK::fk_Model::getShadowDraw ( void  )

影表示設定参照関数

このモデルの影表示設定を参照します。 詳細は setShadowDraw() のマニュアルを参照して下さい。

戻り値
影表示設定。true で有効、false で無効を意味します。
参照
setShadowDraw(), getShadowEffect(), fk_Scene::setShadowMode(), fk_AppWindow::setShadowMode()

◆ setFogMode()

void FK::fk_Model::setFogMode ( bool  mode)

霧効果設定関数

このモデルの表示に対し霧効果の有効とするかどうかを設定します。 デフォルトでは有効となっています。

引数
[in]modetrue で有効、false で無効となります。

◆ getFogMode()

bool FK::fk_Model::getFogMode ( void  )

霧効果設定参照関数

霧効果が有効かどうかを参照します。

戻り値
有効なら true、無効なら false を返します。

◆ getInhMatrix()

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

継承変換行列取得関数

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

戻り値
モデルの継承変換行列
参照
fk_MatrixAdmin::getMatrix(), getInhInvMatrix()

◆ getInhInvMatrix()

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

継承逆変換行列取得関数

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

戻り値
モデルの継承逆変換行列
参照
fk_MatrixAdmin::getInvMatrix(), getInhMatrix()

◆ getInhBaseMatrix()

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

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

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

戻り値
モデルの継承移動・回転要素変換行列
参照
fk_MatrixAdmin::getBaseMatrix(), getInhMatrix(), getInhInvBaseMatrix()

◆ getInhInvBaseMatrix()

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

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

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

戻り値
モデルの継承移動・回転要素逆変換行列
参照
fk_MatrixAdmin::getInvBaseMatrix(), getInhInvMatrix(), getInhBaseMatrix()

◆ getInhPosition()

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

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

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

戻り値
グローバル座標系での位置ベクトル
参照
getInhVec(), getInhUpvec(), getInhAngle(), fk_MatrixAdmin::getPosition()

◆ getInhVec()

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

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

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

戻り値
グローバル座標系での方向ベクトル
参照
getInhPosition(), getInhUpvec(), getInhAngle(), fk_MatrixAdmin::getVec()

◆ getInhUpvec()

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

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

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

戻り値
グローバル座標系でのアップベクトル
参照
getInhPosition(), getInhVec(), getInhAngle(), fk_MatrixAdmin::getUpvec()

◆ getInhAngle()

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

継承オイラー角参照関数

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

戻り値

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

◆ getInhScale()

double FK::fk_Model::getInhScale ( void  ) const

継承全体倍率取得関数

モデルの全体拡大・縮小倍率を取得します。 親子関係の小モデルの場合、親モデルでの倍率も反映されます。

戻り値
継承全体拡大・縮小倍率
参照
getInhPosition(), getInhVec(), getInhUpvec(), getInhAngle(), fk_MatrixAdmin::getScale()

◆ setParent()

bool FK::fk_Model::setParent ( fk_Model model,
bool  setMode = false 
)

親モデル設定関数

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

引数
[in]model親モデルインスタンスのポインタ
[in]setModetrue の場合、現在のグローバル座標系の位置と姿勢を、 親モデル設定後も保持します。 false の場合は、当モデルでの位置と姿勢を親モデルからの 相対的な位置、姿勢として扱います。 そのため、設定後にグローバル座標系での位置や姿勢は変化することになります。 この引数を省略した場合は false と同様の挙動となります。
戻り値
設定に成功すれば true を、失敗すれば false を返します。
参照
deleteParent(), getParent(), entryChild()

◆ deleteParent()

void FK::fk_Model::deleteParent ( bool  setMode = false)

親モデル解除関数

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

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

◆ getParent()

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

親モデル参照関数

親モデルを取得します。

戻り値
親モデルインスタンスのポインタ。 親モデルが設定されていない場合は nullptr を返します。
参照
setParent(), deleteParent()

◆ entryChild()

bool FK::fk_Model::entryChild ( fk_Model model,
bool  setMode = false 
)

子モデル設定関数

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

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

◆ deleteChild()

bool FK::fk_Model::deleteChild ( fk_Model model,
bool  setMode = false 
)

子モデル解除関数

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

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

◆ deleteChildren()

void FK::fk_Model::deleteChildren ( bool  setMode = false)

全子モデル解除関数

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

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

◆ foreachChild()

fk_Model * FK::fk_Model::foreachChild ( fk_Model model)

子モデル逐次参照関数

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

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

fk_Model    parentModel, *childModel;

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

    childModel->setDrawMode(fk_Draw::LINE);
}
引数
[in]model順番に渡す子モデルインスタンスのポインタ
戻り値
次にあたる子モデルインスタンスのポインタ。 引数に最後の子モデルが渡された場合、nullptr を返します。
参照
entryChild(), deleteChild(), deleteChildren()

◆ snapShot()

void FK::fk_Model::snapShot ( void  )

位置・姿勢保存関数

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

参照
restore(void), restore(double), setInterStopMode()

◆ restore() [1/2]

bool FK::fk_Model::restore ( void  )

位置・姿勢復元関数

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

戻り値
復元に成功すれば true を、失敗すれば false を返します。
参照
restore(double), snapShot(), setInterStopMode()

◆ restore() [2/2]

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

位置・姿勢途中復元関数

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

引数
[in]t線形補間パラメータ。 0 を snapShot() 関数による保存時、 1 を現時点とし、 与えられた実数によって線形補間した位置と姿勢に設定します。
戻り値
設定に成功すれば true を、失敗すれば false を返します。
参照
snapShot(), restore(void), isCollision()

◆ setShader()

void FK::fk_Model::setShader ( fk_ShaderBinder shader)

シェーダー設定関数

この関数は、モデル描画の際のシェーダーを設定するものです。 fk_ShaderBinder::bindModel() による設定とまったく同じ挙動となります。

引数
[in]shaderシェーダープログラム
覚え書き
シェーダーを未設定にし、デフォルトのシェーダーで描画したい場合は、 引数に nullptr を入力して下さい。

◆ getShader()

fk_ShaderBinder * FK::fk_Model::getShader ( void  )

シェーダー取得関数

setShader() (または fk_ShaderBinder::bindModel()) によって設定されたシェーダーを返します。

戻り値
シェーダーを返します。 シェーダーが設定されていない場合は nullptr を返します。

◆ adjustSphere()

void FK::fk_Model::adjustSphere ( void  )

境界球自動設定関数

この関数は、 境界ボリュームである境界球の半径を自動的に設定するものです。 具体的には、モデルの中心から形状の最遠点となる点と中心との距離を半径とします。 その結果、すべての形状上の点は境界球の内側に入ることになります。 境界球に関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界球半径は自動的に変化しません。 形状の全ての部分が境界球内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。
参照
isInter(), isCollision(), fk_Boundary::setBMode(), fk_Boundary::setSphere(), fk_Boundary::getSphere()

◆ adjustAABB()

void FK::fk_Model::adjustAABB ( void  )

AABB 自動設定関数

この関数は、 境界ボリュームである AABB (軸平行境界ボックス) の大きさを自動的に設定するものです。 すべての頂点が AABB の内部と入る条件を満たす最小の大きさが設定されます。 AABB に関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 AABB の大きさは自動的に変化しません。 形状の全ての部分が AABB 内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。 また、AABB はその性質上、 モデルが回転した場合には形状が AABB の外側にはみ出る可能性がありますので、 モデルが回転した後も形状が AABB 内部にあることを保証するには、 回転した後に本関数を呼ぶ必要があります。
参照
isInter(), isCollision(), fk_Boundary::setBMode(), fk_Boundary::setAABBSize(double, double, double), fk_Boundary::setAABBSize(fk_Vector), fk_Boundary::getAABBSize()

◆ adjustOBB()

void FK::fk_Model::adjustOBB ( void  )

OBB 自動設定関数

この関数は、 境界ボリュームである OBB (有向境界ボックス) の大きさを自動的に設定するものです。 すべての頂点が OBB の内部と入る条件を満たす最小の大きさが設定されます。 OBB に関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 OBB の大きさは自動的に変化しません。 形状の全ての部分が OBB 内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。
参照
isInter(), isCollision(), fk_Boundary::setBMode(), fk_Boundary::setOBBSize(double, double, double), fk_Boundary::setOBBSize(fk_Vector), fk_Boundary::getOBBSize()

◆ adjustCapsule() [1/4]

void FK::fk_Model::adjustCapsule ( void  )

境界カプセル自動設定関数(全自動)

この関数は、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸の位置と向きは自動的に設定され、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。
参照
isInter(), isCollision(), adjustCapsule(fk_Vector, fk_Vector, bool), adjustCapsule(fk_Vector, fk_Axis), adjustCapsule(fk_Axis), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

◆ adjustCapsule() [2/4]

void FK::fk_Model::adjustCapsule ( fk_Axis  axis)

境界カプセル自動設定関数(座標軸による中心軸設定)

この関数は、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸に平行な座標軸を設定することで、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 中心軸の位置は自動的に設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。
引数
[in]axis中心軸に平行な座標軸
参照
isInter(), isCollision(), adjustCapsule(fk_Vector, fk_Vector, bool), adjustCapsule(fk_Vector, fk_Axis), adjustCapsule(void), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

◆ adjustCapsule() [3/4]

void FK::fk_Model::adjustCapsule ( fk_Vector  P,
fk_Axis  axis 
)

境界カプセル自動設定関数(中心軸上の点と座標軸)

この関数は、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸上の1点と、中心軸に平行な座標軸を設定することで、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。
引数
[in]P中心軸上の任意の点
[in]axis中心軸に平行な座標軸
参照
isInter(), isCollision(), adjustCapsule(fk_Vector, fk_Vector, bool), adjustCapsule(fk_Axis), adjustCapsule(void), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

◆ adjustCapsule() [4/4]

void FK::fk_Model::adjustCapsule ( fk_Vector  S,
fk_Vector  E,
bool  mode = false 
)

境界カプセル自動設定関数(中心軸直接指定)

この関数は、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸上の2点を設定することで、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。
引数
[in]S中心軸始点位置ベクトル
[in]E中心軸終点位置ベクトル
[in]modetrue の場合、S と E を通る直線上で、 カプセル形状の体積が最小となるように、 S と E の位置を調整します。 false の場合は S と E を変更しません。 第3引数を省略した場合は、false がデフォルトとなります。
参照
isInter(), isCollision(), adjustCapsule(fk_Vector, fk_Axis), adjustCapsule(fk_Axis), adjustCapsule(void), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

◆ isInter()

bool FK::fk_Model::isInter ( fk_Model model)

モデル間干渉判定関数

この関数は、別モデルとの干渉判定を行います。 干渉判定に用いられる境界ボリュームの種類は、 fk_Boundary::setBMode() で設定されたものが用いられます。 相手モデル側で別の種類が設定されていた場合でも、 この関数を呼び出しているインスタンス側の設定が優先されます。 従って、相手モデル側の境界ボリュームも適切に設定しておく必要があります。

覚え書き
「干渉判定」と「衝突判定」の違いに関しては、 本クラスの概要を参照して下さい。
引数
[in]model干渉判定を行うモデル
戻り値
干渉している場合 true を、していない場合 false を返します。
参照
adjustSphere(), adjustAABB(), adjustOBB(), adjustCapsule(), isCollision(), snapShot(), restore(void), setInterStopMode(), entryInterModel(), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

◆ isCollision()

std::tuple< bool, double > FK::fk_Model::isCollision ( fk_Model model)

モデル間衝突判定関数

この関数は、別モデルとの衝突判定を行います。 衝突判定を行うには、まずそれぞれのモデルにおいて snapShot() 関数によって衝突判定を行う初期状態を設定しておく必要があります。 その状態から現在の位置まで、両モデルが等速度直線運動していると想定し、 その間に衝突が発生したかどうかを検出します。

なお、本関数を利用する際には事前に境界球の半径を適切に設定しておく必要があります。 現在この関数は境界球による判定のみが有効となります。 fk_Boundary::setBMode() によって境界ボリュームが別の種類に設定されていた場合でも、 境界球の情報のみが用いられます。

なお、衝突判定は snapShot() を呼ぶ以前や現時点以降を含めての検出となるので、 snapShot() を呼んだ時点から現時点までの間に衝突が起こったかどうかを判定するには、 返値第2引数の衝突時間を考慮する必要があります。

覚え書き
「干渉判定」と「衝突判定」の違いに関しては、 本クラスの概要を参照して下さい。
引数
[in]model衝突判定を行うモデル
戻り値
第1要素は、両モデルが等速度直線運動をすると想定した場合に、 いずれかの時刻で衝突が起きる場合 true が、衝突しない場合は false が入ります。

第2要素は,snapShot() が呼ばれた時刻を 0、 現時点の時刻を 1 とした場合の衝突時間が入ります。 第1要素が true であった場合でも、 この値が 0 から 1 の間にないときは、 衝突が起こっていないことになりますので、注意して下さい。

参照
adjustSphere(), adjustAABB(), adjustOBB(), adjustCapsule(), isInter(), snapShot(), restore(double), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

◆ setInterMode()

void FK::fk_Model::setInterMode ( bool  mode)

干渉継続モード設定関数

干渉継続モードを有効にしておくと、 本モデルが isInter() 関数で他のモデルと干渉状態が検出された場合、 resetInter() が呼ばれるまでは true を返すようになります。

引数
[in]modetrue である場合、干渉継続モードが有効となります。 false の場合無効にします。
参照
isInter(), getInterMode(), getInterStatus(), resetInter(), setInterStopMode(), entryInterModel()

◆ getInterMode()

bool FK::fk_Model::getInterMode ( void  )

干渉継続モード取得関数

現在の干渉継続モード状態を取得します。

戻り値
干渉継続モードが有効である場合 true を、無効である場合 false を返します。
参照
setInterMode()

◆ getInterStatus()

bool FK::fk_Model::getInterStatus ( void  )

干渉継続状態取得関数

本関数は、干渉継続モードが有効である場合で、 前に resetInter() が呼ばれた以降で、 isInter() によって干渉が検出されたことがあるかを検出します。

戻り値
干渉検出があった場合 true を、なかった場合 false を返します。
参照
isInter(), setInterMode(), resetInterStatus()

◆ resetInter()

void FK::fk_Model::resetInter ( void  )

干渉継続状態初期化関数

干渉継続モードによる干渉検出状態を初期化します。 この関数が呼ばれた以降、再び isInter() による干渉が検出されるまでは、 getInterStatus() 関数は false を返します。

参照
isInter(), setInterMode(), getInterStatus()

◆ setInterStopMode()

void FK::fk_Model::setInterStopMode ( bool  mode)

干渉自動停止モード設定関数

この関数は、干渉自動停止モードの有無効を設定します。 「干渉自動停止モード」とは、以下のような処理を行う機能のことです。

  1. 干渉チェック対象となるモデルを事前に登録しておく。
  2. モデル移動の前に snapShot() をしておく。
  3. モデルの移動を行った際に、 もし干渉チェック対象モデルのいずれかと干渉していた場合は、 restore() を実行し移動前の状態に戻る。

この機能を用いることで、移動後で干渉が起きてしまう移動が無効となります。 壁などにモデルが入らないように処理するような場面で有効となります。

このモードの対象となる移動関数は以下のとおりです。

これらの関数は、モデルの位置ベクトルが変化する可能性があるからです。 その他の姿勢制御関数については停止の対象とはなりません。

なお、このモードを利用する場合、 restore() した後にも干渉状態となっている場合、 適用モデルがまったく動かなくなるという問題が生じます。 そのため本機能を用いたい場合は、 干渉チェック対象となるモデルは全て静止した状態であることを推奨します。 また、位置のかわらない姿勢制御関数は干渉状態であっても動作しますが、 その際に物体の回転によって非干渉状態から干渉状態となることがありえますので、 これも注意が必要です。

覚え書き
干渉判定を行う際の境界ボリュームに関する設定は、 事前に行っておく必要があります。
このモードを利用する場合、副作用として自前で管理していた snapShot() の情報が破棄されてしまうという問題がありますので、 snapShot()restore() を利用する場合はこのモードは用いないようにして下さい。
引数
[in]modetrue の場合有効とし、 false の場合無効とします。
参照
getInterStopMode(), entryInterModel(), deleteInterModel(), clearInterModel(), isInter(), snapShot(), restore()

◆ getInterStopMode()

bool FK::fk_Model::getInterStopMode ( void  )

干渉自動停止モード取得関数

干渉自動停止モードの有無効を取得します。

戻り値
有効である場合 true を、無効である場合 false を返します。
参照
setInterStopMode()

◆ entryInterModel()

void FK::fk_Model::entryInterModel ( fk_Model model)

干渉自動停止モデル登録関数

干渉自動停止モードの対象となるモデルを登録します。

覚え書き
本関数で登録したモデルのインスタンスを、 deleteInterModel()clearInterModel() で解除する前に消去した場合、 動作は保証されません。
引数
[in]model登録モデルインスタンス
参照
setInterStopMode(), deleteInterModel(), clearInterModel()

◆ deleteInterModel()

void FK::fk_Model::deleteInterModel ( fk_Model model)

干渉自動停止モデル解除関数

干渉自動停止モードの対象となっていたモデルの解除を行います。 もし入力モデルが登録されていなかった場合は、なにも起こりません。

引数
[in]model解除モデルインスタンス
参照
setInterStopMode(), entryInterModel(), clearInterModel()

◆ clearInterModel()

void FK::fk_Model::clearInterModel ( void  )

干渉自動停止モデル初期化関数

干渉自動停止モード用に登録されていた全てのモデルを解除します。

参照
setInterStopMode(), entryInterModel(), deleteInterModel()