Using Groom Cache in Unreal with XGen

Using Groom Cache in Unreal with XGen

Introduction

Unreal Engine에서 Groom Binding 과 Physics 적용을 통해 어느 정도 자연스러운 움직임 구현이 가능하지만, 특정한 움직임을 구현하기에는 무리가 있는 것이 사실이다. 이런 경우 Maya 에서 시뮬레이션을 하고, Cache 를 가져와서 Groom Cache 를 적용하는 방법을 사용해 볼 수 있다. Groom Cache 기능은 4.27 이상 버전에서 사용 가능하다.
이 글은 Groom Workflow XGen and Unreal 글에 이어서 작성 되었다.

Interactive Groom Guide Curves

Description 을 선택하고, Utilities > Guides To Curves 를 선택한다.
Create Curves 버튼을 눌러서 Guide Curves 를 만든다.

Interactive Groom Editor 에서 Descriptin 에 Linear Wire 를 추가한다.

Linear Wire > Magnitude Scale Curve Ramp 에서 Root 쪽을 0, Tip 쪽을 1로 만든다.

Linear Wire 의 Magnitude Scale 을 위와 같이 설정하는 이유

Guide Curves 그룹을 선택하고, Linear Wire 를 선택한다.
Attribute Editor 에서 Linear Wire 의 Input Wire 섹션에서 Use Selected Curve as Wire… 버튼을 누른다.
팝업창이 뜨면, Preserve Dynamic Link 옵션을 체크하고 Apply and Close 버튼을 누른다.

Dynamic Set Up

Guide Curves 그룹을 선택한다.
Assign unique name to children nodes 옵션을 체크하고, Duplicate Special 을 실행한다.

위 과정에서 생성된 Curves 그룹과 Scalp Mesh 를 선택한다.
nHair > Make Selected Curves Dynamic 옵션 박스를 선택한다.
Attach curves to selected surfaces 옵션과 Exact shape math 옵션을 체크하고 Make Curves Dynamic 버튼을 누른다.

위 과정에서 생성된 Output Curves 그룹과 Guide Curves 그룹을 선택한다.
Deform > Blend Shape 을 적용한다.

Simulation

Nucleus 와 Hiar System 노드의 속성들을 조절하고, Volume Axis Field 를 적용해 주었다.

Field 를 적용하고 수치를 높였는데도 변화가 없다면?

Scale Attribute Setting of Nucleus

Hair System Dynamic Settings

Exporting Cache from Maya

Interactive Groom Description 노드를 선택한다.
Generate > Cache > Export Cache 옵션 박스를 선택한다.
Start/End 프레임을 정하고, Export 한다.

Importing Cache in Unreal

Conversion 옵션을 위와 같이 설정한다.
Import Groom Asset 옵션을 끄고, Cache 를 적용할 Groom Asset 을 선택한다. (위 스크린샷은 4.27 버전이다.)

Force Front XAxis 옵션을 사용한 경우

_guides_cache 와 _strands_cache
Suffix 가 붙은 Asset 이 생성된다.

Skeletal Mesh Component 에 Groom Component 를 추가한다.
Groom Cache 에서 _strands_cache
Suffix 가 붙은 Asset 을 선택한다.
(4.27 버전에서 Blueprint 에 있는 Groom Component 에 Groom Cache 를 적용할 경우 Crash 가 발생할 수 있다.)

Simulate 해 보면 Groom Cache 가 적용 된 것을 볼 수 있다.

Groom Cache in Level Sequence

Skeletal Mesh 를 Level Sequence 에 추가하고 +Track 버튼을 눌러, Skeletal Mesh 에 있는 Groom Component 를 추가한다.

Groom Component Track 에서 +Track 버튼을 눌러 Groom Cache 를 추가한다.
Properties 영역에 있는 Groom Cache 가 아니라, Tracks 영역에 있는 Groom Cache 를 추가해야 한다.

Groom Cache 를 Level Sequence 에서 Play 할 수 있다.

Conclusion

엔진에서 실시간 시뮬레이션으로 구현하기 힘든 움직임(e.g. 바람에 날리는 머리카락) 등을 구현할 때 유용하게 사용할 수 있다.
더 좋은 퀄리티를 위해서는 XGen을 Interactive Groom 으로 바꾸고 Linear Wire 를 추가하는 방법보다, Yeti 로 Groom 을 만들거나 Houdini에서 만드는 것이 더 낫다.


Index