Rendu, LOD : ROAM.
This commit is contained in:
parent
6caeabfc1e
commit
ab41caf5f4
38
notes.md
38
notes.md
|
@ -94,8 +94,46 @@ Rendu
|
||||||
|
|
||||||
Isosurfaces
|
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
|
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.
|
||||||
|
|
|
@ -179,7 +179,10 @@
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\frametitle{Isosurfaces}
|
\frametitle{Isosurfaces}
|
||||||
\begin{itemize}
|
\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{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
@ -188,12 +191,12 @@
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\frametitle{Ray casting}
|
\frametitle{Ray casting}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Démonstration
|
\item Très simple, très petit code.
|
||||||
\item Très simple à implémenter
|
% TODO : Schéma d'explication
|
||||||
\item Très bons résultats avec du sampling
|
\item Sampling
|
||||||
\item Très lent
|
\item Très lent
|
||||||
\item Démonstration (concours d'assembleur)
|
\item Démonstration
|
||||||
\item Monte carlo
|
\item Monte Carlo
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
@ -204,9 +207,13 @@
|
||||||
\frametitle{ROAM}
|
\frametitle{ROAM}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Triangle bintree.
|
\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.
|
\item Défaut maximal visible à l'écran.
|
||||||
|
% TODO : Figure : Dessin projection pavé triangle erreur à l'écran.
|
||||||
\item Split queue et Merge queue.
|
\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 Frustum culling : utilisation de drapaux.
|
||||||
\item Améliorations~:
|
\item Améliorations~:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
@ -215,7 +222,7 @@
|
||||||
\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 Temps de calcul proportionnel au nombre de triangles mis à jour.
|
\item $O(\text{Nb triangles mis à jour})$
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user