2010-10-17 9 views
6

Ich versuche, ein 3D-Spiel mit OpenGL zu erstellen. Ich habe eine sehr einfache Welt und arbeite jetzt an einem Charakter. Ich möchte dem Kopf eine Textur zuordnen, die oval ist. Wie mache ich das Mapping? Ich weiß, wie man auf eine flache Oberfläche mappt. Ich frage mich, ob die Normalen verwendet werden können, um zu helfen, aber ich habe das nie zuvor getan und wenn ich Google suche, habe ich kein Glück.Wie texturiere ich eine Karte auf eine gekrümmte Oberfläche?

Ich plane dies alles programmgesteuert und nicht mit Blender oder Maya, wenn das einen Unterschied macht.

Antwort

1

Ich rate von Ihrem Beitrag, dass Sie mit Geometrie in Ordnung sind?

Für die automatische Zuordnung im allgemeinen Fall ist Ihre Vermutung eine gute Idee - beginnen Sie von jedem Eckpunkt aus und folgen Sie seiner Normalen nach außen, bis Sie ein gut definiertes äußeres Primitiv treffen, und kopieren Sie dann die Texturposition nach innen.

In diesem Fall denke ich, wahrscheinlich ist der Schlüssel in wie Sie Ihre Geometrie generieren. Wenn Sie etwa 8 Ringe mit 16 Punkten erstellen, indem Sie effektiv um einen Kreis in einer äußeren Schleife und einen weiteren in einer inneren Schleife iterieren, können Sie gleichzeitig u und v durchlaufen, um eine Zuordnung zu erhalten. Sie erhalten einige unregelmäßig große Polygone und das Mapping wird an den Polen problematisch, aber der Bereich, in dem das Gesicht liegen würde, funktioniert ziemlich gut.

Wenn Sie eine gleichmäßigere Größe des Polygons und eine zuverlässige Zuordnung in allen Bereichen wünschen, beginnen Sie mit einem übertesselierten Würfel (z. B. einem Gitter aus 8x8 Quads pro Fläche anstelle von nur einem) und ordnen Sie die Texturkoordinaten in beliebigen Bereichen zu sinnvoll. Denken Sie an das Netz eines Würfels. Dann verforme den Würfel in eine Kugel, indem du den Vektor von der Mitte zu jedem Punkt ausarbeitest und den Punkt so verschiebst, dass er der Radius der Kugel vom Mittelpunkt ist. Schließlich verformen Sie die Kugel in das Oval, indem Sie verschiedene Achsen unterschiedlich skalieren.

Verwandte Themen