FineKernelToolKit 3.1.0

- 総合概要
- 名前空間
- クラス
- ファイル

- クラス一覧
- クラス階層
- クラスメンバ

公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_AppWindow クラス

アプリケーションウィンドウクラス [詳解]

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

## 公開メンバ関数
| fk_AppWindow ()
| コンストラクタ [詳解]
| ~fk_AppWindow ()
| デストラクタ [詳解]
| !fk_AppWindow ()
| ファイナライザ [詳解]
カメラ制御メソッド
void | SetCameraDefault (void)
| カメラ初期化メソッド [詳解]
シーン制御メソッド
void | SetScene (fk_Scene^ scene, bool defCameraAndLight)
| シーン設定メソッド [詳解]
void | SetSceneDefault (void)
| シーン設定初期化メソッド [詳解]
void | Entry (fk_Model^ model)
| 通常モデル表示登録メソッド [詳解]
void | Entry (fk_Model^ model, fk_GuideObject^ guide)
| 座標軸付きモデル表示登録メソッド [詳解]
void | Entry (fk_SpriteModel^ model)
| スプライトモデル登録メソッド [詳解]
void | Entry (fk_Performer^ chara)
| fk_Performer モデル登録メソッド [詳解]
void | Remove (fk_Model^ model)
| 通常モデル表示解除メソッド [詳解]
void | Remove (fk_Model^ model, fk_GuideObject^ guide)
| 座標軸付きモデル表示解除メソッド [詳解]
void | Remove (fk_SpriteModel^ model)
| スプライトモデル表示解除メソッド [詳解]
void | Remove (fk_Performer^ chara)
| fk_Performer モデル表示解除メソッド [詳解]
void | ClearModel (bool defCameraAndLight)
| 全モデル登録解除メソッド1 [詳解]
void | ClearModel (void)
| 全モデル登録解除メソッド2 [詳解]
描画制御メソッド
void | Open (void)
| ウィンドウ生成メソッド [詳解]
void | Close (void)
| ウィンドウ破棄メソッド [詳解]
bool | Update (bool forceFlg)
| シーン描画メソッド1 [詳解]
bool | Update (void)
| シーン描画メソッド2 [詳解]
グリッド・座標軸表示設定メソッド
void | ShowGuide (fk_GuideMode mode)
| グリッド・軸設定メソッド1 [詳解]
void | ShowGuide (void)
| グリッド・軸設定メソッド2 [詳解]
void | HideGuide (void)
| グリッド・軸消去メソッド [詳解]
キーボード状態取得メソッド
bool | GetKeyStatus (wchar_t key, fk_SwitchStatus status, bool insideFlag)
| 通常キー状態取得メソッド1 [詳解]
bool | GetKeyStatus (wchar_t key, fk_SwitchStatus status)
| 通常キー状態取得メソッド2 [詳解]
bool | GetSpecialKeyStatus (fk_SpecialKey keyCode, fk_SwitchStatus status, bool insideFlag)
| 特殊キー状態取得メソッド1 [詳解]
bool | GetSpecialKeyStatus (fk_SpecialKey keyCode, fk_SwitchStatus status)
| 特殊キー状態取得メソッド2 [詳解]
マウス状態取得メソッド
bool | GetMouseStatus (fk_MouseButton buttonCode, fk_SwitchStatus status, bool insideFlag)
| マウスボタン状態取得メソッド [詳解]
void | SetCursorState (bool visible, bool center)
| マウスカーソル表示制御メソッド [詳解]
bool | IsModelPicked (fk_Model^ model, int pixel, int mouseX, int mouseY)
| モデルクリック判定メソッド1 [詳解]
bool | IsModelPicked (fk_Model^ model, int pixel)
| モデルクリック判定メソッド2 [詳解]
bool | IsModelPicked (fk_Model^ model)
| モデルクリック判定メソッド3 [詳解]
void | ProcMouseView (fk_Model^ camera, double x, double y, bool lockSW)
| FPS視点的カメラ制御メソッド [詳解]
投影座標・空間座標変換メソッド
bool | GetProjectPosition (double x, double y, fk_Plane^ plane, fk_Vector^ pos)
| 投影平面から任意平面への射影点算出メソッド [詳解]
bool | GetProjectPosition (double x, double y, double dist, fk_Vector^ pos)
| 投影平面から任意距離での射影点算出メソッド [詳解]
bool | GetWindowPosition (fk_Vector^ pos_3D, fk_Vector^ pos_2D)
| 空間座標から投影座標への射影点算出メソッド [詳解]

