Monday, July 26, 2010

C3D 파일 포맷의 Mocap Data를 MotionBuilder에서 사용하는 법

C3D 파일 포맷의 Mocap Data를 MotionBuilder에서 사용하는 법

모션캡처 데이터가 BVH로 돼있으면 사용이 간편하지만 옵티컬 마커가 그대로 저장돼있는 C3D 포맷 데이터도 자주 볼 수 있다. 이런 데이터를 사용하려면 다소 손이 가는데 그 절차를 여기서 정리해본다.

여기서는 Pipeline Techniques Maya and Motionbuilder 비디오를 중심으로
직접 해본 것을 정리한 설명이다.

1. C3D 파일 import
New Scene 에서,
c3d 포맷의 모션캡처 파일을 임포트 해보자.
c3d 란 optical data 파일이다.

디폴트 옵션으로 import 해도 되는데
Create Unused Optical Settings 는 필요 없으므로 꺼주고 import 하는게 좋다.
"Pipeline Techniques Maya and Motionbuilder" 에서는 디폴트 옵션으로 import 해줌.

2. Actor 를 Create
되도록 T-Stance 에 가까운 포즈로 이동해서
(사실 T-pose 아니라 아무 포즈라도 무방하지만 편의상 T-pose가 좋음)
Actor 를 create 하자. (Asset 에서 Actor 를 끌어 넣음)

Actor 를 움직여서 dots 에 일치하도록 맞춰줌
(Translate, Rotate, Scale 모두 사용할수 있음)

3. Actor의 Marker Set 을 Create
Navigator pane 에 Actor 를 띄워놓고
Marker Set > Create 해줌.

마커 셋의 역할은 단순히, 마커가 어떤 부위에 해당하는지를 지정해 주는 것이다.

4. Actor의 Marker Set 에 마커들을 지정
View에서 머리에 있는 4개의 마커를 선택해서 Navigator의 Actor의 머리 포인트에 끌어 넣음
(alt + drag 또는 maya key 세팅이라면 x + drag)

Upper Arm, Lower Arm, Hands 등 각 부위에 대해 다 해줌.

주의 : 하나의 body part에 넣을 수 있는 dots의 수는 최대 5개이므로
예를 들어 Chest 에 7개의 마커가 있다고 해도 5개까지만 선택해서 끌어넣을 것.

Tip : 이미 끌어넣은 마커를 지워주려면 navigator의 Actor Settings 에서 마커를 선택(테이블의 왼쪽 column)한 후 Delete 키 누르면 됨

5. Actor를 Activate 시킴
이제 어떤 마커가 어떤 부위를 나타내는 지 지정해 주었으므로
Actor 의 Active 체크박스를 클릭해준다.

이제 Actor 는 모션 캡처 points 를 따라 움직이게 된다.

6. Motion Capture를 기존캐릭터에 적용하기
이제 기존의 캐릭터(characterize된 사람 모델)를 이 씬에 Append 하자.
File > Merge 함.
옵션창에서 Append All Elements 하고 merge.

이제 기존에 만들어둔 캐릭터가 로드됐음.
그 캐릭터를 선택하고
navigator panel 에서 input type 을 그 actor 로 지정해줌.

(필요할 경우, Take 를 제대로 지정. Take001 에서 Mocap take 로 변경)

이제 캐릭터가 actor 를 follow 함.

참고 : Character의 발바닥 충돌 오브젝트 위치가 틀리면
모션이 매우 이상해지므로 제대로 발바닥에 위치시켜야 함
예를 들어, 발바닥 충돌 오브젝트가 실제 발바닥보다 밑으로 내려가 있으면 공중에 떠버림.
character와 actor의 위치가 일치하지 않으면 모션이 깨져버림.

7. 사이즈 일치시킴
그런데 캐릭터의 사이즈와 Actor의 사이즈가 다르므로
이를 매치해주기 위해 Character Settings의 Match Source 에 체크해줌.

8. 일부 관절들에 대해 FK/IK 양자택일시킴
Timeline 을 Scrub 해보면 모션이 잘 따라갈 수도 있고 좀 이상하게 움직일 수도 있는데
그 경우 character controls 창에서 IK와 FK 컨트롤이 모두 존재하는 관절들에 대해
Reach T, Reach R 값을 0% 와 100% 둘 중의 하나로 주면 더 모션을 잘 따라가는 값이 있을 것임. (보통 0%로 해서 Full FK 로 하면 잘 됨)

키워드 : 모션캡처, Motion Capture

출처 :
MBM://Pipeline Techniques Maya and Motionbuilder/12 Motion Capture 사용하기.html
MBM://Pipeline Techniques Maya and Motionbuilder/13 Motion Capture를 기존 캐릭터에 적용하기. Optical data cleanup 하기.html
MBM://C3D Motion Capture Mocap 다루는 법/Importing C3d and Mapping Actor in MotionBuilder Tutorial

No comments:

Post a Comment