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

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

#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_ModelgetCameraModel (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_MaterialgetDefaultLightMaterial (void)
 デフォルト光源マテリアル取得関数
 
シーン制御関数
void setScene (fk_Scene *scene, bool defCameraAndLight=false)
 シーン設定関数1
 
void setScene (fk_Scene &scene, bool defCameraAndLight=false)
 シーン設定関数2
 
fk_ScenegetScene (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_VectorgetProjectPosition (double x, double y, fk_Plane &plane)
 投影平面から任意平面への射影点算出関数
 
std::tuple< bool, fk_VectorgetProjectPosition (double x, double y, double dist)
 投影平面から任意距離での射影点算出関数
 
std::tuple< bool, fk_VectorgetWindowPosition (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_Windowfk_Scene を複合したクラスですので、 既存の FK ユーザが利用する場合はその旨を念頭に置いてください。

構築子と解体子

◆ fk_AppWindow() [1/2]

FK::fk_AppWindow::fk_AppWindow ( void  )

コンストラクタ

◆ fk_AppWindow() [2/2]

FK::fk_AppWindow::fk_AppWindow ( fk_AppWindow parent)

子ウィンドウ作成時用コンストラクタ

◆ ~fk_AppWindow()

FK::fk_AppWindow::~fk_AppWindow ( void  )

デストラクタ

関数詳解

◆ setWindowName()

void FK::fk_AppWindow::setWindowName ( const std::string &  name)

ウィンドウタイトル設定関数

ウィンドウのタイトルバーに表示する文字列を変更します。 デフォルトは"FK APP Window"です。

引数
[in]nameタイトル文字列

◆ setSize()

void FK::fk_AppWindow::setSize ( int  w,
int  h 
)

ウィンドウサイズ設定関数

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

引数
[in]wウィンドウ横幅
[in]hウィンドウ縦幅

◆ setInnerSize()

void FK::fk_AppWindow::setInnerSize ( int  x,
int  y,
int  w,
int  h 
)

描画領域サイズ設定関数

ウィンドウの内部に持つ3DCGの描画領域の位置とサイズを変更します。 マルチウィンドウを実現する際の調整用関数なので、上級者向けです。

引数
[in]x描画領域左上位置 x 座標
[in]y描画領域左上位置 y 座標
[in]w描画領域横幅
[in]h描画領域縦幅

◆ setBGColor() [1/2]

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背景色の青要素
参照
setBGColor(const fk_Color &)

◆ setBGColor() [2/2]

void FK::fk_AppWindow::setBGColor ( const fk_Color color)

背景色設定関数2

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

引数
[in]color背景色
参照
setBGColor(double, double, double), fk_Color

◆ toFullscreen()

void FK::fk_AppWindow::toFullscreen ( void  )

フルスクリーン化関数

ウィンドウをフルスクリーン化します。 正しく表示するためには、 ウィンドウサイズがモニタ側で対応しているサイズと 一致している必要があります。 すでにフルスクリーン化されている時は何も起きません。 また、アプリ起動中に ALT+ENTER キーでフルスクリーンとウィンドウを切り替えることができます。

覚え書き
この関数は Windows 環境のみ対応しています。
参照
toWindow()

◆ toWindow()

void FK::fk_AppWindow::toWindow ( void  )

ウィンドウ化関数

フルスクリーン化しているウィンドウを元に戻します。 フルスクリーン化されていない時に呼んでも何も起きません。 また、アプリ起動中に ALT+ENTER キーでフルスクリーンとウィンドウを切り替えることができます。

覚え書き
この関数は Windows 環境のみ対応しています。
参照
toFullscreen()

◆ open()

void FK::fk_AppWindow::open ( void  )

ウィンドウ生成関数

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

参照
close(), update()

◆ close()

void FK::fk_AppWindow::close ( void  )

ウィンドウ破棄関数

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

参照
open(), update()

◆ update()

bool FK::fk_AppWindow::update ( bool  forceFlag = false)

シーン描画関数

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

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

◆ setFPS()

void FK::fk_AppWindow::setFPS ( int  fps)

FPS設定関数

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

引数
[in]fpsFPS値

◆ showGuide()

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演算を利用して並べて指定できます。
参照
hideGuide(), setGuideScale(), setGuideNum(), fk_GuideMode

◆ hideGuide()

void FK::fk_AppWindow::hideGuide ( void  )

グリッド・軸消去関数

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

参照
showGuide()

◆ setGuideScale()

void FK::fk_AppWindow::setGuideScale ( double  scale)

グリッド幅設定関数

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

引数
[in]scaleグリッドの1辺の長さ
参照
showGuide(), setGuideGridWidth(), setGuideNum()

◆ setGuideNum()

void FK::fk_AppWindow::setGuideNum ( int  num)

グリッド数設定関数

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

引数
[in]num軸方向あたりのグリッド個数
参照
showGuide(), setGuideGridWidth(), setGuideScale()

◆ setCameraPos() [1/2]

void FK::fk_AppWindow::setCameraPos ( double  x,
double  y,
double  z 
)

カメラ位置設定関数1

現在ウィンドウが制御しているカメラの位置を指定した位置座標に移動します。

引数
[in]xカメラ位置のx成分
[in]yカメラ位置のy成分
[in]zカメラ位置のz成分

◆ setCameraPos() [2/2]

void FK::fk_AppWindow::setCameraPos ( const fk_Vector pos)

カメラ位置設定関数2

現在ウィンドウが制御しているカメラの位置を指定した位置座標に移動します。

引数
[in]posカメラ位置のベクトル

◆ setCameraFocus() [1/2]

void FK::fk_AppWindow::setCameraFocus ( double  x,
double  y,
double  z 
)

カメラ注視点設定関数1

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

引数
[in]x注視点位置のx成分
[in]y注視点位置のy成分
[in]z注視点位置のz成分

◆ setCameraFocus() [2/2]

void FK::fk_AppWindow::setCameraFocus ( const fk_Vector pos)

カメラ注視点設定関数2

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

引数
[in]pos注視点の位置ベクトル

◆ setCameraModel() [1/2]

void FK::fk_AppWindow::setCameraModel ( fk_Model model)

カメラモデル設定関数1

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

引数
[in]modelカメラモデル(のアドレス)

◆ setCameraModel() [2/2]

void FK::fk_AppWindow::setCameraModel ( fk_Model model)

カメラモデル設定関数2

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

引数
[in]modelカメラモデル

◆ getCameraModel()

fk_Model * FK::fk_AppWindow::getCameraModel ( void  )

カメラモデル取得関数

現在ウィンドウで制御しているカメラモデルオブジェクトの ポインタを取得します。

戻り値
カメラモデルのポインタ
参照
setCameraModel(fk_Model *), setCameraModel(fk_Model &), fk_Model

◆ setCameraDefault()

void FK::fk_AppWindow::setCameraDefault ( void  )

カメラ初期化関数

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

参照
setCameraModel(fk_Model *), setCameraModel(fk_Model &), getCameraModel()

◆ setLightDefault()

void FK::fk_AppWindow::setLightDefault ( void  )

光源初期化関数

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

◆ setDefaultLightVec() [1/2]

void FK::fk_AppWindow::setDefaultLightVec ( const fk_Vector v)

デフォルト光源方向設定関数1

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

引数
[in]v光源の方向ベクトル

◆ setDefaultLightVec() [2/2]

void FK::fk_AppWindow::setDefaultLightVec ( double  x,
double  y,
double  z 
)

デフォルト光源方向設定関数2

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

引数
[in]x光源の方向ベクトル x 成分
[in]y光源の方向ベクトル y 成分
[in]z光源の方向ベクトル z 成分

◆ getDefaultLightVec()

fk_Vector FK::fk_AppWindow::getDefaultLightVec ( void  )

デフォルト光源方向取得関数

デフォルト光源の方向を取得します。

戻り値
デフォルト光源方向ベクトル

◆ setDefaultLightMaterial()

void FK::fk_AppWindow::setDefaultLightMaterial ( const fk_Material mat)

デフォルト光源マテリアル設定関数

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

引数
[in]mat光源マテリアル

◆ getDefaultLightMaterial()

fk_Material * FK::fk_AppWindow::getDefaultLightMaterial ( void  )

デフォルト光源マテリアル取得関数

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

戻り値
光源マテリアル

◆ setScene() [1/2]

void FK::fk_AppWindow::setScene ( fk_Scene scene,
bool  defCameraAndLight = false 
)

シーン設定関数1

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

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

◆ setScene() [2/2]

void FK::fk_AppWindow::setScene ( fk_Scene scene,
bool  defCameraAndLight = false 
)

シーン設定関数2

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

引数
[in]sceneシーンインスタンス
[in]defCameraAndLighttrue である場合、 カメラ・光源設定についてシーン設定前のものを用います。 false である場合は第一引数の scen に設定されている情報に切り替えます。
参照
getScene(), setSceneDefault(), fk_Scene

◆ getScene()

fk_Scene * FK::fk_AppWindow::getScene ( void  )

シーン取得関数

現在ウィンドウで制御しているシーンオブジェクトのポインタを取得します。

戻り値
現在設定されているシーンのポインタ
参照
setScene(fk_Scene *, bool), setScene(fk_Scene &, bool), setSceneDefault(), fk_Scene

◆ setSceneDefault()

void FK::fk_AppWindow::setSceneDefault ( void  )

シーン設定初期化関数

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

参照
setScene(fk_Scene *, bool), setScene(fk_Scene &, bool), getScene(), fk_Scene

◆ entry() [1/8]

void FK::fk_AppWindow::entry ( fk_Model model)

モデル表示登録関数1

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

覚え書き
FKでは、半透明な物体AとBがあり、 配置関係で「Aが前、Bが後」となっていた場合、 登録順が B, A の順番であれば適切に描画されますが、 A, B の登録順となっていた場合には A が半透明であっても B が透けて見えなくなります。 このような場合、「前に配置される物体ほど後に登録する」 ように登録することで半透明描画が適切となります。
引数
[in]model登録モデル(のポインタ)
参照
entry(fk_Model &), remove(fk_Model *), clearModel()

◆ entry() [2/8]

void FK::fk_AppWindow::entry ( fk_Model model)

モデル表示登録関数2

ウィンドウに対してモデルを登録し、表示するようにします。 既に登録済みのモデルに対して行った場合、登録順が最後尾となります。 半透明物体の描画については、 entry(fk_Model *) の説明を参照して下さい。

引数
[in]model登録モデル
参照
entry(fk_Model *), remove(fk_Model &), clearModel()

◆ entry() [3/8]

void FK::fk_AppWindow::entry ( fk_Model model,
fk_GuideObject guide 
)

座標軸付きモデル表示登録関数1

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

引数
[in]model登録モデル(のポインタ)
[in]guide座標軸(のポインタ)
参照
entry(fk_Model &, fk_GuideObject &), remove(fk_Model *, fk_GuideObject *), clearModel()

◆ entry() [4/8]

void FK::fk_AppWindow::entry ( fk_Model model,
fk_GuideObject guide 
)

座標軸付きモデル表示登録関数2

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

引数
[in]model登録モデル
[in]guide座標軸
参照
entry(fk_Model *, fk_GuideObject *), remove(fk_Model &, fk_GuideObject &), clearModel()

◆ entry() [5/8]

void FK::fk_AppWindow::entry ( fk_SpriteModel model)

スプライトモデル登録関数1

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

引数
[in]model登録モデル(のポインタ)
参照
entry(fk_SpriteModel &), remove(fk_SpriteModel *), clearModel(), fk_SpriteModel

◆ entry() [6/8]

void FK::fk_AppWindow::entry ( fk_SpriteModel model)

スプライトモデル登録関数2

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

引数
[in]model登録モデル
参照
entry(fk_SpriteModel *), remove(fk_SpriteModel &), clearModel(), fk_SpriteModel

◆ entry() [7/8]

void FK::fk_AppWindow::entry ( fk_Performer chara)

fk_Performer モデル登録関数1

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

引数
[in]chara登録モデル(のポインタ)
参照
entry(fk_Performer &), remove(fk_Performer *), clearModel(), fk_Performer

◆ entry() [8/8]

void FK::fk_AppWindow::entry ( fk_Performer chara)

fk_Performer モデル登録関数2

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

引数
[in]chara登録モデル
参照
entry(fk_Performer *), remove(fk_Performer &), clearModel(), fk_Performer

◆ remove() [1/8]

void FK::fk_AppWindow::remove ( fk_Model model)

モデル表示解除関数1

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

引数
[in]model登録解除モデル(のポインタ)
参照
remove(fk_Model &), entry(fk_Model *), clearModel()

◆ remove() [2/8]

void FK::fk_AppWindow::remove ( fk_Model model)

モデル表示解除関数2

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

引数
[in]model登録解除モデル
参照
remove(fk_Model *), entry(fk_Model &), clearModel()

◆ remove() [3/8]

void FK::fk_AppWindow::remove ( fk_Model model,
fk_GuideObject guide 
)

座標軸付きモデル表示解除関数1

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

引数
[in]model登録解除モデル(のポインタ)
[in]guide登録解除座標軸(のポインタ)
参照
remove(fk_Model &, fk_GuideObject &), entry(fk_Model *, fk_GuideObject *), clearModel()

◆ remove() [4/8]

void FK::fk_AppWindow::remove ( fk_Model model,
fk_GuideObject guide 
)

座標軸付きモデル表示解除関数2

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

引数
[in]model登録解除モデル
[in]guide登録解除座標軸
参照
remove(fk_Model *, fk_GuideObject *), entry(fk_Model &, fk_GuideObject &), clearModel()

◆ remove() [5/8]

void FK::fk_AppWindow::remove ( fk_SpriteModel model)

スプライトモデル表示解除関数1

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

引数
[in]model登録解除モデル(のポインタ)
参照
remove(fk_SpriteModel &), entry(fk_SpriteModel *), clearModel()

◆ remove() [6/8]

void FK::fk_AppWindow::remove ( fk_SpriteModel model)

スプライトモデル表示解除関数2

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

引数
[in]model登録解除モデル
参照
remove(fk_SpriteModel *), entry(fk_SpriteModel &), clearModel()

◆ remove() [7/8]

void FK::fk_AppWindow::remove ( fk_Performer chara)

fk_Performer モデル表示解除関数1

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

引数
[in]chara登録解除モデル(のポインタ)
参照
remove(fk_Performer &), entry(fk_Performer *), clearModel()

◆ remove() [8/8]

void FK::fk_AppWindow::remove ( fk_Performer chara)

fk_Performer モデル表示解除関数2

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

引数
[in]chara登録解除モデル
参照
remove(fk_Performer *), entry(fk_Performer &), clearModel()

◆ clearModel()

void FK::fk_AppWindow::clearModel ( bool  defCameraAndLight = false)

全モデル登録解除関数

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

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

◆ getKeyStatus() [1/4]

bool FK::fk_AppWindow::getKeyStatus ( char  keyChar,
fk_Switch  status,
bool  insideFlg = false 
)

通常キー状態取得関数1

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

引数
[in]keyChar状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。
[in]status取得したい状態を指定します。種類については fk_Switch を参照してください。
[in]insideFlgtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
参照
getKeyStatus(char, bool), getSpecialKeyStatus(fk_Key, fk_Switch, bool), update()

◆ getKeyStatus() [2/4]

bool FK::fk_AppWindow::getKeyStatus ( char  keyChar,
bool  insideFlg = false 
)

通常キー状態取得関数2

通常キーの入力状態を検出します。 本関数は、 getKeyStatus(char, fk_Switch, bool) に対し、 第2引数に fk_Switch::PRESS が入っているものとして省略した関数となります。

引数
[in]keyChar状態を取得したいキー文字。大文字や数字、各種記号キーを設定します。 スペースキーの状態を取得したい場合は「' '」と入力します。
[in]insideFlgtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
キーが押されていれば true を、 そうでなければ false を返します。
参照
getSpecialKeyStatus(), update()

◆ getSpecialKeyStatus() [1/2]

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]insideFlgtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。
覚え書き
スペースキーの状態取得は、本関数ではなく getKeyStatus() を用います。
参照
getSpecialKeyStatus(fk_Key, bool), getKeyStatus(char, fk_Switch, bool), update()

◆ getSpecialKeyStatus() [2/2]

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]insideFlgtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
キーが押されていれば true を、 そうでなければ false を返します。
覚え書き
スペースキーの状態取得は、本関数ではなく getKeyStatus() を用います。
参照
getSpecialKeyStatus(fk_Key, fk_Switch, bool), getKeyStatus(char, fk_Switch, bool), update()