## プロパティ
String^ | WindowName`[set]`
| ウィンドウタイトルプロパティ [詳解]
fk_Dimension^ | Size`[set]`
| ウィンドウサイズプロパティ [詳解]
fk_Rect^ | InnerSize`[set]`
| 描画領域サイズ設定プロパティ [詳解]
fk_Color^ | BGColor`[set]`
| 背景色設定プロパティ [詳解]
int | FPS`[set]`
| FPS設定プロパティ [詳解]
double | AxisWidth`[set]`
| 軸線幅設定プロパティ [詳解]
double | GridWidth`[set]`
| グリッド線幅設定プロパティ [詳解]
double | GuideScale`[set]`
| グリッド幅設定プロパティ [詳解]
int | GuideNum`[set]`
| グリッド数設定プロパティ [詳解]
fk_Vector^ | CameraPos`[get, set]`
| カメラ位置設定・取得プロパティ [詳解]
fk_Vector^ | CameraFocus`[set]`
| カメラ注視点設定プロパティ [詳解]
fk_Model^ | CameraModel`[get, set]`
| カメラモデル設定プロパティ [詳解]
fk_Scene^ | Scene`[get, set]`
| シーン設定プロパティ [詳解]
fk_Vector^ | MousePosition`[get]`
| マウスポインタ位置取得プロパティ [詳解]
bool | TrackBallMode`[set]`
| トラックボールモード制御プロパティ [詳解]

## 詳解

アプリケーションウィンドウクラス

このクラスは、 3D シーンを表示するウィンドウを簡易に作成する機能を提供します。 シーン・カメラ・ライトを内包しているので、 とりあえず形状を表示させるだけなら、 非常に短いコード量で済みます。 もちろんゲームアプリを完成させることも可能です。 入力に関するユーティリティ機能も含みます。 Fl_Window、 fk_Window 、 fk_Scene を複合したクラスですので、 既存の FK ユーザが利用する場合はその旨を念頭に置いてください。

## 構築子と解体子

FK_CLI::fk_AppWindow::fk_AppWindow | ( |  | ) |

コンストラクタ

FK_CLI::fk_AppWindow::~fk_AppWindow | ( |  | ) |

デストラクタ

FK_CLI::fk_AppWindow::!fk_AppWindow | ( |  | ) |

ファイナライザ

## 関数詳解

void FK_CLI::fk_AppWindow::SetCameraDefault | ( | void |  | ) |

カメラ初期化メソッド

ウィンドウが制御するカメラを、 デフォルトで内部に保持している fk_Model のインスタンスに戻します。

参照
  CameraModel

void FK_CLI::fk_AppWindow::SetScene | ( | fk_Scene^ | scene,
|  | bool | defCameraAndLight
| ) |  |

シーン設定メソッド

ウィンドウに対して、別の fk_Scene のオブジェクトをセットします。 アプリの画面ごとにモデルを登録した fk_Scene オブジェクトを、 このメソッドでセットして切り替えることで、 モデルを個別に登録や解除を行う手間が省けます。 ある程度以上の規模を持つアプリを開発する場合は便利です。 Scene プロパティによる設定との違いは、第 2 引数にあります。 第 2 引数に true を設定すると、新たにセットするシーンに対して、 fk_AppWindow 内部のカメラとライトオブジェクトを 引き継いでセットすることができますが、 構造がややこしくなるのでできるだけ自前で用意することを推奨します。 省略した場合と false を設定した場合はシーンの切り替えのみを行います。

引数

  [in] | scene | シーンインスタンス
  [in] | defCameraAndLight | true である場合、 カメラ・光源設定についてシーン設定前のものを用います。 false である場合は第一引数の scene に設定されている情報に切り替えます。

参照
  Scene, SetSceneDefault(), fk_Scene

void FK_CLI::fk_AppWindow::SetSceneDefault | ( | void |  | ) |

