Releases: EasyEyes/remote-calibrator
Version 0.5.0
This major release introduces new features including latency measure, viewing distance nudging, and have the participants help check the accuracy of RC results.
Added
- Latency for gaze and viewing distance tracking. The latency is calculated by comparing the timestamps of the moment when the video stream is fed into the model for estimation and when the result is produced and recorded. You can access it by
data.value.latencyMs
wheredata
is the argument passed into the callback function of.trackGaze()
and.trackDistance()
. - Viewing distance monitoring. 4 new options for
.trackDistance()
are added:desiredDistanceCm
(default undefined),desiredDistanceTolerance
(default 1.2),desiredDistanceMonitor
(default false), anddesiredDistanceMonitorCancelable
(default false). If a number is given fordesiredDistanceCm
, the program will check the viewing distance and call for "Move CLOSER" or "Move FURTHER" to the participants, until the participant moves to the desired distance, and the experiment will resume. SettingdesiredDistanceMonitor
to true will repeat this process through the rest of the experiment. debug
andi18n
options of.panel()
. When set totrue
, The first one adds some useful options, e.g., to skip calibration, for you to use when debugging. The second one adds a language picker for participants to choose their own languages (the default choice is always the one set on initiation).- "Redo last response" button for the blind spot test.
- Measurement repeatability check for the blind spot test. The data will be accepted only if the right eye measurement and the left eye measurement are close enough, i.e. their averages disagree by less than 20%. If not, the measurement will repeat until the averages agree with each other. After that, the median of all measures will be chosen as the final result.
- The raw data of the blind spot test is also saved now. The new data structure is
{ value, timestamp, method, raw }
. The raw data is an array of all kept measures (a measure is deleted after the participant chose to redo the last response). - Display the actual code used to trigger functions on the demo page (https://calibrator.app).
- For viewing distance, one can now drag or use arrow keys to control the position of the red dot. To switch between control mode (proposed by EasyEyes) and automatic mode (Li et al., 2018), one can set
control
totrue
orfalse
for.trackDistance()
and.measureDistance()
options. - Have the participant help check the accuracy of the calibration. In screen size, viewing distance, and distance tracking options, adding
check: true
will insert an extra routine after the participant finishes the respective calibration. They will be asked if they have a ruler or tape measure, and to measure corresponding lengths (if possible) to be compared to the Remote Calibrator results. (This feature is currently only available in English for version 0.5.0.) - Camera permission request and detection. If the camera permission is not yet granted, a popup window will tell participants why we need it and enable it when asked in the browser. If the camera access is denied, the current code can catch it and display a message, instead of running into fatal errors.
showCancelButton
option for.measureDistance()
and.trackDistance()
functions.- Set the default virtual object for screen size calibration by the
defaultObject
option in.screenSize()
.
Changed
- Discard old blind spot measures when rejected. A popup shows reasons and hints for participants.
- Update near point tracking to be more accurate. The webcam is assumed to be at the top middle of the screen.
- Rename "Head Tracking" to "Distance Tracking" globally.
- Polish translations.
- Elements, like
.calibration-background
, have a higherz-index
to avoid being covered by external elements. - Repeat testing time of the blind spot test for viewing distance and distance tracking is changed to 1.
- Submission key of blind spot test changed from
Space
toEnter
. - Customized import of animate.css to reduce the package size.
- Customized
files
field inpackage.json
to boost installation performance. - Rename "Cancel" button to "Restart this calibration".
Fixed
- Correct warning log when calling distance tracking lifecycle functions, while distance tracking is not initialized.
Removed
Redo last response
button for blind spot measure.- Blind spot moving the dot will not wrap the position.
Version 0.3.0
Added
i18n!
- Internationalization! A full list of supported languages can be found at https://docs.google.com/spreadsheets/d/1UFfNikfLuo8bSromE34uWDuJrMPFiJG3VpoQKdCGkII/edit#gid=0.
- A few new getters related to languages:
.userLanguage
.language
(e.g.,en-US
,zh-CN
).languageNameEnglish
(e.g.,English
,Chinese (Simplified)
).languageNameNative
(e.g.,简体中文
).languageDirection
(LTR
orRTL
).languagePhraseSource
(e.g.,Denis Pelli & Peiling Jiang 2021.10.10
).languageData
gets the whole data history of languages..supportedLanguages
gets an array of supported languages.
.newLanguage(lang = 'en-US')
to set a new language for the calibrator.- Allows researchers to set language on initialization using the
language
option. Set toAUTO
(default) will let the calibrator go with the user language. .isMobile
getter.- Call
._environment()
and._displaySize()
automatically when initializing the calibrator. - Instructions in the viewing distance measurement (and head tracking setup) is scrollable to avoid overlapping with the canvas on small screen sizes.
- Automatically minimize the mobile address bar when a calibration task starts.
- Safer type check for callback functions to avoid fatal errors.
- Version console log on loading.
Changed
- Improved UI and performance for small screens and mobile devices.
- Take Return instead of Space for confirming screen size measurement.
- (Breaking)
.fullScreenData
getter is changed to.fullscreenData
. - Viewing distance methods become
BlindSpot
orFaceMesh
.
Fixed
- Participants can now continue (restart) calibration tasks after quitting at the middle of the last one.
- Various fixes and updates for the panel.
- Gaze and head trackers stop working on Safari when the video preview is turned off. (#49)
- Fatal error due to cannot detect devices for VR headsets.
- Remove wrongly labelled camera icon for measuring viewing distance task in the panel.
Removed
- (Breaking)
.environment()
and.displaySize()
. Values can be accessed directly throw the getters. - The responsive arrow in the screen size calibration with credit card.
Version 0.2.3
This version contains breaking changes to the gaze tracking function. More specifically, .trackGaze([options, [callback]])
is changed to .trackGaze([options, [callbackOnCalibrationEnd, [callbackTrack]]])
.
Added
- (Breaking) Callback function of gaze tracking is split into two functions:
callbackOnCalibrationEnd
that will only be called once when calibration ends, andcallbackTrack
that will be called continuously as the tracking runs (with data parameter passed in). sparkle
option (defaulttrue
) for measuring and tracking viewing distance. The red dot sparkles at 10 Hz to make it more prominent when absent from the view.- Ignore the Return key in screen size calibration.
Fixed
- Panel final callback function is called multiple times if gaze tracking is the last calibration task.
Version 0.2.2
Added
- Sound feedback (2000 Hz, 0.05 s) for responses in blind spot test.
showNextButton
option for panel. If set tofalse
(default), automatically proceed to the final callback after finishing the last task.nextHeadline
andnextDescription
in panel options to change panel text after finishing all calibrations.- Blind spot floating instructions move along with the crosshair.
- Add credit text for blind spot test and credit card trick on the corresponding pages.
Changed
- Changed "cross" to "crosshair" in default task descriptions.
- Slightly thinner crosshair line width.
- When not tracking near point,
nearPointCm
is stored as[null, null]
instead ofnull
.
Fixed
- Floating instructions don't show in blind spot test for head tracking, when near point is turned off.
- Dependency security issues.
Version 0.2.1
Minor fixes and updates.
Version 0.2.0
This is a major release with breaking changes.
Added
.showNearPoint()
to control the display of the near point on the screen (a green square)..removePanel()
and.resetPanel()
functions to better control the panel element.- Animate transitions of the gaze calibration dot.
Changed
- (Breaking)
.panel()
now becomes an async function and takes one more argument -resolveOnFinish
that can be resolved after the "Done" button is pressed. This process is independent from the original callback function and provides one more way to deal with the end state of the calibration panel. The logic might be used for all other calibration and tracking functions soon. - The square part of the USB connectors will totally disappear when hovering on the slider and changing their sizes.
- Default decimal place value (customized by
decimalPlace
in options) for head (1) and gaze (0) tracking data. - (Breaking)
showVideo
andshowGazer
parameters will only be effective after the initial calibration process. Participants would be able to see these visual feedbacks during the calibration even the parameters were set tofalse
. - Refined design and default text of panel element.
- Refined design of screen size measurement interface. It now works much better on smartphones.
- Default instruction text in various functions.
- A lighter default background color, changed from
#ddd
to#ccc
.
Fixed
- Avoid setting up multiple head trackings at the same time.
- Cannot track near point when video is hidden.
- After the initial measurement in head tracking, the float instruction block shrink to an ellipse.
- No data error for video element when tracking viewing distance.
- Panel final callback is not checked before running, which may cause error.
- Video feedback box may be selected unexpectedly during gaze calibration.
Removed
- Pop-up in various functions. Instructions will be displayed side-by-side with the actual tasks.
- Disable checking gaze accuracy and setting
thresholdDeg
. Waiting for more robust solutions.
Version 0.1.1
Minor update.
Version 0.1.0
This release brings virtual buttons on the screen for smartphones, all data access, and a brand new design of the panel element, which becomes even more customizable.
Added
- Add virtual clickable buttons to be fully functional on mobile devices without a keyboard.
Changed
- (Breaking) In the parameter, options, and extension names, the unit name is capitalized only for the first letter, including
Px
,Cm
,In
,Ppi
,Deg
, e.g.,RemoteCalibrator.viewingDistanceCm
. - Redesigned panel for setting up calibration pipeline.
- Changed default descriptions and instructions for various functions.
- Viewing distance tracking is rephrased to Head Tracking in various context. The function handle
.trackDistance()
stays unchanged.
Fixed
- Wrong keyword for framerate option for
.trackDistance()
in readme.
Version 0.0.9
No new feature updates in this release. Fix image path and update dependencies.
Version 0.0.8
Tracking near point becomes more accurate in this release. Participants will be instructed to measure and submit their interpupillary distance using easily accessible daily objects, like a pen or cable.
Added
- Measure the interpupillary distance before tracking near point and viewing distance.
- A new
develop
branch for new feature development. The deployedmain
branch will only use released versions of the package.
Changed
- Improved starting time of gaze and distance tracking, around 3 times faster.