본문 바로가기

old/공부하기

Maya character rigging (simple version)

IK solvers are the mathematical algorithms behind the IK handles. IK solvers calculate the rotations of all the joints in a joint chain controlled by an IK handle. The effect an IK handle has on a joint chain depends on the type of IK solver used by the IK handle. By default, Maya loads the following IK solvers on start-up:

 

 


IK RP (Rotate Plane) - 트위스트를 주기 위함.
IK SC (Single Chain) - 트위스트가 없는 그냥 척추의 역할
FK - 조인트관절이 직접 움직이게하는 것.





(1) 다리리깅

1. 다리에 조인트를 그리고 IK를 연결한다



1) 조인트를 그린다.
애니매이션-스켈레톤-조인트
조인트그릴때 오리엔테이션은 넌으로 시작
발바닥부분은 수평하게 축에 맞게 그려준다.

2) 조인트에 IK를 연결한다
아이케이 핸들툴을 사용하여
위의 그림과 같이 IK RP를 연결하고
발과 발가락부분은 싱글 IK를 걸어 준다.

3) 각각의 조인트와 IK 핸들에는 부분의 명칭과 이름을 새로 지정하여 준다



2. 발바닥부분의 조인트연결


1) 발끝에서부터 조인트를 넣어준다.리버스 풋.
2) 먼거 그려놓았던 다리 조인트의 발부분의 조인트에 리버스풋의 조인트의 위치를 스냅을 걸어서 같은 위치에 있도록 위치 조정을 한다.
3) 스켈레톤 메뉴의 미러조인트 옵션을 이용하여 만들어놓은 다리 조인트를 오른쪽다리에도 생성되도록 미러조인트를 한다.  와이지 오리엔테이션으로 옵션항목 바꾸어주고 네이밍은 레프트를 라이트로 바꾸어서 미러조인트한다

 

4) 다리에 걸어두었던 IK 세 개를 잡고 발목 리버스 베이스 조인트를 잡고 그것만 보이게 일단 해놓는다(편의를 위해. 위의 그림)
5) parent 를 한다 (parent 방법 : 자식잡고 부모잡고 피이다.)
발목  RP핸들잡고 조인트잡고 P (parent 방법)
앤클  SC핸들잡고 조인트잡고 P
엔드  SC핸들잡고 조인트잡고 P.


3. control 생성 및 연결

1) 다이아몬드 모양의 컨트롤 만들기
렌더를할때 걸리지않는 CV커브를가지고 컨트롤러를 따로 그려서 조작을 용이하게 만들 것이다.
서페이스 시브이 커브 툴을가지고 옵션에 1개리니어로 체크한 이후 다이아몬드를 만들고
센터피봇 프리즈시키고 딜리트 히스토리한다
그리고 발바닥 자리에 위치시킨다.
피봇움직이지않고 반대편에 미러시키려면 먼저 그룹을 지어놓고 듀플리케이트한 이후에
그룹속에서 객체만 꺼내고 그룹은 지운다. 그렇게 right foot에도 미러조인트한다.


자! 다시한번 이번 파일에서 사용된 이름 정리

                           ankle

 toe         foot            base

 


2) add attribute
컨트롤의 오른쪽 메뉴의 edit 메뉴의 애드 애트리뷰트한다
첫번재 추가한 속성의 네임은 > 풋컨트롤. 그리고 0으로 락을 걸어놓고
이제 추가로 세 가지 속성을 더 만들것이다.
다시한번 애드 애트리뷰트하여
두번째 추가한 속성의 네임은 >레이즈풋.
플롯타입지정하고 그냥 애드
세번째 추가한 속성의 네임은 >레이즈 토
네번째 추가한 속성의 네임은 >레이즈 힐
추가한 모든 속성에는 플롯으로 지정하고 애드한다.


3) connection editor
이제 추가한 속성에 내가 원하는 키를 커넥트 시킨다.
윈도우 - 제네럴 - 커넥트 에디터
레이즈풋 속성 > 발목조인트 리로드 하고 로테이트 엑스
토부분 속성 > 리로드 라이트 토 한이후에 로테이트 엑스
레이즈힐 속성 > 리버스 베이스(발끝) 가 움직이는 것이니까 리로드 라이트 속성하여 로테이트 엑스를 연결시킨다


