UDN
Search public documentation:

AnimationMirroringKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 애니메이션 > 애니메이션 미러링
UE3 홈 > 애니메이터 > 애니메이션 미러링

애니메이션 미러링


문서 변경내역: James Golding 작성. James Tan 업데이트. 홍성진 번역.

개요


게임에서 미러 이미지로 된 애니메이션이 필요한 경우가 종종 있습니다. 예를 들어 '왼쪽 보기' 와 '오른쪽 보기' 버전 애니메이션이 둘 다 필요한 경우가 있습니다. 3DSMax, 마야같은 3D 콘텐츠 제작 프로그램으로 이 애니메이션을 둘 다 만든 다음 엔진에 임포트할 수도 있지만, 이상적이지는 않습니다. 왜냐면 가끔은 직접 생성하여 애니메이션 다이내믹 블렌딩을 미러링하는 것이 바람직할 수가 있기 때문입니다. 이 시스템을 사용하기 위해서는 스켈레톤이 대칭을 이루어야 합니다.

SkeletalMeshMirrorExample.jpg

스켈레탈 메시 셋업하기


미러링 사용 전, 스켈레탈 메시에 있는 미러 테이블을 셋업해 줘야 합니다. 애님세트 에디터 에서 열어 보면, 오른편에 있는 메시 탭에서 미러 세팅을 찾을 수 있습니다. 먼저 셋업해 줘야 하는 것은 SkelMirrorAxis (스켈 미러 축)으로, 스켈레탈 메시를 거울에 비출 기준축을 정하는 것입니다. 참고로 이는 메시 스페이스에 있는 것으로, RotOrigin 적용 전 3D 콘텐츠 제작 프로그램에서 메시가 제작되었던 기준 프레임입니다. 다음으로 설정해 줄 것은 SkelMirrorFlipAxis (스켈 미러 플립 축)입니다. 본 트랜스폼을 미러링할 때, 본이 뒤집히지 않도록 하려면 한 축으로 접어 줘야 합니다. 어느 축으로 뒤집을 것인가는 스켈레톤의 구조에 따라 달라지기에, 사용할 디폴트 축을 이 세팅으로 조정할 수 있습니다. SkelMirrorTable (스켈 미러 테이블)에서 본별로 이 디폴트를 덮어쓸 수 있기는 합니다.

플립 축 사용 예제를 둘 정도 들어 보겠습니다. 첫 번째에서 본 62 는 본 37 에 매핑되었으며, 미러링된 다음 X 축으로 접은 것입니다:

SkeletalMeshMirroringShoulderPads.jpg

이 예제에서 본 9 는 본 4 에 매핑되었으며, 미러링된 다음 X 축으로 접은 것입니다.

SkeletalMeshMirroringFeet.jpg

스켈레탈 메시용 미러링 셋업에서 가장 시간을 많이 잡아먹는 부분은 SkelMirrorTable (스켈 미러 테이블) 셋업입니다. 이 테이블에는 각각의 본을 다른 본에 매핑시키기 위한 정보가 들어 있습니다. 예를 들자면 오른쪽 무릎의 소스는 왼쪽 무릎이지만 척추의 소스는 그냥 척추인데, (대칭형 포유류 스켈레탈 메시라 가정할때) 척추 본은 중앙선에 걸쳐 있는 본이기 때문입니다.

SkeletalMeshMirrorProperties.jpg

애님세트 에디터에는 이 매핑 테이블을 자동 생성해 볼 수 있는 툴이 포함되어 있습니다. 메시 > 미러 테이블 자동 빌드 를 선택합니다. 그러면 테이블을 생성하고, 리퍼런스 포즈에 있을 때의 거울면에 너머 해당 위치에 있는 본과 일치시켜 봅니다. 이 툴을 실행하기 전 SkelMirrorAxis (스켈 미러 축) 세팅을 정해야 합니다. 다리, 팔, 손가락 등을 포함한 몸통 대부분에는 꽤나 잘 돌아갑니다만, 같은 위치에 본이 여럿 있거나 많은 본이 매우 가까이 붙어있을 때는 문제가 생길 수 있습니다.

SkeletalMeshAutobuildMirrorTable.jpg

테이블이 생성되고 나면, 애님세트 에디터 툴바에 있는 미러 표시 SkeletalMirroringButton.png 버튼을 눌러 제대로 작동했는지 확인할 수 있습니다.

보통은 자동 생성 테이블에 약간의 수정 작업을 해 줘야 완벽을 기할 수 있습니다. 메시 탭 아래 SkelMirrorTable (스켈 미러 테이블) 부분을 펼쳐 보면 스켈레톤 안에 각 본 항목을 볼 수 있습니다. 각 항목 안에는 트랜스폼 데이터를 어디서 얻어오는지 그 본의 인덱스가 표시됩니다. 이 값들은 항상 짝을 이뤄야 합니다. 즉 본 88 의 소스가 본 65 라면, 본 65 의 소스는 본 88 이어야 합니다.

