Neues Video zu - Height Map Ground Textures

  • Geometrie durch schneiden


    Die folgenden Screenshots zeigen,

    wie hochskaliertes Gelände mit anderen Geometrien mit Höhenabstand arbeiten kann.

    In diesem Fall der Ballast auf unserer Strecke.



    Der Übergang zwischen den beiden Meshes wirkt um ein Vielfaches natürlicher, als ohne das Höhenmapping. Dadurch kann das "Schwimmen" der Gleise über dem Gelände vermieden werden.


    Saisonale Unterstützung


    Natürlich können andere Effekte wie saisonale Variation neben Höhenkartierung und PBR verwendet werden.

    In den folgenden Aufnahmen sehen wir uns eine andere Höhenkarte an, die für die gleiche Jahreszeit wie die Schnee- / Wintersaison strukturiert ist.



    Die Bodentextur hat ein schneebedecktes Aussehen angenommen und schneidet sich in einer größeren Tiefe

    als die Sommertextur mit der Gleisgeometrie.




    Kommen wir nun zu Lod


    In unserer nächsten Version von Trainz finden Sie nicht nur verbesserte Renderingtechniken

    weitere Details finden Sie in unseren früheren Blogs),

    sondern Sie finden auch neue Systeme, die die Leistung verbessern oder mehr Kontrolle über vorhandene Funktionen ermöglichen.

    Eines dieser Systeme, das überholt wurde, ist unser "LOD" -System.Level of Detail (LOD)

    Wir haben LOD bereits erwähnt, aber was bedeutet es wirklich und warum brauchen wir es?

    LODs für ein Asset (Ja, die Programmierer zählen ab 0 :) In der 2D-Ansicht oben sehen Sie,

    wie die Mesh-Formen einfacher und einfacher werden.

    Die untenstehende "3D" -Ansicht zeigt die Größe dieses Elements in der angegebenen Entfernung im Spiel an.



    Der kleine "Punkt", der bei 1 km und darüber hinaus erscheint,

    ist tatsächlich keine hochauflösende 40.000-Polygon- "Kugel", sondern ein sehr einfaches 8-seitiges Objekt.


    Wie Sie im obigen Bild sehen können, ist es schwer zu sagen, dass Sie nicht auf das Originalobjekt schauen,

    während sich die Kamera wegbewegt, sondern sich stattdessen eine zunehmend vereinfachte LOD-Version dieses Objekts ansehen.


    Natürlich besteht der Hauptvorteil des Hinzufügens dieser LOD-Versionen darin,

    dass Ihre Hardware nicht gezwungen ist, Millionen von Polygonen zu zeichnen, die im Grunde genommen nicht auf dem Bildschirm sichtbar sind


    LOD Entfernungen steuern


    Da Inhaltsqualität und -treue sich im Laufe der Zeit verbessern und Objekte im Spiel immer realistischer erscheinen,

    wird es immer wichtiger, sicherzustellen, dass die Detailgenauigkeit (LOD) sorgfältig verwaltet wird.

    Stellen Sie sich die Leistungsauswirkungen eines sehr hoch aufgelösten Assets vor, reduzieren Sie die Komplexität,

    wenn es als ein paar Pixel auf dem Bildschirm erscheint.

    Im aktuellen Trainz entscheidet das Spiel, wann LOD reduziert werden soll.

    In der nächsten Version von Trainz bieten wir den Content Creators die Möglichkeit,

    sich anzupassen und zu steuern, wann jeder LOD einschaltet.

    Dies bietet mehr Flexibilität, um eine aggressivere Szenenverringerung zu ermöglichen



    Wir werden ein neues config.txt -Tag ("mesh-table-lod-Übergangsabstände") einführen,

    um die Entfernung zu kontrollieren, mit der die LOD-Übergänge auftreten.

    Die Verwendung dieser Funktion ersetzt die "mesh- "und" maximum-lod-distance "-Tags, die ab v4.6 veraltet sein werden

    die erwartete Trainz-Build-Nummer für unser nächstes Trainz-Produkt ab v4.6 und muss, falls verwendet,

    ein float-Array enthalten, das die Endabstände für jede LOD-Ebene angibt.

    Wenn dieses Tag weggelassen wird, dann wird keine Gitter-Tabellen-LOD verwendet.

    Dies ist geeignet für Szenarien mit geringer Detailgenauigkeit und für Nur-LM-Objekte wie Eisenbahnfahrzeuge oder Fahrzeuge.


    Beispiel:

    mesh-table-lod-Übergangsabstände

    10.0,

    30.0,

    150.0,

    1000.0


    Dieses Beispiel gibt 5 LOD-Niveaus für die Netztabelle an.

    Die erste (LOD 0) reicht von 0,0 m bis 10,0 m. 10,0 m bis 30,0 m.

    Der erste (LOD 2) reicht von 30,0 m bis 150,0 m.

    Der erste (LOD 3) reicht von 150,0 m bis 1000,0 m.

    Der letzte (LOD 4) reicht von 1000 m ab.


    Hier ist ein Beispiel für ein In-Game-Asset mit LOD gegenüber einem, das dies nicht tut.

    Auf der linken Seite zeigen wir Terrace 1 - LOD

    Auf der rechten Seite zeigen wir Terrace 1



    Mit der Implementierung von LOD reduziert der Erschaffer Paulzmay das Haus von 168 Polygonen auf nur 14 bei der niedrigsten LOD.

    Bei 32.000 geladenen Objekten (mit der Option "Performance Anaysis" in Preview Asset) sehen wir,

    dass die LOD-Version nur 22.644 Polys erfordert und 9 Anrufe gegen ein Mammut 1.666.224 Polys und 53 Unentschieden Anrufe für die No-LOD-Version.

    Das ist 80x weniger Polys! Im Bild unten ist eine schöne Straßenlampe.

    Die Nahansicht zeigt, wie detailliert dieser Artikel wirklich ist.

    In der Fernansicht wird jedoch bei keiner LOD jede Lampe mit allen 2,780 Polygonen pro Lampe gezeichnet,

    selbst wenn der Gegenstand eine einzelne Pixel breite auf dem Bildschirm ist.

    So rendert die Szene jetzt über 12 Millionen Polys!





    Weitere Informationen zur zukünftigen Entwicklung von Trainz finden Sie auf

    http://trainzportal.com, oder lesen Sie alle Artikel und Foren.

    Alle Content-Ersteller, die anfangen möchten, sich mit der Technik vertraut zu machen, finden einige erste Informationen zu das Trainz Wiki


    Im neuen Trainz wird im Obsolet, laut Wiki. Bin gespannt was da noch alles so passiert.


    gruss Juergen

  • Kommen wir heute zu Draw Calls und Matrial


    Letzte Woche haben wir darüber gesprochen, wie der Level of Detail (LOD) aktualisiert wird,

    um es den Content-Erstellern zu ermöglichen, die höchste Effizienz aus dem Motor herauszuholen.

    Beim Hinzufügen von LODs wird die Polygonzahl Ihrer Szene reduziert, und es gibt andere Faktoren, die sich auf die Leistung auswirken.

    In dieser Woche werden wir prüfen, wie Sie Ihre Inhalte optimieren können, um übermäßige Zugriffe zu vermeiden.


    Draw Call


    Was ist ein Draw Call?

    Grundsätzlich sendet ein Draw Call alle Informationen über die Texturen, Materialien und Shader an die Grafikengine.

    Jeder Anruf ist mit einem Overhead verbunden, also gilt: Je niedriger die Zahl, desto besser.


    Jedes Mal, wenn ein neues Material in Ihrem Netz verwendet wird, kostet es möglicherweise einen weiteren Anruf (es sei denn,

    es handelt sich um ein geteiltes Material, aber wir werden es später erfahren).

    Je mehr Zugriffe der Motor durchführen muss, desto wahrscheinlicher wird ein "Engpass" und die Leistung leidet.


    Es ist auch erwähnenswert, dass die Vorteile des Reduzierens von Zeichnungsanrufen abnimmt, wenn die Polygonzahl zunimmt.

    Tatsächlich können Sie kein 100k Mesh mit einem einzigen Draw call haben - das Spiel wird es nicht zulassen.


    Materials


    Materialien definieren, was auf das Netz gerendert wird. Jedes Material besteht aus einem Materialtyp,

    Texturen und anderen Konfigurationseinstellungen.

    Wenn Sie eine dieser Einstellungen ändern, müssen Sie ein neues Material verwenden.


    Wir haben jetzt viele Materialtypen in Trainz, und wir erweitern das Set um das neue matrials fuer die nächste Trainz Produckt.


    Für das folgende Beispiel verwenden wir ein neues PBR-Material(http://www.trainzportal.com/bl…es-and-behind-the-scenery)


    Hier sehen Sie, dass unser Material aus 3 Texturen besteht. Schaue diesem link zu Material Types fuer mehr detailierte Informationen.



    Wir haben dieses Material auf unser Gitter angewendet (in diesem Fall einen Würfel).

    Wenn wir dieses im Spiel rendern, wird es nur einen einzigen Aufruf geben, da genau ein Material gerendert wird.



    Jetzt gehen wir weiter und fügen ein weiteres Material auf einer Seite des Würfels hinzu:



    Du kannst im Spiel sehen, dass es uns jetzt 2 Draw Calls sind, da wir jetzt 2 Materialien auf das Netz angewendet haben:



    HINWEIS:

    Trainz verwendet ein System namens "Mesh-stitching", mit dem bestimmte Meshes in einer Szene,

    die dasselbe Material verwenden, zusammengenäht werden können.

    Es gibt bestimmte Bedingungen, um zu bestimmen, ob Assets in den Nähprozess einbezogen werden.

    Lesen sie hier mehr uberMesh Nähte.


    Shared Materials (Gemeinsame Materialien)


    Wenn mehrere Mesh-Dateien in einem einzelnen Asset dieselben Materialnamen verwenden, werden diese Materialien zwischen den Meshes "geteilt".

    Dies erhöht die Effizienz, indem es das Mesh-Nähen zwischen den verschiedenen Meshes ermöglicht und die Anzahl der Draw-Calls reduziert.

    Ohne geteilte Materialien könnte jedes Netz einzeln, aber nicht gegen andere Netze zusammensticken.

    Selbst dort, wo Mesh-Naht nicht anwendbar ist, gibt es einige Effizienzgewinne durch mehrere Instanzen des gleichen Materials verwendet,

    anstatt mehrere getrennte Materialien.


    Im nächsten Beispiel habe ich ein Würfelnetz und ein Kugelnetz genommen und das gleiche Material auf beide Netze angewendet.

    Wie Sie sehen können, wenn Sie in Trainz gerendert werden, gibt es immer noch nur einen Zeichnungsaufruf, weil beide Assets (oder Netze) das 1-Material teilen.




    Mit "Leistungsstatistik" in Surveyor aktivieren

    (Einstellungen -> Allgemeine Einstellungen -> Leistungsstatistiken im Landvermesser anzeigen)

    Wir können sehen, dass genähte Materialien = 1, das heißt nur einen Zeichnungsruf.

    Denken Sie daran, dass dies nur funktioniert, wenn die Netze eine Reihe von Bedingungen durchlaufen, die in der Mesh-Nähte Eignung Abschnitt.<--



    naechste Woche


    Nächste Woche werden wir einige zusätzliche Optimierungen durchführen, um die Leistung Ihres Contents weiter zu verbessern.

    Bleiben Sie dran, um herauszufinden, wie Sie Texture Atlases und Mesh Libraries verwenden.

  • Heute kommen wir zu Texture Atlases und Mesh Libraries.


    Fangen wir mit Texture Atlases an.


    Wir haben gelernt, dass das Teilen von Materialien eine gute Sache ist,

    aber oft erfordert ein Netzobjekt einen völlig anderen Satz von Texturen für ein anderes Netzobjekt

    (z. B. werden Sie die Ziegeltextur von Asset 1 nicht auf dem Automodell von Asset 2 teilen).

    Was wir mit Assets machen, die regelmäßig in der gleichen Szene erscheinen, besteht darin,

    mehrere Texturen in einem zu kombinieren und die UVs der Netze neu zu ordnen,

    um unter Verwendung dieser neuen kombinierten Textur korrekt zu erscheinen.

    Ein "Texturatlas" ist nur ein schicker Name für diese Technik, eine Anzahl von Texturen in eine größere Textur zu packen.

    This example shows what happens when we combine two individual 1024x1024 textures into one 1024x2048 texture.

    Dieses Beispiel zeigt, was passiert, wenn wir zwei einzelne 1024x1024 Texturen in einer 1024x2048 Textur kombinieren.



    Im Spiel rendern wir ein Würfelnetz, das das 1-Material mit dem einzigen Texturatlas aufweist.

    Wir haben den größten Teil des Würfels mit der oberen Hälfte unseres Texturatlas und einer Seite unseres Würfels

    mit der unteren Hälfte unseres Texturatlas "UV-kartiert", erzeugen aber immer noch nur 1 Zeichnen.



    Hinweiß: Die Kombination von allem in einer großen Textur ist nicht immer die beste Option.

    Dieser Prozess funktioniert am besten, wenn viele Assets verwendet werden, die den Atlas in derselben Szene teilen.

    Szene bedeutet hier, was gerade gerendert wird, nicht was auf der gesamten Route ist.


    Wenn wir 60 Assets erstellen, die alle einen einzigen Texturatlas verwenden und dann nur eines dieser Assets in einer Szene verwenden,

    Die große Textur wird nur für dieses eine Asset geladen.

    Wir verwenden etwa 1/60 des Texturatlas, also sind 98% unseres Texturraums in diesem Fall verschwendet, also kein großartiges Ergebnis.


    Auf der Kehrseite, wenn wir jede dieser 60 verschiedenen Assets in der einen Szene verwenden, erfordert dies nur einen einzigen Zeichnungsaufruf.

    Das ist eine Verbesserung gegenüber 60 Draw-Calls ohne den Atlas, und es kostet auch keinen zusätzlichen Textur-Platz!


    Verwendung Atlas Textures zum LOD


    Ein anderer effektive Methode zur Verwendung von Textur-Atlanten ist für LODs.

    Sie würden dennoch individuelle Texturen für Ihre hohen Details verwenden LODs,

    so dass Sie für jede Anlage eine Vielzahl von Texeln zur Verfügung haben, wenn Sie sie aus nächster Nähe betrachten.

    Dann ist dein niedrigster LOD kann einen kleinen (e.g. 256x256 or 512 x 512) Texturatlas für eine Reihe von Assets.

    Dies bedeutet, dass 60 Assets, die alle auf der niedrigsten LOD liegen, den einen Texturatlas gemeinsam nutzen.

    60 Assets führen nicht nur nur einen Zeichnungsaufruf aus, sondern auch nur eine einzelne kleine Textur.




    Ein anderer effektive Methode zur Verwendung von Textur-Atlanten ist für LODs.

    Sie würden dennoch individuelle Texturen für Ihre hohen Details verwenden LODs,

    so dass Sie für jede Anlage eine Vielzahl von Texeln zur Verfügung haben, wenn Sie sie aus nächster Nähe betrachten.

    Dann ist dein niedrigster LOD kann einen kleinen (e.g. 256x256 or 512 x 512) Texturatlas für eine Reihe von Assets.

    Dies bedeutet, dass 60 Assets, die alle auf der niedrigsten LOD liegen, den einen Texturatlas gemeinsam nutzen.

    60 Assets führen nicht nur nur einen Zeichnungsaufruf aus, sondern auch nur eine einzelne kleine Textur.


    Nun Mesh Library und config Aufbau


    Um zu ermöglichen, dass mehrere Trainz-Assets auf dieselben Materialien verweisen,

    die Sie benötigen, um ein Mesh-Bibliotheksobjekt zu erstellen. Dieser Prozess ist sehr einfach.


    Wir möchten, dass Asset 1, Asset 2 und Asset 3 alle die gleichen Texturen teilen.

    Die Lösung besteht darin, ein viertes Asset namens Asset 4 Lib zu erstellen, das alle Meshes und Texturen enthält.



    In dem Config.txt-Mesh-Table-Container fügen Sie den folgenden Tag hinzu, damit Ihr Asset weiß, wo Sie die Meshes in Ihrem Mesh Library-Asset finden:


    Mesh-table

    {

    Default

    {

    Mesh-asset <LIBRARY-KUID-GOES-HERE>

    Mesh “trainz-mesh-in-mesh-library.trainzmesh”

    }


    Another

    {

    Mesh-asset <LIBRARY-KUID-GOES-HERE>

    Mesh “trainz-mesh-in-mesh-library.trainzmesh”

    }

    }


    "No-Mesh" LOD


    Ein letzter Bereich, den wir abdecken, bevor wir alles zusammenfassen, ist der "No-Mesh" LOD.

    Dies wird verwendet, um ein Objekt vollständig aus der Szene zu entfernen, wenn es weit genug von der Kamera entfernt ist, dass Sie es nicht einmal bemerken werden.


    Dies wird erreicht, indem ein zusätzliches LOD Übergangsdistanz im neuen “mesh-table-lod-transition-distances”

    Tag gegen die Anzahl der enthaltenen Maschen. E.g. Bereitstellung von drei LOD-Übergangsdistanzen (anzeigend vier LOD levels) aber keinen Mesh-Table-Eintrag für das letzte lod-Level bereitstellen.


    Techniken vs. Performance


    Mit unserem Wissen über Materialien, geteilte Materialien,

    Texturatlas und Mesh-Bibliotheken müssen wir die besten Ansätze für unsere Assets je nach Situation berücksichtigen.

    Hier ist eine Zusammenfassung der richtigen und falschen Vorgehensweise.


    Best Praktiken: Die hier verwendeten Beispiele verwenden vier LOD-Level;

    Passen Sie diese je nach Ihrem Asset an.

    - Verwenden Sie einen Texturatlas, der mit einer Reihe anderer Assets geteilt wird, die wahrscheinlich in derselben Szene verwendet werden, und verwenden Sie eine Mesh-Bibliothek, um alle Texturen und Meshes zu speichern.

    - LOD0, LOD1 und LOD2 Teilen Sie ein einziges Detailmaterial mit hoher Detailgenauigkeit. LOD3 ist das niedrigste LOD und verwendet ein geteiltes Atlasmaterial.

    - LOD0 verwendet ein hoch detailliertes Mesh für eine genauere Betrachtung. - LOD1 und LOD2 verwenden Low Detail Meshes im Mid- distance.

    - Für große Objekte (größer als ein Haus) sollte LOD3 nur ein paar Polygone sein. - Für kleinere Objekte benötigt LOD3 nicht einmal ein Mesh.


    Schlechteste Übung:


    - Verwenden Sie mehrere Materialien in einem einzigen Netz, wenn die Polygonzahl niedrig ist.

    - Verwenden Sie nur einen kleinen Teil einer großen Textur.

    - Es ist nicht möglich, LOD zu verwenden oder zu viele Polygone auf entfernten (Low LOD) Meshes zu verwenden.

    - Stellen Sie LOD zur Verfügung, aber stellen Sie keine angemessenen Strecken ein.

    - Verwenden Sie einen hochauflösenden Texturatlas für Assets, die wahrscheinlich nicht in derselben Szene verwendet werden.

    - Verwenden Sie das Skript für stark frequentierte Szenerieobjekte.

    - Verwenden Sie PFX für stark frequentierte Szenerieobjekte.

    - Verwenden Sie Animationen auf stark genutzten entfernten (Low LOD) Meshes.

    - Verwenden Sie .LM auf stark genutzten Szenarienetzen ohne Rückfall in einen Nicht-LM-unteren Detaillierungsgrad..



    Dann bis zum naechsten mal.


    gruss Juergen

  • Es ist mal wieder so weit es gibt wieder was zum Schauen und lesen.

    Clutter = Unordnung und ein neues Material Namens m.clutter.



    1. eine Ansammlung von Dingen, die in einem unordentlichen Zustand herumliegen.


    In Trainz "Next" (offizieller Name noch zu verkünden) wird es möglich sein,

    mit einem modifizierten "Pinsel" detaillierte "Clutter-Layer" auf das Terrain zu streuen.

    Dieses System wird gegenüber den derzeitigen Verfahren mehrere Vorteile bieten.


    In Trainz müssen Sie bisher jedes Objekt einzeln um Ihre Route platzieren oder kopieren und einfügen,

    wobei die offensichtlichen Einschränkungen eines rechteckigen Werkzeugs und eines sich wiederholenden Musters das Ergebnis sind.


    Mit den neuen Clutter-Ebenen fügen Sie Ihrer Clutter-Ebene ein oder mehrere Objekte hinzu und beginnen mit dem Malen, wo immer Sie es benötigen.


    Die Elemente werden basierend auf einstellbaren Konfigurationsparametern wie Dichte und zufällige Drehung platziert.


    Störschichten nutzen einen neuen Materialtyp namens m.clutter.

    Dieser Materialtyp hat die spezielle Eigenschaft,

    dass Maschen in den von Ihnen festgelegten Abständen ein- und ausgeblendet werden, wodurch ein "Popping" vermieden wird.


    Das folgende Sneak Peek Video zeigt eine Clutter-Schicht mit mehreren m.clutter Assets in Gebrauch

    (Entschuldigungen für die visuelle Qualität dieses Videos - Youtube hat beschlossen,

    eine ziemlich verschwommene Version auszugeben, die nicht wie unser Original aussieht).


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Hier ist ein Screenshot, der viele verschiedene Assets zeigt, die in mehreren Clutter-Layern verwendet werden,

    um maximale Details nahe an der Kamera zu erhalten.




    Um die vollen Vorteile dieses Systems zu gewährleisten, müssen Ihre Clutter-Objekte LOD und Teile Materialien in einem Texturatlas.

    Wir werden einige ziemlich strenge Richtlinien geben, um sicherzustellen, bestmögliche Leistung - und wie Sie sehen können, auch einige spektakuläre Ergebnisse!


    Bald wird es noch mehr Unordnung geben. "

    * Informationen können sich auch ändern, während wir dieses neue System weiterentwickeln.

  • Also langsam kriege ich richtig Lust auf das nächste Trainz. Mit den ganzen neuen Sachen wird man beim Streckenbauen ganz neue Möglichkeiten haben und viel realistischer bauen können.

  • Ich hoffe, dass die Physik und technische Details entsprechend auch verbessert

    werden und nicht nur die Optik. Eine gute Physik ist für mich gewichtiger als das

    Aussehen in einer Simulation.

  • Eine gute Physik ist für mich gewichtiger als das Aussehen in einer Simulation.

    Bin ich voll bei Dir, nur man braucht Masse und die bekommt man erstmal "nur" über die Grafik. Daher freue ich mich, dass dies nun erkannt worden ist sowie entsprechende Standards auch in T:ANE eingeführt werden.

  • Traurig, dass erst jetzt das kommt, was uns im Targed-Render zu TANE und deren Engine-Vorstellung versprochen wurde...