FBX 스켈레탈 메시 파이프라인

FBX 콘텐츠 파이프라인을 사용하여 스켈레탈 메시를 임포트, 익스포트하고 셋업하는 방법입니다.

Windows
MacOS
Linux

FBX 임포트 파이프라인의 스켈레탈 메시가 지원되어, 효율적인 방식으로 게임에서 사용할 애니메이션 메시를 3D 어플리케이션에서 언리얼로 구해올 수 있게 되었습니다. 임포트되는 메시에 더해, 애니메이션과 모프 타깃도 원한다면 모두 같은 파일 안에서 FBX 포맷으로 전송할 수 있습니다. 또한 3D 어플리케이션에서 그 메시에 적용되었던 머티리얼에 사용된 텍스처( 디퓨즈와 노멀맵만이긴 해)도 임포트하여 머티리얼을 자동으로 만든 다음 임포트된 메시에 적용합니다.

FBX 를 사용한 스켈레탈 메시 임포트에 지원되는 것들은:

현재 각 스켈레탈 메시에 대해 하나의 애니메이션만 하나의 파일로 임포트할 수 있습니다. 다만 한 스켈레탈 메시에 대한 여러 모프 타깃은 한 파일로 전송할 수 있습니다.

이 문서는 언리얼 에디터로 스켈레탈 메시를 임포트하기 위해 FBX 콘텐츠 파이프라인을 사용하는 법에 대한 기술적인 개요서입니다. 개발 환경에서 FBX 콘텐츠 파이프라인 작업에 관련된 자세한 정보, 팁에 대해서는 FBX 우수 사례 페이지를 확인하시기 바랍니다.

UE4 FBX 임포트 파이프라인은 FBX 2018 버전을 사용합니다. 다른 버전을 사용하면 호환성에 문제가 생길 수 있습니다.

이 문서에서 애셋 임포트 버튼을 누르라는 경우, 그냥 OS 의 파일 브라우저에서 FBX 파일을 클릭하여 끌어 놓아도 됩니다.

이 페이지에는 Autodesk Maya 와 Autodesk 3ds Max 모두에 대한 정보가 포함되어 있습니다. 아래에서 선호하는 툴을 선택하시면 그 툴에 관련된 정보만 표시됩니다:

3D 아트 툴 선택

Autodesk Maya

Autodesk 3ds Max

일반 셋업

단일 메시 vs 다조각 메시

스켈레탈 메시는 하나의 연속적인 메시로, 아니면 모두 동일한 스켈레탈 메시에 스키닝된 여러 개의 메시로 이루어질 수도 있습니다.

multipart.png

여러 개의 메시를 사용하면 LOD 를 각 부분마다 다르게 할 수도 있고, 모듈식 캐릭터 시스템에서 사용할 부분을 별도로 익스포트할 수도 있습니다. 스켈레탈 메시를 이런 식으로 만든다고 별도의 퍼포먼스 비용이 드는 것은 아닙니다. 언리얼 에디터로 임포트될 때 모든 각각의 부분이 합쳐집니다.

리깅

리깅(Rigging)이란 메시를 본/조인트의 스켈레탈 계층구조에 바인딩하는 것을 말합니다. 그렇게 하면 아래 놓인 스켈레톤의 본/조인트가 움직이면서 메시의 버텍스를 변형(deform)시키는 식으로 영향을 끼치게 할 수 있습니다.

UE4 인스톨 경로\Engine\Extras\Maya_AnimationRiggingTools\MayaTools 안에 Maya용 애니메이션 & 리깅 툴 을 찾을 수 있습니다. 이 툴을 통해 Maya에서 매우 자세한 캐릭터 리깅과 애니메이션 솔루션이 가능합니다.

스켈레톤

Maya에서는 스켈레탈 메시용 스켈레톤을 만드는 데 보통 Joint Tool 을 사용합니다. 여기서도 물론, Maya 툴 사용법이나 릭 제작법 관련 튜토리얼은 셀 수도 없습니다. Maya 도움말 역시 괜찮은 정보원입니다.

