Ich bin auf der Suche nach einer Methode, um 3D-Modelle für den Einsatz in Videospielen zu generieren. Die Idee sind virtuelle Primitive, die einfach Punkte mit zugehörigen Daten für Größe, Form, Material und Rotation sind.
Zum Beispiel könnte ein Asteroid als zwei einfache Kugeln beginnen, die sich kreuzen. Material aus staubigem Gestein, das dem Enthäutungsalgorithmus eine glatte sandige Kurve und gelegentlich gezackte Felsbrocken anzeigen würde. Wahrscheinlich am Ende mit einer Art klumpiger Erdnussform.
Fügen Sie danach kleinere Kugeln mit einem Hohlraum- oder Kratermaterial hinzu, die um das Objekt herum gepfeffert sind. Diese würden kraterartige Bereiche in der Oberfläche der Erdnuss erzeugen und die Haut würde sich anpassen. Am Ende hätten Sie eine halbwegs plausible Darstellung eines Asteroiden.
Nun zu diesem Thema lautet meine Frage: Gibt es vernünftige Open-Source- oder Public-Domain-Beispiele für Skinning-Algorithmen, die die Oberfläche eines Modells finden und ein glattes, gleichmäßig verteiltes Quad-Strip-Mesh generieren, das dann texturiert werden kann? ?
Einige weitere Informationen; Ich schaue auf CSG-Methoden für die zugrunde liegenden Modelle (Hinzufügen und Subtrahieren von Volumen) und dann auf andere Methoden zum Remeshing der ganzen Sache.
Skinning ist eine Kunst mehr als ein wissenschaftlicher Prozess (und so fast unmöglich zu automatisieren), weil Skinning eine visuelle Annäherung an Bewegung ist. Um etwas vollautomatisch zu bekommen, müsste man entweder Knochenplatzierung voraussetzen oder einfach davon ausgehen, dass gar keine vorhanden sind.
Hier ist ein Beispiel. Dies ist ein Open-Source-Projekt, bei dem Skins automatisch auf der Tatsache basieren, dass das bereitgestellte Mesh ein Humanoid ist. Ссылка
EDIT: Warten Sie, Sie meinen das anders herum? Ist das Marschwürfeln nicht ähnlich? Ссылка
Dies ist eine spannende Frage und zweifellos gibt es viele Möglichkeiten, wie es getan werden könnte. Persönlich würde ich wahrscheinlich damit beginnen, einfache Formen im .obj-Format zu bekommen, was sowohl programmatisch als auch programmierbar ist, und dann genau das in meinem Code: zwecke oder randomize die Scheitelpunkte, die du aus einem Modellierungsprogramm exportierst, um ein Unendliches zu erzeugen Vielzahl von ähnlichen, aber leicht unterschiedlichen Objekten, wie Asteroiden. Natürlich, wenn Sie mehr als Asteroiden benötigen, würden Sie zu einer anderen OBJ-Datei zurückkehren. Es ist schwer, die beste Technik für Ihren Fall zu sagen, da ich glaube, dass etwas Experimentieren erforderlich ist, egal was Sie versuchen.