◆ getKeyStatus() [3/4]

bool FK::fk_AppWindow::getKeyStatus ( fk_Key  key,
fk_Switch  status,
bool  insideFlag = true 
)

特殊キー状態取得関数3

getSpecialKeyStatus(fk_Key, fk_Switch, bool) の別名です。 詳細はそちらのマニュアルを参照して下さい。

引数
[in]keyキーを表す文字。
[in]status取得したい状態を指定します。種類については fk_Switch を参照してください。
[in]insideFlagtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
キーが status で指定した状態を満たしていれば true を、 そうでなければ false を返します。

◆ getKeyStatus() [4/4]

bool FK::fk_AppWindow::getKeyStatus ( fk_Key  key,
bool  insideFlag = true 
)

特殊キー状態取得関数4

getSpecialKeyStatus(fk_Key, bool) の別名です。 詳細はそちらのマニュアルを参照して下さい。

引数
[in]keyキーを表す文字。
[in]insideFlagtrue だった場合、 マウスポインタが描画領域の外にあった場合は無条件に false を返します。 false だった場合は、マウスポインタの位置に関わらず押下状態を返します。
戻り値
キーが押されていれば true を、 そうでなければ false を返します。

◆ getMouseStatus()

bool FK::fk_AppWindow::getMouseStatus ( fk_MouseButton  buttonCode,
fk_Switch  status,
bool  insideFlag 
)

