Toutes les images qu'on montrera aujourd'hui !

This commit is contained in:
Georges Dupéron 2011-11-14 08:01:31 +01:00
parent 753acab271
commit 8c430d59d3

View File

@ -15,7 +15,7 @@
% https://launchpad.net/ubuntu/precise/i386/pgf/2.10-1 % https://launchpad.net/ubuntu/precise/i386/pgf/2.10-1
% http://launchpadlibrarian.net/70800349/pgf_2.10-1_all.deb % http://launchpadlibrarian.net/70800349/pgf_2.10-1_all.deb
\usepackage{tikz} \usepackage{tikz}
\usetikzlibrary{positioning,calc,chains} \usetikzlibrary{positioning,calc,chains,intersections}
\usetheme{Frankfurt} \usetheme{Frankfurt}
\usepackage{graphicx} \usepackage{graphicx}
@ -274,7 +274,7 @@
% Génération du perlin 2D % Génération du perlin 2D
\xdef\twodperlinsize{8} \xdef\twodperlinsize{64}%128
\xdef\maxvtwodperlin{0} \xdef\maxvtwodperlin{0}
\xdef\minvtwodperlin{0} \xdef\minvtwodperlin{0}
\def\maxradius{32} \def\maxradius{32}
@ -292,11 +292,11 @@
} }
% Génération du craters % Génération du craters
\xdef\craterssize{4} \xdef\craterssize{64}%128
\xdef\maxvcraters{0} \xdef\maxvcraters{0}
\xdef\minvcraters{0} \xdef\minvcraters{0}
\def\maxradius{32} \def\maxradius{32}
\def\ncircles{10} \def\ncircles{100}
\foreach \y in {1,2,...,\craterssize}{ \foreach \y in {1,2,...,\craterssize}{
\foreach \x in {1,2,...,\craterssize}{ \foreach \x in {1,2,...,\craterssize}{
\setcache{vcraters,\x,\y}{0} \setcache{vcraters,\x,\y}{0}
@ -484,16 +484,16 @@
% TODO : couleur de la map sur la ligne. % TODO : couleur de la map sur la ligne.
\draw[->,gray] (\xalign+150,0) -- (\xalign+150+140,0); \draw[->,gray] (\xalign+150,0) -- (\xalign+150+140,0);
\only<2>{ \only<2>{
\draw[red,samples at={0,3,...,60}, smooth, mark=*, mark indices={0,20}, mark size=72] plot ({\xalign+xpointoncircle(\x,\circler,\maxdiam)},{ypointoncircle(\x,\circler,\maxdiam)}); \draw[red,samples at={0,5,...,60}, smooth, mark=*, mark indices={1,12}, mark size=72] plot ({\xalign+xpointoncircle(\x,\circler,\maxdiam)},{ypointoncircle(\x,\circler,\maxdiam)});
\draw[red,samples at={0,3,...,60}, smooth, mark=*, mark indices={0,20}, mark size=72] plot ({\xalign+150+\x/360*70},{perlin2DCosine(xpointoncircle(\x,\circler,\maxdiam),ypointoncircle(\x,\circler,\maxdiam),16,3,0.5,35)}); \draw[red,samples at={0,5,...,60}, smooth, mark=*, mark indices={1,12}, mark size=72] plot ({\xalign+150+\x/360*70},{perlin2DCosine(xpointoncircle(\x,\circler,\maxdiam),ypointoncircle(\x,\circler,\maxdiam),16,3,0.5,35)});
} }
\only<3>{ \only<3>{
\draw[red,samples at={0,3,...,360}, smooth, mark=*, mark indices={0,20,40}, mark size=72] plot ({\xalign+xpointoncircle(\x,\circler,\maxdiam)},{ypointoncircle(\x,\circler,\maxdiam)}); \draw[red,samples at={0,5,...,360}, smooth, mark=*, mark indices={1,12,24}, mark size=72] plot ({\xalign+xpointoncircle(\x,\circler,\maxdiam)},{ypointoncircle(\x,\circler,\maxdiam)});
\draw[red,samples at={0,3,...,360}, smooth, mark=*, mark indices={0,20,40}, mark size=72] plot ({\xalign+150+\x/360*70},{perlin2DCosine(xpointoncircle(\x,\circler,\maxdiam),ypointoncircle(\x,\circler,\maxdiam),16,3,0.5,35)}); \draw[red,samples at={0,5,...,360}, smooth, mark=*, mark indices={1,12,24}, mark size=72] plot ({\xalign+150+\x/360*70},{perlin2DCosine(xpointoncircle(\x,\circler,\maxdiam),ypointoncircle(\x,\circler,\maxdiam),16,3,0.5,35)});
} }
\only<4>{ \only<4>{
\draw[red,samples at={0,3,...,360}, smooth, mark=*, mark indices={0,20,40}, mark size=72] plot ({\xalign+xpointoncircle(\x,\circler,\maxdiam)},{ypointoncircle(\x,\circler,\maxdiam)}); \draw[red,samples at={0,5,...,360}, smooth, mark=*, mark indices={1,12,24}, mark size=72] plot ({\xalign+xpointoncircle(\x,\circler,\maxdiam)},{ypointoncircle(\x,\circler,\maxdiam)});
\draw[red,samples at={0,3,...,360}, smooth, mark=*, mark indices={0,20,40,140,160}, mark size=72] plot ({\xalign+150+\x/360*70},{perlin2DCosine(xpointoncircle(\x,\circler,\maxdiam),ypointoncircle(\x,\circler,\maxdiam),16,3,0.5,35)}); \draw[red,samples at={0,5,...,720}, smooth, mark=*, mark indices={1,12,24,72,84,96}, mark size=72] plot ({\xalign+150+\x/360*70},{perlin2DCosine(xpointoncircle(\x,\circler,\maxdiam),ypointoncircle(\x,\circler,\maxdiam),16,3,0.5,35)});
} }
} }
\end{tikzpicture} \end{tikzpicture}
@ -622,7 +622,7 @@
\begin{itemize} \begin{itemize}
\item<1-> Pathfinding {\tiny\url{http://www.umbrarumregnum.net/articles/creating-rivers}} \item<1-> Pathfinding {\tiny\url{http://www.umbrarumregnum.net/articles/creating-rivers}}
% TODO : Image (ne sera pas fait, manque de temps). % TODO : Image (ne sera pas fait, manque de temps).
\item<2-4> Affinage du tracé en fonction du LOD. \item<2-> Affinage du tracé en fonction du LOD.
% TODO : Schéma sur 3 niveaux d'affinage en 3 étapes. % TODO : Schéma sur 3 niveaux d'affinage en 3 étapes.
\item<5-> Tracé arbitraire. \item<5-> Tracé arbitraire.
\item<6-> Intégration dans le terrain. \item<6-> Intégration dans le terrain.
@ -661,13 +661,55 @@
\begin{frame} \begin{frame}
\frametitle{Ray casting} \frametitle{Ray casting}
\begin{figure}[h]
\centering
\begin{tikzpicture}[scale=0.5]
\node[circle,fill=black,inner sep=2pt] (eye) at (0,0) {};
\node[coordinate] (a) at (4,-3) {};
\node[coordinate] (b) at (5,-1) {};
\node[coordinate] (c) at (6,-2) {};
\node[coordinate] (d) at (7,1) {};
\node[coordinate] (e) at (8,-3) {};
\draw (2,3) -- (2,-3);
\draw (a) -- (b) -- (c) -- (d) -- (e);
\only<2>{ \draw[dashed] (eye) -- (e); }
\only<2->{
\path[name path=eyee] (eye) -- (e); \path[name path=verte] (2.5,3) -- (2.5,-3);
\draw[red!50,thick,name intersections={of=eyee and verte}] (intersection-1) -- (2.5,-3);
}
\only<3>{ \draw[dashed] (eye) -- (d); }
\only<3->{
\path[name path=eyed] (eye) -- (d); \path[name path=vertd] (2.4,3) -- (2.4,-3);
\draw[red!50,thick,name intersections={of=eyed and vertd}] (intersection-1) -- (2.4,-3);
}
\only<4>{ \draw[dashed] (eye) -- (c); }
\only<4->{
\path[name path=eyed] (eye) -- (c); \path[name path=vertd] (2.3,3) -- (2.3,-3);
\draw[red!50,thick,name intersections={of=eyed and vertd}] (intersection-1) -- (2.3,-3);
}
\only<5>{ \draw[dashed] (eye) -- (b); }
\only<5->{
\path[name path=eyed] (eye) -- (b); \path[name path=vertd] (2.2,3) -- (2.2,-3);
\draw[red!50,thick,name intersections={of=eyed and vertd}] (intersection-1) -- (2.2,-3);
}
\only<6>{ \draw[dashed] (eye) -- (a); }
\only<6->{
\path[name path=eyed] (eye) -- (a); \path[name path=vertd] (2.1,3) -- (2.1,-3);
\draw[red!50,thick,name intersections={of=eyed and vertd}] (intersection-1) -- (2.1,-3);
}
\end{tikzpicture}
\end{figure}
\begin{itemize} \begin{itemize}
\item Très simple, très petit code. \item<1-> Très simple, très petit code.
% TODO : Schéma d'explication \item<5-> Sampling
\item Sampling \item<6-> Très lent
\item Très lent \item<7-> Démonstration
\item Démonstration \item<8-> Monte Carlo
\item Monte Carlo
\end{itemize} \end{itemize}
\end{frame} \end{frame}
@ -676,24 +718,48 @@
\subsection{ROAM} \subsection{ROAM}
\begin{frame} \begin{frame}
\frametitle{ROAM} \frametitle{ROAM}
\begin{figure}[h]
\centering
\begin{tikzpicture}[scale=0.2]
\path (-4,0) -- (16,8);
\only<2-5> { \fill[red!20] (0,0) -- (-4,0) -- (-4,4) -- cycle; }
\only<7> { \fill[red!20] (0,0) -- (-4,0) -- (-4,4) -- (0,4) -- cycle; }
\only<1->{
\draw (0,0) -- (16,0) -- (8,8) -- cycle;
\draw (8,0) -- (8,8);
}
\only<2-> {
\draw (0,0) -- (0,8) -- (8,8);
\draw (0,0) -- (-4,4) -- (0,8);
\draw (0,0) -- (-4,0) -- (-4,4);
}
\only<3-5> { \draw[dashed] (-4,0) -- (0,4); }
\only<4-5> { \draw[dashed] (-4,4) -- (4,4); }
\only<5-5> { \draw[dashed] (0,8) -- (8,0); }
\only<6-7> {
\draw (-4,0) -- (0,4);
\draw (-4,4) -- (4,4);
\draw (0,8) -- (8,0);
}
\end{tikzpicture}
\end{figure}
\begin{itemize} \begin{itemize}
\item Triangle bintree. \item<1-> Triangle bintree.
% TODO : Figure : triangle avec 2 fils. \item<2-> Split et merge. CLOD.
\item Split et merge. CLOD. \item<8-> Défaut maximal visible à l'écran.
% TODO : Figure : split forcé, merge d'un losange.
\item Défaut maximal visible à l'écran.
% TODO : Figure : Dessin projection pavé triangle erreur à l'écran. % TODO : Figure : Dessin projection pavé triangle erreur à l'écran.
\item Split queue et Merge queue. \item<9-> Split queue et Merge queue.
% TODO : queues l'une au-dessus de l'autre, montrer qu'on va +- les priorités pour éviter le chevauchement. % TODO : queues l'une au-dessus de l'autre, montrer qu'on va +- les priorités pour éviter le chevauchement.
\item Frustum culling : utilisation de drapaux. \item<10-> Frustum culling : utilisation de drapaux.
\item Améliorations~: \item<11-> Améliorations~:
\begin{itemize} \begin{itemize}
\item Triangle stripping. \item Triangle stripping.
\item Geomorphing. \item Geomorphing.
\item Calcul différé des priorités dans les queues. \item Calcul différé des priorités dans les queues.
\item Temps réel. \item Temps réel.
\end{itemize} \end{itemize}
\item $O(\text{Nb triangles mis à jour})$ \item<12-> $O(\text{Nb triangles mis à jour})$
\end{itemize} \end{itemize}
\end{frame} \end{frame}
@ -712,10 +778,66 @@
\subsection{Notre algo} \subsection{Notre algo}
\begin{frame} \begin{frame}
\frametitle{Notre algorithme} \frametitle{Notre algorithme}
\begin{figure}[h]
\centering
\begin{tikzpicture}[scale=0.2]
\only<5->{
\draw[red] (4,4) -- (0,0);
\draw[red] (4,4) -- (8,0);
\draw[red] (4,4) -- (8,8);
\draw[red] (4,4) -- (4,8);
\draw[red] (4,4) -- (2,8);
\draw[red] (4,4) -- (0,8);
}
\only<1->{
\node[circle,fill=black,inner sep=1pt] at (0,0) {};
\node[circle,fill=black,inner sep=1pt] at (16,0) {};
\node[circle,fill=black,inner sep=1pt] at (16,16) {};
\node[circle,fill=black,inner sep=1pt] at (0,16) {};
\node[circle,fill=black,inner sep=1pt] at (8,8) {};
\draw (0,0) -- (16,0) -- (16,16) -- (0,16) -- cycle;
}
\only<2->{
\node[circle,fill=black,inner sep=1pt] at (8,0) {};
\node[circle,fill=black,inner sep=1pt] at (8,16) {};
\node[circle,fill=black,inner sep=1pt] at (0,8) {};
\node[circle,fill=black,inner sep=1pt] at (16,8) {};
\node[circle,fill=black,inner sep=1pt] at (4,4) {};
\node[circle,fill=black,inner sep=1pt] at (4,12) {};
\node[circle,fill=black,inner sep=1pt] at (12,4) {};
\node[circle,fill=black,inner sep=1pt] at (12,12) {};
\draw (8,0) -- (8,16); \draw (0,8) -- (16,8);
}
\only<3->{
\node[circle,fill=black,inner sep=1pt] at (0,12) {};
\node[circle,fill=black,inner sep=1pt] at (8,12) {};
\node[circle,fill=black,inner sep=1pt] at (4,8) {};
\node[circle,fill=black,inner sep=1pt] at (4,16) {};
\node[circle,fill=black,inner sep=1pt] at (2,10) {};
\node[circle,fill=black,inner sep=1pt] at (2,14) {};
\node[circle,fill=black,inner sep=1pt] at (6,10) {};
\node[circle,fill=black,inner sep=1pt] at (6,14) {};
\draw (0,12) -- (8,12); \draw (4,8) -- (4,16);
}
\only<4->{
\node[circle,fill=black,inner sep=1pt] at (0,10) {};
\node[circle,fill=black,inner sep=1pt] at (4,10) {};
\node[circle,fill=black,inner sep=1pt] at (2,12) {};
\node[circle,fill=black,inner sep=1pt] at (1,9) {};
\node[circle,fill=black,inner sep=1pt] at (3,11) {};
\node[circle,fill=black,inner sep=1pt] at (1,11) {};
\node[circle,fill=black,inner sep=1pt] at (3,9) {};
\draw (0,10) -- (4,10); \draw (2,8) -- (2,12);
\node[circle,fill=red,inner sep=1pt] at (2,8) {};
}
\end{tikzpicture}
\end{figure}
\begin{itemize} \begin{itemize}
\item Quadtree de carrés. \item Quadtree de carrés.
% TODO : figure
% TODO : figure trous dans le mesh
\item Triangle fans. \item Triangle fans.
\item LOD en fonction de la distance. \item LOD en fonction de la distance.
\item Mise à jour de quelques branches seulement. \item Mise à jour de quelques branches seulement.