Adaptive Streaming of 3D Scenes over MPEG-DASH

My bachelor's thesis on adaptive streaming of 3D scenes over MPEG-DASH.

Bachelor’s thesis for the Bachelor of Science in Computer Science at Hasselt University, 2020. Advisors: Hendrik Lievens, Maarten Wijnants, and Peter Quax.

3D scenes take a lot of storage, and devices such as VR headsets have little of it. The thesis builds a web-based client that streams a static scene with MPEG-DASH instead. The scene is described in X3D and split into segments, and meshes and textures are offered in several levels of detail, with meshes refined progressively. The client switches between scheduling algorithms based on user activity and network measurements, and these were tested in simulated networks.

The result: a stationary user is best served by the Slow Start configuration, which avoids objects that suddenly go missing. A moving user does better when missing resources are fetched as fast as possible, since a low-quality view resembles the target better than empty space.

The thesis was preliminary work for the paper Adaptive Web-Based VR Streaming of Multi-LoD 3D Scenes via Author-Provided Relevance Scores, co-authored with Hendrik Lievens.

The client repeats six steps to decide what to fetch next.

The six steps of retrieving a resource: gather metrics, decide strategies, calculate the frustum, find objects in view, calculate utilities and schedule the next request, then start again

A scene is served as a folder with a DASH manifest, scenes, textures, simple objects and progressive meshes:

manuscript.mpd
scenes/
  city/
    city.x3d
textures/
  wood.png/
    wood_64.png
    wood_128.png
    ...
  rock.jpeg/
    rock.jpeg
obj/
  castle/
    castle_low.x3d
    castle_high.x3d
  house/
    house.x3d
pop/
  bunny/
    level0.json
    level1.json
    ...

The client ranks what to fetch next with a utility algorithm and picks the request with a scheduling algorithm. These are the ones it implements:

Utility algorithms
UtilitySceneTexturePOP buffer
Defaultbandwidth / distance²bandwidth × countbandwidth / distance²
NetworkDefault, for the representation with the bandwidth closest to the observed bandwidthDefault, for the representation with the bandwidth closest to the observed bandwidthDefault, but bandwidth is replaced by the remaining bandwidth
Slow StartNetwork, using slow start metricsNetwork, using slow start metricsNetwork, using slow start metrics
Fast FillLowest bandwidth representation first, then DefaultLowest bandwidth representation first, then DefaultRemaining bandwidth
Scheduling algorithms
SchedulingPicksDepends on
DefaultThe highest utility
Mesh FirstThe highest utility, preferring meshes that are not loaded yet
Steady ExpansionThe highest qualityDefault utility and Default scheduling
Fast FillLowest quality first, then the highest, preferring meshes that are not loaded yetFast Fill utility
The client streaming the city scene along a test path. The last frames compare the result with the fully loaded scene (SSIM 0.99).

Top view of the city test scene