マウスボタン状態取得関数

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

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

◆ getMousePosition()

fk_Vector FK::fk_AppWindow::getMousePosition ( void  )

マウスポインタ位置取得関数

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

戻り値
マウスポインタの位置座標
参照
getMouseStatus(), fk_Window::getMousePosition()

◆ setCursorState()

void FK::fk_AppWindow::setCursorState ( bool  visible,
bool  center 
)

マウスカーソル表示制御関数

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

引数
[in]visibletrue の場合、マウスカーソルを表示します。false の場合は消去します。
[in]centertrue の場合、マウスカーソルを画面中心に移動します。 false の場合は何も行いません。
覚え書き
この関数は Windows 環境のみ対応しています。

◆ setTrackBallMode()

void FK::fk_AppWindow::setTrackBallMode ( bool  mode)

トラックボールモード制御関数

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

引数
[in]modetrue であれば有効、false であれば無効とします。

◆ procMouseView() [1/2]

void FK::fk_AppWindow::procMouseView ( fk_Model camera,
double  spinX,
double  spinY,
bool  lockSW 
)

FPS視点的カメラ制御関数1

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

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

◆ procMouseView() [2/2]

void FK::fk_AppWindow::procMouseView ( fk_Model camera,
double  spinX,
double  spinY,
bool  lockSW 
)

