Skip to content
This repository has been archived by the owner on Aug 27, 2021. It is now read-only.

Commit

Permalink
Fixed issue with baking new animations that were captured in ARKit 2.0
Browse files Browse the repository at this point in the history
needed to set the correct frame time offset in settings.
if you need to fix a recording that is ARKit 2.0 use a text editor to change the "m_FrameTimeOffset" value to "269" in the "m_PlaybackBuffers" for your clip.
  • Loading branch information
jonathan-unity committed Dec 28, 2018
1 parent 8511461 commit e0c6ab6
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 13 deletions.
24 changes: 14 additions & 10 deletions Remote/Scripts/PlaybackBuffer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,52 +23,52 @@ public class PlaybackBuffer : IStreamSettings
[SerializeField]
[HideInInspector]
[Tooltip("Error check byte value.")]
byte m_ErrorCheck = 42;
byte m_ErrorCheck;

[SerializeField]
[HideInInspector]
[Tooltip("Number of blend shapes in the stream.")]
int m_BlendShapeCount = 51;
int m_BlendShapeCount;

[SerializeField]
[HideInInspector]
[Tooltip("Size of blend shapes in the byte array.")]
int m_BlendShapeSize = 51 * sizeof(float);
int m_BlendShapeSize;

[SerializeField]
[HideInInspector]
[Tooltip("Size of frame number value in byte array.")]
int m_FrameNumberSize = sizeof(int);
int m_FrameNumberSize;

[SerializeField]
[HideInInspector]
[Tooltip("Size of frame time value in byte array.")]
int m_FrameTimeSize = sizeof(float);
int m_FrameTimeSize;

[SerializeField]
[HideInInspector]
[Tooltip("Location of head pose in byte array.")]
int m_HeadPoseOffset = 205;
int m_HeadPoseOffset;

[SerializeField]
[HideInInspector]
[Tooltip("Location of camera pose in byte array.")]
int m_CameraPoseOffset = 233;
int m_CameraPoseOffset;

[SerializeField]
[HideInInspector]
[Tooltip("Location of frame number value in byte array.")]
int m_FrameNumberOffset = 261;
int m_FrameNumberOffset;

[SerializeField]
[HideInInspector]
[Tooltip("Location of frame time value in byte array.")]
int m_FrameTimeOffset = 265;
int m_FrameTimeOffset;

[SerializeField]
[HideInInspector]
[Tooltip("Total size of buffer of byte array for single same of data.")]
int m_BufferSize = 270;
int m_BufferSize;

[SerializeField]
[Tooltip("String names of the blend shapes in the stream with their index in the array being their relative location.")]
Expand Down Expand Up @@ -125,6 +125,10 @@ public PlaybackBuffer(IStreamSettings streamSettings)
m_HeadPoseOffset = streamSettings.HeadPoseOffset;
m_CameraPoseOffset = streamSettings.CameraPoseOffset;
m_FrameNumberOffset = streamSettings.FrameNumberOffset;
m_FrameTimeOffset = streamSettings.FrameTimeOffset;

m_FrameNumberSize = streamSettings.FrameNumberSize;
m_FrameTimeSize = streamSettings.FrameTimeSize;

m_Locations = streamSettings.locations;
m_Mappings = streamSettings.mappings;
Expand Down
7 changes: 4 additions & 3 deletions Remote/Scripts/StreamReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,12 @@ public void UpdateStreamData(byte[] buffer, int offset = 0)
Buffer.BlockCopy(buffer, offset + 1, blendShapesBuffer, 0, settings.BlendShapeSize);
m_FaceActive = buffer[offset + settings.bufferSize - 1] == 1;

Buffer.BlockCopy(buffer, settings.FrameNumberOffset, m_FrameNumArray, 0, settings.FrameNumberSize);
Buffer.BlockCopy(buffer, settings.FrameTimeOffset, m_FrameTimeArray, 0, settings.FrameTimeSize);

if (m_VerboseLogging)
{
Buffer.BlockCopy(buffer, offset + settings.FrameNumberOffset, m_FrameNumArray, 0, settings.FrameNumberSize);
Buffer.BlockCopy(buffer, offset + settings.FrameTimeOffset, m_FrameTimeArray, 0, settings.FrameTimeSize);
Debug.Log(string.Format("{0} : {1}", m_FrameNumArray[0], m_FrameTimeArray[0]));
}

if (m_FaceActive)
{
Expand Down
9 changes: 9 additions & 0 deletions Remote/Scripts/StreamSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,15 @@ public class StreamSettings : ScriptableObject, IStreamSettings
// 261-264 - Frame Number
// 265-268 - Frame Time
// 269 - Active state

// ARKit 2.0 buffer layout
// 0 - Error check
// 1-208 - Blend Shapes
// 209-236 - Head Pose
// 237-264 - Camera Pose
// 265-268 - Frame Number
// 269-273 - Frame Time
// 274 - Active state
public int bufferSize { get { return m_BufferSize; } }

public Mapping[] mappings { get { return m_Mappings; }}
Expand Down

0 comments on commit e0c6ab6

Please sign in to comment.