1. Joint 회전축 맞추기
1) 축 화면에 display 하기
2) freeze : rotate 초기화
- freeze 전
- freeze 후 (root joint 선택)
3) Orient joint로 축 방향 맞추기
일반적으로 z축을 회전축으로 많이 삼음 (뼈가 돌아갈때 rotate Z 가 바뀌도록)
- Primary Axis : 뼈의 진행 방향
- Secondary Axis : primary 축에 직각이 되는 축
- Secondary Axis World Orientation : Secondary 축이 World 에서 가리키는 축
(1) Shift + P 로 parent를 끊고 진행
Why?
연결부로 인해 뼈가 틀어진다
(2) orient joint
rotate 시 z 축을 기준으로 회전하게 됨 (+)
- 다리는 뒤집혀 있기 때문에 구부러질때 z 가 - 값이 됨
secondary axis world orentations 에서 + 를 - 로 바꿔줌
(3) Orient joint world
발목 같은 경우, 좌우 회전할 때에 뼈가 틀어져 있어 원하는 대로 회전이 안됨
- Orient Joint to world : world 기준으로 joint 축 방향 설정
- Orient children of selected joints : 체크 시 하위 joint 들도 모두 설정되므로 체크 해제
(4) select component mode
발목이 위로 돌아갈 때 Z가 + 면 좋겠을 때 :: Component 를 선택하여 뒤집어 줌
- 컴포넌트 선택모드
- ? (miscellaneous components) : 컴포넌트를 선택할 수 있게 함
- snap 모드 설정 : 해당 각도만큼 정확하게 돌릴 수 있음
(5) 손 리깅
- 굽혔을 때 z축이 +가 되도록 축의 방향을 생각하여 세팅
- 중지
- 엄지
모델의 모양에 맞게 component rotation 틀어주기, 십자 모양이 맞도록
(6) P 로 다시 parent
2. mirror joint
- mirror across : 거울을 어떤 면에 둘 것인가
xy : xy 면에 거울을 둔다 -> z 축 방향으로 미러링 됨 (미러링은 항상 영점 기준)
- 대부분 yz 를 기준으로 함 - mirror function : 미러링 되는 뼈에 적용되는 옵션
- Behavior : 축이 반대방향으로 적용됨, 같은 모양으로 움직이게 하기 위함
- Orientation : 축이 같은방향으로 적용됨, 다른 모양으로 움직이게 됨
- replacement names for duplicated joints : 새로 생성되는 축의 이름을 바꿔줌
기본적으로 뼈들은 이름이 구분되어 있음 ex) Character1_LeftShoulder
그러므로 새로 생성되는 축의 이름을 바꿔서 구분해줘야 함
3. Bind Skin
- skin - bind skin
- bind to
- Joint hierarchy : 하위 요소들을 모두 바인딩 - Bind method
- Geodesic Voxel : object 를 큐빅 형태로 쪼개어 바인딩 - Max influences : 한 vertex 에 최대 몇 개의 joint 가 영향을 줄 것인가
- Resolutions : Voxel 을 얼마나 정교하게 쪼개느냐 (복잡한 캐릭터일 수록 정교하게 해야 함)
4. Weight
1) Paint Skin Weights
페인트칠을 해줌
- joint 에 마우스를 올리고 오른쪽 버튼을 클릭 시 해당 뼈 선택 가능
- B + 마우스 드래그 시 붓 크기 조절 가능
- Paint operation - Smooth : weight 경계를 스무스하게 만들어 줌
- Opacity : 한 번에 칠해지는 양을 조절 (1일 때 한번에 Value 값이 칠해짐)
- Value : weight 값을 조절 (1일 때 해당 Joint에서 받는 영향이 가장 커짐)
2) Component Editor
각 vertex 마다의 weight 를 조절 가능, 조금 더 정교함
- 마우스 오른쪽 - vertex - 드래그 하여 vertex 선택
- Window - General Editiors - Component Editor - Smooth Skins : 각 vertex 의 joint 에 대한 weight 조절 가능
한 joint 에 대한 weight 를 1로 설정할 시, 다른 joint 에는 영향을 받지 않게 됨
3) Weight export, import
Weight 값을 저장하고, 불러올 수 있다.
주의할 점
- UV 가 바뀌어서는 안됨
- UV가 서로 겹쳐져서는 안됨
- Multi 타일이면 안됨
- UV란? 텍스처링을 위한 3D 모델의 표면. 정육면체를 펼쳐놓은 전개도
5. IK Handle
- IK (Inverse Kinematics) : 하위가 움직이면 상위가 따라 움직임
ex. 손이 움직일 때, 팔과 어깨가 함께 움직임 - Skeleton - Create IK handle
- Current solver
- Single-Chain Solver : 한 쪽으로만 구부러 지는 것 (ex. 손가락)
- Rotate-Plane Solver : 어깨, 대퇴부 등 사방으로 구부러지는 것
- Current solver
- 함께 움직일 joint 를 두 개 선택해줌
- IK 핸들이 있을 때
- IK 핸들이 없을 때
- 단축키 G, Y
- G : 모든 명령어 repeat
- Y : 툴 명령어만 repeat
- 액션 명령어 : 명령어를 내리는 순간 결과물이 나옴
- 툴 명령어 : 특정한 행동을 해야 결과물이 나옴 (IK handle 은 툴 명령어)
- 폴 벡터 : 관절이 구부러지는 방향을 나타냄
흰색 화살표로 표시
이거 뒤로 만들어져야 하는디.... 왜 아래로,,,- !! 폴 벡터가 이상한 방향으로 생성될 때 Or 중간 joint 가 구부러지지 않을 때 !!
"구부러지는 방향"을 설정해줘야 함
https://www.youtube.com/watch?v=9XE4huTieiE
- 구부러지는 방향에 맞게 뼈를 세팅 (팔꿈치가 뒤로 구부러져야 한다면 팔꿈치 조인트를 살짝 뒤로 옮김, or 조인트들을 rotate로 회전)
- 마우스 오른쪽 버튼 - Set preferred angle : preferred angle 이 현재의 모양에 맞춰 세팅됨
- IK 핸들 재생성
- preferred angle : IK 핸들을 생성할 때 구부러지는 방향을 말함
https://help.autodesk.com/view/MAYAUL/2023/ENU/?guid=GUID-5A8BB621-96E0-4CE8-9792-085EC8F07164
Maya 공식 문서에서도, joint 를 생성할 때 원하는 방향이 지정되도록 각도를 그리라고 하고 있음
- preferred angle : IK 핸들을 생성할 때 구부러지는 방향을 말함
- !! 폴 벡터가 이상한 방향으로 생성될 때 Or 중간 joint 가 구부러지지 않을 때 !!
6. Controller 생성
마야에서는 IK 핸들을 다이렉트로 움직이지 않고, 컨트롤러를 만들어서 움직임
- Cerves 로 만들어 쓰거나, 만들어놓은 것을 가져와 쓰기도 함
- 컨트롤 아이콘을 커브로 만드는 이유 : 원하는 도형과 글자를 쉽게 만들 수 있으며, 랜더링이 되지 않으므로 편리
- 컨트롤 아이콘을 커브로 만드는 이유 : 원하는 도형과 글자를 쉽게 만들 수 있으며, 랜더링이 되지 않으므로 편리
- 단축키 V : Snap to point 다른 오브젝트의 위치로 이동 (자석같은 효과)
- 단축키 Ctrl + D : 해당 오브젝트 복사
- 기준점 위치 바꾸기 : Move, Rotate, Scale 모드에서 D를 누른 뒤 기준점을 움직여 주면 됨
ex ) 머리 부분은 목뼈에 맞게 움직여야 하므로 기준점을 목뼈에 맞춰 줌 - 단축키 X : Snap to grid 마야의 배경 Grid 에 snap
1) Cube Curves 만들기
- 폴리곤 큐브 만들고, 여섯개의 꼭지점이 보이도록 배치
- Create - EP Curve Tool
Curve Degree 를 1 Linear 로 바꾸면 커브를 직선으로 만들 수 있음 - v키를 누르며 박스의 모든 꼭지점을 클릭하고 엔터
이 때 모든 선을 지나야 함
2) 마야 스크립트 Shelf 에 저장하기
- 왼쪽 아래 콘솔 창 클릭
- 해당 스크립트를 드래그하여 모두 선택
- 마우스 가운데 버튼을 누르고, Shelf 창으로 드래그
- MEL 선택
3) Curve 색 바꾸기
Attribute Editor - Display - Drawing Overrides - Enable Overrides 체크 - Color 수정
4) 각 컨트롤러
- 발
- 척추
- 손
- 큐브 : 손목 움직이기
- 원 : 손바닥 돌리기 (축 : 손목)
큐브는 후에 폴 벡터 컨트롤러와 연결되기 때문에 손목을 돌리는 데 사용하기 적절하지 않다. (폴벡터가 틀어짐)
- 무릎
- 팔꿈치
5) Controller Freeze
컨트롤러를 모두 만든 후에는, Translate, Rotate 등을 모두 초기화 시켜줘야 함.
- 모든 curves 선택 후 Modify - Transformation
Error : Freeze Transform was not applied because nurbsCircle7.translateX has incoming connection.
https://mayazest.blogspot.com/2011/09/cant-freeze-transformations-maya.html
- History 삭제
단축키 Alt + Shift + D - Connection 제거
- Channel box/Layer Editor 에서 빨갛게 표시되어 있는 부분을 모두 선택
- 오른쪽 마우스 - break connections 시 빨간 부분이 사라지며 connection 이 끊김
7. Controller 연결
1) Parent 연결
- 팔, 다리
- IK 핸들 선택
- 컨트롤러 선택
- P 를 눌러 연결
- 움직이다가 원상복귀 하고 싶을 때는 컨트롤러의 속성값을 모두 0으로 바꾸면 됨
2) Constrain 생성
- Constrain : Translate, Rotate 등 Attribute 값을 연결해주는 것
- Parent : Translate, Rotate
ex) 엉덩이 뼈- Maintain offset : 위치 값을 서로 유지한 채 연결 (끄면 모두 0, 0, 0 좌표로 이동하게 되어버림)
- Maintain offset : 위치 값을 서로 유지한 채 연결 (끄면 모두 0, 0, 0 좌표로 이동하게 되어버림)
- Point : Translate
- Orient : Rotate
ex) 척추뼈들, 머리, 손목 Rotate Controller - Scale : Scale
- Aim
- Pole Vector : 폴 벡와 Controller 연결, 구부러진 곳의 위치 조정 가능
ex) 무릎, 팔꿈치- Controller 와 Pole vector 가 제대로 (방향이 같게) 배치되어 있지 않다면 모델이 돌아가는 현상 발생
https://youtu.be/QIywYPpLB4g?si=8Lj6-zbtf-lYXM_u - 제대로 연결되면 선이 생김
- 이동 시켜서 무릎 위치를 설정 가능
- Controller 와 Pole vector 가 제대로 (방향이 같게) 배치되어 있지 않다면 모델이 돌아가는 현상 발생
- 순서
- Controller 선택
- Joint, pole vector 등 따라 움직여야 할 오브젝트 선택
- Contrain 생성
연결 완료 시 파란색 표시가 생성됨 -> Contrain 으로 연결되어 있다는 것을 의미
- Constrain 으로 복잡하게 연결하면 캐릭터가 무거워짐
-> 노드로 연결하는 방법도 있음 (고오급 기술)
!! Error : Pole Vector Constrain 이 제대로 연결되지 않을 때 !!
팔꿈치와 뒤 사각뿔이 연결되어야 하는데 이상한 곳에 가있다.
Constrain - Remove Target 시 해결됨
이유는 잘 모르겠는데..
Remove target 을 하면 IK Handle 10W1 이라는 값이 사라지게 된다 ..
3) Group
- 스케일을 조정하고 싶을 때, Master Controller 와 Main Joint 를 그룹화시키고 이를 조정하면 됨
단축키 Ctrl + G
4) Controller 간 관계 설정
- 캐릭터가 움직일 때 다른 constrain 이 같이 움직이지 않음
- P 로 연결
- 척추
- 가장 위에 있는 뼈가 마지막 child 가 되도록 함
(위에서) 첫번째 선택 -> 두번째 선택 후 P -> 마지막까지 반복
- 가장 위에 있는 뼈가 마지막 child 가 되도록 함
- 팔, 머리 등
연결한다면 가장 위에 있는 척추뼈에 연결해줌 - 전신 (Master)
캐릭터 아래에 전신을 움직이는 Controller 생성, 척추와 손목 Controller 를 child 로 둠
- 폴 벡터
무릎 -> 발 P
팔꿈치 -> 손 P - 손목 Rotate Controller -> IK Controller
- 척추
모든 설정을 마치면 캐릭터와 스케일러 하나가 Outluner 에 남음
8. Delete Chanel
필요하지 않은 기능은 모두 삭제
애니메이션을 만들 때, 필요하지 않은 곳에도 key 가 먹히기 때문에 이 현상을 방지해줌
ex) 마스터 Controller 는 캐릭터 이동 외에는 쓸 일이 없음 (예를 들어 캐릭터 스케일을 늘리는 데에 사용되지 X)
1) Lock and Hide
- 오른쪽 채널 박스에서 쓰지 않을 attribute 선택
- 오른쪽 마우스 - Lock and Hide Selected
1) Lock : 잠구기
2) Hide : 보이지 않게 하기
채널 박스에서 보이지 않게 됨
view 창에서 기능이 회색으로 나타남
키도 먹지 않게 됨
2) 채널을 다시 추가
Window - General Editors - Channel Control 에서 다시 추가
필요한 채널을 선택한 다음 Move 시켜준 뒤, 채널 박스에서 선택하여 Unlock
9. Add Attribute & Set Driven Key
애니메이션을 잡기 위해 컨트롤러나 조인트를 복잡하게 움직여야할 때가 있다.
예를 들어 발꿈치를 들거나, 발가락을 들려고 할 때, Rotate, Translate 를 둘 다 해야한다.
귀찮음
그래서 Controller 에 새로운 Attribute 를 만들어주고, Drive Key 를 설정해주면 애니메이션을 보다 쉽게 잡을 수 있다.
1) 한번에 움직일 Object 그룹화
예를 들어 발 앞부분을 들때 Leg IK 와 Foot IK 의 위치가 달라진다.
위로 조금 올라간다.
이들을 한번에 움직일 수 있는 그룹을 먼저 생성한다.
- 두 IK를 선택한 뒤 단축키 Ctrl + G
2) 그룹 위치 설정
알맞은 곳으로 그룹을 옮긴다.
발꿈치를 들고 싶으면 그룹을 발가락 쪽으로, 발가락을 들고 싶으면 그룹을 발꿈치 쪽으로 이동한다.
- D키 사용, 축 이동
이 그룹을 회전시켜보면서 원하는 결과를 얻을 수 있는지 확인해본다.
원리
그룹의 축을 발가락 쪽에 놓고 +x 방향으로 회전을 하게 되면, 가까이 있는 Foot IK의 위치는 작게, 멀리 있는 Leg IK의 위치는 크게 변한다.
원 트랙 바깥쪽 선수가 더 많이 뛰는 것처럼!
Leg IK 가 위로 이동하면서 다리가 접히고, 뒷꿈치가 들린다.
마찬가지로 발꿈치쪽에 축을 두게 되면 Foot IK 가 더 많이 올라가므로 발가락이 들리게 됨
- 똑같은 Object 들을 움직이는 여러 개의 방법이 필요하다면, 그룹을 여러 개 생성해주고, 위치만 바꾸면 된다.
이 그룹을 일일이 Outliner 창에서 선택해 애니메이션을 주는 것은 비효율적이고 불편하다.
따라서 컨트롤러의 Attribute 값을 변경하면 이 그룹을 움직일 수 있도록 설정한다.
3) Controller Add Attribute
컨트롤러에 새로운 Attribute 를 생성해주는 과정
- 컨트롤러 선택 후 Modify - Add Attribute
- Long name : 이름 설정
- Minimum, Maximum : 최소, 최대 값 설정
4) Set Driven Key
컨트롤러의 Attribute와 그룹의 Attribute를 연결시켜 준다.
- Key - Set Driven Key - Set
- Object 를 선택하여 Load Driver, Load Driven
- Driver : 해당 값을 변경할 object
- Driven : Driver 에 의해 값이 변경될 object (여러 개 선택할 수 있음)
- 변경될 Attribute 선택
- 현재의 값을 서로 연결시켜 주므로 값을 설정한 뒤 Key 를 준다.
- Minimum 값 설정
- Maximum 값 설정
Key 를 주게 되면 파란색 표시가 뜸
컨트롤러의 값을 변경했을 때 Drive 가 잘 되는지 확인
5) Graph Editor
- Windows - Animation Editors
기본적으로 Key 를 설정하면 처음과 끝에 Driver 의 값 변경에 비해 Driven의 값이 천천히 변한다.
이 변화율을 직선으로 바꿔줄 수도 있음 (옵션)
10. IK Spline Handle, 디포머
1) IK Spline Handle
뱀 등 체인처럼 연결되어 있는 오브젝트를 움직이게 하는 IK Handle, 커브가 함께 생성된다.
- Auto parent curve : 커브가 조인트에 자동으로 parent됨. 불편하니까 끈다.
- Auto simplity curve : 커브가 생성된 다음 마야가 부드럽게 처리를 해줌. 커브 형태가 변형되어 틀어질 수 있으므로 끈다.
- Number of span : 커브의 단위. 이 수가 낮을 수록 커브가 직선으로, 높을 수록 부드럽게, 많은 포인트들이 만들어짐 (3~4 정도)
컴포넌트를 볼 수 있게 하면 커브의 각 포인트들이 보임
포인트들을 움직이면 조인트가 따라 움직임
생성되는 IK Handle 은 할 수 있는 것이 많지 않기때문에 잘 안씀, Master Controller 에 Parent 시켜준다.
커브는 꼬리 Controller에 Parent
2) 디포머
Deform - Nonlinear
디포머는 적용시키는 순서가 중요하다.
무엇을 먼저하느냐에 따라 결과가 달라짐
ex. 꼬리를 벤드시키는거, 살랑거리는 것을 적용해야 한다고 할 때
벤드를 한 다음 살랑거리는 게 가능해야 함
그래서 살랑거리기 (Sine) -> 벤드 순으로 적용
후에 추가한 것이 OUTPUT이 된다
!! 디포머를 적용시켰다가 모두 삭제한 후, 새로운 디포머를 만들면 디포머가 작동하지 않는 Error !!
-> 왜 이럴까 ? ..
Sine 디포머 예시
살랑거리는 모양새
- Rocate
이렇게 되어있으면 안되고
요렇게 - 축을 꼬리 시작지점으로 옮김
단축키 V - Attr 조정
- Envelope : 활성화 정도
- Amplitude : sine 그래프의 진폭
- Wavelength : sine 그래프의 파장
- Offset : 값을 주면 그래프가 이동하면서 꼬리가 살랑거리는 것 처럼 됨
- Dropoff : 어느 부분을 고정하고 움직일 것인가?
- -1 ~ 1 까지의 값
- -1 : 영점부분을 고정
- 0 : 고정되는 부분이 없음
- 1 : 끝부분이 고정
꼬리같은 경우는 -1 으로 둠
- -1 : 영점부분을 고정
- -1 ~ 1 까지의 값
- Low Bound, High Bound : Low Bound 는 영점 기준 뒷부분, High Bound 는 영점 기준 앞부분
High 는 없애주고, Low 는 절댓값을 늘려서 꼬리의 끝까지 커버가 가능하도록 함
Sine, Bending 모두 적용한 모습
사용하기 편하게 꼬리 컨트롤러에 드라이븐 키 추가하면 됨
- Bend On Off - Bend Envelope
- Sine On Off - Sine Envelope
- Bend ANI - Bend Curvature
- Sine ANI - Sine Offset
'Maya > Rigging' 카테고리의 다른 글
Maya Rigging 기초 3 (0) | 2024.11.22 |
---|---|
Maya Rigging 기초 1 (2) | 2023.11.11 |