FPS視点的カメラ制御関数2

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

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

◆ getProjectPosition() [1/2]

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射影先の平面。
戻り値
第1要素は、算出に成功すれば true が、失敗すれば false が入ります。 第2要素は算出した点の位置ベクトルが入ります。 失敗した場合の第2要素の値は未定義です。
参照
getProjectPosition(double, double, double), getWindowPosition(), fk_Plane

◆ getProjectPosition() [2/2]

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カメラからの空間中の距離
戻り値
第1要素は、算出に成功すれば true が、失敗すれば false が入ります。 第2要素は算出した点の位置ベクトルが入ります。 失敗した場合の第2要素の値は未定義です。

◆ getWindowPosition()

std::tuple< bool, fk_Vector > FK::fk_AppWindow::getWindowPosition ( fk_Vector pos_3D)

空間座標から投影座標への射影点算出関数

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

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

引数
[in]pos_3D空間座標位置ベクトル
戻り値
第1要素は、算出に成功すれば true が、失敗すれば false が入ります。 第2要素は算出した射影点の位置ベクトルが入ります。 失敗した場合の第2要素の値は未定義です。
参照
getProjectPosition(double, double, fk_Plane &), getProjectPosition(double, double, double), fk_Perspective, fk_Ortho, fk_Frustum

