Jump to content

Corvus

Employee
  • Posts

    305
  • Joined

  • Last visited

Everything posted by Corvus

  1. @JD Wilder Thanks for reporting this issue. It has been shared with the SDK engineers and they will try to get a bugfix in the next release or follow up here.
  2. @SinnStudio @Maze Theory @Survios Yes, there is now a CLI tool you can access via the dev console (Binary Build page). Here is the documentation: https://developer.viveport.com/documents/viveport-uploader-document.pdf
  3. @ShutterBox The Vive Trackers require base stations to function.
  4. @wdsfdghnghj Thanks for sharing, the team will review and follow up. Also, to send a DM you can click on the username and then the "message" button.
  5. @wdsfdghnghj Can you please post or send me a SteamVR report and the SRanipal log files?
  6. @Fangh There are discussions about supporting OpenXR via the Wave SDK but nothing to announce yet.
  7. @neomimiz No, access to the raw eye camera is not provided.
  8. https://www.vive.com/us/accessory/facial-tracker/ @AdamC @Sahar @ContactVIRT
  9. @eugie Debug.Log is a UnityEngine api and cannot be used in the callback. Note: Unity is not thread-safe and cannot call any UnityEngine api from within callback thread.
  10. @eugie You will likely need to use Unity to build a 360 video player and integrate the eye tracking SDK to access the data needed. There are guides/sample projects available to help you get started with a 360 video player with Unity.
  11. @mattia.barbieri91 Yes it is possible, please see the documentation for more information.
  12. Yes, that should work if you are using v1 data. If you are using v2 make sure to use 'SRanipal_Eye_v2'. // make sure the framework status is WORKING SRanipal_Eye_Framework.Status == SRanipal_Eye_Framework.FrameworkStatus.WORKING // pass the verbose data SRanipal_Eye.GetVerboseData(out verboseData); // v1 // SRanipal_Eye_v2.GetVerboseData(out verboseData); // v2 // read the necessary data pupilDiameterLeft = verboseData.left.pupil_diameter_mm; pupilDiameterRight = verboseData.right.pupil_diameter_mm;
  13. You need to update the eyeData with GetVerboseData(). Please check the sample code. Also can be helpful to check the framework status is working before updating the data. SRanipal_Eye.GetVerboseData(out verboseData);
  14. @egeelg There is a timestamp API in the eye tracking SDK. Developers can also use the Tobii XR SDK with the VIVE eye tracking SDK.
  15. @neomimiz Can you share the full code snippet? Is the demo application working properly for you?
  16. @apellisscot I don't think this is an issue with the system specs. Make sure you're running in Performance mode and all battery optimizations are off (and laptop plugged in). Maybe create a SteamVR system report and share that to be sure.
  17. @Federica Pupil position in sensor area is mostly used for calibration. It sounds like you are trying to measure gaze positions which can be done with gaze vectors.
  18. @apellisscot Demo attached (rename .zip). Eye Tracking 120hz Test.zip_
  19. @apellisscot Here are my specs and I'm getting 8/9ms updates (~120hz). DM me if you would like a build to test/verify with. Windows 10 Intel i7-9750H 16GB Ram RTX 2070 Max-Q Unity 2019.4.17f1 using UnityEngine; using ViveSR.anipal.Eye; using System.Runtime.InteropServices; using UnityEngine.UI; /// <summary> /// Example usage for eye tracking callback /// Note: Callback runs on a separate thread to report at ~120hz. /// Unity is not threadsafe and cannot call any UnityEngine api from within callback thread. /// </summary> public class test120hz : MonoBehaviour { private static EyeData eyeData = new EyeData(); private static bool eye_callback_registered = false; public Text uiText; private float updateSpeed = 0; private static float lastTime, currentTime; void Update() { if (SRanipal_Eye_Framework.Status != SRanipal_Eye_Framework.FrameworkStatus.WORKING) return; if (SRanipal_Eye_Framework.Instance.EnableEyeDataCallback == true && eye_callback_registered == false) { SRanipal_Eye.WrapperRegisterEyeDataCallback(Marshal.GetFunctionPointerForDelegate((SRanipal_Eye.CallbackBasic)EyeCallback)); eye_callback_registered = true; } else if (SRanipal_Eye_Framework.Instance.EnableEyeDataCallback == false && eye_callback_registered == true) { SRanipal_Eye.WrapperUnRegisterEyeDataCallback(Marshal.GetFunctionPointerForDelegate((SRanipal_Eye.CallbackBasic)EyeCallback)); eye_callback_registered = false; } updateSpeed = currentTime - lastTime; uiText.text = updateSpeed.ToString() + " ms"; } private void OnDisable() { Release(); } void OnApplicationQuit() { Release(); } /// <summary> /// Release callback thread when disabled or quit /// </summary> private static void Release() { if (eye_callback_registered == true) { SRanipal_Eye.WrapperUnRegisterEyeDataCallback(Marshal.GetFunctionPointerForDelegate((SRanipal_Eye.CallbackBasic)EyeCallback)); eye_callback_registered = false; } } /// <summary> /// Required class for IL2CPP scripting backend support /// </summary> internal class MonoPInvokeCallbackAttribute : System.Attribute { public MonoPInvokeCallbackAttribute() { } } /// <summary> /// Eye tracking data callback thread. /// Reports data at ~120hz /// MonoPInvokeCallback attribute required for IL2CPP scripting backend /// </summary> /// <param name="eye_data">Reference to latest eye_data</param> [MonoPInvokeCallback] private static void EyeCallback(ref EyeData eye_data) { eyeData = eye_data; // do stuff with eyeData... lastTime = currentTime; currentTime = eyeData.timestamp; } }
  20. @apellisscot I have gotten 120hz on similar specs but will try to verify/send a build for you to test. Also, can you share any info about your "EyeMeasureDataWriter"? If it's running on the Unity main thread it will be limited to the update loop hz.
  21. v2 added more face blend morphs (EyeExpression expression_data) but otherwise SHOULD be the same. There was a report recently of v2 eyedata timestamp reporting differently than v1 timestamp, if so that would be a bug and will try to get fixed in next release.
×
×
  • Create New...