\chapter{DASH-3D\label{d3}}

\minitoc{}
\newpage

\begin{figure}[th]
    \centering
    \includegraphics[width=\textwidth]{assets/dash-3d/bigpicture.png}
    \caption{%
        A subdivided 3D scene with a viewport and regions delimited with red edges.
        In white, the regions that are outside the field of view of the camera; in green, the regions inside the field of view of the camera.\label{d3:big-picture}
    }
\end{figure}

Dynamic Adaptive Streaming over HTTP (DASH) is now a widely deployed standard for video streaming, and even though video streaming and 3D streaming are different problems, many of DASH features can inspire us for 3D streaming.
In this chapter, we present the most important contribution of this thesis: adapting DASH to 3D streaming.

First, we show how to prepare 3D data into a format that complies with DASH data organisation, and we store enough metadata to enable a client to perform efficient streaming.
The data preparation consists in partitioning the scene into spatially coherent cells and segmenting each cell into chunks with a fixed number of faces, which are sorted by area so that faces of a different level of detail are not grouped together.
We also export each texture at different resolution.
We encode the metadata that describes the data organisation into a 3D version of the Media Presentation Description (MPD) that DASH uses for video.
All this prepared content is then stored on a simple static HTTP server: a clients can request the content without any need for computation on the server side, allowing a server to support an arbitrary number of clients.
% Namely, we store in the metadata the coordinates of the cells of the $k$-d tree, the areas of geometry chunks, and the average colors of textures.

We then propose DASH-3D clients that are viewpoint aware: they perform frustum culling to eliminate cells outside the viewing volume of the camera (as shown in Figure~\ref{d3:big-picture}).
We define utility metrics to give a score to each chunk of data, be it geometry or texture, based on offline information that is given in the MPD, and online information that the client is able to compute, such as view parameters, user interaction or bandwidth measurements.
We also define streaming policies that rely on those utilities in order for the client to determine which chunks need to be downloaded.
We finally evaluate these system parameters under different bandwidth setups and compare our streaming policies.

\newpage

\input{dash-3d/introduction}
\resetstyle{}

\input{dash-3d/content-preparation}
\resetstyle{}

\input{dash-3d/client}
\resetstyle{}

\input{dash-3d/evaluation}
\resetstyle{}

\input{dash-3d/conclusion}
\resetstyle{}
