다음을 통해 공유


관성 역학

관성은 개체 이동에 애니메이션 효과를 주는 계산을 수행하고 Windows Touch를 통합하는 애플리케이션에서 일반적인 유용성을 지원하는 데 사용됩니다. 이 섹션에서는 관성에서 사용하도록 설정된 다음 기능을 보여 줍니다.

  • 관성 물리학에 대한 간략한 개요입니다.
  • 속도 및 감속 속성을 사용하여 개체 애니메이션을 부드럽게 합니다.
  • 변위 속성을 사용하여 개체 애니메이션을 부드럽게 합니다.
  • 탄력적 경계를 사용하여 화면 가장자리에서 튀기기.

관성 물리학 개요

관성 프로세서는 위치, 감속 값 및 초기 속도를 통합하는 간단한 물리학 모델을 사용합니다. 시간은 대체되는 개체의 현재 위치를 결정하기 위해 모델에 대한 동적 입력으로 사용됩니다. 다음 그래프와 수식은 개체 위치를 계산하는 데 사용되는 물리학 모델을 간략하게 설명합니다.

개체 위치를 계산하는 데 사용되는 그래프 및 수식을 보여 주는 그림

현재 위치(x)를 계산하는 데 사용되는 수식에서 초기 속도(v)는 경과 시간(t)을 곱하고 시간 제곱의 감속 계수(d)로 줄어듭니다. 이렇게 하면 부드러운 개체 감속이 발생합니다. 곡선의 초기(맨 왼쪽) 부분에 있는 이전 그림에서 개체는 현재 속도가 초기 속도이므로 빠르게 이동하고 있습니다. 곡선의 마지막 부분(오른쪽)에서 개체의 속도가 0이므로 개체가 완전히 중지되었습니다. x-velocity, y-velocity 및 회전 속도에 대한 개체 속도 계산은 모두 계산에 이 수식을 사용합니다.

관성 프로세서에 사용되는 모든 거리는 상대적입니다. 화면 좌표를 사용하려면 화면 좌표를 조작(또는 관성) 프로세서에 전달합니다. 절대 좌표를 사용하려면 해당 좌표를 사용 중인 프로세서에 전달합니다. 사용 중인 값에 관계없이 조작 프로세서는 시간 처리에 밀리초 클록 틱을 사용합니다. 이러한 값은 ProcessTime 메서드를 사용하거나 Process 호출을 통해 기본 타임스탬프를 사용하여 관성 프로세서에 직접 전달할 수 있습니다.

속도 및 감속 속성을 사용하는 부드러운 개체 애니메이션

관성 프로세서 인터페이스에서 속도 및 감속 값을 설정한 다음 Process를 호출하여 물리학 모델과 직접 상호 작용하여 부드러운 애니메이션을 사용하도록 설정할 수 있습니다. Process를 호출하면 개체 조작이 트리거되며, 이로 인해 UI 업데이트가 발생합니다. 관성 프로세서에 전달되는 개체 속도 값은 일반적으로 완료 시 조작 프로세서에서 가져옵니다. 감속 값은 개체에 애니메이션 효과를 적용할 기간과 계산에 사용하는 단위에 따라 달라집니다. 값이 종속적이기 때문에 때로는 매니플레이션 프로세서에서 입력 속도를 조정하고 감속에 임의의 값을 사용해야 합니다. 다음 값은 TOUCHINPUT 구조체의 x 및 y 속성에서 조작 프로세서로 센티미터 값을 전달하는 다양한 시나리오에서 일반적입니다.

시나리오 속성 설정 감속 값 일반적인 속도 입력 크기 조정 참고
Translation DesiredDeceleration 0.003f 없음 이 값을 사용하면 터치 입력을 사용할 때 더 긴 거리 애니메이션이 발생합니다.
Translation DesiredDeceleration 0.001f 터치 입력의 경우 1/20초 초기 속도, 마우스 입력의 경우 없음 이 값을 사용하면 일반적인 속도 입력이 약 1초 동안 애니메이션 효과를 줍니다.
Translation DesiredDeceleration 0.5f 없음 이 값을 사용하면 큰 Windows Touch 디스플레이에서 애니메이션을 자연스럽게 느낄 수 있습니다.
회전 DesiredAngularDeceleration 0.000015f 도로 변환된 라디안. 이 값을 사용하면 터치 입력을 사용할 때 회전 애니메이션이 길어집니다.
회전 DesiredAngularDeceleration 0.00001f 터치 입력의 경우 1/40번째 회전 델타, 마우스 입력의 경우 없음 이 값은 라디안 단위이므로 매우 작은 감속 및 속도 값을 사용해야 합니다.
회전 DesiredAngularDeceleration 0.000005f 없음 이 값은 대형 Windows Touch 디스플레이에서 자연스러운 느낌을 줍니다.

 

Desired Displacement 속성을 사용하여 부드러운 개체 애니메이션

경우에 따라 개체 변위를 위해 사용자의 입력을 사용하지 않으려는 경우에도 개체가 화면에서 원활하게 애니메이션 효과를 주려고 합니다. 이 경우 관성 프로세서의 변위 속성을 사용하여 프로세서가 화면을 통해 개체를 이동하기 위한 초기 속도를 계산하도록 할 수 있습니다.

탄력적 경계를 사용하여 개체 위치 제어

화면을 가로질러 이동하는 개체가 있으면 일반적으로 사용자의 관점에서 벗어나기 전에 중지해야 합니다. 관성 프로세서를 사용하면 경계 및 탄력적 여백 속성을 통해 이 기능을 사용할 수 있습니다. 다음 이미지는 일반적인 애플리케이션의 다양한 경계 및 여백 속성을 보여 줍니다.

경계 및 탄력적 여백 속성을 보여 주는 스크린샷

애플리케이션에 대한 왼쪽, 위쪽, 오른쪽 및 하한 경계 및 탄력적 여백을 설정하면 관성 프로세서가 경계 내에서 UI 요소 유지를 처리합니다. 개체가 탄력적 여백에 도달하면 경계에 도달할 때까지 속도가 느려집니다. 관성 동안 해당 여백을 다시 남기지 않지만 개체의 수직 관성 구성 요소가 0으로 감속될 때까지 계속 이동합니다. 그림에서 원은 왼쪽 탄력적 경계를 향해 변위됩니다. 단색 화살표는 조작 방향을 표시합니다. 단색 원은 개체의 초기 위치입니다. 단색 화살표는 원이 탄력적 여백에 닿기 전에 변경된 내용입니다. 파선 화살표는 관성 프로세서가 여백에 도달한 후 원을 조작하는 위치를 표시합니다. 파선 원은 개체가 중지되는 위치를 표시합니다.

참고

여백 속성을 설정하면 경계가 바깥쪽으로 이동합니다. 예를 들어 최상위 경계가 50으로 설정된 다음 상위 탄력적 여백을 10으로 설정하면 상위 경계가 효과적으로 40이 됩니다.

 

비관리 코드에서 관성 처리

관성

조작