3dsMax 에서 스켈레탈 계층구조를 어떻게 만들 것인가는 여러분께 달렸습니다. 아주 잘 돌아가는 표준 Bones Tools 를 사용해도 되고, 완전 자신만의 모양으로 제어되는 자체 오브젝트 계층구조를 만들어도 됩니다. 스키닝 방법은 많이 있으며, 게임 캐릭터의 애니메이션 릭을 만드는 법에 대한 튜토리얼도 쌓여 있습니다. 툴 작동법에 대한 세부적인 내용은 3dsMax 도움말을 참고해도 됩니다.

max_rig.png

바인딩

Maya에서는, Smooth Bind 명령을 사용하여 메시를 스켈레톤에 바인딩합니다. 스켈레탈 메시가 하나의 온전한 메시로 되어 있든, 여러 메시 조각으로 기워져 있든, 절차는 같습니다.

  1. 바인딩할 메시를 선택합니다.

  2. 스켈레톤의 루트 조인트를 Shift + 선택합니다.

  3. Skin > Bind Skin 메뉴에서 Smooth Bind 를 선택합니다.

    maya_skin_3.jpg

  4. 이제 각 본에 대한 메시의 버텍스 웨이트를 조절하여 어느 버텍스가 어느 본에 어느 정도로 영향받는지를 결정할 수 있습니다. 이 작업은 Paint Skin Weight Tool 이든 다른 어떤 방법으로선 좋을 대로 해 주면 됩니다.

3dsMax 에서, 메시는 Skin 모디파이어를 사용하여 스켈레톤에 바인딩해야 합니다. 스켈레탈 메시가 하나의 온전한 메시로 되어 있든, 여러 메시 조각으로 기워져 있든, 절차는 같습니다.

  1. 바인딩할 메시를 선택합니다.

    max_skin_1.png

  2. Modifier List 에서 Skin 모디파이어를 추가합니다.

    max_skin_2.jpg

  3. Skin 모디파이어의 Parameters 롤아웃(펼쳐나오는 부분)에서, skin_add_button.jpg버튼을 클릭하여 메시에 영향을 끼칠 본을 추가합니다. Select Bones 창이 열릴 것입니다.

    max_skin_3.jpg

  4. Select Bones 창에서 본을 선택한 다음 Select 버튼을 클릭하여 본을 추가합니다.

    max_skin_4.jpg

  5. 본이 모디파이어의 Bones 목록에 표시됩니다.

    max_skin_5.jpg

  6. 이제 각 본에 대한 메시의 버텍스 웨이트를 조절하여 어느 버텍스가 어느 본에 어느 정도로 영향받는지를 결정할 수 있습니다. 이 작업은 엔벨롭이든 버텍스 웨이티를 직접 입력해서든 다른 어떤 방법으로든 좋을 대로 해 주면 됩니다.

    max_skin_6.png

피벗 포인트

언리얼 엔진 내 메시의 피벗 포인트는 트랜스폼(트랜슬레이션, 로테이션, 스케일)이 이루어지는 중심점을 결정합니다.

pivot.png

스켈레탈 메시의 피벗 포인트는 항상 스켈레톤의 루트 본/조인트에 위치합니다. 즉 스켈레톤의 루투는 씬 어디에 있어도 상관 없다는 뜻입니다. 그렇기에 3D 모델링 어플리케이션에서 익스포트할 때 원점(0,0,0)에 있습니다.

pivot_root.png

트라이앵글화

그래픽 하드웨어는 트라이앵글만 취급하기에 언리얼 엔진의 메시는 트라이앵글화 시켜야 합니다.

tris.jpg

메시를 확실히 트라이앵글화 시키는 방법은 여럿 있습니다.

  • 메시 모델링을 트라이로만 - 최상책으로, 최종 결과물에 최고의 컨트롤이 가능합니다.

  • 3D 앱에서 매시를 트라이앵글화 - 차선책으로, 익스포트 전 정리(cleanup)와 변경이 가능합니다.

  • 임포터가 메시를 트라이앵글화 - 그럭저럭, 정리는 안되지만 단순 메시에는 괜찮을 수 있습니다.

  • FBX 익스포터가 메시를 트라이앵글화 - 그럭저럭, 정리는 안되지만 단순 메시에는 괜찮을 수 있습니다.

주: FBX 익스포터가 메시를 트라이앵글화 시킬 수 있도록 하면, Split Non-Matching Triangles (불일치 트라이앵글 분할) 옵션을 켰을 때 스무딩이 완전히 뒤섞입니다. FBX 트라이앵글화된 메시를 Maya 로 도로 임포트한 뒤 다시 익스포트하면 스무딩이 제대로 나옵니다.

