Forward Kinematics
Kinematics ( = 운동학)
- 물체의 움직임에 대해서 연구하는 분야.
- 질량, 힘과 같은 물리적인 걸 고려하지 않는다. 그냥 움직임 자체를 다루는 분야이다.
- 컴퓨터 그래픽스에서 여러개의 관절로 이루어진 다관절체의 움직임을 기술할 때 키네마틱스가 사용된다.
- 2종류가 있음: Foward knematics, Inverse kinematics
Dynamics(or Kinetics) (= 동역학)
- kinematics에 대응되는 단어임.
- 어떤 motion과 어떤 motion을 만들어내는 원인(force, mass) 사이의 관계를 다루는 분야이다.
Kinematics
1) Foward Kinematics
ex) 세타 1, 세타 2를 알때 손 끝의 위치 방향 계산
joint angle이 주어졌을때 end-effector의 position과 orientation을 compute하는거
→ 상대적으로 clear하다. 명확하게 정의되어 있고 간단함
2) Inverse Kinematics
ex) end effector의 위치와 방향을 알때 angle을 계산하는거
→ solution이 무한개일 수도 있고 없을수도 있음. 복잡하다.
우리가 배울건 Foward Kinematics!!!
Foward Kinematics: A Simple Example
- 2차원 공간상의 로봇팔
→ 2개의 revolute joints(회전관절), joint angles는 이미 알고 있음.
→ end-effector의 position 계산하기
→ 이렇게 삼각함수 써서 계산할 수 있음.
특별히 어려운건 아니지만 더 쉬운 방법이 있다!!!!
A Chain of Transformation
body attached coordinate system 관점으로 해석하면 오른쪽으로 곱해나가면 되고
global coordinate system의 관점으로 해석하면 왼쪽으로 곱해나가면 된다.
Quiz #1
Foward Kinematics Map
- 앞에서 본 걸 Foward Kinematcis Map이라고 한다. → 여러개의 Joint transformation과 Link transformation으로 구성되어 있음.
- Joint transformation
: joint movement를 의미한다. time-varying한 transformation이며 보통 rotation을 의미한다.
(root에 대해서는 translation 포함)
- Link transformation
: parents에 대한 frame을 define하는데 사용된다. static한 transformation이며 보통 translation을 의미한다.
- 빨간점을 글로벌 frame 기준으로 위치를 표현하면
→ 원점 아니더라도 똑같이 계산하면 된다.
→ 이게 local 좌표를 global 좌표로 맵핑시켜주는 kinematics map
- 모션 데이터 (joint transformation)의 경우
→ root의 경우 3차원 상의 translate + rotate이므로 6 자유도로 두고,
→ 나머지의 경우 3차원 상의 rotate이므로 3 자유도로 놓으면 된다.
Quiz #2
Introduction to Character Animation
Cel Animation
- 그림을 여러개 그리고 이를 차례대로 넘기는걸로 만화가 시작되었음.
- 보통 디자이너는 key frame만 그리고 조수들이 그 사이를 채워넣는다.
Computer Animation
- 컴퓨터는 현재 labor-intensive한 animation 과정을 widely하게 대체하고 있다.
→ 키 프레임을 그려주면 그 사이 그림을 그리는 작업을 컴퓨터가 한다.
→ 일일히 손으로 그리는 것보다 훨씬 controllable하다.
키 프레임이 바뀔 경우 중간 그림을 다 다시 그려야하는데
컴퓨터는 키 프레임이 바뀌더라도 중간을 알아서 만드니까
Character Animation Approaches
1) keyframe animation
2) motion capture
3) data-drive animation
4) physics-based animation
1) Keyframe Animation
- Idea
Animator는 key frame이라고 하는 중요한 순간마다 events를 지정한다.
→ event는 position & orientation of object, colors, light intensities, camera parameters 등이 될 수 있음.
컴퓨터는 interpolation을 사용해서 frame들 사이를 채운다.
(즉, 창의력이 필요한 부분은 사람이, 노동력이 필요한 부분은 컴퓨터가 한다.)
- 좋은 품질의 애니메이션을 만들기는 힘들지만, 비용이 저렴하고 방법이 쉬워서 요즘도 많이 사용된다.
→ 하지만 진짜 사실적인 움직임을 만들기는 어려움.
→ 스킬이 좋은 아티스트라면 좋은 품질의 애니메이션을 만들 수 있지만 아니라면 굉장히 어색하다.
(아티스트의 실력에 의해 많이 좌우되는 방법)
2) Motion Capture
- Idea
realistic animation을 위해 실제 사람의 motion을 사용하는거
- 모션 캡쳐 시스템은 people 또는 object의 movement를 캡쳐한다.
→ 사람들 옷에 marker를 붙이고, 수십대의 카메라가 이를 동시에 촬영하거나 센서를 달아서 매시간마다 관절의 각도 측정
- 동작이 자유롭고 가장 정확도가 높다.
→ 하지만 캡쳐한 모션으로 움직이는 캐릭터가 존재하는 가상환경이 실제 환경과 비슷한 경우에만 자연스럽다.
(평면에서 모션 캡쳐해서 만든 캐릭터가 비탈길을 걸어가면 어색해진다.)
하지만 굉장히 비용이 많이 든다. 장비도 비싸고 마크를 붙이는데도 전문가도 필요하고...→ 큰 회사에서만 가능한 방법임
3) Data-Driven Animation
- 요즘 각광받고 있는 분야임.
- Idea
모션 캡쳐 비용이 너무 많이 드니까 한번 캡쳐된 모션 캡쳐를 최대한 잘 활용해 새로운 motion을 만들어내는거
→ motion data를 editing techniques를 사용해 수정하여 재사용을 하거나
→ captured motion의 distribution을 학습해서(머신러닝) 자연스러운 모션을 만들어내거나.
→ 요즘은 딥러닝 기술이 많이 사용된다.
4) Physics-Based Animation
- 아주 본격적으로 쓰이진 않지만 이것도 요즘은 꽤 사용된다.
- Idea
움직임이 자연스러운지 판단하는 기준은 physcial reality이기 때문에 motion을 generate하기 위해 physics simulation 을 사용하는거
- passive한 character motion에 대해서는 이미 많이 사용된다.
→ 게임에서 총을 맞으면 그때부터 물리 기반 애니메이션으로 변경해서
넘어지는 동작을 만들어낸다.
- active한 character motion에 대해서는 "controller"가 필요하다.
→ 캐릭터 관절에 어떤 힘을 줘야하는지 굉장히 잘 계산해야한다.
(???보충)
- 요즘은 딥러닝 테크닉(such as deep reinforcement learning)이 많이 사용된다.
Motion Capture Data
Motion Capture Data
앞에서 4가지 방법을 통해 만들어낸 motion capture data
- Motion capture data는 "Skeleton" 데이터와 "Motion" 데이터를 포함한다.
1) Skeleton: static data
→ joint hierarchy
→ 부모로부터의 joint offset
2) Motion: time-varying data
→ internal joint orientation
→ skeleton root의 position 과 orientation (w.r.t. global frame)
(root는 부모가 없으니까 global frame 에 대해 기술한다.)
- Posture(pose): "Motion" at a single frame
- T pose: 모든 Joint orientation 이 zero(identity matrix) 일때의 pose
- Motion capture data에서
→ Internal joint는 3DOFs 를 가지고 (rotation only)
→ Root joint는 6DOFs를 가진다 (rotation and translation)
BVH File Format
- 바이오 비전이라는 회사에서 개발한 파일 포멧
- 두 파트로 나누어져있다.
1) Hierarchy section :
시간에 따라 변하지 않는 데이터
hierarchy와 skeleton의 initial pose에 대해 기술
2) Motion section:
시간에 따라 변하는 데이터
motion data를 포함한다.
(motion data는 motion capture data와 다름. motion capture data 중에서도 시간에 따라 변하는 부분만 의미하는듯)
- Text file format
→ 아스키라 사람도 눈으로 읽을 수 있다.
Hierarchy Section
- hierarchy 는 joint tree 의미
- 각 joint는 offset과 channel list를 가지고 있다.
ex) J_1의 경우
offset은: L1 (부모로부터 offset)
channel list: joint 1의 motion에 대한 transformation "types"의 sequence
(이건 모션 데이터에 관련된 부분인것같긴 하지만 타입 자체는 시간에 따라 변하지 않으니까 여기 기술하는듯)
<end site 쪽 코드로 다시보면...>
발끝같은 경우는 회전정보를 가지고 있으므로
offset 으로 위치만 기술한다.
Motion Section
- 각 줄이 한 frame의 Motion data
- line의 각 number는 single channel의 value임.
- rotation channel value의 단위는 degree임.
- HIERARCHY part를 보면 channel list에 "ZROATION XROATION YROTATION"
쓰여있는 경우 ZXY Euler angles를 의미한다.
보통 ZXY order를 많이 쓰긴 하는데 순서는 바뀔 수 있음. 명시된대로 쓰면 된다.
Quiz #3
→ 0 저거는 (0, 0, 0, 1).T 이정도로 표현하면 될듯
Uploaded by N2T