SkeletalMeshMirrorTable.jpg

어느 인덱스가 어느 본에 해당하는지 알아내려면, 3D 뷰포트의 본 이름을 켜고 메시 메뉴의 본 이름을 클립보드로 복사 옵션을 사용하여 텍스트 에디터에 목록을 붙여넣어 보던가, 스켈레톤 트리에 보면 본 인덱스는 연결된 본 옆 각괄호 안에 있습니다. 본마다 BoneFlipAxis (본 플립 축)을 조절하여 SkelMirrorFlipAxis (스켈 미러 플립 축) 디폴트를 덮어써도 됩니다.

스켈레톤 트리의 본과 연결된 본 인덱스

SkeletalMeshSkeletonTree.jpg

미러링 툴


애님세트 에디터의 메시 메뉴에는 미러 테이블 작업을 약간 쉽게 만들어 주는 옵션이 몇 있습니다.

미러 테이블 자동 빌드

이 기능은 현재 메시용 미러 테이블을 자동으로 만들어 봅니다. 물론 손볼 곳 없이 완벽한 것이 나오지는 않지만, 작업을 시작하기 좋은 토대가 되기는 합니다. 완료시 발생한 에러를 알려주기도 합니다.

SkeletalMeshPostAutobuildMirrorTable.jpg

미러 테이블 체크

미러 테이블에 문제가 있는지 검사하여, 뭔가 나오면 팝업 창을 띄웁니다.

SkeletalMeshErrorsInMirrorTable.jpg

미러 테이블을 클립보드로 복사

미러 테이블을 텍스트 에디터에서 검사할 수 있습니다.
클립보드로 복사한 미러 테이블 예
  0: 0 AXIS_NONE
  1: 1 AXIS_NONE
  2: 2 AXIS_NONE
  3: 3 AXIS_NONE
  4: 41 AXIS_NONE
  5: 5 AXIS_NONE
  6: 16 AXIS_NONE
  7: 7 AXIS_NONE
  8: 8 AXIS_NONE
  9: 14 AXIS_NONE
 10: 15 AXIS_NONE
 11: 11 AXIS_NONE
 12: 17 AXIS_NONE
 13: 13 AXIS_NONE
 14: 14 AXIS_NONE
 15: 10 AXIS_NONE
 16: 16 AXIS_NONE
 17: 12 AXIS_NONE
 18: 18 AXIS_NONE
 19: 19 AXIS_NONE
 20: 20 AXIS_NONE
 21: 21 AXIS_NONE
 22: 38 AXIS_NONE
 23: 39 AXIS_NONE
 24: 40 AXIS_NONE
 25: 25 AXIS_NONE
 26: 42 AXIS_NONE
 27: 43 AXIS_NONE
 28: 44 AXIS_NONE
 29: 45 AXIS_NONE
 30: 46 AXIS_NONE
 31: 47 AXIS_NONE
 32: 48 AXIS_NONE
 33: 33 AXIS_NONE
 34: 34 AXIS_NONE
 35: 51 AXIS_NONE
 36: 36 AXIS_NONE
 37: 37 AXIS_NONE
 38: 22 AXIS_NONE
 39: 39 AXIS_NONE
 40: 40 AXIS_NONE
 41: 41 AXIS_NONE
 42: 26 AXIS_NONE
 43: 27 AXIS_NONE
 44: 28 AXIS_NONE
 45: 29 AXIS_NONE
 46: 30 AXIS_NONE
 47: 31 AXIS_NONE
 48: 32 AXIS_NONE
 49: 49 AXIS_NONE
 50: 50 AXIS_NONE
 51: 35 AXIS_NONE

미러 테이블을 선택된 스켈메시로부터 복사

스켈레톤을 공유하는 메시가 있을 때, 이 옵션으로 재생성하지 않고 미러 테이블을 쉽게 복사할 수 있습니다.

애님트리에서 미러링 사용하기


스켈레탈 메시에 미러링을 사용하도록 셋업하고 나면, 애님트리에서 사용하기란 매우 간단합니다. AnimNodeMirror 라는 애님노드 타입이 있는데, 입력과 출력이 하나씩 있습니다. 트리에 이런 것을 하나 넣으면, 입력 애니메이션 블렌딩을 잡히는 대로 미러링하여 출력합니다. 이런 식으로 개별 애니메이션이든 애니메이션 블렌딩이든 미러링한 다음 미러/언미러 애니메이션을 블렌딩하여 훨씬 매끄러이 전환되도록 만들어 줍니다.

애님노드의 bEnableMirroring (미러링 켜기) 옵션으로 미러링 동작을 껐다 켰다 토글할 수 있습니다. 참고로 애니메이션 미러링 비용은 꽤나 비싸므로 AnimNodeMirrors (애님 노드 미러)는 가급적 아껴 쓰시기 바랍니다.

관련 토픽