본문 바로가기
작업기록

[3Ds Max/Animator] Upnode 개념 이해하기 (feat. LookAt Constraint)

by sadaharu 2024. 3. 15.

Look at constrain을 사용하면서 Upnode의 개념을 이해하기가 어려웠다

캐릭터 셋업 테크닉에 나와있는 내용은 직관적으로 이해가 안가구..

그래서 이것저것 테스트하면서 나만의 방식으로 이해해보려고 노력했다

혹시나 나 같이 책만 보고는 이해가 안되는 분들이 계실 수도 있으니 최대한 세세하고 차근차근 적어보았다

(도움이 되었으면 하는 바람입니다..)

 

Setting

우선 바이패드의 L Upper Arm쪽에 Box를 하나 달아줬다

그리고 축을 확인하기 쉽게하기 위해 축 색깔이 같은 Box를 축에 맞게 Box에 링크해서 달아줬다

X 축 빨간색

Y 축 초록색

Z 축 파란색

 

 

Box의 위치 : Upper Arm에 Align(위치, 축방향 정렬)하고 Local의 X축 방향으로 조금 밀어준다음 Uppper Arm의 자식으로 Link

* Upper Arm에 Align시켜서 축방향은 저렇게 되었음

 

 

정면 모습입니다

이제 Box의 Rotation Controller를 Look at Constraint로 변경해준다 (업노드를 설명하기 위해서는 이 컨트롤러를 사용해야한다, 업노드 개념이 있는 다른 컨트롤러도 있겠지만 일단 제일 접근하기 쉬운걸로..)

 

Look at Target : L Hand

Upnode : Head

Box(의 x축)가 L Hand를 바라보게 해준다, 그리고 업노드는 머리

업노드를 머리로 한 이유는, 다들 이해를 쉽게하기 위해서 Hand를 업노드로 설정하지만 그렇게 하면 응용됐을 때 이해가 어려워지기 때문에 조금 복잡하게 다가갈 수 있는 머리로 설정하였다

 

LookAt Controller에서

Source =  LookAt Controller를 지정한 '오브젝트'

Target = '오브젝트'(Source)가 바라보는 개체

Upnode = '오브젝트'가 '타겟'을  바라보는 방향을 기준으로 위와 아래의 기준을 정해주는 것 

Source가 '오른손'이라고 가정한다면 Target인 '앞에 있는 사과'를 가르키고 있을 때 '손등과 손바닥을 지정해주는 기준'이 Upnode인 것이다

 

Select LookAt Axis

쉬운 내용이지만 잘 알아둬야 할 내용이다

우선 Select LookAt axis, 말그대로 '바라보는 방향을 어떤 축으로 결정할거냐'다

캡쳐본만 봐도 직관적으로 알 수 있다

Flip은 말그대로 축만 뒤집는거다

 

Upnode Control

업노드를 어떻게 컨트롤할 건지 정하는 건데

말이 어렵지 아래 짤을 보면 쉽게 이해할 수 있다

아래의 짤에서 더미 = Upnode , 주전자 = Source, 포인트 =Target

Look At
Axis Alignment

파일의 출처는 캐릭터 셋업 테크닉 입니다

Lookat은 손등이 Upnode를 바라보는 방향으로 정해지는 거고

Axis Alignment는 Upnode의 회전방향에 따라 정해지는 것이다

근데 여기서 Source와 Upnode의 두가지 물체에 대한 축이 각자 존재하기 때문에 이 부분은 조금 복잡해진다

위의 짤처럼 Source와 Upnode가 같은 방향으로 나란히 위치해 있다면 이해가 쉽겠지만

바이패드와 같이 축이 정해져있는 본을 Upnode로 건다면 머리가 복잡해진다

이제 아래에서 자세히 알아보겠다

 

 

Source/Upnode Alignment

우선 LookAt Axis를 X축으로 설정하고 시작한다 (=Source의 X축이 Target을 바라본다)

여기서 한가지 오류라고 생각되는 것은

지금 위 사진에서는 LookAt Axis가 X축이고 Source/Upnode Alignment항목에 X축이 활성화(클릭됨)가 되어있는데

다시 선택해보면 LookAt Axis로 선택한 축은 Source Axis로 선택하지 못한다

왜냐하면 바라보는 축의 방향은 고정되어있는데, 이 고정된 축을 Upnode의 축과 일치시킬 수 없기 때문이다

