Geometrie

3D-Spiele, die auf den meisten Geräten laufen, beginnen mit 3D-Grafiken, die so konzipiert wurden, dass sie Grafikprozessoren optimal nutzen. In diesem Leitfaden werden Optimierungen und Best Practices für 3D-Assets auf Mobilgeräten vorgestellt, mit denen du die Leistung deines Spiels verbessern und den Energieverbrauch minimieren kannst.

Teile dieses Artikels basieren auf Werken, die von Arm Limited stammen und urheberrechtlich geschützt sind.

Definition von Geometrie

Geometrie oder Polygongitter ist eine Sammlung von Eckpunkten, Kanten und Flächen, die die Form eines 3D-Objekts bilden. Das kann ein Auto, eine Waffe, eine Umgebung, ein Charakter oder jede Art von visuellen Elementen im Spiel sein.

Abbildung 1: Die Eckpunkte, Kanten und Dreiecke eines Würfels.

Die Geometrie besteht aus folgenden Teilen:

  • Vertices:Das Substantiv für den Scheitelpunkt. Diese Punkte definieren die Struktur eines Objekts im 3D-Raum.

  • Kanten:Zwei Eckpunkte, die durch eine gerade Linie verbunden sind.

  • Dreieck:Drei Eckpunkte, die durch drei Kanten miteinander verbunden sind, ergeben ein Dreieck. Dies wird manchmal als Polygon oder Fläche bezeichnet. Innerhalb von 3D-Software wie 3ds Max, Maya oder Blender arbeiten Sie normalerweise mit Quads. Quads sind ein vierseitiges Polygon und lassen sich leichter ändern und bearbeiten. Nach dem Rendern werden diese Polygone als Dreiecke auf dem Bildschirm angezeigt.

In den folgenden Abschnitten erfahren Sie mehr über Geometrie:

Verwendung von Dreiecken und Polygonen

In diesem Abschnitt werden die Best Practices für die Verwendung von Dreiecken und Polygonen beschrieben. Dazu gehören die folgenden Empfehlungen:

Anzahl der Dreiecke verringern

Wenn Sie zu viele Dreiecke einfügen, leidet die Leistung des Spiels.

Verwenden Sie so wenige Dreiecke wie möglich. Wir empfehlen, nur so viel zu verwenden, dass die gewünschte Qualität erreicht wird. Berücksichtige die Auswirkungen auf die Leistung, wenn du Inhalte für ein mobiles Spiel erstellst. Das Verarbeiten von Eckpunkten ist teuer. Je weniger Eckpunkte, desto besser ist die Gesamtleistung des Spiels. Je weniger Dreiecke Sie verwenden, desto mehr Geräte kann das Spiel ohne leistungsstarke GPU ausführen.

In der folgenden Abbildung siehst du, wie du die Qualität mit weniger Dreiecken aufrechterhalten kannst:

Das Objekt auf der linken Seite hat 584 Dreiecke, das Objekt auf der rechten Seite 704 Dreiecke.

Abbildung 2: Vergleich von zwei Objekten mit unterschiedlichen Dreiecken, die im schattierten Modus gleich aussehen. Aus dem linken Objekt wurden Kanten entfernt, die nicht zur Silhouette beitragen.

Auf mobilen Plattformen beträgt die gemeinsame maximale Anzahl von Eckpunkten für ein einzelnes Mesh-Netzwerk 65.535. Für maximale Kompatibilität muss dieser Wert unterschritten werden.

Der Grund für diese Einschränkung besteht darin, dass alle GPUs nur die Unterstützung für 16-Bit-Indizes garantieren,die einen Bereich von 0 bis 65.535 Eckpunkten darstellen können. Die meisten modernen GPUs unterstützen 32-Bit-Indizes, die einen Bereich von 0 bis 4.294.967.295 Eckpunkten darstellen. Wenn Sie bei der Verwendung von 16-Bit-Indizes den unterstützten Bereich überschreiten, fehlt oder falsch gerenderte Geometrie.

Du kannst das Spiel immer auf allen Geräten ansehen und testen, auf denen du es veröffentlichen möchtest, anstatt auf einem PC-Monitor. Einige Modelle mit einem hohen Detailgrad werden möglicherweise nicht korrekt gerendert oder sind auf einem Mobilgerät möglicherweise nicht sichtbar.

