EyeBlink (UE)

最終更新: 2024年9月5日

このページにはアルファ版に関する記述が含まれます。

概要

EyeBlinkは、まばたき用パラメータの現在の値に対して開閉状態の値を適用する機能です。
モデルにまばたきのパラメータを設定する方法については こちら をご覧ください。

まばたき用のパラメータの指定は、モデル自体に設定しておく他、Unreal Engine上でユーザが任意に指定することができます。

コンポーネントの扱い方

Cubism SDK for Unreal Engine における EyeBlink は CubismEyeBlinkComponent を CubismModel アクタの子コンポーネントに追加することで使用することができます。

.model3.jsonにまばたき用のパラメータが設定されている場合は、デフォルトの自動まばたき動作が反映されるため、ユーザー側での設定は不要です。

対象となるパラメータの追加方法

.model3.json にまばたき用のパラメータが設定されている場合は、インポートの際に自動的に CubismModel アクタに CubismEyeBlinkComponent が子コンポーネントとして追加されますが、手動でEyeBlinkの対象となるパラメータを追加したい場合は「詳細」タブから CubismEyeBlink を選択し、下部に表示されるリストから「Live2D Cubism」→「Ids」を開き、指定されているパラメータの名称を手動で書き換えるか、新たにインデックスを挿入してパラメータの名称を手動で書き加えてください。

パラメータの適用

CubismEyeBlinkComponent は BlendMode で指定されたブレンド方式に基づき、 Ids に設定されたIDに該当するすべてのパラメータに対して一律に Value の値を適用します。

for (FString Id : Ids)
{
	UCubismParameterComponent* Destination = Model->GetParameter(Id);

	if (!Destination)
	{
		continue;
	}

	switch (BlendMode)
	{
		case ECubismParameterBlendMode::Overwrite:
		{
			Destination->SetParameterValue(Value);
			break;
		}
		case ECubismParameterBlendMode::Additive:
		{
			Destination->AddParameterValue(Value);
			break;
		}
		case ECubismParameterBlendMode::Multiplicative:
		{
			Destination->MultiplyParameterValue(Value);
			break;
		}
	}
}

まばたきの対象となるパラメータを追加・削除したい場合は、コンポーネントの Ids にパラメータのIDを追加・削除します。

手動で値を操作する

AutoEnabled が false に設定されている場合は、 Value の値を外部から操作することで、指定したパラメータに対してユーザーの任意の値を一括で適用できます。

自動で値を操作する

AutoEnabled が true に設定されている場合は、自動でまばたきのように動作する値が適用されます。この動作はCubismEyeBlinkComponentに用意されたパラメータで制御することができます。

  • Mean
    まばたきを行う平均間隔を指定します。
  • MaximumDeviation
    まばたきを行う平均間隔時間からの揺らぎ幅を指定します。
StartTime = Mean + FMath::FRandRange(-MaximumDeviation, MaximumDeviation);
  • TimeScale
    動作の時間スケールを指定します。値を大きくすると動作が素早くなり、小さくすると動作が遅くなります。
  • ClosingPeriod
    目を閉じるまでにかかる時間を指定します。
const float t = TimeScale * (Time - StartTime) / ClosingPeriod;
NewValue = 1.0f - t;
  • ClosedPeriod
    目を閉じている時間を指定します。
const float t = TimeScale * (Time - StartTime) / ClosedPeriod;
NewValue = 0.0f;
  • OpeningPeriod
    目を開くまでにかかる時間を指定します。
const float t = TimeScale * (Time - StartTime) / OpeningPeriod;
NewValue = t;
この記事はお役に立ちましたか?
はいいいえ
この記事に関するご意見・
ご要望をお聞かせください。