Objektbau und externe Formate

  • Hallo zu so später Stunde,


    im Thread zum Projekt Dresden und im Betaforum (Actros) ging es kürzlich um den Objektbau und externe Formate. Mich interessiert dabei besonders der Rechenaufwand in der Simulation, aber alles der Reihe nach. Der Actros hat für das Fahrerhaus 962 Punkte und 536 Flächen (siehe Beitrag von AndreW). Lukash schrieb, den Rechenaufwand trieben eher die Draw Calls in die Höhe. Dabei ist die Zahl der Draw Calls etwa gleich der Zahl der Einzelobjekte im Gruppenobjekt. (Bitte korrigieren, wenn ich etwas falsches schreibe)


    Im Folgenden möchte ich meine Ansätze für ein effizientes Bauen mit Blender darlegen. Ich finde die Klärung dieser Punkte sehr wichtig.


    PaulB's Flexity brachte mich zum Nachdenken. Er hat den A-Wagen mit 900 Punkten und 600 Flächen als ein Objekt gebaut. Irgendwie ist das nicht so toll, weder für ihn noch für irgendwen anderes. Bisher habe ich meine Objekte auf 100 bis 120 Punkte begrenzt. Ich benötige dabei mehr *.l3dobj, was mehr Draw Calls bedeutet. Früher wurden in Loksim etwa von AndreasZ sehr viel mehr Einzelteile verwendet. Leider muss man seine Objekte grundsätzlich auf eine relativ geringe Zahl an Punkten begrenzen, da die Objekte sonst zu unübersichtlich würden. Diese Bauweise erfordert sehr viele Draw Calls. Blender kann dagegen wesentlich mehr "Punkte" (eigentlich Vertices) und "Flächen" (Faces oder Dreiecke) verwalten, ohne dass es zu Problemen mit der Zuordnung kommt. Man kann überall das Modell aufteilen und die einzelnen Bereiche weiter ausmodellieren. Man kann mit Blender also ganze Lokkästen als ein Objekt bauen (mit den Modifiern wird es doch etwas komplizierter.). Diese erfordern dann nur einen Draw Call. Somit sollten die Objektersteller schon aus Performancegründen auf externe Formate nach Liste umsteigen: assimp.sourceforge.net/main_features_formats.html


    Generell kann man mit Blender viel mehr machen und die Modelle können auch von anderen genutzt werden. Einziges Problem ist nach meinem Kenntnisstand die Konvertierung. Loksim verwendet ein anderes Koordinatensystem, daher müssen Achsen getauscht werden. Dann muss man noch ein Format finden, mit dem Loksim möglichst gut umgehen kann. In der Liste ist *.BLEND aufgeführt, jedoch sind Blender-Dateien wesentlich größer als etwa *.X. Man müsste sich mal auf ein Format mit den Entwicklern einigen, damit nicht jeder ein eigenes Format nutzt, was der andere möglicherweise nicht bearbeiten kann. So, wie ich das momentan sehe, kann man mit Blender riesige, ausgestaltete Bahnhofshallen mit wenigen Draw Calls bauen, die den Rechner weniger belasten als zwei Züge aus dem Standardbestand von Loksim. Für mich ist diese Vorstellung ganz fantastisch, weil ich mir schon den Leipziger Hbf vorgenommen habe. Die Vorarbeiten haben schon begonnen.


    Versuche zu Achsentausch und Exportieren konnte ich bisher leider nicht unternehmen, weil mein Rechner noch mit XP läuft, womit Loksim 2.9 und höher nicht mehr zurecht kommen. Ich stelle daher den letzten Zwischenstand meiner E-Klasse zur Verfügung. Sie untersteht der Creative Commons Lizenz CC-BY-SA, jedoch mit Ausnahme. Ich behalte mir das alleinige Veröffentlichungsrecht für Loksim3d und Zusi3 vor, bis der Betatest abgeschlossen ist. Wenn ich fertig bin, werde ich den finalen Stand als Blender-Files zur Verfügung stellen.


    https://docs.google.com/file/d…62UbUNzhFZXlzYmFsX1U/edit
    [Blockierte Grafik: https://docs.google.com/file/d/0B6o5tTR62UbULTVveTVNeUJkenM/edit][Blockierte Grafik: https://docs.google.com/file/d/0B6o5tTR62UbULTVveTVNeUJkenM/edit]



    Diejenigen, die mit Blender vertraut sind, bitte ich, mal zu Exportieren und zu Berichten, welche Vertauschungen vorzunehmen sind. Das sollte in die Doku von Loksim übernommen werden, damit die Nutzer das auch sicher finden. Ich habe Modifier benutzt, das sollte beim Export berücksichtigt werden. Das Modell werde ich noch länger bearbeiten und Versionen LOD1-LOD3 erstellen. Es sind verschiedene Lackierungen und Varianten als Polizeiauto, Taxi und Leichenwagen geplant. Die Beleuchtung werde ich noch anpassen müssen, weiß aber nicht, wie man bei externen Formaten einstellt, dass sie selbst leuchten. Einsteigern für Blender empfehle ich weiterhin die Links im Thread zum Projekt Dresden.


    LG Moritz

  • Hallo Moritz.


    Mich interessiert das Thema auch sehr wie du ja bereits gemerkt hast.
    Ich habe Lukas so verstanden das es besser ist das die Objekte auf möglichst wenige Texturen zurückgreifen.
    Sprich lieber eine Sammeltexture für viele kleine Objekte als jedesmal eine eigene Textur.


    Gruß André

  • Leicht OT: Professionelle Engines vereinen aus genau diesen Gründen oft mehrere Texturen und/oder Meshes zu einer größeren Textur/einem größeren Mesh. Bei Meshes nennt sich das dann "Batching". Das passiert teilweise beim Initialisieren der Szene, oder sogar schon im Build-Prozess (nennt sich dann statisches Batching) oder auch dynamisch nach Bedarf, während das Spiel läuft.


    Statisches Batching ließe sich ja theoretisch sogar machen lassen, indem man ein externes Drittprogramm über die fertige Streckendatei laufen lässt, und das Programm erstellt dann aus Gruppenobjekten Einzelobjekten und könnte sogar mehrere Objekte innerhalb der Strecke vereinen, solange diese nicht dynamisch sind. Macht jetzt, wo Blender-Import geht, aber wahrscheinlich nicht mehr wirklich Sinn - da kann man ja mehr als siebzehn Punkte pro Objekt verwenden, ohne komplett gaga zu werden.

  • Hallo,
    ja, möglichst wenig Texturen einzusetzen ist prinzipiell eine gute Sache.


    Ob "externe Formate" bzgl. Performance generell besser geeignet sind, müsste man näher untersuchen. Auch wenn man bei "externen Formaten" mehr oder weniger ein ganzes Gruppenobjekt in einer Datei speichern kann, heißt das nicht, dass man auch mit einem einzigen DrawCall auskommt. Denn die externen Formate sind mächtiger und erfordern dann teilw. mehr DrawCalls.


    Das Zusammenfassen von mehreren Objekten welche die gleiche Textur verwenden wird zu einem gewissen Grad seit 2.9 automatisch beim Laden der Strecke gemacht.


    Welches externe Format "das beste" für den Loksim ist, kann ich schwer beurteilen. Ich denke da brauchen wir alle noch etwas mehr Erfahrung, mir fehlt auch komplett die Erfahrung bei der Verwendungen von anderen Modellierungsprogrammen wie Blender


    lg
    Lukas

  • Hallo, ich bin wieder in der Fachhochschule und habe dort etwas mit dem Editor und Blender experimentiert.


    https://docs.google.com/file/d…62UbUVU1nNlRocFllWW8/edit


    [Blockierte Grafik: http://i.imgur.com/VKacjGT.png]


    Wichtig sind beim Exportieren die Optionen für die Formate
    -COLLADA (.dae)
    Apply Modifiers
    Include UV Textures
    Include Material Textures
    Copy


    -DirectX (.x)
    Export Selected Objekts only AUSSCHALTEN
    Export Meshes
    Export Normals
    Export UV Coordinates
    Export Materials
    Apply Modifiers


    Bei .3ds gab es Probleme, die Reifen werden nicht texturiert, keine Ahnung wieso?


    Bei WAVEFRONT (.obj) gab es Probleme beim Erstellen des Packages, da die .mtl nicht gefunden werden konnten.


    Generell exportieren die Skripte ohne ungewünschte Achsenvertauschungen, Drehungen usw., sodass keine Änderungen diespezüglich durchgeführt werden müssen. In den nächsten Tagen werde ich den PESA LINK in .blend konvertieren und in verschiedene Formate exportieren, damit effiziente Vergleiche bzgl. Performance sinnvoll durchgeführt werden können, schließlich gibt es diesen schon im Loksim-Format. Die gewünschten Änderungen werde ich vornehmen.


    LG Moritz

  • Hallo,


    es gibt ein neues Objekt, welches mit Blender erstellt wurde.


    [Blockierte Grafik: http://i.imgur.com/dfrSCgi.png]
    [Blockierte Grafik: http://i.imgur.com/jzgBpN4.png]
    [Blockierte Grafik: http://i.imgur.com/YM9hNla.png]
    [Blockierte Grafik: http://i.imgur.com/6fWAXUR.png]


    Diverse Unsauberkeiten werde ich noch beseitigen. Die Drehgestelle bestehen aus 1670 Dreiecken, der Lokkasten aus 2600. Scheinwerfer, Lichtkegel und Stromabnehmer sind alle noch mit LoksimEdit erstellt. Für einen Performancetest möchte ich Euch das Objekt schon jetzt zur Verfügung stellen. Mich interessiert der direkte Vergleich mit dem Taurus von Andreas Zimmermann. In Loksim ist die Beleuchtung nicht korrekt, siehe zweites Bild, vorn an der Schnauze. Um den Stromabnehmer herum gibt es ein weißes Flackern vor dem importierten Lokkasten bei bestimmten Sichtwinkeln. Ich danke Alwin Meschede für die Bereitstellung der Kupplungshaken und Bremsschläuche.


    Den Pesa Link habe ich schon weitgehend konvertiert, allerdings wollte ich die ÖBB 1012 /Hectorrail 141 erst abschließen.


    https://docs.google.com/file/d…62UbULVhwaVRfWGhHTkk/edit


    Das Package ist nur zu Testzwecken, das endgültige Package wird bald folgen. Im ZIP-Ordner sind noch die Blender-files enthalten. Bitte auf überschriebene Dateien und Viren prüfen!!!!


    Mit freundlichen Grüßen


    Moritz

  • Zunächst mal fetten Respekt dafür!
    Die Lok ist nicht nur in der Realität eine Schönheit sondern auch in deinem Modell. Ich hab deine einzelnen Arbeitsschritte ja regelmäßig mitbekommen und in dieser Lok steckt jede Menge Arbeit. Ich habe sie jetzt kurz mal auf der Demostrecke getestet und ich habe performancetechnisch gesehen keine merklichen Probleme. Möglicherweise liegt es auch daran, dass mein PC recht gut aufgestellt ist in der Hinsicht.


    Leicht in die Knie gezwungen habe ich den Simulator erst wenn ich 15 Loks unmittelbar hintereinander auf das Gleis gestellt habe. (was eh unrealistisch ist da es von der Reihe nur 3 Stück gibt) Dann merkt man es aber sonst nicht.
    Was mich ein wenig stört ist der Lichtkegel vor der Lok. Damit kann ich mich nicht ganz anfreunden aber sonst alles super, bis auf die Dinge die du eh schon angesprochen hast (Spitzenbeleuchtung, Stromabnehmer etc.)


    Kurz:
    Beide Daumen nach Oben!



    Mach weiter so! :thumbup:

  • Hallo Moritz,
    wirklich ein tolles Objekt!


    Zwei Kleinigkeiten sind mir aufgefallen:
    a) Das Gruppenobjekt sollte noch eine Beschreibung und Vorschaubild bekommen :)
    b) Bei der Dateiinfo der Einzelteile die von mehreren Autoren erstellt wurden bitte die Autoren nicht mit "/" trennen sondern mit ";"


    lg
    Lukas

  • Jetzt habe ich mal eine ganz dumme Frage:


    Ich finde im Loksim-Editor keine Möglichkeit, ein aus Blender exportiertes direct.x-file zu importieren. Irgendwas klemmt da bei mir im Gehirn wohl.


    LG
    Roter Brummer

  • Hallo Roter Brummer,


    das Bauen mit Blender scheint Dir Spaß zu machen. Es freut mich sehr, dass auch noch andere dieses Programm nutzen. Dein Klohäuschen sieht echt schön aus.


    Irgendwo wurde kürzlich geschrieben, dass externe Formate viel länger zum Laden brauchen. Das kann ich mir sogar recht gut vorstellen. Normal benötigt ein Objekt zum Laden sehr wenig Zeit, die Menge der zu ladenden Objekte macht den Unterschied. Wenn Johannes schreibt, 15 mal hintereinander aufgestellt würde die 1012 Ruckler verursachen, muss dem so sein, denn normal stehen eher so 40 bis 50 Fahrzeuge in einem Bahnhof (Einzelfahrzeuge wie Lokomotiven und Wagen mit jeweils recht vielen Einzelobjekten im Format *.l3dobj.). Wenn da nun 15 Lokomotiven stehen, die jeweils aus drei Objekten in externen Formaten bestehen, welche wieder wegen der Modifier-Einstellungen aus 4 Objekten bestehen, die Framerate runter ziehen, ist das Verwenden von externen Formaten fast schon eine Performance-Sünde. Beim Objektbau kommt es dann nicht so auf die Zahl der Flächen an, eher noch auf die Texturgröße. Für Loksim hieße das, man sollte möglichst externe Formate wo es geht, vermeiden. Ein Klohäuschen mit Blender zu bauen, wäre dann zur Übung hervorragend, aber für Strecken wenig geeignet. Da müssten dann eher andere Objekte mit Blender gebaut werden.


    [Blockierte Grafik: http://i.imgur.com/yLdY02r.jpg]
    [Blockierte Grafik: http://i.imgur.com/FJnX4CD.jpg]
    Ein Performancetest zum Vergleich der externen Formate würde ich dringend empfehlen, damit ich meine Objekte in ein Format exportieren kann, das Loksim möglichst gut darstellen kann. Sonst müsste ich die Entwicklung solcher Objekte künftig einstellen, was ich sehr schade fände. Parallel zur Anleitung habe ich mit dem 1440 vor drei Wochen etwa begonnen.


    Liebe Grüße


    Moritz

  • Hallo!

    Irgendwo wurde kürzlich geschrieben, dass externe Formate viel länger zum Laden brauchen

    Halte ich für reine Spekulation bzw. wüsste ich nicht wo das jemals gestanden sein sollte! Meines Wissens gibt es keine Vergleiche bzgl. Ladezeit und deshalb sollte man mit solchen Aussagen sparsam umgehen!

    Normal benötigt ein Objekt zum Laden sehr wenig Zeit, die Menge der zu ladenden Objekte macht den Unterschied. Wenn Johannes schreibt, 15 mal hintereinander aufgestellt würde die 1012 Ruckler verursachen

    Abgesehen davon, dass es effektiver ist ein Modell aus einer Datei zu laden und nicht aus mehreren (.l3dobj) Dateien: Ruckler haben absolut nichts mit dem Ladevorgang der Objekte an sich zu tun. Alle Objekte werden bereits beim Start der Simulation geladen.

    Beim Objektbau kommt es dann nicht so auf die Zahl der Flächen an, eher noch auf die Texturgröße.

    Kann ich auch nicht unkommentiert stehen lassen, bitte folgenden Beitrag beachten

    Für Loksim hieße das, man sollte möglichst externe Formate wo es geht, vermeiden.

    Ich kann Deiner Argumentation nicht folgen, diese Schlussfolgerung halte ich jedenfalls für einen Blödsinn! Am Ende werden sämtliche unterstützten Formate in die gleiche interne Darstellung konvertiert. D.h. egal welches Format ich verwende, bei der Darstellung an sich macht dies keinen Unterschied.
    Ja, es gibt Optimierungen die (derzeit) nur für die internen Formate funktionieren, daneben gibt es aber auch welche wo es genau umgekehrt ist. Ich behaupte mal, die Unterschiede sind nur marginal.

    Ein Performancetest zum Vergleich der externen Formate würde ich dringend empfehlen, damit ich meine Objekte in ein Format exportieren kann, das Loksim möglichst gut darstellen kann.

    Was hält Dich davon ab, wenn Du dies für so essentiell hältst?



    Alles in allem kann ich nur empfehlen, jenen Editor zu verwenden mit dem man am besten zurecht kommt. Ist dies Blender, dann hat man die Qual der Wahl welches Format man verwenden möchte. Ich denke im Prinzip macht dies derzeit kaum einen Unterschied. Wenn Loksim mehr "Graphikmöglichkeiten" unterstützt könnte dies wichtiger werden, weil nicht alle Formate alle Optionen beinhalten können.
    Es ist aber auch vollkommen ok mit dem LoksimEdit zu arbeiten, dann ist das Format eh fix vorgegeben ;)


    TLDR: Alle von Loksim unterstützten Objektformate werden intern fast vollständig gleich behandelt. Die Wahl des Formats ist nicht entscheidend für die Performance!
    Nobody is perfect, sollte jemand einen begründeten Verdacht haben, dass mit einem Format Performanceprobleme auftreten haben wir/ich immer ein offenes Ohr


    lg
    Lukas

  • Es ist nicht ganz alleine die Wahl des gewünschten 3D-Tools entscheidend, sondern auch die Qualität der jeweiligen darin enthaltenen Export-Module.
    Obwohl das 3ds- und das obj.-Format seit vielen Jahren Standards sind, gibt es beim Export deutliche Qualitätsunterschiede.
    Glück hat, wer 3ds-Max sein eigen nennt: Hier sind diese Export-Module absolute Spitzenklasse.
    ...der Preis für 3ds-Max allerdings auch.
    In meinem Fall habe ich das Glück Rhino verwenden zu können, da es mir beruflich zur Verfügung steht.
    Hier ist das 3ds-Plugin nicht immer erste Wahl und ich mußte einige Male auf das obj-Format ausweichen.


    Blender hatte vor 5 Jahren noch erhebliche Probleme mit dem korrekten 3ds-Format.
    Da sich auch die Bedienung von Blender stark von anderen 3D-Tools abhebt, habe ich mich damals wieder davon distanziert.
    Allerdings hat Blender in den letzten Jahren, für ein Freeware-Programm, eine erstaunlich positive Entwicklung genommen.
    So das die Situation sich heute vermutlich völlig anderst darstellt.


    Grundsätzlich findet die "Verarbeitung" von 3D-Dateien am Rechner bzw. von der Graka-GPU von 3d-Dateien sehr ähnlich statt, so das die Performance in unserem Enduser-Bereich keine große Rolle spielt.
    Das ist allerdings bei professionellen Produkten ein klein wenig anderst, da hier bereits bei der Erstellung die Vorgaben für den späteren Einsatz von großer Bedeutung sind.


    In Loksim könnten manche Resourcen eingespart werden, gäbe es Smoothing or Bumpmapping.
    Aber das kann ja irgendwann noch kommen.


    Servus
    Wolfgang

  • Hallo Lukas,


    bei meinem letzten Post habe ich wohl einen Satz aus Johannes' Beitrag fehlgedeutet und falsche Schlüsse gezogen, sodass mein Beitrag mit Recht als gequirlte S.... zu betrachten ist, genau so, wie alles, was ich bin und tue. Folglich bin ich für einen solchen Performance-Test nicht der richtige. Mit dem neuen Computer ist das eine endlose Geschichte. Momentan mache ich einen Führerschein Klasse B. Wenn ich berufstätig sein werde, habe ich dazu keine Zeit mehr. Vertagen lässt sich das kaum.


    LG Moritz