Jump to content
Unity Insider Forum
IRO

Polygonrichtwerte

Recommended Posts

Ich habe eine Frage, bin neu hier, ich entschuldige mich schonmal dafür falls es hier schon irgendwo/irgendwie in irgendeiner Form steht (hab wirklich gesucht und wenn ich was ähnliches fand war es oft von vor paar Jahren).

 

Gibt es zufällig Richtwerte bzw. Beispiele aus anderen Spielen, wie viele Polygonen man im Schnitt für z.B. Waffen, Häuser, Charaktere etc. benutzt?

 

Ich frag das weil ich mit Blender 3D an 3D Modellen arbeite, ich plane nen simplen, aber doch hübschen Ego Shooter zu bauen. Mein Problem ist jetzt aber, das wenn ich eine Waffe modelliere, dann sieht sie erst richtig gut aus, wenn sie aus zigtausend Polygonen besteht und dann denke ich immer, das läuft doch niemals flüssig.

 

Auf der anderen Seite spiele ich gerade das neueste CoD und die Waffen sehen super aus, vieles liegt sicherlich an Bump und Normalmaps, aber die Rundungen etc. so halbwegs bekomme ich das auch in etwas so hin, nur bin ich mir nie sicher, ob das am Ende überhaupt noch läuft.

 

Deshalb gibt es da zufällig Angaben, wie detailliert bei solchen Spiele die 3D Modelle sind?

Share this post


Link to post
Share on other sites

Es gibt da so ein paar Dinge, die das beeinflussen. Am Ende würde ich es einfach immer testen.

  1. Weniger Polygone sind nicht immer besser. Alles unter ein paar Tausend Polygonen pro Draw Call ist Verschwendung, da gleich schnell gerendert auf der Grafikkarte. Die können das.
  2. Weniger Polygone haben, dafür aber mehrere Objekte mit demselben Material, ist aber wieder okay - dann baut Unity durch sog. "Batching" Draw Calls mit mehreren Objekten auf einmal, sodass sie quasi als ein Objekt gerendert werden. Besonders bei statischen Objekten ("static Batching") bringt das viel.
  3. Dinge im Vordergrund dürfen gerne einen Haufen Polygone haben, so wie Waffen. Die sind schließlich im Vordergrund.
  4. Benutzt man Level of Detail (LOD), werden entferte Objekte mit weniger Polygonen gerendert. Dann dürfen sie natürlich im Normalzustand mehr haben, weil der ja nur angezeigt wird, wenn man nah dran ist - und dann sind die Objekte ebenfalls im Vordergrund.
  5. Durch Culling (Frustum Culling passiert automatisch, Occulsion Culling muss man einbauen) werden Objekte gar nicht erst gerendert, wenn man sie nicht sieht. Somit fällt ein gewisser Teil der Gesamtpolygonzahl jeden Frame weg.

Ich habe keine genauen Zahlen im Kopf, wie viele Polygone auf aktuellen Grafikkarten für welche Art von Modell okay sind. Aber wie die Liste schon sagen soll: Das variiert sowieso stark, je nach dem, was man sonst noch so macht.

Aber mal so blind geschätzt würde ich sagen, dass der fünfstellige Bereich für eine Ego-Shooter-Waffe voll in Ordnung ist und alles andere mit mindestens vierstellig vielen Polygonen in Ordnung ist.

  • Like 1

Share this post


Link to post
Share on other sites

Okay, das hört sich schonmal gut an. Ich bin schon gespannt, wenn ich meine ersten Unity Engine Schritte mache, wie das aussieht. Hab halt die Sorge, das ich mir da viel Mühe gebe und am Ende alles für die Katz war.

Share this post


Link to post
Share on other sites

Im "schlimmsten" Fall jagst du dein High-Poly-Modell am Ende durch einen Retopo-Algorithmus, der die Polygone reduziert und Normal Maps erzeugt, die den Unterschied wieder ausgleichen sollen. So läuft das bei professionellen Produktionen sowieso.

  • Like 1

Share this post


