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

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

#include <CLI/FK_CLI/include/AppWindow_CLI.h>

+ 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 SetLightDefault (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_Guide mode)
 グリッド・軸設定メソッド1
 
void ShowGuide (void)
 グリッド・軸設定メソッド2
 
void HideGuide (void)
 グリッド・軸消去メソッド
 
キーボード状態取得メソッド
bool GetKeyStatus (wchar_t key, fk_Switch status, bool insideFlag)
 通常キー状態取得メソッド1
 
bool GetKeyStatus (wchar_t key, fk_Switch status)
 通常キー状態取得メソッド2
 
bool GetKeyStatus (wchar_t key)
 通常キー状態取得メソッド3
 
bool GetSpecialKeyStatus (fk_Key keyCode, fk_Switch status, bool insideFlag)
 特殊キー状態取得メソッド1
 
bool GetKeyStatus (fk_Key keyCode, fk_Switch status, bool insideFlag)
 特殊キー状態取得メソッド別名1
 
bool GetSpecialKeyStatus (fk_Key keyCode, fk_Switch status)
 特殊キー状態取得メソッド2
 
bool GetKeyStatus (fk_Key keyCode, fk_Switch status)
 特殊キー状態取得メソッド別名2
 
bool GetSpecialKeyStatus (fk_Key keyCode)
 特殊キー状態取得メソッド3
 
bool GetKeyStatus (fk_Key keyCode)
 特殊キー状態取得メソッド別名3
 
マウス状態取得メソッド
bool GetMouseStatus (fk_MouseButton buttonCode, fk_Switch status, bool insideFlag)
 マウスボタン状態取得メソッド1
 
bool GetMouseStatus (fk_MouseButton buttonCode, fk_Switch status)
 マウスボタン状態取得メソッド2
 
bool GetMouseStatus (fk_MouseButton buttonCode)
 マウスボタン状態取得メソッド3
 
void SetCursorState (bool visible, bool center)
 マウスカーソル表示制御メソッド
 
void ProcMouseView (fk_Model^ camera, double x, double y, bool lockSW)
 FPS視点的カメラ制御メソッド
 
投影座標・空間座標変換メソッド
Tuple< bool, fk_Vector^> ^ GetProjectPosition (double x, double y, fk_Plane^ plane)
 投影平面から任意平面への射影点算出メソッド
 
Tuple< bool, fk_Vector^> ^ GetProjectPosition (double x, double y, double dist)
 投影平面から任意距離での射影点算出メソッド
 
Tuple< bool, fk_Vector^> ^ GetWindowPosition (fk_Vector^ pos)
 空間座標から投影座標への射影点算出メソッド
 
スクリーンショットメソッド
bool SnapImage (String^ fileName)
 描画画像ファイル出力メソッド
 
bool SnapImage (String^ fileName, fk_ImageType format)
 形式指定付描画画像ファイル出力メソッド
 
bool SnapImage (fk_Image^ image)
 描画画像データ出力メソッド
 

静的公開メンバ関数

メッセージ出力制御メソッド
static void PutString (String^ str)
 文字列出力メソッド
 
static void ClearBrowser (void)
 メッセージ出力用ブラウザ初期化メソッド
 

プロパティ

String^ WindowName [set]
 ウィンドウタイトルプロパティ
 
fk_DimensionSize [set]
 ウィンドウサイズプロパティ
 
fk_RectInnerSize [set]
 描画領域サイズ設定プロパティ
 
fk_ColorBGColor [set]
 背景色設定プロパティ
 
int FPS [set]
 FPS設定プロパティ
 
double GuideScale [set]
 グリッド幅設定プロパティ
 
int GuideNum [set]
 グリッド数設定プロパティ
 
fk_VectorCameraPos [get, set]
 カメラ位置設定・取得プロパティ
 
fk_VectorCameraFocus [set]
 カメラ注視点設定プロパティ
 
fk_ModelCameraModel [get, set]
 カメラモデル設定プロパティ
 
fk_VectorDefaultLightVec [get, set]
 デフォルト光源方向プロパティ
 
fk_MaterialDefaultLightMaterial [get, set]
 デフォルト光源マテリアルプロパティ
 
