Ich bin neu in der Spiele- / Grafikentwicklung und spiele mit Partikeln (in 2D). Ich möchte Partikel als Klecks genau wie Flüssigkeit / Wasser nahe beieinander zeichnen. Ich möchte keine großen Kreise zeichnen, die sich überlappen, da der Blob nicht glatt (und zu groß) ist. Ich kenne mich nicht wirklich mit Physik aus, aber ich gehe davon aus, dass ich etwas möchte, das der Oberflächenspannung ähnelt.
Ich konnte weder bei stackexchange noch bei Google etwas finden (kenne ich möglicherweise nicht die richtigen Keywords?). Bisher habe ich zwei mögliche Lösungen gefunden, aber ich kann keine konkreten Informationen über Algorithmen finden.
Eine davon ist die Berechnung der konkaven Partikelhülle, die ich als Blob betrachte. Ich kann den Blob berechnen, indem ich eine Äquivalenzklasse erstelle (für die Beziehung "nah beieinander"). Seltsamerweise konnte ich keinen Algorithmus finden, der erklärt, wie der konkave Rumpf berechnet wird. Viele Posts (und unter stackexchange) verlinken auf Bibliotheken oder kommerzielle Produkte, die dies tun (ich brauche Bibliotheken, um in C # zu arbeiten), aber niemals einen Algorithmus. Auch diese Lösung könnte ein Problem mit einem Partikelkreis haben, der den leeren Raum in der Mitte nicht erkennt.
Während ich nach konkaven Hüllen suchte, stieß ich auf etwas, das Alpha-Formen genannt wurde. Das scheint genau das zu sein, was ich tun möchte, aber genau wie bei der konkaven Hülle habe ich keine Quelle gefunden, die erklärt, wie sie tatsächlich funktionieren. Ich habe einige Präsentationsmaterialien gefunden, aber nicht genug, um fortzufahren. Es ist wie ein großes Geheimnis, das jeder außer mir kennt: - /
Nachdem ich die konkave Rumpf- oder Alpha-Form berechnet habe, möchte ich eine Bézier-Kurve erstellen, um sie glatt und schön zu machen.
Obwohl ich meine Herangehensweise für etwas zu komplex halte, versuche ich vielleicht, dies auf die falsche Weise zu lösen? Wenn Sie eine andere Lösung für mein Problem vorschlagen oder die fehlenden Teile erklären können, wäre ich sehr glücklich und dankbar :-)
Vielen Dank.
Antworten:
Das Schlüsselwort, das Sie möglicherweise benötigen, lautet "Metaballs" und reicht vom komplexen nVidia GPU Gems-Beispiel bis hin zu den Demoversionen, die nur gut aussehen und schnell laufen sollen.
quelle
Um eine Gruppe von Partikeln in ein Netz zu konvertieren, das im Metaballs-Stil gerendert werden kann, sehen Sie sich den Marching Cubes- Algorithmus an, der aus Voxeldaten ein polygonales Netz generiert. Es gibt eine Demoszene-Demo mit einem großartigen Beispiel dafür, bei der alles auf der GPU generiert wird: numb res .
quelle
Wie oben erwähnt, denken Sie an Metaballs.
Dies ist ein großartiger Artikel zu diesem Thema mit einigen grundlegenden theoretischen Diskussionen und Beispielen.
Metaballs und Isoflächen in 2D erkunden
quelle