three-point-perspective

submited by
Style Pass
2021-06-05 19:30:06

This might seem an odd article: every tutorial on the internet teaches you that three point perspective is just the art term for “regular 3D”, where you set up a camera, tweak its distance, FOV, and zoom, and you’re done. The vanishing points that you use when using pen and paper correspond to where the X, Y, and Z axes intersect your clipping plane, and that’s all she wrote… Except that’s not “true” three point perspective. That’s the easy-for-computer-graphics version of three point perspective: the strict version is quite a bit trickier.

The thing that makes it tricky is that in strict three point perspective, your vanishing points are literally vanishing points: they don’t represent intersections of axes that run to infinity and a clipping plane somewhere off in the distance relative to your camera, the vanishing points are infinity. Which is a problem because that means we’re not dealing with linear space, which means we can’t use linear algebra to compute nice “3D world coordinates to 2D screen coordinates” using matrix operations. Which is a slight problem given that that’s the fundamental approach that allows efficient 3D computer graphics on pretty much any modern hardware.

Before we continue, I want to make it very clear that you will almost never need strict three point perspective: it is not “useful” so much as it is a rather strange 3D aesthetic. But it is a programming challenge, and no one’s got a page up about this on the internet as I write this text, so that’s certainly challenge enough to work out what the heck is up with this crazy projection and explain the code we need to achieve it.

Leave a Comment