πŸ₯½ core-xr


Month (messages)

user-185d95 03 April, 2025, 11:23:36

sure! please use the link: https://drive.google.com/file/d/1QOew6OSJT9ox15CMA_sFOrFe22yV_TNG/view?usp=sharing many thanks!

user-d407c1 07 April, 2025, 08:44:10

Hi @user-185d95 πŸ‘‹ ! I had a look at your recording, and I believe that the issue may not stem from the fixation detector itself, but rather with the underlying pupil detection data.

HMD Eyes library in Pupil Capture includes an additional gaze pipeline that uses the pye3d model-based approach. This pipeline outputs gaze data translated into VR coordinates rather than the scene camera but relies on the 3D detector and proper pupil detection confidence.

In your recording, there are several moments where the 3D pupil detection either fails or jumps (see screenshots). These detection issues introduce noise and jitter into the gaze signal, which in turn impacts the quality of the derived fixations.

When using HMD Eyes (Core Add-ons for VR), the camera placement most of the times can't be optimized for data capture, so it's important to fine-tune the detection settings. Here are few things you can try:

  • Ask the subject to roll their eyes in all directions and freeze the model once tracking looks stable, this should prevent some jumps.
  • In the pupil detection settings (eye window), set the min/max pupil size to reflect the small pupils you're seeing, otherwise it would fail when pupil occupies less pixels than the minimum set-up.
  • Switch the capture mode to ROI (Region of Interest), and define a small region where the pupil is expected.
  • Adjust the pupil intensity parameters

These adjustments should reduce noise in the pupil signal, which will improve gaze accuracy during calibrationβ€”and ultimately result in more reliable fixations.

Chat image Chat image

user-c39646 07 April, 2025, 09:50:16

i activated the world camera even if it is not ideal but i wanted to see how it looked like>. why it stays on the screen? hoz=w it is supposed to end the calibraion?

Chat image

user-d407c1 07 April, 2025, 09:54:17

Even if you do enable it in the software, the VR-Addons do not have a scene camera. By enabling and selecting an eye camera you might end up with issues like that one.

user-c39646 07 April, 2025, 09:51:53

the reason why i donot want the world camera is because it keeps disconnecting and reconnecting, i think there is an inerference with the other two camera

Chat image

user-d407c1 07 April, 2025, 09:52:58

@user-c39646! Moving it here, since you are having a Core VR-Addon rather than a normal Pupil Core. These Add-ons do not have scene camera, but rather use the virtual camera.

It sounds to me like you're diving straight into advanced use cases (programmatically running things) β€” which is exciting! But if you're planning to use it in an XR context (e.g. with Unity), I’d strongly recommend starting with the basics first.

Check out the HMD Eyes documentation to get familiar with how to connect and use it in this specific setup.

Calibration works a bit differently in this context, and you’ll find that there are already Unity examples available that do exactly what you're aiming for (starting the calibration in VR). Starting there will save you time and help avoid a lot of confusion down the line.

user-c39646 07 April, 2025, 09:57:32

ok but i do not want to use Unity, can't i use simply python?

user-c39646 07 April, 2025, 09:58:17

so i do not understand sorry. i am obliged to use the world headset camera to do calibration?

user-d407c1 07 April, 2025, 10:11:26

So if I understand correctly, you're using a VR Add-on but prefer not to use Unity β€” is that right?

While this is possible, it is more involved and does come with far more complexity.

Calibration in Pupil Capture involves identifying calibration targets and correlating their positions with the pupil's position. Typically, this is done in the scene camera coordinates, which is why the standard Pupil Core setup requires a scene camera.

However, the VR Add-ons don’t include a scene camera. Instead, they rely on a special calibration routine that uses target positions VR coordinate space. Our Unity library handles the presentation of these stimuli and forwards their position to Unity for you.

If you want to skip Unity, you'll need to build a custom calibration method that replicates this process β€” essentially handling target presentation and coordinate mapping on your own.

and why it had these connecting reconnecting problems?

You are having this issue because you enabled "Scene/World camera" in the settings and selected one of the eye cameras. Now both the scene camera window and the eye camera are trying to access the streams at the same time. Simply disable the world camera.

user-c39646 07 April, 2025, 09:58:39

and why it had these connecting reconnecting problems?

user-c39646 07 April, 2025, 09:58:56

how can i stop it?

user-c39646 07 April, 2025, 10:17:18

ok thank you> i have two more questions

user-d407c1 07 April, 2025, 10:31:45

Sure, you should be able to select Activate camera,, but if not, could you click on the Gear icon (General Settings) and "Restart with defaults"?

For pupil size alone, you do not need to calibrate.

user-c39646 07 April, 2025, 10:21:45
  1. i just need to use pupil diameter for my task , do i need a calibration to get a proper pupil diameter? 2. when i try to desactivate the world camera i cannot as it make me choose only between activate device and locas usb(screenshot) . why it does this ?

Chat image

user-c39646 07 April, 2025, 11:01:28

ok thanks > it worked. i am now modifying your script and deleting the part where you d the calibration> few questions. When it saves, it does it as if i was running everyhing from the pupil capture interface? What it does the 'Clean up' part of the script? does this script work even if i am using it from aother computer or do i have to change the IP adress (but of course connected to the same internet network)? i attached you here the script modified

calibration.py

user-f43a29 08 April, 2025, 08:39:01

Hi @user-c39646 , I'll respond point-by-point:

  • When it "saves" (i.e., when the recording stops), it actually was doing everything from the Pupil Capture interface; not just "as if" it were doing everything from that interface. It is like a remote control.
  • In programming, the clean up stage is usually where you close resources that are open and free up used memory. It is a recommended practice for leaving your computer in a well-maintained state, so that other programs are not disturbed.
  • Yes, the script does work from another computer. You need to change the IP, as you say, and yes, they should be connected to the same local network.

I'd recommend reviewing this part of the Documentation for more clarification.

End of April archive