サンプル
フォグ
フォグとは、霧やもやを表現することができるエフェクトのことです。フォグを使うと遠くにある物体をぼかして表示することができるため、透視投影時のファークリップ面による切断を分かりづらくすることができます。
フォグの設定
フォグの設定は m3dAppearance オブジェクトに m3dFog オブジェクトを追加することで行います。
フォグには、濃淡の計算の違いにより指数モード ( m3dFog_EXPONENTIAL ) と線形モード ( m3dFog_LINER ) の2種類が用意されています。指数モードではフォグの濃淡の設定を密度により行います。密度の設定には IMICRO3Dv4es_m3dFog_setDensity ( inst, fog, density ) メソッドを用います。また、線形モードでは、フォグの濃淡の設定を効果が有効な区間(開始距離と終了距離)の設定により行います。区間の設定には IMICRO3Dv4es_m3dFog_setLinear ( inst, fog, float near, float far ) メソッドを用います。near が開始距離、far が終了距離を表します。
以下は、サンプルコードでフォグを設定しているところです。ここでは指数モードのフォグを用いています。フォグの密度は、下記サンプルコードの値と実行結果を目安に設定されることを推奨します。
/* フォグの作成 */
pmc -> pFog = IMICRO3Dv4es_m3dFog_create ( pMe -> pIM3D );
if ( pmc -> pFog == NULL ) {
IMICRO3Dv4es_m3dFog_setMode ( pMe-> pIM3D, pmc -> pFog, m3dFog_EXPONENTIAL );
IMICRO3Dv4es_m3dFog_setColor ( pMe -> pIM3D, pmc -> pFog, 0xffffff );
IMICRO3Dv4es_m3dFog_setDensity ( pMe -> pIM3D, pmc -> pFog, 0.03f );
( 中略 )
/* フォグをセットする */
fog = ( pmc -> setFog == HI_TRUE ) ? pmc ->v pFog : NULL;
for ( i = 0; i < UID_APP_NUM; i ++ ) {
pmc -> pFog = IMICRO3Dv4es_m3dFog_create ( pMe -> pIM3D );
if ( pmc -> pFog == NULL ) {
return HI_FALSE;
}IMICRO3Dv4es_m3dFog_setMode ( pMe-> pIM3D, pmc -> pFog, m3dFog_EXPONENTIAL );
IMICRO3Dv4es_m3dFog_setColor ( pMe -> pIM3D, pmc -> pFog, 0xffffff );
IMICRO3Dv4es_m3dFog_setDensity ( pMe -> pIM3D, pmc -> pFog, 0.03f );
( 中略 )
/* フォグをセットする */
fog = ( pmc -> setFog == HI_TRUE ) ? pmc ->v pFog : NULL;
for ( i = 0; i < UID_APP_NUM; i ++ ) {
IMICRO3Dv4es_m3dAppearance_setFog ( pMe -> pIM3D, pmc -> pAppearance [ i ], fog );
}なお、フォグの設定を解除する場合は IMICRO3Dv4es_m3dAppearance_setFog ( inst, appearance, fog ) で fog に NULL を設定します。
![]() |
![]() |
| フォグ有り | フォグ無 |
| フォグの有無による描画結果の違い | |



