SlideShare a Scribd company logo
1 of 35
언리얼에서 사용되는 IK
Inverse Kinematics
데브루키 박수찬(ACA)
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
목차
1. IK란?
2. CCDIK
3. FABRIK
IK 소개
IK 소개
본, 애니메이션
본, 애니메이션
본은 기본적으로 계층구조로 되어있다.
본이란, 모델에서 뼈 역할을 하는 렌더링되지 않
는 계층적 자료구조이다.
뼈이므로, 실제로 보이진 않지만 애니메이션에
따라 뼈를 움직여서 뼈에 붙은 피부를 움직일 수
있게 한다. (스키닝)
즉, 애니메이션에서 움직이는 것은 실제로 ‘본’이
며, ‘스킨‘은 뼈에 적절하게 붙어서 같이 움직일
뿐이다.
그래서 IK란?
본, 애니메이션
본의 위치와 움직임은 그 부모 본, 조상 본들에게
도 영향을 받게 된다.
만약 캐릭터의 어깨를 움직인다면 팔목이나 손목
이 같이 움직이는 것처럼 부모 본의 움직임에 자
식 본이 영향을 받는다.
그래서 IK란?
본, 애니메이션
그렇기에 본을 사용하는 애니메이션 또한 서로의
조상에 영향을 받게 된다.
그래서 자식 본에 애니메이션을 적용하고 올바른
월드 좌표에 위치시키기 위해서는, 자신의 모든
부모들의 변환행렬을 곱하게 된다.
계층구조에서 i번째 물체를 월드 공간으로
변환하는 행렬
(계속해서 부모의 변환행렬을 곱하게 된다)
요점 : 애니메이션은 부모 본의 영향을 받는다
그래서 IK란?
본, 애니메이션
특정한 움직임을 취하는 애니메이션이 있다면,
본의 각각의 관절들을 적절한 위치로 움직여서 동
작을 만든다.
즉 자세를 표현하기 위해 애니메이션에 입력되
어 있는 관절(joint)의 회전각을 적용하는 것이
다.
그래서 IK란?
본, 애니메이션
이러한 회전각은 이미 알고 있으므로, 정해진 회
전을 통해 애니메이션을 표현할 수 있다.
Forward Kinematics(FK)에서는 이렇게 미
리 정해진 회전을 기반으로 본의 위치를 조정한
다.
애니메이션에 필요한 이동, 회전, 스케일 값
은 이 행렬에 있을 것이다
그래서 IK란?
본, 애니메이션
이 반대가 IK(Inverse Kinematic)이다.
만약 걷는 애니메이션이 있다면, 계단을 올라가
려고 하는 순간 계단을 뚫고 가게 된다.
이미 관절의 회전각이 정해져있는 애니메이션으
로는 계단에 대응할 수 없기 때문.
이럴 경우엔 일반적인 부모->자식 본 계층의 애
니메이션을 사용할 수 없다.
그래서 IK란?
본, 애니메이션
그래서 ‘발’을 ‘계단 위’에 올리기 위해, 발목, 무
릎, 골반이 어떤 각도로 회전해야 하는지를 역순
으로 계산해줄 필요가 있다.
이것을 IK(Inverse Kinimatic)이라고 한다.
즉, IK란 특정한 목표(Target)의 위치에 특정한 본을 위
치시키기 위해 각각의 관절(Joint)들의 위치/회전을 계산
하는 것이다.
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
원하는 Target 의 위치
해당 Target의 공간
Target 공간을 ‘bone’으로 설정했을
경우, 해당 bone
IK를 적용할 가장 말단 본
(대개 손끝, 발끝 등..)
IK를 적용할 가장 최상단 본
(어깨, 허리, 골반, 허벅지 등..)
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
해당 연산의 정밀도
(CCD는 반복연산이므로 적절한 오차범위를
지정해야 연산 비용을 줄일 수 있다)
해당 연산의 최대 반복횟수
각 관절(Joint)들의 회전 한계값 설정
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
CCD의 원리
1. 본 링크의 가장 말단부터 시작합니다.
해당 본을 회전시킬건데, Chain End가 Target을 바라볼
수 있게 회전시킵니다.
그러려면 관절(joint)의 적절한 회전각을 구해야 합니다.
우리는 Pivot(Joint좌표), Chain End, Target의 위치
를 알고 있다고 가정합니다.
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
CCD의 원리
2. 그러면 그 세 개의 위치를 이용하여,
Pivot-Target, Pivot-ChainEnd 두 개의 벡터를 만들
수 있습니다.
𝑃𝑇
∘
𝑃𝐶
=
𝑃𝑇
*
𝑃𝐶
* cos⊝ 이므로,
cos−1(
𝑃𝑇
∘
𝑃𝐶
) = ⊝ 임을 알 수 있습니다.
단,
𝑃𝑇
,
𝑃𝐶
는 정규화된 벡터임.
𝑃𝑇
𝑃𝐶
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
CCD의 원리
3. 그러면 그 방향대로 해당 본을 회전시킵니다. 단 회전 방
향이 시계방향일지 반시계방향일지를 정의해야 합니다. 𝑃𝑇
𝑃𝐶
𝑃𝐶
×
𝑃𝑇
를 통해 회전방향을 정의할 수 있습니다.
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
CCD의 원리
4. 부모 본을 타고 올라가면서 모두 같은 동작을 반복합니다.
Root Bone까지 해당 동작을 완료하였다면,
이것이 1 Iteration(반복)입니다.
1회 반복을 하였을 때, 아직 Chain End가 Target에 원하
는 만큼 도달하지 않았다면 1~4의 과정을 계속해서 반복합
니다.
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
CCD의 원리
이렇게 해서 Target에 도달하면 좋겠지만, 만약 Target
이 관절을 전부 뻗어도 닿지 않는 거리에 있거나, 지나치게
많은 반복을 하게되면 계속해서 회전 연산을 하게 되므로
성능 문제가 발생하게 됩니다.
그래서 CCD에서는 최대반복횟수와 허용오차범위를 미리
설정해 주어야 성능저하를 방지할 수 있습니다.
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
해당 연산의 정밀도
(CCD는 반복연산이므로 적절한 오차
범위를 지정해야 연산 비용을 줄일 수
있다)
해당 연산의 최대 반복횟수
각 관절(Joint)들의 회전 한계값 설정
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
CCD의 장점
1. 비교적 간단한 구현방법
2. 회전각을 사용하기 때문에, 회전각의 최대값을 제한할 수 있다.
(회전각이 60도인데 제한값이 30도라면 30도만 움직이는 식으로)
그래서 각 뼈대 간의 관절 가동 범위가 제한적인 인간형 본의 IK에 어울린다.
CCD의 단점
1. 높은 연산 비용
2. 비교적 부정확한 결과(성능 저하를 막기 위해 오차범위를 두기 때문)
3. 작동 방식 때문에 리얼하지 않은 결과가 나올 수 있다.
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
CCD의 장점
1. 비교적 간단한 구현방법
2. 회전각을 사용하기 때문에, 회전각의 최대값을 제한할 수 있다.
(회전각이 60도인데 제한값이 30도라면 30도만 움직이는 식으로)
그래서 각 뼈대 간의 관절 가동 범위가 제한적인 인간형 본의 IK에 어울린다.
CCD의 단점
1. 높은 연산 비용
2. 비교적 부정확한 결과(성능 저하를 막기 위해 오차범위, 최대반복횟수 를 두기 때문)
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
Target을 설정하는 부분
(위치, 공간)
전체적으로 CCD와 유사하다
Tip : 본 체인의 가장 말단 부분 (End
Effector)을 설정
Root : 본 체인의 가장 상단 부분(Root)을
설정
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
Target을 설정하는 부분
(위치, 공간)
전체적으로 CCD와 유사하다
Tip : 본 체인의 가장 말단 부분 (End
Effector)을 설정
Root : 본 체인의 가장 상단 부분(Root)을
설정
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
FABRIK의 원리
1. P0은 Root Point, P3은 End Point(본 체인의 가
장 말단에 있는 본의 끝) 이다. L1, l2, l3은 각 본을 의미
한다.
2. 우선 각 본의 길이 l1 , l2, l3을 합하여, 그 길이의 합이
Goal에 닿는지 확인한다. 이를 통해 IK시 목표에 닿을
수 있는지 여부를 확인할 수 있다.
X
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
FABRIK의 원리
3. Goal을 P3` (P3 Prime)으로 놓고, P2와 P3` 사이의 단
위벡터를 계산한다. 해당 단위벡터에 l3의 길이를 곱한다.
그러면 P3`으로부터 시작하여, P2로 향하지만 닿지 않는 그
런 벡터가 생성될 것이다.
이 벡터의 끝점을 P2`이라고 한다.
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
FABRIK의 원리
4. P3의 Pivot에서 시작하여, 나머지 P2, P1, P0 관절에
도 같은 방법을 반복한다.
여기까지가 Forward And Backward Reaching IK의
‘Backward’ 부분이다.
pivot
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
FABRIK의 원리
5. 이번에는 P0 관절을 P0``(P0 Prime Prime)으로 놓고,
P0``부터 P1` 까지의 단위벡터를 구한 다음, L1의 크기를 곱
하여 P0``에서 시작하여 P1`로 향하는 벡터를 만들어낸다.
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
FABRIK의 원리
6. 나머지 P1``, P2``, P3``에도 같은 방법을 반복한다.
그러면 이제 P0에서 시작하지만, 좀 더 Target(Goal)에
가까워진 본을 만들어낼 수 있다.
여기까지가 Forward 단계이다.
충분히 가까워지거나, Target에 도착할 때 까지
Backward-Forward 동작을 반복한다.
FABRIK 또한 CCD처럼 반복 연산이기 때문에, 허용오차와
반복횟수를 설정해 주어야 한다.
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
FABRIK(Forward And Backward Reaching Inverse Kinematics)
FABRIK의 장점
1. 회전변환을 사용하지 않으며, 알고리즘이 심플하고
단순하기 때문에 CCD보다 빠르다.
2. 유연한 IK를 제공하기 때문에,
뱀, 괴물, 촉수 등의 유연한 본에 적절하다.
FABRIK의 단점
1. 기본적으로 반복하며 답을 찾아가는 휴리스틱
알고리즘이기 때문에, 반복회수와 정확도에 따라 성능적
문제가 발생할 수 있다.
2. 회전각을 쓰지 않기 때문에 회전각에 제약을 줄 수 없다.
(기본적인 FABRIK은 그렇고, 찾아보니 Constraint FABRIK에서는 제약을 줄 수 있다고 한다.)
PPTPRESENTATION
Enjoy your stylish business and campus life with BIZCAM
감사합니다.

