inflearn logo
강의

Course

Instructor

3ds Max Rigging Fundamentals for Game Characters

Spline IK and Path Constraint

플립이 없는 회전 보간법?

92

hs

2 asked

0

안녕하세요.
커스텀 스플라인 ik 세팅으로 플립이 없는 트위스트를 구현하고자 합니다.
캐릭터 셋업 테크닉에 나온 makecloset함수를 응용해서 다음과 같은 로테이션 스크립트를 작성했습니다.

(nodeA와 B는 스플라인 IK의 양 끝단 트위스트 컨트롤러 객체 노드, 아래 수식은 회전 보간 될 중간 본들에 적용 된 로테이션 스크립트)

fn quatDot a b = (a.w*b.w + a.x*b.x + a.y*b.y + a.z*b.z)

fn midSlerpNoFlip qA qB t = ( if (quatDot qA qB) < 0 do qB = -qB ; slerp qA qB t )

(

local P = if self.parent != undefined then self.parent.transform else (matrix3 1)

local qA = (nodeA.transform * inverse P).rotation

local qB = (nodeB.transform * inverse P).rotation

local qMid = midSlerpNoFlip qA qB 0.5

local qOut = qMid

qOut

)

문제는 local qMid = midSlerpNoFlip qA qB 0.5가 0.5가 아닌 다른 값으로 보간을 하면 플립이 생긴다는 건데, 제가 뭔가 수식을 잘못 작성한 것인지, 아니면 맥스에서 혹은 수학적으로 완벽한 논플립 회전 보간이 불가능한 것인지 궁금합니다.

(와이어 파라미터에서 회전값을 받아오는 방식은 컨트롤러의 부모가 회전했을 때는 컨트롤러의 실질적인 회전 변화가 0이라 제가 원하는 방식은 아니었습니다.)

3ds-max 리깅 캐릭터-디자인

Answer 1

0

one

안녕하세요.

전체적인 스크립트의 맥락을 파악했을 때 함수 내부에 있는 다음 코드 끝에 0.5 대신에 t를 써야하는게 아닐까 생각됩니다.

(Before) local qMid = midSlerpNoFlip qA qB 0.5

(After) local qMid = midSlerpNoFlip qA qB t

 

makecloest함수는 두 쿼터니언을 보간하는 가장 가까운 방향의 쿼터니언을 계산하기 위해 안전장치를 하는 의미이구요.

t 값에 어떤 비율을 넣더라도 qA와 qB 둘중 하나가 180도 이상 회전할 경우 플립 되는건 정상입니다. 180도를 넘어가는 순간 반대 방향으로 보간되는게 더 가까우므로 플립이 됩니다.

즉, midSlerpNoFlip 이라는 함수는 함수 이름과 다르게 플립이 발생할 수 있는 구조입니다.

굳이 스크립트 함수로 계산하지 않더라도 orientation constraint 컨트롤러로 A, B두 오브젝트의 회전을 50%씩 참조하도록 C 오브젝트의 컨트롤러를 설정한 뒤에, A나 B 오브젝트를 천천히 회전하면서 C에서 왜 플립이 발생하는지 살펴보면 어떤 상황인지 이해하기 쉬울것으로 생각됩니다.

24강 Spring 강의 계층구조관련 질문

0

28

1

spline lk

0

36

2

CTRL+P를 눌러도 해당 창이 메뉴선택지가 안나와요

0

77

2

작동하는 캐릭터 생성방법.

0

59

2

안녕하세요. 5개월전에 실전편, 심화편, 모작편, 코딩테스트 유료강의를 결제해서 공부하고 있습니다.

0

78

2

스킨 모디파이어가 잘 안 됩니다.

0

77

2

연결은 잘 됐는데 팔과 눈이 같이 움직여요ㅠㅠ

0

91

2

강의 90 관련 문의 (리타겟팅 진행 중, 이슈 발생)

0

89

3

레이어드 블랜드 퍼 본에서 pelvis 동작 이슈

0

74

3

수업 재밌게 잘 듣고 있습니다

0

68

2

13분 지점에 새로 만든 UV스퀘어가 미피에게 붙었어요

0

70

2

강의 실습 예재는 어디서 받을 수 있나요?

0

53

1

9:50에서 루프컷을 아래로 내리라는 부분에서

1

122

2

Non Flip과 삼각근_Flip 현상

0

176

1

돌아간 각도 보정법

0

157

1

업노드 축 정렬

0

108

1

NonFlip과 삼각근 셋업에서 위로 팔을 들어올렸을때 이슈

0

139

1

NonFlip과 삼각근 수업 내용 질문드립니다!

1

113

1

7:55 에서 자기자신의 z축을 부모의 x에 정렬하면 안되나요?

0

161

1

바이패드 본이 아닌 ref bones tool로 export했을때 호환성에 관한 질문입니다

0

178

2

삼각근 본 세팅 질문 드립니다

0

222

1

리스트 컨트롤러 강의 중 질문이 있습니다.

0

576

1

무릎, 팔꿈치 등 관절에서도 xtras본이 쓰이나요?

0

667

1

Xtras 와 Bone의 차이점이 궁금합니다.

0

1195

1