Kordinaten aus Metasequoia in die Tmd eintragen


Kommen wir nun zu einem essentiellen Teil der Modellentwicklung.
Um das Modell im Aerofly korrekt darstellen zu können müssen viele Koordinaten aus dem 3D Modell in die tmd-Datei übertragen werden.

Bevor man jetzt drauflos stürzt muss man sich im Klaren sein, dass man diese Arbeit nur ungerne zweimal machen will. Deshalb muss sollte die Skalierung in der MQO (Metasequoia-Datei) mit der im AF5 übereinstimmen, d.h. eine Einheit in Metasequoia sollte nachher bei einem Umrechnungsfaktor von 1:

af5-mqo-to-tgc MQO-DATEINAME 1.000

ein cm im Aerofly 5 sein. Alle Umrechnungsfaktoren, die von dem Faktor 10^x (d.h. z.B: 1, 10 oder 100) abweichen sind ungeeignet, weil wir bei jeder Koordinate u.U. ersteinmal rechnen müssten.

Ich empfehle: 1 Unit in Meta = 1cm im Aerofly 5,
damit beträgt der Gitterlinienabstand in Metasequoia 0,5m oder 50LE (einfach zu merken oder ?).

Nachdem das 3D Modell korrekt skaliert, noch einmal mit dem richtigen Umrechnungsfaktor konvertiert wurde und die Modellgröße auch im Aerofly passt, kann man nun anfangen die Koordinaten zu übertragen. Dabei sollteman unbedingt systematisch vorgehen.

Im folgenden Beispiel schauen wir uns zunächst die Ruder an. Im Aerofly wirbeln sie wild hin und her, wenn wir sie nicht nicht gerade der falschen GeometryList zugewiesen haben. Sie drehen sich um einen falschen Drehpunkt und um eine wohlmöglich falsche Achse. Hier sei gleich erwähnt, dass der Konverter eine Unterstützung sein kann. Im Idealfall stehen nämlich in der ebenfalls erzeugten tm.log zu jedem konvertierten Objekt auch der errechnete Drehpunkt (Pivot) und die Drehachse (Axis).
Mit den gezeigten Methoden kann man alle anderen drehbaren Objekte wie Einziehfahrwerke, Klapptriebwerke uns. ebenfalls richtig “anscharnieren”.


Einträge mithilfe des Konverters übernehmen

Dann kann man die drei gegebenen Koordinaten einfach in die tmd Datei übertragen.

Beispiel: die tm.log liefert:

[...]
03: (name=LeftAileron) (v=276 92) (dgn=0) (t=92) (ts=1) (ok)
<[tmvector3d][Axis][0.008 0.995 0.102]>
<[tmvector3d][Pivot][-0.057 0.321 0.044]>
[...]

dann tragen wir in die .tmd ein:

<[string8][object][hingedbodygraphics]
    <[string8][Name][LeftAileron]>
    <[string8][GeometryList][ LeftAileron ]>
    <[string8][ShadowGeometryList][ ]>
    <[string8][ShadowStencilList][ ]>
    <[bool][ShowInShadowMap][true]>
    <[bool][ShowInStencil][true]>
    <[uint32][PositionID][LeftWing.R]>
    <[uint32][OrientationID][LeftWing.Q]>
    <[uint32][AngleID][ServoLeftAileron.Position]>
    <[tmvector3d][Axis][0.008 0.995 0.102]>
    <[tmvector3d][Pivot][-0.057 0.321 0.044]>
    <[float64][AngleMax][-1]>
    <[tmvector3d][Shift][0.000000 0.000000 0.000000]>
    <[string8][Graphics][]>
>

Drehpunkt (Pivot)

Sollte dies aber nicht der Fall sein, der Konverter zeigt aus irgendeinem Grund keine Achse und keinen Drehpunkt an oder sind diese nicht richtig, so muss man sich zu helfen wissen.
Dazu öffnet man zunächst die .mqo und benutzt die Funktion Move. In dem geöffneten Fenster für die Funktion gibt es oben sog. Reiter (Tabs), dort schaltet man auf “Abs” (Absolute) um. Markiert man nun den Punkt, um den sich das Ruder drehen soll, so kann man die Koordinaten für Pivot abschreiben.

In dem Beispiel oben würden wir gerne den Drehpunkt ändern:

Die 3D Datei liefert für den Drehpunkt:

X = -5.98
Y = 0.92
Z = -1.31

Da die Achsen des Koordinatensystems von Meta im Vergleich zum Aerofly 5 vertauscht sind (und die Querachse negativiert), müssen wir in der tmd eintragen: (1.000 würde hier 1m bedeuten):

    <[tmvector3d][Pivot][-0.0598 0.0131 0.0092]>  

Drehachsen (Axis)

Die manuelle Errechnung einer Achse ist etwas schwieriger. Die Achse wird in der tmd als Vektor [tmvector3d] angegeben, wer in Physik bzw. Matematik gut aufgepasst hat weiß, was das bedeutet. Ein Vektor hat eine Richtung und eine Länge, aber man kann ihn frei im Raum parallel verschieben.

Im Prinzip rechnet man zunächst einen Differenz-Vektor aus. Dazu wählt man sich einen zweiten Drehpunkt, damit der Vektor der Drehachse gebildet werden kann.

In unserem Beispiel wähle ich P ( -5.50 | 7.47 | -63.46 ) als zweiten Scharnierpunkt. Dann zieht man den Ortsvektor des ersten vom Ortsvektor des zweiten Punktes ab. Für die x-Koordinate des Vektors ergibt sich damit:
x = -5.50 – ( -5.98) = – 0.39 ,
y = 7.47 – 0.92 = 6.55 und für
z = -63.46 – ( -1.31 ) = -62.15 .

=> Unser Vektor heißt also zunächst (nach dem Vertauschen der Achsen und Negativieren der Querachse des Modells ):

	<[tmvector3d][Axis][ -0.0039 0.6215 0.0655 ]>

Nun soll aber die Länge des Vektors im Aerofly möglichst 1 sein. Man kann das natürlich ignorieren, ich kann mir aber vorstellen, dass das der Performance nicht gerade entgegenkommt.
Die Länge ( l ) bzw. der Betrag eines Vektors lässt sich über den Satz des Pythagoras bestimmen:
l ² = x ² + y ² + z²

In unserem Beispiel ergibt das für die Länge des Vektors:
l ² = ( -0.0039 ) ² + 0.6215 ² + 0.0655 ²= 0.39056771
l ~ 0.624954

Um nun die Koordinaten so alle gleichmäßig zu vergrößern, dass die Länge des Vektors 1 ist, muss man die Koordinaten jeweils durch die errechnete Länge dividieren:

x / l = -0.006240
y / l = 0.994473
z / l = 0.002063

Somit heißt unsere Achse:

	<[tmvector3d][Axis][ -0.006240 0.994473 0.002063]>

Wie geht es weiter?

—– (coming soon) —–

Joints
Inertia
Kamerapositionen
Schlepphaken

Leave a comment

Your email address will not be published. Required fields are marked *