Lassen sich die Shader in einer geopcdx ändern?

  • Natürlich ohne dass man die Original-Modeller Datei hat.


    Ich ärgere mich etwas, dass es einige schöne Modelle mit untauglichem Shader gibt.
    Teils sind die Modelle Freeware (BR 23), teils musste ich teuer Geld dafür bezahlen (BR01 NBK, BR03)


    Da ich gerne Winter-Szenarien fahre, müssen die Loks auch bei diffuser Beleuchtung gut aussehen.
    Dafür brauchts den richtigen Shader.


    Nun sind die geopcdx ja zumindest teilverschlüsselt.


    Dann wäre also die Frage, ob man an den Shader rankommt und die passenden Texturen dann auch nachträglich mit dem zugehörigen Alphakanal ausstatten kann.


    Danke und Grüße
    Martin

  • Das klingt sehr spannend.


    Im Editor hatte ich mir das schonmal angesehen.
    Einfach nur einen anderen Shader aufzurufen hat aber nicht funktioniert.


    GIbt es eine Idee, wie man das auszutauschen hätte, damit es funktioniert.


    Betreffs der Texturen wäre die Frage, ob man Aufteilung, Größe, Kompression und/oder Alphakanal ändern kann, oder ob die neu zugeordneten dieselben Eigenschaften haben müssen wie die originalen?

  • hat aber nicht funktioniert

    Das sollte es aber. Wie bist du denn vorgegangen?


    Die Aufteilung der Texturen kannst du nicht ändern.
    Die Größe kannst du ändern, du musst aber das Seitenverhältnis beibehalten und bei einer 2er-Potenz der Auflösung bleiben.
    Auch den Alphakanal kannst du ändern.

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • Da ich gerne Winter-Szenarien fahre, müssen die Loks auch bei diffuser Beleuchtung gut aussehen.


    Dafür brauchts den richtigen Shader.

    Was stellst du dir da im Detail vor?


    DU kannst durch ein ganz normales Repaint das Rollmaterial mit Farbsättigung und Helligkeit anpassen.
    Wie das Rollmaterial ausgeleuchtet wird hängt aber am meisten von den ToD Werten so wie den Wetter der Map. Wenn du da jetzt den Shader änderst wird das nicht zum gewünschten Ziel führen.


    Ich würde mir da ehr eine passende ToD Datei suchen oder erstellen und diese auf den gewünschten Strecken austauschen. So versaust du dir nicht dein Rollmaterial und musst das auch nur einmal machen. Bei dein Vorhaben müsstest du ja jeden Wagen, jede Lok bearbeiten und die werden dann bei normalen Licht leuchten wie Neon.

  • Jetzt hats funktioniert. Irgendwas habe ich das letzte mal wohl falsch gemacht.


    Auch den Alphakanal kannst du ändern


    Wenn eine Textur noch gar keinen aktiven Alphakanal hat, kann ich wahrscheinlich keinen neu hinzufügen, auf dem dann der Glanz liegt, oder doch?
    Es wäre extrem hilfreich, wenn das ginge.


    Falls nein, bleibt wohl nur die Anpassung über "specular power" in der geopcdx und dann natürlich auch nur pauschal für die komplette Textur?



    Edit: Habe es ausprobiert und ich kann tatsächlich von "TrainBumpSpec" ohne alpha auf "TrainBumpSpecEnvMask" + alpha gehen.


    Das ist sehr erfreulich. Vielleicht kann man dann die m.E. optisch eher missglückten BR23 von WG und die 01 NBK von RRR wenigstens so pimpen, dass sie als KI-Zug verwendbar werden.
    Mit bloßem Repaint war da gar nichts zu machen.


    Ich werde dann berichten.


    "Optik" ist natürlich immer Geschmackssache ;)

  • Jetzt sind noch zusätzliche Fragen aufgetaucht.


    Weiss jemand, was es mit den mehrfachen Aufrufen der Texturen jeweils auf sich hat?


    Beispiel hier:


    <cHcEffectMaterialDx d:id="302903232">
    <ShaderName d:type="cDeltaString">TrainBumpSpecEnvMask.fx</ShaderName>
    <TextureByName>
    <e d:type="cDeltaString">textures\[00]wg_db_t31_drehgestell_01</e>
    <e d:type="cDeltaString">textures\[00]wg_trainspecbump_nm</e>
    </TextureByName>



    oder hier:


    <cHcEffectMaterialDx d:id="311243296">
    <ShaderName d:type="cDeltaString">TrainBumpSpecEnvMask.fx</ShaderName>
    <TextureByName>
    <e d:type="cDeltaString">textures\[00]br86_valvegear</e>
    <e d:type="cDeltaString">textures\[00]generic_nm</e>
    <e d:type="cDeltaString">textures\[00]br86_valvegear</e>
    </TextureByName>


    Warum wird bei der BR86 die Textur zweimal aufgerufen? Wie wird das verarbeitet?
    Welche Rolle spielen die nm Texturen und welche Wirkung hat deren Alphakanal?


    Eine weitere Frage ist, ob Shader nicht nur getauscht, sondern sogar neu zugeordnet werden können.
    Dann ließe sich beispielsweise die alte P8 von Astauder auch noch etwas verbessern.


    Danke und Grüße
    Martin

  • Eine Textur kann durchaus mehrfach Verwendung finden.
    Eine Stahlbetonbrücke benötigt keine 100 Betontexturen. Da reicht vermutlich Eine aus, die dann auf mehrere Stellen des Meshs "tapeziert" wird.
    So wird es hier auch sein.

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • Was du vor hast , kannst du nicht machen. Dazu brauchst du das original Mesh. Nur dort kannst du das Mapping verändern. Mehrfache Einträge in den Slots des Materials können auch andere Kanäle der Textur sein. Man nutzt in Game-Engines sowas ständig, um Texture-Sampler einzusparen. In der Textur steckt wohl dann Specular oder AO mit im Alphakanal. Wen du visuelle Materialeditoren kennst, dann ist das quasi ein zusätzlicher Out-Pin am Texture-Source Objekt.

  • Ja gut die 23 ist so wie sie ist, 10 Minuten bischen an den Texturen rumspielen und sie erfüllt halt zumindest mal die Ansprüche in einer map rumzustehen. Verstehe schon dass man sich mit einfachem Repainten nicht zufrieden geben will, aber oftmals reicht es mir, denn die Modelle ansich lassen sich halt nicht verbessern, bzw. kann man mit Child Objekten und eventuell Shadern viel Aufwand treiben. Es bleibt letztendlich eine Geschmacksfrage, klar sind die Beekay Modelle etwa nicht optimal, aber die Lust dann da sehr viel Zeit reinzustecken muss jeder selber wissen.

  • Man nutzt in Game-Engines sowas ständig, um Texture-Sampler einzusparen. In der Textur steckt wohl dann Specular oder AO mit im Alphakanal.

    Kann man AO nachträglich implementieren bzw. einem Kanal zuordnen?
    Das wäre extrem hilfreich.


    Mich würde auch interessieren, ob bzw. wie man von einem nicht-fx auf einen fx Shader wechseln kann.
    Ein erster Versuch mit Astauders P8 war nicht erfolgreich.


    Mit der BR23 lassen sich immerhin leichte Verbesserungen erzielen:

  • Shader mit gleicher Slot-Anzahl und gleichem Parameter-Set kannst du in der Geo tauschen. Ändert sich aber was an der Art wie der Shader funktioniert, geht das nicht mehr, oder wird unnötig komplex. Da musst du dann die Material-Zuordnungen neu aufbauen, aufpassen dass der Lod-Controller das auch versteht etc. pp.. Du willst hier einfach zu viel "hinten rum" machen. Das wird nicht im Erfolg enden. Wenn du eine neue, bessere Lok willst, musst du dir wohl oder übel selbst eine neue bauen :)

  • Wenn du eine neue, bessere Lok willst, musst du dir wohl oder übel selbst eine neue bauen

    Ich habe ja einen Heidenrespekt vor den 3D-Modellern.


    Sich da reinzuarbeiten, Pläne zu besorgen, alles richtig zu animieren etc. stelle ich mir dann doch als eine sehr langwierige Arbeit vor.


    Es wäre daher schön gewesen, wenn man bei vorhandenes Material mit vergleichsweise überschaubarem Aufwand wenigstens die gröbsten Schnitzer ausbügeln könnte.

    wird unnötig komplex

    Das kann gerne etwas komplexer sein, wenn es ansonsten straight forward ist und einer inneren Logik folgt.


    Zumindest für mich würde das bislang unbrauchbare Loks in eine schöne Bereicherung meiner diversen Szenarien verwandeln.


    Falls sich also zu dieser speziellen Form des "reverse engineering" Tips oder sogar gute Anleitungen finden, bin ich immer ein dankbarer Abnehmer.


    @hansdampff
    Etwa eineinhalb Tage, aber noch nicht völlig "wintertauglich"
    Die 019 hat keine Kesselringe

    Einmal editiert, zuletzt von Maschinenreiter () aus folgendem Grund: Albert Kesselring Gedächtnis-Anmerkung /Ironie off

  • Was du da Vor hast wird nichts.
    Die eigentlich Daten:
    Vertex(xyz)
    UV(0,1)
    Sind komplett verschlüsselt. Also selbst wenn man das in nem Hex Editor ausliest ist das Nur Quark. Das hat ja auch seinen Grund. Sonst kann ich jetzt einfach ne schöne Lok klauen bissl was dran machen und sagen das ist meins und wieder verkaufen.


    Es gibt eine Methode an die 3D Modelle zu kommen, aber die erfordert dann doch eine Menge. Und die wird auch keiner Preisgeben da steckt ordentlich coding dahinter.



    Du kannst wirklich nur die vorhanden Texturen austauschen , bzw ähnliche shader verwenden.
    Auf den TexDiff wirst keinen TrainSpec etc hauen können weil die slot Zuweisung ganz anders ist. Und am 3D Modell kannst du eben garnichts rütteln.


    Deine beste Chance wäre vermutlich mal ne Mail an den Entwickler zu schicken.
    Aber ich bin mir 100% Sicher das da nix rausgerückt wird.

  • @klimi15 hier soll ja auch niemand die Hosen runterlassen ;-)))) Also die Gefahr dass da großflächig Meshräuber unterwegs wären glaube ich zwar nicht (bei 20,- für eine Lok sagt sich sicher keiner das Teil mal so eben selber zu bauen oder zu ergaunern und gewinnbringend weiter zu verkaufen, statt um das Geld zu kaufen), aber das ist alles kein Thema und gut so dass es nicht mal eben geht. Wenn man selber basteln kann baut man sich Child Objekte an (ich kanns nicht geht aber sicher easy), mit 64bit sollte das auch kaum so schwer ins Gewicht fallen, den normalsterblichen User (wie mich) ärgern eher so Sachen wie bei der uralt Kuju V90, dass man da das Umlauf-Geländer (die Reling) nicht einfach wegbekommt (hab da mal tagelang dran rumgespielt, ihr werdet lachen drüber und hättet das in einer Stunde). So wartet man eben 10 Jahre drauf bis einer auf die Idee kommt eine ohne Geländer zu bauen, soll schlimmeres geben. ;)

  • Also der Shader TrainBumpSpecEnvMask erfordert normalerweise zwingend 3 Texturen für seine 3 Slots:


    Code
    Textured, normal mapped, masked environment map and specular. 
    TEX1 RGB Diffuse A Env/Spec mask, 
    TEX2 RGB Normal map, 
    TEX3 Cubic environment

    Für das Cubic environment wird üblicherweise die Diffuse Textur verwendet, die auch schon in Slot 1 steckt. Texturen mit der Endung _nm werden beim exportieren nicht komprimiert bzw zusätzlich noch als komprimierte _nmc erzeugt. Zu dem Rest kann ich nicht viel sagen, das ist "durch die Vordertür" einfach leichter einzustellen als Objektbauer ^^