ArticulatedHandPose.cs is expects the hand poses to be stored in "Assets/MixedRealityToolkit.Services/InputSimulation/ArticulatedHandPoses/"
That said, I stored the MRTK in a sub folder so as to not clutter my project with all the MRTK folders at the root. Because of this, the articulated hands fail to load.
Moreover, private static ArticulatedHandPose LoadGesturePose(GestureId gesture, string filePath) does not consider the possibility that the file might not exist, and so an error is thrown while that could be avoided by checking if the file it's trying to open exists in the specified path.
Articulated hand poses should not have a hardcoded path to loading the json with the hand data.
Rather, StreamingAssets should be used, as it allows you to specify a path relative to the it, without preloading anything into memory. StreamingAssets can be arbitrarily nested in hierarchies, and you can have more than one such folder. It is the preferred method for dynamically loading in non-unity assets at runtime.
Here is the documentation on streaming assets
https://docs.unity3d.com/Manual/StreamingAssets.html
We should fix this soon, because we know that lots of customers import MRTK into the non-root folder
When consuming the NuGetized version of MRTK I'm seeing this same issue. It looks like it stems from this line in ArticulatedHandPose.cs.
Most helpful comment
We should fix this soon, because we know that lots of customers import MRTK into the non-root folder