본문 바로가기

ani/Character setting (rigging) in 3ds max

3ds max _ 트위스트 플립 현상의 해결, character setting, solution of twist flip


 
1. 문제의 발단

 
포트폴리오에 쓰일 캐릭터를 셋팅하면서 난관에 봉착했다.  
 
 
 

"트위스트 플립 현상"
 
 

 
 
 

스킨을 다 마친것이 아니라 와이어 이상한건 무시하자.

 
 
 
 
이랬던 팔이 
 
 
 
 
 

 
 
 
팔만 들어올리면 메쉬가 뒤집혀 버리는 현상이 생겼다. 
 
 
트위스트 플립은 spline IK에서 어쩐 이유인지 혼자서 돌아버리는 문제점을 칭하는데 

(정말 혼자 돌아버리는 줄 알았다.)
 
 

스킨값을 아무리 잘먹여도 혼자서 돌아버리는 현상 때문에 팔을 들어올리는 동작을 하면 mesh가 계속해서 깨졌다.
이 셋팅으로 애니를 잡다간 원하는 동작이 나오지 않을것 같았다. 
 
그리하여 잘못된 것을 고치고 되돌려 놓고싶은 강한 충동으로 
 
비엘북스에서 나온 이상원 저자 [캐릭터 셋업 테크닉] 이란 책을 연구하고 참고하여 해결했다. 
정말 훌륭한 책이지만 컨스트레인에 대한 지식이 없으면 이해하기가 어렵고(내 이야기임), 나또한 초짜여서 짜깁기로 지식을 모아모아 이해하는데만 꼬박 이틀이 걸렸다. 그럼에도 충분히 볼 가치가 있는 책이며 어려웠지만 해결하지 않았는가?

물론 책 초반에 컨스트레인에 대한 아!주! 자세한 설명이 들어가있다. 난 게을러서 읽지 않아 고생했지만..

 
 
 
 


 

2. 해결 과정

 
 
책을 쭈욱 읽었을 때 결과적으로 책에서 말하고자 하는 바가
기관차 바퀴를 잡아주는 고정장치를 팔에 심는다!와 같다고 생각했다.
 
 
 
 
 
 

여기 토마스의 바퀴에 달린 저 쇠막대기 상상하면 된다.

 
 
 
 
회전하는 것들끼리 각자의 자리를 고정시켜주고 회전운동은 유지하도록 역할을 하는 쇠막대?
뭐라고 칭하는지 모르겠다.
 
 
결과물 부터 보여주면 이런모양이 된다. 
 
 
 
 

바퀴 지지대랑 꽤 이미지가 비슷하지 않나..?

 
 
 
 
여기서 핵심은 point 간의 거리를 같게 해야한다. (밑의 사진 참고)
 
 
 
 
 

하기야 토마스 바퀴 지지대도 중심간의 거리가 서로 같다.

 
 
 


 
긴 인트로 끝에 팔에 토마스의 발을 만드는 진짜 과정을 기록한다. 
 
 
1. 포인터 하나를 생성해서 bipad의 upperArm의 pivot point에 align으로 이동시킨다. (twist bone에 align하는 것이 아님!)
이 과정에서 tiwst bone은 쓰일 일이 없기 때문에 twist bone을 썼다면 잠시 hide 시켜두자. 
 
 
 
 

align orientation은 체크 해제한 상태로 해도 상관없지만 나중에 다 켜놓을 것이기 때문에 나는 다 켜놓는 걸로.

 
 
 
 
 
 
2. 이 상태에서 point를 clavicle(어깨본)의 자식으로 link한다. 클릭 순서는 아래와 같이 하면된다. 
 
 
 
 

3번은 point에서 어깨본으로 드래그 하면된다. 

 
 
 
 
 
3. point를 선택한 상태에서 우측 패널에 아래와 같은 경로로 position expression으로 컨트롤러를 변경해준다.
 
 
 
 

 
 
 
 
 
ok를 누르면 아래와 같은 창이 뜬다.
 
 
 
 
 

 
 
 
여기서 expression의 저 위치값은 내 예상컨데, point의 부모인 clavicle의 pivot point와 point의 pivot point 사이의 거리를 칭하는 것 같다. 즉, 자식과 부모의 피봇간의 거리값을 저장하는? 기능이 아닐까 싶다..(약한 확신)

(좀 더 공부해서 정확한 기능이 무엇인지 후에 추가하는 걸로)
 

