rdm converter mit animation support in arbeit

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • rdm converter mit animation support in arbeit

      Der Converter funktioniert mit Anno 2070/2205 und 1800.
      Das Tool kann gleichermaßen zwischen glTF 2.0 <==> rdm konvertieren. UV-Mapping und Animation sollten voll funktionsfähig sein. Normals & tangent & bitangent gehen seit v0.4-alpha.

      Beim konvertieren von glTF zu rdm muss die glTF zwingend mit tangent exportiert worden sein. In Blender haken bei glTF export im Meshes Tab: Tangent: "Export vertex tangents with mesh".

      Die Alpha Version gibt es auf Github: github.com/lukts30/rdm4

      Download: github.com/lukts30/rdm4/releases (rdm4-bin.exe)

      Viel Spaß beim Test :thumbsup:


      Ursprünglicher Post:
      Spoiler anzeigen

      Im Anhang findet ihr meinen rdm Converter dieser kann zur Zeit nur von rdm zu gltf konvertieren. Getestet wurde er bis jetzt nur mit der 2070 Demo. Ich bin zuversichtlich das er auch mir dem Hauptspiel (2070+Addon) klar kommt. Anno 1800 hat noch deutlich mehr Formate, die ich mir noch anschlauchen werde (sobald ich es irgendwann mal wieder installiert habe).
      Theoretisch unterstützt werden die folgenden Formate:

      Quellcode

      1. P4h: u32 = 8;
      2. P4h_N4b_T2h: u32 = 16;
      3. P4h_N4b_T2h_C4c: u32 = 20;
      4. P4h_N4b_T2h_I4b: u32 = 20;
      5. P4h_N4b_G4b_B4b_T2h: u32 = 24;
      6. P4h_N4b_T2h_I4b_W4b: u32 = 24;
      7. P4h_N4b_G4b_B4b_T2h_C4c: u32 = 28;
      8. P4h_N4b_G4b_B4b_T2h_I4b: u32 = 28;

      Bevor ich weitere Formate hinzufüge, insbesondere welche wie (P4h_N4b_G4b_B4b_T2h_I4b_I4b_I4b_I4b_W4b_W4b_W4b_W4b), werde ich erstmal den Code gewaltig aufräumen müssen und wahrscheinlich danach erst einmal für ein paar der Formate den anderen weg (gltf to rdm) implementieren.

      Wichtig: das einzige Ziel war bis jetzt so schnell wie möglich ein rdm Datei mit Animation zu konvertieren dabei habe ich hier in meinen vierten Versuch bewusst nur das nötigste implementiert für die bisherigen Formate fehlt noch die Untersützung für Normals / UV bzw TEX_CORD / Bitangent und was auch immer nochmal C4c ist ?


      file-upload.net/download-14012280/demo_rdm.zip.html



      Quellcode

      1. # ohne animation
      2. rdm4.exe -f <RDM Datei>
      3. # mit skeleton soweit vorhanden (aka _Ib4)
      4. rdm4.exe -fs <RDM Datei>
      5. # mit skeleton soweit vorhanden (aka _Ib4) und anim file
      6. rdm4.exe -fsm <RDM Datei> <RDM_ANIM Datei>
      7. Es wird der Ordner "triangle" erstellt (todo ...) in diesen findet sich die Datei triangle.gltf diese lässt sich z.B mit MS 3D & Blender oder in https://threejs.org/editor/ betrachten.

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von lukts30 ()

    • yap, Anno rendert "falschherum".

      Wir haben im Discord ein paar Leute, die selbst an rdm-Conversion gearbeitet haben, allerdings noch niemand mit Animationen. Darf ich fragen, welche Programmiersprache du nutzt? Wir haben einmal ein Python-Script und einen rdm Converter in C++.
      Vielleicht kannst du dich ja mal mit denen austauschen, würde dir denke ich einiges vereinfachen, die beiden haben das rdm-Format nahezu komplett entschlüsselt. zu finden unter den Nicknames VonZeeple und kskudlik :)

      Und vor allem: Danke!
    • Mir ist der C++ Converter bekannt und erst wegen dessen Existenz habe ich erst die Motivation bekommen den hier zu schreiben. Was das RDM Format angeht habe ich zumindest was die in 2070 verwendeten Variationen betrifft mittlerweile einen recht guten Überblick. Renderdoc und Hex Editor sei Dank.

      Was beim Code noch fehlt, ist wie gesagt der Rückweg von glTF zu RDM. Das sollte aber zum Wochenende hoffentlich laufen.
      glTF wurde bewusst gewählt da in obj Animationen schlicht unmöglich sind.

      Nale aka Taubenangriff schrieb:

      Darf ich fragen, welche Programmiersprache du nutzt?

      Rust und ich lerne es gerade erst. Resultat: Der Code ist gruselig und überall lauern Anti-Patterns.
      Aber positiv aufgefallen ist mir, das ich wenig falsch machen kann, weil es sonst einfach nicht kompilieren würde und die paar Unit Tests garantieren, dass ich nichts weiter kaputtgemacht habe. Musste noch kein Mal den Debugger nutzen, in anderen sprachen, wäre das bei mir nach ein paar Minuten der Fall.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von lukts30 ()

    • Nächster Milestone erreicht. RDM->glTF->RDM funktioniert. Die resultierende Datei ist nur äquivalent da

      1. Offsets anders sind
      2. normal + tangent + bitangent als Normalized Integer abgespeichert sind dass zu float konvertiert werden muss für glTF und daraus wieder Normalized Integer für rdm
      3. Skelett auch ein wenig abweicht. z.b:
      left = -0.002778834 != right = -0.0027786891

      Optisch konnte ich noch keine offensichtlichen Unterschiede feststellen. Es könnten aber womöglich Modelle geben bei denen es mehr ins Auge fällt.
    • Ergebnis für diese Woche:

      - Bestehende Modelle können zu glTF exportiert werden. Die erzeugten glTF Dateien können wieder zu rdm konvertiert werden.

      - Von Blender gibt es einen großen **** was die Skelett Hierarchie angeht (Baum Struktur wird zusätzlich verschachtelt und umsortiert ahhh :cursing: ).
      Blenders exportierte glTF Datei zu rdm konvertiert und mit Hexeditor die Baum-Hierarchie wieder hergestellt.

      Langweiliges Ergebnis: Der Basaltbrecher hat nen Zylinder bekommen.

      [IMG:https://s12.directupload.net/images/200426/wd85ei6g.jpg]

      Weiter geht es am Nächten Wochenende.

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von lukts30 ()

    • Tja, nach den Corona Osterferien war die Motivation von heute auf morgen nicht mehr vorhanden. Dabei wäre gar nicht mehr so viel zu machen gewesen.
      Das meiste funktioniert schließlich bereits proof of concept mäßig ... naja || .

      Die zwei Modelle hier konnten bereits in Anno 2070 geladen werden damals April 2020 ...
      1. github.com/KhronosGroup/glTF-S…e/master/2.0/RiggedSimple
      2. github.com/KhronosGroup/glTF-S…e/master/2.0/RiggedFigure


      Falls jemand anderes sich durch meinen Code Müll durch Kämpfen mag ->

      github.com/lukts30/rdm4/tree/rdm_out