For my PhD research on the pupil-size artifact (PSA), I needed a simulator where I could change pupil size while independently controlling pupil decentration. I found et_simul (Böhme et al., 2008) and started using it, but I needed so many modifications that I decided to port the framework to Python and add the features I wanted along the way. That became PyEtSimul.
The simulator works geometrically, modeling reflection and refraction at the eye’s surfaces: place eyes, cameras, and light sources anywhere in 3D, and it produces the synthetic eye-image features a video-based tracker would see. Pupil decentration was the feature I built it for, but the model has grown to cover non-circular pupils, conic corneas, eyelid occlusion, and camera distortion, among many other things. For full details, check the paper.