blinky

Blinky Icon by Jeanette Foshee
an experiment in panoramic gaming
90° FOV (Standard)
180° FOV
360° FOV
Preview

Objectives

Abstract

In photography, it is common to overcome the limitations of a camera's Field of View (FOV) by "stitching" multiple photographs together into a panorama. This method was first demonstrated in the context of a game by Fisheye Quake in 1999 [1]. It stitches six views into a single perspective using a fisheye projection.

We introduce an extension to Fisheye Quake called Blinky. It allows you to create two types of Lua scripts for fully customising your perspective:

Depending on how you pair a Globe with a Lens, you can achieve perspectives that vary in terms of rendering speed, picture fidelity, and panoramic distortion.

Download

Commands

Bring down the console with the tilde (~) key and you can type the following commands:
globe <name>   : choose a globe (affects picture quality and render speed)
lens <name>    : choose a lens (affects the shape of your view)
hfov <degrees> : zoom by specifying horizontal FOV
vfov <degrees> : zoom by specifying vertical FOV
hfit           : zoom by fitting your view horizontal bounds in the screen
hfit           : zoom by fitting your view's vertical bounds in the screen
fit            : zoom by fitting your whole view in the screen
rubix          : display colored grid for each rendered view in the globe

Globes

A Globe is the entire image of your environment, composed of smaller images stiched together. Thus, a Globe script describes where to point the camera and how far to zoom when capturing each image plate. The following is an illustration of the packaged globes in Blinky. They show how each image rendered by Quake fits together into a polyhedron net after some cropping.

Cube
(cube.lua)
  • six 90° views
  • highest image quality
  • slowest render speed
Triangular Prism
(trism.lua)
  • three 120° views + two 128° views
  • medium image quality
  • medium render speed
Tetrahedron
(tetra.lua)
  • four 142° views
  • lowest image quality
  • fastest render speed

Lenses

A Lens shapes the panoramic view by mapping the Globe to the final screen image. Thus, a Lens script describes the mathematical projections to make this possible. The following is an illustration of the packaged lenses in Blinky.

Panini
(panini.lua)
  • practical for ~180° gameplay view
  • vertical lines are kept vertical
Stereographic
(stereographic.lua)
  • practical for ~180° gameplay view
  • all angles are preserved
Equirectangular
(equirect.lua)
Cylinder
(equirect.lua)
Mercator
(mercator.lua)
Equidistant Fisheye
(fisheye1.lua)
Equisolid Fisheye
(fisheye2.lua)
Vandergrinten
(vandergrinten.lua)
Fahey
(fahey.lua)
Hammer
(hammer.lua)
Polyconic
(polyconic.lua)
Larrivee
(larrivee.lua)
Quincuncial
(quincuncial.lua)
Eckert I
(eckert1.lua)
Eckert IV
(eckert4.lua)
Eckert V
(eckert5.lua)
Wagner VI
(wagner6.lua)
Winkel I
(winkel1.lua)
Winkel II
(winkel2.lua)
Winkel Tripel
(winkeltripel.lua)

Acknowledgements

History

Project Start: April 2011
Last Update: September 6, 2011