104 lines
6.0 KiB
TeX
104 lines
6.0 KiB
TeX
\chapter{Experimentations et Usages}
|
|
|
|
\section{Manuel d'utilisation}
|
|
|
|
\subsection{Préambule}
|
|
Notre application a été développé et pensé pour les versions de java supérieures ou égales à la version 8u281.
|
|
L'application fonctionne sur Linux avec une interface tournant sur les moteurs graphiques Xorg et Wayland et sur Windows 10.
|
|
Notez que pour linux, notre programme ne fonctionne que pour openjdk 8
|
|
|
|
Les archives jar de Jogl doivent se trouver dans le dossier lib selon le modèle ci-dessous (image)
|
|
|
|
\problem{Nous ne pouvons pas vous garantir si l'application fonctionne sur Mac OS X, aucun des membres de notre n'en possède un.}
|
|
|
|
\subsection{Lancement de l'application}
|
|
|
|
\info{Vous devez ouvrir un terminal à l'emplacement du dossier contenu le projet}
|
|
|
|
Pour lancer l'application, exécutez la commande \button{ant run}\\
|
|
|
|
Si vous souhaitez seulement compiler les fichiers sources dans le répertoire \textbf{bin/}, executez la commande: \button{ant compile}\\
|
|
|
|
Pour générer une archive jar dans le répertoire \textbf{build/}, executez la commande: \button{ant packaging}\\
|
|
|
|
Pour générer la javadoc dans le dossier \textbf{doc/}, executez la commande: \button{ant javadoc}\\
|
|
\info{Ouvrez ensuite le fichier \textbf{doc/index.html} ou \textbf{doc/overview-summary.html} dans un navigateur.}
|
|
|
|
Pour effectuer les tests, executez la commande: \button{ant tests}\\
|
|
\info{Un fichier \textbf{result.txt} sera générée affichant les résultats ainsi qu'une copie de la sortie standard.}
|
|
|
|
\subsection{Utilisation de l'interface utilisateur}
|
|
|
|
\paragraph{Une fois l'application lancée,} une fenêtre s'affiche (figure \ref{mainframe}). Elle contient une barre de navigation grâce à laquelle vous pouvez ouvrir soit une nouvelle génération, soit une fenêtre d'aide, ainsi qu'un onglet de génération.
|
|
\begin{figure}[h!]
|
|
\centering
|
|
\includegraphics[scale=0.5]{pics/MainFrameGUI.PNG}
|
|
\caption{Fenêtre principale}
|
|
\label{mainframe}
|
|
\end{figure}
|
|
Il ne vous reste ensuite plus qu'à renseigner votre axiome, ainsi que vos règles et de cliquer sur le bouton \button{Générer en 3D}. Le bouton \button{Close} permet de fermer l'onglet de génération et le bouton \button{Clear} de supprimer votre axiome et vos règles précédemment écrites. Grâce au compteur à droite, vous êtes en mesure de définir le nombre d'itérations de votre génération.
|
|
|
|
\info{Vous pouvez ouvrir de nouveaux onglets de génération grâce au bouton \button{Nouvelle génération} mais sachez qu'un maximum de trois fenêtres est accepté}
|
|
|
|
\subsection{Navigation dans l'interface graphique en 3D}
|
|
\label{sec:nav_3d}
|
|
|
|
Pour naviguer dans l'espace 3D, vous pouvez utiliser votre clavier ainsi que votre souris. \info{La souris n'est pas essentielle, elle permet de se déplacer facilement dans l'environnement mais un clavier suffit amplement}
|
|
|
|
\paragraph{Liste des commandes au clavier : }
|
|
\begin{itemize}
|
|
\item \textbf{Z} $\xrightarrow{} Avancer$
|
|
\item \textbf{S} $\xrightarrow{} Reculer$
|
|
\item \textbf{Q} $\xrightarrow{} Aller \ \grave{a} \ gauche$
|
|
\item \textbf{D} $\xrightarrow{} Aller \ \grave{a} \ droite$
|
|
\item \textbf{A} $\xrightarrow{} Tourner \ la \ cam\Acute{e}ra \ \grave{a} \ gauche$
|
|
\item \textbf{E} $\xrightarrow{} Tourner \ la \ cam\Acute{e}ra \ \grave{a} \ droite$
|
|
\item \textbf{W} $\xrightarrow{} Prendre \ de \ la \ hauteur$
|
|
\item \textbf{X} $\xrightarrow{} Perde \ de \ la \ hauteur$
|
|
\end{itemize}
|
|
\paragraph{Liste des commandes à la souris :}
|
|
\begin{itemize}
|
|
\item \textbf{Mollette Avant} $\xrightarrow{} Zommer$
|
|
\item \textbf{Mollette Arrière} $\xrightarrow{} D\Acute{e}zoomer$
|
|
\item \textbf{Clic Droit} $\xrightarrow{} Maintenir \ puis \ bouger \ la \ souris \ pour \ changer \ l'orientation \ de \ la \ cam\Acute{e}ra$
|
|
|
|
\end{itemize}
|
|
|
|
\problem{Vous ne pouvez pas utiliser 2 touches ou plus en même temps pour naviguer. Par exemple, enfoncer les touches \textbf{Z} et \textbf{D} pour aller la direction nord-est est impossible, il vous faut tourner votre caméra dans la direction où vous voulez aller puis appuyer sur \textbf{Z}.}
|
|
|
|
Fermez la fenêtre 3D pour pouvoir générer un nouveau L-Système sans avoir à rouvrir l'application
|
|
|
|
\section{Tests de notre logiciel}
|
|
|
|
\subsection{Possibles problèmes}
|
|
|
|
Lorsque vous tentez de générer un L-Système, celui-ci est affiché en 3D en utilisant une méthode récursive, si celui-ci est trop long cela peut entraîner une erreur de type \textit{StackOverflowError}, la fenêtre 3D restera alors blanche. Fermez la puis retentez une génération avec moins d'itérations ou tentez une génération avec d'autres règles.
|
|
|
|
Si vous lancez une génération avec beaucoup d'itérations, celle-ci peut mettre un certain temps à se générer et peut provoquer une erreur \textit{OutOfMemoryError}.
|
|
|
|
\section{Mesures de performances}
|
|
|
|
Nous avons mis en place un stress-test qui réécrit et convertit en arbre le L-Système.
|
|
Ce stress-test nécessite 4GB de RAM de libre et construira un mot de quasiment 26 millions de caractères puis celui-ci sera converti en un arbre (notez qu'il est impossible de l'afficher dans le moteur graphique car cela donnera \textit{StackOverflowError}).
|
|
|
|
\begin{figure}[h!]
|
|
\centering
|
|
\includegraphics[scale=0.3]{pics/stresstest.png}
|
|
\caption{Mesure de performances}
|
|
\label{Perf}
|
|
\end{figure}
|
|
|
|
(Test de performances effectué avec un Ryzen 5 2400g et une gtx 1050ti.)
|
|
|
|
\section{Possibles améliorations}
|
|
|
|
\begin{itemize}
|
|
\item Améliorer l'optimisation.
|
|
\item Rendre l'interface graphique plus conviviale.
|
|
\item Réaliser les L-Système 2D dans un vrai environnement 2D, et non dans un moteur 3D comme actuellement.
|
|
\item Améliorer le réalisme de la modélisation 3D.
|
|
\item Exporter les modèles d'arbres afin de les implémenter facilement dans des applications comme des jeux.
|
|
\item Utilisation des méthodes de OpenGL 3 ou 4 au lieu de ceux de OpenGL 2 afin de profiter des dernières améliorations technologiques des cartes graphiques (notamment au niveau des performances).
|
|
|
|
\end{itemize}
|