FineKernelToolKit 4.2.13
|
アプリケーションウィンドウクラス [詳解]
#include <FK/AppWindow.h>
公開メンバ関数 | |
fk_AppWindow (void) | |
コンストラクタ | |
fk_AppWindow (fk_AppWindow &parent) | |
子ウィンドウ作成時用コンストラクタ | |
~fk_AppWindow (void) | |
デストラクタ | |
ウィンドウの各種設定関数 | |
void | setWindowName (const std::string &name) |
ウィンドウタイトル設定関数 | |
void | setSize (int w, int h) |
ウィンドウサイズ設定関数 | |
void | setInnerSize (int x, int y, int w, int h) |
描画領域サイズ設定関数 | |
void | setBGColor (double r, double g, double b) |
背景色設定関数1 | |
void | setBGColor (const fk_Color &color) |
背景色設定関数2 | |
void | toFullscreen (void) |
フルスクリーン化関数 | |
void | toWindow (void) |
ウィンドウ化関数 | |
描画制御関数 | |
void | open (void) |
ウィンドウ生成関数 | |
void | close (void) |
ウィンドウ破棄関数 | |
bool | update (bool forceFlag=false) |
シーン描画関数 | |
void | setFPS (int fps) |
FPS設定関数 | |
グリッド・座標軸表示設定関数 | |
void | showGuide (fk_Guide mode=fk_Guide::AXIS_X|fk_Guide::AXIS_Y|fk_Guide::AXIS_Z|fk_Guide::GRID_XZ) |
グリッド・軸設定関数 | |
void | hideGuide (void) |
グリッド・軸消去関数 | |
void | setGuideScale (double scale) |
グリッド幅設定関数 | |
void | setGuideNum (int num) |
グリッド数設定関数 | |
カメラ制御関数 | |
void | setCameraPos (double x, double y, double z) |
カメラ位置設定関数1 | |
void | setCameraPos (const fk_Vector &pos) |
カメラ位置設定関数2 | |
void | setCameraFocus (double x, double y, double z) |
カメラ注視点設定関数1 | |
void | setCameraFocus (const fk_Vector &pos) |
カメラ注視点設定関数2 | |
void | setCameraModel (fk_Model *model) |
カメラモデル設定関数1 | |
void | setCameraModel (fk_Model &model) |
カメラモデル設定関数2 | |
fk_Model * | getCameraModel (void) |
カメラモデル取得関数 | |
void | setCameraDefault (void) |
カメラ初期化関数 | |
デフォルト光源設定関数 | |
void | setLightDefault (void) |
光源初期化関数 | |
void | setDefaultLightVec (const fk_Vector &v) |
デフォルト光源方向設定関数1 | |
void | setDefaultLightVec (double x, double y, double z) |
デフォルト光源方向設定関数2 | |
fk_Vector | getDefaultLightVec (void) |
デフォルト光源方向取得関数 | |
void | setDefaultLightMaterial (const fk_Material &mat) |
デフォルト光源マテリアル設定関数 | |
fk_Material * | getDefaultLightMaterial (void) |
デフォルト光源マテリアル取得関数 | |
シーン制御関数 | |
void | setScene (fk_Scene *scene, bool defCameraAndLight=false) |
シーン設定関数1 | |
void | setScene (fk_Scene &scene, bool defCameraAndLight=false) |
シーン設定関数2 | |
fk_Scene * | getScene (void) |
シーン取得関数 | |
void | setSceneDefault (void) |
シーン設定初期化関数 | |
void | entry (fk_Model *model) |
モデル表示登録関数1 | |
void | entry (fk_Model &model) |
モデル表示登録関数2 | |
void | entry (fk_Model *model, fk_GuideObject *guide) |
座標軸付きモデル表示登録関数1 | |
void | entry (fk_Model &model, fk_GuideObject &guide) |
座標軸付きモデル表示登録関数2 | |
void | entry (fk_SpriteModel *model) |
スプライトモデル登録関数1 | |
void | entry (fk_SpriteModel &model) |
スプライトモデル登録関数2 | |
void | entry (fk_Performer *chara) |
fk_Performer モデル登録関数1 | |
void | entry (fk_Performer &chara) |
fk_Performer モデル登録関数2 | |
void | remove (fk_Model *model) |
モデル表示解除関数1 | |
void | remove (fk_Model &model) |
モデル表示解除関数2 | |
void | remove (fk_Model *model, fk_GuideObject *guide) |
座標軸付きモデル表示解除関数1 | |
void | remove (fk_Model &model, fk_GuideObject &guide) |
座標軸付きモデル表示解除関数2 | |
void | remove (fk_SpriteModel *model) |
スプライトモデル表示解除関数1 | |
void | remove (fk_SpriteModel &model) |
スプライトモデル表示解除関数2 | |
void | remove (fk_Performer *chara) |
fk_Performer モデル表示解除関数1 | |
void | remove (fk_Performer &chara) |
fk_Performer モデル表示解除関数2 | |
void | clearModel (bool defCameraAndLight=false) |
全モデル登録解除関数 | |
キーボード状態取得関数 | |
bool | getKeyStatus (char keyChar, fk_Switch status, bool insideFlg=false) |
通常キー状態取得関数1 | |
bool | getKeyStatus (char keyChar, bool insideFlg=false) |
通常キー状態取得関数2 | |
bool | getSpecialKeyStatus (fk_Key keyCode, fk_Switch status, bool insideFlg=false) |
特殊キー状態取得関数1 | |
bool | getSpecialKeyStatus (fk_Key keyCode, bool insideFlg=false) |
特殊キー状態取得関数2 | |
bool | getKeyStatus (fk_Key key, fk_Switch status, bool insideFlag=true) |
特殊キー状態取得関数3 | |
bool | getKeyStatus (fk_Key key, bool insideFlag=true) |
特殊キー状態取得関数4 | |
マウス状態取得関数 | |
bool | getMouseStatus (fk_MouseButton buttonCode, fk_Switch status, bool insideFlag) |
マウスボタン状態取得関数 | |
fk_Vector | getMousePosition (void) |
マウスポインタ位置取得関数 | |
void | setCursorState (bool visible, bool center) |
マウスカーソル表示制御関数 | |
マウス制御支援関数 | |
void | setTrackBallMode (bool mode) |
トラックボールモード制御関数 | |
void | procMouseView (fk_Model *camera, double spinX, double spinY, bool lockSW) |
FPS視点的カメラ制御関数1 | |
void | procMouseView (fk_Model &camera, double spinX, double spinY, bool lockSW) |
FPS視点的カメラ制御関数2 | |
投影座標・空間座標変換関数 | |
std::tuple< bool, fk_Vector > | getProjectPosition (double x, double y, fk_Plane &plane) |
投影平面から任意平面への射影点算出関数 | |
std::tuple< bool, fk_Vector > | getProjectPosition (double x, double y, double dist) |
投影平面から任意距離での射影点算出関数 | |
std::tuple< bool, fk_Vector > | getWindowPosition (fk_Vector &pos_3D) |
空間座標から投影座標への射影点算出関数 | |
スクリーンショット関数 | |
bool | snapImage (std::string fileName, fk_ImageType format=fk_ImageType::BMP, fk_SnapProcMode mode=fk_SnapProcMode::FRONT) |
描画画像ファイル出力関数 | |
bool | snapImage (fk_Image *image, fk_SnapProcMode mode=fk_SnapProcMode::FRONT) |
描画画像データ出力関数 | |
影制御関数 | |
void | setShadowMode (fk_ShadowMode mode) |
影表示設定変更関数 | |
fk_ShadowMode | getShadowMode (void) |
影表示設定参照関数 | |
void | setShadowVec (const fk_Vector &v) |
影光線方向設定関数1 | |
void | setShadowVec (double x, double y, double z) |
影光線方向設定関数2 | |
fk_Vector | getShadowVec (void) |
影光線方向取得関数 | |
void | setShadowResolution (int resolution) |
シャドウマップ解像度設定関数 | |
int | getShadowResolution (void) |
シャドウマップ解像度取得関数 | |
void | setShadowAreaSize (double size) |
シャドウマップ領域設定関数 | |
double | getShadowAreaSize (void) |
シャドウマップ領域取得関数 | |
void | setShadowDistance (double distance) |
シャドウマップ領域奥行き幅設定関数 | |
double | getShadowDistance (void) |
シャドウマップ領域奥行き幅取得関数 | |
void | setShadowVisibility (double value) |
影濃度設定関数 | |
double | getShadowVisibility (void) |
影濃度取得関数 | |
void | setShadowBias (double bias) |
影バイアス値設定関数 | |
double | getShadowBias (void) |
影バイアス値取得関数 | |
霧制御関数 | |
void | setFogMode (const fk_FogMode mode) |
霧減衰関数設定関数 | |
void | setFogDensity (const double d) |
霧指数式係数設定関数 | |
void | setFogLinearMap (const double S, const double E) |
霧線形式係数設定関数 | |
void | setFogColor (const fk_Color &col) |
霧色設定関数1 | |
void | setFogColor (float r, float g, float b, float a) |
霧色設定関数2 | |
void | setFogColor (double r, double g, double b, double a) |
霧色設定関数3 | |
fk_FogMode | getFogMode (void) const |
霧減衰関数取得関数 | |
double | getFogDensity (void) const |
霧指数式係数取得関数 | |
double | getFogLinearStart (void) const |
霧線形式係数取得関数1 | |
double | getFogLinearEnd (void) const |
霧線形式係数取得関数1 | |
fk_Color | getFogColor (void) const |
霧霧色取得関数 | |
アプリケーションウィンドウクラス
このクラスは、 3D シーンを表示するウィンドウを簡易に作成する機能を提供します。 シーン・カメラ・ライトを内包しているので、 とりあえず形状を表示させるだけなら、 非常に短いコード量で済みます。 もちろんゲームアプリを完成させることも可能です。 入力に関するユーティリティ機能も含みます。 Fl_Window、 fk_Window 、 fk_Scene を複合したクラスですので、 既存の FK ユーザが利用する場合はその旨を念頭に置いてください。
FK::fk_AppWindow::fk_AppWindow | ( | void | ) |
コンストラクタ
FK::fk_AppWindow::fk_AppWindow | ( | fk_AppWindow & | parent | ) |
子ウィンドウ作成時用コンストラクタ
FK::fk_AppWindow::~fk_AppWindow | ( | void | ) |
デストラクタ
void FK::fk_AppWindow::setWindowName | ( | const std::string & | name | ) |
ウィンドウタイトル設定関数
ウィンドウのタイトルバーに表示する文字列を変更します。 デフォルトは"FK APP Window"です。
[in] | name | タイトル文字列 |
void FK::fk_AppWindow::setSize | ( | int | w, |
int | h | ||
) |
ウィンドウサイズ設定関数
ウィンドウサイズを変更します。単位はピクセルです。 3DCG描画領域も同じサイズに変更します。 デフォルトは512x512です。
[in] | w | ウィンドウ横幅 |
[in] | h | ウィンドウ縦幅 |
void FK::fk_AppWindow::setInnerSize | ( | int | x, |
int | y, | ||
int | w, | ||
int | h | ||
) |
描画領域サイズ設定関数
ウィンドウの内部に持つ3DCGの描画領域の位置とサイズを変更します。 マルチウィンドウを実現する際の調整用関数なので、上級者向けです。
[in] | x | 描画領域左上位置 x 座標 |
[in] | y | 描画領域左上位置 y 座標 |
[in] | w | 描画領域横幅 |
[in] | h | 描画領域縦幅 |
void FK::fk_AppWindow::setBGColor | ( | double | r, |
double | g, | ||
double | b | ||
) |
背景色設定関数1
3DCG描画領域の背景色をRGBの色値ブレンドで指定します。 各成分は0.0~1.0の実数値です。 それ以外の値が与えられた場合、 0 以下なら 0 に、1 以上なら 1 に丸められます。 デフォルトは黒(0, 0, 0)です。
[in] | r | 背景色の赤要素 |
[in] | g | 背景色の緑要素 |
[in] | b | 背景色の青要素 |
void FK::fk_AppWindow::setBGColor | ( | const fk_Color & | color | ) |
void FK::fk_AppWindow::toFullscreen | ( | void | ) |
フルスクリーン化関数
ウィンドウをフルスクリーン化します。 正しく表示するためには、 ウィンドウサイズがモニタ側で対応しているサイズと 一致している必要があります。 すでにフルスクリーン化されている時は何も起きません。 また、アプリ起動中に ALT+ENTER キーでフルスクリーンとウィンドウを切り替えることができます。
void FK::fk_AppWindow::toWindow | ( | void | ) |
ウィンドウ化関数
フルスクリーン化しているウィンドウを元に戻します。 フルスクリーン化されていない時に呼んでも何も起きません。 また、アプリ起動中に ALT+ENTER キーでフルスクリーンとウィンドウを切り替えることができます。
void FK::fk_AppWindow::close | ( | void | ) |
bool FK::fk_AppWindow::update | ( | bool | forceFlag = false | ) |
シーン描画関数
シーン画面を描画し、さらに各種入力デバイスの状態を更新します。 基本的にメインループ内でコールすることになります。 その際、 setFPS() 関数によって設定した FPS の制御状態に基づいて時間調整が入ります。 FPS制御を無視して強制的に描画処理を呼び出したい場合は引数に true を渡します。
[in] | forceFlag | true の場合、FPS制御を無視して強制的に再描画を行います。 false の場合は FPS制御により描画タイミングを制御し、 描画が行われるまでは関数は終了しなくなります。 デフォルトは false です。 |
void FK::fk_AppWindow::setFPS | ( | int | fps | ) |
FPS設定関数
update()をコールした際に調整するFPSを指定します。 FPS(Frame Per Second)とは、1秒間中で画面更新が行われる回数の単位です。 この値を 0 に設定した場合は、FPS制御を行いません。 デフォルトは60です。
[in] | fps | FPS値 |
void FK::fk_AppWindow::showGuide | ( | fk_Guide | mode = fk_Guide::AXIS_X|fk_Guide::AXIS_Y|fk_Guide::AXIS_Z|fk_Guide::GRID_XZ | ) |
グリッド・軸設定関数
画面内の座標系を表すグリッドと軸を指定します。 fk_Guide::AXIS_X, fk_Guide::AXIS_Y, fk_Guide::AXIS_Z がそれぞれの軸を、 fk_Guide::GRID_XZ, fk_Guide::GRID_XY, fk_Guide::GRID_YZ がそれぞれの平面を表すグリッドに対応します。 複数の要素を指定したい場合は | (ビットOR演算子)で区切って指定できます。 fk_Guide::NO_GUIDE で全て非表示にします。 引数を省略した場合は、XYZの各軸とXZ平面のグリッドを表示します。 デフォルトでは全て非表示 (fk_Guide::NO_GUIDE) です。
[in] | mode | 表示するグリッド・軸の指定。複数を表示する場合は、 ビットOR演算を利用して並べて指定できます。 |
void FK::fk_AppWindow::hideGuide | ( | void | ) |
void FK::fk_AppWindow::setGuideScale | ( | double | scale | ) |
グリッド幅設定関数
showGuide()で表示するグリッドや軸の1辺の長さを指定します。 デフォルトは5.0です。
[in] | scale | グリッドの1辺の長さ |
void FK::fk_AppWindow::setGuideNum | ( | int | num | ) |
グリッド数設定関数
showGuide()で表示するグリッドの軸方向あたりの個数を指定します。 デフォルトは20です。
[in] | num | 軸方向あたりのグリッド個数 |
void FK::fk_AppWindow::setCameraPos | ( | double | x, |
double | y, | ||
double | z | ||
) |
カメラ位置設定関数1
現在ウィンドウが制御しているカメラの位置を指定した位置座標に移動します。
[in] | x | カメラ位置のx成分 |
[in] | y | カメラ位置のy成分 |
[in] | z | カメラ位置のz成分 |
void FK::fk_AppWindow::setCameraPos | ( | const fk_Vector & | pos | ) |
カメラ位置設定関数2
現在ウィンドウが制御しているカメラの位置を指定した位置座標に移動します。
[in] | pos | カメラ位置のベクトル |
void FK::fk_AppWindow::setCameraFocus | ( | double | x, |
double | y, | ||
double | z | ||
) |
カメラ注視点設定関数1
現在ウィンドウが制御しているカメラの向きを、 指定した座標に向くよう姿勢変更します。
[in] | x | 注視点位置のx成分 |
[in] | y | 注視点位置のy成分 |
[in] | z | 注視点位置のz成分 |
void FK::fk_AppWindow::setCameraFocus | ( | const fk_Vector & | pos | ) |
カメラ注視点設定関数2
現在ウィンドウが制御しているカメラの向きを、 指定した座標に向くよう姿勢変更します。
[in] | pos | 注視点の位置ベクトル |
void FK::fk_AppWindow::setCameraModel | ( | fk_Model * | model | ) |
カメラモデル設定関数1
ウィンドウに対して、 別のfk_Model(及びその派生クラス)のオブジェクトをカメラとして セットします。 この関数でセットしたモデルを操作すれば、 fk_AppWindowのメンバ関数を介さずカメラ制御が可能です。
[in] | model | カメラモデル(のアドレス) |
void FK::fk_AppWindow::setCameraModel | ( | fk_Model & | model | ) |
カメラモデル設定関数2
ウィンドウに対して、 別のfk_Model(及びその派生クラス)のオブジェクトをカメラとして セットします。 この関数でセットしたモデルを操作すれば、 fk_AppWindowのメンバ関数を介さずカメラ制御が可能です。
[in] | model | カメラモデル |
fk_Model * FK::fk_AppWindow::getCameraModel | ( | void | ) |
カメラモデル取得関数
現在ウィンドウで制御しているカメラモデルオブジェクトの ポインタを取得します。
void FK::fk_AppWindow::setCameraDefault | ( | void | ) |
カメラ初期化関数
ウィンドウが制御するカメラを、 デフォルトで内部に保持している fk_Model のインスタンスに戻します。
void FK::fk_AppWindow::setLightDefault | ( | void | ) |
光源初期化関数
デフォルト光源をシーンに追加します。
void FK::fk_AppWindow::setDefaultLightVec | ( | const fk_Vector & | v | ) |
デフォルト光源方向設定関数1
デフォルト光源の方向を設定します。
[in] | v | 光源の方向ベクトル |
void FK::fk_AppWindow::setDefaultLightVec | ( | double | x, |
double | y, | ||
double | z | ||
) |
デフォルト光源方向設定関数2
デフォルト光源の方向を設定します。
[in] | x | 光源の方向ベクトル x 成分 |
[in] | y | 光源の方向ベクトル y 成分 |
[in] | z | 光源の方向ベクトル z 成分 |
fk_Vector FK::fk_AppWindow::getDefaultLightVec | ( | void | ) |
デフォルト光源方向取得関数
デフォルト光源の方向を取得します。
void FK::fk_AppWindow::setDefaultLightMaterial | ( | const fk_Material & | mat | ) |
デフォルト光源マテリアル設定関数
デフォルト光源のマテリアルを設定します。
[in] | mat | 光源マテリアル |
fk_Material * FK::fk_AppWindow::getDefaultLightMaterial | ( | void | ) |
デフォルト光源マテリアル取得関数
デフォルト光源のマテリアルを取得します。
void FK::fk_AppWindow::setScene | ( | fk_Scene * | scene, |
bool | defCameraAndLight = false |
||
) |
シーン設定関数1
ウィンドウに対して、別の fk_Scene のオブジェクトをセットします。 アプリの画面ごとにモデルを登録した fk_Scene オブジェクトを、 この関数でセットして切り替えることで、 モデルを個別に登録や解除を行う手間が省けます。 ある程度以上の規模を持つアプリを開発する場合は便利です。 第 2 引数に true を設定すると、新たにセットするシーンに対して、 fk_AppWindow 内部のカメラとライトオブジェクトを 引き継いでセットすることができますが、 構造がややこしくなるのでできるだけ自前で用意することを推奨します。 省略した場合と false を設定した場合はシーンの切り替えのみを行います。
[in] | scene | シーンインスタンス(のポインタ) |
[in] | defCameraAndLight | true である場合、 カメラ・光源設定についてシーン設定前のものを用います。 false である場合は第一引数の scene に設定されている情報に切り替えます。 |
void FK::fk_AppWindow::setScene | ( | fk_Scene & | scene, |
bool | defCameraAndLight = false |
||
) |
シーン設定関数2
ウィンドウに対して、別の fk_Scene のオブジェクトをセットします。 アプリの画面ごとにモデルを登録した fk_Scene オブジェクトを、 この関数でセットして切り替えることで、 モデルを個別にエントリー・リムーブする手間が省けます。 ある程度以上の規模を持つアプリを開発する場合は便利です。 第 2 引数に true を設定すると、新たにセットするシーンに対して、 fk_AppWindow 内部のカメラとライトオブジェクトを 引き継いでセットすることができますが、 構造がややこしくなるのでできるだけ自前で用意することを推奨します。 省略した場合と false を設定した場合はシーンの切り替えのみを行います。
[in] | scene | シーンインスタンス |
[in] | defCameraAndLight | true である場合、 カメラ・光源設定についてシーン設定前のものを用います。 false である場合は第一引数の scen に設定されている情報に切り替えます。 |
fk_Scene * FK::fk_AppWindow::getScene | ( | void | ) |
シーン取得関数
現在ウィンドウで制御しているシーンオブジェクトのポインタを取得します。
void FK::fk_AppWindow::setSceneDefault | ( | void | ) |
シーン設定初期化関数
ウィンドウが制御するシーンを、 デフォルトで内部に保持している fk_Scene のインスタンスに戻します。
void FK::fk_AppWindow::entry | ( | fk_Model * | model | ) |
モデル表示登録関数1
ウィンドウに対してモデルを登録し、表示するようにします。 既に登録済みのモデルに対して行った場合、登録順が最後尾となります。
[in] | model | 登録モデル(のポインタ) |
void FK::fk_AppWindow::entry | ( | fk_Model & | model | ) |
モデル表示登録関数2
ウィンドウに対してモデルを登録し、表示するようにします。 既に登録済みのモデルに対して行った場合、登録順が最後尾となります。 半透明物体の描画については、 entry(fk_Model *) の説明を参照して下さい。
[in] | model | 登録モデル |
void FK::fk_AppWindow::entry | ( | fk_Model * | model, |
fk_GuideObject * | guide | ||
) |
座標軸付きモデル表示登録関数1
ウィンドウに対してモデルを登録し、表示するようにします。 既に登録済みのモデルに対して行った場合、登録順が最後尾となります。 半透明物体の描画については、 entry(fk_Model *) の説明を参照して下さい。 登録の際、モデルのローカル座標系に基づく座標軸を同時に登録します。
[in] | model | 登録モデル(のポインタ) |
[in] | guide | 座標軸(のポインタ) |
void FK::fk_AppWindow::entry | ( | fk_Model & | model, |
fk_GuideObject & | guide | ||
) |
座標軸付きモデル表示登録関数2
ウィンドウに対してモデルを登録し、表示するようにします。 既に登録済みのモデルに対して行った場合、登録順が最後尾となります。 半透明物体の描画については、 entry(fk_Model *) の説明を参照して下さい。 登録の際、モデルのローカル座標系に基づく座標軸を同時に登録します。
[in] | model | 登録モデル |
[in] | guide | 座標軸 |
void FK::fk_AppWindow::entry | ( | fk_SpriteModel * | model | ) |
スプライトモデル登録関数1
ウィンドウに対してスプライトモデルを登録し、表示するようにします。
[in] | model | 登録モデル(のポインタ) |
void FK::fk_AppWindow::entry | ( | fk_SpriteModel & | model | ) |
スプライトモデル登録関数2
ウィンドウに対してスプライトモデルを登録し、表示するようにします。
[in] | model | 登録モデル |
void FK::fk_AppWindow::entry | ( | fk_Performer * | chara | ) |
void FK::fk_AppWindow::entry | ( | fk_Performer & | chara | ) |
void FK::fk_AppWindow::remove | ( | fk_Model * | model | ) |
モデル表示解除関数1
ウィンドウからモデルの登録を解除し、表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | model | 登録解除モデル(のポインタ) |
void FK::fk_AppWindow::remove | ( | fk_Model & | model | ) |
モデル表示解除関数2
ウィンドウからモデルの登録を解除し、表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | model | 登録解除モデル |
void FK::fk_AppWindow::remove | ( | fk_Model * | model, |
fk_GuideObject * | guide | ||
) |
座標軸付きモデル表示解除関数1
ウィンドウから、座標軸付きモデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | model | 登録解除モデル(のポインタ) |
[in] | guide | 登録解除座標軸(のポインタ) |
void FK::fk_AppWindow::remove | ( | fk_Model & | model, |
fk_GuideObject & | guide | ||
) |
座標軸付きモデル表示解除関数2
ウィンドウから、座標軸付きモデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | model | 登録解除モデル |
[in] | guide | 登録解除座標軸 |
void FK::fk_AppWindow::remove | ( | fk_SpriteModel * | model | ) |
スプライトモデル表示解除関数1
ウィンドウから、スプライトモデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | model | 登録解除モデル(のポインタ) |
void FK::fk_AppWindow::remove | ( | fk_SpriteModel & | model | ) |
スプライトモデル表示解除関数2
ウィンドウから、スプライトモデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | model | 登録解除モデル |
void FK::fk_AppWindow::remove | ( | fk_Performer * | chara | ) |
fk_Performer モデル表示解除関数1
ウィンドウから、fk_Performer 型モデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | chara | 登録解除モデル(のポインタ) |
void FK::fk_AppWindow::remove | ( | fk_Performer & | chara | ) |
fk_Performer モデル表示解除関数2
ウィンドウから、fk_Performer 型モデルの登録を解除し、 表示されないようにします。 登録していないモデルを指定した場合は何も起きません。
[in] | chara | 登録解除モデル |
void FK::fk_AppWindow::clearModel | ( | bool | defCameraAndLight = false | ) |
全モデル登録解除関数
現在のシーンから全てのモデルの表示登録を解除します。
[in] | defCameraAndLight | ウィンドウ内部で保持しているライトとカメラのモデルを残したい場合は、 true を指定します。 省略あるいは false を渡した場合は、完全なクリアとなります。 |
bool FK::fk_AppWindow::getKeyStatus | ( | char | keyChar, |
fk_Switch | status, | ||
bool | insideFlg = false |
||
) |
通常キー状態取得関数1
通常キーの入力状態を検出します。 引数として、 検出したい文字をシングルクォーテーションで囲って指定します。 'A' や 'X' などとします。 入力できない特殊キーには getSpecialKeyStatus() を使います。
[in] | keyChar | 状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。 |
[in] | status | 取得したい状態を指定します。種類については fk_Switch を参照してください。 |
[in] | insideFlg | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
bool FK::fk_AppWindow::getKeyStatus | ( | char | keyChar, |
bool | insideFlg = false |
||
) |
通常キー状態取得関数2
通常キーの入力状態を検出します。 本関数は、 getKeyStatus(char, fk_Switch, bool) に対し、 第2引数に fk_Switch::PRESS が入っているものとして省略した関数となります。
[in] | keyChar | 状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。 |
[in] | insideFlg | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
bool FK::fk_AppWindow::getSpecialKeyStatus | ( | fk_Key | keyCode, |
fk_Switch | status, | ||
bool | insideFlg = false |
||
) |
特殊キー状態取得関数1
特殊キーの入力状態を検出します。 引数として、検出したいキーに対応した fk_Key 型の値を入力します。 例えば、上矢印キーの状態を取得したい場合には「 fk_Key::UP 」を入力します。 通常キーの状態取得は getKeyStatus() を使います。
[in] | keyCode | 状態を取得したいキーに対応した値。 |
[in] | status | 取得したい状態を指定します。種類については fk_Switch を参照してください。 |
[in] | insideFlg | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
bool FK::fk_AppWindow::getSpecialKeyStatus | ( | fk_Key | keyCode, |
bool | insideFlg = false |
||
) |
特殊キー状態取得関数2
特殊キーの入力状態を検出します。 本関数は、 getSpecialKeyStatus(fk_Key, fk_Switch, bool) に対し、 第2引数に fk_Switch::PRESS が入っているものとして省略した関数となります。
[in] | keyCode | 状態を取得したいキーに対応した値。 |
[in] | insideFlg | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
特殊キー状態取得関数3
getSpecialKeyStatus(fk_Key, fk_Switch, bool) の別名です。 詳細はそちらのマニュアルを参照して下さい。
[in] | key | キーを表す文字。 |
[in] | status | 取得したい状態を指定します。種類については fk_Switch を参照してください。 |
[in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
bool FK::fk_AppWindow::getKeyStatus | ( | fk_Key | key, |
bool | insideFlag = true |
||
) |
特殊キー状態取得関数4
getSpecialKeyStatus(fk_Key, bool) の別名です。 詳細はそちらのマニュアルを参照して下さい。
[in] | key | キーを表す文字。 |
[in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
bool FK::fk_AppWindow::getMouseStatus | ( | fk_MouseButton | buttonCode, |
fk_Switch | status, | ||
bool | insideFlag | ||
) |
マウスボタン状態取得関数
マウスボタンのクリック状態を検出します。 マウスボタンの種類については、 fk_MouseButton の項目を参照して下さい。
[in] | buttonCode | マウスボタンの種類 |
[in] | status | 取得したい状態を指定します。種類については fk_Switch を参照してください。 |
[in] | insideFlag | true だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。 |
fk_Vector FK::fk_AppWindow::getMousePosition | ( | void | ) |
マウスポインタ位置取得関数
マウスのカーソル位置を検出します。 返値として fk_Vector の値を返し、 x 成分と y 成分にそれぞれウィンドウ投影座標系の値が入ります。 ウィンドウの外にはみ出したかどうかは、 値がウィンドウサイズを超過しているか否かで判断できます。
void FK::fk_AppWindow::setCursorState | ( | bool | visible, |
bool | center | ||
) |
マウスカーソル表示制御関数
マウスカーソルの表示・非表示と、 カーソルを画面の中心に移動するか否かを指定します。 初期状態では、マウスカーソルは表示し、中心移動は無効としています。
[in] | visible | true の場合、マウスカーソルを表示します。false の場合は消去します。 |
[in] | center | true の場合、マウスカーソルを画面中心に移動します。 false の場合は何も行いません。 |
void FK::fk_AppWindow::setTrackBallMode | ( | bool | mode | ) |
トラックボールモード制御関数
マウスの右ドラッグとホイール操作で、 カメラを自由に操作できるモードをON(true)/OFF(false)します。 デフォルトはOFF(false)です。
[in] | mode | true であれば有効、false であれば無効とします。 |
void FK::fk_AppWindow::procMouseView | ( | fk_Model * | camera, |
double | spinX, | ||
double | spinY, | ||
bool | lockSW | ||
) |
FPS視点的カメラ制御関数1
FPS 視点のゲーム特有の、マウス移動による視点操作処理を行います。
[in] | camera | カメラモデル。 |
[in] | spinX | 横方向の移動に対する回転角度。 |
[in] | spinY | 縦方向の移動に対する回転角度。 |
[in] | lockSW | true の場合、カーソルの中心を固定します。 false の場合は固定しません。 |
void FK::fk_AppWindow::procMouseView | ( | fk_Model & | camera, |
double | spinX, | ||
double | spinY, | ||
bool | lockSW | ||
) |
FPS視点的カメラ制御関数2
FPS 視点のゲーム特有の、マウス移動による視点操作処理を行います。
[in] | camera | カメラモデル。 |
[in] | spinX | 横方向の移動に対する回転角度。 |
[in] | spinY | 縦方向の移動に対する回転角度。 |
[in] | lockSW | true の場合、カーソルの中心を固定します。 false の場合は固定しません。 |
std::tuple< bool, fk_Vector > FK::fk_AppWindow::getProjectPosition | ( | double | x, |
double | y, | ||
fk_Plane & | plane | ||
) |
投影平面から任意平面への射影点算出関数
この関数は、描画領域上の投影座標から、 任意の平面への射影変換を行い、射影点を求めます。 これは、投影面上の投影座標とカメラを結ぶ直線と、 引数として入力された平面の交点を求めるということと同義です。 投影座標の詳細は fk_Window の概要を参照して下さい。
[in] | x | 投影座標の x 成分 |
[in] | y | 投影座標の y 成分 |
[in] | plane | 射影先の平面。 |
std::tuple< bool, fk_Vector > FK::fk_AppWindow::getProjectPosition | ( | double | x, |
double | y, | ||
double | dist | ||
) |
投影平面から任意距離での射影点算出関数
この関数は、描画領域上の投影座標に対し、 カメラから指定した距離となっている3D空間中の点を算出します。 これは、投影面上の投影座標とカメラを結ぶ直線と、 カメラを中心とし指定距離を半径とする球面の交点を求めることと同義です。 投影座標の詳細は fk_Window の概要を参照して下さい。
[in] | x | 投影座標の x 成分 |
[in] | y | 投影座標の y 成分 |
[in] | dist | カメラからの空間中の距離 |
空間座標から投影座標への射影点算出関数
この関数は、空間座標から投影座標への射影点を算出します。 これは、ある空間中の位置が画面上でどこに表示されるかを知ることと同義です。 投影座標の詳細は fk_Window の概要を参照して下さい。
なお、射影点の z 成分は投影における Near 面上の場合 0、 Far 面上の場合 1 となり、その間は線形補間した値となります。 つまり、カメラに近いほど値が小さくなるということです。
[in] | pos_3D | 空間座標位置ベクトル |
bool FK::fk_AppWindow::snapImage | ( | std::string | fileName, |
fk_ImageType | format = fk_ImageType::BMP , |
||
fk_SnapProcMode | mode = fk_SnapProcMode::FRONT |
||
) |
描画画像ファイル出力関数
この関数は、描画領域に表示されている画像を、画像ファイルとして出力します。
[in] | fileName | 画像ファイル名 |
[in] | format | 画像ファイルのフォーマット。 現在利用可能なフォーマットは、 fk_ImageType の解説を参照して下さい。 |
[in] | mode | 画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。 |
bool FK::fk_AppWindow::snapImage | ( | fk_Image * | image, |
fk_SnapProcMode | mode = fk_SnapProcMode::FRONT |
||
) |
描画画像データ出力関数
この関数は、描画領域に表示されている画像を、 fk_Image 型のインスタンスに出力します。
[in] | image | 画像データ出力先インスタンス |
[in] | mode | 画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。 |
void FK::fk_AppWindow::setShadowMode | ( | fk_ShadowMode | mode | ) |
影表示設定変更関数
影表示の設定を行います。 以下の中から選択できます。
[in] | mode | 影表示モード |
fk_ShadowMode FK::fk_AppWindow::getShadowMode | ( | void | ) |
影表示設定参照関数
影表示設定を参照します。
void FK::fk_AppWindow::setShadowVec | ( | const fk_Vector & | v | ) |
影光線方向設定関数1
影を生成する際の光の方向を設定します。
[in] | v | 光の方向ベクトル |
void FK::fk_AppWindow::setShadowVec | ( | double | x, |
double | y, | ||
double | z | ||
) |
影光線方向設定関数2
影を生成する際の光の方向を設定します。
[in] | x | 光の方向ベクトル x 成分 |
[in] | y | 光の方向ベクトル y 成分 |
[in] | z | 光の方向ベクトル z 成分 |
fk_Vector FK::fk_AppWindow::getShadowVec | ( | void | ) |
影光線方向取得関数
影生成光線の方向を取得します。
void FK::fk_AppWindow::setShadowResolution | ( | int | resolution | ) |
シャドウマップ解像度設定関数
影生成に使用するシャドウマップテクスチャの解像度を指定します。 この解像度は影表示の質と実行速度に大きく影響します。 解像度が高いと影のディザーは目立たなくなりますが、描画速度が低下し、 また実行環境によっては表示に異常をきたすことがあります。 解像度が低い場合は描画速度が向上しますが、 ディザーが発生しやすくなります。
この解像度は 16 以上の 2の累乗数であることが前提となっており、 その条件を満たさない場合は 15 以下の場合は 16、 それ以外の数値の場合はその数値未満の最大の2の累乗数が設定されます。
シャドウマップのディザーを目立たなくするには、 解像度だけでなく処理範囲も重要な要素です。 処理範囲については setShadowAreaSize(), setShadowDistance() を参照して下さい。
[in] | resolution | シャドウマップ解像度 |
int FK::fk_AppWindow::getShadowResolution | ( | void | ) |
void FK::fk_AppWindow::setShadowAreaSize | ( | double | size | ) |
シャドウマップ領域設定関数
影は空間中の直方体領域の内部に生成されますが、 この直方体のうち影光線ベクトルに垂直な辺の長さを設定します。 この値が大きいほど広い領域に対し影を生成しますが、 この値が大きくなるにつれて影の粒度も荒くなります。 シーンの状況に応じて適切な値を設定する必要があります。
[in] | size | 影生成領域の大きさ |
double FK::fk_AppWindow::getShadowAreaSize | ( | void | ) |
void FK::fk_AppWindow::setShadowDistance | ( | double | distance | ) |
シャドウマップ領域奥行き幅設定関数
影は空間中の直方体領域の内部に生成されますが、 この直方体のうち影光線ベクトルに平行な辺の長さを設定します。 この値が大きいほど広い領域に対し影を生成しますが、 一方で大きいほど計算精度が悪くなり、描画の不具合を生じやすくなります。 通常は、 setShadowAreaSize() の設定値と同程度にしておくことが無難です。
[in] | distance | シャドウマップ領域奥行き幅 |
double FK::fk_AppWindow::getShadowDistance | ( | void | ) |
void FK::fk_AppWindow::setShadowVisibility | ( | double | value | ) |
影濃度設定関数
影の濃度を設定します。 この値が大きいほど影となる部分の輝度は低くなる、つまり影自体は濃くなってきます。 最小値は 0, 最大値は 1 で、0 のときは影効果は無効となります。 1 の場合、影となる領域は一切光が当たってない状況の輝度(色)となります。
[in] | value | 影濃度。0 で最小、1 で最大で、大きいほど影が濃くなります。 |
double FK::fk_AppWindow::getShadowVisibility | ( | void | ) |
影濃度取得関数
影の濃度を取得します。
void FK::fk_AppWindow::setShadowBias | ( | double | bias | ) |
影バイアス値設定関数
影バイアス値を設定します。 FK での影生成処理は「シャドウマップ」という手法を用いています。 シャドウマップによる影生成では「シャドウアクネ」というモアレ模様が生じることがあります。 シャドウアクネを防ぐ方法としては、バイアス値を用いて補正を行いますが、 本関数はこのバイアス値を設定するものです。 バイアス値は正の微小値であり、デフォルトでは 0.0005 となっています。 この値が小さいとシャドウアクネが生じやすくなります。 しかし、この値が大きい場合は正常な影が生成できなくなります。 適切な値は様々な要因が関わってくるため、 シャドウアクネが生じた場合は適正な値を試行錯誤する必要があります。
[in] | bias | 影バイアス値 |
double FK::fk_AppWindow::getShadowBias | ( | void | ) |
影バイアス値取得関数
影バイアス値を取得します。
void FK::fk_AppWindow::setFogMode | ( | const fk_FogMode | mode | ) |
霧減衰関数設定関数
霧効果の減衰関数を設定します。設定できる関数の種類は以下のとおりです。 各数式中の \( z \) はカメラからの距離を意味します。
\[ \frac{E-z}{E-S} \]
式中の \( E, S \) は setFogLinearMap() で設定します。\[ e^{-dz} \]
式中の \( d \) は setFogDensity() で設定します。\[ e^{-\left(dz\right)^2} \]
式中の \( d \) は setFogDensity() で設定します。デフォルトでは fk_FogMode::OFF が設定されています。
[in] | mode | 減衰関数を表す値 |
void FK::fk_AppWindow::setFogDensity | ( | const double | d | ) |
void FK::fk_AppWindow::setFogLinearMap | ( | const double | S, |
const double | E | ||
) |
霧線形式係数設定関数
減衰関数として線形式を選択した場合の、 係数 S, E を設定します。 意味的には、霧効果が始まる最低距離が S、 霧によって完全に物体が見えなくなる距離を E とすることになります。 数式の詳細は setFogMode() を参照して下さい。
[in] | S | 霧効果開始距離 |
[in] | E | 霧効果完全距離 |
void FK::fk_AppWindow::setFogColor | ( | const fk_Color & | col | ) |
void FK::fk_AppWindow::setFogColor | ( | float | r, |
float | g, | ||
float | b, | ||
float | a | ||
) |
霧色設定関数2
霧の色を設定します。通常はシーンの背景色と同色とします。 色設定に関しての詳細は fk_Color を参照して下さい。
[in] | r | 霧色のR(赤)要素値 |
[in] | g | 霧色のG(緑)要素値 |
[in] | b | 霧色のB(青)要素値 |
[in] | a | 霧色のA(透過)要素値 |
void FK::fk_AppWindow::setFogColor | ( | double | r, |
double | g, | ||
double | b, | ||
double | a | ||
) |
霧色設定関数3
霧の色を設定します。通常はシーンの背景色と同色とします。 色設定に関しての詳細は fk_Color を参照して下さい。
[in] | r | 霧色のR(赤)要素値 |
[in] | g | 霧色のG(緑)要素値 |
[in] | b | 霧色のB(青)要素値 |
[in] | a | 霧色のA(透過)要素値 |
fk_FogMode FK::fk_AppWindow::getFogMode | ( | void | ) | const |
double FK::fk_AppWindow::getFogDensity | ( | void | ) | const |
double FK::fk_AppWindow::getFogLinearStart | ( | void | ) | const |
double FK::fk_AppWindow::getFogLinearEnd | ( | void | ) | const |
fk_Color FK::fk_AppWindow::getFogColor | ( | void | ) | const |
霧霧色取得関数
現在設定されている霧の色を参照します。