Ixmucane2 wrote:Your problem is far from clear. How do you expect to display "360 degrees" of anything in a normal 3D display? What do you mean by "standard projection"?
The closest reasonable thing I can think of is a cylindrical backdrop that wraps around a 3D environment, very far, normally including sky and horizon; it can be obviously approximated in practice with a texture-mapped prism, but any trigonometric functions can be precomputed (vertices are fixed).
As you more or less already found, (x,y,z) vertices of the vertices of such a prism skybox are (R*cos theta, R* sin theta, below ground) and (R*cos theta, R* sin theta, far up off camera) for theta varying from 0 to 2*PI and R large enough to have little parallax. The whole texture covers the whole cylinder; texture coordinates of each face are 0 to 1 along Z and k/N to (k+1)/N for face k of N along the other direction.
OK, so to explain what I'm after more: the broad idea is to create a graphic that shows 360 degrees of a view as long strip of graphics. This strip could then be zoomed in on until it shows roughly a 90 degree FOV and panned around like a simple panoramic effect. Say that the graphic ends up being dimensions 2500x480. x=0 might map to x_angle=0 and x=2499 might map to x_angle=359 degrees. So, I guess what I really am after is cylindrical projection.
Oh, and when I used the not-very-scientific term standard projection, I mean 3d projection onto a frustum (ala x_screen = x_world*scale/z + screen_width/2).
Now, what you're suggesting is similar to a skybox, right? So, if I were to simulate a cylinder using a polygon, I would create a shape surrounding the viewpoint with N sides. I would take renders of the scene I want to map onto that shape at N/360 degree intervals, and map those on..?
It's also dawned on me that if I rendered a 360 degree view as a raycaster, I could just use a standard raycast effect and not correct for fisheye. That is, instead of shooting rays from (player_angle - 45_degrees) to (player_angle + 45_degrees), I'd just shoot rays from 0 to 360 degrees. The information contained in the resulting graphic I think would be exactly the same as a normal raycast, and all you'd have to do to make it look truly 3d again is to multiply each column by cos(angle) as you pan (!). I wonder if this means that any panoramic engine could be done by obtaining a 360 degree graphic (say a photo) with a certain amount of fisheyeing and then multiplying by cos(angle) for each column.