4) roe roll 속성 연결
그리고 다시 메뉴에서 edit 애드 애트리뷰터하여 힐로테이트속성을 만들고
토롤속성도 추가하고
토 트위스트속성추가
아까와 마찬가지로 제네럴에 커넥션 에디터를 꺼내어서
힐롤은 발목속성을 리로드하여 로테이트와이
토롤은 발끝의 로테이트 와이
토트위스트는 발끝의 로테이트 제트

 
정리
-----------------------------------------------

 

                          ankle

 toe         foot            base


-----------------------------------------------
attribute                  connection
-----------------------------------------------
RaiseFoot                reverseFoot    rotateX
RaiseToe                 reverseToe     rotateX
RaiseHeel                reversebase    rotatex
HeelRoll                 reverseBase    rotateY
ToeRoll                  reverseToe     rotateY
TwistSide                reverseToe     rotateZ




4. IK, FK 만들기

1) CV로 FK control 만들기
조인트로 움직이는것은 IK 이고 FK 로 스위치를 하여서 발관절 전체가 아닌 의자에 앉는 것과 같은 움직임을 줄때 조인트만 움직일 수 있는 FK를 다로 만들어서 사용하겠다는 것이다.

박스 꺼내서 스냅걸어 CV 툴로 박스를 만든뒤 복사하여각 조인트별로 만들어놓은뒤 피봇이 조인트 위치에 가도록 움직여놓는다.




2) outliner 안에서 parent 설정하기
각각의 커브를 가운데버튼 드래그 클릭하여 상위 레그 안으로 들여다 놓는다.
차례대로 움직여야하므로
상위
  ㄴ 2번째
         ㄴ 3번째
                ㄴ 4번째
                        ㄴ 5번째
이런식으로 각각의 객체 안으로 들어가게 한다.
(위의것을 움직이면 한꺼번에 움직일 수 있도록)


3) IKFK 변환 스위치 controller 만들기
IKFK 변환할큐브(또는 스위치)를 하나 꺼내서 발뒤꿈치 뒷쪽에 놓는다.

4) 애드 애트리뷰트
ik, fk 라는 이름의 속성을 애드 어트리뷰트준다
디폴트 맥시멈을 1. 미니멈을 0
디폴트0일때는 ik 로하고 1일때 fk 라고 키를 줄 것이다.

5) set Driven
이제 각각의 아이케이 핸들을 드리븐으로 놓을것이다(3가지)
애니매이션 - 셋드리븐키 - 셋을열고


6) set Driven 으로 블렌드값에 키주기
driver : 방금 변환큐브에 할당한 속성 아이케이 에프케이를 드라이버로하고로드하고
driven : 드리븐으로 로드할 것은 미리만들어준 왼쪽다리의 3개의 IK 핸들의 아이케이 블렌드값.
내가 주어야할 설정!
 변환큐브의 IK_FK 속성값이 0일때는 IK 가 움직임(default)
 변환큐브의 IK_FK 속성값이 1일때는 IK 블렌드값이 0이되어 FK가 움직임

 그러므로 IK_FK 는 0. blend = 1 로 놓고 키를 한 번주고 (key 버튼을 누름)
 두번째로 IK_FK 는 1, blend = 0 으로 놓고 키를  한번 더 준다. (key 버튼을 누름)


7) set Driven으로 visibility값에 키주기
이제 IK 와 FK 가 보이고 안보이는것도 키를 줄 것이다.
변환큐브의 IKFK 가 1이 되면 FK 라는 뜻이므로 IK들의 비져빌리티를 0으로 주고 키를 준다.
그리고 IKFK 의 속성이 0이면 IK 라는 뜻이므로 FK 들을 모두 선택하고 비저빌리티를 0으로 주고 다시한번 키를 준다.

