User:TheDJ/panoviewer



My attempt at converting the panoviewer toolforge tool by Dschwen into an extension which can be embedded into wiki pages.

Step 1

 * Create an extension for panoviewer which adds the JS modules to the relevant pages.
 * I had started this project before Covid, but had never published it.
 * Cleaned up and now available on the WM gitlab.
 * Repo: https://gitlab.wikimedia.org/hartman/panoviewer

Step 2

 * Allow mediahandlers in core to know about projections and stereoscopy formats
 * Add an attribute to the thumbnails used in wiki pages
 * for a panorama
 * for a stereoscopy thumbnail
 * Patch for core: https://gerrit.wikimedia.org/r/c/mediawiki/core/+/856040

Step 3
Bring it together and have Panoviewer read the metadata on a wikipage and allow a user to load and open the interactive widget
 * Demo video: https://www.youtube.com/watch?v=8547hM-AIq0

Lessons learned

 * MediaHandling of core is file extension based, not capability based. We should really split MediaRendering off from MediaHandler, so that the handler can use a renderer conditional on the metadata of the file.
 * MultimediaViewer is also file extension based. It cannot have multiple handlers for 1 file type either.
 * This does not do tile rendering for very high resolution panoramas. This is a sad limitation.
 * Thumbnailing for these kinds of resources is hard as you need to warp them and read lots of metadata interpretation. So for now the thumbnails remain the warped originals.
 * Idea (very long term) by Ladsgroup. Create a new webp/avif file format with low and high resolutions thumbnails and tiles for the high resolution projected image. Then the thumbnailer won't have to do warping, and we can stream the tiles without having a server to do tiling and serve up the tiling
 * Standards and naming for all these projections and stereoscopy is all over the place. Hard to figure out.
 * There are a lot of experimental libraries for all kinds of things on the web, but few that handle almost all of the formats.

Thank you

 * Husky, Multichill, Siebrand, Spinster for organizing
 * Dschwen, Daanvr and Ladsgroup for inspiration

See also:

 * T138933, T70719, T151451, T150624, T150640
 * Patch to add 360 video to TimedMediaHandler: https://gerrit.wikimedia.org/r/c/mediawiki/extensions/TimedMediaHandler/+/787066
 * Demo video: https://twitter.com/dj_hartman/status/1520527888365330436