We are continuously working on enhancing the user experience for looking at and navigating between photos in the viewer. Lately we have introduced two new concepts which bring both eye-candy and usefulness.
Maybe you have noticed a subtle change recently in the way the camera moves through space when playing or dragging within a sequence. Whereas the camera previously moved on a straight line between two camera positions it now moves along a smooth path. You can think of the smooth path as a gentle roller coaster track. The turns and hills must be kept smooth, otherwise the wagon would crash. We are keeping the camera from crashing by smoothing its path. While roller coaster rides in general are very pleasant and fun, we think that roller coaster loops are dangerous, so we try to stay away from them when playing sequences.
Under the hood
Linear interpolation, which was used before, calculates a straight line between two points. This causes discontinuous jumps at the camera positions when playing or dragging because the movement along one straight line is transitioned instantaneously at a camera position to another straight line with another direction.
Spline interpolation, on the the other hand, uses more than two points to calculate piecewise paths that are smooth at the control pionts, in our case the camera positions. We are using a Centripetal Catmull-Rom spline. This form of spline avoids self-intersections while creating a path that follows tightly through the control points which suits our purpose of showing a non-distorted three-dimensional view of the reconstructed photos.
Take a look at the video below of an area in Malmö reconstructed using our open source Structure from Motion library OpenSfM to get a feeling for the difference:
Notice the sharp corners when the linear curve type is selected and compare it to the smoothed path when the spline curve type is chosen. Also notice the smooth turn around the corner with seamless transitions between the images when playing.
Dragging back and forth within a sequence has been possible since we first released the WebGL viewer. Now we have also added support for stitched panorama dragging. Wherever panorama photos (photos taken at the same spot with different points of view and sufficient overlap) have been uploaded it is now possible to drag horizontally to look left or right. When dragging has been initiated the cursor will indicate the possible rotation directions. They are either left, right or both. The smoothed path is used for panorama dragging as well. Take a look at the video below (we have enlarged the cursor arrows for the demo):
Notice how the cursor changes when the rightmost photo of this panorama is reached. From there one can only rotate to the left, not to the right. The panorama dragging is made across sequences. This means that if multiple panoramas are taken at the same spot they will be stitched together like in the video. Imagine dragging through a panorama going from snowy winter, passing spring and sunny summer and ending in colorful autumn.
So go out and take new panoramas, upload them and try the panorama dragging!
Oscar & The Mapillary Team