Wir empfehlen, mehr Dreiecke für Objekte im Vordergrund und weniger für Hintergrundobjekte zu verwenden. Dies ist vorteilhafter bei Spielen mit einem statischen Point-of-View (POV) der Kamera. Das folgende Beispiel zeigt eine angemessene Verwendung von Details für verschiedene Objekte.

Details in Objekten im Vordergrund werden mit Dreiecken erstellt. Hintergrunddetails sind auf flachen Oberflächen eingebrannt.

Abbildung 3: Dieses Beispiel zeigt den hohen Detaillierungsgrad von Objekten im Vordergrund im Vergleich zu Hintergrundobjekten.

Die maximale Anzahl von Dreiecken, die Sie für ein Modell verwenden sollten, variiert je nach Gerät und Inhalt. Wenn sich mehr Objekte auf dem Bildschirm befinden, verwenden Sie weniger Dreiecke für jedes Modell. Wenn nur zwei oder drei Objekte angezeigt werden, können sie mehr Dreiecke enthalten.

Das folgende Beispiel zeigt zwei Modelle von verschiedenen Demos. Die Circuit VR-Demo hat nur eine Roboterfigur. Da es nur ein Objekt gibt, hat das Robot-Modell eine höhere Anzahl an Dreiecken. Das andere Modell stammt aus der Armeen-Demo. In dieser Demo befinden sich Hunderte von Soldaten in jedem Frame, sodass jeder Soldat weniger Dreiecke hat.

Abbildung 4: Vergleich der Anzahl der Dreiecke in zwei verschiedenen Anwendungsfällen Links hat der CircuitVR-Roboter 11.000 Dreiecke. Rechts hat der Armee Soldier 360 Dreiecke.

Verwendungsbeispiel für das Dreieck

Die folgende Abbildung zeigt ein Beispiel für eine Anzahl von Dreiecken, die in der technischen Demo der Armee verwendet wurden.

In der Armee-Demo, einer in Unity integrierten 64-Bit-Demoversion für Mobilgeräte, ist die Kamera statisch und enthält viele animierte Charaktere. Insgesamt rendert jeder Frame etwa 210.000 Dreiecke. Dank dieser Dreiecksanzahl kann die Demo stabil mit ungefähr 30 Bildern pro Sekunde (fps) ausgeführt werden.

Abbildung 5: Ein Beispiel-Rendering aus der Tech-Demo von The Armies, das die Anzahl der verwendeten Dreiecke zeigt.

Die größten Objekte, die Kanonentürme, sind etwa 3.000 Dreiecken,da sie einen großen Teil des Bildschirms einnehmen.

Die Figuren bestehen jeweils aus etwa 360 Dreiecken. Da es so viele dieser Modelle gibt und sie nur aus der Ferne sichtbar sind, verwenden sie nicht viele Dreiecke. Aus Sicht der Kamera sehen sie passend aus.

Abbildung 6: Ein Blick auf Soldaten im niedrigen Dreieck in der Armeen-Technologie-Demo.

Dreiecke in wichtigen Bereichen verwenden

Eckpunkte sind auf mobilen Plattformen sehr teuer. Damit Ihr Verarbeitungsbudget nicht verschwendet wird, sollten Sie Eckpunkte in Bereichen platzieren, die zur visuellen Qualität des Spiels beitragen. Kleine Details eines 3D-Objekts sind auf dem letzten Bildschirm des Spiels möglicherweise nicht sichtbar. Aufgrund der kleinen Bildschirmgröße und der Platzierung von 3D-Objekten sind winzige Details möglicherweise unmöglich zu sehen.

Anstelle von feinen Details sollten Sie sich auf große Formen konzentrieren, die zur Silhouette beitragen. Das folgende Bild zeigt ein Beispiel für den Fokus auf die Silhouette:

Abbildung 7: Die rote Linie um den Roboter herum repräsentiert seine Silhouette.

