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 )
{
if ( ( mask & ACTION_MASK ) != 0 )
{
pMe -> mc_data.pattern++;
if( pMe -> mc_data.pattern >= pMe -> mc_data.maxpat )
{
/* モデル状態指定 */
if( pMe -> mc_data.pattern == 0 )
{
else
{
pMe -> key_mask = 0;
}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 );
1 << pMe -> mc_data.pattern );
pMe -> key_mask = 0;

