-
1 pièce(s) jointe(s)
Surfaces - interpolation
Bonjour à tous,
Débutant en OpenGL, j'ai suivi les tutos et je me pose maintenant une question de meilleur choix.
Comme illustré sur ma sublime figure paint, j'ai créé une structure de données permettant de stocker une tuile composées de 12 points et d'un ensemble de liens entre eux. Chacun de ces lien possède un type donnant lieu à la création d'un aplat de couleur différent. Par exemple le point K est lié au point H avec un lien de type BLEU. Le point B est lié au point E avec un lien de type ROUGE.
Qu'elle serait la meilleur solution pour obtenir le(s) résultat souhaités comme sur la figure ? De plus j'aimerai créé un peu de variété dans les possibles résultats. Par exemple entre les deux premières tuiles résultats, j'aimerai faire varier le degré d"interpolation" entre les points. Je parle d'interpolation car j'ai déjà pensé à bézier.
Une autre de mes interrogations est le fait que certaines surfaces doivent ou non se toucher. Par exemple, dans les deux premières tuiles, j'aimerai que la surface bleu ne touche pas la surface rouge au contraire de la dernière...
Est-il possible de contraindre la création de surface et lui ajoutant des "bornes" à atteindre ou au contraire à ne pas dépasser ?
Merci.
Pierre
-
1 pièce(s) jointe(s)
Après intense réflexions, j'ai compris que je m'étais trompé de section de forum... Par contre j'ai presque trouvé une solution à mon problème...
J'ai générer un maillage de toute ma tuile (cyan) ainsi d'une liste de points (rouge) définissant une courbe (jaune) de Bézier. Pour la suite je me suis insipré de cet article remplaçant "le choix des textures selon la hauteur des pixels" par "l'appartenance d'un point de la courbe à un triangle".
Le soucis c'est que cette solution m'oblige a beaucoup TROP de calcul. Car pour chaque triangle, je cherche un point sur la courbe => Boucles for imbriquées coûteuses.
De plus, ne cherchant que l'appartenance des points aux triangles, j'obtiens le résultat présenté sur la figure jointe : quelques triangles seulement sont coloriés...
Sur ces bases auriez-vous quelques idées ?
-
L'idée qui me vient, de suite, pour les problèmes de calcul, serait de faire l'inverse: A l'aide de ta courbe de Bézier, calculer les triangles qui tombent dessous (en parcourant la courbe avec un intervalle suffisamment petit).
Ensuite, remplir ta texture: En parcourant colonnes et lignes, avec une variable stockant la dernière couleur rencontrée, soit stocker la couleur (si le triangle a déjà été peint), soit remplir la couleur du triangle avec la couleur stockée. Envoyer tout ça au fragment shader et c'est plié.
P.S. Si tu as une carte suffisamment récente, tu peut même passer par un compute shader, mais ce serait sortir l'artillerie lourde pour descendre un moineau :D