Technology Transfer

I found out today that HTC now ships a tool to measure users’ inter-pupillary distances with new Vive VR headsets. When I say “tool,” I mean a booklet with instructions in many languages, and a ruler printed along one edge of each page:

IPD measurement chart shipped by HTC with new Vives.

Figure 1: IPD measurement chart shipped by HTC with new Vives. Image courtesy of reddit user DanielDC88, image source.

I thought this was great on multiple levels. For one, measuring the user’s IPD and entering it into the VR software, either manually or through a sensor on a physical IPD adjustment knob or slider on the headset, as in both Vive and Oculus Rift, is an important component of creating convincing VR displays. The more people get used to that, the better.

On the second level, I was proud. On April 9, 2014, I wrote an article on this here blog titled “How to Measure Your IPD,” which describes this exact method of using a mirror and a ruler. It even became one of my more popular articles (the fifth most popular article, actually, with 33,952 views as of today). I was a little less proud when I looked at my own article again just now, and realized that my diagrams were absolutely hideous compared to those in HTC’s booklet. Oh well.

Anyway, I wrote that article in response to a discussion on the Oculus sub-reddit, then the main forum for developers and users of commodity VR. At the time, Oculus’ SDK contained an in-headset IPD measurement tool, but it didn’t work very well. In that discussion (which I cannot find at this moment), someone pointed to a webcam-based IPD measurement application embedded on Warby Parker‘s web site. I didn’t like that method for two reasons: for one, although the original web site appears to be a legitimate seller of eyeware, it would be easy for scammers to set up another site with the same application, and collect sensitive information from careless users holding their credit cards up to their web cams and uploading the resulting pictures.

My second concern was that the camera-based algorithm has two sources of systematic error built in (for which the software might attempt to compensate, but the principle…), see Figure 2. When taking a selfie with a web cam, most users would focus on the camera’s lens, and therefore turn their eyes inwards. This would result in the measured IPD being smaller than infinity-verged IPD, by around 1.5 millimeters for average users and an eye-camera distance of 50cm. Second, there is perspective foreshortening when holding a ruler or other measurement device in front of one’s eyes, and taking a picture with a camera. The apparent distance on the ruler will be smaller than the real distance, depending on the relative distances from the eyes to the ruler, and from the eyes to the camera’s lens.

Sources of systematic error in camera-based IPD measurement, based on difference between near-verged and infinity-verged IPD, and measurement parallax.

Figure 2: Sources of systematic error in camera-based IPD measurement, based on difference between near-verged and infinity-verged IPD, and perspective foreshortening.

With that in mind, I started thinking about ways to get around these problems. How could one force the user to keep their eyes pointed perfectly parallel, and at the same time get around perspective foreshortening? It’s actually quite difficult to force one’s eyes to verge to a distance that is not represented by real objects in the environment. Then it occurred to me that one could use some object with two marks on it, exactly as far apart as the user’s pupils, and ask the user to first focus on one mark, and then on the other. But that’s a chicken-and-egg problem: one has to know one’s IPD to then set up a target object and measure one’s IPD. Unless… the object is the user’s own mirror image, which obviously has the same IPD a the user. Bingo. Using a mirror elegantly solves the perspective foreshortening problem as well, and on top of that enables a user to measure their IPD without anyone else’s help. So, a winning strategy. I thought I was very smart.

Which brings us back to today, when I felt both very smart and very proud. Surely someone at HTC had read my article, decided to use my method, and asked a graphic designer to spruce up the presentation. Alas, not so fast. Googling for “measure ipd mirror ruler” brought up a bunch of results predating my article, such as this one from 2012, this video from 2011, and some with, again, prettier diagrams, and even one by a sometimes reader of my blog! So, yeah. I should have consulted the Googles back then.

I do still kinda want to know where HTC took their lead from, to be honest.

4 thoughts on “Technology Transfer

  1. Doc they obviously got it from your post, you are todays authority in making VR concepts understandable, available and interesting. How come you are not working for Oculus or HTC?

    • It’s a fairly high probability indeed. You should be proud it’s a very elegant method! I used it when I got my vive a few weeks ago from your site. If they did indeed copy it, they should mention you somewhere.

  2. Oh, a mention! 😉 It was a fine brain puzzle to figure out my method, but I doubt many got any use out of it, it was much easier to have in my head than to put on paper which is probably true about many things. The original concept was to mirror yourself in the black screen of your phone and move rings on it to center your pupils, would probably have been a bad experience.

    The main motivation I had was that it was a method to keep the eyes parallel, which from what I’ve heard not even optometrists always can manage. It would be better with a fixed head, but eh… good enough. I personally use the value I’ve measured with it and I think it’s fine 😮

    After having actually read this article I see your motivation was basically the same! I think I liked my method better as the ruler automatically gets aligned perpendicular to the mirror reflection. But then again it’s about the angle of the user’s head, so yeah probably a moot point.

    I’m rambling, and tired, uh… cheers! 😉

Please leave a reply!