Using Animation Curves

The Property List

Animation Clip에서 어떠한 움직이는 속성도 Animation Curve를 가지게 됩니다. 그리고 그것은 Animation Clip이 그 속성을 통제한다는 것을 의미합니다. Animation View 의 속성 리스트에서 Animation Curves 들을 가진 속성들은 색깔있는 curve 지표들을 가지게 됩니다. curves를 애니메이션 속성에 어떻게 추가하는지에 대한 정보는 Using the Animation View를 참고 바랍니다.

Game Object 꽤 여러개의 구성요소들을 가질 수 있고 Animation View에 속성 리트스는 매우 길 수 있습니다. Animation Curves를 가진 속성들만을 보기 위해서는 그것의 상태를 Show: Animated로 세팅하기 위해서 Animation View에서 왼쪽 아래쪽에 있는 버튼을 클릭해 주시기 바랍니다.


속성 리스트로 부터 Animation Curves가 없는 모든 속성들을 숨기기 위해서는 왼쪽 아래쪽에 있는 토글 버튼을 Show: Animated로 세팅해 주시기 바랍니다.

Curves, Keys와 Keyframes의 이해

Animation Curve는 curve가 통과하는 컨트롤 포인트들인 다수의 keys를 가집니다. 이것들은 curve위에서 작은 다이아몬드 모양으로 Curve Editor에 표현되어 나타납니다. 한 개 또는 여러개의 보이는 curves이 한 개의 key를 가지는 프레임을 keyframe 이라고 합니다. 그 keyframeKeyframe Line에서 하얀색 다이아몬드들로 보여집니다.

한 개의 속성이 현재 미리보는 프레임에서 한 개의 key를 가진다면, 그 curve 지표는 한 개의 다이아몬드 모양을 가질 것입니다.


Rotation.y 속성은 현재 미리보는 프레임에서 한 개의 key를 가집니다. 그 Keyframe Line은 모든 보이는 curves를 위해서 그 keyframes을 표시합니다.

Keyframe Line은 보여지는 curves을 위한 keyframes만을 보여줍니다. 속성 리스트에서 한 개의 속성이 선택되면, 해당 속성은 보여지고 Keyframe Line은 보이지 않는 curves의 키들을 표시하지 않을 것입니다.


한 개의 속성이 선택될 때, 다른 속성들은 보이지 않게 되고 그들의 curves의 키들도 Keyframe Line에서 보이지 않습니다.

Adding 과 Moving Keyframes


Keyframe Line은 현재 보이는 curves의 keyframes을 보여줍니다. 사용자는 Keyframe Line을 더블클릭하거나 또는 Keyframe button을 사용해서 하나의 keyframe을 추가할 수 있습니다.

하나의 keyframeKeyframe button을 클릭하는 것에 의해 현재 미리보는 프레임에 추가될 수 있고 또는 keyframe이 있어야 하는 프레임에서 Keyframe Line을 더블클릭하는 것에 의해 어떠한 주어진 프레임에서나 추가될 수 있습니다. 이것은 모든 보이는 curves에 한 번에 한 개의 key를 추가할 것입니다. Keyframe Line을 오른쪽 클릭을 하고 그 메뉴에서 Add Keyframe을 선택하는 것을 통해서도 keyframe을 추가할 수 있습니다. 일단 위치가 정해지면 keyframes은 마우스를 통해서 드래그 되어질 수 있습니다. 다수의 keyframes을 한 번에 드래그 하는 것 또한 가능합니다. Keyframes은 그들을 선택하고 Delete를 누르거나 또는 그들위에서 오른쪽 클릭을 하고 그 메뉴에서 Delete Keyframe을 선택하는 것을 통해서 삭제될 수 있습니다.

Wrap Mode

Unity에서 Animation Clip은 예를 들어 Animation Clip가 루프를 돌도록 세팅할 수 있는 다양한 Wrap Modes를 가질 수 있습니다. 더 많은 것들을 알기 위해서는 Scripting Reference에 WrapMode를 참고하십시요. Animation Clip의 Wrap Mode는 오른쪽 아래 선택 박스에 있는 Animation View에서 세팅될 수 있습니다. Curve View는 그 Animation Clip의 시간 범위 밖에 하얀색 라인들로 그 선택된 Wrap Mode를 미리 보여줄 것입니다


Animation ClipWrap Mode를 세팅하는 것은 Curve View에서 해당 Wrap Mode를 미리 보여줄 것입니다

지원되는 움직이는 속성들

Animation ViewGame Object의 위치, 회전 및 스케일보다 훨씬 더 많이 움직이기 위해서 사용될 수 있습니다. 어떠한 ComponentMaterial 심지어 사용자 본인의 스크립트 구성요소들의 public 변수들의 속성들이 움직일 수 있습니다. 복잡한 시각 효과와 동작들과 함께 애니메이션을 만드는 것은 관련된 속성들을 위해 Animation Curves를 추가하는 것의 유일한 문제입니다

다음의 속성 타입들은 애니메이션 시스템에서 지원됩니다:

  • Float
  • Color
  • Vector2
  • Vector3
  • Vector4
  • Quaternion

Arrays는 지원되지 않으며 위에 나열된 것 이외에 structs와 objects도 지원되지 않습니다.

