Relight is a library to create and view (on the web) relightable images (RTI),
It supports Polinomial Texture Mapping (PTM), Hemispherical Harmonics (HSH) along with a new Principal Component Analysis (PCA) + Radial Basis Function (RBF) based algorithm with better fidelity (for the same cost and space).
It also supports RTI (and image) streamed tiled viewing based on DeepZoom, Google, Zoomify, IIP formats.
An online Web3d presentation of the paper A Compact Representation of Relightable Images for the Web presented at the Web3D 2018 conference might be of help
The package is composed of:
Bottom of a bottle
Courtesy of Musee d'Histoire de Marseille
PTM, HSH, RBF comparison
Courtesy of Palazzo Blu
HSH, RBF, YCC comparison
Courtesy of Palazzo Blu
Latest release for Linux, Windows, MacOS is available here: https://github.com/cnr-isti-vclab/relight/releases
Source code is available at: https://github.com/cnr-isti-vclab/relight
18 planes, or 9 using the LPTM where only the luminance change
27 planes, (9 per channel)
Described in Discrete Modal Decomposition for surface appearance modelling and rendering, it is not supported.
Variable number of planes using a sampled basis and radial basis function interpolation.
Named as RBF<nplanes> such as RBF18.
Same algorithm as before, but using the Jpeg color space separately for each channel, resulting in a better (adjustable) chroma fidelity. YCC<nluma><nchroma><nchroma> such as YCC1044 for 10 luminance planes and 4+4 for the chroma.
Bilinear interpolation replace radial basis function in the previous algorithms. Especially good for uneven sampling of the light directions.
relight is a Qt command-line program to process a stack of photos into an RTI.
Usage: relight [-frqpsScCey] <input folder> [output folder] input folder containing a .lp with number of photos and light directions optional output folder (default is ./) -b: rbf(default), ptm, lptm, hsh, yrbf, bilinear -p : number of planes (default: 9) -y : number of Y planes in YCC -r : side of the basis bilinear grid (default 8) -q : jpeg quality (default: 90) -s : sampling rate for pca (default 4) -S : sigma in rgf gaussian interpolation default 0.125 (~100 img) -C : apply chroma subsampling -e : evaluate reconstruction error (default: false)
relight can also be used to convert .ptm files into relight format:
relight [-q] <file.ptm> [output folder] -qlibvips can be used to [generate deepzoom, zoomify and google pyramidal formats](http://libvips.blogspot.com/2013/03/making-deepzoom-zoomify-and-google-maps.html), scripts can be found in the directory test.: jpeg quality (default: 90)
relight.js is a small Javascript library to render the RTI on a WebGL canvas. It support a variety of tiled formats.
To inizialize the library:
var relight = new Relight(canvas, options);
Canvas is either a css selector or the canvas object
Options is an object with the following keys:
Members:
Methods:
It's an RTI (and images) viewer based on the relight.js library, and requires a .css file and a set of icons in the skin directory.
<!doctype html> <html> <head> <link rel="stylesheet" href="relight.css"> <style> html, body, .relight { width:100%; height:100%; padding:0px; margin:0px; } </style> <script src="js/hammer.min.js"></script> <script src="relight-viewer.min.js"></script> </head> <body> <div class="relight"></div> <script> var Relight = new RelightViewer('.relight', { url: "rti-folder", layout: "deepzoom" }); </script> </body> </html>
It takes the relight.js options and additionally:
Relight format is a directory containing an info.json file and a few images.
The JSON structure contains the following fields:
Each image contains 3 coefficient planes
Scale and bias will be applied to the texture coefficients (from [0, 1]) as: (c - bias)*scale