Hacker News new | ask | show | jobs
Show HN: Reverse perspective camera for OpenGL (Three.js) (github.com)
52 points by bntr 213 days ago
I've extended the standard OpenGL camera to allow smooth transition between normal perspective, orthographic, and reverse perspective projection. To demonstrate the effect, I built a demo using Three.js.

Reverse perspective can feel a bit disorienting at first, but this demo is meant to highlight a few of its interesting advantages:

1. An extended Dolly zoom effect. https://en.wikipedia.org/wiki/Dolly_zoom

You can think of it as an extrapolation of the classic Dolly zoom into negative space. It produces a cinematic sense of vertigo or sudden insight, and also lets you pull the camera back from an object without distracting the viewer with surrounding geometry.

2. A wider and more complete spatial view.

Near objects no longer obscure distant ones; the viewer can see both the façade of a building and what’s happening on its roof, or even behind it.

Code and details: https://github.com/bntre/reverse-perspective-threejs

3 comments

Link to live demo linked on the github -> https://bntre.github.io/reverse-perspective-threejs/

Well that is just the right amount of nauseating, trippy and interesting

For an extra dose of nausea, there's also a cross-eye stereo version: https://bntr.planet.ee/temp/rp/

(Alt + mouse wheel changes the eye distance)

That's so cool! I want more cross-eye content.
this is really neat. going to try it out with a creative coding tool I've been playing with.

are there any performance considerations to consider here relative to standard three cameras (either perspective or orthographic) ?

No performance hit - it's just a custom projection matrix. The rest of the rendering pipeline works exactly the same as with a normal camera.
Makes me feel the z-test should be reversed in reverse perspective mode but maybe it would just be even weirder?
That seems like it's just normal perspective from the opposite direction.
Exactly. Reversing the z-test is one way to get a reverse-perspective effect, but it doesn't allow for a smooth transition between projections (like dolly zoom).