(이 부분이 이해가 되지 않는다면 밑에 부분을 먼저 읽고나서 다시 돌아오길 바란다)

 

어쨋든 Source Axis에서 X축을 선택하지 못한다 치고! 하나하나씩 파헤쳐보자

 

 

1. Source Axis : Z / Aligned to Upnode Axis : X

자,Upnode의 축은 고정되어 있다 그러므로 이제부터 바뀌는건 Box의 방향이다

 - Source의 Z축을 Upnode의 X축 방향과 정렬시킨다 -> Source의 Z축 방향이, 하늘위로 치솟은 Upnode의 X축 방향으로 정렬 된다 -> 근데 Source의 X축은 꼭! L Hand를 바라보고 있어야 하는 한계(LookAt Constraint) 때문에 그 한계 안에서 하늘 위를 바라보고 있다

-  이제 색을 빼고 축만 봐보자, 두개의 축은 정렬되어 있다. Upnode의 또 하나의 개념은 'Rotation을 따라간다'는 건데, 모든 축을 따라가는게 아니라 두번째 짤처럼 Source의 X축이 회전될 수 있는 방향(Lookat 으로 바라보고 있을 때 회전될 수 있는 축은 오로지 바라보고 있는 축의 회전이다)이 Upnode에서는 Z축 회전이라는 걸 이해할 수 있어야 한다

하얀색 상자 그림은 Z축을 어디에 정렬했는지가 기준이 된다

이해가 안 간다면 저 Box를 Upnode와 나란히 (축에 맞춰서) 똑바로 뒀다고 생각해보자

그럼 LookAt Axis(여기서는 X축)는 바라보아야 할 곳이 있으니 나머지는 회전이 안 되고 X축 회전만 가능한데(핑크색)

Upnode는 Source와 축정렬이 되어있으니 회전되는 방향이 같다는 말이다  -> 따라서 위의 짤처럼 회전이 된다

(여기서 이해가 안 된다면 걱정마라. 밑에 다른 예시를 보며 감을 익히자)

 

 

2. Source Axis : Z / Aligned to Upnode Axis : Y

 

- Source의 Z축을 Upnode의 Y축 방향과 정렬시킨다 -> Source의 Z축 방향이, 앞으로 삐죽나온 Upnode의 Y축 방향으로 정렬 된다 -> Box(=Source)의 Z축이 앞을 바라보고 있다

- 1번의 경우와 다른 점이 하나 있다면 핑크색 회전뿐만 아니라 Upnode의 X축 회전에도 Box가 같이 회전한다는 건데, 이 부분은 정확한 건 아니지만 축이 휘어져 있기 때문에 발생한 회전이고 이는 3번의 경우에서 보이겠지만 짐벌락 현상이 일어나는 경우이다 (핑크색 회전과 달리 자세히 보면 완벽하게 따라가지 않음) - 이부분 알고 계신 분이 있으면 댓글 부탁드립니다..

- 이해하기 쉽게 팔의 각도를 다르게 해보면 무슨 말인지 대강 알 수 있을 것이다

 

 

3. Source Axis : Z / Aligned to Upnode Axis : Z

여기서는 Source의 Z축이 Upnode의 Z축과 정렬되어야 하기 때문에 하얀색 박스가 저렇게 그려진다

Source의 Z축을 Upnode의 Z축 방향과 정렬시킨다 -> Source의 Z축 방향이, 오른쪽을 바라보고 있는 Upnode의 Z축 방향으로 정렬 된다 -> 근데 Source의 X축은 꼭! L Hand를 바라보고 있어야 하는 한계(LookAt Constraint) 때문에 오른쪽으로 도저히 축이 정렬될 수 없다 -> 그래서 최대한 오른쪽으로 꺾인 모습이다

이렇게 팔을 아래로 회전시켜서 해보면 저 핑크색 회전이 뭘 말하는 건지 쉽게 알 수 있다

 

 


자자 여기까지 했으면 Source Axis의 나머지 축도 이해할 수 있을거라 생각이 된다

비록 이렇게까지 파고드는게 나중에 도움이 될 일이 있을지는 모르겠지만

이해가 안 가는 부분을 이해할 때까지 파고들어야 하는 성격이기에 이렇게 끄적여본다..

혹시 이 글을 읽는 분들중 이해가 안가는 부분이 있거나 틀렸다고 생각하시는 부분이 있다면 편하게 댓글을 남겨주시길 바란다

 

그럼 전 자러갑니다 총총..