Orthographiassions (merci Thierry)
This commit is contained in:
parent
504dab4e9b
commit
2230488ad5
|
@ -2,7 +2,7 @@
|
||||||
Comme dit précédemment, le programme se décompose en un côté serveur et un côté
|
Comme dit précédemment, le programme se décompose en un côté serveur et un côté
|
||||||
client. Le cas du \emph{streaming} sera traité à part (dans la partie
|
client. Le cas du \emph{streaming} sera traité à part (dans la partie
|
||||||
\ref{streaming}, puisqu'il est à cheval sur le client et le serveur) et nous ne
|
\ref{streaming}, puisqu'il est à cheval sur le client et le serveur) et nous ne
|
||||||
parerons ici que du serveur, puis du code client.
|
parlerons ici que du serveur, puis du code client.
|
||||||
|
|
||||||
\paragraph{}
|
\paragraph{}
|
||||||
Voici une simplification de l'arborescence de la version de
|
Voici une simplification de l'arborescence de la version de
|
||||||
|
@ -202,7 +202,7 @@ Les \emph{packages} que nous utilisons sont les suivants :
|
||||||
pages HTML
|
pages HTML
|
||||||
\item \emph{pg} : une librairie permettant la connexion à la base de données
|
\item \emph{pg} : une librairie permettant la connexion à la base de données
|
||||||
\item \emph{body-parser} : une librairie permettant de traiter simplement
|
\item \emph{body-parser} : une librairie permettant de traiter simplement
|
||||||
les paramètres passés aux reqûetes
|
les paramètres passés aux requêtes
|
||||||
\item \emph{cookie-parser} et \emph{cookie-session} : une librairie gérant
|
\item \emph{cookie-parser} et \emph{cookie-session} : une librairie gérant
|
||||||
les sessions sous forme de cookies
|
les sessions sous forme de cookies
|
||||||
\item \emph{socket.io} : une librairie permettant d'utiliser facilement les
|
\item \emph{socket.io} : une librairie permettant d'utiliser facilement les
|
||||||
|
@ -307,15 +307,16 @@ faites comme il faut.
|
||||||
|
|
||||||
\subsubsection{Coin-creator}
|
\subsubsection{Coin-creator}
|
||||||
C'est une interface qui permet de créer des pièces : en cliquant sur une paroi,
|
C'est une interface qui permet de créer des pièces : en cliquant sur une paroi,
|
||||||
un pièce apparait, et en cliquant sur une pièce, elle disparaît. Cette
|
une pièce apparaît, et en cliquant sur une pièce, elle disparaît. Cette
|
||||||
interface possède un bouton qui permet d'envoyer un mail contenant les données
|
interface possède un bouton qui permet d'envoyer un mail contenant les données
|
||||||
des pièces crées au format JSON.
|
des pièces créées au format JSON.
|
||||||
|
|
||||||
\subsubsection{Coin-editor}
|
\subsubsection{Coin-editor}
|
||||||
Cette interface permet d'étier les pièces : elle est similaire à la précédente,
|
Cette interface permet d'éditer les pièces : elle est similaire à la
|
||||||
mais expose une variable globale lors du clic sur une pièce qui permet de
|
précédente, mais expose une variable globale lors du clic sur une pièce qui
|
||||||
déplacer celle-ci. Elle sert à corriger les bugs potentiels introduits par
|
permet de déplacer celle-ci. Elle sert à corriger les bugs potentiels
|
||||||
l'interface précédente, notamment lorsqu'une pièce traverse une paroi.
|
introduits par l'interface précédente, notamment lorsqu'une pièce traverse une
|
||||||
|
paroi.
|
||||||
|
|
||||||
\subsubsection{Coin-checker}
|
\subsubsection{Coin-checker}
|
||||||
Elle permet de chercher toutes les pièces d'une scène, au cas où certaines se
|
Elle permet de chercher toutes les pièces d'une scène, au cas où certaines se
|
||||||
|
|
|
@ -39,7 +39,7 @@ une caméra, avec son centre optique et son plan image.
|
||||||
\end{figure}
|
\end{figure}
|
||||||
Cette façon d'afficher une recommandation a l'avantage d'être simple, de ne pas
|
Cette façon d'afficher une recommandation a l'avantage d'être simple, de ne pas
|
||||||
beaucoup masquer le reste des modèles et suggère assez bien l'idée d'un
|
beaucoup masquer le reste des modèles et suggère assez bien l'idée d'un
|
||||||
\emph{point de vue recommandé}, mais elle a l'inconvéniant d'être ambiguë à
|
\emph{point de vue recommandé}, mais elle a l'inconvénient d'être ambiguë à
|
||||||
cause de la perspective (dans cette image, il peut être difficile de savoir si
|
cause de la perspective (dans cette image, il peut être difficile de savoir si
|
||||||
le point de vue et vers le modèle ou vers nous).
|
le point de vue et vers le modèle ou vers nous).
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ web. Lorsque l'on regarde une video, on a la barre de \emph{seeking} en bas et
|
||||||
passer le curseur sur cette barre affiche l'image de la vidéo à l'instant visé.
|
passer le curseur sur cette barre affiche l'image de la vidéo à l'instant visé.
|
||||||
Nous avons simplement adapté cette techniques à nos recommandations : lorsque
|
Nous avons simplement adapté cette techniques à nos recommandations : lorsque
|
||||||
le curseur survole une recommandation, une prévisualisation est affichée dans
|
le curseur survole une recommandation, une prévisualisation est affichée dans
|
||||||
une petite boite au voisinage du curseur.
|
une petite boîte au voisinage du curseur.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
\centering
|
\centering
|
||||||
|
@ -114,7 +114,7 @@ une petite boite au voisinage du curseur.
|
||||||
|
|
||||||
\subsubsection{Au clic}
|
\subsubsection{Au clic}
|
||||||
\indent Lors d'un clic sur une recommandation, la caméra suit un mouvement
|
\indent Lors d'un clic sur une recommandation, la caméra suit un mouvement
|
||||||
fluide jusqu'au point de vue recommandé. La trajectoire est définié par un
|
fluide jusqu'au point de vue recommandé. La trajectoire est définie par un
|
||||||
polynôme interpolant tel que :
|
polynôme interpolant tel que :
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item la position initiale est la position de la caméra
|
\item la position initiale est la position de la caméra
|
||||||
|
@ -125,11 +125,11 @@ polynôme interpolant tel que :
|
||||||
|
|
||||||
\paragraph{}
|
\paragraph{}
|
||||||
Ce mouvement fluide est là pour ne pas perturber l'utilisateur qui pourrait
|
Ce mouvement fluide est là pour ne pas perturber l'utilisateur qui pourrait
|
||||||
\emph{se perde} si jamais il était téléporté
|
\emph{se perdre} si jamais il était téléporté.
|
||||||
|
|
||||||
\paragraph{}
|
\paragraph{}
|
||||||
De plus, les recommandations se comportent comme des liens hypertextes : elles
|
De plus, les recommandations se comportent comme des liens hypertextes : elles
|
||||||
sont bleues si elles n'ont jamais été clicées, et deviennent violettes si
|
sont bleues si elles n'ont jamais été cliquées, et deviennent violettes si
|
||||||
l'utilisateur les a déjà consommées. Ceci est fait pour qu'un utilisateur
|
l'utilisateur les a déjà consommées. Ceci est fait pour qu'un utilisateur
|
||||||
puisse savoir par où il est passé, et ce qui lui reste encore à visiter.
|
puisse savoir par où il est passé, et ce qui lui reste encore à visiter.
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ présents.
|
||||||
définie. Cliquer sur ce bouton ramène la caméra à sa position initiale.
|
définie. Cliquer sur ce bouton ramène la caméra à sa position initiale.
|
||||||
|
|
||||||
\item \emph{Previous} : à chaque clic sur une recommandation, les positions
|
\item \emph{Previous} : à chaque clic sur une recommandation, les positions
|
||||||
intiales et finales sont sauvegardées. Cliquer sur ce bouton ramène à
|
intiale et finale sont sauvegardées. Cliquer sur ce bouton ramène à
|
||||||
la position précédente.
|
la position précédente.
|
||||||
|
|
||||||
\item \emph{Next} : cliquer sur ce bouton ramène à la position suivante.
|
\item \emph{Next} : cliquer sur ce bouton ramène à la position suivante.
|
||||||
|
|
|
@ -5,11 +5,11 @@ ainsi précharger les parties du modèle qui vont être vues. Cette section
|
||||||
présente le travail qui a été réalisé dans le domaine du chargement de modèle.
|
présente le travail qui a été réalisé dans le domaine du chargement de modèle.
|
||||||
|
|
||||||
\paragraph{}
|
\paragraph{}
|
||||||
Évidemment, cette partie est celle qui comment après la fin de la première
|
Évidemment, cette partie est celle qui commence après la fin de la première
|
||||||
partie : il faut nous seulement connaître l'influence des recommandations sur
|
partie : il faut non seulement connaître l'influence des recommandations sur
|
||||||
l'utilisateur, ensuite être capable de prévoir le comportement de
|
l'utilisateur, ensuite être capable de prévoir le comportement de
|
||||||
l'utilisateur, et enfin s'en servir pour précharger les bonnes parties du
|
l'utilisateur, et enfin s'en servir pour précharger les bonnes parties du
|
||||||
modèles. Tout ceci n'étant pas encore possible, le travail qui a été fait est
|
modèle. Tout ceci n'étant pas encore possible, le travail qui a été fait est
|
||||||
nettement plus simpliste : il n'y aura aucune prévision du comportement ici.
|
nettement plus simpliste : il n'y aura aucune prévision du comportement ici.
|
||||||
|
|
||||||
\section*{Introduction}
|
\section*{Introduction}
|
||||||
|
@ -17,11 +17,11 @@ Notre problématique ici est de transférer des modèles 3D sur le réseau. Les
|
||||||
modèles sont stockés sur le serveur au format \texttt{.obj} et sont constitués
|
modèles sont stockés sur le serveur au format \texttt{.obj} et sont constitués
|
||||||
:
|
:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item des materiaux (\texttt{usemtl}) : cela définit le matériau utilisé
|
\item des matériaux (\texttt{usemtl}) : cela définit le matériau utilisé
|
||||||
pour les faces qui vont suivre
|
pour les faces qui vont suivre
|
||||||
\item de sommets (\emph{vertices}) : des points 3D
|
\item de sommets (\emph{vertices}) : des points 3D
|
||||||
\item de coordonnées de textures : des points en 2D qui référence un point
|
\item de coordonnées de textures : des points en 2D qui référencent un
|
||||||
d'une image
|
point d'une image
|
||||||
\item de normales : des vecteurs en 3D
|
\item de normales : des vecteurs en 3D
|
||||||
\item de faces : une liste de 3 ou 4 sommets (représentés par leurs
|
\item de faces : une liste de 3 ou 4 sommets (représentés par leurs
|
||||||
indices), avec éventuellement leurs coordonnées de textures et/ou
|
indices), avec éventuellement leurs coordonnées de textures et/ou
|
||||||
|
@ -47,7 +47,7 @@ répertoire \texttt{geo} pour le serveur et le fichier
|
||||||
|
|
||||||
\subsection{Serveur}
|
\subsection{Serveur}
|
||||||
Nous avons rappelé que les modèles au format \texttt{.obj} contenaient
|
Nous avons rappelé que les modèles au format \texttt{.obj} contenaient
|
||||||
plusieurs \emph{sous-modèles} avec des matériau différents, le serveur connait
|
plusieurs \emph{sous-modèles} avec des matériaux différents, le serveur connait
|
||||||
les classes suivantes :
|
les classes suivantes :
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item la classe \texttt{Mesh}, qui représente un \emph{sous-modèle}, avec
|
\item la classe \texttt{Mesh}, qui représente un \emph{sous-modèle}, avec
|
||||||
|
@ -118,11 +118,11 @@ fonctionnait ainsi :
|
||||||
|
|
||||||
\paragraph{}
|
\paragraph{}
|
||||||
Le serveur envoyait alors les éléments dans l'ordre dans lequel ils étaient
|
Le serveur envoyait alors les éléments dans l'ordre dans lequel ils étaient
|
||||||
présents dans le fichier du modèle 3D. Le gros inconvéniant de cette méthode
|
présents dans le fichier du modèle 3D. Le gros inconvénient de cette méthode
|
||||||
est que souvent, les sommets sont présents au début du fichier, et les faces
|
est que souvent, les sommets sont présents au début du fichier, et les faces
|
||||||
vers la fin : nous recevons donc des informations de sommets au début qui ne
|
vers la fin : nous recevons donc des informations de sommets au début qui ne
|
||||||
nous permettent rien d'afficher, puis toutes les faces d'un coup, ce qui fait
|
nous permettent rien d'afficher, puis toutes les faces d'un coup, ce qui fait
|
||||||
que le streaming n'est pas aussi progressif que l'on souhaiterais.
|
que le streaming n'est pas aussi progressif que l'on souhaiterait.
|
||||||
|
|
||||||
\paragraph{}
|
\paragraph{}
|
||||||
Dans le cas d'un modèle sans coordonnées de textures et sans normales, la seule
|
Dans le cas d'un modèle sans coordonnées de textures et sans normales, la seule
|
||||||
|
@ -217,7 +217,7 @@ particulier ici.}. On évite ainsi d'envoyer les faces du modèle qui sont
|
||||||
derrière la caméra et que l'utilisateur ne voit pas.
|
derrière la caméra et que l'utilisateur ne voit pas.
|
||||||
|
|
||||||
\paragraph{}
|
\paragraph{}
|
||||||
Bien sûr, si il n'y a plus de faces dans le \emph{frustum} de la caméra, on va
|
Bien sûr, s'il n'y a plus de faces dans le \emph{frustum} de la caméra, on va
|
||||||
envoyer les faces en suivant la méthode de la section précédente.
|
envoyer les faces en suivant la méthode de la section précédente.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
|
|
Loading…
Reference in New Issue