◆ snapImage() [1/2]

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画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。
戻り値
出力に成功すれば true を、失敗すれば false を返します。

◆ snapImage() [2/2]

bool FK::fk_AppWindow::snapImage ( fk_Image image,
fk_SnapProcMode  mode = fk_SnapProcMode::FRONT 
)

描画画像データ出力関数

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

引数
[in]image画像データ出力先インスタンス
[in]mode画像の取込先となるグラフィックスデバイス名。 取り込みがうまく動作しない場合は、 この引数の値を変更してください。
戻り値
出力に成功すれば true を、失敗すれば false を返します。

◆ setShadowMode()

void FK::fk_AppWindow::setShadowMode ( fk_ShadowMode  mode)

影表示設定変更関数

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

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

◆ getShadowMode()

fk_ShadowMode FK::fk_AppWindow::getShadowMode ( void  )

影表示設定参照関数

影表示設定を参照します。

戻り値
影表示モード

◆ setShadowVec() [1/2]

void FK::fk_AppWindow::setShadowVec ( const fk_Vector v)

影光線方向設定関数1

影を生成する際の光の方向を設定します。

引数
[in]v光の方向ベクトル

◆ setShadowVec() [2/2]

void FK::fk_AppWindow::setShadowVec ( double  x,
double  y,
double  z 
)

