Vom Blendermodell zum Home-Nostruktor-Modell - Teil 3

!!! Please ensure, that your contribution or question is placed into the relevant section !!!
Questions about rolling stock, for example, do not belong in "Questions about the Forum". Following is perhaps the right area where your question will be better looked after:
General questions to EEP , Splines, rolling stock, Structures in EEP, landscape elements, Signalling system and controlling, designers, Europe-wide EEP meetings , Gossip
Your cooperation to keep the forum clear is appreciated.
In the case of pictures that are attached to the article, the source must also be stated. This also applies to your own pictures, which were taken by you. Pictures without source information will be deleted!

  • Nachtrag 25.07.2021 16:35: Überarbeitete Version V1.3 erstellt (siehe #4)

    Nachtrag 27.07.2021 21:15: Überarbeitete Version V1.4 erstellt (siehe #6)

    Teil 3 – Die Export-Import-Abfolge von Blender zu Home-Nostruktor

    Voraussetzungen

    Das Modell wurde in Blender 2.93 LTS erstellt. Die Skalierung aller Objekte ist 1.0, die Rotations- und Translations-Werte der Objekte entstehen durch Verschiebung und Rotation aus der Z-Null-Lage der Objekte. Die Z-Null-Lage wird zum Export der Objekte genutzt. Dabei liegen die Blender-Origins der Objekte im Weltursprung. Die Objekte sind so gedreht, dass die geplante Haupt-Bewegung in Richtung der Objekt-Z-Achse (Translation) oder um die Objekt-Z-Achse herum (Rotation) verläuft.

    Die Blenderdatei mit den Objekten in Z-Null-Lage wird in diesem Dokument als Export-Datei bezeichnet und die Blenderdatei mit den gedrehten und verschobenen Objekten in Modell-Lage als Modell-Datei. Die Blenderdatei zum Ablesen der Achsen-Werte für die Achsendialoge als Achsen-Datei.

    Schrittfolge für die Objekte:

    • Schritt 00: Das AddOn für den Home-Nostruktor-Export im Blender 2.79 installieren.
      (Nur einmalig für alle weiteren Modelle)
    • Schritt 0: Vorbereitung und Bereitstellung der Texturen für das Modell
      (Nur einmalig für ein Modell)
    • Schritt 1a: Erstellen der Modell-Datei und notieren der Translations- und Rotationsdaten der Objekte aus dem Modell (Modell-Daten, siehe Bemerkungen und Tabellen).
    • Schritt 1b: Erstellen der Exportvariante des Modells, bei der alle Objekte (Modellteile) in in Z-Null-Lage liegen.
    • Schritt 1c: Export (aus Blender 2.93 LTS) der Export-Blender-Datei als FBX-Modelldatei mit den Standardeinstellungen.
    • Schritt 2a: Erstellen der Achsen-Datei aus der Modell-Datei, entsprechend der geplanten Achsen-Kreuzungen, ausgehend vom Basis-Objekt, die Eltern-Kind-Beziehungen herstellen.
    • Schritt 2b: Ausgehend vom obersten Eltern-Objekt (Basis) immer weiter Richtung Enkel-Objekte für jedes aktuelle Kindobjekt folgende drei Schritte ausführen:
      • Elternbeziehung mit behalten der Transformationen lösen:
        Objekt markieren => Alt+P A oder
        Menu Object => Parent => Clear and Keep Transformation
      • Notieren der (relativen) Translations- und Rotationsdaten des Objektes als Achsen-Daten
      • Das Objekt (gemeinsam mit den Kindern und Urenkeln) in die Z-Null-Lage bringen

      (siehe Bemerkungen und Tabellen).

    • Schritt 3: Import der FBX-Modelldatei in Blender 2.79
    • Schritt 4: Objekt markieren und als n3d-Home-Nostruktor-Datei exportieren
      (Wiederholen für jedes einzelne Objekt des Modells)
    • Schritt 5: Anlegen des Objektes und importieren der n3d-Objekt-Datei in den Home-Nostruktor. Im Objekt-Import-Dialog die Skalierung auf 1.0 sowie die Rotation und die Translation auf 0.0 einstellen und ggf. weitere Werte eintragen.
      (Wiederholen für jedes einzelne Objekt des Modells)
    • Schritt 6: Geplante Achsen-Kreuzungen einrichten und beim Zuordnen zu Achsen die
      ermittelten Achsen-Werte für Fußpunkt (Achsen-Translations-Daten) sowie Richtung und Orientierung der Achse einstellen (Aber Achtung! Siehe Bemerkungen und Tabellen).

    Bemerkungen:

    Die Translationsdaten werden als cm-Wert ausgelesen.

    Im Schritt 1 müssen für den weiteren Weg vorher für jedes Objekt die Skalierungsdaten auf 1.0 stehen. Die Verschiebungs- und Rotations-Angaben (sechs Werte) bleiben erhalten und werden notiert.

    Im Schritt 2a entsprechen Eltern-Kind-Beziehungen den Achsen-Kreuzungen im Home-Nostruktor. Dabei ist die oberste Eltern-Instanz das Objeket, welches mit der Basis-Achse verbunden wird.

    Eine Eltern-Kindbeziehung zwischen zwei Objekten wird wie folgt hergestellt: Kind-Objekt markieren und danach mit gehaltener Umschalttaste das Eltern-Objekt dazu markieren (Reihenfolge ist wichtig, also dem Kind wird das Elternteil zugeordnet). Danach über das Menu Object => Parent => Object (alternativ auch ctrl+P O) die Objekt-Beziehung herstellen.

    Im Schritt 2b werden dann immer beim Verschieben und Rotieren in die Z-Null-Lage die noch aktiven Kinder und Enkel mit bewegt. Das ist wichtig, weil man nur so die relativen Transformationen herausbekommt, die als Achsen-Werte eingetragen werden müssen.

    Für die beschriebene Ermittlung der relativen Objekt-Daten wird vorausgesetzt, dass das Basis-Objekt sich richtig im Modell befindet, dass der Origin des Basis-Objektes gleichzeitig im Modellursprung liegt und es so auch exportiert wurde.

    Wichtig! Die Z-Null-Lage muss zur geplanten Bewegungsrichtung passen. Die Orientierung an der Z-Achse muss so sein, dass die spätere Bewegungsrichtung des Objektes vom Minimlwert zum Maximalwert auch in +Z-Richtung passiert.

    Beispiel: In der Z-Null-Lage einer kleinen Pyramide zeigt die Spitze nach oben, also in +Z-Richtung. Im Modell soll die Pyramide kopfüber hängen und sich in Richtung spitze, also nach unten bewegen.

    Würde man nun z.B. aus Bequemlichkeit das gleiche Objekt noch einmal andersherum ins Modell einhängen, ebenfalls mit der Bewegung nach unten. So zeigt die Objekt-Z-Achse ja nach oben aber die Bewegung geht nach unten. Deshalb bekommt man im Achsendialog Probleme mit Minimal- und Maximalwert.

    Und ja, man könnte da auch beim Import drehen, oder die Orientierung und Richtung manipulieren, aber damit gerät man aus der oben beschriebenen Systematik. Und ich selbst habe dann immer irgendwie den Überblick verloren.

    Im Schritt 4 ist es sinnvoll, in die Dateinamen der n3d-Datei auch die Textur-ID einzutragen, weil man diese bei der Dateiauswahl kurz vor dem Import-Dialog noch einmal sieht.

    Im Schritt 5 wird vorausgesetzt, dass das Basis-Objekt sich richtig im Modell befindet, dass der Origin des Basis-Objektes gleichzeitig im Modellursprung liegt und es so auch exportiert wurde.

    Im Schritt 6 werden im Achsendialog die im Schritt 2 ermittelten Achse-Werte eingetragen.

    Aber Achtung! Das kleine Tool, das aus den Grad-Werten die Werte für Richtung und Orientierung ermittelt (Button Berechne Rotation) arbeitet relativ zu den bereits vorhanden Werten für Richtung und Orientierung, das heißt, die Achse wird bei der nächsten Benutzung dieses Buttons weiter gedreht! Es empfiehlt sich nach meiner Erfahrung beim Rotieren immer vorher die Null-Stellung mit R(1, 0, 0) und O(0, 1, 0) herzustellen und dann die Rotation laut Tabelle umzusetzen.

    Wichtig! Gibt es Rotationswerte für mehrere Achsen, so müssen diese Rotationen nacheinander per Button berechnet werden. Die Bildfolge stellt das in etwa dar. Dabei werden als ermittelte relative Werte TBsp(12, 0.0, 16.25) und RBsp(-90.0, 0.0, 90.0) verwendet.



    [Bild 1] bis [Bild 6] Quelle: Selbsterstellt aus Screenshots


    So bekommt man die Rotationsdenkweise aus Blender in den Home-Nostruktor übertragen

    Wenn man beide Rotationen zu gleich berechnen lässt, bekommt man ein anderes Ergebnis.



    [Bild 7] bis [Bild 8] Quelle: Selbsterstellt aus Screenshots


    Das entspricht nicht der Modellplanung.


    Mehrere gleichzeitige Bewegungen eines Objektes müssen über vorgekreuzte und gekoppelte Achsen umgesetzt werden. Als Hilfsobjekte in Blender könnten die Empties dienen, die man ja entsprechend ausrichten für jede Bewegung, weil ja jede Bewegung aus Sicht des Home-Nostruktor in Z-Richtung liegen muss.


    Achsenkopplungsarten: Bei den Achsenkopplungen gibt es momentan drei grundlegende Varianten:


    Auto

    Die Minimal- und Maximalwerte werden so interpoliert, dass die Bereiche gleichmäßig linear abgedeckt sind. Wurde z.B. die koppelnde Achse um ¼ bewegt so wird die gekoppelte Achse auch um ¼ bewegt.


    Faktor

    Die Einstellungswerte für die gekoppelte Achse werden durch die Multiplakation der aktuellen Werte der koppelnden Achse mit dem angegeben Faktor wrmittelt. Hier werden die Werte der gekoppelten Achsen nur geprüft und ein Hinweis angezeigt, wenn die mit dem Faktor ermittelten möglichen Werte nicht zu den in der gekoppelten Achse angegebenen Werten passen.


    Manuelle Transformation

    Das ist die im Moment mächtigste Variante, denn hier kann in maximal 36 Schritten Einstellungswerte für alle neun möglichen Transformationen (Translation, Rotation und Skalierung jeweils in X-, Y- und Z-Richtung)


    Berechne

    Zeigt die "verbundenen" Maximal- und Minimalwerte sowie den Umrechnungsfaktor an.


    Eine Richtung

    z.Zt. keine persönliche Erkenntnis zu Zweck und Verwendung

    Nachbemerkungen

    Noch einmal möchte ich betonen, dass es hier um die prinzipelle Funktionalität geht, aber nicht um künstlerische Schönheit. Die einfachen stilisierten Objekte lassen sich immer durch schönere, detailiertere Objekte ersetzen. Aber es geht nicht um Realitätsnähe, sondern darum, wie man die Funktionalität zu EEP rüber bekommt.

    Wenn euch immer wieder gesagt wird, dass es ein langer Weg ist bis zu einem guten Konstrukteur und er mit vielen Fehlschlägen gepflastert ist, glaubt ihnen kein Wort! ...

    … Es ist in Wirklichkeit viel schlimmer … (;-), aber es ist schaffbar, wie ihr seht.

    In diesem Sinne: Viel Erfolg und viel Spaß!

    Herzliche Grüße aus dem Randboulettenland - Ekkehard


    :aq_1: Es gibt immer mehrere Wahrheiten. Deine, seine, ihre, meine und ... die echte.

    Meine Freiheit endet dort, wo das Recht anderer beginnt. Ab da müssen immer

    ausgewogene Kompromisse geschlossen werden.:aq_1::co_k:


    EEP 16.4 (vorher 4, 5, 8, 12, 14, 15) und HomeNOS 15, 16
    auf Win10Home mit i5-8250U 1,6GHz 8GB UHD 620/GeForce MX150 und

    auf Win10Home mit i7-8750H 2,2GHz 16GB UHD 630/GeForce GTX1050

    auf Win10Prof mit Ryzen 9 3900X 3,79GHz 32GB GeForce RTX2060S

    The post was edited 9 times, last by moevenbaer ().