More Related Content

What's hot

Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Dae Hyek KIM
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑MinGeun Park
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요Chris Ohk
 
유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기flashscope
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~ProjectAsura
 
빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술YEONG-CHEON YOU
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2Kyoung Seok(경석) Ko(고)
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018devCAT Studio, NEXON
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
IEnumerator란 무엇인가?
IEnumerator란 무엇인가?IEnumerator란 무엇인가?
IEnumerator란 무엇인가?Jungsoo Park
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠동환 김
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현noerror
 
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지Minjung Ko
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우Sukwoo Lee
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 

What's hot (20)

Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
Ndc17 - 차세대 게임이펙트를 위해 알야아할 기법들
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
[0107 박민근] 쉽게 배우는 hdr과 톤맵핑
 
프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요프로그래머가 되고 싶으세요
프로그래머가 되고 싶으세요
 
유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기유니티에서 MMD 사용해보기
유니티에서 MMD 사용해보기
 
中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~中級グラフィックス入門~シャドウマッピング総まとめ~
中級グラフィックス入門~シャドウマッピング総まとめ~
 
빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술빠른 렌더링을 위한 오브젝트 제외 기술
빠른 렌더링을 위한 오브젝트 제외 기술
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
Rosserial stm32
Rosserial stm32Rosserial stm32
Rosserial stm32
 
