ParameterStore (UE)

最終更新: 2024年9月5日

此页面包含有关Alpha版的描述。

概述

通过使用CubismParameterStore,您可以保存和恢复CubismModel的参数和部件值。

如果不使用CubismParameterStore,则通过Expression等处理值的结果可能不正确。
如果在恢复~保存之间进行了Expression等值的操作,值的操作结果会被保存,所以将与恢复的操作后的值进行加算/正片叠底,不会得到预期的结果。
如果您在恢复~保存之外操作该值,则您操作该值之前的状态会被恢复,因此之后通过加算/正片叠底操作值的结果将是正确的。

行为

加载模型时,将获取模型中包含的所有参数和部件的参考并缓存它们的值。

void UCubismParameterStoreComponent::SaveParameters()
{
	for (UCubismParameterComponent* Parameter : Model->Parameters)
	{
		parameterValues[Parameter->Index] = Parameter->GetParameterValue();
	}

	for (UCubismPartComponent* Part : Model->Parts)
	{
		partOpacities[Part->Index] = Part->Opacity;
	}
}


此外,在Unreal Editor中操作值时,将按照参数或部件单位缓存值。

void UCubismParameterStoreComponent::SaveParameterValue(int32 ParameterIndex)
{
	parameterValues[ParameterIndex] = Model->GetParameter(ParameterIndex)->GetParameterValue();
}

void UCubismParameterStoreComponent::SavePartOpacity(int32 PartIndex)
{
	partOpacities[PartIndex] = Model->GetPart(PartIndex)->Opacity;
}


缓存的参数值和部件的不透明度在帧开始时恢复。

void UCubismParameterStoreComponent::LoadParameters() const
{
	for (UCubismParameterComponent* Parameter : Model->Parameters)
	{
		Parameter->SetParameterValue(parameterValues[Parameter->Index]);
	}

	for (UCubismPartComponent* Part : Model->Parts)
	{
		Part->SetPartOpacity(partOpacities[Part->Index]);
	}
}


值仅在有限的时间内进行缓存,与参数值和部件不透明度操作相关的组件更新基本上设置为在恢复后执行。

这可以防止这些操作在各帧上累积。

AddTickPrerequisiteComponent(Model->ParameterStore); // must be updated after parameters loaded
请问这篇文章对您有帮助吗?
关于本报道,敬请提出您的意见及要求。