Minecraft in Fisheye Projection

by Octapoo

Wednesday, February 10, 2021 at 17:40:00 UTC

Return to the Summary in Ecstatic Lyrics Blog

A long time ago I bought the cheapest GoPro available, and was testing it out, when this particular image kind of shocked my brain, which until this point had only ever seen straight utility poles:

This prompted me to wonder what I could do to straighten it out.

So I took this photo, so as to have a photo with a lot of lines that should be straight, and after hours of researching lens formulas and writing code, I eventually ended up with the photo beside it.

Look at all of those straight lines. Applying the same program to the first image produces this:

However, it wasn't all good. For example, this other photo I took:

In the straight line version, the doors of the cupboard look like each of them could individually cover the whole width of the cupboard.

This was something I was well aware of from playing Minecraft, and indeed was one of the reasons I wanted to create MME, though ultimately there wasn't much to be done about it other than to use a more narrow field of view. Computer graphics aren't that flexible.

Every image projection has compromises. It's the same problem as turning a globe into a flat map. You just may not be so familiar with it because most photos aren't wide-angle. Just like the problem of map projection disappears when you're making a map no larger than a state, the problem of image projection disappears when your camera's FOV is more narrow. So while straight-line projection is nice for more narrow FOVs since we live in a world of straight lines, for wide-angle images, I prefer fisheye projections.

Anyway, the other day in Kirk's discord server, people were posting some screenshots taken with some special shaders, some taken with a 95° field of view, and it was making me a bit crazy to see people want to take good screenshots but not turning down their FOV to avoid that distortion.

So I decided to make a program to do the reverse of the above: Take straight-line projections and turn them into fisheye.

Here's an example from a screenshot where I stood at an equal distance from two stacks of scaffolding, but turned so that one was in the center of my view and the other was at the side.

The particular fisheye projection I chose above aims to keep the size of objects constant, and so they almost are, but of course it has to sacrifice preserving straight lines in order to do that.

So anyway, even though I don't have the fancy shaders, here's some Minecraft screenshots converted to fisheye projection. I'll include the original version of the first one just so you have a good idea of the transformation that is occurring.

Here's a video clip someone posted, recorded with shaders at a 95° FOV, which I converted to fisheye:

Finally, I wanted to see what playing Minecraft in fisheye would look like, so I recorded a short clip walking around and converted it to fisheye:

I think I'd really prefer to play with such a projection, if only it were possible. In particular, note that it eliminates that odd inconsistency where, when you're looking forward, it looks like you're running fast, but when you look sideways, you see just how slow you're actually moving. In this clip when I'm walking on the bridge, I look sideways, and I appear to be going the same speed as when I was looking forwards despite using the maximum FOV.

BTW, if anyone wants to play Minecraft, Kirk has been running his own server for about a year now, so you might consider playing on it. The server address is It has some plugins but you connect with a vanilla minecraft client as all of the mods are server-side.


If you were logged in, there would be a comment submission form here.
Creating an account is easy. You literally just type in a name and a password.
I don't want your email address, so there won't be any links in any emails to click.

Return to the Summary in Ecstatic Lyrics Blog