サンプル

フォグ

フォグ - MascotCapsule eruption

ここではフォグについて解説します。




※ 開発環境によってダウンロードするサンプルデータが異なります。

目次





フォグとは視界距離に合わせて霧のようなぼかし効果を加えるもので、遠くにあるオブジェクトほど霞んで描画することができます。


1. フォグの設定

フォグを発生させるには、フォグのタイプ設定に mceCamera_setFogType( This, type ) 、フォグの色設定に mceCamera_setFogColor( This, bgr ) を使用します。
フォグのタイプには以下の3種類が用意されています。

発生させるフォグの濃度設定は、フォグのタイプ設定によって異なり、mceCamera_FogType_LINEAR の場合は mceCamera_setFogStartEnd( This, s, e ) を使用してフォグ発生開始位置と終了位置を設定します。
また、mceCamera_FogType_EXPONENT の場合は、mceCamera_setFogDensity( This, d ) を使用します。

typedef struct tagWork
{
    (中略)

    mceCamera *Camera;                /* Camera */

    (中略)

    mceCamera_FogType FogType;        /* フォグタイプ */
    hi_sint32         FogColor;       /* フォグカラー */
    hi_coord          FogNear;        /* フォグニア   */
    hi_coord          FogFar;         /* フォグファー */

} WORK;
work->FogType  = mceCamera_FogType_LINEAR;
work->FogColor = 0x00400000;
work->FogNear  = MCE_F2C ( 0.1f);
work->FogFar   = MCE_F2C (80.0f);

    (中略)

hi_exception exception;

    (中略)

/* フォグの発生設定 */
exception = mceCamera_setFogType (work->Camera, work->FogType);
if (exception != hi_NoException)
{
    return 1;
}

mceCamera_setFogColor    (work->Camera, work->FogColor);
mceCamera_setFogStartEnd (work->Camera,
                          work->FogNear, work->FogFar);
hi_exception exception;

exception = mceCamera_setFogType (work->Camera,
                                  mceCamera_FogType_EXPONENT);
if (exception != hi_NoException)
{
    return 1;
}

mceCamera_setFogColor    (work->Camera, 0x00400000);
/* フォグの濃度を設定 */
mceCamera_setFogDensity  (work->Camera, MCE_F2C (0.04f));
描画結果 mceCamera_FogType_LINEAR( 発生範囲 0.01 から 80.0 ) 描画結果 mceCamera_FogType_LINEAR( 発生範囲 60.0 から 80.0 )
mceCamera_FogType_LINEAR
( 発生範囲 0.01 から 80.0 )
mceCamera_FogType_LINEAR
( 発生範囲 60.0 から 80.0 )
描画結果 mceCamera_FogType_EXPONENT ( 濃度 0.02 ) 描画結果 mceCamera_FogType_EXPONENT ( 濃度 0.04 )
mceCamera_FogType_EXPONENT
( 濃度 0.02 )
mceCamera_FogType_EXPONENT
( 濃度 0.04 )
描画結果



このページの先頭へ戻る