3D 어플리케이션에서는 항상 에지의 방향과 위치를 조절하여 메시를 수동으로 트라이앵글화해 주는 것이 좋습니다. 자동 트라이앵글화는 바람직하지 못한 결과가 날 수 있습니다.

tris_bad.jpg

노멀맵 만들기

메시에 대한 노멀맵은 저해상도 렌더 메시와 고해상도 디테일 메시를 둘 다 만드는 식으로 대부분의 모델링 어플리케이션 안에서 직접 만들 수 있습니다.

SideBySide.jpg

고해상도 디테일 메시의 지오메트리는 노멀 맵의 노멀을 생성하는 데 사용됩니다. 에픽 내부적인 작업방식에서는 이 프로세스에 XNormal 을 도입하며, 일반적으로 언리얼 엔진 4 안에서 렌더링할 때 훨씬 나은 노멀이 생성됩니다. 이 프로세스 관련 상세 내용은 노멀맵 생성 안내 문서를 참고해 주시기 바랍니다.

머티리얼

외부 어플리케이션에서 모델링한 메시에 적용된 머티리얼은 메시와 함께 익스포트된 다음 언리얼 에디터로 임포트됩니다. 텍스처를 따로 언리얼 에디터에 임포트한다거나, 머티리얼을 만들어서 적용한다거나 할 필요가 없으니, 그 과정이 효율화됩니다. FBX 파이프라인 사용시 임포트 과정에서 이러한 모든 작업을 해줄 수 있습니다.

이 머티리얼은 특정한 방식으로 셋업해 줄 필요도 있는데, 메시에 머티리얼이 여러 개 있거나 메시에 있는 머티리얼의 순서가 중요하거나 할 때 (즉 머티리얼 0 은 몸통이 되고 머티리얼 1 은 머리가 되어야 하는 모델인 경우) 특히나 그렇습니다.

익스포트용 머티리얼 셋업 관련 자세한 내용은 FBX 머티리얼 파이프라인 페이지를 참고하시기 바랍니다.

버텍스 컬러

스켈레탈 메시용 버텍스 컬러는 (한 세트만) FBX 파이프라인을 사용하여 전송 가능합니다. 별다른 셋업은 필요치 않습니다.

vertex_color.jpg

3D 앱에서 메시 익스포트

스켈레탈 메시는 개별적으로 익스포트하거나 여러 메시를 하나의 FBX 파일로 익스포트할 수도 있습니다. 임포트 파이프라인은 여러 개의 스켈레탈 메시를 대상 패키지 안에 여러 개의 애셋으로 나누어 넣습니다.

  1. 뷰포트에서 익스포트할 메시와 조인트를 선택합니다.

    meshAndJointsSel.png

  2. File 메뉴에서 Export Selection (또는 선택된 것과 상관없이 씬에 있는 모든 것을 익스포트하려면 Export All) 를 선택합니다.

    maya_export_2.jpg

  3. 메시를 익스포트할 FBX 파일 위치와 이름을 선택한 다음 FBX Export 대화창에서 옵션을 적절히 선택해 주고 maya_export_button.jpg버튼을 눌러 메시를 담는 FBX 파일을 만듭니다.

    maya_export_3.jpg

  1. 뷰포트에서 익스포트할 메시와 본을 선택합니다.

    max_export_1.png

  2. File 메뉴에서 Export Selected (또는 선택된 것과 상관없이 씬에 있는 모든 것을 익스포트하려면 Export All) 를 선택합니다.

    max_export_2.jpg

  3. 메시를 익스포트할 FBX 파일 위치와 이름을 선택한 다음 max_save_button.jpg버튼을 클릭하십시오.

    max_export_3.jpg

  4. FBX Export 대화창에서 적절한 옵션을 선택한 다음 max_ok_button.jpg버튼을 클릭하여 메시를 담는 FBX 파일을 만듭니다.

    max_export_4.jpg

