パラメータリピート

最終更新: 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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// C++
CubismModel::CubismModel(Core::csmModel* model)
: _model(model)
...
, _isOverriddenParameterRepeat(false)
...
{ }
// C++ CubismModel::CubismModel(Core::csmModel* model) : _model(model) ... , _isOverriddenParameterRepeat(false) ... { }
// C++
CubismModel::CubismModel(Core::csmModel* model)
    : _model(model)
...
    , _isOverriddenParameterRepeat(false)
...
{ }

Web

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// TypeScript
/**
* コンストラクタ
* @param model モデル
*/
public constructor(model: Live2DCubismCore.Model) {
...
this._isOverriddenParameterRepeat = false;
...
{ }
// TypeScript /** * コンストラクタ * @param model モデル */ public constructor(model: Live2DCubismCore.Model) { ... this._isOverriddenParameterRepeat = false; ... { }
// TypeScript
   /**
   * コンストラクタ
   * @param model モデル
   */
  public constructor(model: Live2DCubismCore.Model) {
...
    this._isOverriddenParameterRepeat = false;
...
{ }

Java

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Java
/**
* Model class created from Mclapoc data.
*/
public class CubismModel {
...
private boolean isOverriddenParameterRepeat = false;
...
{ }
// Java /** * Model class created from Mclapoc data. */ public class CubismModel { ... private boolean isOverriddenParameterRepeat = false; ... { }
// Java
/**
 * Model class created from Mclapoc data.
 */
public class CubismModel {
...
    private boolean isOverriddenParameterRepeat = false;
...
{ }

Unity

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// C#
/// <summary>
/// Whether parameter repetition is performed for the entire model.
/// </summary>
[SerializeField]
private bool _isOverriddenParameterRepeat = false;
// C# /// <summary> /// Whether parameter repetition is performed for the entire model. /// </summary> [SerializeField] private bool _isOverriddenParameterRepeat = false;
// 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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// C++
model->GetModel()->SetOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ
// C++ model->GetModel()->SetOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ
// C++
model->GetModel()->SetOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ

Web

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// TypeScript
model.getModel().setOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ
// TypeScript model.getModel().setOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ
// TypeScript
model.getModel().setOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ

Java

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Java
model.getModel().setOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ
// Java model.getModel().setOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ
// Java
model.getModel().setOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ

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

Unity

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// C#
cubismModel.SetOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ
// C# cubismModel.SetOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ
// C#
cubismModel.SetOverrideFlagForModelParameterRepeat(false); // リピートのモデル単位の上書きフラグ

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

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

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

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

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// C++
model->GetModel()->SetOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定
// C++ model->GetModel()->SetOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定
// C++
model->GetModel()->SetOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// TypeScript
model.getModel().setOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定
// TypeScript model.getModel().setOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定
// TypeScript
model.getModel().setOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Java
model.getModel().setOverrideFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータの上書きフラグをtrueに設定
// Java 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 クラスに定義されています。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// C#
cubismParameter.SetOverrideFlagForParameterRepeat(true); // 指定のパラメータの上書きフラグをtrueに設定
// C# cubismParameter.SetOverrideFlagForParameterRepeat(true); // 指定のパラメータの上書きフラグをtrueに設定
// C#
cubismParameter.SetOverrideFlagForParameterRepeat(true); // 指定のパラメータの上書きフラグをtrueに設定

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

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// C++
model->GetModel()->SetRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
// C++ model->GetModel()->SetRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
// C++
model->GetModel()->SetRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// TypeScript
model.getModel().setRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
// TypeScript model.getModel().setRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
// TypeScript
model.getModel().setRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// Java
model.getModel().setRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
// Java model.getModel().setRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
// Java
model.getModel().setRepeatFlagForParameterRepeat(parameterIndex, true); // 指定のパラメータのリピートをONに設定
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// C#
cubismParameter.SetRepeatFlagForParameterRepeat(true); // 指定のパラメータのリピートをONに設定
// C# cubismParameter.SetRepeatFlagForParameterRepeat(true); // 指定のパラメータのリピートをONに設定
// C#
cubismParameter.SetRepeatFlagForParameterRepeat(true); // 指定のパラメータのリピートをONに設定

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

Tips

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

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