스크립트 구성요소에서 Booleans은 애니메이션 시스템에서 지원되지 않으나 특정 built-in 구성요소에서는 지원됩니다. 그러한 booleans를 위해서, 다른 모든 값들은 True를 의미하는 반면 0False를 의미합니다

Animation View가 이용될 수 있는 많은 것들의 몇 가지 예가 나타나 있습니다:

  • 깜빡거리거나 또는 진동하도록 하기 위해서 색상강도를 animate합니다.
  • 소리의 사이즈를 최소로 유지하면서 부는 바람, 돌아가는 엔진 그리고 흐르는 물에 생기를 넣기 위해 루프를 도는 Audio Source의 PitchVolume을 animate 합니다.
  • 움직이는 벨트나 트랙, 흘러가는 물 또는 특별한 효과를 만들어내기 위해 MaterialTexture Offset을 animate합니다.
  • 화려한 불꽃놀이나 분수쇼를 만들어 내기 위해서 다수의 Ellipsoid Particle EmittersEmit state와 Velocities를 animate 합니다.
  • 사용자 자신의 스크립트의 구성요소를 시간에 따라 다르게 동작하게 만들기 위해서 그것의 변수들(variables)을 animate합니다.

When using Animation Curves to control game logic, please be aware of the way animations are played back and sampled in Unity.

게임 로직을 통제하기 위해서 Animation Curves를 사용할 때, Unity에서 애니메이션이 played back and sampled되는 방법을 유의하기 바랍니다

회전 보간(Interpolation) 타입

Unity에서 회전은 내부적으로 Quaternions로 표현됩니다. Quaternions은 그것들이 무엇을 하는지 정확히 알고 있는 사람에 의한 것을 제외하고 일반적으로 수동으로 수정되면 않되는 .x, .y, .z.w의 값들로 구성됩니다. 대신, 회전은 일반적으로 그것들 세 개 .x, .y.z의 축들 주위에 회전을 나타내는 그들의 값들을 가지고 있는 Euler Angles를 사용해서 수정됩니다

두 회전 사이를 보간(interpolating)할 때, 그 보간은 Quaternion 값이나 또는 Euler Angles 값들의 위에서 행해집니다. Animation View는 사용자가 Transform 회전을 animate할 때 어떠한 보간의 형태를 사용할 지를 정할 수 있게 합니다. 그러나 회전은 항상 어떠한 보간 형태를 사용되던지 Euler Angles 값들의 형태로 보여집니다.


Transform 회전은 Euler Angles 보간(interpolation) 또는 Quaternion 보간을 사용할 수 있습니다.

Quaternion Interpolation

Quaternion 보간은 항상 두 개의 회전 사이에서 가장 짧은 경로를 따라서 훌륭한 보간을 생성합니다. 이것은 Glimbal Lock과 같은 회전 보간 아티팩트를 피합니다. 그러나 Quaternion 보간은 180도보다 더 큰 회전을 나타낼 수 없습니다. 왜냐하면 다른 방향으로 돌아가는 것이 더 짧은 길이기 때문입니다. 만약 사용자가Quaternion 보간을 사용하고 두 개의 키가 180보다 더 멀리 떨어져 있다면 그 curve는 그 실제 회전이 부드럽게 연결되어 있음에도 불구하고 끊어져 보일 것입니다. 그것은 더 짧기 때문에 단순히 다른 방향으로 돌아갑니다. 180도보다 더 큰 회전이 바래지면 추가적인 키들이 사이에 존재해야만 합니다. Quaternion 보간을 사용할 때 하나의 curve의 키들이나 또는 탄젠트들을 바꾸는 것은 그 다른 두 개의 curves의 모양을 바꿀지도 모릅니다. Quaternion 보간을 사용할 때 특정 시간에 세 개의 curves중에 하나를 위한 키를 생성하는 것이 그 당시에 다른 두 개의 curves을 위한 키 또한 생성하기 위해 항상 연결되어 있습니다.


Quaternion 보간을 사용할 때 두 개의 키를 270도 이상 떨어져 위치해 놓는 것은 오직 90도만 떨어져 있는 다른 방향으로 가기 위한 보간 값을 야기할 것입니다.

Euler Angles Interpolation

Euler Angles 보간은 대부분의 사람들이 함께 작업하기 익숙한 것입니다. Euler Angles은 임의의 커다란 회전을 나타낼 수 있고 .x, .y, 와 .z curves는 서로가 독립적입니다. Euler Angles 보간은 다수의 축 주위를 회전할 때 Glimbal Lock같은 아티팩트에 영향을 받을 수 있으나 한 번에 하나의 축 주변에 간단한 회전을 위해 작동하기 위해서는 사용하기 용이합니다. Euler Angles 보간이 사용될 때 Unity는 내부적으로 사용된Quaternion 표현으로 그 curves를 내부적으로 변형합니다. 이것은 외부의 프로그램으로부터 Unity로 애니메이션을 불러올 때 일어나는 것과 유사합니다. 이런 curve를 변형하는 것은 그 프로세스에 부가적인 키를 추가할지도 모르고 Constant 탄젠트 타입 해당 탄젠트들은 하위 프레임 레벨에서 완벽하게 정확하지 않을 수도 있습니다

역링크