Japanese | English | Korean

Samples

シェーディング

モデルに影を付ける手法をシェーディングといいます。MascotCapsule V3では、グーローシェーディングと、トゥーンシェーディングの2種類のシェーディングが用意されています

目次

1. グーローシェーディング( Gouraud Shading )

グーローシェーディングは、オブジェクトの各頂点の法線ベクトルを求め、頂点間を三角形の面上にわたって補間する方法です。ピクセル間の継ぎ目が目立たなくなり、滑らかなシェーディングができます。


グーローシェーディング


2. トゥーンシェーディング( Toon Shading )

トゥーンシェーディングは、境界のはっきりした影をつける方法です。トゥーンシェーディングを用いると、アニメのセル画のような影付け効果を得ることができます。


トゥーンシェーディング



3.シェーディングのサンプルコード

ここではサンプルコード内のシェーディングの設定をする関数setShadingについて説明します。このサンプルでは、決定ボタンを押す度に影なし・グーローシェーディング・トゥーンシェーディングが切り替わります。

シェーディングの設定は、Render_setAttribute( Render *render, hi_sint32 attribute ) によって設定します。この関数のattributeの値に、グーローシェーディングの場合はM3D_LIGHTING、トゥーンシェーディングの場合はM3D_LIGHTINGとM3D_TOON_SHADINGの2つを論理和として設定してください。

トゥーンシェーディングの場合はさらにRender_setToonParam( Render *render, hi_sint32 threshold, hi_sint32 high, hi_sint32 low ) を設定します。thresholdはトゥーンシェードのしきい値、highはレベルがしきい値より大きなときの強さ、lowはレベルがしきい値より小さなときの強さで、high、lowは0~255の値を設定します。

static void setShading( void )
{
hi_sint32 attribue_mask = 0;

switch( shade ){
/* No Shading */
case 0:
break;
/* Toon Shading */
case 1:
attribue_mask |= M3D_LIGHTING;
attribue_mask |= M3D_TOON_SHADING;
OEMC_Micro3D_Render_setToonParam
( &render, 192, 255, 210 );
break;
/* Gouraud Shading */
case 2:
attribue_mask |= M3D_LIGHTING;
break;
}
OEMC_Micro3D_Render_setAttribute( &render, attribue_mask );
}