입력 애니메이션 파일 형식 - MRTK2
전체 구조체
입력 애니메이션 이진 파일은 64비트 정수 매직 넘버로 시작합니다. 이 숫자의 값은 16진수 표기법이며 0x6a8faf6e0f9e42c6
유효한 입력 애니메이션 파일을 식별하는 데 사용할 수 있습니다.
다음 8바이트는 파일의 주 버전 및 부 버전 번호를 선언하는 두 개의 Int32 값입니다.
나머지 파일은 애니메이션 데이터에 의해 수행되며 버전 번호 간에 변경 될 수 있습니다.
섹션 | 형식 |
---|---|
매직 넘버 | Int64 |
주 버전 번호 | Int32 |
부 버전 번호 | Int32 |
애니메이션 데이터 | 버전 섹션 참조 |
버전 1.1
입력 애니메이션 데이터는 애니메이션에 카메라, 손 및 시선 응시 데이터가 포함되는지 여부를 나타내는 세 개의 부울 값과 애니메이션 곡선 시퀀스로 구성됩니다. 존재하는 곡선은 이러한 부울의 값에 따라 달라집니다. 각 곡선에는 서로 다른 수의 키 프레임이 있을 수 있습니다.
섹션 | 형식 | 참고 |
---|---|---|
카메라 포즈가 있습니다. | 부울 | |
손 데이터 사용 | 부울 | |
시선 응시 | 부울 | |
카메라 | 포즈 곡선 | 카메라 포즈가 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
입력 애니메이션 데이터는 애니메이션 곡선 시퀀스로 구성됩니다. 애니메이션 곡선의 수와 의미는 고정되어 있지만 각 곡선에는 서로 다른 수의 키 프레임이 있을 수 있습니다.
섹션 | 형식 |
---|---|
카메라 | 포즈 곡선 |
왼쪽에서 손 추적 | 부울 곡선 |
오른쪽에서 손 추적 | 부울 곡선 |
왼쪽 손가락 모으기 | 부울 곡선 |
오른쪽 손 꼬집기 | 부울 곡선 |
왼쪽 손 관절 | 조인트 포즈 곡선 |
오른쪽 손 관절 | 조인트 포즈 곡선 |
조인트 포즈 곡선
각 손에 대해 조인트 애니메이션 곡선 시퀀스가 저장됩니다. 조인트 수가 고정되고 각 조인트마다 포즈 곡선 집합이 저장됩니다.
섹션 | 형식 |
---|---|
없음 | 포즈 곡선 |
손목 | 포즈 곡선 |
Palm | 포즈 곡선 |
ThumbMetacarpalJoint | 포즈 곡선 |
ThumbProximalJoint | 포즈 곡선 |
ThumbDistalJoint | 포즈 곡선 |
ThumbTip | 포즈 곡선 |
IndexMetacarpal | 포즈 곡선 |
IndexKnuckle | 포즈 곡선 |
IndexMiddleJoint | 포즈 곡선 |
IndexDistalJoint | 포즈 곡선 |
IndexTip | 포즈 곡선 |
MiddleMetacarpal | 포즈 곡선 |
MiddleKnuckle | 포즈 곡선 |
MiddleMiddleJoint | 포즈 곡선 |
MiddleDistalJoint | 포즈 곡선 |
미들 팁 | 포즈 곡선 |
RingMetacarpal | 포즈 곡선 |
RingKnuckle | 포즈 곡선 |
RingMiddleJoint | 포즈 곡선 |
RingDistalJoint | 포즈 곡선 |
링 설명 | 포즈 곡선 |
PinkyMetacarpal | 포즈 곡선 |
PinkyKnuckle | 포즈 곡선 |
PinkyMiddleJoint | 포즈 곡선 |
PinkyDistalJoint | 포즈 곡선 |
PinkyTip | 포즈 곡선 |
포즈 곡선
포즈 곡선은 위치 벡터의 애니메이션 곡선 3개와 회전 쿼터니언의 애니메이션 곡선 4개 시퀀스입니다.
섹션 | 형식 |
---|---|
위치 X | 부동 곡선 |
위치 Y | 부동 곡선 |
Z 위치 | 부동 곡선 |
회전 X | 부동 곡선 |
회전 Y | 부동 곡선 |
회전 Z | 부동 곡선 |
회전 W | 부동 곡선 |
광선 곡선
광선 곡선은 원점 벡터의 애니메이션 곡선 3개와 방향 벡터의 애니메이션 곡선 3개 시퀀스입니다.
섹션 | 형식 |
---|---|
원본 X | 부동 곡선 |
원본 Y | 부동 곡선 |
원본 Z | 부동 곡선 |
방향 X | 부동 곡선 |
방향 Y | 부동 곡선 |
방향 Z | 부동 곡선 |
부동 곡선
부동 소수점 곡선은 다양한 수의 키프레임이 있는 완전 본격적인 베지어 곡선입니다. 각 키 프레임은 시간 및 곡선 값뿐만 아니라 각 키 프레임의 왼쪽과 오른쪽에 탄젠트 및 가중치를 저장합니다.
섹션 | 형식 |
---|---|
사전 래핑 모드 | Int32, 래핑 모드 |
래핑 후 모드 | Int32, 래핑 모드 |
키 프레임 수 | Int32 |
키 프레임 | Float 키프레임 |
Float 키프레임
float 키프레임은 기본 시간 및 값과 함께 탄젠트 및 가중치 값을 저장합니다.
섹션 | 형식 |
---|---|
Time | Float32 |
값 | Float32 |
InTangent | Float32 |
OutTangent | Float32 |
InWeight | Float32 |
OutWeight | Float32 |
WeightedMode | Int32, 가중 모드 |
부울 곡선
부울 곡선은 온/오프 값의 간단한 시퀀스입니다. 모든 키프레임에서 곡선의 값은 즉시 대칭 이동됩니다.
섹션 | 형식 |
---|---|
사전 래핑 모드 | Int32, 래핑 모드 |
래핑 후 모드 | Int32, 래핑 모드 |
키 프레임 수 | Int32 |
키 프레임 | 부울 키프레임 |
부울 키프레임
부울 키프레임은 시간과 값만 저장합니다.
섹션 | 형식 |
---|---|
Time | Float32 |
값 | Float32 |
래핑 모드
Pre-and Post-Wrap 모드의 의미 체계는 Unity WrapMode 정의를 따릅니다. 다음 비트의 조합입니다.
값 | 의미 |
---|---|
0 | 기본값: 더 높게 설정된 기본 반복 모드를 읽습니다. |
1 | 한 번: 시간이 애니메이션 클립의 끝에 도달하면 클립 재생이 자동으로 중지되고 시간이 클립의 시작 부분으로 다시 설정됩니다. |
2 | 루프: 시간이 애니메이션 클립의 끝에 도달하면 시간이 시작 부분에서 계속됩니다. |
4 | PingPong: 시간이 애니메이션 클립의 끝에 도달하면 시간은 시작과 끝 사이에 탁구를 다시 탁구합니다. |
8 | ClampForever: 애니메이션을 재생합니다. 끝에 도달하면 마지막 프레임을 계속 재생하고 재생을 멈추지 않습니다. |
가중 모드
가중 모드의 의미 체계는 Unity WeightedMode 정의를 따릅니다.
값 | 의미 |
---|---|
0 | 없음: 곡선 세그먼트를 계산할 때 inWeight 또는 outWeight을 모두 제외합니다. |
1 | In: 이전 곡선 세그먼트를 계산할 때 inWeight를 포함합니다. |
2 | Out: 다음 곡선 세그먼트를 계산할 때 outWeight을 포함합니다. |
3 | 둘 다: 곡선 세그먼트를 계산할 때 inWeight 및 outWeight을 포함합니다. |