パラメータの操作

パラメータを設定する
パラメータは通常モーションから設定されますが、直接値を指定することもできます。
その場合は以下の3種類の方法があります。

1. 値を上書きする
setParamFloat関数を使用します。
第一引数にパラメータのID,第二引数に値、第三引数に影響度を設定します。
影響度は省略可能で、その場合は1になります。
例えば0.5にすると前の値の影響を50%残したまま設定することになります。


live2DModel->setParamFloat( "PARAM_ANGLE_X", 30 ,1 );//PARAM_ANGLE_Xを30に設定

2. 現在の値に加算する
addToParamFloat関数を使用します。
引数はsetParamFloatと同じです。
設定した値が加算されるところが異なります。


live2DModel->addToParamFloat( "PARAM_ANGLE_X", 1, 1);//PARAM_ANGLE_Xの値に1追加


3. 現在の値に乗算する
multParamFloat関数を使用します。
引数はsetParamFloatと同じです。
設定した値が乗算されるところが異なります。


live2DModel->multParamFloat( "PARAM_ANGLE_X", 2, 1);//PARAM_ANGLE_Xの値を2倍にする


また、現在のパラメータ値の取得にはgetParamFloat関数を使用します。

パラメータのインデックスによる指定

パラメータのID指定には、"PARAM_ANGLE_X"などの文字列で指定する方法と
インデックスで指定する方法があります。
インデックスを使ったほうが高速なため呼び出し頻度が多い場合は、インデックスの使用をおすすめします。
パラメータのインデックスはgetParamIndex関数で取得できます。


//初期化時
int paramAngleX;
paramAngleX = live2DModel->getParamIndex( "PARAM_ANGLE_X" );

//パラメータの設定時
live2DModel->setParamFloat( paramAngleX, 30 , 1);


パラメータを保存する

モデルの現在のパラメータ値を一時的に保存する場合はsaveParam関数を使用します。
これを実行するとすべてのパラメータ値を一時保存し、次にloadParam関数を読んだ時に復元されます。


// パラメータを30に設定
live2DModel->setParamFloat( "PARAM_ANGLE_X", 30 ,1 );

//現在のすべてのパラメータ値を一時保存
live2DModel->saveParam();

// 0に設定
live2DModel->setParamFloat( "PARAM_ANGLE_X", 0 ,1 );

//output: value = 0
printf("value = %f",live2DModel.getParamFloat( "PARAM_ANGLE_X" ) );

//前回のsaveParam時の状態を復元
live2DModel->loadParam();

//output: value = 30
printf("value = %f",live2DModel.getParamFloat( "PARAM_ANGLE_X" ) );

パーツの透明度を設定する

パーツの透明度を設定と取得にはsetPartsOpacity関数とgetPartsOpacity関数を使用します。


// 顔パーツの透明度を0.5に設定する
live2DModel->setPartsOpacity( "PARTS_01_FACE_001",0.5 );


パラメータの適用タイミングとコスト

パラメータの設定時にはパラメータ値を書き換えるだけで頂点計算は行いません。
パラメータ変更後のupdate関数で頂点が計算され
その後のdraw関数でパラメータ適用後のモデルが描画されます。

Comments