ParameterStore (UE)

업데이트: 2024/09/05

이 페이지에는 알파 버전에 관한 설명이 포함되어 있습니다.

개요

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
이 기사가 도움이 되었나요?
아니요
이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.