[Pupil Lab HMD]整合眼動儀與Unity3D

詹閔翔
Eric’s publication
5 min readApr 2, 2021

逛逛我的新網頁:https://doremi31618.github.io/MyPortfolio/

本篇文章內容為Pupil Lab 官方文檔加上這次自己開發的一些心得,並不會即時更新,只是做一個快速導覽,還請大家以官方文檔為主喔!

Pupil Lab

pupil lab hmd add-on (以下簡稱pupil lab)是一個為AR/VR設計的眼動儀擴充裝置,本體並不具備AR/VR的功能。

其裝置的運作原理為,透過眼動儀上面的eye-camera即時的捕捉兩隻眼球的位置,再透過他們開發的軟體pupil capture獲取usb傳進來的資料,而Unity3D 則是使用zeroMQ(一套網路通訊函式庫)與pupil capture進行通訊進而將pupil lab讀取到的眼動儀資料轉換到Unity3D的座標空間。

而Pupil lab提供的api與官方自己出的open source軟體已經解決了所有的通訊連線問題,我們在Unity3D裡面只需要呼叫需要的功能就可以了。

環境設定

安裝Pupil Lab

— vive —

  • Step 1 :
將旁邊的旋鈕小心的旋轉拿掉
  • Step 2 :
  • Step 3 :
  • Step 4 :
這一步要特別小心,不要壓到中間的PCB(電路板),建議可以用個海綿或者軟性材料保護
中間圈起來的地方就是PCB
  • Step 5 : 再把你剛剛拆掉的vive組裝回去

— vive pro —

安裝 pupil lab capture

由於Pupil Lab 為Unity提供的功能大部分都是與自家軟體Pupil Core做通訊溝通,真正處理運眼動儀資料的程式還是在Pupil Capture中進行,因此我們需要先去下面的網站安裝pupil capture

安裝 HTC vive

設定 HTC Vive

Pupil Lab API 介紹

Pupil Lab 為Unity提供的插件總共可以分為三個部分:

  • Network layer 網路層 :負責處理Unity與Pupil capture底層的通訊
  • Pupil communication 通訊層:將底層的通訊功能包裝成你常使用的功能,比方說一定會使用到的Calibration(校正)、GazeData(獲取注視資料)、BaseListener/GazeListener/PupilListener/FrameListener(事件監聽)
  • Flow Control 流程控制層:將通訊層的功能再做一層包裝,
    這裡你會看到直接可以使用的功能

- RecordingController:通知Pupil Lab開始記錄眼動儀資料,需要特別注意的是pupil lab並不會將你在Unity3D中得到的注視資料傳回Pupil capture,也就是說如果你需要紀錄受試者在Unity3D 中盯著某處的座標,要手動撰寫一個腳本來間接紀錄。

- Gaze visualizer:這應該是最實用的功能,將上一層GazeData轉換到Unity3D的座標空間,這裏你可以得到受試者盯著3D空間的座標資訊。

- Frame visualizer:即時顯示pupil lab 拍到的眼睛畫面(真的就是”眼睛“的畫面)

Pupil lab plugin UML

實驗專案介紹

這是一個整合了Unity3D 、VR、Pupil lab的專案,主要是用來作GKT的認知心理學實驗,在這裡你可以得到客製化的眼動儀設定方式,已經實作完成的眼動儀資料紀錄程式,完整的實作程式。

更詳細的實驗介紹可以參考Git的readme

--

--

詹閔翔
Eric’s publication

專注於各種可能的技術解決方案,喜歡從技術的角度解決問題,也喜歡接觸各種新科技跟open source專案與時代一起進化,並樂於將所見所聞製作成人人都能輕鬆理解的教學文章分享於網路平台。https://studio-frontend-one.vercel.app/