This game has been Greenlit by the Community!

The community has shown their interest in this game. Valve has reached out to this developer to start moving things toward release on Steam.

Greenlight is being retired. For more information on how to submit games to steam, refer to this blog post.
Cuebox : The Real 3D Pool
Qon Dec 1, 2013 @ 1:08pm
What is fisheye?
So I made a thread for this since the qomment seqtion is not enough. This is aimed at the developers of Quebox as well as anyone interested in qomputer graphics and stuff :3
This is meant to be eduqational and desqribe what is and what is not fisheye.
TL;DR It's not high FOV. But keep reading for qool images below :D

What is fisheye?
From Wikipe-tan:
"A fisheye lens is an ultra wide-angle lens that produces strong visual distortion intended to create a wide panoramic or hemispherical image.[1][2] Fisheye lenses achieve extremely wide angles of view by forgoing producing images with straight lines of perspective (rectilinear images), opting instead for a special mapping (for example: equisolid angle), which gives images a characteristic convex non-rectilinear appearance."

So what does this mean?
A rectilinear projection
is the standard projection method that a qamera or a qomputer rendering uses to map 3D geometry to a 2D surface. A fancy name for qreating normal 3D graphic images shown on a flat display. A reqctilinear projection of straight lines produces an image with straight lines. However when the field of view angle (FOV) approaches 180 degrees the image will look more and more distorted (if your face stays at the same distance from the display). Objects qlose to the edge will be very large and anything you point the qamera at will be small and look like it is far away. A FOV of 180 or higher is impossible with a rectilinear projection.
Rectilinear with vertiqal FOV: 90[]
Rectilinear with vertiqal FOV: 145[]
Rectilinear with vertiqal FOV: 175[]
(qlick on the images to get higher quality)

A fisheye projection
is not a rectilinear projection. There are several different kinds but the point of those is to lessen the distortion in rectilinear images and provide something with equisolid angles. What that means is that an objects size, the area it qovers on the screen, depends on it's size and it's distance from the qamera but not its position on the image.
I like the stereographic projection. It enables twice as high FOV (not all fisheye projections allow more than 180) and looks kinda awesome. It doesn't really provide solid angles but it's "better" than reqtilinear. It's a qompromise that keeps shapes somewhat reqogniseable and doesn't introduce as much distortions as other methods.
Stereographic with vertiqal FOV: 2*90=180[]
Stereographic with vertiqal FOV: 2*145=290[]
(The number on these 2 images says 90 and 145, that's only half the aqtual vFOV)
The white circle is 90 degrees away from the center of the image. So it shows the direction that is straight above, below, to the left and right. The images are all taken from the center of the big qube.
A photograph taken with a stereographic qamera lens[] (from the stereographic wiki artiqle)

A fisheye projection doesn't have to provide higher FOV, but the point of it is to enable higher FOV while retaining the ability to see what you are looking at q:
A high FOV alone doesn't make it fisheye. Rectiliniear projections are not fisheye.

How I qreated stereographic images
I'll try to keep this simpler than how it is desqribed on wikipedia.
First I created a cube rendering. A qube rendering is simply 6 rectilinear images with a hFOV and vFOV of 90 degrees (so it's 6 square images) taken in all 6 directions (up,down,left,right,forward,backward) from the same point. This qube render will qontain everything that qan be seen from that point. Now I need some 3D geometry that qan use the qube render as a texture. For this I make a 3D model of a sphere where the UV (for texture) qoordinates matches the distortion introduced by a rectilinear projection. The qubemap will be applied on the inside of the sphere. This makes it so that the the qubemap, when used as a texture, will be stretched out qorrectly to remove the distortion. Now I render the sphere. In all directions from the center the pixels will match to what is aqtually there in that direction from that point. This means that if we place a rectilinear qamera in the center of the sphere then the image that is produced will look exactly (except for some minor blurring if a small qubemap resolution was used) the same as if we didn't go through all these hoops. If the qamera is placed at the edge of the sphere looking inwards we get our stereographic mapping.
Wiki image[]
If someone wants pseudoqode for how the sphere is generated (it's simple) or any other part then just ask.

If you want othograpic projection then place the qamera at an extreme distance away from the sphere and point it towards the center of the sphere. Use a low FOV so that the sphere fills the sqreen from that distance. Max FOV like this is 180.
< >
Showing 1-1 of 1 comments
Qon Dec 2, 2013 @ 6:52am 
Originally posted by PortalOrange:
I'm glad you liked it! What part did you like the most and was there anything that was hard to understand and needs a rewrite?
< >
Showing 1-1 of 1 comments
Per page: 15 30 50