fk_SceneScene [get, set]
 シーン設定プロパティ
 
fk_VectorMousePosition [get]
 マウスポインタ位置取得プロパティ
 
bool TrackBallMode [set]
 トラックボールモード制御プロパティ
 
影制御プロパティ
fk_ShadowMode ShadowMode [get, set]
 影表示設定プロパティ
 
fk_VectorShadowVec [get, set]
 影光線方向設定プロパティ
 
int ShadowResolution [get, set]
 シャドウマップ解像度プロパティ
 
double ShadowAreaSize [get, set]
 シャドウマップ領域設定プロパティ
 
double ShadowDistance [get, set]
 シャドウマップ領域奥行き幅設定プロパティ
 
double ShadowVisibility [get, set]
 影濃度設定プロパティ
 
double ShadowBias [get, set]
 影バイアス値設定メソッド
 
霧効果制御プロパティ

減衰関数プロパティ

fk_FogMode FogMode [get, set]
 
double FogDensity [get, set]
 指数式係数プロパティ
 
double FogLinearStart [get, set]
 線形式係数開始距離プロパティ
 
double FogLinearEnd [get, set]
 線形式係数完全距離プロパティ
 
fk_ColorFogColor [get, set]
 霧色プロパティ
 

詳解

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

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

構築子と解体子

◆ fk_AppWindow()

FK_CLI::fk_AppWindow::fk_AppWindow ( )

コンストラクタ

◆ ~fk_AppWindow()

FK_CLI::fk_AppWindow::~fk_AppWindow ( )

デストラクタ

◆ !fk_AppWindow()

FK_CLI::fk_AppWindow::!fk_AppWindow ( )

ファイナライザ

関数詳解

◆ SetCameraDefault()

void FK_CLI::fk_AppWindow::SetCameraDefault ( void  )

カメラ初期化メソッド

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

参照
CameraModel

◆ SetScene()

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]defCameraAndLighttrue である場合、 カメラ・光源設定についてシーン設定前のものを用います。 false である場合は第一引数の scene に設定されている情報に切り替えます。
参照
Scene, SetSceneDefault(), fk_Scene

◆ SetSceneDefault()

void FK_CLI::fk_AppWindow::SetSceneDefault ( void  )

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

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

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

◆ SetLightDefault()

void FK_CLI::fk_AppWindow::SetLightDefault ( void  )

光源初期化メソッド

デフォルト光源をシーンに追加します。

◆ Entry() [1/4]

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

◆ Entry() [2/4]

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

◆ Entry() [3/4]

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

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

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

引数
[in]model登録モデル
参照
Remove(fk_SpriteModel^), ClearModel(), fk_SpriteModel

◆ Entry() [4/4]

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

fk_Performer モデル登録メソッド

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

引数
[in]chara登録モデル
参照
Remove(fk_Performer^), ClearModel(), fk_Performer

◆ Remove() [1/4]

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

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

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

引数
[in]model登録解除モデル
参照
Entry(fk_Model^), ClearModel(), fk_Model

◆ Remove() [2/4]

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

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

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

引数
[in]model登録解除モデル
[in]guide登録解除座標軸
参照
Entry(fk_Model^, fk_GuideObject^), ClearModel()

◆ Remove() [3/4]

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

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

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

引数
[in]model登録解除モデル
参照
Entry(fk_SpriteModel^), ClearModel()

◆ Remove() [4/4]

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

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

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

引数
[in]chara登録解除モデル
参照
Entry(fk_Performer^), ClearModel()

◆ ClearModel() [1/2]

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

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

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

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

◆ ClearModel() [2/2]

void FK_CLI::fk_AppWindow::ClearModel ( void  )

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

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

参照
ClearModel(bool)

◆ Open()

void FK_CLI::fk_AppWindow::Open ( void  )

ウィンドウ生成メソッド

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

参照
Close(), Update()

◆ Close()

void FK_CLI::fk_AppWindow::Close ( void  )

ウィンドウ破棄メソッド

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

参照
Open(), Update()

◆ Update() [1/2]

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

シーン描画メソッド1

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

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

◆ Update() [2/2]

bool FK_CLI::fk_AppWindow::Update ( void  )

