フォグ
ここではフォグに関する操作について解説します。
フォグは霧が立ちこめた様子を表現することができるエフェクトです。
フォグを使うと、遠くにある物体をぼかして表示することができるため、透視投影時のファークリップ面による切断面を分かりづらくすることができます。
フォグを設定するには、 Fog クラスからインスタンスを生成、フォグのモードや色・濃度を設定した後、Appearance クラスのオブジェクトにそのインスタンスを追加することで行います。
M3G では指数モード ( EXPONENTIAL ) と線形モード ( LINER ) の2種類のフォグが用意されています。
以下はサンプルコード内でフォグを設定している部分で、指数モードでフォグを設定しています。指数モードでフォグの濃度を設定するには、 Fog クラスの setDensity ( float density ) メソッドを使います。
/**
* myAppearance [] はモデルデータ中の Appearance
* オブジェクトの配列
*
*/
/* フォグ */
private Fog fog = new Fog ();
( 中略 )
/* フォグの設定 */
fog.setMode ( Fog.EXPONENTIAL );
fog.setColor ( 0xffffff );
fog.setLinear ( 0.f, 1.f );
fog.setDensity ( 0.03f );
( 中略 )
/* フォグの変更 */
if ( !isFog ) {
* myAppearance [] はモデルデータ中の Appearance
* オブジェクトの配列
*
*/
/* フォグ */
private Fog fog = new Fog ();
( 中略 )
/* フォグの設定 */
fog.setMode ( Fog.EXPONENTIAL );
fog.setColor ( 0xffffff );
fog.setLinear ( 0.f, 1.f );
fog.setDensity ( 0.03f );
( 中略 )
/* フォグの変更 */
if ( !isFog ) {
/* 有効 */
for ( int i = 0; i < 8; i++ )
} else {for ( int i = 0; i < 8; i++ )
myAppearance [ i ] .setFog ( fog );
/* 無効 */
for ( int i = 0; i < 8; i++ )
}
for ( int i = 0; i < 8; i++ )
myAppearance [ i ] .setFog ( null );
なお、線形モードの場合、フォグの濃度はフォグの効果を有効にする区間(開始距離と終了距離)を設定することによって行います。線形モードでフォグの濃度を設定するメソッドは setLiner ( float near, float far ) です。 near が開始距離、 far が終了距離です

フォグの有効 ( 左 ) ・ 無効 ( 右 )

