Meshes für Echtzeitgrafik optimieren

Es gibt 8 Antworten in diesem Thema, welches 3.539 mal aufgerufen wurde. Der letzte Beitrag () ist von Kushanku.

  • Hi,


    ich benutze in letzter Zeit die beiden Programme Poser Pro 2014 Game Dev und Blender, um Objekte zu exportieren (z.B. im Collada oder im FBX Format), die ich dann mittels OpenSceneGraph in OpenGL in Echtzeit ausgeben will.


    Wo es im Moment etwas hakt, ist die Optimierung von Meshes für *schnelles* Rendering. Ich merke zum Beispiel, dass das Rendern von vielen tausend Autos die jeweils nur ein paar hundert Dreiecke haben, deutlich zu langsam von Statten geht. Beispielsweise bekommt mein Laptop 15000 Autos nur in 16-35 ms auf den Schirm - je nach verwendetem 3D Modell. Und das unter Verwendung von Instancing (schon die optimale Technik hierfür). Leider ist es überhaupt nicht gut vorhersagbar, welches exportierte 3D Modell in welchem Tempo rendert. Bevor mich jemand fragt, was ich mit so vielen Autos will: in Städten fahren halt nun mal viele Autos ;)


    Eigentlich sollten Meshes in Tri Strips oder Quad Strips arrangiert werden, sodass der Grafikchip seine Vertex Caches sauber einsetzen kann und das Ding möglichst schnell rendert. Ich frage mich nun, ob hier jemand Tools kennt, mit denen ich Objekte, die ich vorher schon in Poser oder Blender bearbeitet habe (z.B. Mesh-Vereinfachung), nochmals für Echtzeit 3D Ausgabe optimieren kann. Dabei sollten nach Möglichkeit Flächen-Materialen und Vertex-Farben erhalten bleiben. Poser und Blender selbst exportieren leider keine Triangle Strips und bieten auch keine Funktionen zur diesbezüglichen Optimierung. Die Dreiecke, die diese Programme rauslassen sind absolut chaotisch arrangiert. Das kostenlose Programm MeshLab vergisst leider beim Import von Collada Dateien die Materialien.


    Kennt jemand was besseres? Es darf auch was kosten.

  • was ist denn mit den Texturen ? sind die auch optimiert (Texturatlas) , denn zu viele Drawcalls lassen ebenfalls die Framerate sinken


    Ich finde den Decimator von DAZ ziemlich genial, das steckt die SDK von Balancer dahinter :thumbup:



    aber mann muss auch bedenken dass decimieren nie die optimale beste Lösung ist .


    Lowpolymoddeling, Normalmap und Texturatlas sind dein Freund für Realtime engines

  • Hi,


    mit Normal maps habe ich persönllich noch nicht gearbeitet. Aber Texture Atlanten kann Blender recht gut erstellen.


    Ich habe ein paar Low Poly Automodelle mit und ohne Texturen. Bei den Modellen ohne Texturen gibt es eines,
    was Vertex Coloring einsetzt, und eines was stattdessen Materials benutzt (wobei die Materials von Blender nicht
    besonders perfekt auf OpenGL Materialien gemappt werden weil es da konzeptuelle Unterschiede gibt). Ich denke
    fast, das Materials besser sind (weil flexibler), auch wenn sie offiziell schon aus dem OpenGL Standard rausgeflogen
    sind.


    Meine Autos müssen nur aus der Entfernung gut aussehen. Und das passt momentan schon. Was noch nicht passt,
    ist die Renderzeit. Die muss runter ;)


    Was allen Modellen gemein ist, ist dass Blender eine recht grosse Vertex Liste rauslässt und einzelne Dreiecke
    über eine Index Liste definiert. Wobei diese Indizes wie Kraut und Rüben total unsortiert sind. Besser wären meiner
    Meinung nach Tri oder Quad Strips... Der eingebaute Optimizer von OpenSceneGraph bietet zwar einen Tri Strip
    Konverter eingelesene Meshes, aber der versagt bei diesen Modellen total Der erzeugt hunderte von Tri Strips
    mit nur 1-2 Dreiecken. Na toll.


    Ich bin also weiter auf der Suche nach Software, die mir fertige 3D Modelle im Postprocessing noch etwas optimiert.


    Christian

  • Hi,


    sobald Vimeo das Video dann mal konvertiert hat (SD Version ist fertig, HD konvertiert gerade), könnt ihr Euch einen kleinen Rendertest mit 15000 Autos hier ansehen.


    Da ich noch keine sinnvollen Strassenverkehrsdaten bekommen habe, habe ich einfach einen Wirbelsturm aus Autos generiert.
    Das ist alles OpenGL Echtzeitgrafik - kleinere Glitches überseht ihr bitte einfach ;)


    Die Framerate wird glatt halbiert, wenn ich die Autos zuschalte. Gute Desktop-Grafikkarten habe da zwar noch keine Probleme, aber Laptops sehr wohl. Da besteht also wirklich Optimierungsbedarf.


    [vimeo]104999134[/vimeo]


    Direktlink zum Video:
    https://vimeo.com/104999134

    • Offizieller Beitrag

    habe ich einfach einen Wirbelsturm aus Autos generiert.


    :D Das ist aber schon mal ne echt schräge Idee und garnicht schlecht umgesetzt. Bin gespannt was denn letztendlich dabei rauskommt :thumbup: .


    Lg
    Kushanku

    • Gäste Informationen

    Hallo Gast,

    gefällt dir der Thread, willst du was dazu schreiben, oder möchtest du noch mehr in diesem Forum sehen und kostenlose Downloads?

    Dann melde dich bitte an.
    Hast du noch kein Benutzerkonto, dann bitte registriere dich, nach der Freischaltung kannst du das Forum uneingeschränkt nutzen.

    Hello Guest,

    Do you like the thread, do you want to write something about it, or do you want to see more in this forum and free downloads?

    Then please sign in.
    If you don't have an account yet, please register, after activation you can use the forum without any restrictions.