Japanese | English | Korean

Samples

環境マップの利用

MascotCapsule V3では、モデルにスフィアマップの属性が付与されているものについては、専用のスフィアマップ用テクスチャを用いることでスフィアマップ処理を行うことができます。

目次

1. 環境マップ

環境マップとは、モデルに周囲の環境が映りこんでいるように見せるマッピングのことです。スフィアマップはそのうち、モデルの周囲360度の景色を映りこませるもののことです。環境マップには他に水平・垂直それぞれ90度ずつの景色を映りこませるキューブマップなどがあります。



2. 環境マップの設定

スフィアマップ用テクスチャを読み込むには、通常のテクスチャを読み込むのと同様に、OEMC_Micro3D_Texture_loadBmpData( Texture* texture, Iiistream* iis, hi_sint32 texture_type ) を用います。

ただしスフィアマップ用テクスチャの場合は、第3引数texture_typeの値をTEXTURE_TYPE_SPHEREMAP に設定します。また、スフィアマップを有効にするには、OEMC_Micro3D_Render_setAttribute ( Render* render, hi_sint32 attribute ) の第2引数にM3D_LIGHTING および、M3D_SPECULARを論理和で設定し、OEMC_Micro3D_Render_setSphereTexture( Render* render, Texture* texture ) で Render にスフィアマップ用テクスチャを設定します。この設定は Render に格納されますが、新たにスフィアマップ用テクスチャが設定されないかぎり保持されます。これは、環境属性として M3D_SPECULARが設定されなかった場合も同様です。

サンプルでは決定キーを押す度にスフィアマップの有効・無効が切り替わります。また、方向キーでカメラの位置を回転させることが可能です。

// 環境マップデータを読み込む
MemIstream_initialize(
&mis, sphereMap_bmp.addr, sphereMap_bmp.size );
rval = OEMC_Micro3D_Texture_loadBmpData( &car.sphereMap,
MemIstream_getIIstream( &mis ),
TEXTURE_TYPE_SPHEREMAP );

/**
  * 環境マップ設定
  */
static void setSphereMap( void )
{
hi_sint32 attribue_mask = 0;
if( isSphere ){
attribue_mask |= M3D_LIGHTING;
attribue_mask |= M3D_SPECULAR;
OEMC_Micro3D_Render_setSphereTexture( &render, &car.sphereMap );
}
OEMC_Micro3D_Render_setAttribute( &render, attribue_mask );
}
 

スフィアマップの有効(左)・無効(右)