影光線方向設定関数2

影を生成する際の光の方向を設定します。

引数
[in]x光の方向ベクトル x 成分
[in]y光の方向ベクトル y 成分
[in]z光の方向ベクトル z 成分

◆ getShadowVec()

fk_Vector FK::fk_AppWindow::getShadowVec ( void  )

影光線方向取得関数

影生成光線の方向を取得します。

戻り値
光の方向ベクトル

◆ setShadowResolution()

void FK::fk_AppWindow::setShadowResolution ( int  resolution)

シャドウマップ解像度設定関数

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

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

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

引数
[in]resolutionシャドウマップ解像度
参照
setShadowMode(), setShadowVec(), setShadowAreaSize(), setShadowDistance()

◆ getShadowResolution()

int FK::fk_AppWindow::getShadowResolution ( void  )

シャドウマップ解像度取得関数

シャドウマップの解像度を取得します。

戻り値
解像度
参照
setShadowResolution()

◆ setShadowAreaSize()

void FK::fk_AppWindow::setShadowAreaSize ( double  size)

シャドウマップ領域設定関数

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

引数
[in]size影生成領域の大きさ
参照
setShadowVec(), setShadowResolution(), setshadowDistance()

◆ getShadowAreaSize()

double FK::fk_AppWindow::getShadowAreaSize ( void  )

シャドウマップ領域取得関数

影生成直方体領域の大きさを取得します。

戻り値
影生成領域の大きさ
参照
setShadowAreaSize()

◆ setShadowDistance()

void FK::fk_AppWindow::setShadowDistance ( double  distance)

シャドウマップ領域奥行き幅設定関数

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

