1. History of Animation
- frame(sequence of image)의 연속
- 형태를 정의하는 것이 modeling이였다. animation은 시간에 따른 shape을 정의하는 것이다.
- 간단히 말하면 시간에 따라 frame을 모델링하는 것
- key frame을 사람이 그리면 컴퓨터로 interpolation을 수행하여 완성한다.
- 사진으로 만든 첫 film이다.
- 최초로 손으로 그린 단편 애니메이션이다.
- 배경의 움직임은 적기 때문에 한 배경에 인물이 그려진 투명한 종이를 바꿔가며 만들었다. (cell animation)
- 최초의 3d computer animation
2. The principles of animation
- 공이 바닥에 닿으면 찌그러지고 튀어오를때는 펴지고 하는 것을 표현한 방법이다.
- 캐릭터가 행동을 할때 그 행동의 힌트를 미리 주는 효과이다. (배트를 휘두르기 전에 뒤로 젖힘)
- 관찰자의 시선이 의도대로 사건이 일어나는 무대로 쏠리도록 하는 효과 (중앙이 밝음).
- straight ahead : 동작을 순서대로 그리는 방법
- pose to pose : 중요한 pose인 동작을 먼저 그리고(key frame) 연결 부분을 그림
- 캐릭터가 움직이면 코트는 자연스럽게 관성에 의해 뒤로 펼쳐지다 앞으로 쏠리는 것을 표현하는 방법
- 출발할때 천천히 시작하고 멈출때도 천천히 멈추는 것을 표현
- key frame 사이의 움직임이 직선으로 움직이는 것 보다 arc로 움직이는 것이 더 자연스럽다.
- 그냥 걷는게 아니라 secondary action으로 손으로 머리를 긁는 움직임을 통해 심경을 엿볼 수 있게 한다.
- 같은 거리를 이동하는데 frame을 많이 하면 느리게 움직이고 frame을 적게하면 많이 움직인다.
- 슬프고 우울하면 느린 타이밍 즐겁고 기쁘면 빠른 타이밍을 활용한다.
- 무겁고 가벼운 느낌도 줄 수 있다.
- 액선, 포즈, 표정을 사실적인 것보다 과장된 표현을 활용
- 2차원 그림이지만 volumn을 가정해서 그리는 것이다.
- 밋밋한 캐릭터보다 매력있는 캐릭터를 그려라
3. computer animation techniques
- 1. artist directed : 아티스트가 key frame을 그리고 interpolation으로 중간을 구현
- 2. data driven : 사람이 직점 움직여서 그 움직임을 mark함 (motion capture)
- 3. procedural : 물리 법칙에 의해 simulation이 가능한 움직임을 구현
4. Character animation
- scene graph/kinematic chain : 몸통, 팔다리, 머리 각각의 transformation을 정의해서 구현
- 이렇게 key frame을 정의하고 나면 interpolation을 사이를 채운다
5. skeletal animation
- transformation을 위한 계층적 뼈대 구조와 modeling을 위한 skin을 분리해서 제작하는 방법이다.
- 뼈들을 정의하고 뼈들을 joint로 연결하고 이런 joint 들의 움직일 수 있는 각도를 정의한다.
- 즉 먼저 뼈대를 정의하고 뼈 사이의 joint들을 찾고 그 joint의 움직이는 각도를 정의하고 계층 구조를 만든다. 그 위에 skin을 뼈의 지점들과 binding하여 완성한다. 이를 rigged character라고 한다.
6. Blend shape
- 뼈대 없이 직접 mash를 움직여서 구현하는 방법
7. Interpolating transformation : Rotation
- 각각의 key frame의 pose 사이사이를 interpolation으로 채운다.
- interpolation으로 사이를 채울때 rotation을 활용할 수 있다.
- x,y,z 축의 회전으로 물체의 회전을 나타내거나 축을 중심으로하는 회전을 나타낼 수 있다.
- gimbal lock (두 axes가 겹쳐져서 degree of freedom을 잃음) 문제가 있다.
- 동일한 rotation이 여러 다른 표현으로 가능하다는 문제도 있다.
- 때문에 unit quaternion을 사용한다. quaternion으로 임의의 축에대한 rotation을 나타낼 수 있다.
- q = cos + v sin : cos이 real number, sin이 imaginary number가 된다. v가 rotation axis이다.
- 결국 quaternion은 unit space 위의 한 점이라고 볼 수 있고 즉 interpolation은 그 unit space 위의 두 점사이에서 이루어지면 된다.
\- 이렇게하면 직선위에서 같은 시간에 같은 거리를 이동하기 때문에 시작과 끝부분은 느리고 중간이 빠른 일정하지 못한 속도로 interpolation이 수행된다.
- 따라서 구 위에서의 shortest path를 찾도록하여 구의 중심으로부터 일정한 각도로 interpolation이 수행된다.
- 이를 slerp라고 부른다.
- 만약에 위치를 interpolation한다고 하면 아래처럼 linear하게 수행할 수 있다.
- 좀 거칠게 interpolation이 될 수 있으니 높은 차수의 polynomial을 활용해서 spline curve로 fitting할 수 있다. 더 나은 연속성을 보장한다.
8. Interpolating transformation : Position
9. Forward Kinematics
- 각 부분들과 joint 등의 구조들이 다 정해졌을때 포즈를 계산하는 방법을 말한다.
- x,z 축에서 두 joint들과 그 각도, 길이가 주어졌을 때 p의 위치를 잡을 수 있다. (px, pz)
- bone의 hierarchy를 따라가면서 transformation을 적용하여 pose를 계산한다.
- 각 joint들의 angle을 받아서 최종 포즈를 나타낼 수 있다.
- 이렇게 bone의 움직임을 나타냈으나 결국 우리가 원하는건 skin의 움직임이다.
- bone의 움직임에 따라 skin의 vertex들이 따라서 움직여야 한다.
- skin의 각 vertex가 어느 bone에 따라서 움직이는지 정해주는 방법이다.
- skin이 어느 하나의 bone에게만 영향을 받는게 아니라 여러 bone에 의해 영향을 받을 수 있기 때문에 각 bone마다 가중치를 주는 방법이다.
- 위 예시 : wi,1는 팔 bone이 영향을 미치는 weight를 나타낸다 붉은 부분에 가장 큰 영향을 미친다.
- 아래 예시 : wi,2는 윗 팔 bone이 영향을 미치는 weight를 나타낸다.
- 이렇게 하면 중간부분은 두 bone의 영향을 받아서 더 자연스러운 구현이 가능해진다.
10. Rigging
- mesh의 크기에 따라 bone의 크기를 조절해주고 joint의 특성도 정의하고 skinning을 위해 skin의 bone에 대한 weight를 정의하는 것을 말한다.
11. Different ways to obtain joint angle
- 아티스트가 직접 joint를 정의할 수 있다.
- data driven : 사람이 직점 움직여서 그 움직임을 mark함 (motion capture)
- bone structure에 따라서 마커의 위치를 정하고 여러개의 카메라로 이를 촬용하여 마커의 위치를 잡는다. 이 마커의 위치들로 bone의 위치를 찾는다.
- 먼저 마커들을 구별하는 작업을 수행한다. 그 다음 calibration을 통해서 bone의 parameter를 계산한다.
- 많은 양의 motion을 사실적으로 생성 가능해진다.
- 후처리나 setup 시간이 많이든다.
- blend shape도 있다. key pose들을 직접 정의하고 interpolation으로 구현한다.
12. Inverse kinematics
- forward kinematics의 반대 동작이다.
- position(pose)이 정해졌을 때 parameter를 계산하는 것을 말한다.
- 예를들면 주먹의 점이 저 상대 얼굴 위치에 닿아야 한다! 면 그 동작을 위한 parameter를 계산하여 애니메이션을 구현할 수 있다. (게임 같은데서 종종 활용)
- 즉 p의 위치가 주어졌을 때 세타1,2를 구하는 것이다.
- 이게 어려운 이유는 같은 위치 p에 대해서 여러 동작이 가능하다는 점이다. (여러 solution 존재 가능)
- 복잡할수록 실제 값을 구하기 어려워지기 때문에 numerical한 접근을 해야할 수 있다.
- 혹은 불가능한 위치에 p가 존재해서 solution이 없을 수도 있다.
'ComputerScience > Computer Graphics' 카테고리의 다른 글
CG - 18. Halftoning, Dithering (0) | 2021.12.05 |
---|---|
CG - 17. Color (0) | 2021.12.04 |
CG - 16. Advanced Rendering : real-time rendering (0) | 2021.11.25 |
CG - 15. Advanced Rendering : Refectance (0) | 2021.11.24 |
CG - 14. Global illuminations(Ray Tracing) (0) | 2021.11.19 |