Link to post
Share on other sites

Ergänzend zum Post von Sascha kann ich noch sagen, es kommt auch darauf an, für welche Plattform du entwickelst. Bei Spielen auf dem Smartphone sollte man einiges an Polygonen zusammenstreichen (low poly modelle). Ebenso kommt es darauf an, ob du das 3D-Modell des Hauptprotagonisten eines Spiel entwirfst (der in der 3rd person view ständig von nahem zu sehen ist), oder das 3D-Modell eines NPCs der im Spiel nur kurz zu sehen ist. Generell gilt aber so wenig Polygone und Materialien für dein 3D-Modell zu verwenden ohne das die angestrebte Endqualität zu stark darunter leidet. Polygonreducer funktionieren leider nur bis zu einem gewissen "Ausmaß" zufriedenstellend, d.h. du kannst aus einem 100000 poly modell damit kein 1000 poly Modell erzeugen, das optisch noch mit gutem Gewissen verwendbar ist (das Ergebnis hängt auch von der Art des 3D-Modells ab). Aus diesem Grund kann es oft auch Sinn machen Modelle z.b. in 3 Ausbaustufen zu entwerfen: high poly, mid poly und low poly. Diese können dann vom LOD System der Engine auch direkt verwendet werden.

Share this post


Link to post
Share on other sites

Also es soll ein hübscher Ego Shooter für den PC werden, zumindest ist das erstmal mein Anspruch. Um Polygone/Zeit zu sparen, hab ich jetzt erstmal nur das erstellt, was man aus der Ego Sicht auch tatsächlich sieht, sprich nur die linke Seite des Gewehrs, nen Stück vom vom Kolben, keine Front etc.

 

Aktuell ist das halt leider alles bisschen "blindmodellieren" für mich, meine Sorge ist eben das nachher nichts richtig läuft. Was ich aber schonmal getestet habe ist die Unity Enigine, die lädt das Modell exakt so rein, wie es auch in Blender 3D aussieht.

 

So hab ich mir das aktuell vorgestellt (ob das jetzt gut aussieht oder nicht sei mal dahin gestellt), mein Modell hat hier auf dem Bild aktuell ca. 37K und mit geringere Subsurf ca. 15k und leider fehlt dort noch einiges.

 

6eeec8-1447047491.png

Share this post


Link to post
Share on other sites

Wie Sascha schon gesagt hat, da gibts keine festen Werte. Das ist alles ausprobieren und Erfahrung. Die goldene Regel ist nach wie vor: so wenig wie möglich und so viel wie nötig. Und das Massband wann es doch zu viel ist sind die Frames Per Seconds. Und da spielen viele Faktoren rein. Verwendete Shader, Levelgrösse, Anzahl Spieler, was für Code lässt du laufen? Und so weiter. Deswegen führt einfach kein Weg an einem Prototypen vorbei. Ausprobieren!

 

So hab ich mir das aktuell vorgestellt (ob das jetzt gut aussieht oder nicht sei mal dahin gestellt), mein Modell hat hier auf dem Bild aktuell ca. 37K und mit geringere Subsurf ca. 15k und leider fehlt dort noch einiges.

 

Hätte da ein Bild zu sehen sein sollen?

 

15K wären vermutlich okay. 37k wäre dann echt ein Fall fürs Ausprobieren. Kann funktionieren, muss aber nicht.

 

Mh, wenn du noch mit Subsurf arbeitest um Detail draufzubekommen fehlt dir wohl ein wichtiger Schritt in deiner Pipeline. Sculpten. Bei einem Spielecharacter kommt das Detail aus der Textur und der Normalmap. Nicht aus der Geometrie. Und die Normalmap bäckt man aus dem gesculpteten High Poly Mesh und der Low Poly Version, die man normalerweise aus der High Poly Version retopologisiert hat.

 

Hast du denn ein Programm um zu sculpten?

Share this post


Link to post
Share on other sites

Ja der Polycount...

 

