Central cylindrical camera (Cycles)
The
central cylindrical
projection is widely used in landscape panoramic photography :
It differs from the
equirectangular
projection in that it projects straight lines from the center point onto a cylinder of unlimited height, rather than unfolding an "elastic" sphere into a cylinder of height = half circle perimeter.
It is especially useful because you can print it on paper, bend the paper into a cylinder, place your eye at the center and see a 360° landscape exactly as you would see it if you were there (with monocular vision), whereas the equirectangular projection would give a distorted representation.
In landscape simulation jobs, we import central-cylindrical panoramas (like the one above) as textures on 3D cylinders but currently we can't render them identically using the existing cameras. If we use the equirectangular projection, the image gets distorted. Some tricks can be used with shader nodes or compositor nodes but they add calculation and render steps and the results may not be as clean and sharp as a direct render.
The interface could be identical to the Equirectangular type, except that Latitude Min and Max should not default to 90°, as it would only show the colors at the poles (the rest would be squashed in the middle). Such values could still be supported for corner use cases unless computationally problematic.
5 Comments
Hi, i just wanted to inform you I have developed this feature, you can see the pull request here, projects.blender.org/blender/blender/pulls/123046
I have compiled a window(x64) version with cuda/optix of blender 4.2.1 with the cental-cylindrical projection, I can't share on GraphicAll for security reason (as it's impossible to check malicious code of compiled binary) but don't hesitate to PM me if you really need this build.
Awesome! Thanks!
Marking this as Done.
Amazing! Sorry I missed your response. Somehow this proposal I made is no longer listed in my ideas so I wasn't notified. I just saw it mentioned in the "4.3 New Features" video.
You did an awesome job, thank you!
Out of curiosity, did you do it because you also need it or because it was here on RCS and had some upvotes?
One small adjustment I would have made : like I showed in my proposal, I'd personally prefer using min and max latitude rather than 3 size properties (height min/max and radius). This way the UI would be identical to Equirectangular and if I know the vertical field of view, I can just type it without calculating the tangent. But the feature is here and it's more than enough for me!
This would also be very useful to support such cylindrical projection for physical cylindrical projections setups (via VPs or led screens). A native support would remove the need to compute equirect/cubemaps, and then convert the 360 to cylindrical. Longitude would indeed be angular, equivalent to the equirect, and Latitude would be replaced by min/max height, in blender units, scene coordinates. Shift could be expressed in sensor coords or, better to grasp, longitide/height parameters units.
yeap, we really need it