메시 임포트

  1. 콘텐츠 브라우저에서 button_new.png 버튼을 클릭한 다음 임포트 를 선택합니다. 열리는 파일 브라우저에서 임포트하려는 FBX 파일 위치로 찾아가 선택합니다. 주: 불필요한 파일을 걸러내려면 드롭다운에서 import_fbxformat.jpg 를 선택하면 됩니다.

    import_file.jpg

    임포트된 애셋의 경로는 임포트시 콘텐츠 브라우저의 현재 위치에 따라 달라집니다. 임포트 전 적절한 폴더로 이동해 주시기 바랍니다. 물론 임포트 완료 후 임포트된 애셋을 새로운 폴더로 끌어 옮겨도 됩니다.
  2. FBX Import Options 대화창에서 적절히 세팅해 줍니다. 기존 스켈레톤을 공유하지 않는 메시를 임포트하는 경우 디폴트 세팅으로 충분할 것입니다. 모든 세팅에 대한 세부적인 내용은 FBX 임포트 대화창 부분을 참고하시기 바랍니다.

    SkeletalMeshFBXOptions.png

    임포트중인 스켈레탈 메시가 기존 스켈레톤을 공유한다면, 스켈레톤 선택 드롭다운 메뉴를 클릭하고 리스트에서 스켈레톤 애셋을 선택합니다.

    FBX Skeletal Mesh Skeleton Browser

  3. Import Button 버튼을 눌러 메시를 임포트합니다. 임포트에 성공하면 콘텐츠 브라우저에 결과 메시(는 물론 옵션을 켠 경우 머티리얼과 텍스처 역시)가 표시됩니다.

    ImportedCharacter.png

    페르소나에서 임포트된 메시를 살펴보면, 임포트가 제대로 되었는지 확인할 수 있습니다.

스켈레탈 메시 LOD

스켈레탈 메시가 카메라에서 멀어져 감에 따라 그 영향력을 제한하기 위해, 게임내 레벨 오브 디테일(LOD) 을 활용할 수 있습니다. 일반적으로 각 레벨 오브 디테일에는 트라이앵글 수도 적고, 스켈레톤도 단순하며, 적용된 머티리얼(들)도 단순하게 마련이라는 뜻입니다.

이러한 LOD 메시를 익스포트/임포트하는 데 FBX 파이프라인을 사용할 수 있습니다.

LOD 구성

일반적으로 풀-디테일의 베이스 메시에서 최저-디테일의 LOD 메시에 이르기까지, 복잡도가 다양한 모델을 만들어 LOD 를 처리합니다. 이들 모두 같은 기준점으로 정렬되어 같은 공간을 차지하면서, 모두 같은 스켈레톤에 입히(skin)기도 해야 합니다. 3D 어플리케이션에서 다수의 개별 메시로 스켈레탈 메시를 이루는 것도 가능합니다. 이들 각 부분에 나머지 메시와 다른 LOD 를 갖게 할 수 있습니다. 즉 일부는 각기 다른 LOD 버전을 사용하면서 일부는 높은 디테일 버전을 계속 사용할 수 있는 것입니다. 각 LOD 메시에 완전히 다른 머티리얼을, 그 갯수 조차 달리 해서 할당할 수도 있습니다. 즉 베이스 메시는 여러 머티리얼을 통해 확대시 바라는 만큼의 디테일을 낼 수 있도록 하면서도, 디테일이 눈에 띄지 않는 부분에는 단일 머티리얼을 사용하여 낮은 디테일 메시를 사용할 수도 있습니다.

  1. 모든 메시를 (베이스와 LOD) 베이스에서 마지막 LOD 까지 순서대로 선택합니다. 순서대로 추가되니 복잡도 순서를 유지하기 위해서는 중요합니다. 편집 메뉴에서 레벨 오브 디테일 > 그룹 명령을 선택합니다.

    maya_lod_group.jpg

  2. LOD Group 아래 모든 메시가 그룹되어 있을 것입니다.

    maya_lod_contents.jpg

  1. 모든 메시를 (베이스와 LOD, 순서와 무관하게)선택한 다음 그룹 메뉴의 그룹 명령을 선택합니다.

    max_lod_group.jpg

  2. 열리는 대화창에 새 그룹 이름을 입력하고 max_lod_ok_button.jpg 버튼을 눌러 그룹을 만듭니다.

    max_lod_group_name.jpg

  3. max_utilities_button.jpg버튼을 눌러 유틸리티 패널을 띄운 다음 레벨 오브 디테일 유틸티를 선택합니다. 주: max_utility_more_button.jpg를 클릭한 다음 목록에서 선택해 줘야 할 수도 있습니다.

    max_lod_utility.jpg

  4. 그룹을 선택한 상태로 max_lod_create_button.jpg버튼을 눌러 새로운 LOD 세트를 만들고, 선택된 그룹에 있는 메시를 추가합니다. 메시의 순서는 복잡도에 따라 자동으로 결정됩니다.

    max_lod_contents.jpg

