Groom Hair Simulation이 Game Pause 상태에서 적용되지 않는 현상

안녕하세요.

Groom을 게임에 적용하면서, Game Pause가 되었을 때 Hair Simulation이 되지 않는 현상을 해결하고자 문의 드립니다.

Game Pause가 아닐 때는 문제가 없지만, Pause를 켠 상태(UGameplayStatics::SetGamePaused)에서는 Hair가 고정되어 있는 상태(마치 Physics가 적용 안된 것처럼 보이는)로 표현됩니다.

아래와 같이 Actor와 GroomComponent에 대해 Tick 설정을 하였습니다.

​Actor:

PrimaryActorTick.bTickEvenWhenPaused = true;

PrimaryActorTick.bCanEverTick = true;

GroomComponent:

GroomComp = CreateDefaultSubobject<UGroomComponent>(TEXT(“GroomComp”));

GroomComp->PrimaryComponentTick.bCanEverTick = true;

GroomComp->PrimaryComponentTick.bTickEvenWhenPaused = true;

GroomComp->SetupAttachment(Mesh);

이렇게 하였을 때, UGroomComponent::TickComponent가 호출되는 것은 확인됩니다만 여전히 Hair는 Simulation이 되지 않습니다.

​해결 방법이 있을까요?

감사합니다.​

안녕하세요.

답변이 늦어 죄송합니다. ​

말씀하신 내용을 확인 후 다시 답변 드릴 수 있도록 하겠습니다.

감사합니다.

안녕하세요.

언리얼 엔진 5.6버전에서 말씀해주신 설정을 통해 재현할 수 있었습니다.

해당 문제는 Game Pause 상태에선 GroomComponent의 bTickEvenWhenPaused을 설정을 true로 설정하더라도, 시뮬레이션을 진행하는 NiagaraComponent의 Tick은 비활성화 돼있기 때문에 발생하는 것으로 보입니다.

해당 문제의 해결 방법으로는

GroomComponent->GetNiagaraComponent 함수를 통해 GroomAsset의 원하는 HairGroupPhysics를 가져올 수 있으며,

이후, NiagaraComponent의 bTickEvenWhenPaused 옵션을 true로 설정 및 Set Force Solo 함수 호출을 통해수동적으로 NiagaraComponent의 Tick을 활성화 시킴으로써, 시뮬레이션이 가능합니다.

추가적으로 아래의 사용 예시를 참고하시면 도움이 될 것 같습니다.

[Image Removed]

감사합니다.

상세한 답변 감사합니다!!