마블러스 디자이너와 언리얼 엔진과의 협력으로 LiveSync 플러그인과 USD 시뮬레이션 데이터 내보내기 기능을 지원합니다. 이번 아티클에서 이 기능들이 어떻게 워크플로우를 향상시킬 수 있는지 설명하겠습니다.
LiveSync 플러그인과 USD 시뮬레이션 데이터 내보내기 기능은 마블러스 디자이너와 언리얼 엔진을 함께 사용하는 유저들의 사용성 향상을 위해 설계되었으며, 각각 다른 목적을 가지고 있습니다.
- LiveSync 플러그인: 이 기능은 번거로운 Import 및 Export 과정을 단순화하는 데 중점을 두고 있습니다. 메시, 텍스처, 스켈레톤 애니메이션, 지오메트리 캐시 등을 한 번의 클릭으로 가져오고 내보낼 수 있습니다.
- USD Export Simulation Data: 언리얼 엔진 5.4의 업데이트된 Chaos Cloth 기능과 함께 사용하도록 개발된 이 기능은 복잡한 의상 데이터를 마블러스 디자이너에서 언리얼 엔진으로 실시간으로 전달하여 사실적인 시뮬레이션 효과를 구현할 수 있게 해줍니다.
이제 아래 요정 캐릭터 애니메이션 시퀀스 예시를 통해 위 두가지 기능이 디자인 및 애니메이션 워크플로우를 어떻게 향상 시킬 수 있는지 알아보겠습니다.
마블러스 디자이너에서 요정 의상 디자인하기
언리얼 엔진 워크플로우로 넘어가기 전에, 마블러스 디자이너에서의 의상 제작 과정을 알아보겠습니다.
1. 기본 티셔츠 메시로 시작하기
마블러스 디자이너는 의상 제작을 시작하는 여러 가지 방법을 제공합니다. 이번 프로젝트에서는 2D 창에 티셔츠 패턴을 드래그하여 기본 메시로 사용했습니다. 스타일 라인 에디터 도구를 이용해 3D 창에서 직접 패턴을 조정하여 티셔츠를 완전히 다른 스타일로 빠르게 변형할 수 있었으며, 실시간으로 2D 패턴에도 반영되었습니다.
2. 레이어와 패브릭 시뮬레이션
마블러스 디자이너는 여러겹의 레이어가 있는 의상을 시뮬레이션 할 때 뛰어난 기능을 보여줍니다. 요정 의상에서는 스커트 패턴을 복제하고 내부 선을 사용해서 레이스 디테일을 추가했습니다. 각 레이어는 의상에 다이나믹함과 입체적인 느낌을 더해줍니다. 다양한 패브릭 특성을 시뮬레이션하기 위해 마블러스 디자이너의 77가지 패브릭 라이브러리에서 Muslin 패브릭 프리셋을 추가했으며, 이는 시뮬레이션 중 스커트의 주름과 움직임을 변화시켜줍니다.
3. 꽃잎 패턴과 주름 효과 만들기
폴리곤 툴 (Polygon Tool) 을 사용하여 사진에서 스커트를 위한 꽃잎 모양을 뽑아낸 후, 내부 폴리곤 툴 (Internal Polygon Too)과 플리츠 툴 (Pleat Tool) 를 이용해 아코디언 주름 효과를 적용했습니다. 그 결과, 아름다운 질감과 움직임을 가진 우아한 여러 레이어 스커트를 완성할 수 있었습니다. 마블러스 디자이너의 새로운 PBR 텍스처 생성기를 통해, 단 한 번의 클릭으로 텍스처 맵 (normal, opacity, metalness, displacement)을 자동으로 생성할 수 있었고, 이를 통해 현실감을 더욱 향상시킬 수 있었습니다.
4. 러플과 탑스티칭 추가하기
마지막 디테일로, 긴 패턴 가장자리를 짧은 쪽에 맞춰 봉제하여 러플을 만들었습니다. 또한, 탑스티치 툴 (Topstitch Tool) 을 사용해 스티치 디테일을 추가하여 의상의 현실감을 더욱 높였습니다.
마블러스 디자이너에서 의상 제작과 초기 시뮬레이션을 완료했다면, 애니메이션 캐싱을 할 차례입니다.
애니메이션 캐싱
먼저, 핀 툴 (Pin Tool)을 사용해 패턴의 가장자리 선을 더블 클릭하여 옷의 특정 부분을 캐릭터 모델에 고정합니다. 이렇게 하면 전체 선이 빠르게 고정됩니다. 또한, 택 툴 (Tack Tool)을 사용해 패브릭을 아바타에 고정시키면서, 패브릭과 아바타 사이의 거리를 조절할 수 있는 길이 조정도 가능합니다.
애니메이션을 캐시하려면 시뮬레이션 프리셋을 애니메이션으로 변경하고, 하늘을 나는 요정 같은 효과를 내기 위해 중력 값을 낮추고 공기 저항을 높입니다. 모든 설정을 완료한 후, 녹화 버튼을 클릭해 애니메이션 캐시를 시작합니다. 이 캐시는 이후 언리얼 엔진으로 내보낼 수 있는 모든 시뮬레이션 데이터를 저장하여, 모든 시뮬레이션 효과를 완벽하게 보존할 수 있습니다.
릴리 제작 과정
씬에 있는 식물도 마블러스 디자이너로 모델링하고 시뮬레이션했습니다. 애니메이션 녹화 과정에서 바람의 위치와 각도를 실시간으로 조정하여 자연스러운 동적 효과를 연출할 수 있습니다.
마블러스 디자이너의 키프레임 편집 도구는 프레임이 끊기지 않는 완벽한 반복 애니메이션을 생성할 수 있어 게임 시퀀스에 이상적입니다. 비디오 편집 도구와 유사하게 레이어를 잘라내거나 가로로 이동할 수 있으며, 첫 프레임을 복사해 애니메이션 끝에 붙여 넣어 마지막 프레임이 첫 프레임과 자연스럽게 이어지도록 합니다. 이를 통해 완벽한 순환 애니메이션을 만들 수 있습니다.
애니메이션이 완료된 후, 요정의 의상과 칼라 백합을 LiveSync 플러그인을 사용하여 언리얼 엔진으로 가져왔습니다. 이 플러그인은 Import 시에 머테리얼, 애니메이션, 텍스처의 정확성을 유지해 줍니다.
LiveSync로 언리얼 엔진에 내보내기
요정의 의상이 완성되었으니 이제 LiveSync 플러그인을 사용해 애니메이션을 언리얼 엔진으로 내보낼 차례입니다.
LiveSync를 설치하고 활성화한 후, 마블러스 디자이너가 실행 중인지 확인하고, 언리얼 엔진에서 LiveSync 에디터를 열어 "업데이트" 버튼을 클릭합니다.
이제 마블러스 디자이너의 씬이 LiveSync 에디터로 가져와집니다. 에디터에서는 마블러스 디자이너에서 할당된 패브릭에 따라 셰이더 볼이 자동으로 생성된 것을 확인할 수 있습니다. 통합 머테리얼 기능을 활성화하고 다시 업데이트를 클릭하면, 플러그인이 UV 좌표에 기반한 unified 머테리얼을 생성해 줍니다.
LiveSync 플러그인의 기능은 Import로만 제한되지 않습니다. MetaHuman 캐릭터나 기타 스켈레탈 메시도 언리얼 엔진에서 마블러스 디자이너로 내보내고 가져올 수 있습니다. 이를 통해 캐릭터 의상을 만들고 시뮬레이션하는 과정이 훨씬 쉬워집니다.
모든 에셋이 성공적으로 가져와진 후, 언리얼 엔진의 시퀀서(Sequencer)를 사용해 최종 씬을 애니메이션화하고 렌더링했습니다. 요정의 의상, 날개, 그리고 칼라 백합과 같은 환경 요소들은 모두 마블러스 디자이너에서 모델링되고 시뮬레이션된 후, LiveSync 플러그인을 통해 언리얼 엔진과 동기화되었습니다.
USD Export Chaos Cloth 활용
LiveSync 플러그인은 언리얼 엔진을 사용한 애니메이션 렌더링, 비디오 제작, 그리고 시네마틱에 적합합니다. 또한, 마블러스 디자이너에서 배경 에셋(예: 이 씬의 릴리)을 가져오는 데에도 사용할 수 있습니다. 하지만 실시간 패브릭 시뮬레이션을 원하는 사용자에게는 마블러스 디자이너의 USD Export Simulation Data 지원이 매우 유용하게 활용될 수 있습니다. 특히 언리얼 엔진의 Chaos Cloth와 결합했을 때 그 효과를 극대화할 수 있습니다. 이제 이 과정을 단계별로 살펴보겠습니다:
Chaos Cloth 최적화: 요정의 의상은 복잡한 레이어링이 특징이어서 언리얼 엔진에 Import 전에 최적화가 필요했습니다. 이를 위해 드레스를 스킨 메쉬, 시뮬레이션 메쉬, 그리고 렌더 메쉬, 세가지 부분으로 나눴습니다.
오토 리토폴로지 및 리깅: 시뮬레이션이 필요하지 않은 의상은 캐릭터의 몸에 스킨된 상태로 설정됩니다. 몸에 딱 맞는 의상은 시뮬레이션에 포함될 필요가 없습니다. 마블러스 디자이너의 EveryWear Toolkit을 사용하여 자동 리토폴로지와 리깅을 작업을 했습니다.
EveryWear는 게임용 가상 의상을 자동으로 최적화하는 도구입니다. 마블러스 디자이너의 Quad Optimize 옵션을 사용하면 오토 리토폴로지가 가능합니다. 또한 EveryWear 도구를 사용하여 폴리곤 수를 줄일 수 있습니다. 리깅 기능도 EveryWear Toolkit에 포함되어 있습니다.
먼저 영향 주는 최대 관절 수를 지정할 수 있습니다. 언리얼 엔진은 최대 8개의 관절을 지원하므로 8로 설정합니다. '적용'을 클릭하면 본체 메쉬의 무게가 자동으로 의상에 복사됩니다. 스킨 무게는 브러시 도구를 사용하여 칠하고 부드럽게 만들 수 있습니다. 또한 Hammer Tool과 Repair brushes를 사용해서 교차점을 수정할 수 있습니다.
이 요정의 드레스에서 가장 큰 챌린지는 스커트의 레이어가 너무 많아 무겁고 복잡하다는 점이었습니다. 스커트를 최적화하는 방법으로, 우리는 지오메트리 형태 대신 텍스처로 여러 레이어를 표현하는 방식을 사용했습니다. 먼저 스커트를 두 부분으로 나누고 펼친 후, 단순화된 프록시 모델을 생성했습니다. 그런 다음 orthographic 뷰를 사용하여 다양한 AOV 채널을 텍스처 맵으로 렌더링했습니다. 이렇게 함으로써 기하학적 복잡성은 크게 줄어들었고, 텍스처가 레이어된 복잡성의 착시 효과를 주었습니다.
(왼쪽 이미지는 마블러스 디자이너에서 펼쳐진 스커트를 보여주고, 오른쪽 이미지는 이러한 레이어들이 텍스처로 어떻게 표현되는지를 설명합니다.)
폴리곤 수 최적화
모델을 더 최적화하려면 폴리곤 수를 줄여야 합니다. 이를 위한 한 가지 방법은 마블러스 디자이너에서 입자 거리 (Particle Distance) 를 증가시키는 것입니다. 3D에서 원단을 시뮬레이션할 때, 랜텀한 삼각메시가 더 자연스러운 주름을 만들어내는 경향이 있습니다. 삼각형 메쉬를 사용하면 언리얼 엔진의 Chaos Cloth와 잘 호환되므로, 리토폴로지나 쿼드로 변환할 필요가 없습니다. 입자 거리 값을 증가시키면 폴리곤 수를 줄일 수 있습니다. 또 다른 중요한 요소는 충돌 두께를 증가시키는 것으로, 이는 원단 레이어 간의 분리를 더 많이 만들어냅니다. 이 경우, 충돌 두께는 기본값인 2.5mm에서 5mm로 증가시켜 Chaos Cloth에서 더 좋은 결과를 얻을 수 있었습니다.
USD 파일 내보내기
모델의 최적화 작업이 끝나면 USD 파일을 Export 할 수 있습니다. Export 설정에서 모든 아바타를 내보내는 옵션을 해제하고, select multiple objects를 선택한 후 "두께 (thick)" 옵션과 unified UV coordinates를 활성화합니다. 중요한 점은 의상 시뮬레이션 데이터 포함 옵션 (Include garment simulation data) 을 활성화하는 것입니다. 이렇게 하면 마블러스 디자이너에서 설정한 모든 물리적 속성(수축 및 충돌 설정 등)이 보존되어, 언리얼 엔진의 Chaos Cloth가 이를 읽을 수 있게 됩니다.
언리얼 엔진에서의 ClothAsset 설정
언리얼 엔진으로 돌아가면 ClothAsset을 생성해야 합니다. 마블러스 디자이너에서 내보낸 USD 파일을 가져오고, 마블러스 디자이너의 LiveSync 플러그인을 사용해 Import한 스켈레탈 메시를 선택합니다. 이 과정에서 의상은 캐릭터에 스킨이 됩니다. 미리보기 장면에서 동일한 스켈레탈 메시를 다시 선택해야 합니다.
최대 거리 속성에 대한 가중치 페인팅
그 다음으로, 최대 거리 (maximum distance) 속성에 대한 가중치를 페인팅합니다. 이 속성은 어떤 부분의 원단이 시뮬레이션에 포함될지 결정합니다. 값이 0인 부분은 시뮬레이션되지 않고 캐릭터의 몸에 직접 스킨이 됩니다. 부드러운 브러시를 사용하여 가중치에 그라디언트 효과를 만들 수 있습니다. 가중치 페인팅은 2D 또는 3D 보기에서 할 수 있습니다. 2D에서 작업할 경우, 패턴의 레이아웃과 배열은 마블러스 디자이너의 2D 창에서 보는 것과 동일합니다. 가중치 페인팅을 쉽게 하려면, USD 파일을 내보내기 전에 패턴의 배치에 신경을 써야 합니다. 패턴 조각들이 너무 가까이 배치되거나 겹치지 않도록 주의하세요. 가중치 페인팅을 마친 후, ‘Accept’를 클릭하여 시뮬레이션 결과를 미리볼 수 있습니다.
우리가 페인팅한 가중치 값은 SimulationMaxDistanceConfig 노드를 사용하여 조정할 수 있습니다. 이 노드는 가장 높은 값과 가장 낮은 값의 가중치를 제어합니다. 최대 값을 낮추면 시뮬레이션을 더욱 최적화할 수 있습니다.
패브릭 물리 속성
다음 세 개의 노드는 원단의 물리적 속성을 정의하는 데 사용됩니다. 원단 속성 조정은 보통 옷 시뮬레이션에서 가장 복잡한 부분이지만, 마블러스 디자이너에서 물리적 속성을 내보냈기 때문에 이 단계는 훨씬 간단해집니다. 각 파라미터에서 화살표 아이콘을 활성화하면 마블러스 디자이너에서 가져온 원단 속성을 직접 사용할 수 있습니다.
또한, 각 노드 옆에 있는 의상 아이콘을 통해 마블러스 디자이너에서 생성한 가중치 맵을 사용할 수 있습니다. 마블러스 디자이너에서 각 패턴에 다른 원단 프리셋이 적용되며, 가중치 맵은 USD 파일과 함께 자동으로 내보내집니다.
의상이 캐릭터의 몸과 충돌하도록 만들기 위해서는 physics asset을 생성해야 합니다. 이 에셋은 Unreal Engine에서 SetPhysicsAsset 노드에 추가해야 합니다.
기타 주요 의상 시뮬레이션 노드
- SimulationCollisionConfig: 패브릭의 두께와 마찰을 제어합니다. 화살표 아이콘을 활성화하면 마블러스 디자이너에서 가져온 값을 사용할 수 있습니다.
- Self Collision: 기본적으로 최적화를 위해 비활성화되어 있습니다. 이를 활성화하면 기본적인 자체 충돌이 가능하며, sphere가 사용되며 처리됩니다. 더 정밀하지만 비용이 더 많이 드는 충돌 처리는 SimulationSelfCollisionConfig 노드를 통해 사용할 수 있습니다.
- SimulationSolverConfig: 이 노드는 global setting solver 세팅을 관리합니다. 반복 횟수를 증가시키면 제약의 강도가 강화되지만 CPU 로드가 커집니다. Substep 값을 조정하여 충돌 정확도를 높일 수 있으나, 이는 CPU 로드를 증가시킵니다. 두 설정 모두 성능과 정확도를 위한 최적화가 필요합니다.
시뮬레이션에 공기 역학적 효과를 추가할 수도 있습니다. 윈드 필드를 도입하면, 옷이 정지 상태에서 자연스럽게 움직이며 캐릭터가 더 사실감 있게 보이게 됩니다.
Level of Detail (LOD) 설정
프리셋의 마지막 부분은 LOD(디테일 수준) 설정을 구성하는 것입니다. 캐릭터와 카메라의 거리에 따라 다른 LOD가 활성화됩니다. 이전에 설정한 물리적 속성은 상단 컬렉션에 연결됩니다. 중간 LOD 컬렉션에는 메쉬 밀도를 줄이기 위해 Remesh 노드가 추가됩니다. 하단 컬렉션은 스키닝 노드에서 직접 연결되며, 동적 시뮬레이션을 포함하지 않습니다. 게임 플레이 중 언제든지 옷 시뮬레이션이 활성화되기를 원하면 이 컬렉션을 제거할 수 있습니다.
시뮬레이션 메쉬와 렌더 메쉬 결합
프록시 모델이 시뮬레이션에 사용되었다면,Delete Elements 노드를 사용하여 렌더 메쉬에서 해당 프록시 모델을 제거해야 합니다. 그런 후, 정밀한 렌더 메쉬를 정적 메쉬나 USD Import 노드를 통해 가져옵니다. 그런 다음 Merge Cloth Collection 노드를 사용하여 시뮬레이션 메쉬와 새로운 렌더 메쉬를 결합합니다.
캐릭터 블루프린트에서 최종 설정
캐릭터 블루프린트에서 Chaos Cloth Component를 추가하고 이를 캐릭터에 부모로 설정합니다. 방금 생성한 의상 에셋을 선택하고, 필요에 따라 위치 및 회전 매개변수를 조정합니다. 그런 다음 블루프린트를 컴파일하고 저장합니다.
이제 의상은 실시간 패브릭 시뮬레이션 속성을 가지며, 게임 환경에서 자연스럽게 반응하게 됩니다.
시네마틱시퀀스나 인게임 에셋을 제작할 때, Marvelous Designer의 LiveSync 플러그인과 USD Export Simulation Data의 조합은 원활하고 효율적인 워크플로우를 제공합니다. 이 기능들은 세밀한 시뮬레이션을 가능하게 하며 빠른 반복 작업을 지원하여 생산성을 크게 향상시킵니다.
요정 모델과 의상 파일을 공식 CONNECT 스토어에서 무료로 다운로드할 수 있습니다. (이 파일들은 교육용으로 제공되며 상업적인 용도로 사용할 수 없습니다.)
댓글을 남기려면 로그인하세요.