Hand tracking frequency

I'm using the UnityEngine.XR.Bone.TryGetPosition(out Vector3) API in Unity's Update() method and noticed that the bone position values change approximately every 90ms. I was under the impression that the device could scan every 18ms (60fps). Am I using the wrong API, or are these the best results currently achievable?

Unity Editor version: 2022.3.13f1

ML2 OS version: Version 1.4.1
Build B3E.230928.10-R.098
Android API Level 29

MLSDK version: 1.12.1
Host OS: Windows

Hi @keeseok.jeong,

Welcome to the Magic Leap 2 Developer forums. We are so grateful to have you here engaging with us. I will reach out to our team regarding this issue and I will report back as soon as I learn more.



Would you mind sending a screenshot of the logs?

I used Unity's Debug.Log to print the position of the index finger bone in the Update() method while moving my hand. I added time info (Time.realtimeSinceStartup) too. thanks!

Did you set the PreRenderHandUpdate?

Hand Tracking Overview | MagicLeap Developer Documentation.


Depending on your applications requirement you may choose to update the hand KeyPoints less frequently. By default the KeyPoints data is updated twice. To turn this off set enable to false to potentially improve performance. This is not recommended if KeyPoints are visual in the app as it will significantly decrease the smoothness of visuals.

No, I didn't use PreRenderHandUpdate, so it should be the default setting in my project.