EyeBlink

[마지막 갱신일: 2020/01/30]

개요

EyeBlink는 깜박임 파라미터의 현재 값에 개폐 상태 값을 적용하는 기능입니다.
모델에 깜박이는 매개 변수를 설정하는 방법은 여기를 참조하십시오.

깜박임 매개 변수 지정은 모델 자체로 설정하는 것 외에 Unity에서 사용자가 임의로 지정할 수 있습니다.

Cubism SDK for Unity의 EyeBlink는 세 가지 요소로 구성됩니다.

  1. 파라미터 지정용의 컴퍼넌트
  2. 각 매개 변수에 값을 적용하는 구성 요소
  3. 2에서 적용되는 값 조작

 

1. 파라미터 지정용 컴포넌트

EyeBlink에 사용할 매개변수를 지정하려면 CubismEyeBlinkParameter를 사용합니다.

CubismEyeBlinkParameter는 MonoBehaviour를 계승한 컴퍼넌트로,
[Prefab 루트]/Parameters/ 아래에 배치된 GameObject에 연결하여 사용합니다.
이것이 첨부된 GameObject와 같은 ID의 파라미터를 속눈썹의 파라미터로서 취급합니다.

모델 자체에 깜박이는 매개 변수가 설정되어 있으면 가져올 때 해당 매개 변수의 GameObject에 CubismEyeBlinkParameter가 연결됩니다.

CubismEyeBlinkParameter 는 참조처를 취득하기 위한 마커로서 사용하고 있으므로, 내부에서는 아무것도 처리를 실시하고 있지 않고, 데이터도 가지고 있지 않습니다.

 

2. 각 파라미터에 값을 적용하는 컴포넌트

각 매개 변수에 개폐 값을 적용하려면 CubismEyeBlinkController를 사용합니다.
이것은 MonoBehaviour를 상속받은 컴포넌트이며, 사용할 때 Cubism의 Prefab 루트에 연결됩니다.

초기화 시 Prefab에 연결된 모든 CubismEyeBlinkParameter에 대한 참조를 가져옵니다.
실행중에 깜박임용의 파라미터를 추가/삭제한 경우, CubismEyeBlinkController.Refresh()를 호출해 참조를 다시 취득합니다.

 

CubismEyeBlinkController는 매 프레임의 LateUpdate() 타이밍에서 CubismEyeBlinkParameter로 마킹된 파라미터에 CubismEyeBlinkController.EyeOpening의 값을 적용합니다.

 

EyeOpening으로 설정하는 값은 0.0f ~ 1.0f 범위입니다.
CubismEyeBlinkController는 이 값을 대상 매개 변수에 CubismEyeBlinkController.BlendMode에 설정된 계산 방식으로 적용합니다.

이 EyeOpening의 값을 밖에서 조작하면 모델의 눈을 열고 닫을 수 있습니다.

 

 

3. 2에서 적용하는 값의 조작

「2. 각 파라미터에 값을 적용하는 컴포넌트」에서 설명한 대로 CubismEyeBlinkController.EyeOpening의 값을 조작하여 깜박이는 파라미터에 값을 적용할 수 있습니다.
Cubism SDK for Unity는 다음 두 가지 방법으로 이 값을 조작할 수 있습니다.

  • 모션으로 값 조작
  • 구성 요소로 값 조작

또, 유저측에서 이 값을 조작하는 처리를 실장해 주시는 것으로, 눈꺼풀의 속도나 타이밍등을 독자적으로 커스터마이즈 할 수가 있습니다.

Tips
CubismEyeBlinkController.EyeOpening 을 조작하는 컴퍼넌트의 실행 순서가 CubismEyeBlinkController 보다 나중인 경우, 의도한 동작이 되지 않을 가능성이 있습니다.
만약 동작에 문제가 생긴, 유저측에서 명시적으로 컴퍼넌트의 실행 순서를 제어하는 것으로 회피가 가능합니다.
Cubism SDK for Unity는 각 구성 요소의 실행 순서를 CubismUpdateController로 제어하므로이를 활용할 수도 있습니다.

또, 상기 2종류의 설정 방법은 각각 다른 타이밍으로 같은 값을 조작하고 있기 때문에, 궁리 없이 하나의 모델에 양쪽을 공존시키는 것은 어려워지고 있습니다.

 

모션으로 값 조작

깜박이는 파라미터를 설정한 모델을 사용하여 Cubism의 Animator에서 모션을 만들 때 깜박이는 커브를 설정할 수 있습니다.

깜박이는 커브가 설정된 .motion3.json을 Unity 프로젝트로 가져오면 AnimationClip은 CubismEyeBlinkController.EyeOpening의 값을 대상으로 커브를 생성합니다.
그 때문에, AnimationClip를 Animator 컴퍼넌트 등에서 재생하는 것으로 CubismEyeBlinkController.EyeOpening의 값이 조작됩니다.

 

구성 요소로 값 조작

Cubism SDK for Unity를 사용하면 CubismAutoEyeBlinkInput 구성 요소를 사용하여 깜박임 값을 조작할 수 있습니다.

CubismAutoEyeBlinkInput은 Inspector에서 설정한 속도나 간격, 간격에 가하는 랜덤한 흔들림의 폭으로부터 깜박임용의 값을 산출해 설정합니다.

 

CubismAutoEyeBlinkInput에는 세 가지 설정 항목이 있습니다.

  • Mean
  • MaximumDeviation
  • Timescale

 

  • Mean

깜박이기까지의 시간을 설정합니다.
단위는 초입니다.
실제로 이 값에  Maximum Deviation에 의한 오차를 더한 시간이 사용됩니다.

  • MaximumDeviation

Mean으로 설정한 시간에 추가하는 임의의 흔들림의 폭을 설정합니다.
이들은 다음과 같이 값을 계산합니다.

 

  • Timescale

눈꺼풀을 하는 속도가 됩니다.
이전 프레임의 경과 시간에 곱해집니다.

© 2010 - 2022 Live2D Inc.