Rendu, LOD : ROAM.

This commit is contained in:
Georges Dupéron 2011-11-09 14:53:22 +01:00
parent 6caeabfc1e
commit ab41caf5f4
2 changed files with 54 additions and 9 deletions

View File

@ -94,8 +94,46 @@ Rendu
Isosurfaces
-----------
- Metaballs : ce sont des isosurfaces.
Une des premières utilisation répendue des isosurfaces.
- Surface 2D d'un bruit 3D : au lieu d'utiliser voxel utiliser isosurfaces coûte moins cher.
- Simplification de nuages : avec temps de calcul plutôt réduit. Angrandir les faces et mettre une texture floue vers transparent.
- Surface de l'eau : Les raytracer permettent de réaliser ce genre de forme.
Ray casting
-----------
-----------
- Très simple à implémenter : il y a un shéma.
- Sampling : problème : Les points éloignés vont beaucoup varier d'une image à l'autre donc scintillement.
Lancer une série de rayons par pixel autour de la cible et faire la moyenne.
Autre solution mip mapping de texture : avec perlin noise il suffit de baisser le nombre d'octaves (résultat plus homogène).
- Très lent.
- Démonstration.
Concours d'assembleur : Le binaire ne fait 512 octets.
- Monte Carlo : Plutôt que de redessiner chaque frame en entier, retracer des pixels aléatoirement rapprochement du sampling (Attracteur de Peter de Jong).
LOD
===
ROAM
----
- Triangle bintree : qu'est-ce que c'est ? constitution.
- split merge : figure split forcé. Ensuite merge du premier triangle.
CLOD : continuous level of detail. Mise à jour incrémentale du mesh pour l'optimiser pour la position de caméra courante.
- Défaut maximal visible à l'écran : borne maximale de l'erreur sur la hauteur du contenu. On mesure la surface projetée à l'écran du pavé triangulaire. C'est l'erreur maximale en pixels.
- Split et merge queue : tri des triangles en fonction de leur erreur en pixel. On découpe ceux qui ont une trop grosse erreur et on fusionne ceux qui ont une erreur faible.
- Frustum culling : utilisation de drapeaux. pour chaque triangle de l'arbre de LOD on marque si il est entièrement visible entièrement caché ou partiellement visible. On recalcule à chaque frame ces drapeaux. Quand on rencontre un entièrement visible qui l'est toujours et pareil pour caché on ne parcourt pas le sous-arbre.
- Améliorations :
- Triangle stripping : mettre à jour incrémentalement des listes de triangles contigus.
- Geomorphing : quand on rajoute un vertex on l'anime depuis sa position interpolée.
- Calcul différé des priorités dans les queues : plutôt que de recalculer l'erreur en pixels de chaque triangle à chaque frame recalculer uniquement ceux qui risquent de se "superposer".
- Temps réel : on peut arrêter les split merge à tout moment on à un mesh cohérent et de bonne qualité.
- Complexité : O(nombre ...).
FIN.

View File

@ -179,7 +179,10 @@
\begin{frame}
\frametitle{Isosurfaces}
\begin{itemize}
\item Metaballs
\item Metaballs % TODO : écran de veille / screenshot.
\item Surface 2D d'un bruit 3D.
\item Simplification de nuages.
\item Surface de l'eau.
\end{itemize}
\end{frame}
@ -188,12 +191,12 @@
\begin{frame}
\frametitle{Ray casting}
\begin{itemize}
\item Démonstration
\item Très simple à implémenter
\item Très bons résultats avec du sampling
\item Très simple, très petit code.
% TODO : Schéma d'explication
\item Sampling
\item Très lent
\item Démonstration (concours d'assembleur)
\item Monte carlo
\item Démonstration
\item Monte Carlo
\end{itemize}
\end{frame}
@ -204,9 +207,13 @@
\frametitle{ROAM}
\begin{itemize}
\item Triangle bintree.
\item Opération split et merge : voisins «base», «gauche» et «droite».
% TODO : Figure : triangle avec 2 fils.
\item Split et merge. CLOD.
% TODO : Figure : split forcé, merge d'un losange.
\item Défaut maximal visible à l'écran.
% TODO : Figure : Dessin projection pavé triangle erreur à l'écran.
\item 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.
\item Frustum culling : utilisation de drapaux.
\item Améliorations~:
\begin{itemize}
@ -215,7 +222,7 @@
\item Calcul différé des priorités dans les queues.
\item Temps réel.
\end{itemize}
\item Temps de calcul proportionnel au nombre de triangles mis à jour.
\item $O(\text{Nb triangles mis à jour})$
\end{itemize}
\end{frame}