シーン設定初期化メソッド

ウィンドウが制御するシーンを、 デフォルトで内部に保持している fk_Scene のインスタンスに戻します。

参照
  Scene, SetScene(fk_Scene^, bool), fk_Scene

void FK_CLI::fk_AppWindow::Entry | ( | fk_Model^ | model | ) |

通常モデル表示登録メソッド

ウィンドウに対してモデルを登録し、表示するようにします。 既に登録済みのモデルに対して行った場合、登録順が最後尾となります。

覚え書き
  FKでは、半透明な物体AとBがあり、 配置関係で「Aが前、Bが後」となっていた場合、 登録順が B, A の順番であれば適切に描画されますが、 A, B の登録順となっていた場合には A が半透明であっても B が透けて見えなくなります。 このような場合、「前に配置される物体ほど後に登録する」 ように登録することで半透明描画が適切となります。

引数

  [in] | model | 登録モデル

参照
  Remove(fk_Model^), ClearModel()

void FK_CLI::fk_AppWindow::Entry | ( | fk_Model^ | model,
|  | fk_GuideObject^ | guide
| ) |  |

座標軸付きモデル表示登録メソッド

ウィンドウに対してモデルを登録し、表示するようにします。 既に登録済みのモデルに対して行った場合、登録順が最後尾となります。 半透明物体の描画については、 Entry(fk_Model^) の説明を参照して下さい。 登録の際、モデルのローカル座標系に基づく座標軸を同時に登録します。

引数

  [in] | model | 登録モデル
  [in] | guide | 座標軸

参照
  Remove(fk_Model^, fk_GuideObject^), ClearModel(), fk_GuideObject

void FK_CLI::fk_AppWindow::Entry | ( | fk_SpriteModel^ | model | ) |

スプライトモデル登録メソッド

ウィンドウに対してスプライトモデルを登録し、表示するようにします。

引数

  [in] | model | 登録モデル

参照
  Remove(fk_SpriteModel^), ClearModel(), fk_SpriteModel

void FK_CLI::fk_AppWindow::Entry | ( | fk_Performer^ | chara | ) |

fk_Performer モデル登録メソッド

ウィンドウに対して fk_Performer 型のモデルを登録し、 表示するようにします。

引数

  [in] | chara | 登録モデル

参照
  Remove(fk_Performer^), ClearModel(), fk_Performer

void FK_CLI::fk_AppWindow::Remove | ( | fk_Model^ | model | ) |

通常モデル表示解除メソッド

ウィンドウからモデルの登録を解除し、表示されないようにします。 登録していないモデルを指定した場合は何も起きません。

引数

  [in] | model | 登録解除モデル

参照
  Entry(fk_Model^), ClearModel(), fk_Model

void FK_CLI::fk_AppWindow::Remove | ( | fk_Model^ | model,
|  | fk_GuideObject^ | guide
| ) |  |

座標軸付きモデル表示解除メソッド

ウィンドウから、座標軸付きモデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。

引数

  [in] | model | 登録解除モデル
  [in] | guide | 登録解除座標軸

参照
  Entry(fk_Model^, fk_GuideObject^), ClearModel()

void FK_CLI::fk_AppWindow::Remove | ( | fk_SpriteModel^ | model | ) |

スプライトモデル表示解除メソッド

ウィンドウから、スプライトモデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。

引数

  [in] | model | 登録解除モデル

参照
  Entry(fk_SpriteModel^), ClearModel()

void FK_CLI::fk_AppWindow::Remove | ( | fk_Performer^ | chara | ) |

fk_Performer モデル表示解除メソッド

ウィンドウから、fk_Performer 型モデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。

引数

  [in] | chara | 登録解除モデル

参照
  Entry(fk_Performer^), ClearModel()

void FK_CLI::fk_AppWindow::ClearModel | ( | bool | defCameraAndLight | ) |

全モデル登録解除メソッド1

現在のシーンから全てのモデルの表示登録を解除します。

引数

  [in] | defCameraAndLight | ウィンドウ内部で保持しているライトとカメラのモデルを残したい場合は、 true を指定します。 false を渡した場合は、完全なクリアとなります。

