FineKernelToolKit 4.2.13
|
シーンを制御するクラス [詳解]
#include <CLI/FK_CLI/include/Scene_CLI.h>
公開メンバ関数 | |
fk_Scene () | |
コンストラクタ | |
~fk_Scene () | |
デストラクタ | |
!fk_Scene () | |
ファイナライザ | |
![]() | |
void | ClearDisplay (void) |
初期化メソッド | |
void | ClearStereo (void) |
立体視用設定情報初期化メソッド | |
void | EntryModel (fk_Model ^ model) |
通常モデル登録メソッド | |
void | RemoveModel (fk_Model ^ model) |
通常モデル解除メソッド | |
void | ClearModel (void) |
通常モデル全解除メソッド | |
void | EntryOverlayModel (fk_Model ^ model) |
オーバーレイモデル登録メソッド | |
void | RemoveOverlayModel (fk_Model^ model) |
オーバーレイモデル解除メソッド | |
void | ClearOverlayModel (void) |
オーバーレイモデル全解除メソッド | |
プロパティ | |
fk_Color^ | BGColor [get, set] |
背景色プロパティ | |
bool | BlendStatus [get, 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] |
霧色プロパティ | |
![]() | |
fk_Model^ | Camera [get, set] |
カメラモデルプロパティ | |
fk_Model^ | LeftCamera [get, set] |
立体視用左眼カメラプロパティ | |
fk_Model^ | RightCamera [get, set] |
立体視用右眼カメラプロパティ | |
fk_ProjectBase^ | Projection [get, set] |
投影設定プロパティ | |
fk_ProjectBase^ | LeftProjection [get, set] |
立体視用左眼投影プロパティ | |
fk_ProjectBase^ | RightProjection [get, set] |
立体視用右眼投影プロパティ | |
bool | StereoOverlayMode [get, set] |
立体視モード時のオーバーレイ描画モードプロパティ | |
シーンを制御するクラス
このクラスは、シーンを制御するための機能を提供します。
シーンは、複数のモデルとカメラからなる「場面」を意味します。 利用者は、シーンに描画を想定した複数のモデルとカメラを示すモデルを登録します。 このシーンを fk_AppWindow クラス等によるウィンドウに設定することによって、 そのシーンに登録されたモデル群が実際に描画される仕組みになっています。
シーンは、別々のインスタンスとして複数存在することが可能です。 異なるシーンを同時に生成しておき、 実際にウィンドウに描画するシーンを動的に切り替えることができます。 任意のモデルは、複数のシーンに同時に登録することができます。
シーンにモデルを登録するための機能は、 実質的には fk_DisplayLink クラスに集約されています。 fk_Scene クラスは fk_DisplayLink クラスの派生クラスとなっており、 fk_DisplayLink クラスのメソッドを利用することが可能です。 モデル登録についての機能は、 fk_DisplayLink クラスの説明を参照して下さい。
シーンは、通常のモデルとは別に霧に関する設定も可能です。 霧に関する機能は、 fk_Fog クラスに集約されており、 fk_Scene クラスは fk_Fog クラスの派生クラスとなっています。 霧についての機能は、 fk_Fog クラスの説明を参照して下さい。
本クラス固有のプロパティは、背景色設定に関する機能と、 透過処理に関するものとなっています
FK_CLI::fk_Scene::fk_Scene | ( | ) |
コンストラクタ
FK_CLI::fk_Scene::~fk_Scene | ( | ) |
デストラクタ
FK_CLI::fk_Scene::!fk_Scene | ( | ) |
ファイナライザ
|
getset |
背景色プロパティ
シーンの背景色を設定します。
|
getset |
透過処理プロパティ
シーンに対し、透過処理を有効とするかどうかの参照・設定を行います。 true であれば有効、false であれば無効とします。
有効にした場合、シーン全体で透過処理がなされますが、 無効な場合と比較して描画速度が遅くなります。 これは、実際に透過する物体があるかどうかに関わらず、 速度が遅くなるということに注意して下さい。 デフォルトでは透過処理設定は無効となっています。
|
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 となっています。 この値が小さいとシャドウアクネが生じやすくなります。 しかし、この値が大きい場合は正常な影が生成できなくなります。 適切な値は様々な要因が関わってくるため、 シャドウアクネが生じた場合は適正な値を試行錯誤する必要があります。