matConfigs

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

    Gearbest Tablet-PC Promotion promotion
    • Hallo liebe Freunde der Eisenbahn,

      ich sitze bei dem schönen Wetter am PC und versuche zu verstehen wie das "matConfigs" Array aufgebaut ist, ich komme nur leider nicht von alleine drauf und kann leider auch keinen Lexikoneintrag dazu finden :-/

      Hintergrund ist der folgende: Ich möchte die Trailer von Nandos Repaints als Assets ohne Zugmaschine verfügbar machen, als zusätzliches Schmankerl möchte ich eine Option einbauen die je nach Positionierung einen anderen Trailer platziert - also so wie beim Car-Asset-Set von Nando.

      Ich bin mir fast sicher, das dieser "Trick" über die matConfigs gelöst ist, nur sehe ich den Zusammenhang zwischen matConfigs und den verschiedenen mtl und Texturen nicht, daher die Frage.

      Wäre super wenn mir einer von euch auf die Sprünge helfen könnte!
      Gruß Dschimmi
      _____________

      Wenn Dummheit als Erklärung ausreicht, sollte niemals Böswilligkeit unterstellt werden.
    • Ja Danke, dass habe ich jetzt gesehen und weiß jetzt auch wie die verschiedenen Materialien zugeordnet werden ...

      Nur verstehe ich immer noch nicht, für was die unterschiedlichen Werte der matConfigs stehen.

      Ich habe gesehen, das es bspw. für 6 unterschiedliche Materialien auch entsprechend 6 Werte in der matconfigs gibt, was ich aber überhaupt nicht verstehe ist folgendes:

      Beim 190er Mercedes hats 6 Materialien, die matConfigs in der mdl sieht so aus:

      PHP-Quellcode

      1. matConfigs = {
      2. {
      3. 0, 0, 0, 0, 0, 0,
      4. }, {
      5. 1, 0, 0, 0, 0, 0,
      6. }, {
      7. 2, 0, 0, 0, 0, 0,
      8. }, {
      9. 3, 0, 0, 0, 0, 0,
      10. }, {
      11. 4, 0, 0, 0, 0, 0,
      12. }, {
      13. 5, 0, 0, 0, 0, 0,
      14. },
      15. },
      Alles anzeigen



      Ich gehe davon aus das der erste Wert jeder Zeile auf das jeweilige Material in der msh verweist, also 0 => 1. Material, 1 => 2. Material etc., ... wofür stehen aber die Nullen in jedem Verweis?
      Gruß Dschimmi
      _____________

      Wenn Dummheit als Erklärung ausreicht, sollte niemals Böswilligkeit unterstellt werden.
    • Hat ein Mesh nur ein Material so sieht der MatConfig so aus:

      matConfigs = {
      { 0, },
      },

      Will man nun ein weiteres Material zuweisen dann:

      matConfigs = {
      { 0, },
      { 1, },
      },
      usw.
      Das obere wird angewendet um verschiedene Lackierungen umzusetzen.

      Hat das Mesh zwei Materialien dann sieht es so aus:

      matConfigs = {
      { 0, 0,},
      { 1, 1,},
      },
      Alternative kann es auch { 1, 0,}, sein.



      Hier mal ein Beispiel von meinem OOtz 50

      Spoiler anzeigen

      function data()
      return {
      matConfigs = {
      { 0, 0, },
      { 1, 1, },
      { 2, 2, },
      },
      subMeshes = {
      {
      indices = {
      normal = {
      count = 68700,
      offset = 292296,
      },
      position = {
      count = 68700,
      offset = 154896,
      },
      tangent = {
      count = 68700,
      offset = 360996,
      },
      uv0 = {
      count = 68700,
      offset = 223596,
      },
      },
      materials = {
      "vehicle/waggon/ootz_50/ootz_50.mtl",
      "vehicle/waggon/ootz_50/kkt_57.mtl",
      "vehicle/waggon/ootz_50/ootz_50_2.mtl",
      },
      }, {
      indices = {
      normal = {
      count = 1296,
      offset = 432288,
      },
      position = {
      count = 1296,
      offset = 429696,
      },
      tangent = {
      count = 1296,
      offset = 433584,
      },
      uv0 = {
      count = 1296,
      offset = 430992,
      },
      },
      materials = {
      "vehicle/waggon/ootz_50/ootz_50_gitter.mtl",
      "vehicle/waggon/ootz_50/kkt_57_gitter.mtl",
      "vehicle/waggon/ootz_50/ootz_50_2_gitter.mtl",
      },
      },
      },
      vertexAttr = {
      normal = {
      count = 16368,
      numComp = 3,
      offset = 64336,
      },
      position = {
      count = 45384,
      numComp = 3,
      offset = 0,
      },
      tangent = {
      count = 74192,
      numComp = 4,
      offset = 80704,
      },
      uv0 = {
      count = 18952,
      numComp = 2,
      offset = 45384,
      },
      },
      }
      end


      Das ganze kann z.B. bei Transparenzen angewendet werden um eine Order umzusetzen ohne zwei getrennte mesh's zu haben. Bei dem Beispiel habe ich es wegen den Gittern gemacht.


      Edit: jetzt erst gelesen das es um die .mdl's geht.
      Wie @Nando schon schrieb geht es um die children Anzahl. Jedes children hat auch ein Material. Also muss auch für jedes ein Eintrag in der Matconfig da sein.
      Was oben bei @Dschimmi gezeigt wird sagt einfach nur aus, das jeweils das erste Mesh in der Childrenlist ein anderes Material hat. Die restlichen sind gleich. Das könnten bei einem Auto z.B. Reifen sein, die sind immer gleich, also haben die keine weiteren Matreialien für die unterschiedlichen Fahrzeugfarben.
      Ist die Childrenlist länger als die Matconfig werden die letzten Children automatisch auf "0" gesetzt.

      Eine Übersicht meiner Fahrzeugmods für TPF findet ihr hier.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von kaleut1988 ()

    • PHP-Quellcode: 190er_mercedes.mdl

      1. function data()
      2. return {
      3. boundingInfo = {
      4. bbMax = {
      5. 2.63143, 0.92348, 1.39107,
      6. },
      7. bbMin = {
      8. -1.82798, -0.92238, 0.0,
      9. },
      10. },
      11. collider = {
      12. params = {
      13. },
      14. type = "MESH",
      15. },
      16. lods = {
      17. {
      18. animations = {
      19. },
      20. children = {
      21. {
      22. id = "vehicle/car/asset/190er_mercedes/190er_body.msh",
      23. transf = {
      24. 0.0612, 0.0, 0.0, 0.0, 0.0, 0.0612, 0.0, 0.0, 0.0, 0.0, 0.0612, 0.0, -0.0, 0.03342, 0.0, 1.0,
      25. },
      26. type = "MESH",
      27. }, {
      28. id = "vehicle/car/asset/190er_mercedes/190er_frontradlinks.msh",
      29. transf = {
      30. 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.05943, -0.67302, 0.3129, 1.0,
      31. },
      32. type = "MESH",
      33. }, {
      34. id = "vehicle/car/asset/190er_mercedes/190er_frontradlinks.msh",
      35. transf = {
      36. -1.0, 0.0, 0.0, 0.0, -0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.05943, 0.67302, 0.3129, 1.0,
      37. },
      38. type = "MESH",
      39. }, {
      40. id = "vehicle/car/asset/190er_mercedes/190er_hinterachse.msh",
      41. transf = {
      42. 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -1.61767, -0.00017, 0.31326, 1.0,
      43. },
      44. type = "MESH",
      45. }, {
      46. id = "vehicle/car/asset/190er_mercedes/190er_stern.msh",
      47. transf = {
      48. 0.37141, 0.0, 0.0, 0.0, 0.0, 0.37141, 0.0, 0.0, 0.0, 0.0, 0.37141, 0.0, -0.00982, 0.0, 0.0, 1.0,
      49. },
      50. type = "MESH",
      51. },
      52. },
      53. events = {
      54. },
      55. matConfigs = {
      56. {
      57. 0, 0, 0, 0, 0, 0,
      58. }, {
      59. 1, 0, 0, 0, 0, 0,
      60. }, {
      61. 2, 0, 0, 0, 0, 0,
      62. }, {
      63. 3, 0, 0, 0, 0, 0,
      64. }, {
      65. 4, 0, 0, 0, 0, 0,
      66. }, {
      67. 5, 0, 0, 0, 0, 0,
      68. },
      69. },
      70. static = false,
      71. visibleFrom = 0,
      72. visibleTo = 2500,
      73. },
      74. },
      75. metadata = {
      76. availability = {
      77. yearFrom = 1980,
      78. },
      79. cost = {
      80. price = 10,
      81. },
      82. roadVehicle = {
      83. configs = {
      84. {
      85. axles = {
      86. "vehicle/car/asset/190er_mercedes/190er_hinterachse.msh",
      87. },
      88. fakeBogies = {
      89. {
      90. group = 0,
      91. offset = 0,
      92. position = 0,
      93. },
      94. },
      95. wheels = {
      96. "vehicle/car/asset/190er_mercedes/190er_frontradlinks.msh",
      97. },
      98. },
      99. },
      100. },
      101. },
      102. }
      103. end
      Alles anzeigen
      Das würde als bedeuten anstatt von { 1, 0, 0, 0, 0, 0 } könnte man auch einfach { 1 } schreiben weil die restlichen children dann ihr material behalten?
      Gruß Dschimmi
      _____________

      Wenn Dummheit als Erklärung ausreicht, sollte niemals Böswilligkeit unterstellt werden.
    • Genau das würde fuktionieren, ist aber eher schlecht das so zu machen.
      Nochmal am Rande: steht irgendwo z.B. eine "1" im matconfig und das Mesh hat nur ein Material also "0" dann schmiert TPF ab.

      So ich hoffe ich erkläre das jetzt richtig:

      Es handelt sich hier ja um ein KI-Fahrzeug, es sieht so aus dass hier alle möglichen Farbvarianten in einer .mdl vorhanden sind und das Spiel daraus zufällig eine auswählt.
      Jeweils die letzte "0" erscheint mir hier aber überflüssig, da es nur 5 children gibt.

      Bei einem Waggon macht man für jedes matConfig eine extra .mdl.

      Dabei währe es jetzt mal interessant ob die Zufallsauswahl auch bei Waggon's funktioniert, damit könnte man verschiedene Schmutztexturen umsetzen, dass muss ich mal probieren.

      Eine Übersicht meiner Fahrzeugmods für TPF findet ihr hier.
    • Vielen Dank, für die Erklärungen ... ich glaube ich hab's Verstanden ... nur leider bekomme ich das was ich vorhabe nicht hin ... ich kann zwar die Lackierung über die matConfig "austauschen" aber ich bekomme es einfach nicht hin das die "automatisch" je nach Position wechselt ...
      Gruß Dschimmi
      _____________

      Wenn Dummheit als Erklärung ausreicht, sollte niemals Böswilligkeit unterstellt werden.
    • Naja, du hast szs verschiedene Materialien "Slots". Für jedes Mesh in der children-Liste hast du einen "Slot". Wenn es nur 5 Meshes, aber 6 angegebene Zahlen gibt, so ist das quasi falsch. Solange das zuviele sind ist das egal. Sinds zu wenige, so wird Material 0 angenommen. Wenn das aber nicht stimmt, kanns abschmieren, weiß ich gerade nicht. Wobei 0 aber immer das default-Material ist - also eines muss man ja immer haben.

      Jedenfalls gibt man jedem Mesh darüber seine Material-Konfiguration an. Die Referenz dazu findet ihr in der materials-Angabe des entsprechenden Meshes. Dort kann man mehrere Zeilen angeben. Mein KISS2 löst so halt recht simpel (mit all seinen Vor- und Nachteilen) die verschiedenen Bemalungen/Firmen. Sieht dort bspw so aus:

      Quellcode

      1. materials = {
      2. "vehicle/waggon/kiss2_waggon_bls.mtl",
      3. "vehicle/waggon/kiss2_waggon_wfb.mtl",
      4. "vehicle/waggon/kiss2_waggon_cfl.mtl",
      5. },

      _bls.mtl hat dabei die ID0, _wfb.mtl die ID1 und _cfl.mtl eben die 2. Dies kann ich nun in der mdl angeben. Will ich dieses Mesh in den Farben der BLS haben, so gebe ich bei den matConfigs eine 0 an. Damit wird dieses Material angesprochen dass wiederrum auf die Textur im BLS-Kleid verweist. Fertig. Will ich das ändern, schreib ich einfach ne 1 oder ne 2 hin. Schreib ich ne 3 hin - pfatsch, fliegt euch TpF um die Ohren, da es hierzu keinen Eintrag gibt und das Spiel quasi ins Leere greift.
      Büffeln is nich so meins, ich bin da eher der Ornithologe...
    • Danke DarkMo, das macht es wirklich nachvollziehbar, und warum es "egal" ist wenn zuviele Zahlen angegeben werden, hat den Hintergrund das es sich dabei um ein Array handelt, man kann ein Array mit beliebig vielen Einträgen anlegen, solange nicht darauf zugegriffen wird, ist das nur verschwendeter Speicherplatz. Gibt man weniger Zahlen in dem Array an, nimmt das Spiel den Index 0 des Arrays, also den ersten Eintrag. Versucht man jetzt aber auf Index 5 zuzugreifen obwohl nur 4 angelegt sind, kommt es zum Fehler (der eigentlich abgefangen werden müsste) und das Spiel schmiert ab.

      Vielleicht könnten wir hier alles wichtige zu den matConfigs sammeln und einen Lexikoneintrag daraus "basteln"? Ich denke das Thema ich auch für andere noch interessant wenn dieser Thread schon lange inaktiv ist ...
      Gruß Dschimmi
      _____________

      Wenn Dummheit als Erklärung ausreicht, sollte niemals Böswilligkeit unterstellt werden.
    • So, ich glaube ich habe es wirklich verstanden. Der Beweis?

      Ich bin an Nandos Trailern dran, bisher hatte ich für jede Variante ein eigenes Mesh, jetzt bin ich hingegangen und habe das Mesh einmal abgelegt, in der msh die verschiedenen Materialien hinterlegt auf die ich nun über die mdl zugreifen kann -> spart mir einiges an Tipparbeit wenn ich für jede Variante "nur" eine neue mdl erstellen muss.

      Vielen Dank euch!

      p.s. Kann bitte jemand, der sicherer (als ich) im Umgang mit diesem Thema ist, einen Lexikoneintrag erstellen? Fände ich wirklich spitze, weil mir hat's geholfen und ich denke das ist nicht unwichtig ...
      Gruß Dschimmi
      _____________

      Wenn Dummheit als Erklärung ausreicht, sollte niemals Böswilligkeit unterstellt werden.