void FK_CLI::fk_AppWindow::ClearModel | ( | void |  | ) |

全モデル登録解除メソッド2

現在のシーンから全てのモデルの表示登録を解除します。 ウィンドウ内部で保持しているライトとカメラのモデルは全てクリアとなります。

参照
  ClearModel(bool)

void FK_CLI::fk_AppWindow::Open | ( | void |  | ) |

ウィンドウ生成メソッド

ウィンドウを開いて表示します。

参照
  Close(), Update()

void FK_CLI::fk_AppWindow::Close | ( | void |  | ) |

ウィンドウ破棄メソッド

ウィンドウを閉じます。 ウィンドウが表示されている状態でプログラムが終了した場合は 自動的に閉じられるので、 本メソッドを明示的に呼ぶ必要はありません。 プログラム自体は動作し続けるが、ウィンドウを閉じたい場合や、 改めてウィンドウを再生成したい場合に本メソッドを利用して下さい。

参照
  Open(), Update()

bool FK_CLI::fk_AppWindow::Update | ( | bool | forceFlg | ) |

シーン描画メソッド1

シーン画面を描画し、さらに各種入力デバイスの状態を更新します。 基本的にメインループ内でコールすることになります。 その際、 FPS プロパティの数値基づいて時間調整が入ります。 FPS 制御を無視して強制的に描画処理を呼び出したい場合は引数に true を渡します。

引数

  [in] | forceFlg | true の場合、FPS制御を無視して強制的に再描画を行います。 false の場合は FPS制御により描画タイミングを制御し、 描画が行われるまではメソッドは終了しなくなります。 デフォルトは false です。

参照
  Open(), Close(), FPS

bool FK_CLI::fk_AppWindow::Update | ( | void |  | ) |

シーン描画メソッド2

シーン画面を描画し、さらに各種入力デバイスの状態を更新します。 基本的にメインループ内でコールすることになります。 その際、 FPS プロパティの数値基づいて時間調整が入ります。 本メソッドは、 Update(bool) において引数に false を与えた場合と同様の挙動となります。

参照
  Open(), Close(), FPS

void FK_CLI::fk_AppWindow::ShowGuide | ( | fk_GuideMode | mode | ) |

グリッド・軸設定メソッド1

画面内の座標系を表すグリッドと軸を指定します。 引数は、 AXIS_X, AXIS_Y, AXIS_Z がそれぞれの軸を、 GRID_XZ, GRID_XY, GRID_YZ がそれぞれの平面を表すグリッドに対応します。 複数の要素を指定したい場合は | (ビットOR演算子)で区切って指定できます。 NO_GUIDE で全て非表示に、 ALL_GUIDE で全ての軸・グリッドを表示します。 引数を省略した場合は、xyz の各軸と xz 平面のグリッドを表示します。 デフォルトでは全て非表示(NO_GUIDE)です。

引数

  [in] | mode | 表示するグリッド・軸の指定。複数を表示する場合は、 ビットOR演算を利用して並べて指定できます。

参照
  HideGuide(), AxisWidth, GridWidth, GuideScale, GuideNum, fk_GuideMode

void FK_CLI::fk_AppWindow::ShowGuide | ( | void |  | ) |

グリッド・軸設定メソッド2

画面内の座標系を表すグリッドと軸を指定します。 本メソッドでは、3次元座標軸と xz 平面のグリッドを表示します。 表示する座標軸およびグリッド面を細かく指定したい場合は、 ShowGuide(bool) を利用してください。

参照
  HideGuide(), AxisWidth, GridWidth, GuideScale, GuideNum, fk_GuideMode

void FK_CLI::fk_AppWindow::HideGuide | ( | void |  | ) |

グリッド・軸消去メソッド

ShowGuide() で表示した軸とグリッドを消去します。 ShowGuide( fk_GuideMode.NO_GUIDE ) と等価です。

参照
  ShowGuide()

bool FK_CLI::fk_AppWindow::GetKeyStatus | ( | wchar_t | key,
|  | fk_SwitchStatus | status,
|  | bool | insideFlag
| ) |  |

通常キー状態取得メソッド1

通常キーの入力状態を検出します。 引数として、 検出したい文字をシングルクォーテーションで囲って指定します。 'A' や 'X' などとします。 入力できない特殊キーには getSpecialKeyStatus() を使います。