Wir empfehlen, weniger Dreiecke für Bereiche zu verwenden, die aus dem Blickwinkel der Kamera nicht sehr oft zu sehen sind. Zum Beispiel die Unterseite eines Autos oder die Rückseite eines Kleiderschranks. Wenn ein Teil eines Objekts nie sichtbar ist, löschen Sie ihn.

Das Löschen eines Teils eines Objekts muss vorsichtig erfolgen und kann die Wiederverwendbarkeit des Objekts einschränken. Wenn Sie beispielsweise den unteren Teil eines Tabellennetzes löschen, fällt dem Nutzer der gelöschte Abschnitt auf, wenn die Tabelle verkehrt herum platziert wird.

Modellieren Sie kleine Details nicht mit hochdichten Dreiecksmaschen. Nutzen Sie Texturen und normale Karten für feine Details. Im folgenden Beispiel sehen Sie dasselbe Mesh-Netzwerk mit und ohne normale Karte.

Abbildung 8: Vergleich eines Modells mit und ohne angewendete normale Karte

Mikrodreiecke entfernen

Mikrodreiecke sind sehr kleine Dreiecke, die nicht zum Endbild einer Szene beitragen.

Bei allen 3D-Objekten mit hoher Polygonanzahl treten Probleme mit Mikrodreiecken auf, wenn sie von der Kamera wegbewegt werden. Es gibt keine branchenübliche Definition für Mikrodreiecken, aber Mikrodreiecken werden im endgültigen Bild in der Regel als Dreiecke verstanden, die kleiner als 1 bis 10 Pixel sind. Mikrodreiecke sind schlecht, da die GPU die gesamte Verarbeitung dieser Dreiecke übernehmen muss, auch wenn sie nicht zum endgültigen Bild beitragen.

Mikrodreiecke haben zwei Ursachen:

  • Details, die zu klein sind und aus vielen Dreiecken bestehen.
  • Objekte, die weiter von der Kamera entfernt sind und viele Dreiecke haben

Abbildung 9: Auswirkung der Entfernung auf Mikrodreiecken.

In Abbildung 9 hat der Roboter im Vordergrund keine Mikrodreiecke. Der Hintergrundrobot tut das, weil jedes Dreieck nur 1 bis 10 Pixel groß ist.

Abbildung 10: Vergleich von Mikrodreiecken an detaillierten Modellen Die meisten Dreiecke im markierten Bereich sind zu klein, um sie auf dem Smartphone-Display zu sehen.

Verwenden Sie für ein Objekt, das weiter von der Kamera entfernt ist, die Detailebene (LOD). Dies reduziert die Komplexität eines Objekts und erleichtert es. Das Ergebnis ist ein Objekt, das weniger dichtes Dreieck hat.

Modellieren Sie keine Details mit vielen Dreiecken. Für diese Art von feinen Details sollten Texturen und normale Maps verwendet werden. Sie können Eckpunkte und Dreiecksdetails zusammenführen, die zu klein sind und nicht zum endgültigen Bild beitragen.

Es ist wichtig, die Anzahl der Mikrodreiecke zu reduzieren, da diese die Speicherbandbreite beeinträchtigen können. Mehr Dreiecke führen dazu, dass mehr Daten an die GPU gesendet werden. Bei einem Mobilgerät kann sich dies auf die Akkulaufzeit auswirken. Ein erhöhter Stromverbrauch kann zu thermischer Drosselung führen, wodurch die maximale Leistung der GPU eingeschränkt wird.

Lange, dünne Dreiecke vermeiden

Dies sind Dreiecke, die, wenn sie im endgültigen Bild gerendert werden, in einer Dimension kleiner als 10 Pixel sind und sich weit über den Bildschirm erstrecken. Lange, dünne Dreiecke sind in der Regel aufwendiger zu verarbeiten als andere.

In der folgenden Abbildung hat die Abschrägung der Säule aus der Entfernung ein langes, dünnes Dreieck. Nahaufnahmen stellen kein Problem dar.

Abbildung 11: Die Abschrägung der Säule ist ein langes, dünnes Dreieck.

Wir empfehlen, lange dünne Dreiecke aus allen Objekten zu entfernen, wenn dies möglich ist.

