FineKernelToolKit 4.2.13
|
アプリケーションウィンドウクラス [詳解]
#include <CLI/FK_CLI/include/AppWindow_CLI.h>
公開メンバ関数 | |
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_Dimension^ | Size [set] |
ウィンドウサイズプロパティ | |
fk_Rect^ | InnerSize [set] |
描画領域サイズ設定プロパティ | |
fk_Color^ | BGColor [set] |
背景色設定プロパティ | |
int | FPS [set] |
FPS設定プロパティ | |
double | GuideScale [set] |
グリッド幅設定プロパティ | |
int | GuideNum [set] |
グリッド数設定プロパティ | |
fk_Vector^ | CameraPos [get, set] |
カメラ位置設定・取得プロパティ | |
fk_Vector^ | CameraFocus [set] |
カメラ注視点設定プロパティ | |
fk_Model^ | CameraModel [get, set] |
カメラモデル設定プロパティ | |
fk_Vector^ | DefaultLightVec [get, set] |
デフォルト光源方向プロパティ | |
fk_Material^ | DefaultLightMaterial [get, set] |
デフォルト光源マテリアルプロパティ | |
fk_Scene^ | Scene [get, set] |
シーン設定プロパティ | |
fk_Vector^ | MousePosition [get] |
マウスポインタ位置取得プロパティ | |
bool | TrackBallMode [set] |
トラックボールモード制御プロパティ | |
影制御プロパティ | |
fk_ShadowMode | ShadowMode [get, set] |
影表示設定プロパティ | |
fk_Vector^ | ShadowVec [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_Color^ | FogColor [get, 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 | ) |
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 に設定されている情報に切り替えます。 |
void FK_CLI::fk_AppWindow::SetSceneDefault | ( | void | ) |
シーン設定初期化メソッド
ウィンドウが制御するシーンを、 デフォルトで内部に保持している fk_Scene のインスタンスに戻します。
void FK_CLI::fk_AppWindow::SetLightDefault | ( | void | ) |
光源初期化メソッド
デフォルト光源をシーンに追加します。
void FK_CLI::fk_AppWindow::Entry | ( | fk_Model^ | model | ) |
通常モデル表示登録メソッド
ウィンドウに対してモデルを登録し、表示するようにします。 既に登録済みのモデルに対して行った場合、登録順が最後尾となります。
[in] | model | 登録モデル |
void FK_CLI::fk_AppWindow::Entry | ( | fk_Model^ | model, |
fk_GuideObject^ | guide | ||
) |
座標軸付きモデル表示登録メソッド
ウィンドウに対してモデルを登録し、表示するようにします。 既に登録済みのモデルに対して行った場合、登録順が最後尾となります。 半透明物体の描画については、 Entry(fk_Model^) の説明を参照して下さい。 登録の際、モデルのローカル座標系に基づく座標軸を同時に登録します。
[in] | model | 登録モデル |
[in] | guide | 座標軸 |
void FK_CLI::fk_AppWindow::Entry | ( | fk_SpriteModel^ | model | ) |
スプライトモデル登録メソッド
ウィンドウに対してスプライトモデルを登録し、表示するようにします。
[in] | model | 登録モデル |
void FK_CLI::fk_AppWindow::Entry | ( | fk_Performer^ | chara | ) |
void FK_CLI::fk_AppWindow::Remove | ( | fk_Model^ | model | ) |
通常モデル表示解除メソッド
ウィンドウからモデルの登録を解除し、表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | model | 登録解除モデル |
void FK_CLI::fk_AppWindow::Remove | ( | fk_Model^ | model, |
fk_GuideObject^ | guide | ||
) |
座標軸付きモデル表示解除メソッド
ウィンドウから、座標軸付きモデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | model | 登録解除モデル |
[in] | guide | 登録解除座標軸 |
void FK_CLI::fk_AppWindow::Remove | ( | fk_SpriteModel^ | model | ) |
スプライトモデル表示解除メソッド
ウィンドウから、スプライトモデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | model | 登録解除モデル |
void FK_CLI::fk_AppWindow::Remove | ( | fk_Performer^ | chara | ) |
fk_Performer モデル表示解除メソッド
ウィンドウから、fk_Performer 型モデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | chara | 登録解除モデル |
void FK_CLI::fk_AppWindow::ClearModel | ( | bool | defCameraAndLight | ) |
全モデル登録解除メソッド1
現在のシーンから全てのモデルの表示登録を解除します。
[in] | defCameraAndLight | ウィンドウ内部で保持しているライトとカメラのモデルを残したい場合は、 true を指定します。 false を渡した場合は、完全なクリアとなります。 |
void FK_CLI::fk_AppWindow::ClearModel | ( | void | ) |
void FK_CLI::fk_AppWindow::Close | ( | void | ) |
bool FK_CLI::fk_AppWindow::Update | ( | bool | forceFlg | ) |
bool FK_CLI::fk_AppWindow::Update | ( | void | ) |
シーン描画メソッド2
シーン画面を描画し、さらに各種入力デバイスの状態を更新します。 基本的にメインループ内でコールすることになります。 その際、 FPS プロパティの数値基づいて時間調整が入ります。 本メソッドは、 Update(bool) において引数に false を与えた場合と同様の挙動となります。
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演算を利用して並べて指定できます。 |
void FK_CLI::fk_AppWindow::ShowGuide | ( | void | ) |
グリッド・軸設定メソッド2
画面内の座標系を表すグリッドと軸を指定します。 本メソッドでは、3次元座標軸と xz 平面のグリッドを表示します。 表示する座標軸およびグリッド面を細かく指定したい場合は、 ShowGuide(bool) を利用してください。
void FK_CLI::fk_AppWindow::HideGuide | ( | void | ) |
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] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
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 を参照してください。 |
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 | 状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。 |
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] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
特殊キー状態取得メソッド別名1
GetSpecialKeyStatus(fk_Key, fk_Switch, bool) の別名です。
[in] | keyCode | 状態を取得したいキーに対応した値。 |
[in] | status | 取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。 |
[in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
特殊キー状態取得メソッド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 を参照してください。 |
特殊キー状態取得メソッド別名2
GetSpecialKeyStatus(fk_Key, fk_Switch) の別名です。
[in] | keyCode | 状態を取得したいキーに対応した値。 |
[in] | status | 取得したい状態を指定します。 種類については FK_CLI::fk_Switch を参照してください。 |
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 | 状態を取得したいキーに対応した値。 |
bool FK_CLI::fk_AppWindow::GetKeyStatus | ( | fk_Key | keyCode | ) |
特殊キー状態取得メソッド別名3
GetSpecialKeyStatus(fk_Key) の別名です.
[in] | keyCode | 状態を取得したいキーに対応した値。 |
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] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
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 を参照してください。 |
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 | マウスボタンの種類 |
void FK_CLI::fk_AppWindow::SetCursorState | ( | bool | visible, |
bool | center | ||
) |
マウスカーソル表示制御メソッド
マウスカーソルの表示・非表示と、 カーソルを画面の中心に移動するか否かを指定します。 初期状態では、マウスカーソルは表示し、中心移動は無効としています。
[in] | visible | true の場合、マウスカーソルを表示します。false の場合は消去します。 |
[in] | center | 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 の場合は固定しません。 |
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 の解説を参照して下さい。 |
Tuple< bool, fk_Vector^> ^ FK_CLI::fk_AppWindow::GetProjectPosition | ( | double | x, |
double | y, | ||
double | dist | ||
) |
投影平面から任意距離での射影点算出メソッド
このメソッドは、描画領域上の投影座標に対し、 カメラから指定した距離となっている3D空間中の点を算出します。 これは、投影面上の投影座標とカメラを結ぶ直線と、 カメラを中心とし指定距離を半径とする球面の交点を求めることと同義です。
[in] | x | 投影座標の x 成分 |
[in] | y | 投影座標の y 成分 |
[in] | dist | カメラからの空間中の距離 |
空間座標から投影座標への射影点算出メソッド
このメソッドは、空間座標から投影座標への射影点を算出します。 これは、ある空間中の位置が画面上でどこに表示されるかを知ることと同義です。 投影座標の詳細は fk_Window の概要を参照して下さい。
なお、射影点の z 成分は投影における Near 面上の場合 0、 Far 面上の場合 1 となり、その間は線形補間した値となります。 つまり、カメラに近いほど値が小さくなるということです。
[in] | pos | 空間座標位置ベクトル |
bool FK_CLI::fk_AppWindow::SnapImage | ( | String^ | fileName | ) |
描画画像ファイル出力メソッド
このメソッドは、描画領域に表示されている画像を、画像ファイルとして出力します。
[in] | fileName | 画像ファイル名 |
bool FK_CLI::fk_AppWindow::SnapImage | ( | String^ | fileName, |
fk_ImageType | format | ||
) |
形式指定付描画画像ファイル出力メソッド
このメソッドは、描画領域に表示されている画像を、画像ファイルとして出力します。
[in] | fileName | 画像ファイル名 |
[in] | format | 画像ファイルのフォーマット。 現在利用可能なフォーマットは、 fk_ImageType の解説を参照して下さい。 |
bool FK_CLI::fk_AppWindow::SnapImage | ( | fk_Image^ | image | ) |
描画画像データ出力メソッド
このメソッドは、描画領域に表示されている画像を、 fk_Image 型のインスタンスに出力します。
[in] | image | 画像データ出力先インスタンス |
|
static |
文字列出力メソッド
このメソッドは、与えられた文字列をメッセージ出力用ブラウザーに出力します。
fk_AppWindow.PutString("sample");
[in] | str | 出力文字列 |
|
static |
メッセージ出力用ブラウザ初期化メソッド
このメソッドは、メッセージ出力における出力用ブラウザに対し、 表示の初期化を行います。 このメソッドを呼ぶ前に表示されていた文字列は全て削除されます。
fk_AppWindow.ClearBrowser();
|
set |
ウィンドウタイトルプロパティ
ウィンドウタイトルに出力する文字列を設定します。
Window.WindowName = "FK Window";
|
set |
ウィンドウサイズプロパティ
ウィンドウサイズを変更します。単位はピクセルです。 3DCG描画領域も同じサイズに変更します。 デフォルトは512x512です。
Window.Size.w = 800; Window.Size.h = 600;
|
set |
描画領域サイズ設定プロパティ
ウィンドウの内部に持つ3DCGの描画領域の位置とサイズを変更します。 マルチウィンドウを実現する際に使用します。
Window.InnerSize.x = 10; // 描画領域左上位置 x 座標 Window.InnerSize.y = 10; // 描画領域左上位置 y 座標 Window.InnerSize.w = 100; // 描画領域横幅 Window.InnerSize.h = 100; // 描画領域縦幅
|
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);
|
set |
FPS設定プロパティ
Update()をコールした際に調整するFPSを指定します。 FPS(Frame Per Second)とは、1秒間中で画面更新が行われる回数の単位です。 この値を 0 に設定した場合は、FPS制御を行いません。 デフォルトは60です。
Window.FPS = 0;
|
set |
グリッド幅設定プロパティ
ShowGuide()で表示するグリッドや軸の1辺の長さを指定します。 デフォルトは5.0です。
Window.GuideScale = 10.0;
|
set |
グリッド数設定プロパティ
ShowGuide()で表示するグリッドの軸方向あたりの個数を指定します。 デフォルトは20です。
Window.GuideNum = 50;
|
getset |
カメラ位置設定・取得プロパティ
現在ウィンドウが制御しているカメラの位置を設定できます。 また、このプロパティでは位置の取得も可能です。
Window.CameraPos = new fk_Vector(0.0, 0.0, 0.0); fk_Vector pos = Window.CameraPos;
|
set |
カメラ注視点設定プロパティ
現在ウィンドウが制御しているカメラの向きを、 指定した座標に向くよう姿勢変更します。
Window.CameraFocus = new fk_Vector(0.0, 0.0, 0.0);
|
getset |
カメラモデル設定プロパティ
ウィンドウに対して、 別の fk_Model (及びその派生クラス)のオブジェクトをカメラとして セットします。 このメソッドでセットしたモデルを操作すれば、 fk_AppWindow のメソッドを介さずカメラ制御が可能です。
fk_Model model = new fk_Model; Window.CameraModel = model;
|
getset |
デフォルト光源方向プロパティ
デフォルト光源の方向を設定します。
|
getset |
デフォルト光源マテリアルプロパティ
デフォルト光源のマテリアルを設定します。
|
getset |
|
get |
マウスポインタ位置取得プロパティ
マウスのカーソル位置を検出します。 本プロパティは fk_Vector 型であり、 x 成分と y 成分にそれぞれウィンドウ投影座標系の値が入ります。 ウィンドウの外にはみ出したかどうかは、 値がウィンドウサイズを超過しているか否かで判断できます。
fk_Vector mousePos = Window.MousePosition;
|
set |
トラックボールモード制御プロパティ
マウスの右ドラッグとホイール操作で、 カメラを自由に操作できるモードをON(true)/OFF(false)します。 デフォルトはOFF(false)です。
Window.TrackBallMode = true;
|
getset |
影表示設定プロパティ
影表示の設定や参照を行います。 設定は,以下の中から選択できます。
|
getset |
影光線方向設定プロパティ
影を生成する際の光の方向の設定や参照を行います。
|
getset |
シャドウマップ解像度プロパティ
影生成に使用するシャドウマップテクスチャの解像度の設定や参照を行います。 この解像度は影表示の質と実行速度に大きく影響します。 解像度が高いと影のディザーは目立たなくなりますが、描画速度が低下し、 また実行環境によっては表示に異常をきたすことがあります。 解像度が低い場合は描画速度が向上しますが、 ディザーが発生しやすくなります。
この解像度は 16 以上の 2の累乗数であることが前提となっており、 その条件を満たさない場合は 15 以下の場合は 16、 それ以外の数値の場合はその数値未満の最大の2の累乗数が設定されます。
シャドウマップのディザーを目立たなくするには、 解像度だけでなく処理範囲も重要な要素です。 処理範囲については fk_Scene::ShadowAreaSize, fk_Scene::ShadowDistance を参照して下さい。
|
getset |
シャドウマップ領域設定プロパティ
影は空間中の直方体領域の内部に生成されますが、 この直方体のうち影光線ベクトルに垂直な辺の長さの設定や参照を行います。 この値が大きいほど広い領域に対し影を生成しますが、 この値が大きくなるにつれて影の粒度も荒くなります。 シーンの状況に応じて適切な値を設定する必要があります。
|
getset |
シャドウマップ領域奥行き幅設定プロパティ
影は空間中の直方体領域の内部に生成されますが、 この直方体のうち影光線ベクトルに平行な辺の長さの設定や参照を行います。 この値が大きいほど広い領域に対し影を生成しますが、 一方で大きいほど計算精度が悪くなり、描画の不具合を生じやすくなります。 通常は fk_Scene::ShadowAreaSize の設定値と同程度にしておくことが無難です。
|
getset |
影濃度設定プロパティ
影の濃度の設定や参照を行います。 この値が大きいほど影となる部分の輝度は低くなる、つまり影自体は濃くなってきます。 最小値は 0, 最大値は 1 で、0 のときは影効果は無効となります。 1 の場合、影となる領域は一切光が当たってない状況の輝度(色)となります。
|
getset |
影バイアス値設定メソッド
影バイアス値の設定や参照を行います. FK での影生成処理は「シャドウマップ」という手法を用いています。 シャドウマップによる影生成では「シャドウアクネ」というモアレ模様が生じることがあります。 シャドウアクネを防ぐ方法としては、バイアス値を用いて補正を行いますが、 本メソッドはこのバイアス値を設定するものです。 バイアス値は正の微小値であり、デフォルトでは 0.0005 となっています。 この値が小さいとシャドウアクネが生じやすくなります。 しかし、この値が大きい場合は正常な影が生成できなくなります。 適切な値は様々な要因が関わってくるため、 シャドウアクネが生じた場合は適正な値を試行錯誤する必要があります。
|
getset |
霧効果の減衰関数の設定や参照を行います。設定できる関数の種類は以下のとおりです。 各数式中の \( z \) はカメラからの距離を意味します。
\[ \frac{E-z}{E-S} \]
式中の \( E, S \) は fk_Fog::FogLinearEnd, fk_Fog::FogLinearStart プロパティで設定します。\[ e^{-dz} \]
式中の \( d \) は fk_Fog::FogDensity プロパティで設定します。\[ e^{-\left(dz\right)^2} \]
式中の \( d \) は fk_Fog::FogDensity プロパティで設定します。デフォルトでは fk_FogMode.OFF が設定されています。
|
getset |
指数式係数プロパティ
減衰関数として指数式か指数(2乗)式を選択した場合の、 指数部の係数 d の設定や参照を行います。 数式の詳細は fk_Fog::FogMode を参照して下さい。
|
getset |
線形式係数開始距離プロパティ
減衰関数として線形式を選択した場合の、 開始距離の設定や参照を行います。 意味的には、霧効果が始まる最低距離になります。 数式の詳細は fk_Fog::FogMode を参照して下さい。
|
getset |
線形式係数完全距離プロパティ
減衰関数として線形式を選択した場合の、 完全距離の設定や参照を行います。 意味的には、霧によって物体が完全見えなくなる距離になります。 数式の詳細は fk_Fog::FogMode を参照して下さい。
|
getset |