입력 애니메이션 파일 형식 - MRTK2

전체 구조

입력 애니메이션 이진 파일은 64비트 정수 매직 넘버로 시작합니다. 이 숫자의 값은 16진수 표기법이며 0x6a8faf6e0f9e42c6 유효한 입력 애니메이션 파일을 식별하는 데 사용할 수 있습니다.

다음 8바이트는 파일의 주 버전 및 부 버전 번호를 선언하는 두 개의 Int32 값입니다.

나머지 파일은 애니메이션 데이터에 의해 채택되며 버전 번호 간에 변경 될 수 있습니다.

섹션 Type
매직 넘버 Int64
주 버전 번호 Int32
부 버전 번호 Int32
애니메이션 데이터 버전 섹션 참조

버전 1.1

입력 애니메이션 데이터는 애니메이션에 카메라, 손 및 시선 응시 데이터가 포함되는지 여부를 나타내는 세 개의 부울 값과 애니메이션 곡선 시퀀스로 구성됩니다. 표시되는 곡선은 이러한 부울의 값에 따라 달라집니다. 각 곡선에는 서로 다른 수의 키 프레임이 있을 수 있습니다.

섹션 Type 메모
카메라 포즈가 있습니다. 부울
손 데이터 사용 부울
시선 응시 부울
카메라 포즈 곡선 카메라 포즈가 true인 경우에만
왼쪽에서 손 추적 부울 곡선 Has Hand Data가 true인 경우에만
오른쪽에서 손 추적 부울 곡선 Has Hand Data가 true인 경우에만
왼쪽을 손가락으로 꼬집는 손 부울 곡선 Has Hand Data가 true인 경우에만
오른쪽 손 꼬집기 부울 곡선 Has Hand Data가 true인 경우에만
왼쪽 손 관절 조인트 포즈 곡선 Has Hand Data가 true인 경우에만
오른쪽 손 관절 조인트 포즈 곡선 Has Hand Data가 true인 경우에만
시선 응시 광선 곡선] 시선 응시가 true인 경우에만

버전 1.0

입력 애니메이션 데이터는 애니메이션 곡선 시퀀스로 구성됩니다. 애니메이션 곡선의 수와 의미는 고정되어 있지만 각 곡선에는 서로 다른 수의 키 프레임이 있을 수 있습니다.

섹션 Type
카메라 포즈 곡선
왼쪽에서 손 추적 부울 곡선
오른쪽에서 손 추적 부울 곡선
왼쪽을 손가락으로 꼬집는 손 부울 곡선
오른쪽 손 꼬집기 부울 곡선
왼쪽 손 관절 조인트 포즈 곡선
오른쪽 손 관절 조인트 포즈 곡선

조인트 포즈 곡선

각 손에 대해 조인트 애니메이션 곡선의 시퀀스가 저장됩니다. 조인트 수가 고정되고 각 조인트마다 포즈 곡선 집합이 저장됩니다.

섹션 Type
없음 포즈 곡선
손목 포즈 곡선
Palm 포즈 곡선
ThumbMetacarpalJoint 포즈 곡선
ThumbProximalJoint 포즈 곡선
ThumbDistalJoint 포즈 곡선
ThumbTip 포즈 곡선
IndexMetacarpal 포즈 곡선
IndexKnuckle 포즈 곡선
IndexMiddleJoint 포즈 곡선
IndexDistalJoint 포즈 곡선
IndexTip 포즈 곡선
MiddleMetacarpal 포즈 곡선
MiddleKnuckle 포즈 곡선
MiddleMiddleJoint 포즈 곡선
MiddleDistalJoint 포즈 곡선
중간 설명 포즈 곡선
RingMetacarpal 포즈 곡선
RingKnuckle 포즈 곡선
RingMiddleJoint 포즈 곡선
RingDistalJoint 포즈 곡선
RingTip 포즈 곡선
PinkyMetacarpal 포즈 곡선
PinkyKnuckle 포즈 곡선
PinkyMiddleJoint 포즈 곡선
PinkyDistalJoint 포즈 곡선
PinkyTip 포즈 곡선

포즈 곡선

포즈 곡선은 위치 벡터의 애니메이션 곡선 3개와 회전 쿼터니언의 애니메이션 곡선 4개 순으로 구성된 시퀀스입니다.

섹션 Type
위치 X 부동 곡선
위치 Y 부동 곡선
위치 Z 부동 곡선
회전 X 부동 곡선
회전 Y 부동 곡선
회전 Z 부동 곡선
회전 W 부동 곡선

광선 곡선

광선 곡선은 원점 벡터의 애니메이션 곡선 3개와 방향 벡터의 애니메이션 곡선 3개 순으로 구성된 시퀀스입니다.

섹션 Type
Origin X 부동 곡선
원본 Y 부동 곡선
원본 Z 부동 곡선
방향 X 부동 곡선
방향 Y 부동 곡선
방향 Z 부동 곡선

Float 곡선

부동 소수점 곡선은 다양한 수의 키프레임이 있는 완전히 본격적인 베지어 곡선입니다. 각 키 프레임은 시간 및 곡선 값뿐만 아니라 각 키 프레임의 왼쪽과 오른쪽에 탄젠트 및 가중치를 저장합니다.

섹션 Type
사전 래핑 모드 Int32, 래핑 모드
래핑 후 모드 Int32, 래핑 모드
키 프레임 수 Int32
키 프레임 Float 키 프레임

Float 키 프레임

부동 소수점 키 프레임은 기본 시간 및 값과 함께 탄젠트 및 가중치 값을 저장합니다.

섹션 Type
Time Float32
Float32
InTangent Float32
OutTangent Float32
InWeight Float32
OutWeight Float32
WeightedMode Int32, 가중 모드

부울 곡선

부울 곡선은 온/오프 값의 간단한 시퀀스입니다. 모든 키 프레임에서 곡선의 값은 즉시 대칭 이동됩니다.

섹션 Type
사전 래핑 모드 Int32, 래핑 모드
래핑 후 모드 Int32, 래핑 모드
키 프레임 수 Int32
키 프레임 부울 키 프레임

부울 키 프레임

부울 키 프레임은 시간과 값만 저장합니다.

섹션 Type
Time Float32
Float32

래핑 모드

사전 및 사후 래핑 모드의 의미 체계는 Unity WrapMode 정의를 따릅니다. 다음 비트의 조합입니다.

의미
0 기본값: 기본 반복 모드 설정을 더 높게 읽습니다.
1 한 번: 시간이 애니메이션 클립의 끝에 도달하면 클립 재생이 자동으로 중지되고 시간이 클립의 시작 부분으로 다시 설정됩니다.
2 Loop: 시간이 애니메이션 클립의 끝에 도달하면 시간이 시작 부분에서 계속됩니다.
4 PingPong: 시간이 애니메이션 클립의 끝에 도달하면 시간은 시작과 끝 사이에 탁구를 다시 탁구합니다.
8 ClampForever: 애니메이션을 재생합니다. 끝에 도달하면 마지막 프레임을 계속 재생하고 재생을 멈추지 않습니다.

가중 모드

가중 모드의 의미 체계는 Unity WeightedMode 정의를 따릅니다.

의미
0 없음: 곡선 세그먼트를 계산할 때 inWeight 또는 outWeight을 모두 제외합니다.
1 In: 이전 곡선 세그먼트를 계산할 때 inWeight를 포함합니다.
2 Out: 다음 곡선 세그먼트를 계산할 때 outWeight을 포함합니다.
3 둘 다: 곡선 세그먼트를 계산할 때 inWeight 및 outWeight을 포함합니다.