www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 6caeabfc1e5492eefa5bf7d5c044f9e5aea57a13
parent 4a7a6cad2e0359558764a462020021a07023bea6
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Wed,  9 Nov 2011 12:08:16 +0100

Notes pour la section Génération.

Diffstat:
Mnotes.md | 97++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mpresentation.tex | 48++++++++++++++++++++++++++++++++----------------
2 files changed, 128 insertions(+), 17 deletions(-)

diff --git a/notes.md b/notes.md @@ -1,7 +1,101 @@ Perlin noise ============ +Quatre shémas +- Interpolation aucune. +- Interpolation linéaire. +- Interpolation cubique. +- Interpolation cosinusoïdale. +Autres interpolations possibles vues dans le dernier cours (présentation par l'autre groupe). + +superposition d'octaves (deux autres). +Sommes des octaves sur exemple en interpolation linéaire. +Un exemple final avec une interpolation cubique. +--> retour au schéma trois courbes superposées. +Amplitude : Hauteur max pour une octave. +Octaves : Nombre d'octaves qui seront additionnées. +Fréquence : La fréquence déchantillonage pour chaque octave (un point tout les x). +Persistance : Variation de l'amplitude d'une octave à l'autre. + +Hash de coordonnées : pour un point d'une octave on fait hash(coordonnées) % amplitude de l'octave. Avec des octaves de fréquence double à chaque niveau il suffit de faire un modulo pour conaître les coordonnées de l'octave parente. + Perlin noise (variations) ========================= +Généralisation à n dimensions. +exemple 1D et 2D. +(peut-être exemple 3D) +Si quatre dimension alors animations. +exemple à citer en plus : minefield : seuil sur un bruit 3D pour "colorer" des voxels. + + +Ridged perlin noise : Fait des crêtes de montagnes ou vallées encaissées. +Un exemple de crêtes et un exemple de vallées. +Midpoint displacement : fractale des côtes. +Simplex Noise : Explication sur deux dimension avec un carré et un triangle pour comparaison simplex noise étant le triangle. +Simplex Noise : Complexité meilleure : cube = 8 points, tétraèdre = 4 points. +Simplex Noise : On peut connaître sa dérivée ! Donc normales faciles + +pour économiser de la mémoire il est possible de générer des textures répétables. +Après génération moyenne des bords (monde torique). +problèmes : flou principalement sur les bords et artefacts. +Une solution : Généralisation à n dimensions : hypercercle nD dans un espace 2nD. + +Craters et hills algorithm +========================== +Craters : Création d'un cratère : z(x,y) = z(x,y) en cours - une hauteur déterminée par la distance au centre (en général décroissant). +On peut générer un terrain juste avec des cratères (carte de 512x512 environ un milier de cratères). +Ou ajout de cratères sur un terrain existant pour ajouter de l'intérêt. + +Hills : inverse de craters ajout de cercles. + +Stockage : Possibilité de faire un QuadTree de carrés avec un cercle positionné aléatoirement dans chaque niveau dans ce cas là complexité comparable avec celle de perlin noise. +Avec arbre du LOD les cercles des cratères ne doivent pas dépasser du carré. + +Erosion +======= +Idée générale déplacement de sédiments. +Taux d'érosion : quantité de sédiments déplacés. +Pente : dérivée du simplex noise ou différence sur perlin. +Dureté : un autre perlin noise. +Végétation (climat) : fonction de l'altitude distance à l'eau et bruit aléatoire. +Inconvénient : pas de temps réel. +- Approximation : modification de la distribution des hauteurs. + + +Autres méthodes +=============== +Chaînage d'algorithme de bruit : permet d'ajouter des couleurs, des climats etc à une carte d'élévation. +altération du comportement d'un aglo : Initialisation d'un algo à partir du résultat d'un autre algo. (exemple utiliser le résultat de perlin noise pour déterminer la persistance pour un second perlin noise). +Carte polygonale : +- découpage du plan en polygones +- positionnement de la mer et des lacs +- hauteur fonction de la distance à la mer. +- tracé de rivières en descendant le long des segments des polygones. +- climats et biotopes en fonction de l'élévation et de la distance à l'humidité. +- bruitage supplémentaire. + +Intégration de formes dans le terrain : modification du comportement de l'algo et retour à l'algo normal en fonction de la distance. Permet de rajoute du réalisme fait par un graphiste (exemple grande muraille de chine, continents réels). + + +Rivières +======== +- Path finding : Une recherche de chemin avec un coût en fonction de la pente. +- Affinage : Série de ponts de passage placés sur la grille de LOD avec une précision que l'on augmente quand on affine le LOD. On rajoute des points de passage et ajuste ceux existants. +- Tracé arbitraire : Choix du placement et du tracé de la rivière sans prendre en compte le terrain. +- Intégration dans le terrain : De la même manière que la diapo précédente, la rivère constitue une forme spéciale à intégrer. Problème risque de faire passer une rivière au milieu d'un massif (vallée très très très très artificielle). + +Démonstration +============= +World Machine. + + +Rendu +===== + +Isosurfaces +----------- + + -Ridged perlin noise : Fait des crêtes de montagnes ou vallées. +Ray casting +----------- +\ No newline at end of file diff --git a/presentation.tex b/presentation.tex @@ -78,18 +78,20 @@ \caption{Perlin noise} \end{figure} \item Interpolation linéaire, cubique ou cosinusoidale. - \item Amplitude, octaves, fréquence, persistance (modification des amplitudes pour chaque octave). + \item Amplitude, octaves, fréquence, persistance. + \item Hash de coordonnées% TODO \end{itemize} \end{frame} \begin{frame} \frametitle{Perlin noise (Variations)} \begin{itemize} + \item Cevernes, nuages, textures, terrains : bruit $n$D et voxels. \item Ridged Perlin Noise. \item Midpoint displacement. - \item Simplex noise : généralisation des triangles équilatéraux à $n$ dimensions, interpolation par rapport aux coins. + \item Simplex noise : généralisation des triangles équilatéraux à $n$ dimensions, interpolation par rapport aux coins. $d^2$ au lieu de $2^d$. \item Bruit répétable 1D : points sur un cercle dans un espace 2D. Généralisation à $n$ dimensions : hypercercle $n$D dans un espace $2n$D. - \item Cevernes, nuages, textures, terrains : bruit $n$D et voxels (minefield). + %TODO : référence \end{itemize} \end{frame} @@ -101,13 +103,15 @@ \begin{itemize} \item Soustraire des cercles au terrain (z = z - f(distance au centre)) \item Sur un terrain nu + % TODO : image \item Sur un terrain existant + % TODO : image \end{itemize} \item Hills Algorithm \begin{itemize} \item Inverse de craters : on ajoute plein de cercles \end{itemize} - \item Stockage des cercles dans un arbre (BSP, Quadtree, arbre du LOD, \dots). + \item Stockage des cercles dans un arbre (BSP, Quadtree, arbre du LOD, \dots{}). \end{itemize} \end{frame} @@ -117,10 +121,10 @@ \frametitle{Érosion} \begin{itemize} \item Déplacement de sédiments. - \item Taux en fonction de la pente. - \item Végétation. + \item Taux en fonction de la pente, dureté de la roche, végétation. + \item Carte de circulation des eaux. \item Pas temps-réel. - \item Approximation : modification de la distribution des hauteurs. + \item Approximation : modification de la distribution des hauteurs. % TODO : schéma \end{itemize} \end{frame} @@ -130,11 +134,12 @@ \begin{itemize} \item Chaînage d'algorithmes de bruit \begin{itemize} - \item Ajout de couleurs, climats\dots à une carte d'élévation. - \item Altération du comportement d'un algo à certains endroits. - \item {\tiny http://www.gamedev.net/blog/33/entry-2249260-procedural-islands-redux/} + \item Ajout de couleurs, climats, végétation, relief\dots{} + \item Altération du comportement d'un algo. + \item {\tiny\url{http://www.gamedev.net/blog/33/entry-2249260-procedural-islands-redux/}} \end{itemize} - \item Cartes polygonales. {\tiny http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/} + \item Cartes polygonales. {\tiny\url{http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/}} + % TODO : voronoi etc. \item Intégration de formes dans le terrain. \end{itemize} \end{frame} @@ -144,10 +149,12 @@ \begin{frame} \frametitle{Rivières} \begin{itemize} - \item Pathfinding pour créer des rivières {\tiny http://www.umbrarumregnum.net/articles/creating-rivers} + \item Pathfinding {\tiny\url{http://www.umbrarumregnum.net/articles/creating-rivers}} + % Image \item Affinage du tracé en fonction du LOD. - \item Tracés arbitraires. - \item Intégration des rivières dans le terrain. + % Schéma sur un ou deux niveaux d'affinage. + \item Tracé arbitraire. + \item Intégration dans le terrain. \end{itemize} \end{frame} % Si on utilise une méthode de coût qui favorise de passer par un petit @@ -158,19 +165,28 @@ \subsection{Démonstration} \begin{frame} \frametitle{Démonstration} - World machine. + \begin{center} + {\Huge World machine} + + \vspace{1em} + \url{http://www.world-machine.com/} + \end{center} \end{frame} \section{Rendu} \subsection{Isosurfaces} \begin{frame} - + \frametitle{Isosurfaces} + \begin{itemize} + \item Metaballs + \end{itemize} \end{frame} \subsection{Ray casting} \begin{frame} + \frametitle{Ray casting} \begin{itemize} \item Démonstration \item Très simple à implémenter