Fisheye render - a "node" workaround with Map UV

I’m running some tests and came out with an interesting workaround for fulldome productions with Blender. I still can’t completely get away of the seams, but they are pretty much unnoticeable (I have a feeling this word is wrong).

The result:
(1) Equiangular Fisheye / Truetheta (most common for dome projection):

(2) “Mirror-wise” Fisheye (most popular for photography):

More on different kind of lens/projections here:

the method:

  • get a predeformed mesh UV mapped (sphere, plate, …)
  • UV Node (composite)
  • linked scenes with camera set to unique and rotated.

It will work nicely only with Blender 2.49a (for a Map UV node fix after 2.49).

Test file:

Youtube videos:

  • note: I forgot to mention that to use it for real it’s better to pre-render the UVs and save them as openEXR multiLayered

Seams, the bane of the dome content creator’s existence…

I tried something like this some time ago: and the seams were there then as well. Yours aren’t as noticeable but it would be nice to find a better solution without resorting to refraction and stitching lots of images.

Also this thread:

Nice. So, I took your file and tried to apply the same method I’m using on it. With Blender 2.49a the seams almost go away. (this method doesn’t use refraction or raytracing)
(render the UVs scene first, and store the .exr file to use in the Composite)

There is a major problem with your file. I think you are using some effects that are dependent of the camera rotation (i.e. if you rotate the camera you get a different mapping). That happens if you use the options NOR and REFL as mapping Input.

Btw, I couldn’t find your bug-report. (it lead to an inexistent link). But the main problem we had (alpha blending in the edges) was fixed yesterday by Ton.

Other thing: How did you come out with your mesh? How did you calculate the geometry you applied the Subsurf?

so here’s a silly question - I know nothing about the blender game engine - but it would seem that with the dome capability existing in that now, there should be a relatively straight forward way to use that code to render ofline… What am I missing? Andy

quick question - how do you control which type of fish eye you get - is that done with different UVs? Andy

Hi Andy.
You can always use use the BGE Rasterizer.makeScreenshot() to save your bge game screen in the current resolution (and make a movie out of it). Other then that the solution, code and even language (C++ vs C) of BGE and render in Blender are very different.
It’s possible for sure, but not necessarly related.

In this method/workaround yes. I’m doing the stiching in Composite Nodes. The UV is pre-calculated from another scene (see the scene UVs). In layer 1 to 4 you can see the objects I used for the equiangular fisheye, In layer alt+1 to alt+4 the objects for the other mapping).
I setup a different Screen for each mapping (Composite_Fisheye and CompositeEqui).
Ctrl+Left Arrow will show you the different screens of the file. You can see how each one of them are using different RenderLayers.

I was trying some alpha sorting with this method and I’m very pleased with the result (although I can spot some premul problems around the leaves).

I took the scene by Andrew P. Price (redbyte) and set it following the present method. Interesting to say that it’s quite fast once you get used to it (create new scenes, adjust the nodes, …).
equidistant fisheye
background (photo distorted in gimp + alpha) [my favourite !]
final composition

If you want to see the nodes you can check the file here.
All the credit for the art goes to Andrew :slight_smile: remember to check his tutorial on how to create stunning trees!!!

wow, thanks for sharing, keep it up!

this looks to be very well done, and quite useful. Thank you for sharing.!