From ab41caf5f4a09ebaae8520b3212984fee6b77099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Wed, 9 Nov 2011 14:53:22 +0100 Subject: [PATCH] Rendu, LOD : ROAM. --- notes.md | 40 +++++++++++++++++++++++++++++++++++++++- presentation.tex | 23 +++++++++++++++-------- 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/notes.md b/notes.md index 5e190e8..dde932c 100644 --- a/notes.md +++ b/notes.md @@ -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 ------------ \ No newline at end of file +----------- +- 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. diff --git a/presentation.tex b/presentation.tex index 810a097..d7a3d16 100644 --- a/presentation.tex +++ b/presentation.tex @@ -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}