シーン描画メソッド2

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

参照
Open(), Close(), FPS

◆ ShowGuide() [1/2]

void FK_CLI::fk_AppWindow::ShowGuide ( fk_Guide  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_Guide

◆ ShowGuide() [2/2]

void FK_CLI::fk_AppWindow::ShowGuide ( void  )

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

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

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

◆ HideGuide()

void FK_CLI::fk_AppWindow::HideGuide ( void  )

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

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

参照
ShowGuide()

◆ GetKeyStatus() [1/6]

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

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

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

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

if(Window.GetKeyStatus('a', fk_Switch.PRESS, false) == true) {
    // 押されている場合の処理
}
引数
[in]key状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。
[in]status取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。
[in]insideFlagtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
参照
GetSpecialKeyStatus(), Update()

◆ GetKeyStatus() [2/6]

bool FK_CLI::fk_AppWindow::GetKeyStatus ( wchar_t  key,
fk_Switch  status 
)

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

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

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

if(Window.GetKeyStatus('a', fk_Switch.PRESS) == true) {
    // 押されている場合の処理
}
引数
[in]key状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。
[in]status取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
参照
GetSpecialKeyStatus(), Update()

◆ GetKeyStatus() [3/6]

bool FK_CLI::fk_AppWindow::GetKeyStatus ( wchar_t  key)

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

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

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

if(Window.GetKeyStatus('a') == true) {
    // 押されている場合の処理
}
引数
[in]key状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
参照
GetSpecialKeyStatus(), Update()

◆ GetSpecialKeyStatus() [1/3]

bool FK_CLI::fk_AppWindow::GetSpecialKeyStatus ( fk_Key  keyCode,
fk_Switch  status,
bool  insideFlag 
)

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

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

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

if(Window.GetSpecialKeyStatus(fk_Key.F1, fk_Switch.PRESS, false) == true) {
    // 押されている場合の処理
}
引数
[in]keyCode状態を取得したいキーに対応した値。
[in]status取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。
[in]insideFlagtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
覚え書き
スペースキーの状態取得は、本メソッドではなく GetKeyStatus() を用います。
参照
GetKeyStatus(), Update()

◆ GetKeyStatus() [4/6]

bool FK_CLI::fk_AppWindow::GetKeyStatus ( fk_Key  keyCode,
fk_Switch  status,
bool  insideFlag 
)

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

GetSpecialKeyStatus(fk_Key, fk_Switch, bool) の別名です。

引数
[in]keyCode状態を取得したいキーに対応した値。
[in]status取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。
[in]insideFlagtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
覚え書き
スペースキーの状態取得は、本メソッドではなく GetKeyStatus() を用います。
参照
GetKeyStatus(), Update()

◆ GetSpecialKeyStatus() [2/3]

bool FK_CLI::fk_AppWindow::GetSpecialKeyStatus ( fk_Key  keyCode,
fk_Switch  status 
)

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

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

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

if(Window.GetSpecialKeyStatus(fk_Key.F1, fk_Switch.PRESS) == true) {
    // 押されている場合の処理
}
引数
[in]keyCode状態を取得したいキーに対応した値。
[in]status取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
覚え書き
スペースキーの状態取得は、本メソッドではなく GetKeyStatus() を用います。
参照
GetKeyStatus(), Update()

◆ GetKeyStatus() [5/6]

bool FK_CLI::fk_AppWindow::GetKeyStatus ( fk_Key  keyCode,
fk_Switch  status 
)

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

GetSpecialKeyStatus(fk_Key, fk_Switch) の別名です。

引数
[in]keyCode状態を取得したいキーに対応した値。
[in]status取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
覚え書き
スペースキーの状態取得は、本メソッドではなく GetKeyStatus() を用います。
参照
GetKeyStatus(), Update()

◆ GetSpecialKeyStatus() [3/3]

bool FK_CLI::fk_AppWindow::GetSpecialKeyStatus ( fk_Key  keyCode)

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

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

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

if(Window.GetSpecialKeyStatus(fk_Key.F1) == true) {
    // 押されている場合の処理
}
引数
[in]keyCode状態を取得したいキーに対応した値。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
覚え書き
スペースキーの状態取得は、本メソッドではなく GetKeyStatus() を用います。
参照
GetKeyStatus(), Update()

◆ GetKeyStatus() [6/6]

bool FK_CLI::fk_AppWindow::GetKeyStatus ( fk_Key  keyCode)

特殊キー状態取得メソッド別名3

GetSpecialKeyStatus(fk_Key) の別名です.

引数
[in]keyCode状態を取得したいキーに対応した値。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
覚え書き
スペースキーの状態取得は、本メソッドではなく GetKeyStatus() を用います。
参照
GetKeyStatus(), Update()

◆ GetMouseStatus() [1/3]

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

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

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

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

if(Window.GetMouseStatus(fk_MouseButton.MOUSE1, fk_Switch.PRESS, false) == true) {
    // 押されている場合の処理
}
引数
[in]buttonCodeマウスボタンの種類
[in]status取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。
[in]insideFlagtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
ボタンが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。

◆ GetMouseStatus() [2/3]

bool FK_CLI::fk_AppWindow::GetMouseStatus ( fk_MouseButton  buttonCode,
fk_Switch  status 
)

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

マウスボタンのクリック状態を検出します。 マウスボタンの種類については、 FK_CLI::fk_MouseButton の項目を参照して下さい。 なお、本メソッドは GetMouseButton(fk_MouseButton, fk_Switch, bool) にて 第三引数に false を入力した場合と挙動は同一です。

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

if(Window.GetMouseStatus(fk_MouseButton.MOUSE1, fk_Switch.PRESS) == true) {
    // 押されている場合の処理
}
引数
[in]buttonCodeマウスボタンの種類
[in]status取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。
戻り値
ボタンが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。

◆ GetMouseStatus() [3/3]

bool FK_CLI::fk_AppWindow::GetMouseStatus ( fk_MouseButton  buttonCode)

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

マウスボタンのクリック状態を検出します。 マウスボタンの種類については、 FK_CLI::fk_MouseButton の項目を参照して下さい。 なお、本メソッドは GetMouseButton(fk_MouseButton, fk_Switch, bool) にて 第二引数に fk_Switch.PRESS を、第三引数に false を入力した場合と挙動は同一です。

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

if(Window.GetMouseStatus(fk_MouseButton.MOUSE1) == true) {
    // 押されている場合の処理
}
引数
[in]buttonCodeマウスボタンの種類
戻り値
ボタンが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。

◆ SetCursorState()

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

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

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

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

◆ ProcMouseView()

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

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

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

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

◆ GetProjectPosition() [1/2]

Tuple< bool, fk_Vector^> ^ FK_CLI::fk_AppWindow::GetProjectPosition ( double  x,
double  y,
fk_Plane plane 
)

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

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

引数
[in]x投影座標の x 成分
[in]y投影座標の y 成分
[in]plane射影先の平面。平面情報の設定については fk_Plane の解説を参照して下さい。
戻り値
第1要素は、算出に成功すれば true が、失敗すれば false が入ります。 第2要素は、算出した点のベクトルが入ります。
参照
GetProjectPosition(double, double, double), GetWindowPosition(), fk_Plane

◆ GetProjectPosition() [2/2]

Tuple< bool, fk_Vector^> ^ FK_CLI::fk_AppWindow::GetProjectPosition ( double  x,
double  y,
double  dist 
)

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

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

引数
[in]x投影座標の x 成分
[in]y投影座標の y 成分
[in]distカメラからの空間中の距離
戻り値
第1要素は、算出に成功すれば true が、失敗すれば false が入ります。 第2要素は、算出した点のベクトルが入ります。

◆ GetWindowPosition()

Tuple< bool, fk_Vector^> ^ FK_CLI::fk_AppWindow::GetWindowPosition ( fk_Vector pos)

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

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

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

引数
[in]pos空間座標位置ベクトル
戻り値
第1要素は、算出に成功すれば true が、失敗すれば false が入ります。 第2要素は、射影点となる投影座標の位置ベクトルが入ります。
参照
GetProjectPosition(double, double, fk_Plane^), GetProjectPosition(double, double, double), fk_Perspective, fk_Ortho, fk_Frustum

◆ SnapImage() [1/3]

bool FK_CLI::fk_AppWindow::SnapImage ( String^  fileName)

描画画像ファイル出力メソッド

このメソッドは、描画領域に表示されている画像を、画像ファイルとして出力します。

引数
[in]fileName画像ファイル名
戻り値
出力に成功すれば true を、失敗すれば false を返します。

◆ SnapImage() [2/3]

bool FK_CLI::fk_AppWindow::SnapImage ( String^  fileName,
fk_ImageType  format 
)

形式指定付描画画像ファイル出力メソッド

このメソッドは、描画領域に表示されている画像を、画像ファイルとして出力します。

引数
[in]fileName画像ファイル名
[in]format画像ファイルのフォーマット。 現在利用可能なフォーマットは、 fk_ImageType の解説を参照して下さい。
戻り値
出力に成功すれば true を、失敗すれば false を返します。

◆ SnapImage() [3/3]

bool FK_CLI::fk_AppWindow::SnapImage ( fk_Image image)

描画画像データ出力メソッド

このメソッドは、描画領域に表示されている画像を、 fk_Image 型のインスタンスに出力します。

引数
[in]image画像データ出力先インスタンス
戻り値
出力に成功すれば true を、失敗すれば false を返します。

◆ PutString()

static void FK_CLI::fk_AppWindow::PutString ( String^  str)
static

文字列出力メソッド

このメソッドは、与えられた文字列をメッセージ出力用ブラウザーに出力します。

覚え書き
本メソッドは static メソッドなので、 以下のように記述することでインスタンスの生成なしに利用することができます。
fk_AppWindow.PutString("sample");
引数
[in]str出力文字列
参照
ClearBrowser()

◆ ClearBrowser()

static void FK_CLI::fk_AppWindow::ClearBrowser ( void  )
static

メッセージ出力用ブラウザ初期化メソッド

このメソッドは、メッセージ出力における出力用ブラウザに対し、 表示の初期化を行います。 このメソッドを呼ぶ前に表示されていた文字列は全て削除されます。

覚え書き
本メソッドは static メソッドなので、 以下のように記述することでインスタンスの生成なしに利用することができます。
fk_AppWindow.ClearBrowser();
参照
PutString()

プロパティ詳解

◆ WindowName

String^ FK_CLI::fk_AppWindow::WindowName
set

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

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

Window.WindowName = "FK Window";

◆ Size

fk_Dimension^ FK_CLI::fk_AppWindow::Size
set

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

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

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

◆ InnerSize

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;   // 描画領域縦幅

◆ BGColor

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

◆ FPS

int FK_CLI::fk_AppWindow::FPS
set

FPS設定プロパティ

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

Window.FPS = 0;

◆ GuideScale

double FK_CLI::fk_AppWindow::GuideScale
set

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

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

Window.GuideScale = 10.0;
参照
ShowGuide(), GridWidth, GuideNum

◆ GuideNum

int FK_CLI::fk_AppWindow::GuideNum
set

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

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

Window.GuideNum = 50;
参照
ShowGuide(), GridWidth, GuideScale

◆ CameraPos

fk_Vector^ FK_CLI::fk_AppWindow::CameraPos
getset

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

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

Window.CameraPos = new fk_Vector(0.0, 0.0, 0.0);
fk_Vector pos = Window.CameraPos;
参照
CameraFocus, CameraModel

◆ CameraFocus

fk_Vector^ FK_CLI::fk_AppWindow::CameraFocus
set

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

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

Window.CameraFocus = new fk_Vector(0.0, 0.0, 0.0);
参照
CameraPos, CameraModel

◆ CameraModel

fk_Model^ FK_CLI::fk_AppWindow::CameraModel
getset

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

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

fk_Model model = new fk_Model;
Window.CameraModel = model;
参照
CameraPos, CameraFocus, fk_Model

◆ DefaultLightVec

fk_Vector^ FK_CLI::fk_AppWindow::DefaultLightVec
getset

デフォルト光源方向プロパティ

デフォルト光源の方向を設定します。

◆ DefaultLightMaterial

fk_Material^ FK_CLI::fk_AppWindow::DefaultLightMaterial
getset

デフォルト光源マテリアルプロパティ

デフォルト光源のマテリアルを設定します。

◆ Scene

fk_Scene^ FK_CLI::fk_AppWindow::Scene
getset

シーン設定プロパティ

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

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

fk_Scene s = Window.Scene;

参照
SetScene(), fk_Scene

◆ MousePosition

fk_Vector^ FK_CLI::fk_AppWindow::MousePosition
get

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

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

fk_Vector mousePos = Window.MousePosition;
参照
GetMouseStatus()

◆ TrackBallMode

bool FK_CLI::fk_AppWindow::TrackBallMode
set

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

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

Window.TrackBallMode = true;

◆ ShadowMode

fk_ShadowMode FK_CLI::fk_AppWindow::ShadowMode
getset

影表示設定プロパティ

影表示の設定や参照を行います。 設定は,以下の中から選択できます。

  • fk_ShadowMode::HARD
    ハードシャドウを描画します。 影表示を有効とする設定の中で描画は高速ですが、 影の内外部分の境界が明瞭なため、ディザーが目立ちます。 ディザーを改善するには、ソフトシャドウを利用するか、 シャドウマップ解像度を高く設定します。
  • fk_ShadowMode::SOFT_FAST
    速度重視設定のソフトシャドウを描画します。 ソフトシャドウは、影の内外部分の境界に対しエイリアシング処理を施したものであり、 多くの場合でハードシャドウよりも印象が良くなります。 ただし、ハードシャドウよりも実行速度は低下します。
  • fk_ShadowMode::SOFT_NICE
    質重視設定のソフトシャドウを描画します。 この設定は fk_ShadowMode::SOFT_FAST よりも高い質のソフトシャドウを生成しますが、 描画速度が低下する場合があります。
  • fk_ShadowMode::OFF
    影表示を無効とします。デフォルトはこの設定となります。 影表示が有効な場合よりもかなり描画速度が速くなります。
参照
ShadowVec, ShadowResolution, ShadowAreaSize, ShadowDistance, ShadowVisibility

◆ ShadowVec

fk_Vector^ FK_CLI::fk_AppWindow::ShadowVec
getset

影光線方向設定プロパティ

影を生成する際の光の方向の設定や参照を行います。

参照
ShadowMode, ShadowResolution, ShadowAreaSize, ShadowDistance, ShadowVisibility

◆ ShadowResolution

int FK_CLI::fk_AppWindow::ShadowResolution
getset

シャドウマップ解像度プロパティ

影生成に使用するシャドウマップテクスチャの解像度の設定や参照を行います。 この解像度は影表示の質と実行速度に大きく影響します。 解像度が高いと影のディザーは目立たなくなりますが、描画速度が低下し、 また実行環境によっては表示に異常をきたすことがあります。 解像度が低い場合は描画速度が向上しますが、 ディザーが発生しやすくなります。

この解像度は 16 以上の 2の累乗数であることが前提となっており、 その条件を満たさない場合は 15 以下の場合は 16、 それ以外の数値の場合はその数値未満の最大の2の累乗数が設定されます。

シャドウマップのディザーを目立たなくするには、 解像度だけでなく処理範囲も重要な要素です。 処理範囲については fk_Scene::ShadowAreaSize, fk_Scene::ShadowDistance を参照して下さい。

参照
ShadowMode, ShadowVec, ShadowAreaSize, ShadowDistance, ShadowVisibility

◆ ShadowAreaSize

double FK_CLI::fk_AppWindow::ShadowAreaSize
getset

シャドウマップ領域設定プロパティ

影は空間中の直方体領域の内部に生成されますが、 この直方体のうち影光線ベクトルに垂直な辺の長さの設定や参照を行います。 この値が大きいほど広い領域に対し影を生成しますが、 この値が大きくなるにつれて影の粒度も荒くなります。 シーンの状況に応じて適切な値を設定する必要があります。

参照
ShadowMode, ShadowVec, ShadowResolution, ShadowDistance, ShadowVisibility

◆ ShadowDistance

double FK_CLI::fk_AppWindow::ShadowDistance
getset

シャドウマップ領域奥行き幅設定プロパティ

影は空間中の直方体領域の内部に生成されますが、 この直方体のうち影光線ベクトルに平行な辺の長さの設定や参照を行います。 この値が大きいほど広い領域に対し影を生成しますが、 一方で大きいほど計算精度が悪くなり、描画の不具合を生じやすくなります。 通常は fk_Scene::ShadowAreaSize の設定値と同程度にしておくことが無難です。

参照
ShadowMode, ShadowVec, ShadowResolution, ShadowAreaSize, ShadowVisibility

◆ ShadowVisibility

double FK_CLI::fk_AppWindow::ShadowVisibility
getset

影濃度設定プロパティ

影の濃度の設定や参照を行います。 この値が大きいほど影となる部分の輝度は低くなる、つまり影自体は濃くなってきます。 最小値は 0, 最大値は 1 で、0 のときは影効果は無効となります。 1 の場合、影となる領域は一切光が当たってない状況の輝度(色)となります。

参照
ShadowMode, ShadowVec, ShadowResolution, ShadowAreaSize, ShadowDistance

◆ ShadowBias

double FK_CLI::fk_AppWindow::ShadowBias
getset

影バイアス値設定メソッド

影バイアス値の設定や参照を行います. FK での影生成処理は「シャドウマップ」という手法を用いています。 シャドウマップによる影生成では「シャドウアクネ」というモアレ模様が生じることがあります。 シャドウアクネを防ぐ方法としては、バイアス値を用いて補正を行いますが、 本メソッドはこのバイアス値を設定するものです。 バイアス値は正の微小値であり、デフォルトでは 0.0005 となっています。 この値が小さいとシャドウアクネが生じやすくなります。 しかし、この値が大きい場合は正常な影が生成できなくなります。 適切な値は様々な要因が関わってくるため、 シャドウアクネが生じた場合は適正な値を試行錯誤する必要があります。

◆ FogMode

fk_FogMode FK_CLI::fk_AppWindow::FogMode
getset

霧効果の減衰関数の設定や参照を行います。設定できる関数の種類は以下のとおりです。 各数式中の \( z \) はカメラからの距離を意味します。

  • fk_FogMode.LINEAR
    減衰関数として線形式を設定します。具体的には以下の数式を用います。

    \[ \frac{E-z}{E-S} \]

    式中の \( E, S \) は fk_Fog::FogLinearEnd, fk_Fog::FogLinearStart プロパティで設定します。
  • fk_FogMode.EXP
    減衰関数として指数式を設定します。具体的には以下の数式を用います。

    \[ e^{-dz} \]

    式中の \( d \) は fk_Fog::FogDensity プロパティで設定します。
  • fk_FogMode.EXP2
    減衰関数として指数(2乗)式を設定します。具体的には以下の数式を用います。

    \[ e^{-\left(dz\right)^2} \]

    式中の \( d \) は fk_Fog::FogDensity プロパティで設定します。
  • fk_FogMode.OFF
    この値を設定した場合、霧効果を無効にします。

デフォルトでは fk_FogMode.OFF が設定されています。

◆ FogDensity

double FK_CLI::fk_AppWindow::FogDensity
getset

指数式係数プロパティ

減衰関数として指数式か指数(2乗)式を選択した場合の、 指数部の係数 d の設定や参照を行います。 数式の詳細は fk_Fog::FogMode を参照して下さい。

◆ FogLinearStart

double FK_CLI::fk_AppWindow::FogLinearStart
getset

線形式係数開始距離プロパティ

減衰関数として線形式を選択した場合の、 開始距離の設定や参照を行います。 意味的には、霧効果が始まる最低距離になります。 数式の詳細は fk_Fog::FogMode を参照して下さい。

◆ FogLinearEnd

double FK_CLI::fk_AppWindow::FogLinearEnd
getset

線形式係数完全距離プロパティ

減衰関数として線形式を選択した場合の、 完全距離の設定や参照を行います。 意味的には、霧によって物体が完全見えなくなる距離になります。 数式の詳細は fk_Fog::FogMode を参照して下さい。

◆ FogColor

fk_Color^ FK_CLI::fk_AppWindow::FogColor
getset

霧色プロパティ

霧の色の設定や参照を行います。通常はシーンの背景色と同色とします。

参照
fk_Scene::BGColor