Forum

Equi-Angular Cubemap?

Just curious, does anyone have a way in vvvv of dealing with “Equi-Angular Cubemaps”? Instead of each image being the face of a cube, it is one-sixth of sphere. It has the advantage of making the angular resolution of pixels more uniform:

Athankew!

Sure, multiple times. In vvvv you may use CubeToPano. Otherwise if you want to load an equirectangular map directly from a FileTexture(2d) then I would suggest you to combine it with a primitive sphere exported (directly - no special treatment needed) from Blender (because of its UVs).

CubeToPano assumes the square images are to be viewed, well, from the center of a cube, with each image on the face of that cube. EAC square images are assumed to be seen as mapped on six equal-sized areas of a sphere. If you try to use EAC mapped images on a cube, like a skybox, the images are distorted showing a kind of spherical warping towards the corners of the cube.

EAC offers better pixel angular equivalence as outlined in that article, and in practice is laid out in a fully-packed format different than the “cross” layout of a cubemap with its large unused spaces. The latter is OK for a static background image, but not for VR and video streaming. Pano is even worse, with most of the pixels wasted at the poles, and the lowest pixel density around the equator where you will usually be looking. There’s some nice pics in that link showing this.

I’ve managed to get the EAC sphere mapping right by using a ProjectedTexture kind of thing with the six projectors at the sphere center and a Perspective of .25, but having to jump through all sorts of hoops to get the images separated from the map, as some of them have to be rotated different amounts so you can’t do the usual “here’s a spread” approach.

The evolved standard used by Youtube etc. for the actual streamed data is a vertical rectangle of the six square images in a 2Wx3H array:

RIGHT FACE (rotated 90° CCW)          TOP (no rotation)

FRONT (rotated 90° CCW)               BACK (no rotation)

LEFT FACE (rotated 90° CCW)           BOTTOM (rotated 180°)

Edit: In 3D VR, that pattern is repeated horizontally so you have that array for each left and right eye for a total of twelve square images.

you can use boxSphere from vux, that tessesl box to sphere and also texcoords, or there is a pixelshader function that maps square cords to sphere in pixelshader by UNC… I’ll take a look tommorow

for perspective to work you have to provide depth for each eye, which is three depthmaps for 360 renders, using angular blend, or three 360 images, using angular blend, from cams with slight offset

Btw can you provide sample texture?

@antokhio Thanks, but I can’t find any nodes that have “Box” and “Sphere” in the name in beta_41 and DX11 1.3.1, do you have a source?

If you go to this thread on the topic there are some examples of how a 3D pano maps to 3D EAC on youtube vids. Here’s another example from inside the ISS.

sry busy as hell…
i found some modded version, i did a cleanup but there might be some crap

BoxSphere.zip (4.9 KB)

Hey thanks, that’s almost perfect - I just need to rework the texcoords for EAC. The images look great, no distortion. Be cool to have it take an input specifying the input tex mapping; cross, EAC mono, EAC L/R, but I’ll burn that bridge when I get to it!