Wichtig ist auch nicht deine gesamt Polycount anzahl im Spiel. Dein gesamtes Level kann einige Millionen Tris schon schon haben. Das wichtige ist eigentlich nur wie viel Tris sind Maximal auf einmal mit der Kamera sichtbar.

 

Unity würde deine Waffe auch mit 200000 Tris locker wegstecken aber du hast ja in deinem Level nicht nur diese Waffe sondern zb auch Gegner. Um eine gleichmäßige Qualität zu haben: Wenn deine Waffe zb 200000 Tris hätte, wie viele Tris haben den dann deine Charakter ?

Es macht ja keinen Sinn eine Waffe mit 200000 Tris zu machen und deine Charakter haben gerade mal 15000 da sie vielleicht sogar nur Roboter sind. Dies wäre aus Sicht des Spielers dann noch ziemlich langweilig.

 

Meine Meinung ist: Das es gerade Anfänger oft schwer fällt Objekt mit niedrigen Polycount zu bauen. Wer aber erstmal gut Modellieren kann und verstanden hat wie man den Polycount untenhalten kann. Der kann quasi alles bauen was er will. Und dann braucht man sich über den Polycount auch keine Gedanken machen.

 

Das ist meine Arcgun mit 13178 Quads aber rund 86924 Tris.

post-2400-0-43801400-1447060178_thumb.jpg

 

Das ist mein Syfy Panel es hat gerade mal 1444 Quads oder 2822 Tris.

Scfy Pannel:

post-2400-0-92641200-1447060284_thumb.jpg

 

Die Waffe ist sehr kompliziert mit viel Rundungen und Schläuche und Kabel. Vielleicht nicht so gut geeignet für ein Egoshooter. Aber dennoch möglich.

Share this post


Link to post
Share on other sites

Ja, ihr habt ja recht. Also mein Modell ist ja auch noch in Arbeit, da ist noch einiges an Einsparpotenzial, also ich modelliere immer erstmal und dann kommt eben die Feinarbeit.

 

Also mein aktueller Plan ist das ich ein paar Assets baue und dann mal schauen, ob ich mich in Unity überhaupt zurecht finde.

Share this post


Link to post
Share on other sites

So ich mache aktuell, winzige Fortschritte, was ein gut aussehendes "low poly" Videospiel Ego Shooter 3D Modell angeht.

 

Ich wollte noch eine Sache wissen und zwar, hab ich das richtig verstanden, wenn die Unity Engine ein Modell lädt, das nur die Polygone berechnet werden, welches sichtbar sind? Das wäre nämlich wirklich toll! :)

 

Sorry für die vielen Fragen, ich versuche zum ersten mal für ein Videopiel ein 3D Modell zu bauen.

Share this post


Link to post
Share on other sites

Unity nutzt viele Tricks damit alles besser und schneller leuft.

 

Normals: In Unity wird immer nur die Vorderseite der faces angezeigt. Wenn du zb einen Cube in Blender erstellst und eine Seite des Cubes löscht und die in Unity Exportierst wirst du an der Seite wo du das Face gelöscht hast, durch das Objekt hindurch sehen können.

Deswegen können bei falschen Normales Seiten eines körpers unsichtbar werden.

 

Camera Occlusion Culling:

Mit dem Kamera Occlusion Culling werden ganze Objekte nicht gezeichnet die von anderen Objekten verdeckt werden.

Du kannst zb ein Haus nur aus der Fassade bauen und das innere des hauses als extra Modelle verwenden.

 

Wenn du nun von aussen auf das Ausschaust, siehst du nur das Fassaden Teil und auch nur dieses wird von Unity gezeichnet. Wenn du das Haus aber betrittst, siehst du vielleicht den unteren Stock aber nicht mehr die Fassade.

Die Fassade wird nicht mehr gezeichnet dafür aber Lampen, Boden, Decken Möbel usw die im Flur stehen. usw

 

Unity berechnet ob ob ein Objekt durch ein anderen verdreckt wird, also eh nicht vom Player gesehen werden kann und blendet diese aus.

 

Dies passiert aber alles erst ingame während das spiel läuft.