IEnumerator란 무엇인가?
IEnumerator란 무엇인가?IEnumerator란 무엇인가?
IEnumerator란 무엇인가?
 
마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠마칭 큐브 알고리즘 - ZP 2019 데캠
마칭 큐브 알고리즘 - ZP 2019 데캠
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현
 
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
[NDC2017] 뛰는 프로그래머 나는 언리얼 엔진 - 언알못에서 커미터까지
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 

데브루키 IK 1편

  • 1. 언리얼에서 사용되는 IK Inverse Kinematics 데브루키 박수찬(ACA)
  • 2. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM 목차 1. IK란? 2. CCDIK 3. FABRIK
  • 5. 본, 애니메이션 본, 애니메이션 본은 기본적으로 계층구조로 되어있다. 본이란, 모델에서 뼈 역할을 하는 렌더링되지 않 는 계층적 자료구조이다. 뼈이므로, 실제로 보이진 않지만 애니메이션에 따라 뼈를 움직여서 뼈에 붙은 피부를 움직일 수 있게 한다. (스키닝) 즉, 애니메이션에서 움직이는 것은 실제로 ‘본’이 며, ‘스킨‘은 뼈에 적절하게 붙어서 같이 움직일 뿐이다.
  • 6. 그래서 IK란? 본, 애니메이션 본의 위치와 움직임은 그 부모 본, 조상 본들에게 도 영향을 받게 된다. 만약 캐릭터의 어깨를 움직인다면 팔목이나 손목 이 같이 움직이는 것처럼 부모 본의 움직임에 자 식 본이 영향을 받는다.
  • 7. 그래서 IK란? 본, 애니메이션 그렇기에 본을 사용하는 애니메이션 또한 서로의 조상에 영향을 받게 된다. 그래서 자식 본에 애니메이션을 적용하고 올바른 월드 좌표에 위치시키기 위해서는, 자신의 모든 부모들의 변환행렬을 곱하게 된다. 계층구조에서 i번째 물체를 월드 공간으로 변환하는 행렬 (계속해서 부모의 변환행렬을 곱하게 된다) 요점 : 애니메이션은 부모 본의 영향을 받는다
  • 8. 그래서 IK란? 본, 애니메이션 특정한 움직임을 취하는 애니메이션이 있다면, 본의 각각의 관절들을 적절한 위치로 움직여서 동 작을 만든다. 즉 자세를 표현하기 위해 애니메이션에 입력되 어 있는 관절(joint)의 회전각을 적용하는 것이 다.
  • 9. 그래서 IK란? 본, 애니메이션 이러한 회전각은 이미 알고 있으므로, 정해진 회 전을 통해 애니메이션을 표현할 수 있다. Forward Kinematics(FK)에서는 이렇게 미 리 정해진 회전을 기반으로 본의 위치를 조정한 다. 애니메이션에 필요한 이동, 회전, 스케일 값 은 이 행렬에 있을 것이다
  • 10. 그래서 IK란? 본, 애니메이션 이 반대가 IK(Inverse Kinematic)이다. 만약 걷는 애니메이션이 있다면, 계단을 올라가 려고 하는 순간 계단을 뚫고 가게 된다. 이미 관절의 회전각이 정해져있는 애니메이션으 로는 계단에 대응할 수 없기 때문. 이럴 경우엔 일반적인 부모->자식 본 계층의 애 니메이션을 사용할 수 없다.
  • 11. 그래서 IK란? 본, 애니메이션 그래서 ‘발’을 ‘계단 위’에 올리기 위해, 발목, 무 릎, 골반이 어떤 각도로 회전해야 하는지를 역순 으로 계산해줄 필요가 있다. 이것을 IK(Inverse Kinimatic)이라고 한다. 즉, IK란 특정한 목표(Target)의 위치에 특정한 본을 위 치시키기 위해 각각의 관절(Joint)들의 위치/회전을 계산 하는 것이다.
  • 12. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
  • 13. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) 원하는 Target 의 위치 해당 Target의 공간 Target 공간을 ‘bone’으로 설정했을 경우, 해당 bone IK를 적용할 가장 말단 본 (대개 손끝, 발끝 등..) IK를 적용할 가장 최상단 본 (어깨, 허리, 골반, 허벅지 등..)
  • 14. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) 해당 연산의 정밀도 (CCD는 반복연산이므로 적절한 오차범위를 지정해야 연산 비용을 줄일 수 있다) 해당 연산의 최대 반복횟수 각 관절(Joint)들의 회전 한계값 설정
  • 15. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법)
  • 16. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) CCD의 원리 1. 본 링크의 가장 말단부터 시작합니다. 해당 본을 회전시킬건데, Chain End가 Target을 바라볼 수 있게 회전시킵니다. 그러려면 관절(joint)의 적절한 회전각을 구해야 합니다. 우리는 Pivot(Joint좌표), Chain End, Target의 위치 를 알고 있다고 가정합니다.
  • 17. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) CCD의 원리 2. 그러면 그 세 개의 위치를 이용하여, Pivot-Target, Pivot-ChainEnd 두 개의 벡터를 만들 수 있습니다. 𝑃𝑇 ∘ 𝑃𝐶 = 𝑃𝑇 * 𝑃𝐶 * cos⊝ 이므로, cos−1( 𝑃𝑇 ∘ 𝑃𝐶 ) = ⊝ 임을 알 수 있습니다. 단, 𝑃𝑇 , 𝑃𝐶 는 정규화된 벡터임. 𝑃𝑇 𝑃𝐶
  • 18. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) CCD의 원리 3. 그러면 그 방향대로 해당 본을 회전시킵니다. 단 회전 방 향이 시계방향일지 반시계방향일지를 정의해야 합니다. 𝑃𝑇 𝑃𝐶 𝑃𝐶 × 𝑃𝑇 를 통해 회전방향을 정의할 수 있습니다.
  • 19. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) CCD의 원리 4. 부모 본을 타고 올라가면서 모두 같은 동작을 반복합니다. Root Bone까지 해당 동작을 완료하였다면, 이것이 1 Iteration(반복)입니다. 1회 반복을 하였을 때, 아직 Chain End가 Target에 원하 는 만큼 도달하지 않았다면 1~4의 과정을 계속해서 반복합 니다.
  • 20. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) CCD의 원리 이렇게 해서 Target에 도달하면 좋겠지만, 만약 Target 이 관절을 전부 뻗어도 닿지 않는 거리에 있거나, 지나치게 많은 반복을 하게되면 계속해서 회전 연산을 하게 되므로 성능 문제가 발생하게 됩니다. 그래서 CCD에서는 최대반복횟수와 허용오차범위를 미리 설정해 주어야 성능저하를 방지할 수 있습니다.
  • 21. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) 해당 연산의 정밀도 (CCD는 반복연산이므로 적절한 오차 범위를 지정해야 연산 비용을 줄일 수 있다) 해당 연산의 최대 반복횟수 각 관절(Joint)들의 회전 한계값 설정
  • 22. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) CCD의 장점 1. 비교적 간단한 구현방법 2. 회전각을 사용하기 때문에, 회전각의 최대값을 제한할 수 있다. (회전각이 60도인데 제한값이 30도라면 30도만 움직이는 식으로) 그래서 각 뼈대 간의 관절 가동 범위가 제한적인 인간형 본의 IK에 어울린다. CCD의 단점 1. 높은 연산 비용 2. 비교적 부정확한 결과(성능 저하를 막기 위해 오차범위를 두기 때문) 3. 작동 방식 때문에 리얼하지 않은 결과가 나올 수 있다.
  • 23. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM CCD(Cyclic Coordinate Descent : 순환 좌표 하강법) CCD의 장점 1. 비교적 간단한 구현방법 2. 회전각을 사용하기 때문에, 회전각의 최대값을 제한할 수 있다. (회전각이 60도인데 제한값이 30도라면 30도만 움직이는 식으로) 그래서 각 뼈대 간의 관절 가동 범위가 제한적인 인간형 본의 IK에 어울린다. CCD의 단점 1. 높은 연산 비용 2. 비교적 부정확한 결과(성능 저하를 막기 위해 오차범위, 최대반복횟수 를 두기 때문)
  • 24. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics)
  • 25. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics)
  • 26. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics) Target을 설정하는 부분 (위치, 공간) 전체적으로 CCD와 유사하다 Tip : 본 체인의 가장 말단 부분 (End Effector)을 설정 Root : 본 체인의 가장 상단 부분(Root)을 설정
  • 27. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics) Target을 설정하는 부분 (위치, 공간) 전체적으로 CCD와 유사하다 Tip : 본 체인의 가장 말단 부분 (End Effector)을 설정 Root : 본 체인의 가장 상단 부분(Root)을 설정
  • 28. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics) FABRIK의 원리 1. P0은 Root Point, P3은 End Point(본 체인의 가 장 말단에 있는 본의 끝) 이다. L1, l2, l3은 각 본을 의미 한다. 2. 우선 각 본의 길이 l1 , l2, l3을 합하여, 그 길이의 합이 Goal에 닿는지 확인한다. 이를 통해 IK시 목표에 닿을 수 있는지 여부를 확인할 수 있다. X
  • 29. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics) FABRIK의 원리 3. Goal을 P3` (P3 Prime)으로 놓고, P2와 P3` 사이의 단 위벡터를 계산한다. 해당 단위벡터에 l3의 길이를 곱한다. 그러면 P3`으로부터 시작하여, P2로 향하지만 닿지 않는 그 런 벡터가 생성될 것이다. 이 벡터의 끝점을 P2`이라고 한다.
  • 30. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics) FABRIK의 원리 4. P3의 Pivot에서 시작하여, 나머지 P2, P1, P0 관절에 도 같은 방법을 반복한다. 여기까지가 Forward And Backward Reaching IK의 ‘Backward’ 부분이다. pivot
  • 31. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics) FABRIK의 원리 5. 이번에는 P0 관절을 P0``(P0 Prime Prime)으로 놓고, P0``부터 P1` 까지의 단위벡터를 구한 다음, L1의 크기를 곱 하여 P0``에서 시작하여 P1`로 향하는 벡터를 만들어낸다.
  • 32. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics) FABRIK의 원리 6. 나머지 P1``, P2``, P3``에도 같은 방법을 반복한다. 그러면 이제 P0에서 시작하지만, 좀 더 Target(Goal)에 가까워진 본을 만들어낼 수 있다. 여기까지가 Forward 단계이다. 충분히 가까워지거나, Target에 도착할 때 까지 Backward-Forward 동작을 반복한다. FABRIK 또한 CCD처럼 반복 연산이기 때문에, 허용오차와 반복횟수를 설정해 주어야 한다.
  • 33. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics)
  • 34. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM FABRIK(Forward And Backward Reaching Inverse Kinematics) FABRIK의 장점 1. 회전변환을 사용하지 않으며, 알고리즘이 심플하고 단순하기 때문에 CCD보다 빠르다. 2. 유연한 IK를 제공하기 때문에, 뱀, 괴물, 촉수 등의 유연한 본에 적절하다. FABRIK의 단점 1. 기본적으로 반복하며 답을 찾아가는 휴리스틱 알고리즘이기 때문에, 반복회수와 정확도에 따라 성능적 문제가 발생할 수 있다. 2. 회전각을 쓰지 않기 때문에 회전각에 제약을 줄 수 없다. (기본적인 FABRIK은 그렇고, 찾아보니 Constraint FABRIK에서는 제약을 줄 수 있다고 한다.)
  • 35. PPTPRESENTATION Enjoy your stylish business and campus life with BIZCAM 감사합니다.