Je suis nouveau dans le développement de jeux / graphiques et je joue avec des particules (en 2D). Je veux rapprocher les particules les unes des autres comme une goutte, tout comme du liquide / de l'eau. Je ne veux pas dessiner de grands cercles qui se chevauchent car le blob ne sera pas lisse (et trop grand). Je ne connais pas vraiment la physique mais je suppose que ce que je veux, c'est quelque chose qui ressemble à la tension superficielle.
Je n'ai rien trouvé sur stackexchange ou sur Google (peut-être que je ne connais pas les bons mots clés?). Jusqu'à présent, j'ai trouvé deux solutions possibles, mais je ne trouve aucune information concrète sur les algorithmes.
L'un d'eux consiste à calculer la coque concave des particules que je considère comme une goutte. Je peux calculer le blob en créant une classe d'équivalence (sur la relation "proches les uns des autres"). Curieusement, je n'ai pas pu trouver d' algorithme expliquant comment calculer la coque concave. De nombreux articles (et parmi stackexchange) contiennent des liens vers des bibliothèques ou des produits commerciaux qui font cela (j'ai besoin de bibliothèques pour travailler en C #), mais jamais aucun algorithme. Cette solution pourrait également avoir un problème avec un cercle de particules, qui ne détecterait pas l'espace vide au milieu.
En recherchant la coque concave, je suis tombé sur quelque chose appelé formes alpha. Ce qui semble être exactement ce que je veux faire, mais comme pour la coque concave, je n'ai trouvé aucune source expliquant comment ils fonctionnent réellement. J'ai trouvé du matériel de présentation mais pas assez pour continuer. C'est comme un grand secret que tout le monde connaît sauf moi: - /
Après avoir calculé la coque concave ou la forme alpha, je veux en faire une courbe de Bézier pour la rendre lisse et agréable.
Bien que je trouve mon approche un peu trop complexe, j'essaie peut-être de résoudre le problème de la mauvaise façon? Si vous pouvez suggérer une autre solution à mon problème ou expliquer les pièces qui me manquent, je serais très heureux et reconnaissant :-)
Merci.
Réponses:
Le mot-clé dont vous pourriez avoir besoin est "Metaballs", et s'étend de l'exemple complexe de gemmes de GPU nVidia jusqu'aux versions pilotées par les scènes de démonstration conçues uniquement pour être belles et fonctionner rapidement.
la source
Pour convertir un groupe de particules en un maillage afin de pouvoir le rendre, à la manière des métabilles, vous pouvez jeter un œil à l' algorithme Marching Cubes , qui génère un maillage polygonal à partir des données de voxel. Il y a une démo démo qui en a un bon exemple, avec tout ce qui est généré sur le GPU: numb res .
la source
Comme mentionné ci-dessus, vous pensez aux Metaballs.
Ceci est un excellent article sur le sujet avec une discussion et des exemples de base.
Explorer les métaballes et les isosurfaces en 2D
la source