여하튼 이런 창이 떴다면 evaluate를 눌러준다. 아무런 변화가 없을 것이다.
위에 말한것 처럼 거리값이 저장되지 않았을까.
눈에 띄지 않은 변화가 생겼다치고 close를 눌러주면 이제 1/3 만큼 왔다.
 
 
 
 
4. point의 부모를 upperArm으로 강제로 부모를 변경해준다. 3번에서 expression 컨트롤러에 저장된 거리값이 upperArm의 pivot point가 기준으로 그 거리값만큼 적용되어 point의 위치가 바뀐다.
 
 
 
 
 

 
 
 
 
 
5. 이제 point를 두개 더 만들어 하나는 upperArm에 align, 다른 하나는 clavicle에 align시켜준다. (1번 option과 동일)
 
 
 
 
 

 
 
 
 
여기 까지 위 사진과 다른것이 없다면 잘 진행했다고 생각해도 된다. 
 
 
 
 
point들이 헷갈리니 밑에 사진처럼 칭하겠음.
 
 
 

 
 
 
 
 
6. point2는 clavicle의 자식으로 point3는 upperArm의 자식으로 링크시킨다. 
 
 
결과적으로 
 
 
clavicle - upperArm - point1
          ㅣ              ㅣ
           -point2       - point3
 
 
 
이와 같은 위계도가 생겨야 한다. 
 
 
 
 
 
이제부터 헷갈린다. 정신 똑바로 하고 잘 선택해야한다. 
 
7. point2를 선택한 상태에서 우측 패널에 밑 사진과 같은 경로로 LookAtConstraint 컨트롤러로 바꿔준다. 
 
 
 
 

 
 
 
 
ok를 클릭하면 패널에 Look At Coinstraint 창이 추가가 된다. 
 
그 다음부터는 밑에 사진 그대로 과정을 따라가면 된다. 
 
 
 
 
 

 
 

수정 : keep initial offset 선택 해제

 
추가 설명으로 
 
Add LookAt Target으로 point1을 추가하면 >> point2가 point1이 움직일때 바라보게 한다- 라는 뜻이다. 
 
이때 추가하고 나면 point2가 point1과 각도를 같게 만들어 살짝 돌아가는데,
당황하지 않고 keep initial offset을 체크해주면 된다. 번역 그대로 초기 값을 그대로 유지시키는 역할을 한다.
수정 : keep initial offset 선택 해제
 
viewline length absolute는 길게 늘어진 파란선(?)을 딱 그 거리까지만 잘라주는 역할을 하므로 거추장 스러우니 끄고 작업하는 것이 편하다. 
 
select upnode는 어깨로 선택했는데, 사실 아직도 업노드의 정확한 역할을 잘 모르겠다... 예상컨데 point2의 pivot이 어깨라서,,? 아닐지도..ㅜㅡ

이게 다 처음부터 정독하면서 익힌것이 아닌 탓이다. 이 부분은 좀 더 공부해서 추가하는 걸로. 

 
 
 
 
8. point3도 비슷한 방식으로 아래와 같은 경로로 LookAt Constriant를 적용시킨다. 
타겟을 ForeArm으로 지정하여 팔꿈치를 바라보게 하고, upnode를 point2로 지정하는 점을 주의한다. 
 
 
 
 

 
 

수정 : keep initial offset 선택 해제

 
 
 
9. 끝! 팔을 움직여서 잘 따라가는지 확인하십시오.
 
 
 
 
 
이렇게 반대편 팔까지 동일하게 하면 팔이 휘릭하고 확 돌아가는 현상은 사라지게 된다. 
 
 
 
 
 
 
그러나...
 


- 다음 게시물 예고편 -

 
 
 
나는 또다른 난관에 봉착하게 된다. 
 
 
 
 
 

이랬던 팔이
이렇게 돌아버려..^_^

 
 
 
 
 
트위스트 플립을 해결하니 이제 다른 방식으로 돌아가는 트위스트 본의 문제가 드러났다..

둘다 트위스트네,, ㅎㅎ.....하하..

 
 
 
 
 
 
내 경우에는 upperArm에 bipad의 트위스트 본 두개를 썼다.
 
 
 
 

 
 
 
 
결국엔 트위스트 본을 쓰지 않고 box로 대체하게 되는데
 
 
 
 
 

 
 
 
이렇게..
 
 
 
 

이 내용은 다음 게시물에서 계속....
 
 
 
 

여러분 캐릭터 셋업 테크닉 책 사세요. 갓북 입니다.
 
 
참고 문헌 : 
 
 

캐릭터 셋업 테크닉

이 책은 3ds Max를 사용해서 게임용 캐릭터를 셋업...

www.kyobobook.co.kr