Japanese | English | Korean

Samples

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

MascotCapsule V3 では モデルデータ内にいくつかの状態を持つことができ、その状態を指定してモデルを描画することが可能です。


モデルの状態の指定には Figure.setPattern( int pattern ) メソッドを使用します。
モデルデータがどれだけの状態を持っているかはデータ作成時に設定されます。この数は Figure.getNumPattern() メソッドを利用することで取得することができます。

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

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

そのため、

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

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



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



また、複数の独立した外見状態を持つモデルの場合、
Figure.setPattern ( ( ( 1 << 1 ) | ( 1 << 5 ) ) )
といった指定を行うと、同時に複数の箇所を動かすことも可能です。

private Figure figure; // モデルデータ

/* MascotCapsule 外見制御用ワークデータ */
private int pattern;
private int max_pattern;

figure = new Figure( "cap_dynamic.mbac" );

/* 外見状態数上限取得 */
max_pattern = figure.getNumPattern();
pattern = 0;

/* 外見状態設定 */
if ( pattern >= max_pattern ) {
pattern = 0;
}
figure.setPattern( ( 1 << pattern ) );

/* 外見状態変更 */
protected void keyPressed( int keyCode ) {
if ( keyCode == KEY_NUM5 )
pattern++;
} // End of keyPressed()