Japanese | English | Korean

Samples

シェーディング

モデルに影を付ける手法をシェーディングといいます。MascotCapsule V4(V3互換)では、光源が有効の時、グーローシェーディングとトゥーンシェーディングの2種類のシェーディングを設定することができます。

目次

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

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


グーローシェーディング


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

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


トゥーンシェーディング



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

シェーディングを行うためには、環境属性を設定する必要があります。
環境属性の設定は、IMICRO3D_Render_setAttribute()を使用します。第3の引数にM3D_LIGHTING(光源を有効)を設定します。トゥーンシェーディングの場合は、M3D_TOON_SHADING(トゥーンシェーディングを行う)も設定してください。

トゥーンシェーディングの場合はさらに256段階のしきい値としきい値をはさんだ2つの領域の明るさを設定します。明るさの設定は、

IMICRO3D_Render_setToonParam( render* This, hi_sint32 threshold, hi_siont32 hight, hi_siont32 low )

を使用します。thresholdはトゥーンシェードの閾値のレベル、highはレベルが閾値より大きなときの強さ、lowはレベルが閾値より小さなときの強さで、high、lowは0~255の値を設定します。

/* 閾値の設定 */
#define THRESHOLD            120
#define THRESHOLD_HIGH    255
#define THRESHOLD_LOW        0


/* キーチェックによるシェーディングの設定 */
if ( ( mask & SOFT1_MASK ) ! = 0 )
{
/* 光源を有効 */
IMICRO3D_Render_setAttribute( pMe -> pIM3D, &pMe -> mc_data.render, pMe -> mc_data.attr | M3D_LIGHTING );
}

if ( ( mask & SOFT2_MASK ) != 0 )
{
/* トゥーンシェーディングのパラメータの設定 */
IMICRO3D_Render_setToonParam( pMe -> pIM3D,
        &pMe -> mc_data.render,
        THRESHOLD,
        THRESHOLD_HIGH,
        THRESHOLD_LOW );

/* トゥーンシェーディングを有効 */
IMICRO3D_Render_setAttribute( pMe  -> pIM3D,
      &pMe -> mc_data.render,
      pMe   -> mc_data.attr | M3D_LIGHTING | M3D_TOON_SHADING );
}