다조각 LOD

다조각 스켈레탈 메시용 LOD 구성 작업은, LOD 를 가진 개별 조각마다 LOD 그룹이 있다는 점만 제외하고는, 풀 메시용 LOD 구성 작업과 거의 같습니다. 그 개별 LOD 그룹 구성 과정도 위에 서술한 과정과 같습니다.

LOD 익스포트

스켈레탈 메시 LOD 를 익스포트하려면:

  1. 익스포트할 LOD 그룹과 조인트를 선택합니다.

    meshAndJointsSel.png

  2. 베이스 메시에 사용한 (위의 메시 익스포트 부분) 익스포트 절차를 그대로 따릅니다.

  1. 익스포트할 LOD 세트와 본을 이루는 메시 그룹을 선택합니다.

    max_export_1.png

  2. 베이스 메시에 사용한 (위의 메시 익스포트 부분) 익스포트 절차를 그대로 따릅니다.

LOD 임포트

스켈레탈 메시 LOD 는 페르소나메시 디테일 패널 내 LOD 세팅 아래에서 쉽게 임포트할 수 있습니다.

  1. 페르소나 에서 LOD 를 적용하고자 하는 스켈레탈 메시 를 연 다음 메시 탭으로 갑니다.

  2. 메시 디테일 패널에서 창 스크롤을 내려 LOD 세팅 섹션에서 LOD 임포트 옵션을 클릭합니다.

    LOD_Import.png

  3. 열리는 파일 탐색기에서 임포트하고자 하는 FBX 파일을 찾아 선택합니다.

    ImportFileBrowser.png

  4. 임포트된 LOD 가 메시 디테일 패널에 추가됩니다.

    LOD_Added.png

  5. 각 LOD 아래 Screen Size 세팅은 언제 LOD 를 사용할지를 나타냅니다.

    LODs_Set.png

    주: 수치가 작을 수록 멀리 있을 때 LOD 를 사용하고, 클 수록 가까이 있을 때 LOD 를 사용합니다. 위 그림에서 LOD0 은 스켈레탈 메시 에 가까이 있을 때 사용되는 반면, LOD1 은 멀리 있을 때 사용됩니다.

  6. LOD 를 임포트 또는 추가할 때, Reduction Settings (감소 세팅)으로 LOD 를 조정할 수도 있습니다.

    LOD_ReductionSettings.png

언리얼 에디터에서 FBX 로 익스포트

이전에 언리얼 에디터로 임포트한 스켈레탈 메시는 콘텐츠 브라우저 안에서 FBX 파일로 다시 익스포트할 수 있습니다.

쿠킹된 패키지에 있는 애셋은 익스포트 불가능합니다. 쿠킹해 버리는 소스 데이터가 익스포트 과정에 필요하기 때문입니다.

  1. 콘텐츠 브라우저에서 익스포트하려는 스켈레탈 메시를 선택합니다.

    SelectSkeletalMesh.png

  2. 스켈레탈 메시에 우클릭하고 애셋 액션 > 익스포트 를 누릅니다.

    ExportMenu.png

  3. 뜨는 파일창에서 익스포트할 파일 위치와 이름을 선택합니다. 주: 파일 종류로 FBX 파일 (*.FBX) 가 선택되었는지 확인하세요.

    export_file.jpg

피직스 애셋

피직스 애셋 툴(PhAT)의 자세한 사용법은 피직스 애셋 툴 사용 안내서를 참고해 주시기 바랍니다.

애니메이션

FBX 콘텐츠 파이프라인을 사용하여 애니메이션을 만들고 임포트하는 법 관련 세부 내용은, FBX Animation Pipeline KR (FBX 애니메이션 파이프라인) 페이지를 확인하시기 바랍니다.

모프 타깃

FBX 콘텐츠 파이프라인을 사용하여 모프 타깃을 만들고 임포트하는 법 관련 세부 내용은, FBX Morph Target Pipeline KR (FBX 모프 타깃 파이프라인) 페이지를 확인하시기 바랍니다.

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