FineKernelToolKit: FK_CLI::fk_Scene クラス

FineKernelToolKit 4.3.0

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

シーンを制御するクラス [詳解]

`#include <CLI/FK_CLI/include/Scene_CLI.h>`

FK_CLI::fk_Scene の継承関係図
[凡例]
FK_CLI::fk_Scene 連携図
[凡例]

## 公開メンバ関数

| fk_Scene ()
| コンストラクタ
| ~fk_Scene ()
| デストラクタ
| !fk_Scene ()
| ファイナライザ
基底クラス FK_CLI::fk_DisplayLink に属する継承公開メンバ関数
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_CLI::fk_Fog に属する継承プロパティ
fk_FogMode | FogMode`[get, set]`
| 減衰関数プロパティ
double | FogDensity`[get, set]`
| 指数式係数プロパティ
double | FogLinearStart`[get, set]`
| 線形式係数開始距離プロパティ
double | FogLinearEnd`[get, set]`
| 線形式係数完全距離プロパティ
fk_Color^ | FogColor`[get, set]`
| 霧色プロパティ
基底クラス FK_CLI::fk_DisplayLink に属する継承プロパティ
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_DisplayLink, fk_Fog, fk_AppWindow

## 構築子と解体子

## ◆ fk_Scene()

FK_CLI::fk_Scene::fk_Scene | ( |  | ) |

コンストラクタ

## ◆ ~fk_Scene()

FK_CLI::fk_Scene::~fk_Scene | ( |  | ) |

デストラクタ

## ◆ !fk_Scene()

FK_CLI::fk_Scene::!fk_Scene | ( |  | ) |

ファイナライザ

## プロパティ詳解

## ◆ BGColor

fk_Color^ FK_CLI::fk_Scene::BGColor

getset

背景色プロパティ

シーンの背景色を設定します。

## ◆ BlendStatus

bool FK_CLI::fk_Scene::BlendStatus

getset

透過処理プロパティ

シーンに対し、透過処理を有効とするかどうかの参照・設定を行います。 true であれば有効、false であれば無効とします。

有効にした場合、シーン全体で透過処理がなされますが、 無効な場合と比較して描画速度が遅くなります。 これは、実際に透過する物体があるかどうかに関わらず、 速度が遅くなるということに注意して下さい。 デフォルトでは透過処理設定は無効となっています。

覚え書き
  実行するハードウェアによっては、 シーンに登録した順番によって適切な透過処理がなされないことがあります。 カメラからみて手前側にある形状が透明(あるいは半透明)であり、 奥側にある形状が透けて見える状況を想定したとします。 このとき、手前側のモデルの方がシーンの登録順が先であった場合、 透けて見えるはずの奥側の形状が表示されないという現象が起こることがあります。 この場合、シーンの登録順を変更すれば奥側の形状が透けて見えるようになりますが、 カメラとの位置関係を常に監視し、 登録順を変動させなければならないという問題が生じます。

参照
  fk_Material::Alpha

## ◆ ShadowMode

fk_ShadowMode FK_CLI::fk_Scene::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_Scene::ShadowVec

getset

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

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

参照
  ShadowMode, ShadowResolution, ShadowAreaSize, ShadowDistance, ShadowVisibility

## ◆ ShadowResolution

int FK_CLI::fk_Scene::ShadowResolution

getset

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

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

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

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

参照
  ShadowMode, ShadowVec, ShadowAreaSize, ShadowDistance, ShadowVisibility

## ◆ ShadowAreaSize

double FK_CLI::fk_Scene::ShadowAreaSize

getset

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

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

参照
  ShadowMode, ShadowVec, ShadowResolution, ShadowDistance, ShadowVisibility

## ◆ ShadowDistance

double FK_CLI::fk_Scene::ShadowDistance

getset

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

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

参照
  ShadowMode, ShadowVec, ShadowResolution, ShadowAreaSize, ShadowVisibility

## ◆ ShadowVisibility

double FK_CLI::fk_Scene::ShadowVisibility

getset

影濃度設定プロパティ

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

参照
  ShadowMode, ShadowVec, ShadowResolution, ShadowAreaSize, ShadowDistance

## ◆ ShadowBias

double FK_CLI::fk_Scene::ShadowBias

getset

影バイアス値設定関数

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