パラメータリピート

最終更新: 2025年5月15日

Cubism Editor上で設定したパラメータリピートのON/OFFはCubism 5 SDK R4 以降を利用することで取得が可能になります。
Cubism Editor上でのリピートの設定はEditorマニュアルの「リピート」を参照してください。
また必要に応じたコーディングを行うことでSDKからリピート設定を操作することも可能です。

概要

Cubism SDK上ではリピートは以下のフラグで管理されます。

  • パラメータ単位のリピート状態フラグ
  • モデル単位でリピート状態フラグを上書きするかのフラグ
  • モデル単位で上書きした際のリピート状態フラグ
  • パラメータ単位でリピート状態フラグを上書きするかのフラグ
  • パラメータ単位で上書きした際のリピート状態フラグ

Cubism Editor上で設定したパラメータリピートをSDKで再現するには、下記のどちらも false になっている必要があります。

  • モデル単位でリピート状態フラグを上書きするかのフラグ
  • パラメータ単位でリピート状態フラグを上書きするかのフラグ

しかしCubism SDK上では既存のモーションの互換性を保つために、モデル単位でリピート状態フラグを上書きするかのフラグの初期値を true にしています。

Cubism Editor上で設定したパラメータリピートの再現手順

モデル単位のリピートの上書きフラグ設定

モデル単位のリピートの上書きフラグを falseに設定します。デフォルトでは true になっています。
Cubism Editor上で設定したパラメータリピートをSDK上で再現するためにはFrameworkの CubismModel クラスのメンバ変数の初期化時の設定を変更します。

Native

// C++
CubismModel::CubismModel(Core::csmModel* model)
    : _model(model)
...
    , _isOverriddenParameterRepeat(false)
...
{ }

Web

// TypeScript
   /**
   * コンストラクタ
   * @param model モデル
   */
  public constructor(model: Live2DCubismCore.Model) {
...
    this._isOverriddenParameterRepeat = false;
...
{ }

Java

// Java
/**
 * Model class created from Mclapoc data.
 */
public class CubismModel {
...
    private boolean isOverriddenParameterRepeat = false;
...
{ }

Unity

// C#

/// <summary>
/// Whether parameter repetition is performed for the entire model.
/// </summary>
[SerializeField]
private bool _isOverriddenParameterRepeat = false;

Unityは、InspectorでCubismModelの「Is Overridden Parameter Repeat」のチェックボックスを操作することでも設定できます。

動的にフラグを変更する場合は、CubismModel クラスのSetOverrideFlagForModelParameterRepeat(csmBool isRepeat)を用います。

Native

// C++
model->GetModel()->SetOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ

Web

// TypeScript
model.getModel().setOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ

Java

// Java
model.getModel().setOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ

例としてCubism SDK for Nativeのサンプルプロジェクトではモデルを操作するために CubismModel を基底クラスとした LAppModel クラスを定義しており、上記コードの model は LAppModel クラスです。
LAppModel クラスから CubismModel クラスの関数を呼び出すために GetModel() を仲介しています。

Unity

// C#
cubismModel.SetOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ

SDK for Unityでは、 CubismModel コンポーネントの void SetOverrideFlagForModelParameterRepeat(bool isRepeat)を使用します。

SDKでパラメータ単位でパラメータリピートを制御する手順

以下の流れで処理を行います。

  1. パラメータ単位の上書きフラグ設定
  2. パラメータ単位パラメータリピートの設定

1.パラメータ単位の上書きフラグ設定

まずはパラメータ単位の上書きフラグを true に設定します。デフォルトでは false になっています。

// C++
model->GetModel()->SetOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定
// TypeScript
model.getModel().setOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定
// Java
model.getModel().setOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定

例としてNativeではvoid SetOverrideFlagForParameterRepeat(csmInt32 parameterIndex, csmBool value) はFrameworkの CubismModel クラスに定義されています。

Unityでは、void SetRepeatFlagForParameterRepeat(bool value) は CubismParameter クラスに定義されています。

// C#
cubismParameter.SetOverrideFlagForParameterRepeat(true); // 指定のパラメータの上書きフラグをtrueに設定

こちらは InspectorでCubismParameterの「Is Overridden」のチェックボックスを操作することでも設定できます。

2. パラメータ単位のパラメータリピートの設定

パラメータごとにリピートのON/OFFを設定します。
この設定はパラメータ単位の上書きフラグがtrueの場合のみ有効となります。

// C++
model->GetModel()->SetRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
// TypeScript
model.getModel().setRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
// Java
model.getModel().setRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
// C#
cubismParameter.SetRepeatFlagForParameterRepeat(true); // 指定のパラメータのリピートをONに設定

SDK for Unityは、 InspectorでCubismParameterの「Is Parameter Repeated」のチェックボックスを操作することでも設定できます。

Tips

モデル単位でリピート状態フラグを上書きするかのフラグが有効な場合、パラメータ単位でリピート状態フラグを上書きするかのフラグの設定は無視されます。

この記事はお役に立ちましたか?
はいいいえ
この記事に関するご意見・
ご要望をお聞かせください。