引数
[in]distanceシャドウマップ領域奥行き幅
参照
setShadowVec(), setShadowResolution(), setShadowAreaSize()

◆ getShadowDistance()

double FK::fk_AppWindow::getShadowDistance ( void  )

シャドウマップ領域奥行き幅取得関数

影性生直方体領域の奥行き方向(影光線ベクトルに平行な方向)の幅を取得します。

戻り値
領域奥行き幅
参照
setShadowDistance()

◆ setShadowVisibility()

void FK::fk_AppWindow::setShadowVisibility ( double  value)

影濃度設定関数

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

引数
[in]value影濃度。0 で最小、1 で最大で、大きいほど影が濃くなります。

◆ getShadowVisibility()

double FK::fk_AppWindow::getShadowVisibility ( void  )

影濃度取得関数

影の濃度を取得します。

戻り値
影濃度

◆ setShadowBias()

void FK::fk_AppWindow::setShadowBias ( double  bias)

影バイアス値設定関数

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

引数
[in]bias影バイアス値

◆ getShadowBias()

double FK::fk_AppWindow::getShadowBias ( void  )

影バイアス値取得関数

影バイアス値を取得します。

戻り値
影バイアス値

◆ setFogMode()

void FK::fk_AppWindow::setFogMode ( const fk_FogMode  mode)

霧減衰関数設定関数

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

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

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

    式中の \( E, S \) は setFogLinearMap() で設定します。
  • fk_FogMode::EXP
    減衰関数として指数式を設定します。具体的には以下の数式を用います。

    \[ e^{-dz} \]

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

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

    式中の \( d \) は setFogDensity() で設定します。
  • fk_FogMode::OFF
    この値を設定した場合、霧効果を無効にします。

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

引数
[in]mode減衰関数を表す値

◆ setFogDensity()

void FK::fk_AppWindow::setFogDensity ( const double  d)

霧指数式係数設定関数

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

引数
[in]d指数部係数

◆ setFogLinearMap()

void FK::fk_AppWindow::setFogLinearMap ( const double  S,
const double  E 
)

霧線形式係数設定関数

減衰関数として線形式を選択した場合の、 係数 S, E を設定します。 意味的には、霧効果が始まる最低距離が S、 霧によって完全に物体が見えなくなる距離を E とすることになります。 数式の詳細は setFogMode() を参照して下さい。

引数
[in]S霧効果開始距離
[in]E霧効果完全距離

◆ setFogColor() [1/3]

void FK::fk_AppWindow::setFogColor ( const fk_Color col)

霧色設定関数1

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

引数
[in]col霧色
参照
fk_Scene::setBGColor()

◆ setFogColor() [2/3]

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(透過)要素値
参照
fk_Scene::setBGColor()

◆ setFogColor() [3/3]

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_Scene::setBGColor()

◆ getFogMode()

fk_FogMode FK::fk_AppWindow::getFogMode ( void  ) const

霧減衰関数取得関数

霧効果の減衰関数として何が選択されているのかを取得します。 関数の種類および詳細は setFogMode() を参照して下さい。

戻り値
減衰関数を表す値

◆ getFogDensity()

double FK::fk_AppWindow::getFogDensity ( void  ) const

霧指数式係数取得関数

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

戻り値
指数部係数

◆ getFogLinearStart()

double FK::fk_AppWindow::getFogLinearStart ( void  ) const

霧線形式係数取得関数1

減衰関数として線形式を選択した場合の、 係数 S を参照します。 数式の詳細は setFogMode() を参照して下さい。

戻り値
霧効果開始距離

◆ getFogLinearEnd()

double FK::fk_AppWindow::getFogLinearEnd ( void  ) const

霧線形式係数取得関数1

減衰関数として線形式を選択した場合の、 係数 E を参照します。 数式の詳細は setFogMode() を参照して下さい。

戻り値
霧効果完全距離

◆ getFogColor()

fk_Color FK::fk_AppWindow::getFogColor ( void  ) const

霧霧色取得関数

現在設定されている霧の色を参照します。

戻り値
霧色