diff --git a/assets/state-of-the-art/video/youtube-multiresolution.png b/assets/introduction/youtube-multiresolution.png similarity index 100% rename from assets/state-of-the-art/video/youtube-multiresolution.png rename to assets/introduction/youtube-multiresolution.png diff --git a/src/config.sty b/src/config.sty index 9617933..10da8ef 100644 --- a/src/config.sty +++ b/src/config.sty @@ -1,7 +1,13 @@ \usepackage{multirow} +\usepackage[colorlinks = true, + linkcolor = blue, + urlcolor = blue, + citecolor = blue, +anchorcolor = blue]{hyperref} \usepackage{amssymb} \usepackage{xspace} \usepackage{url} +\usepackage{lmodern} \usepackage{algorithm2e} \usepackage{datatool} \usepackage{pgfplots} @@ -9,17 +15,37 @@ \usepackage{subcaption} \usepackage{todonotes} \usepackage{booktabs} +\usepackage{minitoc} + +\usepackage[chapter,nottoc]{tocbibind} \usepackage{setspace} \onehalfspacing{} + \usepackage{tikz} +\usetikzlibrary{arrows.meta} \newcommand{\tikzwidth}{0.95\columnwidth} \newcommand{\tikzheight}{0.7\columnwidth} -\usepackage[colorlinks = true, - linkcolor = blue, - urlcolor = blue, - citecolor = blue, -anchorcolor = blue]{hyperref} +\addtokomafont{chapterprefix}{\raggedleft} +\addtokomafont{chapter}{\fontsize{30}{38}\selectfont} +\addtokomafont{section}{\huge} +\addtokomafont{subsection}{\Large} +\addtokomafont{subsubsection}{\large} + +\renewcommand{\raggedchapter}{\raggedleft} +\renewcommand*{\chapterformat}{% +\mbox{\scalebox{1.5}{\chapappifchapterprefix{\nobreakspace}}% +\scalebox{4}{\color{LightBlue}\thechapter\autodot}\enskip}} + +\makeatletter +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\makeatother \usepackage[ED=MITT-ImgInf, Ets=INP]{tlsflyleaf} diff --git a/src/dash-3d/main.tex b/src/dash-3d/main.tex index 0f45f4c..4939f70 100644 --- a/src/dash-3d/main.tex +++ b/src/dash-3d/main.tex @@ -1,6 +1,9 @@ \chapter{DASH-3D} -\begin{figure}[ht] +\minitoc{} +\newpage + +\begin{figure}[th] \centering \includegraphics[width=\textwidth]{assets/dash-3d/bigpicture.png} \caption{% diff --git a/src/introduction/main.tex b/src/introduction/main.tex new file mode 100644 index 0000000..c64ea4e --- /dev/null +++ b/src/introduction/main.tex @@ -0,0 +1,4 @@ +\chapter{Introduction} + +\input{introduction/video-vs-3d} +\resetstyle{} diff --git a/src/introduction/video-vs-3d.tex b/src/introduction/video-vs-3d.tex new file mode 100644 index 0000000..15ee833 --- /dev/null +++ b/src/introduction/video-vs-3d.tex @@ -0,0 +1,127 @@ +\fresh{} + +\section{Similarities and differences between video and 3D} + +Despite what one may think, the video streaming scenario and the 3D streaming one share many similarities: at a higher level of abstraction, they are both systems that allow a user to access remote content without having to wait until everything is loaded. +Analyzing the similarities and the differences between the video and the 3D scenarios as well as having knowledge about video streaming litterature is\todo{is key or are key?} key to developing an efficient 3D streaming system. + +\subsection{Data persistence} + +One of the main differences between video and 3D streaming is the persistence of data. +In video streaming, only one second of video is required at a time. +Of course, most of video streaming services prefetch some future chunks, and keep in cache some previous ones. + +In 3D streaming, each chunk is part of a scene, and not only many chunks are required to perform a satisfying rendering for the user, but it is impossible to know in advance what chunks are necessary to perform a rendering. + +\subsection{Multiresolution} + +All the major video streaming platforms support multiresolution streaming. +This means that a client can choose the resolution at which the user requests the content. +It can be chosen directly by the user or automatically determined by analysing the available resources (size of the screen, downoading bandwidth, device performances, etc\ldots) + +\begin{figure}[th] + \centering + \includegraphics[width=\textwidth]{assets/introduction/youtube-multiresolution.png} + \caption{The different resolutions available for a Youtube video} +\end{figure} + +In the same way, the recent works in 3D streaming have proposed many ways to progressively streaming 3D models, allowing the user to have a low resolution without having to wait, and being able to interact with the model while the details are being downloaded. + +\subsection{Media types} + +Just like a video, a 3D scene is composed of different types of media. +In video, those media typically are images, sounds, and eventually subtitles, whereas in 3D, those media typically are geometry or textures. +In both cases, an algorithm for content streaming has to acknowledge those different media types and manage them correctly. + +In video streaming, most of the data (in terms of bytes) is used for images. +Thus, the most important thing a video streaming system should do is optimize the image streaming. +That's why, on a video on Youtube for example, there may be 6 resolutions for images (144p, 240p, 320p, 480p, 720p and 1080p) but having only 2 resolutions for sound. +This is one of the main differences between video and 3D streaming: in a 3D scene, the geometry and the texture size are approximately the same, and work to improve the streaming needs to be performed on both. + +\subsection{Chunks of data} + +In order to be able to perform streaming, data needs to be segmented in order for a client to be able to request chunks of data and display it to the user while requesting another chunk. +In video streaming, data chunks typically consist in a few seconds of video. +In mesh streaming, it can either by segmenting faces in chunks, with a certain number of faces per chunk, or, in the case of progressive meshes, it can be segmented in a base mesh and different chunks encoding the data needed to increase the resolution of the previous level of detail. + +\subsection{Interaction} + +The ways of interacting with the content is probably the most important difference between video and 3D. +In a video interface, there is only one degree of freedom: the time. +The only things a user can do is watch the video (without interacting), pause or resume it, or jump to another moment in the video. +Even though these interactions seem easy to handle, giving the best possible experience to the user is already challenging. For example, to perform these few actions, Youtube gives the user multiple options. + +\begin{itemize} + + \item To pause or resume a video, the user can: + \begin{itemize} + \item click the video; + \item press the \texttt{K} key; + \item press the space key if the video is focused by the browser. + \end{itemize} + + \item To navigate to another moment of the video, the user can: + \begin{itemize} + \item click the timeline of the video where he wants; + \item press the left arrow key to move 5 seconds backwards; + \item press the right arrow key to move 5 seconds forwards; + \item press the \texttt{J} key to move 10 seconds backwards; + \item press the \texttt{L} key to move 10 seconds forwards; + \item press one of the number key (on the first row of the keyoard, below the function keys) to move the corresponding decile of the video. + \end{itemize} + +\end{itemize} + +Those interactions are different if the user is using a mobile device. + +\begin{itemize} + \item To pause a video, the user must touch the screen once to make the HUD appear and once on the pause button at the center of the screen. + \item To resume a video, the user must touch the play button at the center of the screen. + \item To navigate to another moment of the video, the user can: + \begin{itemize} + \item double touch the left of the screen to move 5 seconds backwards; + \item double touch the right of the screen to move 5 seconds forwards. + \end{itemize} +\end{itemize} + +When interacting with a 3D model, there are many approches. +Some interfaces mimic the video scenario, where the only variable is the time and the user has no control on the camera. +These interfaces are not interactive, and can be frustrating to the user if he does not feel free. + +Some other interfaces add 2 degrees of freedom to the previous one: the user does not control the position of the camera but he can control the angle. This mimics the scenario of the 360 video. + +Finally, most of the other interfaces give at least 5 degrees of freedom to the user: 3 being the coordinates of the position of the camera, and 2 being the angle (assuming the up vector is unchangeable, some interfaces might allow that giving a sixth degree of freedom). + +\subsection{Relationship between interface, interaction and streaming} + +In both video and 3D streaming, streaming affects the interaction. +For example, in a video streaming scenario, if a user sees that the video is fully loaded, he might start moving around on the timeline, but if he sees that the streaming is just enough to not stall, he would most likely stay peaceful and just watch the video. +If the streaming stalls for too long, the user migth seek somewhere else hoping for the video to resume, or totally give up and leave the video. +The same types of behaviour occur in 3D streaming, if a user is somewhere in a scene, and sees more data appearing, he might wait until enough data has arrived, but if he sees nothing happens, he would most likely leave to look for data somewhere else. + +Those examples show how streaming can affect the interaction, but the interaction also affect the streaming. +In a video streaming scenario, if a user is watching peacefully without interacting, the system just has to request the next chunks of video and display them. +However, if a user starts seeking at a different time of the streaming, the streaming would most likely stall until the system is able to gather the data it needs to resume the video. +Just like in the video setup, the way a user navigates in a networked virtual environment affects the streaming. +Moving slowly allows the system to collect and display data to the user, whereas moving frenetically puts more pressure on the streaming: the data that the system requested might be obsolete when the response arrives. + +Morevoer, the interface and the way elements are displayed to the user also impacts his behaviour. +A streaming system can use this effect to its users benefit by providing feedback on the streaming to the user via the interace. +For example, on YouTube, the buffered portion of the video is displayed in light grey on the timeline, whereas the portion that remains to be downloaded is displayed in dark grey. +A user is more likely to click on the light grey part of the timeline that on the dark grey part, preventing the streaming from stalling. + +\begin{figure}[th] + \centering + \begin{tikzpicture} + \node (S) at (0, 0) [minimum width=1.5cm,minimum height=0.5cm] {}; + \node (I) at (-1.5, -1.5) [minimum width=1.5cm,minimum height=0.5cm] {}; + \node (U) at (1.5, -1.5) [minimum width=1.5cm,minimum height=0.5cm] {}; + \node at (S) {Streaming}; + \node at (I) {Interface}; + \node at (U) {User}; + \draw[{Latex[length=3mm]}-{Latex[length=3mm]}] (S) -- (I); + \draw[{Latex[length=3mm]}-{Latex[length=3mm]}] (S) -- (U); + \draw[{Latex[length=3mm]}-{Latex[length=3mm]}] (I) -- (U); + + \end{tikzpicture} +\end{figure} diff --git a/src/main.tex b/src/main.tex index 033c86f..787104b 100644 --- a/src/main.tex +++ b/src/main.tex @@ -1,4 +1,9 @@ -\documentclass{book} +\documentclass[ +bibliography=totoc, +headings=big, +captions=tableheading, +chapterprefix=true% like in standard class "report" +]{scrbook} \usepackage{commands} \usepackage{listings} @@ -7,6 +12,8 @@ \begin{document} +\frontmatter + \listoftodos{} \vspace{2cm} @@ -20,11 +27,13 @@ Text that was freshly written will be in this color \resetstyle{} \makeflyleaf{} + +\dominitoc{} \tableofcontents + \input{plan} \bibliographystyle{plain} \bibliography{src/bib.bib} \end{document} - diff --git a/src/plan.tex b/src/plan.tex index 6d252ad..ff8f10c 100644 --- a/src/plan.tex +++ b/src/plan.tex @@ -1,6 +1,11 @@ +\input{introduction/main} +\resetstyle{} + \input{state-of-the-art/main} \resetstyle{} +\mainmatter{} + \input{preliminary-work/main} \resetstyle{} diff --git a/src/preliminary-work/bookmarks-impact.tex b/src/preliminary-work/bookmarks-impact.tex index c863ec5..082edc2 100644 --- a/src/preliminary-work/bookmarks-impact.tex +++ b/src/preliminary-work/bookmarks-impact.tex @@ -109,7 +109,7 @@ Table~\ref{bi:questions} shows the list of questions. \centering \begin{tabular}{lll} \toprule - & Questions & Answers \\ + & \textbf{Questions} & \textbf{Answers} \\ \midrule 1 & What was the difficulty level WITHOUT recommendation? & 3.04 / 5 $\pm0.31$ \\ 2 & What was the difficulty level WITH recommendation? & 2.15 / 5 $\pm0.30$ \\ diff --git a/src/preliminary-work/main.tex b/src/preliminary-work/main.tex index 9d01423..9fe16eb 100644 --- a/src/preliminary-work/main.tex +++ b/src/preliminary-work/main.tex @@ -1,4 +1,8 @@ \chapter{Preliminary work} + +\minitoc{} +\newpage + \newcommand{\NoReco}{\textsf{NoBM \xspace}} \newcommand{\Viewports}{\textsf{VP \xspace}} \newcommand{\Arrows}{\textsf{Ar \xspace}} diff --git a/src/state-of-the-art/video.tex b/src/state-of-the-art/video.tex index 9ed51ba..6b62c92 100644 --- a/src/state-of-the-art/video.tex +++ b/src/state-of-the-art/video.tex @@ -1,92 +1,6 @@ \fresh{} -\section{Video scenario} - -Despite what one may think, the video streaming scenario and the 3D streaming one share many similarities: at a higher level of abstraction, they are both systems that allow a user to access remote content without having to wait until everything is loaded. -Analyzing the similarities and the differences between the video and the 3D scenarios as well as having knowledge about video streaming litterature is\todo{is key or are key?} key to developing an efficient 3D streaming system. - -\subsection{Similarities and differences between video and 3D} - -\subsubsection{Data persistence} - -One of the main differences between video and 3D streaming is the persistence of data. -In video streaming, only one second of video is required at a time. -Of course, most of video streaming services will prefetch some future chunks, and keep in cache some previous ones. - -In 3D streaming, each chunk is part of a scene, and not only many chunks are required to perform a satisfying rendering for the user, but it is impossible to know in advance what chunks are necessary to perform a rendering. - -\subsubsection{Multiresolution} - -All the major video streaming platforms support multiresolution streaming. -This means that a client can choose the resolution at which the user will request the content. -It can be chosen directly by the user or automatically determined by analysing the available resources (size of the screen, downoading bandwidth, device performances, etc\ldots) - -\begin{figure}{ht} - \centering - \includegraphics[width=\textwidth]{assets/state-of-the-art/video/youtube-multiresolution.png} - \caption{The different resolutions available for a Youtube video} -\end{figure} - -In the same way, the recent works in 3D streaming have proposed many ways to progressively streaming 3D models, allowing the user to have a low resolution without having to wait, and being able to interact with the model while the details are being downloaded. - -\subsubsection{Media types} - -Just like a video, a 3D scene is composed of different types of media. -In video, those type will typically be images, sounds, and eventually subtitles, whereas in 3D, those types will typically be geometry or textures. -In both cases, an algorithm for content streaming will have to acknowledge those different media types and manage them correctly. - -In video streaming, most of the data (in terms of bytes) is used for images. -Thus, the most important thing a video streaming system should do is optimize the image streaming. -That's why, on a video on Youtube for example, there may be 6 resolutions for images (144p, 240p, 320p, 480p, 720p and 1080p) but having only 2 resolutions for sound. -This is one of the main differences between video and 3D streaming: in a 3D scene, the geometry and the texture size are approximately the same, and work to improve the streaming needs to be performed on both. - -\subsubsection{Interaction} - -The ways of interacting with the content is probably the most important difference between video and 3D. -In a video interface, there is only one degree of freedom: the time. -The only things a user can do is watch the video (without interacting), pause or resume it, or jump to another moment in the video. -Even though these interactions seem easy to handle, giving the best possible experience to the user is already challenging. For example, to perform these few actions, Youtube gives the user multiple options. - -\begin{itemize} - - \item To pause or resume a video, the user can: - \begin{itemize} - \item click the video; - \item press the \texttt{k} key; - \item press the space key if the video is focused by the browser. - \end{itemize} - - \item To navigate to another moment of the video, the user can: - \begin{itemize} - \item click the timeline of the video where he wants; - \item press the left arrow key to move 5 seconds backwards; - \item press the right arrow key to move 5 seconds forwards; - \item press the \texttt{j} key to move 10 seconds backwards; - \item press the \texttt{l} key to move 10 seconds forwards; - \item press one of the number key (on the first row of the keyoard, below the function keys) to move the corresponding decile of the video. - \end{itemize} - -\end{itemize} - -Those interactions are different if the user is using a mobile device. - -\begin{itemize} - \item To pause a video, the user must touch the screen once to make the HUD appear and once on the pause button at the center of the screen. - \item To resume a video, the user must touch the play button at the center of the screen. - \item To navigate to another moment of the video, the user can: - \begin{itemize} - \item double touch the left of the screen to move 5 seconds backwards; - \item double touch the right of the screen to move 5 seconds forwards. - \end{itemize} -\end{itemize} - -When interacting with a 3D model, there are many approches. -Some interfaces mimic the video scenario, where the only variable is the time and the user has no control on the camera. -These interfaces are not interactive, and can be frustrating to the user if he does not feel free. - -Some other interfaces will add 2 degrees of freedom to the previous one: the user will not control the position of the camera but he can control the angle. This mimics the scenario of the 360 video. - -Finally, most of the other interfaces will give at least 5 degrees of freedom to the user: 3 being the coordinates of the position of the camera, and 2 being the angle (assuming the up vector is unchangeable, some interfaces might allow that giving a sixth degree of freedom). +\section{Video} \subsection{DASH\@: the standard for video streaming} diff --git a/src/system-bookmarks/main.tex b/src/system-bookmarks/main.tex index 2ae0b08..0412ba3 100644 --- a/src/system-bookmarks/main.tex +++ b/src/system-bookmarks/main.tex @@ -1,5 +1,8 @@ \chapter{System bookmarks} +\minitoc{} +\newpage + \input{system-bookmarks/bookmark} \resetstyle{} diff --git a/tlsflyleaf/tlsflyleaf.sty b/tlsflyleaf/tlsflyleaf.sty index 62a42ec..754551a 100644 --- a/tlsflyleaf/tlsflyleaf.sty +++ b/tlsflyleaf/tlsflyleaf.sty @@ -11,7 +11,7 @@ % % % This work has the LPPL maintenance status `maintained'. -% +% % The Current Maintainer of this work is T. GREGOIRE % % @@ -51,7 +51,7 @@ % - Use \title instead of \FRtitle % v0.8: % - Add auto agreement with number (boss and referee by adding 's' if number greater than 1) -% - Add a fancy flyleaf load with the 'fancy' option +% - Add a fancy flyleaf load with the 'fancy' option % - Automatic position of the background figure (doesn't depend on the paper size) % - Rename \makepdg to \makeflyleaf % - Rename \pdg to \makepdg @@ -69,10 +69,10 @@ % ============================================================ % OPTION %emptysheetbefore => Insert two white pages (one sheet) before the flyleaf -\newif\if@emptysheetbefore\@emptysheetbeforefalse +\newif\if@emptysheetbefore\@emptysheetbeforefalse \DeclareOptionX{emptysheetbefore}[none]{\@emptysheetbeforetrue} %emptypageafter => insert one page after the flyleaf -\newif\if@emptypageafter\@emptypageafterfalse +\newif\if@emptypageafter\@emptypageafterfalse \DeclareOptionX{emptypageafter}[none]{\@emptypageaftertrue} %draft => Remove flyleaf page \newif\if@draft\@draftfalse @@ -721,7 +721,7 @@ \definecolor{pdgred}{rgb}{0.676,0.224,0.288} % ============================================================ -\newif\if@showCotutelle\@showCotutellefalse +\newif\if@showCotutelle\@showCotutellefalse % SIMPLE STRING \def\defencedate#1{\gdef\@defencedate{#1}} \def\lab#1{\gdef\@lab{#1}} @@ -790,42 +790,42 @@ \shadowrgb{0.4, 0.2, 0.2} \shadowtext{\textcolor{pdgred}{\fontfamily{pbk}\fontsize{1.5cm}{1.8cm}\selectfont{TH\`ESE}}} %%%%%%%%%%%%%%%%% - + \vspace*{1.4cm} %%%%% DOC %%%%% {\bfseries En vue de l'obtention du} \bigskip {\Large \bfseries DOCTORAT DE L'UNIVERSIT\'E DE TOULOUSE} - + %%%%% ETS & COTUTELLE %%%%% \bigskip \mbox{\bfseries D\'elivr\'e par :} \mbox{\textit{\@establishment}} \if@showCotutelle\mbox{Cotutelle internationale \@cotutelle}\fi - %%%%%%%%%%%%%%% - + %%%%%%%%%%%%%%% + \vfill - + \rule{\textwidth}{2.5pt} - + \vspace{-2ex} \rule{\textwidth}{1.2pt} {\bfseries \fontfamily{cmr} Pr\'esent\'ee et soutenue le} \textit{\@defencedate} {\bfseries \fontfamily{cmr} par :}\\ \settowidth{\RuleWidth}{\large\fontfamily{cmr}\textbf{\textsc{\@author}}} - + \smallskip {\large\fontfamily{cmr}\textbf{\textsc{\@author}}} - + \vspace*{-5pt} ~{\color{pdgred}\rule{1.2\RuleWidth}{0.8pt}} \vspace*{3pt} {\large\bf\@title} - + \rule{\textwidth}{1.2pt} - + \vspace{-1.6ex} \rule{\textwidth}{2.5pt} - + \vfill %%%% JURY %%%% {\bfseries JURY} @@ -840,17 +840,17 @@ } \fi %%%% JURY %%%% - + \vfill \rule{\textwidth}{1.2pt} {\raggedright\bfseries \'Ecole doctorale et sp\'ecialit\'e :\\} \hfill\parbox[t]{0.92\textwidth}{\textit{\@docschool}} \ifx\@doubleSpe\undefined\else{\raggedright\bfseries Double mention :\\} \hfill\parbox[t]{0.92\textwidth}{\textit{\@doubleSpe}}\fi - - + + {\raggedright\bfseries Unit\'e de Recherche :\\} \hfill\parbox[t]{0.92\textwidth}{\textit{\@lab}} - + \ifnumgreater{\@nboss}{1}{%TRUE {\raggedright\bfseries Directeur(s) de Th\`ese :\\} }{%FALSE @@ -876,7 +876,7 @@ } } } - + \ifnumgreater{\@nreferee}{1}{%TRUE {\raggedright\bfseries Rapporteurs :\\} }{%FALSE @@ -903,7 +903,7 @@ } } \vfill - + \end{center} \end{minipage} \vfill