OpenGL-Drahtmodell

18

Nein, ich suche nicht nach glPolygonMode. Ich bin auf der Suche nach einer Methode, möglicherweise einem GLSL-Shader, der für Objekte einen Drahtmodell-Look im Retro-Stil erzeugt. Irgendwelche Vorschläge?

So etwas hatte Vector Tanks.

http://toucharcade.com/wp-content/uploads/2009/01/picture-111-300x204.png

Vorzugsweise sollte die Lösung auch auf OpenGL ES 2.0 funktionieren.

Irgendwelche Tipps und Hinweise (solange nicht NULL) geschätzt!

Kornel Kisielewicz
quelle

Antworten:

5

Ich würde die Verwendung von Texturen sehr empfehlen, wie Dave sagte. Es mag etwas schmerzhaft sein, aber es würde meiner Meinung nach eine viel bessere Leistung bringen.

Sie könnten versuchen, nach Kantenerkennungsalgorithmen zu suchen . Wenn Sie Ihre Netze mit Scheitelpunktfarben mit Volltonfarben und mittleren Alphawerten (für leichte Transparenz) erstellen und dann einen Kantenerkennungsshader verwenden, sieht dies möglicherweise gut genug aus. Es wäre nicht ganz dasselbe, aber es könnte dir noch mehr gefallen; oder vielleicht nicht.

Andernfalls suchen Sie möglicherweise nach einer Lösung mit zwei Durchgängen , indem Sie durchscheinende Polygone zeichnen (setzen Sie die Scheitelpunktfarben erneut auf eine durchgehende Farbe mit einem mittleren Alpha-Wert), dann glPolygonMode (GL_LINE) und glLineWidth wie gewünscht anpassen (möglicherweise basierend auf dem Objekt) Abstand) und zeichnen Sie die Polygone erneut.

Es ist ein bisschen spät und ich habe Mühe, das durchzulesen , aber eine Forumsdiskussion verweist auf dieses PDF: Single-Pass-Wireframe-Rendering . Ich entschuldige mich, wenn es nicht relevant ist.

Ricket
quelle
+1: Es wäre allerdings einfacher, wenn ich einen Weg finden würde, die Texturen irgendwie zu generieren. GlPolygonMode kann aufgrund eines späteren OpenGL ES-Targetings (iStuff) nicht verwendet werden.
Kornel Kisielewicz
2

Ich weiß, es ist wahrscheinlich nicht das, wonach Sie suchen, aber es sieht so aus, als ob Vector Tanks nur strukturierte Modelle verwendet. Die Textur verleiht dem Drahtrahmen das Aussehen, es läuft auf meinem iPod touch, der Shader nicht unterstützt.

Dave
quelle
Ich weiß, ich weiß, aber ich könnte auch Bilder von Subversion einfügen, und es werden überhaupt keine Texturen verwendet (AFAIK)
Kornel Kisielewicz
2

Ich habe es nur mit hochauflösenden, meist schwarzen Texturen gesehen, wie sie in Tron 2.0 enthalten sind. Ihre Texturen sind fast universell entweder ein flaches Schwarz mit einem dicken, farbigen Rand oder eine einfache Perlin-Noise-Textur.

Sie führten eine einfache Nachbearbeitung durch , um den Glow-Effekt zu erzielen.

greyfade
quelle
+1: Ich kannte den Artikel, aber danke für die Erinnerung - es ist in der Tat ein guter Artikel (und hilft bei dem zweiten Problem, das ich hatte - glühen).
Kornel Kisielewicz
1

Sie können eine einfache Distanzfunktion im Pixel-Shader ausprobieren. Vielleicht so etwas wie baryzentrische Koordinaten (speichern Sie verschiedene RGB-Werte an den Scheitelpunkten und der Rasterer erledigt den größten Teil der Arbeit für Sie).

Dann hat Ihr Pixel-Shader die Informationen, die er benötigt, um festzustellen, wo auf einem Polygon sich das aktuelle Pixel befindet - in der Nähe eines Scheitelpunkts, in der Nähe einer Kante oder in der Mitte ...

Ich vermute, dass es in der Praxis einfacher wäre, es zu texturieren.

JasonD
quelle
1

Wie wäre es damit: Nehmen Sie Ihr Modell und fasen Sie die Kanten ab, die als Konturen angezeigt werden sollen. Färben Sie die Gesichter, die erstellt wurden, mit einem hellen undurchsichtigen Grün, während alle alten Gesichter ein dunkles, durchscheinendes Grün haben.

Dies erfordert überhaupt keine Verwendung von Pixel-Shadern. (Tatsächlich auch keine Texturen, nur Gesichtsfarben.) Es ist eine gewisse Modellvorverarbeitung von Ihrer Seite erforderlich, die möglicherweise ein Problem darstellt oder nicht.

Sie können den Umriss nicht sehen, wenn die abgeschrägte Oberfläche senkrecht zur Ansicht ist. Wenn Sie das stört, können Sie die abgeschrägte Oberfläche etwas herausdrücken und die Extrusion so färben, als hätten Sie die Abschrägung. Sie können mit verschiedenen Abschrägungs- und Extrusionsgraden herumspielen, um dünnere und dickere Linien zu erzeugen.


quelle