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
이 기사가 도움이 되었나요?
네아니요