Bei glänzenden Objekten können lange und dünne Dreiecke ein Lichtflackern verursachen, wenn sich die Kamera bewegt. Die LoD-Funktion kann lange, dünne Dreiecke entfernen, wenn ein Objekt weit von der Kamera entfernt ist.

Wenn möglich, sollten alle Dreiecke nah beieinander liegen. Dadurch erhalten die Dreiecke mehr Fläche und weniger Kanten. Lange, dünne Dreiecke haben eine schlechtere Leistung als größere Dreiecke im Allgemeinen. Weitere Informationen zur Fläche des Dreiecks finden Sie unter Triangulation.

Detailebene

Die Detailebene (Level of Detail, LOD) bezieht sich auf ein Verfahren, das die Komplexität verringert, wenn Objekte vom Betrachtungsobjekt weiter entfernt werden. Die gängigste Form von LOD umfasst mehrere Versionen eines Mesh-Netzwerks mit zunehmend weniger Eckpunkten. LOD reduziert nicht nur die Anzahl der zu verarbeitenden Eckpunkte, sondern vermeidet auch das Problem von Mikrodreiecken. Es sieht auch besser bei Objekten aus, die weiter weg in der Szene platziert sind.

Wir empfehlen, nach Möglichkeit die LOD zu verwenden. Fokus auf die Silhouette des Objekts. Sie sollten sich auf flache Flächen konzentrieren, auf die die Scheitelpunktreduzierung ausgerichtet werden soll. Die folgende Abbildung zeigt die Verwendung der LOD, die auf das Robotermodell angewendet wird.

Links befindet sich der Roboter mit den meisten Details und der größten Anzahl an Dreiecken. Rechts ist der Roboter weiter weg, hat weniger Details und verwendet weniger Dreiecke.

Abbildung 12: Vergleich der Anzahl der Eckpunkte, die bei den LOD-Änderungen verwendet werden.

In Abbildung 12 ist der Unterschied zwischen einem Objekt, das aus 200 oder 2.000 nahen entfernten Dreiecken besteht,schwer zu erkennen. Ein Objekt mit mehr Dreiecken verursacht hohe Ressourcenkosten, verbessert das Aussehen aus der Ferne jedoch nicht.

Abbildung 13: Vergleich entfernter Modelle mit unterschiedlicher Dreiecksanzahl.

LOD als Konzept kann auch auf die Shader-Komplexität und Texturauflösung angewendet werden. Bei einer niedrigeren LOD können andere Materialien mit einfacheren Shadern und weniger Texturen verwendet werden. Außerdem sollten Sie für Texturen Mipmaps verwenden, damit Texturebenen mit geringerer Auflösung auf weit entfernte Objekte angewendet werden. Diese Messungen steigern die Leistung, was zu einer Steigerung der Datenmenge führt.

Die Funktion wird nicht für Spiele empfohlen, bei denen die Kamera und die Objekte statisch sind. Der größte Vorteil von LOD besteht für Objekte, die sich auf die Kamera zu und von ihr weg bewegen. Statische Objekte bewegen sich nicht, sodass die LOD nicht vorteilhaft ist.

Abbildung 14: Eine Szene mit einer statischen Kamera aus der Armies-Technologiedemo, in der keine LOD verwendet wird.

LOD-Verhältnisse

Verwenden Sie ein konsistentes Verhältnis, wenn Sie die Anzahl der Dreiecke für die Detailebene reduzieren. Wir empfehlen, die Dreiecke für jede Ebene um 50% zu reduzieren.

Verwenden Sie die Detailebene nicht für einfache Objekte. Objekte mit einer geringen Anzahl von Dreiecken profitieren nicht von der LOD. Das folgende Beispiel aus der technischen Demo von The Armies zeigt, wie das Spiel mit einem statischen Bild und niedrigen Dreiecksobjekten aussieht.

Abbildung 15: Ein Vergleich zwischen Modellen, wenn die LOD abnimmt.

Überprüfen Sie, ob sich die LOD-Werte im richtigen Abstand zur Kamera ändern. Orientieren Sie sich bei Ihrer Analyse daran, wie sie im Spiel eingesetzt werden.

Abbildung 16: Vergleich der Nahaufnahme und der beabsichtigten Entfernung eines LOD 3-Modells.

