Photospheres and panoramas

This article by Graham Mills_2 first appeared in the SOTK Newsletter dated 6th May 2016


Panoramas and photospheres are interesting places to start if you want to connect your build with real world scenes. Many smart phones now allow you to capture panoramas and photospheres that, while sometimes imperfect, may be good enough to set that scene (and are something students can make). You can convert both to cubemaps using an online utility provided by Sergey Gonchar. You get back a set of 6 images suitable for texturing the inner surfaces of a room-sized cube (sometimes referred to as a skybox) in Kitely.

You may need to play around a little with texture scaling and orientation but the results can be fairly impressive within the limitations intrinsic, say, to 360 degree video compared to VR. Graham found that photospheres give the best results and suitably licensed images for testing can be found via the usual suspects and elsewhere besides (for example, sphereshare.net has Terms of Service that encourage downloads). Graham had to add borders to the top and bottom of his panorama to stop content leaching into the distorted floor and ceiling textures (he used Irfanview to do this).

2017-03-18_17-33-07.pngInworld view of the sculpture gallery. Left, front and right sides are shown in part or in their entirety (ceiling is due to seams between faces; no attempt made to optimise images before upload).

You can also make cubemaps from screenshots captured inworld. In this case you need to use a program such as Hugin to create and save a panorama in equi-rectangular format before creating the cubemap textures. Graham used Hugin (free) and found that a FOV of 45 degrees worked satisfactorily on the 12 overlapping images. Although he included coloured inworld markers as a guide, these are probably not essential. Again, a border was added and the image resized (reduced 50%) before creating the cubemap. This is for a single row of images; given more time it could be expanded vertically.

2017-03-18_17-34-02.pngPart of the OpenSim Micrographia build from a similar inworld perspective (no attempt to optimise inworld textures).

Panoramas and photospheres can also be viewed on the web using the Spherecast viewer provided by OpenSim educator Justin Reeve. This also has an option to generate a pseudo-3D image for viewing with Google Cardboard. Spherecast is going to offer additional features in the near future that are presently invite-only. Demonstrations can be seen on their website, including a sequence of narrated RL images that evoke memories of Justin’s wonderful Undersea Observatory OAR.

2017-03-18_17-37-32.pngThe same panorama viewed using Spherecast in Cardboard mode.

If you are OK working with snippets of code, vrEmbed.org can be used to create simple interactive tours/stories for Cardboard using ordinary 2D web images and panoramas as well as 3D stereo images.

You can even incorporate virtual content in dae/collada format into photospheres using the Holobuilder application (web-based with free starter account but scenes can be adapted by others). Remember that you can export your own prim content in dae format from Firestorm via the leftclick menu. Simple animations and labels can be applied and scenes hyperlinked to form a tour. As with most of the above, you can display the scene in Kitely using media-on-a-prim although, of course, it will now be 2D.

Hopefully, the above has whetted your appetite. You can create mini-scenes in Kitely or RL and display them inworld, on your PC or your mobile device. Imagine a teleporter that displays your arrival point before you make the jump! Inevitably there can be rough edges; some of the Cardboard displays proved prone to flipping or failed to keep Graham’s phone alive. Some of that might be down to his use of niche Cyanogen OS kit. Nevertheless, there is much potential here both in and beyond OpenSim.

Addendum

If you are interested in an inworld 3D environment derived from Google Maps then RezMela Surroundview Lite is currently available as a preview version.