FOVE SUPPORT CENTER

Disable head tracking

Comments

5 comments

  • Official comment
    Avatar
    Jeff

    Hi Stephanie,

    It is possible, in fact it's common enough that we figured we should write a quick FAQ article detailing how to do this.

    https://support.getfove.com/hc/en-us/articles/900005717186

    Please let me know if anything there is unclear.

    Minor sidenote: FoveHMD.cpp is from our Unreal plugin, rather than our SDK, but it still exists.

    Comment actions Permalink
  • Avatar
    Stephanie Reeves

    Hi Jeff,

    This is AWESOME! Thanks so much for writing that FAQ -- so helpful!

    However, after implementing the Unity steps, we realized that although the image was successfully "frozen" in the FOVE, we no longer are able to obtain head tracking data (we have edited the GazeRecorder script to include GetHeadRotation() and appreciate this feature). So, is there a way to ONLY stop the HMD + Camera Pose synchronization while still obtaining head movement data? In essence, we don't want participants to move their head thereby changing what they're looking at, however, if they DO move their head slightly, we'd like to know about it. 

    Thanks again for all your help.

    Stephanie 

    0
    Comment actions Permalink
  • Avatar
    Pierre

    Hi Stephanie,

    Thank you for your good question. It is actually a use case we didn't think about.
    You should be able to get it working by making the following modifications in the GazeRecorder.cs files:

    1. Manually registering the Orientation and Position tracking capabilities in the `Start` function to be sure to enable the FOVE hardware and software functionalities.

    void Start ()
    {
        FoveManager.RegisterCapabilities(ClientCapabilities.OrientationTracking | ClientCapabilities.PositionTracking);
        ... 
    }

    2. Modify the `UpdateFoveInterfaceMatrices` function (as of the time of the writing) to use the HMD position and orientation instead of the camera's ones.

    var isStanding = fove.poseType == FoveInterface.PlayerPose.Standing;
    unityThreadData.HMDPosition = FoveManager.GetHmdPosition(isStanding);
    unityThreadData.HMDOrientation = FoveManager.GetHmdRotation();

    Hopefully this should solve your issue, if not, let me know.

    Good luck for the rest of the project.

     

    Pierre.

     

    0
    Comment actions Permalink
  • Avatar
    Stephanie Reeves

    Hi Pierre,

    Thank you for providing that information. I made the modifications, but unfortunately have an error: "error CS1061: 'GazeRecorder.UnityThreadData' does not contain a definition for 'HMDOrientation' and no accessible extension method 'HMDOrientation' accepting a first argument of type 'GazeRecorder.UnityThreadData' could be found (are you missing a using directive or an assembly reference?)" It seems that UnityThreadData does not contain the HMDOrientation or the HMDPosition commands. Please let me know if I need to add in anything else! 

    Thanks!

    0
    Comment actions Permalink
  • Avatar
    Pierre

    Hi Stephanie,

    You might be using an older version of the GazeRecorder.cs. Please use the latest version available from https://github.com/FoveHMD/UnityPlugin/blob/master/Assets/FoveUnityPlugin/Source/Behaviours/GazeRecorder.cs  if it works with your version of the plugin or adapt the code to the version of the script you are using. Just make sure that the data written to the csv file is coming from FoveManager.GetHmdPosition/Rotation rather than the camera position/rotation (which is no updated).

    Cheers.

    Pierre.

    0
    Comment actions Permalink

Please sign in to leave a comment.