FineKernelToolKit: FK_CLI::fk_Model クラス

FineKernelToolKit 4.3.0

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

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

`#include <CLI/FK_CLI/include/Model_CLI.h>`

FK_CLI::fk_Model の継承関係図
[凡例]
FK_CLI::fk_Model 連携図
[凡例]

## 公開メンバ関数

| fk_Model ()
| コンストラクタ
| ~fk_Model ()
| デストラクタ
| !fk_Model ()
| ファイナライザ
親子関係制御メソッド
bool | SetParent (fk_Model^ model, bool mode)
| 親モデル設定メソッド1
bool | SetParent (fk_Model^ model)
| 親モデル設定メソッド2
void | DeleteParent (bool mode)
| 親モデル解除メソッド1
void | DeleteParent (void)
| 親モデル解除メソッド2
bool | EntryChild (fk_Model^ model, bool mode)
| 子モデル設定メソッド1
bool | EntryChild (fk_Model^ model)
| 子モデル設定メソッド2
bool | DeleteChild (fk_Model^ model, bool mode)
| 子モデル解除メソッド1
bool | DeleteChild (fk_Model^ model)
| 子モデル解除メソッド2
void | DeleteChildren (bool mode)
| 全子モデル解除メソッド1
void | DeleteChildren (void)
| 全子モデル解除メソッド2
状態保存制御メソッド
void | SnapShot (void)
| 位置・姿勢保存メソッド
bool | Restore (void)
| 位置・姿勢復元メソッド
bool | Restore (double t)
| 位置・姿勢途中復元メソッド
境界ボリューム自動設定メソッド
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)
| 境界カプセル自動設定メソッド(中心軸直接指定, 順番指定付)
void | AdjustCapsule (fk_Vector^ S, fk_Vector^ E)
| 境界カプセル自動設定メソッド(中心軸直接指定, 順番指定付)
干渉判定・衝突判定メソッド
bool | IsInter (fk_Model^ model)
| モデル間干渉判定メソッド
bool | IsCollision (fk_Model^ model, double % time)
| モデル間衝突判定メソッド
void | ResetInter (void)
| 干渉継続状態初期化メソッド
干渉自動停止制御メソッド
void | EntryInterModel (fk_Model^ model)
| 干渉自動停止モデル登録メソッド
void | DeleteInterModel (fk_Model^ model)
| 干渉自動停止モデル解除メソッド
void | ClearInterModel (void)
| 干渉自動停止モデル初期化メソッド
回転制御メソッド
bool | GlRotate (fk_Vector^ origin, fk_Axis axis, double theta)
| グローバル座標系座標軸回転メソッド1
bool | GlRotate (double x, double y, double z, 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 x, double y, double z, 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 x, double y, double z, 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 x, double y, double z, 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
基底クラス FK_CLI::fk_Boundary に属する継承公開メンバ関数
void | SetAABBMaxMin (fk_Vector^ max, fk_Vector^ min)
| 軸平行境界ボックス (AABB) 最大最小設定メソッド
void | SetOBBMaxMin (fk_Vector^ max, fk_Vector^ min)
| 有向境界ボックス (OBB) 最大最小設定メソッド
void | SetCapsule (fk_Vector^ startPos, fk_Vector^ endPos, double radius)
| カプセル型設定メソッド
基底クラス FK_CLI::fk_MatrixAdmin に属する継承公開メンバ関数
bool | SetScale (double scale, fk_Axis axis)
| 軸方向絶対倍率設定メソッド
bool | SetScale (double x, double y, double z)
| 軸方向個別絶対倍率設定メソッド
bool | PrdScale (double scale)
| 全体相対倍率設定メソッド
bool | PrdScale (double scale, fk_Axis axis)
| 軸方向相対倍率設定メソッド
bool | PrdScale (double x, double y, double z)
| 軸方向個別相対倍率設定メソッド
double | GetScale (fk_Axis axis)
| 軸方向倍率取得メソッド
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

## プロパティ

基本情報プロパティ
unsigned int | ID`[get]`
| ID プロパティ
fk_Shape^ | Shape`[get, set]`
| 形状プロパティ
fk_Model^ | Parent`[get, set]`
| 親モデルプロパティ
色・マテリアル関連プロパティ
fk_Material^ | Material`[get, set]`
| マテリアルプロパティ
fk_Color^ | PointColor`[get, set]`
| 頂点色プロパティ
fk_Color^ | LineColor`[get, set]`
| 稜線色プロパティ
fk_Color^ | CurveColor`[get, set]`
| 曲線色プロパティ
double | PointSize`[get, set]`
| 頂点描画サイズプロパティ
描画制御関連プロパティ
fk_Draw | DrawMode`[get, set]`
| 描画モードプロパティ
fk_ElementMode | ElementMode`[get, set]`
| 要素モード関連プロパティ
fk_ShadingMode | ShadingMode`[get, set]`
| シェーディングモード関連プロパティ
bool | SmoothMode`[get, set]`
| スムースモードプロパティ
bool | ReverseDrawMode`[get, set]`
| 描画順序制御プロパティ
fk_DepthMode | DepthMode`[get, set]`
| 前後関係制御プロパティ
fk_BlendMode | BlendMode`[get, set]`
| ブレンドモード設定プロパティ
fk_BlendFactor | BlendSrcFactor`[get, set]`
| ブレンド時の入力ピクセル係数設定プロパティ
fk_BlendFactor | BlendDstFactor`[get, set]`
| ブレンド時の出力ピクセル係数設定プロパティ
bool | ShadowEffect`[get, set]`
| 影投影プロパティ
bool | ShadowDraw`[get, set]`
| 影表示プロパティ
bool | FogMode`[get, set]`
| 霧効果プロパティ
位置・姿勢・行列関連プロパティ
fk_Vector^ | InhPosition`[get]`
| 継承位置ベクトルプロパティ
fk_Vector^ | InhVec`[get]`
| 継承方向ベクトルプロパティ
fk_Vector^ | InhUpvec`[get]`
| 継承アップベクトルプロパティ
fk_Angle^ | InhAngle`[get]`
| 継承オイラー角参照メソッド
double | InhScale`[get]`
| 継承全体倍率プロパティ
fk_Matrix^ | InhMatrix`[get]`
| 継承変換行列プロパティ
fk_Matrix^ | InhInvMatrix`[get]`
| 継承逆変換行列プロパティ
fk_Matrix^ | InhBaseMatrix`[get]`
| 継承移動・回転要素変換行列プロパティ
fk_Matrix^ | InhInvBaseMatrix`[get]`
| 継承移動・回転要素逆変換行列プロパティ
干渉・衝突判定関連プロパティ
bool | InterMode`[get, set]`
| 干渉継続モード設定メソッド
bool | InterStatus`[get]`
| 干渉継続状態プロパティ
bool | InterStopMode`[get, set]`
| 干渉自動停止モードプロパティ
基底クラス FK_CLI::fk_Boundary に属する継承プロパティ
fk_BoundaryMode | BMode`[get, set]`
| 境界ボリューム選択プロパティ
double | SphereRadius`[get, set]`
| 境界球半径プロパティ
fk_Vector^ | SpherePos`[get, set]`
fk_Vector^ | AABB`[get, set]`
| 軸平行境界ボックス (AABB) サイズプロパティ
fk_Vector^ | AABBMax`[get, set]`
| 軸平行境界ボックス (AABB) 最大値側プロパティ
fk_Vector^ | AABBMin`[get, set]`
| 軸平行境界ボックス (AABB) 最小値側プロパティ
fk_Vector^ | OBB`[get, set]`
| 有向境界ボックス (OBB) サイズプロパティ
fk_Vector^ | OBBMax`[get, set]`
| 有向境界ボックス (OBB) 最大値側プロパティ
fk_Vector^ | OBBMin`[get, set]`
| 有向境界ボックス (OBB) 最小値側プロパティ
double | CapsuleRadius`[get, set]`
| カプセル型領域規定距離プロパティ
double | CapsuleLength`[get]`
| カプセル型中心軸長プロパティ
fk_Vector^ | CapsuleStart`[get, set]`
| カプセル型中心軸始点プロパティ
fk_Vector^ | CapsuleEnd`[get, set]`
| カプセル型中心軸終点プロパティ
bool | BDraw`[get, set]`
| 境界ボリューム描画有無プロパティ
fk_Color^ | BLineColor`[get, set]`
| 境界ボリューム非干渉描画色プロパティ
fk_Color^ | BIntLineColor`[get, set]`
| 境界ボリューム干渉状態描画色プロパティ
double | BLineWidth`[get, set]`
| 境界ボリューム描画線幅プロパティ
基底クラス FK_CLI::fk_MatrixAdmin に属する継承プロパティ
fk_Vector^ | Position`[get]`
| 位置ベクトルプロパティ
fk_Vector^ | Vec`[get]`
| 方向ベクトルプロパティ
fk_Vector^ | Upvec`[get]`
| アップベクトルプロパティ
fk_Angle^ | Angle`[get]`
| オイラー角取得メソッド
fk_Matrix^ | Matrix`[get]`
| 変換行列プロパティ
fk_Matrix^ | InvMatrix`[get]`
| 逆変換行列プロパティ
fk_Matrix^ | BaseMatrix`[get]`
| 移動・回転要素変換行列プロパティ
fk_Matrix^ | InvBaseMatrix`[get]`
| 移動・回転要素逆変換行列プロパティ
bool | ScaleMode`[get]`
| 拡大縮小状態判定プロパティ
double | Scale`[get, set]`
| 全体倍率プロパティ

## 物理シミュレーション関数

fk_Vector^ | Inertia`[set]`
| 慣性モーメント設定関数
double | Mass`[set]`
| 質量設定関数
double | Restitution`[set]`
| 反射係数設定関数
bool | Dynamics`[set]`
| 運動有無設定関数
fk_Vector^ | Force`[set]`
| 外力設定関数
void | SetDamping (double sd, double rd)
| 摩擦係数設定関数
static void | StepSimulation (float time, int step)

## 詳解

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

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

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

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

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

- 干渉判定:
  ある時点において、モデル同士に干渉部分があるかどうかを判定すること。
- 衝突判定:
  2つのモデルが時刻 t0 から t1 まで等速度直線運動をしていたと仮定した場合に、 途中で衝突が起こったかどうかを判定すること。

本クラスのメソッドでは、以下のような機能を提供します。

- Shape プロパティにて形状を設定した後に自動的に境界ボリュームのサイズを設定する機能。
- 干渉判定や衝突判定を行う機能。
- 登録しておいたモデルと干渉した場合に自動的に停止する機能。

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

参照
  fk_MatrixAdmin, fk_Boundary, fk_Shape, fk_Scene, fk_DisplayLink

## 構築子と解体子

## ◆ fk_Model()

FK_CLI::fk_Model::fk_Model | ( |  | ) |

コンストラクタ

## ◆ ~fk_Model()

FK_CLI::fk_Model::~fk_Model | ( |  | ) |

デストラクタ

## ◆ !fk_Model()

FK_CLI::fk_Model::!fk_Model | ( |  | ) |

ファイナライザ

## 関数詳解

## ◆ SetParent() [1/2]

bool FK_CLI::fk_Model::SetParent | ( | fk_Model^ | model,
|  | bool | mode )

親モデル設定メソッド1

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

引数

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

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

参照
  Parent, DeleteParent(), EntryChild()

## ◆ SetParent() [2/2]

bool FK_CLI::fk_Model::SetParent | ( | fk_Model^ | model | ) |

親モデル設定メソッド2

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

なお本メソッドは、 SetParent(fk_Model^, bool) において、 第2引数に false を入力した場合と同義となります。 また、 Parent プロパティに model を代入することとも同義です。

引数

  [in] | model | 親モデルインスタンスのポインタ

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

参照
  Parent, DeleteParent(), EntryChild()

## ◆ DeleteParent() [1/2]

void FK_CLI::fk_Model::DeleteParent | ( | bool | mode | ) |

親モデル解除メソッド1

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

引数

  [in] | mode | true の場合、現在のグローバル座標系の位置と姿勢を、 親モデル解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。

参照
  SetParent(fk_Model^, bool), Parent, DeleteChild()

## ◆ DeleteParent() [2/2]

void FK_CLI::fk_Model::DeleteParent | ( | void |  | ) |

親モデル解除メソッド2

親モデルの設定を解除します。 本メソッドは、 DeleteParent(bool) において、 引数に false を入力した場合と同義となります。

参照
  SetParent(fk_Model^, bool), DeleteParent(bool), Parent, DeleteChild()

## ◆ EntryChild() [1/2]

bool FK_CLI::fk_Model::EntryChild | ( | fk_Model^ | model,
|  | bool | mode )

子モデル設定メソッド1

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

引数

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

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

参照
  Parent, SetParent(), DeleteChild(), DeleteChildren()

## ◆ EntryChild() [2/2]

bool FK_CLI::fk_Model::EntryChild | ( | fk_Model^ | model | ) |

子モデル設定メソッド2

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

なお、本メソッドは EntryChild(fk_Model^, bool) において、 第2引数に false を入力した場合と同義となります。

引数

  [in] | model | 子モデルインスタンスのポインタ

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

参照
  Parent, SetParent(), DeleteChild(), DeleteChildren()

## ◆ DeleteChild() [1/2]

bool FK_CLI::fk_Model::DeleteChild | ( | fk_Model^ | model,
|  | bool | mode )

子モデル解除メソッド1

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

引数

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

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

参照
  EntryChild(), DeleteChildren()

## ◆ DeleteChild() [2/2]

bool FK_CLI::fk_Model::DeleteChild | ( | fk_Model^ | model | ) |

子モデル解除メソッド2

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

なお、本メソッドは DeleteChild(fk_Model^, bool) において、 第2引数に false を入力した場合と同義となります。

引数

  [in] | model | 子モデルインスタンスのポインタ。 もし model が子モデルの中に存在しない場合は、false を返します。

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

参照
  EntryChild(), DeleteChildren()

## ◆ DeleteChildren() [1/2]

void FK_CLI::fk_Model::DeleteChildren | ( | bool | mode | ) |

全子モデル解除メソッド1

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

引数

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

参照
  EntryChild(), DeleteChild()

## ◆ DeleteChildren() [2/2]

void FK_CLI::fk_Model::DeleteChildren | ( | void |  | ) |

全子モデル解除メソッド2

当モデルの全ての子モデルの設定を解除します。 本メソッドは、 DeleteChildren(bool) において、 引数に false を入力した場合と同義となります。

参照
  EntryChild(), DeleteChild()

## ◆ SnapShot()

void FK_CLI::fk_Model::SnapShot | ( | void |  | ) |

位置・姿勢保存メソッド

現時点でのモデルの位置と姿勢を保存します。 Restore() メソッドを用いることで復元します。

参照
  Restore(void), Restore(double), InterStopMode

## ◆ Restore() [1/2]

bool FK_CLI::fk_Model::Restore | ( | void |  | ) |

位置・姿勢復元メソッド

SnapShot() メソッドによって保存した位置・姿勢を復元します。

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

参照
  Restore(double), SnapShot(), InterStopMode

## ◆ Restore() [2/2]

bool FK_CLI::fk_Model::Restore | ( | double | t | ) |

位置・姿勢途中復元メソッド

SnapShot() メソッドによって保存した位置・姿勢に対し、 現在の位置・姿勢と線形補間した状態にします。

引数

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

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

参照
  SnapShot(), Restore(void), IsCollision()

## ◆ AdjustSphere()

void FK_CLI::fk_Model::AdjustSphere | ( | void |  | ) |

境界球自動設定メソッド

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

覚え書き
  fk_Model.Shape プロパティに別形状を設定した場合や、設定した形状を fk_IndexFaceSet.MoveVPosition() などのメソッドによって変形した場合でも、 境界球半径は自動的に変化しません。 形状の全ての部分が境界球内部に入ることを保証するためには、 形状変化後に本メソッドを呼ぶ必要があります。

参照
  IsInter(), IsCollision(), fk_Boundary

## ◆ AdjustAABB()

void FK_CLI::fk_Model::AdjustAABB | ( | void |  | ) |

AABB 自動設定メソッド

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

覚え書き
  fk_Model.Shape プロパティに別形状を設定した場合や、設定した形状を fk_IndexFaceSet.MoveVPosition() などのメソッドによって変形した場合でも、 AABB の大きさは自動的に変化しません。 形状の全ての部分が AABB 内部に入ることを保証するためには、 形状変化後に本メソッドを呼ぶ必要があります。 また、AABB はその性質上、 モデルが回転した場合には形状が AABB の外側にはみ出る可能性がありますので、 モデルが回転した後も形状が AABB 内部にあることを保証するには、 回転した後に本メソッドを呼ぶ必要があります。

参照
  IsInter(), IsCollision(), fk_Boundary

## ◆ AdjustOBB()

void FK_CLI::fk_Model::AdjustOBB | ( | void |  | ) |

OBB 自動設定メソッド

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

覚え書き
  fk_Model.Shape プロパティに別形状を設定した場合や、設定した形状を fk_IndexFaceSet.MoveVPosition() などのメソッドによって変形した場合でも、 OBB の大きさは自動的に変化しません。 形状の全ての部分が OBB 内部に入ることを保証するためには、 形状変化後に本メソッドを呼ぶ必要があります。

参照
  IsInter(), IsCollision(), fk_Boundary

## ◆ AdjustCapsule() [1/5]

void FK_CLI::fk_Model::AdjustCapsule | ( | void |  | ) |

境界カプセル自動設定メソッド(全自動)

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

覚え書き
  Shape プロパティで別形状を設定した場合や、設定した形状を fk_IndexFaceSet.MoveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

参照
  isInter(), isCollision(), fk_Boundary

## ◆ AdjustCapsule() [2/5]

void FK_CLI::fk_Model::AdjustCapsule | ( | fk_Axis | axis | ) |

境界カプセル自動設定メソッド(座標軸による中心軸設定)

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

覚え書き
  Shape プロパティで別形状を設定した場合や、設定した形状を fk_IndexFaceSet.moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

引数

  [in] | axis | 中心軸に平行な座標軸

参照
  IsInter(), IsCollision(), fk_Boundary

## ◆ AdjustCapsule() [3/5]

void FK_CLI::fk_Model::AdjustCapsule | ( | fk_Vector^ | P,
|  | fk_Axis | axis )

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

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

覚え書き
  Shape プロパティで別形状を設定した場合や、設定した形状を fk_IndexFaceSet.moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

引数

  [in] | P | 中心軸上の任意の点
  [in] | axis | 中心軸に平行な座標軸

参照
  IsInter(), IsCollision(), fk_Boundary

## ◆ AdjustCapsule() [4/5]

void FK_CLI::fk_Model::AdjustCapsule | ( | fk_Vector^ | S,
|  | fk_Vector^ | E,
|  | bool | mode )

境界カプセル自動設定メソッド(中心軸直接指定, 順番指定付)

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

覚え書き
  Shape プロパティで別形状を設定した場合や、設定した形状を fk_IndexFaceSet.MoveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

引数

  [in] | S | 中心軸始点位置ベクトル
  [in] | E | 中心軸終点位置ベクトル
  [in] | mode | true の場合、S と E を通る直線上で、 カプセル形状の体積が最小となるように、 S と E の位置を調整します。 false の場合は S と E を変更しません。

参照
  IsInter(), IsCollision(), fk_Boundary

## ◆ AdjustCapsule() [5/5]

void FK_CLI::fk_Model::AdjustCapsule | ( | fk_Vector^ | S,
|  | fk_Vector^ | E )

境界カプセル自動設定メソッド(中心軸直接指定, 順番指定付)

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

覚え書き
  fk_Model.Shape プロパティに別形状を設定した場合や、設定した形状を fk_IndexFaceSet.MoveVPosition() などのメソッドによって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本メソッドを呼ぶ必要があります。 本メソッドは、AdjustCapsule(fk_Vector^, fk_Vector^, bool) に対し、 第3引数に false を入れたときと同じ挙動となります。

引数

  [in] | S | 中心軸始点位置ベクトル
  [in] | E | 中心軸終点位置ベクトル

参照
  IsInter(), IsCollision(), fk_Boundary

## ◆ IsInter()

bool FK_CLI::fk_Model::IsInter | ( | fk_Model^ | model | ) |

モデル間干渉判定メソッド

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

覚え書き
  「干渉判定」と「衝突判定」の違いに関しては、 本クラスの概要を参照して下さい。

引数

  [in] | model | 干渉判定を行うモデル

戻り値
  干渉している場合 true を、していない場合 false を返します。

参照
  AdjustSphere(), AdjustAABB(), AdjustOBB(), AdjustCapsule(), IsCollision(), SnapShot(), Restore(void), InterStopMode, EntryInterModel(), fk_Boundary.BMode, fk_Boundary.SetCapsule(), fk_Boundary.GetCapsuleRadius(), fk_Boundary.GetCapsuleLength(), fk_Boundary.GetCapsuleStartPos(), fk_Boundary.GetCapsuleEndPos()

## ◆ IsCollision()

bool FK_CLI::fk_Model::IsCollision | ( | fk_Model^ | model,
|  | double % | time )

モデル間衝突判定メソッド

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

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

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

覚え書き
  「干渉判定」と「衝突判定」の違いに関しては、 本クラスの概要を参照して下さい。

引数

  [in] | model | 衝突判定を行うモデル
  [out] | time | SnapShot() が呼ばれた時刻を 0、 現時点の時刻を 1 とした場合の、衝突時間を検出します。 本メソッドの返値が true であった場合でも、 この値が 0 から 1 の間にないときは、 衝突が起こっていないことになりますので、注意して下さい。

戻り値
  両モデルが等速度直線運動をすると想定した場合に、 いずれかの時刻で衝突が起きる場合 true を、衝突しない場合は false を返します。 ただし、第二引数の値が 0 から 1 の間にない場合は、 SnapShot() を呼んだ時点から現時点までの間においては衝突が起こっていないことになります。

参照
  AdjustSphere(), AdjustAABB(), AdjustOBB(), AdjustCapsule(), IsInter(), SnapShot(), Restore(double), fk_Boundary.BMode, fk_Boundary.SetCapsule(), fk_Boundary.GetCapsuleRadius(), fk_Boundary.GetCapsuleLength(), fk_Boundary.GetCapsuleStartPos(), fk_Boundary.GetCapsuleEndPos()

## ◆ ResetInter()

void FK_CLI::fk_Model::ResetInter | ( | void |  | ) |

干渉継続状態初期化メソッド

干渉継続モードによる干渉検出状態を初期化します。 干渉継続モードについては fk_Model.InterMode プロパティの解説を参照して下さい。 このメソッドが呼ばれた以降、再び IsInter() による干渉が検出されるまでは、 InterStatus プロパティは false のままとなります。

参照
  IsInter(), InterMode, InterStatus

## ◆ EntryInterModel()

void FK_CLI::fk_Model::EntryInterModel | ( | fk_Model^ | model | ) |

干渉自動停止モデル登録メソッド

干渉自動停止モードの対象となるモデルを登録します。 干渉自動停止モードについては、 fk_Model.InterStopMode の解説を参照して下さい。

覚え書き
  本メソッドで登録したモデルのインスタンスを、 DeleteInterModel() や ClearInterModel() で解除する前に消去した場合、 動作は保証されません。

引数

  [in] | model | 登録モデルインスタンス

参照
  InterStopMode, DeleteInterModel(), ClearInterModel()

## ◆ DeleteInterModel()

void FK_CLI::fk_Model::DeleteInterModel | ( | fk_Model^ | model | ) |

干渉自動停止モデル解除メソッド

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

引数

  [in] | model | 解除モデルインスタンス

参照
  InterStopMode, EntryInterModel(), ClearInterModel()

## ◆ ClearInterModel()

void FK_CLI::fk_Model::ClearInterModel | ( | void |  | ) |

干渉自動停止モデル初期化メソッド

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

参照
  InterStopMode, EntryInterModel(), DeleteInterModel()

## ◆ GlRotate() [1/4]

bool FK_CLI::fk_Model::GlRotate | ( | fk_Vector^ | origin,
|  | fk_Axis | axis,
|  | double | theta )

グローバル座標系座標軸回転メソッド1

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

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

引数

  [in] | origin | グローバル座標系での回転軸上の点
  [in] | axis | 回転軸に平行な軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  このメソッドは常に true を返します。

参照
  GlRotateWithVec(fk_Vector^, fk_Axis, double), LoRotate(fk_Vector^, fk_Axis, double)

## ◆ GlRotate() [2/4]

bool FK_CLI::fk_Model::GlRotate | ( | double | x,
|  | double | y,
|  | double | z,
|  | fk_Axis | axis,
|  | double | theta )

グローバル座標系座標軸回転メソッド2

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

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

引数

  [in] | x | グローバル座標系での回転軸上の点のx成分
  [in] | y | グローバル座標系での回転軸上の点のy成分
  [in] | z | グローバル座標系での回転軸上の点のz成分
  [in] | axis | 回転軸に平行な軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  このメソッドは常に true を返します。

参照
  GlRotateWithVec(double, double, double, fk_Axis, double), LoRotate(double, double, double, fk_Axis, double)

## ◆ GlRotate() [3/4]

bool FK_CLI::fk_Model::GlRotate | ( | fk_Vector^ | A,
|  | fk_Vector^ | B,
|  | double | theta )

グローバル座標系任意軸回転メソッド1

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

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

引数

  [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)

## ◆ GlRotate() [4/4]

bool FK_CLI::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() を利用して下さい。

引数

  [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)

## ◆ LoRotate() [1/4]

bool FK_CLI::fk_Model::LoRotate | ( | fk_Vector^ | origin,
|  | fk_Axis | axis,
|  | double | theta )

ローカル座標系座標軸回転メソッド1

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

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

引数

  [in] | origin | ローカル座標系での回転軸上の点
  [in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  このメソッドは常に true を返します。

参照
  GlRotate(fk_Vector^, fk_Axis, double), LoRotateWithVec(fk_Vector^, fk_Axis, double)

## ◆ LoRotate() [2/4]

bool FK_CLI::fk_Model::LoRotate | ( | double | x,
|  | double | y,
|  | double | z,
|  | fk_Axis | axis,
|  | double | theta )

ローカル座標系座標軸回転メソッド2

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

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

引数

  [in] | x | ローカル座標系での回転軸上の点のx成分
  [in] | y | ローカル座標系での回転軸上の点のy成分
  [in] | z | ローカル座標系での回転軸上の点のz成分
  [in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  このメソッドは常に true を返します。

参照
  GlRotate(double, double, double, fk_Axis, double), LoRotateWithVec(double, double, double, fk_Axis, double)

## ◆ LoRotate() [3/4]

bool FK_CLI::fk_Model::LoRotate | ( | fk_Vector^ | A,
|  | fk_Vector^ | B,
|  | double | theta )

ローカル座標系任意軸回転メソッド1

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

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

引数

  [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)

## ◆ LoRotate() [4/4]

bool FK_CLI::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() を利用して下さい。

引数

  [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)

## ◆ GlRotateWithVec() [1/4]

bool FK_CLI::fk_Model::GlRotateWithVec | ( | fk_Vector^ | origin,
|  | fk_Axis | axis,
|  | double | theta )

グローバル座標系座標軸回転(姿勢付き)メソッド1

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

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

引数

  [in] | origin | グローバル座標系での回転軸上の点
  [in] | axis | 回転軸に平行な軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  このメソッドは常に true を返します。

参照
  GlRotate(fk_Vector^, fk_Axis, double), LoRotateWithVec(fk_Vector^, fk_Axis, double)

## ◆ GlRotateWithVec() [2/4]

bool FK_CLI::fk_Model::GlRotateWithVec | ( | double | x,
|  | double | y,
|  | double | z,
|  | fk_Axis | axis,
|  | double | theta )

グローバル座標系座標軸回転(姿勢付き)メソッド2

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

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

引数

  [in] | x | グローバル座標系での回転軸上の点のx成分
  [in] | y | グローバル座標系での回転軸上の点のy成分
  [in] | z | グローバル座標系での回転軸上の点のz成分
  [in] | axis | 回転軸に平行な軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  このメソッドは常に true を返します。

参照
  GlRotate(double, double, double, fk_Axis, double), LoRotateWithVec(double, double, double, fk_Axis, double)

## ◆ GlRotateWithVec() [3/4]

bool FK_CLI::fk_Model::GlRotateWithVec | ( | fk_Vector^ | A,
|  | fk_Vector^ | B,
|  | double | theta )

グローバル座標系任意軸回転(姿勢付き)メソッド1

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

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

引数

  [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)

## ◆ GlRotateWithVec() [4/4]

bool FK_CLI::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() を利用して下さい。

引数

  [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)

## ◆ LoRotateWithVec() [1/4]

bool FK_CLI::fk_Model::LoRotateWithVec | ( | fk_Vector^ | origin,
|  | fk_Axis | axis,
|  | double | theta )

ローカル座標系座標軸回転(姿勢付き)メソッド1

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

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

引数

  [in] | origin | ローカル座標系での回転軸上の点
  [in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  このメソッドは常に true を返します。

参照
  LoRotate(fk_Vector^, fk_Axis, double), GlRotateWithVec(fk_Vector^, fk_Axis, double)

## ◆ LoRotateWithVec() [2/4]

bool FK_CLI::fk_Model::LoRotateWithVec | ( | double | x,
|  | double | y,
|  | double | z,
|  | fk_Axis | axis,
|  | double | theta )

ローカル座標系座標軸回転(姿勢付き)メソッド2

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

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

引数

  [in] | x | ローカル座標系での回転軸上の点のx成分
  [in] | y | ローカル座標系での回転軸上の点のy成分
  [in] | z | ローカル座標系での回転軸上の点のz成分
  [in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  このメソッドは常に true を返します。

参照
  LoRotate(double, double, double, fk_Axis, double), GlRotateWithVec(double, double, double, fk_Axis, double)

## ◆ LoRotateWithVec() [3/4]

bool FK_CLI::fk_Model::LoRotateWithVec | ( | fk_Vector^ | A,
|  | fk_Vector^ | B,
|  | double | theta )

ローカル座標系任意軸回転(姿勢付き)メソッド1

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

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

引数

  [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)

## ◆ LoRotateWithVec() [4/4]

bool FK_CLI::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() を利用して下さい。

引数

  [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)

## ◆ GlTranslate() [1/2]

bool FK_CLI::fk_Model::GlTranslate | ( | fk_Vector^ | v | ) |

グローバル座標系平行移動メソッド1

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

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

引数

  [in] | v | 平行移動量ベクトル

戻り値
  このメソッドは常に true を返します。

参照
  LoTranslate(fk_Vector^)

## ◆ GlTranslate() [2/2]

bool FK_CLI::fk_Model::GlTranslate | ( | double | x,
|  | double | y,
|  | double | z )

グローバル座標系平行移動メソッド2

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

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

引数

  [in] | x | 平行移動量ベクトルのx成分
  [in] | y | 平行移動量ベクトルのy成分
  [in] | z | 平行移動量ベクトルのz成分

戻り値
  このメソッドは常に true を返します。

参照
  LoTranslate(double, double, double)

## ◆ LoTranslate() [1/2]

bool FK_CLI::fk_Model::LoTranslate | ( | fk_Vector^ | v | ) |

ローカル座標系平行移動メソッド1

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

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

引数

  [in] | v | 平行移動量ベクトル

戻り値
  このメソッドは常に true を返します。

参照
  GlTranslate(fk_Vector^), GlMoveTo(fk_Vector^)

## ◆ LoTranslate() [2/2]

bool FK_CLI::fk_Model::LoTranslate | ( | double | x,
|  | double | y,
|  | double | z )

ローカル座標系平行移動メソッド2

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

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

引数

  [in] | x | 平行移動量ベクトルのx成分
  [in] | y | 平行移動量ベクトルのy成分
  [in] | z | 平行移動量ベクトルのz成分

戻り値
  このメソッドは常に true を返します。

参照
  GlTranslate(double, double, double), GlMoveTo(double, double, double)

## ◆ GlMoveTo() [1/2]

bool FK_CLI::fk_Model::GlMoveTo | ( | fk_Vector^ | p | ) |

グローバル座標系位置指定メソッド1

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

GlMoveTo() メソッドに対応するローカル座標系メソッド 「LoMoveTo()」メソッドは存在しません。 これは、LoMoveTo() メソッドはその意味的に LoTranslate() とまったく同一の挙動となるためです。

引数

  [in] | p | 移動先位置ベクトル

戻り値
  このメソッドは常に true を返します。

参照
  GlTranslate(fk_Vector^), LoTranslate(fk_Vector^)

## ◆ GlMoveTo() [2/2]

bool FK_CLI::fk_Model::GlMoveTo | ( | double | x,
|  | double | y,
|  | double | z )

グローバル座標系位置指定メソッド2

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

GlMoveTo() メソッドに対応するローカル座標系メソッド 「LoMoveTo()」メソッドは存在しません。 これは、LoMoveTo() メソッドはその意味的に LoTranslate() とまったく同一の挙動となるためです。

引数

  [in] | x | 移動先位置ベクトルのx成分
  [in] | y | 移動先位置ベクトルのy成分
  [in] | z | 移動先位置ベクトルのz成分

戻り値
  このメソッドは常に true を返します。

参照
  GlTranslate(double, double, double), LoTranslate(double, double, double)

## ◆ StepSimulation()

void FK_CLI::fk_Model::StepSimulation | ( | float | time,
|  | int | step )

static

## ◆ SetDamping()

void FK_CLI::fk_Model::SetDamping | ( | double | sd,
|  | double | rd )

摩擦係数設定関数

## プロパティ詳解

## ◆ ID

unsigned int FK_CLI::fk_Model::ID

get

ID プロパティ

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

## ◆ Shape

fk_Shape^ FK_CLI::fk_Model::Shape

getset

形状プロパティ

モデル形状の参照・設定を行います。 形状は、 fk_Shape クラスの派生クラスであれば設定可能です。 なお、呼ぶ前に形状が設定されていた場合、前の設定は破棄されます。 初期状態は null となっており、 このプロパティが null の場合は「形状を持たないモデル」として扱われます。

## ◆ Parent

fk_Model^ FK_CLI::fk_Model::Parent

getset

親モデルプロパティ

親モデルの参照・設定を行います。 親モデルは 1 個しか設定できません。 設定の際に既に親モデルが設定されていた場合は、前のモデル設定は破棄されます。 親モデルが設定されていない場合は null となります。

なお、このプロパティの設定は、 SetParent(fk_Model^, bool) において、 第2引数に false を入力した場合と同義となります。

参照
  SetParent(fk_Model^, bool), DeleteParent(), EntryChild()

## ◆ Material

fk_Material^ FK_CLI::fk_Model::Material

getset

マテリアルプロパティ

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

覚え書き
  稜線の色は fk_Model.LineColor プロパティ、 頂点の色は fk_Model.PointColor プロパティ、 曲線の色は fk_Model.CurveColor プロパティを利用して設定して下さい。 個別位相要素のマテリアルとの制御については、 MaterialMode プロパティの説明を参照して下さい。 テクスチャを描画する際には、テクスチャモードによって混合の仕方が異なりますので、 fk_Texture.TextureMode の説明を参照して下さい。

参照
  fk_Material, LineColor, PointColor, CurveColor, fk_Texture::TextureMode

## ◆ PointColor

fk_Color^ FK_CLI::fk_Model::PointColor

getset

頂点色プロパティ

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

参照
  fk_Color, PointColor

## ◆ LineColor

fk_Color^ FK_CLI::fk_Model::LineColor

getset

稜線色プロパティ

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

参照
  fk_Color

## ◆ CurveColor

fk_Color^ FK_CLI::fk_Model::CurveColor

getset

曲線色プロパティ

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

参照
  fk_Color

## ◆ PointSize

double FK_CLI::fk_Model::PointSize

getset

頂点描画サイズプロパティ

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

## ◆ DrawMode

fk_Draw FK_CLI::fk_Model::DrawMode

getset

描画モードプロパティ

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

- fk_Draw.NONE: 何も描画しません。
- fk_Draw.POINT: 頂点を描画します。
- fk_Draw.LINE: 稜線を描画します。
- fk_Draw.FACE: 面の表を描画します。
- fk_Draw.BACK_FACE: 面の裏を描画します。
- fk_Draw.FRONTBACK_FACE: 面の表と裏を描画します。
- fk_Draw.TEXTURE: テクスチャを描画します。
- fk_Draw.GEOM_LINE: 曲線や、曲面グリッド線を描画します。
- fk_Draw.GEOM_POINT: 曲線上や曲面上の分割点を描画します。
- fk_Draw.GEOM_FACE: 曲面を描画します。

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

    fk_Model        model;

    model.DrawMode = fk_Draw.POINT | fk_Draw.LINE | fk_Draw.FACE;

## ◆ ElementMode

fk_ElementMode FK_CLI::fk_Model::ElementMode

getset

要素モード関連プロパティ

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

- fk_ElementMode.NONE: 何も描画しません。
- fk_ElementMode.MODEL: モデル設定を優先します。
- fk_ElementMode.ELEMENT: 形状内の個別要素設定を優先します。

## ◆ ShadingMode

fk_ShadingMode FK_CLI::fk_Model::ShadingMode

getset

シェーディングモード関連プロパティ

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

- fk_ShadingMode.GOURAUD: グーローシェーディング
- fk_ShadingMode.PHONG: フォンシェーディング

## ◆ SmoothMode

bool FK_CLI::fk_Model::SmoothMode

getset

スムースモードプロパティ

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

## ◆ ReverseDrawMode

bool FK_CLI::fk_Model::ReverseDrawMode

getset

描画順序制御プロパティ

このプロパティでは、モデルの持つ位相要素の描画順序を制御します。 true の場合、モデル内の描画が通常と逆順になります。 false の場合、順序を通常の状態に戻します。 モデルの各位相要素が同一平面上にあり、描画順序を逆にしたい場合に用います。

## ◆ DepthMode

fk_DepthMode FK_CLI::fk_Model::DepthMode

getset

前後関係制御プロパティ

このプロパティでは、モデルを描画する際の前後関係に関する設定を制御します。 fk_Scene::entryOverlayModel()でも前後関係を無視した描画はできますが、 通常の描画中に前後関係を無視したり、半透明物体が後続の描画の前後関係に作用しないようにするなど、 細かな調整を行いたい場合に用います。与えられる値は以下の4種類です。

- fk_DepthMode.NO_USE: 前後関係の参照も更新も行わず、常に上書きします。
- fk_DepthMode.READ: 前後関係を参照してチェックします。
- fk_DepthMode.WRITE: 前後関係を更新して後続の描画に影響するようにします。
- fk_DepthMode.READ_AND_WRITE: 前後関係を参照しつつ更新します。初期値です。

## ◆ BlendMode

fk_BlendMode FK_CLI::fk_Model::BlendMode

getset

ブレンドモード設定プロパティ

形状を描画する際に、どのような計算式でブレンドを行うかを設定します。 ここでブレンドモードを設定しても、fk_Scene.BlendStatus で ブレンドを有効にしていないと実際の描画で有効になりません。 ブレンドモードの設定は、一般的な設定をプリセットの中から選択するか、 カスタムモードを選択した上で、入力ピクセルと出力ピクセルに対する係数を 個別に指定するかのどちらかによって行います。与えられる値は以下の 8 種類です。

- fk_BlendMode.ALPHA: 通常のアルファブレンドです。初期値です。
- fk_BlendMode.NEGATIVE: 反転ブレンドです。
- fk_BlendMode.ADDITION: 加算ブレンドです。
- fk_BlendMode.SCREEN: アルファ付き加算ブレンドです。
- fk_BlendMode.LIGHTEN: 入出力ピクセルのうち明るい方を採用するブレンドです。
- fk_BlendMode.MULTIPLY: 乗算ブレンドです。
- fk_BlendMode.NONE: ブレンドを行いません。 fk_Scene 側の設定によらずブレンドを無効にします。
- fk_BlendMode.CUSTOM: カスタムモードです。 fk_Model::BlendSrcFactor, fk_Model::BlendDstFactor プロパティにて指定した係数を用いた計算式でブレンドします。

## ◆ BlendSrcFactor

fk_BlendFactor FK_CLI::fk_Model::BlendSrcFactor

getset

ブレンド時の入力ピクセル係数設定プロパティ

ブレンド計算時の入力ピクセルに対する係数を設定します。 このプロパティに値を設定すると、 自動的に fk_Model::BlendMode プロパティに fk_BlendMode.CUSTOM_MODE が設定されます。 本プロパティの仕様は OpenGL 関数の glBlendFunc() に準拠します。 詳細は glBlendFunc() の情報を参照して下さい。 与えられる値は以下の10種類で、 それぞれの「fk_BlendFactor.」を「GL_」に置き換えた GLenum 型の値に対応します。

- fk_BlendFactor.ZERO
- fk_BlendFactor.ONE
- fk_BlendFactor.SRC_COLOR
- fk_BlendFactor.ONE_MINUS_SRC_COLOR
- fk_BlendFactor.DST_COLOR
- fk_BlendFactor.ONE_MINUS_DST_COLOR
- fk_BlendFactor.SRC_ALPHA
- fk_BlendFactor.ONE_MINUS_SRC_ALPHA
- fk_BlendFactor.DST_ALPHA
- fk_BlendFactor.ONE_MINUS_DST_ALPHA

## ◆ BlendDstFactor

fk_BlendFactor FK_CLI::fk_Model::BlendDstFactor

getset

ブレンド時の出力ピクセル係数設定プロパティ

ブレンド計算時の出力ピクセルに対する係数を設定します。 このプロパティに値を設定すると、 自動的に fk_Model::BlendMode プロパティに fk_BlendMode.CUSTOM_MODE が設定されます。 本プロパティの仕様は OpenGL 関数の glBlendFunc() に準拠します。 詳細は glBlendFunc() の情報を参照して下さい。 与えられる値は以下の10種類で、 それぞれの「fk_BlendFactor.」を「GL_」に置き換えた GLenum 型の値に対応します。

- fk_BlendFactor.ZERO
- fk_BlendFactor.ONE
- fk_BlendFactor.SRC_COLOR
- fk_BlendFactor.ONE_MINUS_SRC_COLOR
- fk_BlendFactor.DST_COLOR
- fk_BlendFactor.ONE_MINUS_DST_COLOR
- fk_BlendFactor.SRC_ALPHA
- fk_BlendFactor.ONE_MINUS_SRC_ALPHA
- fk_BlendFactor.DST_ALPHA
- fk_BlendFactor.ONE_MINUS_DST_ALPHA

## ◆ ShadowEffect

bool FK_CLI::fk_Model::ShadowEffect

getset

影投影プロパティ

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

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

## ◆ ShadowDraw

bool FK_CLI::fk_Model::ShadowDraw

getset

影表示プロパティ

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

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

## ◆ FogMode

bool FK_CLI::fk_Model::FogMode

getset

霧効果プロパティ

このモデル表示に対する霧効果の設定を行います。 true で有効、false で無効となります。 デフォルトは true です。

## ◆ InhPosition

fk_Vector^ FK_CLI::fk_Model::InhPosition

get

継承位置ベクトルプロパティ

モデルの位置ベクトルを参照します。 本メソッドは、親モデルの有無にかかわらず、グローバル座標系での実際の位置ベクトルを返します。

参照
  InhVec, InhUpvec, InhAngle, fk_MatrixAdmin::Position

## ◆ InhVec

fk_Vector^ FK_CLI::fk_Model::InhVec

get

継承方向ベクトルプロパティ

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

参照
  InhPosition, InhUpvec, InhAngle, fk_MatrixAdmin::Vec

## ◆ InhUpvec

fk_Vector^ FK_CLI::fk_Model::InhUpvec

get

継承アップベクトルプロパティ

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

参照
  InhPosition, InhVec, InhAngle, fk_MatrixAdmin::Upvec

## ◆ InhAngle

fk_Angle^ FK_CLI::fk_Model::InhAngle

get

継承オイラー角参照メソッド

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

戻り値

参照
  InhPosition, InhVec, InhUpvec, fk_MatrixAdmin::Angle, fk_Angle

## ◆ InhScale

double FK_CLI::fk_Model::InhScale

get

継承全体倍率プロパティ

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

参照
  InhPosition, InhVec, InhUpvec, InhAngle, fk_MatrixAdmin::Scale

## ◆ InhMatrix

fk_Matrix^ FK_CLI::fk_Model::InhMatrix

get

継承変換行列プロパティ

モデルの位置と姿勢を表す変換行列を参照します。 当モデルに親モデルがあった場合、 その親モデルの変換行列と当モデルの変換行列の積となります。 結果として、このメソッドを用いることでグローバル座標系における 当モデルの変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin.Matrix と結果が同じとなります。

参照
  fk_MatrixAdmin.Matrix(), InhInvMatrix

## ◆ InhInvMatrix

fk_Matrix^ FK_CLI::fk_Model::InhInvMatrix

get

継承逆変換行列プロパティ

モデルの位置と姿勢を表す変換行列の、逆行列を参照します。 これは、 fk_Model.InhMatrix プロパティで得られる行列の逆行列となります。 当モデルに親モデルがあった場合、 その親モデルの逆変換行列と当モデルの逆変換行列の積が返されます。 結果として、このメソッドを用いることでグローバル座標系における 当モデルの逆変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin.InvMatrix と結果が同じとなります。

参照
  fk_MatrixAdmin.InvMatrix, InhMatrix

## ◆ InhBaseMatrix

fk_Matrix^ FK_CLI::fk_Model::InhBaseMatrix

get

継承移動・回転要素変換行列プロパティ

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

参照
  fk_MatrixAdmin.BaseMatrix, InhMatrix, InhInvBaseMatrix

## ◆ InhInvBaseMatrix

fk_Matrix^ FK_CLI::fk_Model::InhInvBaseMatrix

get

継承移動・回転要素逆変換行列プロパティ

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

参照
  fk_MatrixAdmin.InvBaseMatrix, InhInvMatrix, InhBaseMatrix

## ◆ InterMode

bool FK_CLI::fk_Model::InterMode

getset

干渉継続モード設定メソッド

干渉継続モードの参照・設定を行います。 true で有効、false で無効となります。 干渉継続モードを有効にしておくと、 本モデルが IsInter() メソッドで他のモデルと干渉状態が検出された場合、 ResetInter() が呼ばれるまでは true を返すようになります。

参照
  IsInter(), InterStatus, ResetInter(), InterStopMode, EntryInterModel()

## ◆ InterStatus

bool FK_CLI::fk_Model::InterStatus

get

干渉継続状態プロパティ

本プロパティは、干渉継続モードが有効である場合で、 前に ResetInter() が呼ばれた以降で、 IsInter() によって干渉が検出されたことがあるかを検出することができます。 干渉検出があった場合 true、なかった場合 false となっています。

参照
  IsInter(), InterMode, ResetInterStatus()

## ◆ InterStopMode

bool FK_CLI::fk_Model::InterStopMode

getset

干渉自動停止モードプロパティ

干渉自動停止モードの参照・設定を行います。 true で有効、false で無効となります。

「干渉自動停止モード」とは、以下のような処理を行う機能のことです。

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

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

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

- GlRotate()
- LoRotate()
- GlRotateWithVec()
- LoRotateWithVec()
- GlTranslate()
- LoTranslate()
- GlMoveTo()

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

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

覚え書き
  干渉判定を行う際の境界ボリュームに関する設定は、 事前に行っておく必要があります。
  このモードを利用する場合、副作用として自前で管理していた SnapShot() の情報が破棄されてしまうという問題がありますので、 SnapShot() や Restore() を利用する場合はこのモードは用いないようにして下さい。

参照
  InterStopMode, EntryInterModel(), DeleteInterModel(), ClearInterModel(), IsInter(), SnapShot(), Restore()

## ◆ Inertia

fk_Vector^ FK_CLI::fk_Model::Inertia

set

慣性モーメント設定関数

## ◆ Mass

double FK_CLI::fk_Model::Mass

set

質量設定関数

## ◆ Restitution

double FK_CLI::fk_Model::Restitution

set

反射係数設定関数

## ◆ Dynamics

bool FK_CLI::fk_Model::Dynamics

set

運動有無設定関数

## ◆ Force

fk_Vector^ FK_CLI::fk_Model::Force

set

外力設定関数