그러면 IKFK 스위치 완료.

 
8) FK 핸들과 본에 컨스트레인 주기
에프케이 핸들인 CV박스를 움직일때도 본이 움직이도록하기위해 컨스트레인을 줄 것이다.
박스잡고 본(조인트)를 잡고 오리엔트 컨스트레인을 준다.
상위박스 - 최상위본
두번째박스 - 위에서 두번째 본
세번째박스 - 위에서 세번째 본
.
.
.
발끝까지 오리엔트 컨스트레인을 준다.


 

 

9) test를 이용한 관절 트위스트 컨트롤러
create - text하여 r l 을 입력한다
이제 이 텍스트로 관절 트위스트 컨트롤을 만든다.

애니매이션-컨스트레인-pole back

각 텍스트를 잡고 각 다리의 RP로 잡았던 다리IK를 선택하고 각각 폴백터를한다
그러면 컨트롤을 양옆으로 움직일때 관절 IK가 트위스트 된다.

그리고 텍스트로만든 컨트롤러를 잡고
애니매이션의 드리븐키에들어가서
다리 뒤의 IK_FK 스위치 컨트롤러를 드라이버로부르고
드라이븐에 텍스트컨트롤을 불러서
텍스트로 만든 트위스트 컨트롤이 IK 인 경우에만 보이면 되므로
스위치 컨트롤이 0일때 텍스트 컨트롤이 1이 되도록
스위치 컨트롤이 1일때 텍스트 컨트롤이 0이 되도록
비져빌러티에서 키를 두번 준다

 


(2) 척추리깅


1. 척추부근에 조인트를 그리고 IK_ spline을 연결한 후 Cluster로 오브젝트화 한다.

1) 조인트를 그린다. 
조인트를 그릴때 넌으로 그린다
척추뼈는 조인트의 길이가 균일할것이 좋기때문에 균일하게 들어가도록 한다.
사이드뷰에서
가운데에 시작하여
엉덩이 정중앙하나
엉덩이 윗뼈하나
허리하나
갈비뼈아래하나

 

2) 조인트를 그리고 각 조인트에 순서대로 이름을 준다. 
headtop
headbase
neck

4
3
2
1
hip
root

 

3) IK spline을 준다.
척추처럼 많은 IK를 한꺼번에 제어할 수 있는것이 IK spline handle tool이다.
옵션에서 오토 페어런트 커브를 끄고
루트와 오토크리에이티브와 심플리파이만 켜고
hip조인트찍고 4를 찍는다.
그리고 이 IK는 이름을 backCurve로 지정한다


4) spline IK 의 CV 를 오브젝트화하여 컨트롤을 용이하게 한다.
스플라인 IK는 CV로 조인트를 조절한다.

애니매이션-크리에이트 디포머-클러스터
각종 CV나 버텍스들을 오브젝트화 해준다.

조인트가 선택되지않도록 상위 아이콘버튼에서 조인트 버튼을 비활성화시키고
IK만 선택되게한다.
아까넣은 IK 스플라인에 CV마다 클러스터를 넣어서 CV를 오브젝트화하여 제어하려고 한다.
페이런트 시킨 상태에서 각각을 조절하고 싶을때는 클러스트 옵션에서 relative에 체크해야한다.
IK만 선택된 상태에서 F8을 누르고 다시 선택하면 버택스가 보일 것이다.


하나의 버택스에 조인트가 클러스트되도록
릴레이티브로 클러스터를 넣고
핸들 쉐이프탭에가서 선택하기 용이하게 클러스터 핸들을 제트축으로 옮기기 위해서
클러스터 핸들쉐이프 텝에서
오리진의 제트축빈칸에서 컨트롤 누르고 마우스 드래그하여 숫자를 변화시켜준다.


5) c라고 표시되어있는 각각의 클러스터에 이름을 준다.
아래에서부터 차례대로이름을 바꾸어준다
clusterhip
clusterwaist
clusterchest
clusterback

6) 왼쪽다리와 오른쪽다리 조인트를 잡고 힙조인트(spline IK가 시작되는 조인트)를 잡고 페이런트를 해준다.
이제 조인트는 움직이지 않지만 클러스트로 각각을 조절해줄 수 있고 이 움직임은 다리에까지 영향을 주게 된다.



