Skip to content

Show HN: Reverse perspective camera for OpenGL (Three.js)

github.com/bntre
52 pointsbntr8 comments
On HN

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

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

bntrOP

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) ?

bntrOP

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.

bntrOP

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).

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.