For the past couple of weeks, I've been diving into some new code. It all
started out when I started using OpenImageIO as image i/o library for lux.
OpenImageIO provides some functionality which is relevant in a panorama
programming context, namely it's 'environment' function, which samples a
full spherical with proper antialiasing and interpolation. I found this
function 'tasty' and started playing with it. This led me to try feeding
'cubemaps' to it, which is another format used to cover an entire 360X180
degree environment. Alas, no luck here, not supported. lux has it's own
flavour of cubemap processing, but I'm not entirely happy with it's
performance, so next I decided to investigate cubemaps to maybe come up
with better code. To have some standard to adhere to, rather than my
'ad-hoc' approach in lux, I turned to openEXR's 'flavour' of cubemap. I
started out by using their utility to convert between cubemaps and full
sphericals ('exrenvmap') but I wasn't happy with it - it didn't work as I
expected. Correspondence with the openEXR people turned out that cubemaps
are not used much and their code is twenty years old and probably not
entirely correct - and slow. Time to start coding myself, and to use my
library zimt to code it all in multithreaded SIMD code for speed!
I first coded a utility to convert between full spherical (a.k.a lat/lon)
format and cubemap format. This led to more code dealing with cubemaps -
the utility is now quite capable and offers a few - hopefully - interesting
features. Then, to work towards transferring my new insights and code to
lux, I wrote code to reproject environment images (both full sphericals and
cubemaps) to common projections: rectilinear, spherical, cylindrical,
fisheye, stereographic and cubemap. This latter code is what is probably
most relevant in a panorama programming context, so I'd like to point you
to it. It may also be of interest to the libpano project. The code is here
<https://github.com/kfjahnke/envutil>. There's a demo program 'stepper.cc'
which shows how the code base can be employed to code reprojections very
tersely - giving a virtual camera orientation with Euler angles is
built-in. I may elaborate the demo program - so far, there is no
parameterization with CL arguments, it's just a simple pass-an-environment
and get preprojected images demo, but I thought that now is a good time to
point you to this new project. The code is extensively commented, and it's
all MIT-licensed.
--
A list of frequently asked questions is available at:
http://wiki.panotools.org/Hugin_FAQ
---
You received this message because you are subscribed to the Google Groups
"hugin and other free panoramic software" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/hugin-ptx/75677626-f6ac-4506-9b65-bac8d9764d47n%40googlegroups.com.