2018년에 최초로 선보인 사이렌(Siren)은 기술적인 돌파구였던 한편, 사이렌의 버추얼 헤어는 최대한 많은 양의 헤어 가닥을 대략적인 모양으로 표현하기 위해 텍스처가 적용된 메시를 주로 사용하는 전통적인 카드 기반 기술을 활용했습니다. 얇고 정밀한 헤어 스트랜드 묘사, 정확한 셰이딩, 물리 기반 시뮬레이션을 구현하는 이 기술은 그만큼 비용이 많이 들었지만, 그 당시 최선의 방법이었습니다. NVIDIA의 HairWorks가 기술 구현을 지원하기도 했지만, 공식적인 지원은 언리얼 엔진 4.16 버전에서 종료되었습니다. 언리얼 엔진 안에서 네이티브하게 제공되는 최상급 헤어와 퍼를 실시간으로 구현할 수 있는 시대가 왔습니다.
새로운 스트랜드 기반 워크플로로 각 헤어 스트랜드의 움직임을 정확하게 렌더링하여 비주얼 퀄리티를 극적으로 향상시킬 수 있습니다. 언리얼 엔진 4.24는 비주얼 이펙트 에디터 나이아가라(Niagara)를 사용해 다이내믹 통합 기능과 라이트 소스 및 레이 트레이싱 적용 섀도의 다중 스캐터링 기능과 함께 풀(full) 헤어 셰이더 및 렌더링 시스템을 제공합니다.
이 헤어 그룸을 더 사실적으로 표현하기 위해 언리얼 엔진의 다중 스캐터링 기술로 렌더링했습니다.
파이프라인 임포트
언리얼 엔진 4.24 버전은 얼렘빅(Alembic) 파일 형식을 사용해 기존 파이프라인에 쉽게 통합하는 기능과 함께 헤어 렌더링 및 시뮬레이션 개발에 집중했습니다. 언리얼 엔진은 스키마 기반 이름 규칙을 지원하며, Ornatrix, Yeti, XGen과 같은 DCC 애플리케이션의 스태틱 그룸을 언리얼 엔진에 임포트하고 직관적인 방법으로 외부 스튜디오의 상용 헤어 툴에 연동할 수 있습니다.이 스키마 덕분에 ‘width’ 또는 ‘color’ 등의 어트리뷰트와 보간 헤어 시뮬레이션 식별에 사용하는 ‘guide’ 어트리뷰트를 엔진으로 옮길 수 있습니다. 단일 얼렘빅 안의 다수 헤어 그룹은 ‘group_id’를 통해 처리합니다. 많은 인기를 얻은 헤어 그루밍 애플리케이션 Ornatrix와 Yeti를 제작한 개발사와 협업하여 내장형 지원 기능을 함께 제공하고, 얼렘빅 프로토콜로 언리얼 엔진 4.24에 익스포트하는 기능도 제공합니다. 언리얼 얼렘빅 스키마로 XGEN을 활용하는 방법은 이 문서에서 확인하시기 바랍니다.
헤어와 퍼를 임포트하면 스켈레탈 메시에 어태치할 수 있으며, 각 헤어 루트는 메시에서 가장 가까운 트라이앵글에 바인딩됩니다. 이렇게 모프(morph) 변형과 스키닝 변형을 할 수 있으며, 헤어와 퍼를 스킨 애니메이션으로 제한하는 데 중요합니다.
셰이딩과 렌더링
헤어 스트랜드 렌더링의 어려운 점 세 가지는 에일리어싱, 단일 헤어 섬유와 라이트의 상호작용, 헤어 섬유 사이의 라이트 반사입니다.사람의 머리에는 수십만 개의 머리카락이 있고, 각 머리카락의 평균 지름은 약 100㎛입니다. 헤어가 포함된 장면을 생성하려면 픽셀마다 여러 개의 헤어 스트랜드를 렌더링해야 합니다. 언리얼 워크플로로 렌더링하면 임포트한 헤어 스트랜드는 개별 폴리라인(다중선)으로 변환되고 카메라를 마주하는 얇은 트라이앵글 조각으로 렌더링됩니다.
수천 개의 헤어 스트랜드를 생성할 때 어려운 문제 중 하나는 복잡한 스캐터링 동작을 이 시스템 안에 얼마나 더 추가할지 결정하는 것입니다. 이 문제는 언리얼의 물리 기반 헤어 셰이딩 모델로 해결했습니다. 이로써 단일 헤어 스트랜드를 더 사실적으로 표현할 수 있습니다.
각 헤어 스트랜드를 통과하는 라이트를 정확하게 계산하기 위해 복합 딥 오파시티 맵과 런타임 복셀라이제이션을 사용합니다. 헤어 볼륨을 따라 움직인 라이트의 양을 파악한 다음, 듀얼 스캐터링 근사계산을 다중 스캐터링 측정 방법으로 활용해 로컬 라이트 스캐터링을 계산합니다. 이로써 언리얼 엔진은 더 사실적으로 헤어, 그중에서도 전통적으로 구현하기가 더 힘들었던 밝은 금발을 렌더링합니다.
이 헤어 그룸은 XGen으로 생성해서 언리얼 엔진으로 임포트했습니다. 대략 5만 개의 커브를 포함합니다.
시뮬레이션
헤어 시뮬레이션은 나이아가라의 일부로 구현하고 GPU에서 실행할 수 있습니다. 피직스 애셋이 생성되면 시뮬레이션 솔버가 바디 콜리전을 처리합니다. 나이아가라는 셀프 콜리전을 평균 속도 필드에 기반하여 계산하고 처리합니다. 굽은 정도(bend), 펼친 정도(stretch), 두꺼운 정도(thickness)와 같은 조절형 파라미터에는 나이아가라 에디터를 열지 않고 접근할 수 있습니다.성능
고밀도 그룸에는 흔히 수십만 개 또는 수백만 개의 스트랜드가 포함되어 있습니다. 각 스트랜드는 수십 개의 컨트롤 버티스(Control Vertices, CV)를 포함할 수 있습니다. 이 두 요소의 조합은 임포트, 렌더링, 시뮬레이션의 성능에 영향을 줍니다. 고성능 PC에서 실시간으로 구현하기 위해 상대적으로 더 많은 CV 수가 필요한 긴 머리는 평균 5만 개의 스트랜드, 더 적은 CV 수가 필요한 짧은 머리는 평균 20만 개의 스트랜드로 그룸을 생성해 왔습니다.결론
언리얼 엔진 4.24 버전 안에서의 커브 기반 구현이 많은 기대를 받은 이유는 실시간 헤어와 퍼 구현에 중요한 전환점이기 때문입니다. 하지만 이것은 시작에 불과합니다. 언리얼 개발팀의 목표는 언리얼의 품질과 성능을 계속 개선하는 것입니다.셰이딩과 렌더링에서는 헤어 섬유에 대한 라이팅 반응을 더 정확하게 구현할 파라미터를 별도로 제공해 헤어 BSDF를 개선할 계획입니다. 언리얼의 다중 스캐터링 방식으로 실시간 환경 안에서의 밝은색 헤어 표현이 훨씬 개선되었지만, 언리얼 엔진은 계속해서 헤어 퀄리티를 개선할 것입니다.
또한 콜리전 반응, 탄성 머티리얼, 시뮬레이션 시스템을 위한 아트 관련 제어 기능을 계속 개발할 것입니다. 더 풍성하고 밀도가 높은 헤어 그룸을 지원하는 데 최적화된 버전을 앞으로 출시할 예정이며, 모든 플랫폼에 대한 확장성을 지원하기 위해 저성능 디바이스를 위한 카드 생성도 검토하고 있습니다.
언리얼 엔진은 모든 고객이 훌륭한 프로젝트를 출시하는 데 도움이 될 헤어 시스템을 개발하는 데 전력을 기울이고 있습니다. 여러분의 목소리를 반영할 수 있도록 많은 피드백 부탁드립니다. 해당 실험 단계 기능은 지금 사용해 볼 수 있습니다. 언리얼 엔진을 다운로드한 다음 헤어 렌더링과 시뮬레이션 문서를 살펴보시기 바랍니다.