파라미터 반복

업데이트: 2025/05/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

모델 단위로 반복 상태 플래그를 덮어쓸지 여부에 대한 플래그가 활성화된 경우 파라미터별로 반복 상태 플래그를 덮어쓸지 여부에 대한 플래그 설정은 무시됩니다.

이 기사가 도움이 되었나요?
아니요
이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.