Japanese | English | Korean

Samples

ダイナミックポリゴンによるパターンの切り替え

MBACデータは、いくつかの状態を持つことができます。


Figure構造体に対して、IMICRO3D_Figure_setPattern( )を使用して、モデルの状態を指定します。モデルデータが持つ状態数は、データ作成時に設定されます。この状態数は、 IMICRO3D_Figure_getNumPattern() を利用することで取得することができます。

モデルの状態はベースとなる共通セットを含めると最大で 33 個の状態があります。これを 32bit の各 bit とみなして(共通セットを 0 とします) IMICRO3D_Figure_setPattern() に指定します。
今回使用するサンプルの場合、共通セットを含め以下の 4 つの外見状態を持っています。

  • Pattern 0 : 共通セットとなる顔
  • Pattern 1 : 目のない顔
  • Pattern 2 : 開いた目
  • Pattern 3 : 閉じた目

そのため、

  • IMICRO3D_Figure_setPattern( ) で、共通セットとなる顔
  • IMICRO3D_Figure_setPattern( ( 1 << 0 ) ) で、目のない顔
  • IMICRO3D_Figure_setPattern ( ( 1 << 1 ) ) で、開いた目を持つ顔
  • IMICRO3D_Figure_setPattern ( ( 1 << 2 ) ) で、閉じた目を持つ顔

といった描画がなされます。


SampleDynamic3D 実行画面(左から、Pattern 1, Pattern 2, Pattern 3)



また、複数の独立した外見状態を持つモデルの場合、

IMICRO3D_Figure_setPattern ( ( ( 1 << 1 ) | ( 1 << 5 ) ) )

といった指定を行うと、同時に複数の箇所を動かすことも可能です。

/* キーチェックによる外見状態設定・変更 */
if ( ( mask & ACTION_MASK ) != 0 )
{
pMe -> mc_data.pattern++;

if( pMe -> mc_data.pattern >= pMe -> mc_data.maxpat )
{
pMe -> mc_data.pattern = 0;
}

/* モデル状態指定 */
if( pMe -> mc_data.pattern == 0 )
{
IMICRO3D_Figure_setPattern( pMe -> pIM3D, &pMe -> mc_data.figure, 0 );
}
else
{
IMICRO3D_Figure_setPattern( pMe       -> pIM3D,
  &pMe      -> mc_data.figure,
  1 << pMe -> mc_data.pattern );
}
pMe -> key_mask = 0;
}