2. 각각의 클러스터를 제어할 컨트롤러 5개만들기


 

1) Chest control (가슴제어 컨트롤)

척추 IK w3조인트에 스냅걸어서 박스큐브를 CV로 다시 만든 CV컨트롤을 옮긴다.
이름을 chestcontrol로 변경한다

2) hip control (힙컨트롤)
가장 아래 엉덩이부분의 박스 CV 컨트롤로서
클러스터가아닌 최상위 root조인트를 제어할 컨트롤이다

3) waistcontrol
서클로 만들어서 확인이 편리하게한다
각각의 컨트롤러는 만들고 난 후에 프리즈 시키고 이름을 변경시키며
서클을 꺼내서 허리부분에 연결을 시키고 프리즈 시키고 히스토리를 지운다

4) hipmove (힙무브컨트롤)
cv로 삼각형을 만들어서 힙무브 컨트롤로 지정하여 힙컨트롤 가운데쯤으로 위치시킨다

5) back control
CV로 그리드에 스냅을 걸어서
양쪽방향의 화살표를 만들어서 back 클러스터를 제어할 back 컨트롤을 만든다.


3. 클러스터의 피봇을 해당 조인트 피봇으로 스냅

클러스터의 피봇은 각각 해당 조인트의 피봇에 위치하게한다.

                                (클러스터와 컨트롤러의 피봇을 조인트피봇으로 움직인다)
w4 <------------------ c-------------backcontrol
w3<--------------------c------------ chestcontrol
weist<-----------------c------------ waistcontrol
hip<-------------------c------------ hipmobecontrol


 
각각의 컨트롤은 클러스터와 같은 피봇을 가진다

4. 클러스터와 컨트롤러를 constrain 시킨다.

1) back 화살표컨트롤잡고 맨위 클러스터를 잡고 컨스트레인의 포인트.
그리고 하이드 레이어에 클러스터를 포함시킨다.

2) 가슴컨트롤잡고 두번째 클러스터잡고 컨스트레인 포인트
마찬가지로 클러스터를 하이드 레이어에 포함시킨다.

3) 서클 잡고 허리클러스터잡고 포인트
그리고 클러스터잡고 마찬가지로 하이드 레이어에 애드시킨다.

4) 힙컨트롤 안에
벡과 컨트롤과 체스트와 웨이스트와 힙무브 컨트롤이 모두 포함된다.

5) 전체 힘컨트롤을잡고 마지막 루트조인트를잡고
무빙도되야하고 다른것도되야하므로 페이런트 시킨다.
이제 조인트를 잡고 트랜스와 로테이트를 모두 가능하게 된다.

6) 체스트의 컨트롤을 로테이트시킬때
w4의 로테이트도 움직이도록하기위해
커넥션에디터
체스트컨트롤 레프트 from에 부르고
w4를 input라이트로 불러서
각각의 로테이트 와이를 연결시킨다.


 


---------------------------------------------------
*참고
컨스트레인
point
포인트는 로테이트는 상관없이 따라붙어서 무빙만 함께한다


orient
나중에 잡은것이 따라붙지는 않지만 로테이트값은 따라간다. (피봇은 각자다

 

parent constrain
무브와 로케이트를 제어하지만 상위노드의 피봇으로 움직인다
스케일을 움직이면 거리만 움직인다


페어런트는

스케일도 같이 움직인다.


----------------------------------------------------



(3) 목리깅

가운데 목부분에 RP IK를 준다

넙스 서클을 꺼낸다
목기울기에 맞게 로테이션하고
이름을 바꾸고
프리즈하고 히스토리하여
neck control로 만든다


컨트롤잡고 IK잡고 컨스트레인 포인트.
그러면 컨트롤만으로 목의 구부림을 조절할 수 있다.

목이 너무 많이 조절되지 않도록

컨트롤과 목위의 고개조인트를 오리엔트해주고

목컨트롤을 백컨트롤에 페이런트 종속 시킨다. (자식잡고 부모잡고 p)


 

'old > 공부하기' 카테고리의 다른 글

exclusive links  (0) 2010.11.25