FineKernelToolKit 4.2.13
|
モデルを生成、管理するクラス [詳解]
#include <CLI/FK_CLI/include/Model_CLI.h>
公開メンバ関数 | |
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 | |
![]() | |
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) |
カプセル型設定メソッド | |
![]() | |
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_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_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 における「モデル」とは、位置や方向を持ったオブジェクトのことを指します。 利用者は、 このクラスを通じてカメラを含むオブジェクトの位置や姿勢を制御していきます。 従って、このクラスは FK システムにおいて最も中心的な存在であると言えます。 位置や姿勢を制御するためのメソッドの多くは、 fk_MatrixAdmin クラスから継承しています。 (ただし、後述する「親子関係」に関連する機能は本クラス自体が持っています。) fk_MatrixAdmin クラスの説明も合わせて参照して下さい。
FK において、モデルと形状は別の存在として扱います。 形状は別のクラスで作成しておき、 モデルに対して形状をリンクするという考え方です。 このような設計になっている利点は、 まず第1に1つのモデルが複数の形状を使い分けられるということがあります。 第2に、1つの形状を複数のモデルで共有することでメモリ利用量を削減できます。 形状については fk_Shape クラスおよびその派生クラスを参照して下さい。
位置や姿勢の制御と共に、このクラスの重要な機能の1つが「親子関係」です。 あるモデルを別のモデルに「子モデル」として登録したとします。 親モデルの位置や姿勢を制御すると、 子モデルの形状は親モデル内の形状と同じように追従するようになります。 例えば、車を車体モデルとタイヤモデルで別々に作成し、 タイヤモデルを車体モデルの子モデルとして登録しておけば、 車体モデルの位置移動にあわせてタイヤモデルも位置関係を維持しながら 一緒に移動します。 マテリアルや頂点色、稜線色については、 何も設定しない場合は親モデルの設定が用いられます。 それぞれのモデルにマテリアルや色属性を設定した場合、 そのモデルについては個々の設定が利用されるようになります。
また、モデル同士の干渉判定や衝突判定を検出することができます。 干渉・衝突判定を行うには、 まず「境界ボリューム」と呼ばれるモデルを覆う領域を設定します。 その後、その境界ボリューム同士が干渉部分や衝突時間の検出を行うことで実現します。 本マニュアルにおいて、「干渉判定」と「衝突判定」は以下のような意味を持ちます。
本クラスのメソッドでは、以下のような機能を提供します。
干渉判定は現在すべての種類の境界ボリュームで対応していますが、 同じ種類同士である必要があります。 衝突判定については、現在は境界球のみで対応しています。 境界ボリュームの種類に関する解説や、適用する境界ボリュームの選択については fk_Boundary クラスのリファレンスを参照して下さい。
FK_CLI::fk_Model::fk_Model | ( | ) |
コンストラクタ
FK_CLI::fk_Model::~fk_Model | ( | ) |
デストラクタ
FK_CLI::fk_Model::!fk_Model | ( | ) |
ファイナライザ
bool FK_CLI::fk_Model::SetParent | ( | fk_Model^ | model, |
bool | mode | ||
) |
親モデル設定メソッド1
親モデルを設定します。 親モデルは 1 個しか設定できません。 前に設定されていた場合は、前のモデル設定は破棄されます。
[in] | model | 親モデルインスタンスのポインタ |
[in] | mode | true の場合、現在のグローバル座標系の位置と姿勢を、 親モデル設定後も保持します。 false の場合は、当モデルでの位置と姿勢を親モデルからの 相対的な位置、姿勢として扱います。 そのため、設定後にグローバル座標系での位置や姿勢は変化することになります。 この引数を省略した場合は false と同様の挙動となります。 |
bool FK_CLI::fk_Model::SetParent | ( | fk_Model^ | model | ) |
親モデル設定メソッド2
親モデルを設定します。 親モデルは 1 個しか設定できません。 前に設定されていた場合は、前のモデル設定は破棄されます。
なお本メソッドは、 SetParent(fk_Model^, bool) において、 第2引数に false を入力した場合と同義となります。 また、 Parent プロパティに model を代入することとも同義です。
[in] | model | 親モデルインスタンスのポインタ |
void FK_CLI::fk_Model::DeleteParent | ( | bool | mode | ) |
親モデル解除メソッド1
親モデルの設定を解除します。
[in] | mode | true の場合、現在のグローバル座標系の位置と姿勢を、 親モデル解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 |
void FK_CLI::fk_Model::DeleteParent | ( | void | ) |
親モデル解除メソッド2
親モデルの設定を解除します。 本メソッドは、 DeleteParent(bool) において、 引数に false を入力した場合と同義となります。
bool FK_CLI::fk_Model::EntryChild | ( | fk_Model^ | model, |
bool | mode | ||
) |
子モデル設定メソッド1
子モデルを設定します。 子モデルは複数持つことが可能なので、 既に子モデルが登録されている場合でも、その設定は破棄されません。
[in] | model | 子モデルインスタンスのポインタ |
[in] | mode | true の場合、子モデルの現在のグローバル座標系の位置と姿勢を、 設定後も保持します。 false の場合は、子モデルでの位置と姿勢を当モデルからの 相対的な位置、姿勢として扱います。 そのため、設定後にグローバル座標系での位置や姿勢は変化することになります。 この引数を省略した場合は false と同様の挙動となります。 |
bool FK_CLI::fk_Model::EntryChild | ( | fk_Model^ | model | ) |
子モデル設定メソッド2
子モデルを設定します。 子モデルは複数持つことが可能なので、 既に子モデルが登録されている場合でも、その設定は破棄されません。
なお、本メソッドは EntryChild(fk_Model^, bool) において、 第2引数に false を入力した場合と同義となります。
[in] | model | 子モデルインスタンスのポインタ |
bool FK_CLI::fk_Model::DeleteChild | ( | fk_Model^ | model, |
bool | mode | ||
) |
子モデル解除メソッド1
子モデルの設定を解除します。
[in] | model | 子モデルインスタンスのポインタ。 もし model が子モデルの中に存在しない場合は、false を返します。 |
[in] | mode | true の場合、子モデルのグローバル座標系の位置と姿勢を、 解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 この引数を省略した場合は false と同様の挙動となります。 |
bool FK_CLI::fk_Model::DeleteChild | ( | fk_Model^ | model | ) |
子モデル解除メソッド2
子モデルの設定を解除します。
なお、本メソッドは DeleteChild(fk_Model^, bool) において、 第2引数に false を入力した場合と同義となります。
[in] | model | 子モデルインスタンスのポインタ。 もし model が子モデルの中に存在しない場合は、false を返します。 |
void FK_CLI::fk_Model::DeleteChildren | ( | bool | mode | ) |
全子モデル解除メソッド1
当モデルの全ての子モデルの設定を解除します。
[in] | mode | true の場合、子モデルのグローバル座標系の位置と姿勢を、 解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 この引数を省略した場合は false と同様の挙動となります。 |
void FK_CLI::fk_Model::DeleteChildren | ( | void | ) |
全子モデル解除メソッド2
当モデルの全ての子モデルの設定を解除します。 本メソッドは、 DeleteChildren(bool) において、 引数に false を入力した場合と同義となります。
void FK_CLI::fk_Model::SnapShot | ( | void | ) |
位置・姿勢保存メソッド
現時点でのモデルの位置と姿勢を保存します。 Restore() メソッドを用いることで復元します。
bool FK_CLI::fk_Model::Restore | ( | void | ) |
bool FK_CLI::fk_Model::Restore | ( | double | t | ) |
位置・姿勢途中復元メソッド
SnapShot() メソッドによって保存した位置・姿勢に対し、 現在の位置・姿勢と線形補間した状態にします。
[in] | t | 線形補間パラメータ。 0 を SnapShot() メソッドによる保存時、 1 を現時点とし、 与えられた実数によって線形補間した位置と姿勢に設定します。 |
void FK_CLI::fk_Model::AdjustSphere | ( | void | ) |
境界球自動設定メソッド
このメソッドは、 境界ボリュームである境界球の半径を自動的に設定するものです。 具体的には、モデルの中心から形状の最遠点となる点と中心との距離を半径とします。 その結果、すべての形状上の点は境界球の内側に入ることになります。 境界球に関する詳細は fk_Boundary クラスを参照して下さい。
void FK_CLI::fk_Model::AdjustAABB | ( | void | ) |
AABB 自動設定メソッド
このメソッドは、 境界ボリュームである AABB (軸平行境界ボックス) の大きさを自動的に設定するものです。 すべての頂点が AABB の内部と入る条件を満たす最小の大きさが設定されます。 AABB に関する詳細は fk_Boundary クラスを参照して下さい。
void FK_CLI::fk_Model::AdjustOBB | ( | void | ) |
OBB 自動設定メソッド
このメソッドは、 境界ボリュームである OBB (有向境界ボックス) の大きさを自動的に設定するものです。 すべての頂点が OBB の内部と入る条件を満たす最小の大きさが設定されます。 OBB に関する詳細は fk_Boundary クラスを参照して下さい。
void FK_CLI::fk_Model::AdjustCapsule | ( | void | ) |
境界カプセル自動設定メソッド(全自動)
このメソッドは、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸の位置と向きは自動的に設定され、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。
void FK_CLI::fk_Model::AdjustCapsule | ( | fk_Axis | axis | ) |
境界カプセル自動設定メソッド(座標軸による中心軸設定)
このメソッドは、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸に平行な座標軸を設定することで、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 中心軸の位置は自動的に設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。
[in] | axis | 中心軸に平行な座標軸 |
境界カプセル自動設定関数(中心軸上の点と座標軸)
この関数は、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸上の1点と、中心軸に平行な座標軸を設定することで、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。
[in] | P | 中心軸上の任意の点 |
[in] | axis | 中心軸に平行な座標軸 |
境界カプセル自動設定メソッド(中心軸直接指定, 順番指定付)
このメソッドは、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸上の2点を設定することで、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。
[in] | S | 中心軸始点位置ベクトル |
[in] | E | 中心軸終点位置ベクトル |
[in] | mode | true の場合、S と E を通る直線上で、 カプセル形状の体積が最小となるように、 S と E の位置を調整します。 false の場合は S と E を変更しません。 |
境界カプセル自動設定メソッド(中心軸直接指定, 順番指定付)
このメソッドは、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。
[in] | S | 中心軸始点位置ベクトル |
[in] | E | 中心軸終点位置ベクトル |
bool FK_CLI::fk_Model::IsInter | ( | fk_Model^ | model | ) |
モデル間干渉判定メソッド
このメソッドは、別モデルとの干渉判定を行います。 干渉判定に用いられる境界ボリュームの種類は、 fk_Boundary.BMode に設定されているものが用いられます。 相手モデル側で別の種類が設定されていた場合でも、 このメソッドを呼び出しているインスタンス側の設定が優先されます。 従って、相手モデル側の境界ボリュームも適切に設定しておく必要があります。
[in] | model | 干渉判定を行うモデル |
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 の間にないときは、 衝突が起こっていないことになりますので、注意して下さい。 |
void FK_CLI::fk_Model::ResetInter | ( | void | ) |
干渉継続状態初期化メソッド
干渉継続モードによる干渉検出状態を初期化します。 干渉継続モードについては fk_Model.InterMode プロパティの解説を参照して下さい。 このメソッドが呼ばれた以降、再び IsInter() による干渉が検出されるまでは、 InterStatus プロパティは false のままとなります。
void FK_CLI::fk_Model::EntryInterModel | ( | fk_Model^ | model | ) |
干渉自動停止モデル登録メソッド
干渉自動停止モードの対象となるモデルを登録します。 干渉自動停止モードについては、 fk_Model.InterStopMode の解説を参照して下さい。
[in] | model | 登録モデルインスタンス |
void FK_CLI::fk_Model::DeleteInterModel | ( | fk_Model^ | model | ) |
干渉自動停止モデル解除メソッド
干渉自動停止モードの対象となっていたモデルの解除を行います。 干渉自動停止モードについては、 fk_Model.InterStopMode の解説を参照して下さい。 もし入力モデルが登録されていなかった場合は、なにも起こりません。
[in] | model | 解除モデルインスタンス |
void FK_CLI::fk_Model::ClearInterModel | ( | void | ) |
干渉自動停止モデル初期化メソッド
干渉自動停止モード用に登録されていた全てのモデルを解除します。
グローバル座標系座標軸回転メソッド1
モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、origin を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。
このメソッドは位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は GlRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は LoRotate() を利用して下さい。
[in] | origin | グローバル座標系での回転軸上の点 |
[in] | axis | 回転軸に平行な軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。 |
[in] | theta | 回転角度(ラジアン) |
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 | 回転角度(ラジアン) |
グローバル座標系任意軸回転メソッド1
モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。
このメソッドは位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は GlRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は LoRotate() を利用して下さい。
[in] | A | 回転軸上の1点。B と一致してはいけません。 |
[in] | B | 回転軸上の1点。A と一致してはいけません。 |
[in] | theta | 回転角度(ラジアン) |
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 | 回転角度(ラジアン) |
ローカル座標系座標軸回転メソッド1
モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) origin を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。
このメソッドは位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は LoRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は GlRotate() を利用して下さい。
[in] | origin | ローカル座標系での回転軸上の点 |
[in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。 |
[in] | theta | 回転角度(ラジアン) |
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 | 回転角度(ラジアン) |
ローカル座標系任意軸回転メソッド1
モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。
このメソッドは位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は LoRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は GlRotate() を利用して下さい。
[in] | A | ローカル座標系における回転軸上の1点。B と一致してはいけません。 |
[in] | B | ローカル座標系における回転軸上の1点。A と一致してはいけません。 |
[in] | theta | 回転角度(ラジアン) |
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 | 回転角度(ラジアン) |
グローバル座標系座標軸回転(姿勢付き)メソッド1
モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、origin を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。
このメソッドは、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は GlRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 LoRotateWithVec() を利用して下さい。
[in] | origin | グローバル座標系での回転軸上の点 |
[in] | axis | 回転軸に平行な軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。 |
[in] | theta | 回転角度(ラジアン) |
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 | 回転角度(ラジアン) |
グローバル座標系任意軸回転(姿勢付き)メソッド1
モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。
このメソッドは、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は GlRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 LoRotateWithVec() を利用して下さい。
[in] | A | 回転軸上の1点。B と一致してはいけません。 |
[in] | B | 回転軸上の1点。A と一致してはいけません。 |
[in] | theta | 回転角度(ラジアン) |
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 | 回転角度(ラジアン) |
ローカル座標系座標軸回転(姿勢付き)メソッド1
モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) origin を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。
このメソッドは、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は LoRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 GlRotateWithVec() を利用して下さい。
[in] | origin | ローカル座標系での回転軸上の点 |
[in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_Axis.X, fk_Axis.Y, fk_Axis.Z のいずれかになります。 |
[in] | theta | 回転角度(ラジアン) |
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 | 回転角度(ラジアン) |
ローカル座標系任意軸回転(姿勢付き)メソッド1
モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。
このメソッドは、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は LoRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 GlRotateWithVec() を利用して下さい。
[in] | A | ローカル座標系における回転軸上の1点。B と一致してはいけません。 |
[in] | B | ローカル座標系における回転軸上の1点。A と一致してはいけません。 |
[in] | theta | 回転角度(ラジアン) |
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 | 回転角度(ラジアン) |
bool FK_CLI::fk_Model::GlTranslate | ( | fk_Vector^ | v | ) |
グローバル座標系平行移動メソッド1
モデルを、クローバル座標系によって平行移動した位置に移動します。 平行移動量はベクトルで指定します。
ローカル座標系による平行移動量の指定を行いたい場合は、 LoTranslate() を利用して下さい。
[in] | v | 平行移動量ベクトル |
bool FK_CLI::fk_Model::GlTranslate | ( | double | x, |
double | y, | ||
double | z | ||
) |
グローバル座標系平行移動メソッド2
モデルを、クローバル座標系によって平行移動した位置に移動します。 平行移動量はベクトルの成分を意味する3個の実数で指定します。
ローカル座標系による平行移動量の指定を行いたい場合は、 LoTranslate() を利用して下さい。
[in] | x | 平行移動量ベクトルのx成分 |
[in] | y | 平行移動量ベクトルのy成分 |
[in] | z | 平行移動量ベクトルのz成分 |
bool FK_CLI::fk_Model::LoTranslate | ( | fk_Vector^ | v | ) |
ローカル座標系平行移動メソッド1
モデルを、ローカル座標系によって平行移動した位置に移動します。 平行移動量はベクトルで指定します。
グローバル座標系による平行移動量の指定を行いたい場合は、 GlTranslate() を利用して下さい。
[in] | v | 平行移動量ベクトル |
bool FK_CLI::fk_Model::LoTranslate | ( | double | x, |
double | y, | ||
double | z | ||
) |
ローカル座標系平行移動メソッド2
モデルを、ローカル座標系によって平行移動した位置に移動します。 平行移動量はベクトルの成分を意味する3個の実数で指定します。
グローバル座標系による平行移動量の指定を行いたい場合は、 GlTranslate() を利用して下さい。
[in] | x | 平行移動量ベクトルのx成分 |
[in] | y | 平行移動量ベクトルのy成分 |
[in] | z | 平行移動量ベクトルのz成分 |
bool FK_CLI::fk_Model::GlMoveTo | ( | fk_Vector^ | p | ) |
グローバル座標系位置指定メソッド1
モデルの位置を、指定した位置ベクトルに移動します。 位置はベクトルで指定します。
GlMoveTo() メソッドに対応するローカル座標系メソッド 「LoMoveTo()」メソッドは存在しません。 これは、LoMoveTo() メソッドはその意味的に LoTranslate() とまったく同一の挙動となるためです。
[in] | p | 移動先位置ベクトル |
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成分 |
|
get |
ID プロパティ
モデルの固有IDを参照します。 IDの最小値は 1 で、 同一プロセス中では同じ ID が別のモデルに割り振られることはありません。
|
getset |
形状プロパティ
モデル形状の参照・設定を行います。 形状は、 fk_Shape クラスの派生クラスであれば設定可能です。 なお、呼ぶ前に形状が設定されていた場合、前の設定は破棄されます。 初期状態は null となっており、 このプロパティが null の場合は「形状を持たないモデル」として扱われます。
|
getset |
親モデルプロパティ
親モデルの参照・設定を行います。 親モデルは 1 個しか設定できません。 設定の際に既に親モデルが設定されていた場合は、前のモデル設定は破棄されます。 親モデルが設定されていない場合は null となります。
なお、このプロパティの設定は、 SetParent(fk_Model^, bool) において、 第2引数に false を入力した場合と同義となります。
|
getset |
マテリアルプロパティ
モデルの基本マテリアルの参照・設定を行います。 マテリアルに関しての詳細は、 fk_Material の説明およびユーザーズマニュアルを参照して下さい。
|
getset |
|
getset |
頂点描画サイズプロパティ
頂点描画サイズの参照・設定を行います。 単位はピクセルです。整数以外も設定可能です。
|
getset |
描画モードプロパティ
モデルの描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モードには以下のようなものがあります。
これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。
fk_Model model; model.DrawMode = fk_Draw.POINT | fk_Draw.LINE | fk_Draw.FACE;
|
getset |
要素モード関連プロパティ
形状表示の際、モデル設定と形状個別要素設定のどちらを採用するかを設定します。 モードには以下のものがあります。
|
getset |
シェーディングモード関連プロパティ
面描画またはテクスチャ描画の際の、 シェーディングアルゴリズムを設定します。 グーローシェーディングは、各頂点ごとに発色輝度を計算し、 頂点以外の面内部は色値の線形補間によって発色輝度を決定します。 フォンシェーディングでは、色値ではなく法線ベクトルを補間決定し、 面内部の発色は補間法線ベクトルに対し発色輝度を計算します。 一般的には、速度重視の場合はグーロー、質重視の場合はフォンを選択します。 なお、本館数は面またはテクスチャの描画の際のみに関与するものであり、 線や点の描画の際には影響を及ぼしません。
|
getset |
スムースモードプロパティ
モデルのスムースモードの参照・設定を行います。 true の場合有効、false の場合無効となります。 スムースモードを有効にすると、 形状の隣り合う面同士の法線ベクトルが補間され、 擬似的に滑らかな曲面として表示を行うようになります。
|
getset |
描画順序制御プロパティ
このプロパティでは、モデルの持つ位相要素の描画順序を制御します。 true の場合、モデル内の描画が通常と逆順になります。 false の場合、順序を通常の状態に戻します。 モデルの各位相要素が同一平面上にあり、描画順序を逆にしたい場合に用います。
|
getset |
前後関係制御プロパティ
このプロパティでは、モデルを描画する際の前後関係に関する設定を制御します。 fk_Scene::entryOverlayModel()でも前後関係を無視した描画はできますが、 通常の描画中に前後関係を無視したり、半透明物体が後続の描画の前後関係に作用しないようにするなど、 細かな調整を行いたい場合に用います。与えられる値は以下の4種類です。
|
getset |
ブレンドモード設定プロパティ
形状を描画する際に、どのような計算式でブレンドを行うかを設定します。 ここでブレンドモードを設定しても、fk_Scene.BlendStatus で ブレンドを有効にしていないと実際の描画で有効になりません。 ブレンドモードの設定は、一般的な設定をプリセットの中から選択するか、 カスタムモードを選択した上で、入力ピクセルと出力ピクセルに対する係数を 個別に指定するかのどちらかによって行います。与えられる値は以下の 8 種類です。
|
getset |
ブレンド時の入力ピクセル係数設定プロパティ
ブレンド計算時の入力ピクセルに対する係数を設定します。 このプロパティに値を設定すると、 自動的に fk_Model::BlendMode プロパティに fk_BlendMode.CUSTOM_MODE が設定されます。 本プロパティの仕様は OpenGL 関数の glBlendFunc() に準拠します。 詳細は glBlendFunc() の情報を参照して下さい。 与えられる値は以下の10種類で、 それぞれの「fk_BlendFactor.」を「GL_」に置き換えた GLenum 型の値に対応します。
|
getset |
ブレンド時の出力ピクセル係数設定プロパティ
ブレンド計算時の出力ピクセルに対する係数を設定します。 このプロパティに値を設定すると、 自動的に fk_Model::BlendMode プロパティに fk_BlendMode.CUSTOM_MODE が設定されます。 本プロパティの仕様は OpenGL 関数の glBlendFunc() に準拠します。 詳細は glBlendFunc() の情報を参照して下さい。 与えられる値は以下の10種類で、 それぞれの「fk_BlendFactor.」を「GL_」に置き換えた GLenum 型の値に対応します。
|
getset |
影投影プロパティ
このモデルが別モデル(やこのモデル自身)へ影を投影するかどうかの設定を行います。 この設定を false にすると、シーン全体で影効果が有効であっても、 当モデルの影は別モデル(やこのモデル自身)に投影されなくなります。 デフォルトは true です。
他モデルの影をこのモデルに投影するかどうかを制御する場合は、 ShadowDraw を用いてください。
|
getset |
影表示プロパティ
別モデルやこのモデル自身の影を、このモデルに投影するかどうかの設定を行います。
このモデルの影を別のモデル(や自分自身)に投影するかどうかの制御は、 ShadowEffect を用いて下さい。
|
getset |
霧効果プロパティ
このモデル表示に対する霧効果の設定を行います。 true で有効、false で無効となります。 デフォルトは true です。
|
get |
継承位置ベクトルプロパティ
モデルの位置ベクトルを参照します。 本メソッドは、親モデルの有無にかかわらず、グローバル座標系での実際の位置ベクトルを返します。
|
get |
継承方向ベクトルプロパティ
モデルの方向ベクトルを取得します。 本メソッドは、親モデルの有無にかかわらず、グローバル座標系での実際の方向ベクトルを返します。
|
get |
継承アップベクトルプロパティ
モデルのアップベクトルを取得します。 本メソッドは、親モデルの有無にかかわらず、グローバル座標系での実際のアップベクトルを返します。
|
get |
継承オイラー角参照メソッド
モデルのオイラー角を取得します。 本メソッドは、親モデルの有無にかかわらず、グローバル座標系での実際のオイラー角を返します。 オイラー角の詳細については、 fk_Angle の説明を参照して下さい。
|
get |
継承全体倍率プロパティ
モデルの全体拡大・縮小倍率を参照します。 親子関係の小モデルの場合、親モデルでの倍率も反映されます。
|
get |
継承変換行列プロパティ
モデルの位置と姿勢を表す変換行列を参照します。 当モデルに親モデルがあった場合、 その親モデルの変換行列と当モデルの変換行列の積となります。 結果として、このメソッドを用いることでグローバル座標系における 当モデルの変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin.Matrix と結果が同じとなります。
|
get |
継承逆変換行列プロパティ
モデルの位置と姿勢を表す変換行列の、逆行列を参照します。 これは、 fk_Model.InhMatrix プロパティで得られる行列の逆行列となります。 当モデルに親モデルがあった場合、 その親モデルの逆変換行列と当モデルの逆変換行列の積が返されます。 結果として、このメソッドを用いることでグローバル座標系における 当モデルの逆変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin.InvMatrix と結果が同じとなります。
|
get |
継承移動・回転要素変換行列プロパティ
モデルの持つ変換要素のうち、 位置と姿勢のみを反映した、 すなわち拡大縮小の要素を省いた変換行列を参照します。 当モデルに親モデルがあった場合、 その親モデルの変換行列と当モデルの変換行列の積となります。 その結果として、このメソッドを用いることでグローバル座標系における 当モデルの変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin.BaseMatrix と結果が同じとなります。
|
get |
継承移動・回転要素逆変換行列プロパティ
モデルの持つ変換要素のうち、 位置と姿勢のみを反映した、 すなわち拡大縮小の要素を省いた変換行列の逆行列を参照します。 当モデルに親モデルがあった場合、 その親モデルの逆変換行列と当モデルの逆変換行列の積となります。 その結果として、このメソッドを用いることでグローバル座標系における 当モデルの逆変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin.InvBaseMatrix と結果が同じとなります。
|
getset |
干渉継続モード設定メソッド
干渉継続モードの参照・設定を行います。 true で有効、false で無効となります。 干渉継続モードを有効にしておくと、 本モデルが IsInter() メソッドで他のモデルと干渉状態が検出された場合、 ResetInter() が呼ばれるまでは true を返すようになります。
|
get |
干渉継続状態プロパティ
本プロパティは、干渉継続モードが有効である場合で、 前に ResetInter() が呼ばれた以降で、 IsInter() によって干渉が検出されたことがあるかを検出することができます。 干渉検出があった場合 true、なかった場合 false となっています。
|
getset |
干渉自動停止モードプロパティ
干渉自動停止モードの参照・設定を行います。 true で有効、false で無効となります。
「干渉自動停止モード」とは、以下のような処理を行う機能のことです。
この機能を用いることで、移動後で干渉が起きてしまう移動が無効となります。 壁などにモデルが入らないように処理するような場面で有効となります。
このモードの対象となる移動メソッドは以下のとおりです。
これらのメソッドは、モデルの位置ベクトルが変化する可能性があるからです。 その他の姿勢制御メソッドについては停止の対象とはなりません。
なお、このモードを利用する場合、 Restore() した後にも干渉状態となっている場合、 適用モデルがまったく動かなくなるという問題が生じます。 そのため本機能を用いたい場合は、 干渉チェック対象となるモデルは全て静止した状態であることを推奨します。 また、位置のかわらない姿勢制御メソッドは干渉状態であっても動作しますが、 その際に物体の回転によって非干渉状態から干渉状態となることがありえますので、 これも注意が必要です。