Mesh Rotation, abhängig von der Bogey-Ausrichtung?

  • Hallo, ich arbeite seit sehr langer Zeit an einem Experiment, welches mir sehr am Herzen liegt.
    Ich habe mir sehr lange und intensiv den Kopf darüber zerbrochen, wie man das am besten und sinnvollsten umsetzt.


    Noch möchte ich nicht allzusehr ins Detail gehen, aber schon mal die Frage von mir, ist es möglich, ein Mesh in einem Traincar-Asset immer genau so auszurichten, wie das Drehgestell des Wagens ist?

    Ich habe versucht, es als erstes an den helper a.bog0 usw zu hängen...
    Da das Mesh sitzt richtig, allerdings bleibt dieses immer starr, auch wenn das Drehgestell sich in einem Gleisradius dreht. :thumbs_down:

    Dann habe ich mal was ganz dummes probiert, und zwar einen neuen Helper im Drehgestell erstellt und das Fahrzeug Mesh an diesen Helper gehangen, allerdings wird nun dieser Helper nicht gefunden.
    Oder gibt es einen Trick, wo man (ähnlich wie bei Alias) Helper aus anderen Assets abrufenkann?

    Oder muss es unbedingt ein Skript sein?


    Falls jemand Tipps oder Tricks kennt, oder sogar weis, wie man das realisieren könnte, wäre ich für diese Hilfe wirklich sehr Dankbar.
    Denn sollte dieses Experiment gelingen und so wie gewünscht funktionieren, würde ich für ein neues Fahrzeug-Modell ca 100€ investieren, welches ich mir herausgesucht habe und nur dafür Kaufen würde.


  • Verzeih mir, wenn ich etwas wage antworte und ins Blaue hinein schieße.


    Beiden Drehscheiben war es, soweit ich mich erinnere, notwendig, in der

    config.txt einen Eintrag vorzunehmen, welcher einen String beinhaltet.

    "a.helper/mesh.im" oder ähnlich. Schau da mal bitte nach.

  • Ich habe im Trainz-Wiki unter der Mesh-Table folgenden Eintrag gefunden

    Zitat von Trainz-Wiki

    orientation

    Type: Floatlist (radians)
    Default: 0,0,0
    Compulsory: No
    Desc: Orientation of X,Y,Z axes. Allows a submesh to be rotated relative to its insertion point. To reverse a mesh by 180 degrees about the Z axis, add the tag: orientation 0,0,3.14159

    dies wäre demnach eine fest definierte Drehung auf dem Helper oder?
    Demnach müsste jetzt zwischen dem drehbaren Mesh und dem Helper a.bog0 ein animierter Dummy, welcher eine Rotation der z-Achse zulässt.
    Aber trotzdem muss ich doch dann irgendwo her die Werte für die Ausrichtung des Drehgestells abfragen.

    Oh, man... auf dem Papier sah das alles so einfach aus.
    Seit gestern Nachmittag scheitere ich an diesem Vorhaben :frowning_face:



    *Edit* da zeitgleich geschrieben

    Verzeih mir, wenn ich etwas wage antworte und ins Blaue hinein schieße.


    Beiden Drehscheiben war es, soweit ich mich erinnere, notwendig, in der

    config.txt einen Eintrag vorzunehmen, welcher einen String beinhaltet.

    "a.helper/mesh.im" oder ähnlich. Schau da mal bitte nach.

    Danke für den Tipp, das werde ich mir mal genauer anschauen.

    • Offizieller Beitrag

    Also ich weiss ja nicht, was genau du umsetzen möchtest, aber schonmal folgendes probiert?

    - Das eigentliche Fahrzeugasset ist unsichtbar. Es besitzt alle nötigen Attachmentpoints und sonst nichts

    - Das Mesh wird stattdessen Teil des Bogeymeshes, sollte sich also mit dem Bogey drehen



    Damit wird sich das optische Außenmesh schonmal mit dem Bogey drehen. Allerdings weiss ich nicht, ob du zu diesem Scriptinfos vom unsichtbaren Hauptasset senden kannst. Außerdem wird sich ein Cab definitiv nicht mitdrehen, da die Cabattachments im Hauptasset sein müssen und sich dieses ja nicht dreht.


    Ansonsten würde wahrscheinlich noch die alte Methode gehen, mit der sonst Kleinstgelenkfahrzeuge und Schnabelwagen umgesetzt wurden.
    Das Fahrzeug wird in mehrere Teile geteilt, die an sich eigenständige Fahrzeuge sind. Dabei sind die Bogeypunkte so dicht zusammen gewählt, dass jedes Teil scheinbar starr immer auf dem Gleis zentriert ist. Der Vorteil, alle Attachmentpoints bewegen sich korrekt mit (so auch das Cab). Der Nachteil: Viel Fummelarbeit, und in der Praxis eventuell das Problem, dass sich das Cab in Segment 1 von 6 befindet, und der User, der dies nicht weiss, nach dem Besuchen eines Wagens mit Innenraum erstmal das richtige Segment erwischen muss, um ins Cab zurückzukehren.




    Greets, Mika

    Student in Vollzeit, Straßenbahnfahrer in Teilzeit. Skripte für Trainz wenn Motivation da ist...


    "It's always more fun to share with everyone" -Jack Johnson

  • Genau so weit bin ich auch.

    Teile des Fahrzeuges habe ich in ein Bogey-Asset gepackt, somit drehen sich diese Teile mit dem Gleisradius.
    Damit nun aber Kupplungen, Schlussscheiben sowie alles weitere, was auf genau diesen Teilen drauf/dran sein soll, auch korrekt platziert sind, müssen diese helper sich an genau diese Bogeyausrichtung orientieren.

    das Aufteilen der im Fahrzeug befindlichen und beweglichen Teilen als jeweilige eigene Fahrzeuge, wurde ja bereits immer so gemacht.
    Ich möchte es aber besser haben, sodass diese Art von Fahrzeugen nun mit nur einem Klick platziert werden, dass man diese nicht da abkuppeln kann, wo man es nicht soll usw...

    Okay... lassen wir die Katze aus dem Sack.

    Ich möchte die 6-Achsigen Containerwagen der Bauart Sggrss-90, welche ich aktuell von Samplaire beziehe komplett erneuern.
    Dabei soll der ganze Wagen, welcher aus 2 Fahrzeugteilen besteht, in einem Asset sein.
    Man soll diesen mit nur einem Mausklick platzieren können, dieser Wagen soll auch in Trainz als nur ein Wagen gewertet werden, nicht als 2.
    außerdem ist so aktuell auch die Beladung nicht realitätsnahe, da die Beladung von Wagen zu Wagen geht, kann es sein, dass die eine Hälfte des Wagens mit 2x 20ft-Containern beladen wird und die zweite Hälfte leer bleibt.
    Richtiger Weise müssten die Wagen von Außen nach innen beladen werden, damit das Mitteldrehgestell so gering wie möglich belastet wird.

    Ich bin bereits schon soweit, dass alles korrekt in Trainz ist, nur fehlt noch die Beweglichkeit der auf den Fahrzeugteilen befindlichen Attachments.

    Ich habe das wie Folgt gelöst:


    Ich habe als erstes ein Basis-Mesh, wo nur die beiden Helper a.bog0 und a.bog1 enthalten sind.
    Dann habe ich Helper-Meshes für die beiden Wagenhälften, in dem zB hier Linken sind die Bogeys 2 und 3, Limfront usw enthalten und im Rechten, dem 2. Wagen-Mesh Bogey 4, Limback usw...

    Ich hatte zuvor experimentiert, wie es sich verhällt, wenn man mehrere Drehgestelle definiert.
    Und ja, ich konnte in einem Wagen viele Drehgestelle einbauen, die ALLE sich nach dem Gleisradius gerichtet haben.
    Allerdings folgen nur Bogey0 und Bogey1 der Spur, alle anderen würden bei einem Längeren Wagen zB in einem Gleisbogen seitlich von der Spur gezogen werden, diese drehen sich aber trotzdem mit.

    So, nun habe ich die Beiden Wagenhälften als ein eigenes Bogey definiert und auf die Bogeys 0 und 1 gesetzt.
    Die Wirklichen Drehgestelle sind dann auf die Bogey-Helper 2, 3 und 4 verteilt.

    So sieht es jetzt im Trainz aus.
    So wie er jetzt da steht ist es nur noch EIN Wagen.



    Hier kann man leider sehen, dass die Helper sich nicht mit drehen, das hat leider den Effekt, dass die Ladung und alles weitere sich auf dem Wagen verschiebt.




    Durch eine fehlerhafte Serverkonfiguration sind leider die Anhänge in diesem Beitrag verloren gegangen. Weitere Informationen siehe hier.
    Due a server misconfiguration, the attachment(s) of this post became lost. For further information see here.

    2 Mal editiert, zuletzt von cj187 ()

  • Okay, ich weiß jetzt was Du möchtest.

    Aber auch dieses mal ist mein "Tipp" sehr wage.

    Sorry.


    Soweit ich mich erinnere, gibt es einen Langholzwagen von "Gerd", UID 72730.

    Dieser wird als ein Asset auf das Gleis gestellt. Schau Dir diesen etwas genauer

    an, wie er das Ganze umgesetzt hat.


    kuid2_72730_16321_11.jpg


    Langholzwg m. Bremserhs

    KUID2:72730:16321:11


    kuid2_72730_16322_11.jpg


    Langholzwg o.Bremserhs

    KUID2:72730:16322:11

  • ...naja, Gerd scheint die beiden Holzaufleger zusammen als Traincar und jeden Wagon als Bogey gebaut zu haben.

    So drehen sich in Kurven die Holzaufleger nicht mit...


    Wenn ich das richtig sehe, ist der Wagen hier in seiner Länge mittig nicht beweglich.

    Das mittlere Drehgestell muss sich in Gleisbögen also auch seitlich verschieben können.

    Baue das erste und mittlere Drehgestell zusammen mit dem gemeinsamen Drehpunkt unter dem ersten Drehgestell.



    Edit:

    Dazu müsstest Du in einem neuen Mesh (bogey) diese miteinander verbinden und dessen Drehpunkt genau mit dem ersten Bogey zusammen legen, damit dieser vorne (oder hinten) am Wagon liegt.

    Dadurch, dass Du das nur über die Bogeys löst, hat es keinen Einfluss mehr auf die Ladung...

    2 Mal editiert, zuletzt von Joerg M ()

  • Ich habe mal Tane aufgemacht und ein

    Extrembeispiel aufgebaut:



    USA:

    TTX Econo A <kuid2:164988:30026:2>

    TTX Econo B <kuid2:164988:30046:2>

    TTX Econo C <kuid2:164988:30036:2>


    Durch eine fehlerhafte Serverkonfiguration sind leider die Anhänge in diesem Beitrag verloren gegangen. Weitere Informationen siehe hier.
    Due a server misconfiguration, the attachment(s) of this post became lost. For further information see here.

  • Ok, hab es jetzt erst gelesen...

    Der eigentlich 2-teilige Wagon (knickt im letzten Bild doch mittig im Kurvenbereich ein...) soll als einer zusammen zur Verfügung stehen.

    Ok, die Ladung verschiebt sich, folgen die Bogeys 2 bis 4 wenigstens den Gleisen?


    Du musst jetzt halt "nur noch" die richtigen a.bog-Helper finden, mit denen Du das mesh mit den Ladungshelpern verbindest....

    Eigentlich eins für 2 Container auf a.bog0 und eins für 2 Container auf a.bog1.

    Sie dürften sich dann nicht verschieben, da es ja die als Bogeys a.bog0 und a.bog1 deffinierten Wagenteile auch nicht tun.


    @ Joth

    Ja, aber hier sind es 3 einzelne Assets 1. Anfangsteil, 2, Mittelteil, 3. Endteil

    So etwas gibt es auch für Doppelstockwagen...

  • Greenstar

    Genau so soll es ja nicht sein.
    Wie bereits tedje beschrieben hat, soll dieses bisher aus mehreren Einzelassets nun alles in einem Asset als EIN eigenes Fahrzeug fungieren.


    Ja, die beiden Wagenhälften bewegen sich getrennt voneinander und knicken auch im Gleisbogen ein.
    Die Drehgestelle drehen sich auch passend dem Gleisverlauf.
    Nur leider verschieben sich diese und sämtliche andere helper für zB den Rangierbegleiter, Schlussscheiben und Container in engen Bögen.
    Dabei habe ich alle diese Helper bereits in 2 Meshes aufgeteilt und auch an a.bog0 und a.bog1 attached.
    Leider rotieren diese helper ja nicht, sondern erst die Drehgestelle, die da dran hängen.

    Mit bleiben nun folgende Möglichkeiten, wo ich nicht weis, ob diese überhaupt funktionieren.


    1.)

    Das Mesh muss irgendwie einem Helper im Bogeyasset angehangen werden, damit es sich zusammen mit diesem dreht.

    2.)

    Per Skript muss der Gleisradius ausgelesen werden und in eine rotation umgerechnet werden.

  • Dann sind es Trainz-Intern immernoch 2 Fahrzeuge
    Und schade, dass man immer mit altgewohnten Workarounds leben muss.
    Es ist schade, dass von N3V nie eine innovation dahingehend kommt bzw die Skriptbefehle so eingeschränkt sind, um soetwas mal anständig umzusetzen.

    Wie soll man denn bitteschön was neues, innovatives oder komplexes erstellen/nachbilden, wenn man einfach nicht die richtigen Hilfsmittel gereicht bekommt, wenn sich der Entwickler wohl denkt "pfft, geht ja auch so"

    • Offizieller Beitrag

    Wo ist das Problem dabei, dass das intern zwei Fahrzeuge sind? Ist doch besser als eine Bastellösung, die dann zB. mit dem nächsten Update nicht mehr (richtig) funktioniert...

    Sinnvoller wäre es, mal bei N3V nachzufragen, ob man nicht (ggf. im nächsten Trainz) eine Option für mehrteilige Fahrzeuge einbauen kann...

  • Weil ich die Wagen auch realistisch beladen lassen möchte.

    Beispielsituation:

    Terminal hat so viel Container, dass zum Schluss 2x 20ft-Container übrig sind.
    Diese werden dann auf einen Teil des Doppelwagens beladen, anstatt das Gewicht gleichmäßig auf beiden Teilen zu verteilen.

    Irgendwo möchte ich ja auch in gewisser weise ein bisschen realitätsnähe reinbringen.

  • Irgendwo möchte ich ja auch in gewisser weise ein bisschen realitätsnähe reinbringen

    Das ist vorbildlich, finde ich klasse und die Motivation dahinter befürworte ich!


    Wie soll man denn bitteschön was neues, innovatives oder komplexes erstellen/nachbilden, wenn man einfach nicht die richtigen Hilfsmittel gereicht bekommt, wenn sich der Entwickler wohl denkt "pfft, geht ja auch so"

    Das ist Ansichtssache. Denk einmal an die Performance.

    Ein paar Denkanstöße:

    - Objektbewegungen werden mit jedem Frame in einem Spiel berechnet, du müsstest also auch in kurzen intervallen (am besten in der Framzeit) das Objekt per Script neu ausrichten, um eine flüssige Drehbewegung zu bekommen. Gott sei Dank macht TrainzScript da eh nen Riegel vor. Stell dir vor, du machst das bei fünf Zügen mit 30 Wagen...

    - Die Ansätze von Sebastian einmal genauer betrachten. Du kannst Ereignisorientiert scripten, auf Ereignisse am Fahrzeug und der Industrie reagieren. Darauf solltest du dich konzentrieren, statt komplett am Programm vorbei zu entwickeln. Du kannst ohne Workaround auch die zwei Wagen wie einen behandeln.

    - TrainzScript ist nicht dazu da, um das Spiel neuzuerfinden, sondern auf bestehendem aufzubauen.


    Das sind gut gemeinte Ratschläge. Den Fehler - sich im Detail zu verlieren - habe ich auch schon gemacht und es ist am Ende nichts anständiges bei rum gekommen und ich behaupte von mir TrainzScript sehr gut zu beherrschen.

  • Okay, ich danke dir @callavsg , dass du das nötige Knowhow dafür hast, das weis ich und dem Vertraue ich in Trainzangelegenheiten blind.

    Das mit einer Animation, die Radiusabhängig das Mesh unmittelbar neu ausrichtet, wollte ich garnicht, das ist nur das einzige gewesen, wo ich wüsste, dass das gehen könnte.
    Irgendjemand hatte mal Neigetechnik anhand des Radius geskriptet...
    Ich hatte gehofft, dass man ein Mesh auch assetübergreifend an einen definierten Helper hängen kann.
    Dann muss es halt wieder ganz klassisch sein.

    Gäbe es denn die Möglichkeit, wie Sebastian schrieb, beim Platzieren des Wagens, den jeweilig passenden 2. Teil automatisch mit platzieren zu lassen?
    und wenn ja, kann man den 2.Teil des Wagens im Editor nicht zur Auswahl stehen lassen?
    Ich weis, dass man hiermit:

    Code
    train.ShowInConsistMenu(false);        

    den Zug aus der Consist-Liste nehmen kann.

    Jetzt bleibt nur noch ein Problem, andem sich der gute @Mika die Zähne ausbeist.
    Und zwar an der kupplungen.gs in der Scriptlibrary.
    Diese ist dafür verantwortlich, dass die Fahrzeuge während der Bewegung nicht mehr kuppeln können.
    Außerdem regelt diese auch, den Zustand der Kupplungen, die ich im Fahrzeug definiere.
    Die Sgg-Wagen sind in den jeweiligen Hälften gleich ausgerichtet. Sprich die Puffer sind immer vorne.
    Beim Platzieren der Wagen muss der 2. Teil also immer gedreht werden.

    Diese beiden Wagenhälften wurden nun so eingestellt, dass jeweils die hintere Kupplung nicht kuppeln kann (also am Mitteldrehgestell)
    Wenn man die Wagen platziert, ist das auch so wie es sein soll.
    Allerdings verlieren diese Wagen diese einstellung, nachdem diese sich einmal bewegt haben.


    Sollte diese Probleme nun behoben werden, dann werde ich die Wagen sehr gerne wieder in 2 getrennte Assets erstellen.


    Durch eine fehlerhafte Serverkonfiguration sind leider die Anhänge in diesem Beitrag verloren gegangen. Weitere Informationen siehe hier.
    Due a server misconfiguration, the attachment(s) of this post became lost. For further information see here.

  • Entschuldigt den Doppelpost...

    Mika hat einen Verdacht, woran das liegen könnte und weis leider nicht mehr weiter...
    Ich darf ihn hier zitieren, falls jemand anderes evtl auf die Lösung kommt, ich hoffe da auf die ganz großen im geschäfft.

    @callavsg  Patrick230  Svenofborg :smiling_face_with_halo:


  • Okay - Nun bin ich verzweifelt!

    Es gibt da ein ganz großes Problem in der Trainz-Logik...


    Sowie es mir nun Mika erklärt hat, bestimmt die Lok in gewisser Weise auch über den Funktionsumfang des ganzen Zuges bzw überträgt Funktionen und Definitionen der lok auf die Wagen.
    All das war bis jetzt, bei der bisherigen Nutzung 1 Lok für jeden Zug auch garkein Problem.
    Zum Beispiel kannte man mit einer meiner neuen Loks und irgendwelchen Wagen (auch von anderen Autoren) allein durch das Kuppeln, den Wagen die selben Funktionen übertragen!

    Das Problem entsteht, wenn man 2 Lokomotiven kuppelt.
    Trainz möchte, auch wenn es den Anschein hat nur eine Lok im Zug haben.
    Jede andere wird quasiein ihrer Funktionsweise als Master überspielt.
    Trennt man jetzt die beiden Loks wieder, ist diese Lok, mit der man an die andere Gefahren ist (Master) noch vollkomen in Ordnung.
    Die andere, also die nachträglich angehangene Lok wurde zum Slave und hat ab den Moment leider keine Funktionen mehr aus der Scriptlibrary.
    Fährt man nun mit der Slave-Lok zB an meine Wagen ran (also mit etwas höherer Geschwindigkeit), dann sollte diese die Wagen wegstoßen.Das tut sie aber nicht mehr, da die Kupplungen einfach nicht mehr bei dieser Lok angesprochen werden.
    Kuppelt man nun als Slave-Lok die andere Master Lok an, sind beide loks nun Slave-Loks und für weitere Tätigkeiten unbrauchbar!
    Nicht nur das, Kuppelt nun eine Slave-lok andere Wagen an, verlieren diese ebenfalls ihre Funktionen.

    Das ist zum Kotzen!


    Somit wird nun die ganze Arbeit von über 2,5 Jahren und unzähligen Arbeitsstunden all der Beteiligten zunichte gemacht!