The idea in one minute
A flatbed scanner already contains a stable moving light and a calibrated line sensor. They sit extremely close together — but crucially, they are not perfectly coaxial. That small baseline gives the incident light a slight sideways component, so a microscopic slope facing the lamp returns a little more light than the same slope facing away.
The lamp stays fixed in scanner coordinates. Rotate the subject by 90° between scans and the light appears to orbit it in the subject's own frame. After the four images are registered onto one pixel grid, every pixel has four measured intensities under four known light directions — enough to separate surface orientation from base colour.