以下のコードは、「A」キーが押されているかどうかを検出します。

    if(Window.GetKeyStatus('a', fk_SwitchStatus.PRESS, false) == true) {
        // 押されている場合の処理
    }

引数

  [in] | key | 状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。
  [in] | status | 取得したい状態を指定します。 種類については FK_CLI::fk_SwitchStatus を参照してください。
  [in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。

戻り値
  キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。

参照
  GetSpecialKeyStatus(), Update()

bool FK_CLI::fk_AppWindow::GetKeyStatus | ( | wchar_t | key,
|  | fk_SwitchStatus | status
| ) |  |

通常キー状態取得メソッド2

通常キーの入力状態を検出します。 引数として、 検出したい文字をシングルクォーテーションで囲って指定します。 'A' や 'X' などとします。 入力できない特殊キーには getSpecialKeyStatus() を使います。 なお、本メソッドは GetKeyStatus(wchar_t, fk_SwitchStatus, bool) にて 第三引数に false を入力した場合と挙動は同一です。

以下のコードは、「A」キーが押されているかどうかを検出します。

    if(Window.GetKeyStatus('a', fk_SwitchStatus.PRESS) == true) {
        // 押されている場合の処理
    }

引数

  [in] | key | 状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。
  [in] | status | 取得したい状態を指定します。 種類については FK_CLI::fk_SwitchStatus を参照してください。

戻り値
  キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。

参照
  GetSpecialKeyStatus(), Update()

bool FK_CLI::fk_AppWindow::GetSpecialKeyStatus | ( | fk_SpecialKey | keyCode,
|  | fk_SwitchStatus | status,
|  | bool | insideFlag
| ) |  |

特殊キー状態取得メソッド1

特殊キーの入力状態を検出します。 引数として、検出したいキーに対応した FK_CLI::fk_SpecialKey 型の値を入力します。 例えば、上矢印キーの状態を取得したい場合には「fk_SpecialKey.UP」を入力します。 通常キーの状態取得は GetKeyStatus() を使います。

以下のコードは、「F1」キーが押されているかどうかを検出します。

    if(Window.GetSpecialKeyStatus(fk_SpecialKey.F1, fk_SwitchStatus.PRESS, false) == true) {
        // 押されている場合の処理
    }

引数

  [in] | keyCode | 状態を取得したいキーに対応した値。
  [in] | status | 取得したい状態を指定します。 種類については FK_CLI::fk_SwitchStatus を参照してください。
  [in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。

戻り値
  キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。

覚え書き
  スペースキーの状態取得は、本メソッドではなく GetKeyStatus() を用います。

参照
  GetKeyStatus(), Update()

bool FK_CLI::fk_AppWindow::GetSpecialKeyStatus | ( | fk_SpecialKey | keyCode,
|  | fk_SwitchStatus | status
| ) |  |

特殊キー状態取得メソッド2

特殊キーの入力状態を検出します。 引数として、検出したいキーに対応した FK_CLI::fk_SpecialKey 型の値を入力します。 例えば、上矢印キーの状態を取得したい場合には「fk_SpecialKey.UP」を入力します。 通常キーの状態取得は GetKeyStatus() を使います。 なお、本メソッドは GetSpecialKeyStatus(fk_SpecialKey, fk_SwitchStatus, bool) にて 第三引数に false を入力した場合と挙動は同一です。

以下のコードは、「F1」キーが押されているかどうかを検出します。

    if(Window.GetSpecialKeyStatus(fk_SpecialKey.F1, fk_SwitchStatus.PRESS) == true) {
        // 押されている場合の処理
    }

引数

  [in] | keyCode | 状態を取得したいキーに対応した値。
  [in] | status | 取得したい状態を指定します。 種類については FK_CLI::fk_SwitchStatus を参照してください。

戻り値
  キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。

覚え書き
  スペースキーの状態取得は、本メソッドではなく GetKeyStatus() を用います。

参照
  GetKeyStatus(), Update()

bool FK_CLI::fk_AppWindow::GetMouseStatus | ( | fk_MouseButton | buttonCode,
|  | fk_SwitchStatus | status,
|  | bool | insideFlag
| ) |  |

マウスボタン状態取得メソッド

マウスボタンのクリック状態を検出します。 マウスボタンの種類については、 FK_CLI::fk_MouseButton の項目を参照して下さい。

以下のコードは、マウス左ボタンが押されているかどうかを検出します。

    if(Window.GetMouseStatus(fk_MouseButton.MOUSE1, fk_SwitchStatus.PRESS, false) == true) {
        // 押されている場合の処理
    }

引数

  [in] | buttonCode | マウスボタンの種類
  [in] | status | 取得したい状態を指定します。 種類については FK_CLI::fk_SwitchStatus を参照してください。
  [in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。

戻り値
  ボタンが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。

void FK_CLI::fk_AppWindow::SetCursorState | ( | bool | visible,
|  | bool | center
| ) |  |

マウスカーソル表示制御メソッド

マウスカーソルの表示・非表示と、 カーソルを画面の中心に移動するか否かを指定します。 初期状態では、マウスカーソルは表示し、中心移動は無効としています。

引数

  [in] | visible | true の場合、マウスカーソルを表示します。false の場合は消去します。
  [in] | center | true の場合、マウスカーソルを画面中心に移動します。 false の場合は何も行いません。

bool FK_CLI::fk_AppWindow::IsModelPicked | ( | fk_Model^ | model,
|  | int | pixel,
|  | int | mouseX,
|  | int | mouseY
| ) |  |

モデルクリック判定メソッド1

マウスでモデルをクリックしているかどうかを判定します。 引数には判定対象としたいモデルを渡します。1 つずつしか判定できません。 (モデル, 誤差を許容するピクセル数, X 座標, Y 座標) の形式で引数を渡します。 カーソルがモデルに重なっている場合は true、 いない場合は false を返します。

引数

  [in] | model | 判定対象モデル。
  [in] | pixel | 誤差許容ピクセル数。
  [in] | mouseX | 判定対象クリック位置のx座標。 -1 を指定した場合は、 現在のマウスポインタ位置の x 座標が対象となります。
  [in] | mouseY | 判定対象クリック位置のy座標。 -1 を指定した場合や省略した場合は、 現在のマウスポインタ位置の y 座標が対象となります。

戻り値
  カーソルがモデルに重なっている場合は true、 いない場合は false を返します。

bool FK_CLI::fk_AppWindow::IsModelPicked | ( | fk_Model^ | model,
|  | int | pixel
| ) |  |

モデルクリック判定メソッド2

マウスでモデルをクリックしているかどうかを判定します。 引数には判定対象としたいモデルを渡します。1 つずつしか判定できません。 現在のカーソル位置を基準に判定します。 カーソルがモデルに重なっている場合は true、 いない場合は false を返します。

引数

  [in] | model | 判定対象モデル。
  [in] | pixel | 誤差許容ピクセル数。

戻り値
  カーソルがモデルに重なっている場合は true、 いない場合は false を返します。

bool FK_CLI::fk_AppWindow::IsModelPicked | ( | fk_Model^ | model | ) |

モデルクリック判定メソッド3

マウスでモデルをクリックしているかどうかを判定します。 引数には判定対象としたいモデルを渡します。1 つずつしか判定できません。 現在のカーソル位置を基準に判定します。 カーソルがモデルに重なっている場合は true、 いない場合は false を返します。 本メソッドは、 IsModelPicked(fk_Model^, int) において 第二引数に 1 を指定した場合と同一の挙動となります。

引数

  [in] | model | 判定対象モデル。

戻り値
  カーソルがモデルに重なっている場合は true、 いない場合は false を返します。

void FK_CLI::fk_AppWindow::ProcMouseView | ( | fk_Model^ | camera,
|  | double | x,
|  | double | y,
|  | bool | lockSW
| ) |  |

FPS視点的カメラ制御メソッド

FPS 視点のゲーム特有の、マウス移動による視点操作処理を行います。

引数

  [in] | camera | カメラモデル。
  [in] | x | 横方向の移動に対する回転角度。
  [in] | y | 縦方向の移動に対する回転角度。
  [in] | lockSW | true の場合、カーソルの中心を固定します。 false の場合は固定しません。

bool FK_CLI::fk_AppWindow::GetProjectPosition | ( | double | x,
|  | double | y,
|  | fk_Plane^ | plane,
|  | fk_Vector^ | pos
| ) |  |

投影平面から任意平面への射影点算出メソッド

このメソッドは、描画領域上の投影座標から、 任意の平面への射影変換を行い、射影点を求めます。 これは、投影面上の投影座標とカメラを結ぶ直線と、 引数として入力された平面の交点を求めるということと同義です。

引数

  [in] | x | 投影座標の x 成分
  [in] | y | 投影座標の y 成分
  [in] | plane | 射影先の平面。平面情報の設定については fk_Plane の解説を参照して下さい。
  [out] | pos | 算出した点の位置ベクトル

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

参照
  GetProjectPosition(double, double, double, fk_Vector^), GetWindowPosition(), fk_Plane

bool FK_CLI::fk_AppWindow::GetProjectPosition | ( | double | x,
|  | double | y,
|  | double | dist,
|  | fk_Vector^ | pos
| ) |  |

投影平面から任意距離での射影点算出メソッド

このメソッドは、描画領域上の投影座標に対し、 カメラから指定した距離となっている3D空間中の点を算出します。 これは、投影面上の投影座標とカメラを結ぶ直線と、 カメラを中心とし指定距離を半径とする球面の交点を求めることと同義です。

引数

  [in] | x | 投影座標の x 成分
  [in] | y | 投影座標の y 成分
  [in] | dist | カメラからの空間中の距離
  [out] | pos | 算出した点の位置ベクトル

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

bool FK_CLI::fk_AppWindow::GetWindowPosition | ( | fk_Vector^ | pos_3D,
|  | fk_Vector^ | pos_2D
| ) |  |

空間座標から投影座標への射影点算出メソッド

このメソッドは、空間座標から投影座標への射影点を算出します。 これは、ある空間中の位置が画面上でどこに表示されるかを知ることと同義です。 投影座標の詳細は fk_Window の概要を参照して下さい。

なお、射影点の z 成分は投影における Near 面上の場合 0、 Far 面上の場合 1 となり、その間は線形補間した値となります。 つまり、カメラに近いほど値が小さくなるということです。

引数

  [in] | pos_3D | 空間座標位置ベクトル
  [out] | pos_2D | 射影点となる投影座標の位置ベクトル

参照
  GetProjectPosition(double, double, fk_Plane^, fk_Vector^), GetProjectPosition(double, double, double, fk_Vector^), fk_Perspective, fk_Ortho, fk_Frustum

## プロパティ詳解

String^ FK_CLI::fk_AppWindow::WindowName
| set

ウィンドウタイトルプロパティ

ウィンドウタイトルに出力する文字列を設定します。

    Window.WindowName = "FK Window";

fk_Dimension^ FK_CLI::fk_AppWindow::Size
| set

ウィンドウサイズプロパティ

ウィンドウサイズを変更します。単位はピクセルです。 3DCG描画領域も同じサイズに変更します。 デフォルトは512x512です。

    Window.Size.w = 800;
    Window.Size.h = 600;

fk_Rect^ FK_CLI::fk_AppWindow::InnerSize
| set

描画領域サイズ設定プロパティ

ウィンドウの内部に持つ3DCGの描画領域の位置とサイズを変更します。 マルチウィンドウを実現する際に使用します。

    Window.InnerSize.x = 10;    // 描画領域左上位置 x 座標
    Window.InnerSize.y = 10;    // 描画領域左上位置 y 座標
    Window.InnerSize.w = 100;   // 描画領域横幅
    Window.InnerSize.h = 100;   // 描画領域縦幅

fk_Color^ FK_CLI::fk_AppWindow::BGColor
| set

背景色設定プロパティ

3DCG描画領域の背景色を設定します。

    // RGB要素を一つずつ設定
    Window.BGColor.r = 0.2;
    Window.BGColor.g = 0.3;
    Window.BGColor.b = 0.4;

    // fk_Colorで一括設定
    Window.BGColor = new fk_Color(0.2, 0.3, 0.4);

int FK_CLI::fk_AppWindow::FPS
| set

FPS設定プロパティ

Update()をコールした際に調整するFPSを指定します。 FPS(Frame Per Second)とは、1秒間中で画面更新が行われる回数の単位です。 この値を 0 に設定した場合は、FPS制御を行いません。 デフォルトは60です。

    Window.FPS = 0;

double FK_CLI::fk_AppWindow::AxisWidth
| set

軸線幅設定プロパティ

ShowGuide() で表示する軸の太さを指定します。 デフォルトは4.0です。

    Window.AxisWidth = 1.0;

参照
  ShowGuide(), GridWidth, GuideNum

double FK_CLI::fk_AppWindow::GridWidth
| set

グリッド線幅設定プロパティ

ShowGuide() で表示するグリッドの太さを指定します。 デフォルトは1.0です。

    Window.GridWidth = 0.5;

参照
  ShowGuide(), AxisWidth, GuideNum

double FK_CLI::fk_AppWindow::GuideScale
| set

グリッド幅設定プロパティ

ShowGuide()で表示するグリッドや軸の1辺の長さを指定します。 デフォルトは5.0です。

    Window.GuideScale = 10.0;

参照
  ShowGuide(), GridWidth, GuideNum

int FK_CLI::fk_AppWindow::GuideNum
| set

グリッド数設定プロパティ

ShowGuide()で表示するグリッドの軸方向あたりの個数を指定します。 デフォルトは20です。

    Window.GuideNum = 50;

参照
  ShowGuide(), GridWidth, GuideScale

fk_Vector^ FK_CLI::fk_AppWindow::CameraPos
| get set

カメラ位置設定・取得プロパティ

現在ウィンドウが制御しているカメラの位置を設定できます。 また、このプロパティでは位置の取得も可能です。

    Window.CameraPos = new fk_Vector(0.0, 0.0, 0.0);
    fk_Vector pos = Window.CameraPos;

参照
  CameraFocus, CameraModel

fk_Vector^ FK_CLI::fk_AppWindow::CameraFocus
| set

カメラ注視点設定プロパティ

現在ウィンドウが制御しているカメラの向きを、 指定した座標に向くよう姿勢変更します。

    Window.CameraFocus = new fk_Vector(0.0, 0.0, 0.0);

参照
  CameraPos, CameraModel

fk_Model^ FK_CLI::fk_AppWindow::CameraModel
| get set

カメラモデル設定プロパティ

ウィンドウに対して、 別の fk_Model (及びその派生クラス)のオブジェクトをカメラとして セットします。 このメソッドでセットしたモデルを操作すれば、 fk_AppWindow のメソッドを介さずカメラ制御が可能です。

    fk_Model model = new fk_Model;
    Window.CameraModel = model;

参照
  CameraPos, CameraFocus, fk_Model

fk_Scene^ FK_CLI::fk_AppWindow::Scene
| get set

シーン設定プロパティ

ウィンドウに対して、別の fk_Scene のオブジェクトをセットします。 アプリの画面ごとにモデルを登録した fk_Scene オブジェクトを、 このメソッドでセットして切り替えることで、 モデルを個別に登録や解除を行う手間が省けます。 ある程度以上の規模を持つアプリを開発する場合は便利です。 また、現時点のシーンを取得することも可能です。

fk_Scene scene = new fk_Scene(); Window.Scene = scene;

fk_Scene s = Window.Scene;

参照
  SetScene(), fk_Scene

fk_Vector^ FK_CLI::fk_AppWindow::MousePosition
| get

マウスポインタ位置取得プロパティ

マウスのカーソル位置を検出します。 本プロパティは fk_Vector 型であり、 x 成分と y 成分にそれぞれウィンドウ投影座標系の値が入ります。 ウィンドウの外にはみ出したかどうかは、 値がウィンドウサイズを超過しているか否かで判断できます。

    fk_Vector mousePos = Window.MousePosition;

参照
  GetMouseStatus()

bool FK_CLI::fk_AppWindow::TrackBallMode
| set

トラックボールモード制御プロパティ

マウスの右ドラッグとホイール操作で、 カメラを自由に操作できるモードをON(true)/OFF(false)します。 デフォルトはOFF(false)です。

    Window.TrackBallMode = true;