Bei der Beantwortung dieser Frage für swquinn wurde eine sachdienlichere Frage aufgeworfen, auf die ich gerne Antworten hätte. Ich werde unsere eigene Strategie veröffentlichen (verspreche, ich werde sie nicht als Antwort akzeptieren), aber ich würde gerne andere hören.
Im Einzelnen: Wie legen Sie ein vernünftiges Budget für Ihr Content-Team fest? Normalerweise lautet eine der allerersten Fragen in einer Entwicklung: Wie hoch ist unser Polygonbudget? Natürlich ist es heutzutage selten, dass Vertex / Poly Count allein der limitierende Faktor ist, stattdessen spielen Shader-Komplexität, Füllrate und Beleuchtungskomplexität eine Rolle.
Was das Inhaltsteam möchte, sind einige harte Zahlen / Grenzen, an denen es arbeiten kann, sodass es eine vernünftige Erwartung hat, dass sein Inhalt, sobald er tatsächlich in die Engine gelangt, nicht zu schwer sein wird. Angesichts der Tatsache, dass "es kommt darauf an" keine besonders nützliche Antwort ist, würde ich gerne eine Strategie hören, mit der ich ihnen praktikable Grenzen setzen kann, ohne a) irreführend oder b) falsch zu sein.
quelle
Antworten:
Nach meinem Verständnis ist es viel einfacher, die Komplexität eines Modells zu reduzieren, als Details für ein Modell hinzuzufügen, das gehäutet und manipuliert wurde. Ich weiß, dass einige Unternehmen dies ausnutzen, indem sie sehr detaillierte Vermögenswerte bündeln und sie je nach Situation verkleinern.
Valve macht das mit ihren NPCs. Die NPCs werden extrem detailliert ohne jede Art von Zuordnung modelliert und dann auf ein Maß verkleinert, das von der aktuellen Technologie und den Tricks akzeptiert wird, z. B. verschiedene Zuordnungstechniken, die auf detaillierten Modellen basieren (oder sogar automatisch erstellt werden).
Dies hilft auch bei der Zukunftssicherung, da Sie die Assets niemals neu erstellen müssen, sondern sie nur für jedes neue Projekt neu erstellen müssen. Dies hat auch den Vorteil, dass nicht gewartet werden muss, bis ein Team ein kontextspezifisches Benchmarking durchgeführt hat, bevor mit der Entwicklung der Assets begonnen werden kann. Die Künstler können ab dem 1. Tag voll einbezogen werden.
quelle
Okay, also ist unsere Strategie:
Schließlich: Seien Sie konservativ mit Ihren Zahlen. Rendern ist nicht das einzige, was Ihr Spiel tun muss. Entscheiden Sie also, welchen Anteil Ihres Frames Sie für das Rendern ausgeben möchten, und legen Sie ihn als Ziel fest. Wenn Sie beispielsweise zwei Drittel Ihres Frames für das Rendern mit 30 fps ausgeben möchten, sollten Sie in Ihren Tests 1s / 22ms (45 fps) als Ziel festlegen.
Aus all dem sollten Sie in der Lage sein, Beispielszenen zu geben. Hier ist beispielsweise eine Szene mit 200K-Polygonen, 5 statischen Lichtern und nicht mehr als 3 dynamischen Lichtern pro Modell mit 15 Zeichen mit 50K-Polys und 30 Bones. Sie läuft mit 60 fps und belegt 30 MB Speicher.
quelle
Vertex Count
Ich habe über 15 Jahre lang "Polygon Count" recherchiert. Es gibt keine strikte Methode, um festzustellen, wie viele Grenzen Sie haben, insbesondere bei moderner Software und Hardware. Limits waren viel nützlicher in Motoren, die nur 4.000 Dreiecke für ein ganzes Level unterstützten. Jetzt werden Sie feststellen, dass die meisten Objekte in der Spielumgebung diese Werte einzeln überschreiten.
Entscheidend ist letztendlich, was die Engine mit den Polygonzügen macht.
Wenn die Engine jedes Modell rendert, übernimmt sie Ihre UV-Kartenkoordinaten, die Textur / das Material, die in den Dreiecken dargestellt sind, und erstellt Dreiecksstreifen. In den meisten Fällen wird ein Dreiecksfächer in separate Dreiecksstreifen pro Dreieck aufgeteilt. Dies erhöht die Anzahl der Dreiecksstreifen und verringert die Leistung.
Ein Paradebeispiel für die Befestigung ist die flache Oberseite eines Zylinders. 3D-Pakete richten im Allgemeinen einen Dreiecksfächer mit einem Scheitelpunkt in der Mitte ein. Ich lösche die Kanten und den mittleren Scheitelpunkt und erstelle dann Quads über die Fläche. Dies sollte dann in einen einzelnen Dreiecksstreifen anstatt in mehrere einseitige Streifen trianguliert werden, ohne die Anzahl der Polygone zu ändern.
Nehmen Sie die Anzahl der Polygone als Richtlinie und achten Sie darauf, wie Sie das Netz modellieren und mit UV-Map abbilden. Weniger Spalten im Netz, wenn UV-Mapping oft vorteilhafter ist.
Als nächstes überlegen Sie, was mit normalen Karten gefälscht werden kann. Ein flaches Gesicht mit vielen Details kann in der Regel normal abgebildet werden. Kurven müssen nur rund sein, wenn Sie eine Silhouette sehen können. Wenn Sie die gekrümmten Gesichter von vorne betrachten, sollten Sie den Unterschied zwischen Ihrem hochauflösenden und dem spielauflösenden Assett nicht bemerken. Die Silhouette macht den Unterschied in Ihrem Modell aus, wenn es sich um normale Karten handelt. Silhouette kann jetzt mit DirectX 11 mithilfe von Tessellation und Verschiebungszuordnung geändert werden.
Spieldesign
Beachten Sie beim Entwerfen Ihres Spiels Folgendes:
Entscheiden Sie anhand der Spiel- und Ansichtstypen, wie tief die Ansicht sein soll. Wirst du entfernte Objekte sehen und mit welcher Klarheit? Machst du etwas mit eingeschränkter Sicht, wie einen Korridor-Schützen? (zB Gears of War) Machst du etwas, das sich in offenen Landschaften frei bewegt? (zB Skyrim)
Sobald Sie wissen, wie es aussehen sollte, können Sie nach ähnlichen Spielen suchen.
Die Animation begrenzt dann Ihre Fähigkeit, die Anzahl der Polygone zu erhöhen. Bei statischen Gittern ist alles, was an derselben Position verbleibt, auf der GPU und der CPU am billigsten. Vor allem, wenn es sich nicht um physikalische Objekte handelt. Für Physikobjekte können Sie häufig einfache Kollisionshüllen und komplexe visuelle Netze erstellen. In den meisten Spielen gibt es nicht genügend Interaktion, um den Unterschied zu bemerken. Die Animation bewegt Ihr Modell dreidimensional mit mehreren Knochen pro Scheitelpunkt, wobei die Gewichtung der einzelnen Scheitelpunkte gemischt wird. Dies kann in Bezug auf die CPU-Zeit teuer sein, was zu Konflikten mit KI und softwarebasierter Physik führen kann. Je mehr Vertices von der Anzahl der Bones im gesamten Modell betroffen sind, desto geringer ist die CPU-Leistung. Dies ist der andere Grund, warum Spielfiguren als "Kunst" gelten. Es ist sehr schwierig, eine Polygonbegrenzung zu definieren.
Mein Beispiel
Ich benutze die UDK, die einen langsamen Third-Person-Shooter macht, mit einer begrenzten Anzahl von Spielern und NPCs, die jederzeit auf dem Bildschirm zu sehen sind. Dafür strebe ich ungefähr 10.000 Dreiecke pro Spieler an, 5.000 Dreiecke für typische, generische Feinde und, wenn ich einen "Boss" -Stil-Charakter erschaffe, ungefähr 15.000. Darüber hinaus werden Waffen für die dritte Person rund 4.000 Dreiecke sehr detailliert. Fahrzeuge um 10.000 Dreiecke. Alles erfordert Detailgenauigkeit, da ich große Sichtabstände benötige.
Wenn ich eine erste Person machen würde, würde ich die Arme auf ungefähr 2.000 Dreiecken, die Waffe auf ungefähr 5.000 Dreiecken, mit normalen Mappings für jede basieren.
Fazit
Das ist es, was "es kommt darauf an" wahrscheinlich bedeutet, aber ich dachte, es könnte einige Dinge klarstellen, über die sich die Leute oft wundern.
quelle
Eine Methode, die ich mir vorstellen kann, besteht darin, automatisch erstellte Szenen zu verwenden, um statistische Daten zu generieren, anhand derer Sie die gesuchten Informationen entziffern können.
Holen Sie sich ein großes Volumen von Assets (möglicherweise automatisch generiert).
Erstellen Sie ein Tool zum Generieren von Szenen, die von Ihrer Engine mithilfe des Asset-Pools geladen werden können.
Führe einen Bot aus, der deine Kamera durch die Szene bewegt. Möglicherweise möchten Sie auch einige andere Bots ausführen, um die Szene dynamischer zu gestalten, einschließlich Lichtquellen.
Sammle so viele Informationen wie möglich und wirf sie in eine Datenbank. FPS, Poly Count, Shaderwechsel, Anzahl der Lichter, Draw Calls etc.
Machen Sie einige Werkzeuge, um die Daten in Ihrer Datenbank auf so viele Arten wie möglich anzuzeigen.
Dieser Link kann einige weitere Ideen liefern: Dead Rising Tools
quelle