Es gibt keine harte Zahl dafür, wie viel LOD für ein Objekt angemessen ist. Sie hängt von der Größe des Objekts und davon ab, wie wichtig es ist. Beispielsweise kann eine Figur in einem Actionspiel oder ein Auto in einem Rennspiel mehr LoD-Levels haben als kleine Hintergrundobjekte wie ein Baum.

Denken Sie daran, dass zu viele LOD CPU-Ressourcen kostet. Es ist mehr Verarbeitungsleistung erforderlich, damit die CPU entscheidet, welche LOD angezeigt werden soll. LODs kosten Speicher, wodurch sich die Dateigröße und die VRAM-Nutzung erhöhen. Das Erstellen und Überprüfen der LOD-Modelle nimmt auch mehr Zeit in Anspruch.

Es gibt zwei Möglichkeiten, LOD-Mesh-Netzwerke zu erstellen: manuell und automatisch.

  • Sie können LOD-Mesh-Netzwerke mit jeder 3D-Software manuell erstellen.
    • Entfernen Sie dazu Kantenschleifen oder reduzieren Sie die Anzahl der Eckpunkte des 3D-Objekts.
    • So hat der Künstler die meiste Kontrolle über das Endprodukt, kann aber auch länger dauern.
  • LOD-Mesh-Netzwerke können automatisch erstellt werden.
    • Sie können einen Modifikator in einem 3D-Paket wie ProOptimizer in 3ds Max verwenden oder LOD-Mesh-Netzwerke in Maya generieren.
    • Dazu können Sie Software zur Generierung von LODs wie Simplygon oder InstaLOD verwenden.
    • Einige Spiel-Engines verfügen über eine automatische Funktion zum Generieren von LODs, mit der Sie LOD-Mesh-Netzwerke erstellen und anwenden können.

Best Practices

Es gibt weitere Techniken, mit denen du die für dein Spiel erforderlichen Ressourcen reduzieren kannst, die auch die Grafikqualität aufrechterhalten.

Glättungsgruppen oder benutzerdefinierte Scheitelpunktnormale

Verwenden Sie Glättungsgruppen oder benutzerdefinierte Normalen von Scheitelpunkten, um die Härte einer Kante zu definieren und das Aussehen eines Modells zu ändern. Mit einer Glättungsgruppe wird bei Low-Poly-Art-Richtung die Schattierung verbessert. Eine Glättungsgruppe wirkt sich auch auf die Aufteilung der UV-Inseln und die Qualität normaler Karten beim Verankern aus.

Ein Beispiel für eine Glättungsgruppe. Auf der linken Seite hat der Roboter eine Glättungsgruppe angewendet.

Abbildung 17: Vergleich eines Modells mit und ohne Glättungsgruppe.

Wenn Sie eine Glättungsgruppe in einem 3D-Modell implementieren, muss sie aus der 3D-Software exportiert und in die Suchmaschine importiert werden.

Mesh-Netzwerktopologie

Achten Sie beim Erstellen eines neuen 3D-Assets darauf, dass es eine übersichtliche Topologie hat. Eine saubere Topologie ist für Charaktere und andere Objekte, die animiert und verändert werden, unerlässlich. Die Topologie muss nicht perfekt sein. Denken Sie daran, dass Endnutzer den Wireframe nicht sehen können und dass Texturen und Materialien einen größeren Einfluss auf das Erscheinungsbild des Modells haben.

Abbildung 18: Die Topologie, der Wireframe und die endgültige Version eines Felsens aus der Armies Tech Demo.

Übertreibung der Form

Sie können einige Formen übertreiben, damit Ihre Modelle leichter zu interpretieren sind. Das hängt stark vom Typ und Stil Ihres Spiels ab. Da die Bildschirme von Mobilgeräten klein sind, kann es schwierig sein, bestimmte, sehr kleine Formen zu erfassen. Eine Übertreibung dieser Formen kann den Nutzenden helfen, die Form auch aus großer Entfernung zu erkennen.

Du kannst zum Beispiel Figuren mit größeren Händen gestalten, damit sie besser zu sehen sind.

Abbildung 19: Beispielmodell, das zur besseren Sichtbarkeit übertriebene Proportionen zeigt.