Share this post


Link to post
Share on other sites

Das ist wirklich sehr gut zu wissen, also verstehe ich das richtig, wenn ich ein Ego-Shooter erstelle, dann sieht man im Prinzip nur die linke Seite von der Waffe und die rechte Seite wird dann im Spiel ausgeblendet?

Share this post


Link to post
Share on other sites

Nein deine Waffe ist ja ein Objekt also wird das komplette Waffe gezeichnet.

Was zb nicht gezeichnet wird sind die Rückseiten der Faces deiner Waffe. Wenn du eine zweite Kamera in deine Waffe setzen würdest, wäre deine Waffe von dieser Kamera aus nicht sichtbar. (Backface Culling)

 

https://forum.sketchfab.com/uploads/db4890/932/8e4aeef64d059b7a.jpeg

 

Hier siehst du Links das Objekte wo die Faces nach aussen zeigen.

Bei dem Objekt Rechts zeigen die Faces nach innen. Da der Vorderteil des Objekts nach innenzeigt kannst du dort ins Objekt Reinschauen.

Share this post


Link to post
Share on other sites

Ich würd sie ehrlich gesagt td drin lassen also keine Faces löschen..

Die paar hundert Faces die du dir dabei whs sparst fallen eh nicht ins Gewicht und du verbaust dir damit nur Möglichkeiten..

Z.B. könntest du dann keine 3D Preview mehr machen oder bei einer "Über-eine-Mauer-Kletter"-Animation dürfte man die Rückseite nicht sehen (z.B. wenn er sich mit der Waffe in der Hand auf der Mauer abstützt).

 

Ich weiß ja nicht ob du sowas vorhast aber, falls du dir die Option offen lassen willst, würde ich davon abraten solche "Opzimierungen" zu machen ^^

Share this post


Link to post
Share on other sites

Hier mal ein kleiner Workflow Tipp wie ich das machen würde:

 

1. Modelliere die halbe Waffe und Spiegel deine eine Seite immer wieder zum zu sehen wie die Waffe im gesamten aussieht.

2.Bearbeite nur eine Seite deiner Waffe.

3.Mach die UV deiner halben Waffe.

 

Ab Jetzt darfst du nichts mehr an der Mesh oder der UV ändern !

 

4.Du hast die halbe Waffe mit UV fertig diese Waffe spiegelst du nun und speicherst die gesamte Waffe als Lowpoly ab.

5.Nun Kopierst du dein Lowpoly und nennst die Kopie in Lowpoly Bake um (Das gibt dein Bake Lowpoly für XNormal etc)

6.Da du die UV bereits fertig hast, liegen am Spiegelpunkt deiner Waffe die Vertex von deiner Linken und rechten Waffenseite übereinander diese Merget du zu einem Objekt zusammen. Deine Gesamte Waffe ist nun ein Objekt.

7.An den Edge in der Mitte machst du nun noch soften Edge drauf so das du auf dem Lowpoly keine harte Kanten mehr sehen kannst.

8.Diese Waffe Speicherst du wie gesagt als lowpoly_Bake ab.

 

Du hast nun zwei Modelle: Lowpoly und Lowpoly_bake

 

9.Nun Kopierst du dein Lowpoly nochmal und löscht wieder eine Hälfte ! Aus dieser einen Hälfte machst du nun dein Highpoly.

10. Und das ist wichtig:

Wenn du du dein Halbes Highpoly fertig hast Spiegelst du dies wieder und Merget wieder alle Vertex in der Mitte, UND ERST DANN MACHST DU den Smooth aufs Highpoly drauf.

 

Dies ist wichtig da wenn du nur das halbe Modell Baken tust, beim Bake eine harte Kante mit in die Normal gebaked wird.

 

Kurz gesagt: Du bakest das gespiegelte Highpoly auf das Gespiegelte Lowpoly bei beiden dürfen keine Seams oder harte Kanten zu sehen sein.

Deine gesamte Waffe hat nur eine UV auf der halben Waffe.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...