\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.

We start by showing how we prepare 3D data into a format that complies with DASH and that stores enough metadata to enable a client to perform efficient streaming: we partition the scene into a $k$-d tree and we further segment 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, and we encode all the acquired metadata 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 a DASH-3D client that performs 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 scores 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 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 all those 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{}
