Jump to content

Objektposition bestimmen


WalterW

Empfohlene Beiträge

Hallo liebe Forumsgemeinde

Ist es möglich mit Hilfe von Lua in den Objekt-Eigenschaftsparametern den Positionswert der Höhe (z) wie eine Art Variable festzulegen?
In der Ereignisverwaltung habe ich nichts gefunden (oder eine Möglichkeit übersehen).

Objektposition.jpg.f6c3a32d9296b6f292049d355c3051ea.jpg

Wenn es also mit Lua möglich ist, wäre ich für eine Antwort mit einem Beispiel sehr dankbar. 

Freundliche Grüße
Walter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Walter,
Du kannst x,y,z als Position so verändern: (Beispiel für z)
$("MeinObjekt").transformation.position.z = 20

Du kannst auch die Winkel ändern (x,y,z,w aber im Quaternion-Format!)
$("MeinObjekt").transformation.rotation.z = 20

Und mit der property transformation.scale schließlich noch die Skalierung.

EDIT: und richtig, ohne Skript geht es nicht

Gruß
  Andy
 

Bearbeitet von Andy
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Andy,

ich habe deinen Vorschlag ausprobiert. Es funktioniert bei mir leider nicht! Ich bitte dich, schau dir die folgenden zwei Abbildungen an und sage mir, was im Lua-Skript falsch ist.
Fehlermeldungen erhalte ich keine, was auch aus dem unten abgebildeten Protokollauszug zu erkennen ist.

427246004_LuaSkriptObjektposition.thumb.jpg.6626c4f73a331c720fb4d41e197b3de4.jpg

Die Anweisung aus Zeile 9 im Lua-Skript wird offensichtlich nicht ausgeführt. 
Siehe hierzu die Zeilen 1. und 3., aus dem nachstehenden Protokoll. In Zeile 3. müsste doch der Wert z = 12.8000...... stehen.

1351409200_LuaSkriptProtokoll.jpg.600ebf758b9246cb8ed75365958aebd8.jpg

In den Eigenschafts-Positionsdaten vom Objekt "Bauernhof Getreidefeld 9" ist entsprechend auch keine Veränderung erkennbar.
Ich hoffe du kannst das Problem lösen.

Freundliche Grüße
Walter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Walter,
also, das erstaunt mich jetzt doch ein wenig. Eigentlich ist da nichts falsch.
Möglicherweise mag er bei einem diskreten Objekt die Komponentenzuweisung nicht und Du mußt über eine Zwischenvariable gehen. Ist mir dann aber nicht klar, weshalb.

local tmp = {}
local objekt
objekt = $("Bauernhof Getreidefeld 9")
tmp = objekt.transformation.position
tmp.z = 80/6.25
objekt.transformation.position = tmp

Im Test geht das bei mir.

Wenn das so geht, wie Hawkeye es beschrieben hat, mache es halt so.

Gruß
  Andy

EDIT: Bitte nicht als Grafik kopieren, dann ist es unbrauchbar. Skript in der EV markieren, in Zwischenablage kopieren und hier in die Code-Tags <> setzen. Oder einfach die mbp anhängen.

Bearbeitet von Andy
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, Hawkeye. Genau das ist der Grund.
Ich weiß, dass ich da selbst schon Probleme hatte und es seitdem so mache. Ich meine auch, damals im Forum gefragt zu haben und Neo selbst hat dann was dazu geschrieben und warum es so ist. Aber da hört's auch schon auf. Die Posts finde ich nicht mehr. Sorry, dass ich da jetzt nochmal in die Falle getappt bin.
So rein optisch kann das von Walter ja eigentlich nicht falsch sein. Aber Lua ist eben anders. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

... vielleicht noch der Vollständigkeit halber...

objekt.transformation.position = {x=10,y=20,z=30}

setzt das Objekt auf die Koordinaten x=10, y=20, z=30

object.transformation:translateZ(10)

verschiebt das Objekt aus seiner derzeitigen Position um 10 in z-Richtung.

Gruß
EASY

Bearbeitet von EASY
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo an alle bisher Beteiligten,

jetzt habt ihr mich mehr oder weniger "überrollt" und mich damit in den "Rückstand" versetzt.
Der Reihe nach:
Was Hawkeye schrieb: "versuch es mal mit dieser Anweisung" hat zwei Ergebnisse: Positiv, mit der Anweisung wird der z-Wert im Objekt gespeichert und das Objekt verändert auch seine z-Position. Negativ, mit der maßstabsgerechten Umrechnung (für Spur N = 6.25) funktioniert die richtige Werterrechnung nicht. Fazit: Also so nicht anwendbar.
Trotzdem vielen Dank für die Rückantwort. 

Danach schrieb Andy: Er macht einen neuen Vorschlag über den Weg einer Tabelle, in der alle drei Positionswerte vom Objekt stehen und verändert aus der Tabelle den Wert von "z". Das werde ich morgen ausprobieren und glaube Andy, wenn er sagt, dass das bei ihm funktioniert.

Was Götz dann auch bestätigte. Euch beiden hierfür auch meinen Dank.

Die Information von EASY werde ich ebenfalls morgen berücksichtigen.

Toll, welche Hilfe hier geboten wird.
Mit freundlichen Grüßen und noch einen schönen Abend. Ich werde morgen von meinem Ergebnis berichten.

Walter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Walter,

vor 8 Minuten schrieb WalterW:

Negativ, mit der maßstabsgerechten Umrechnung (für Spur N = 6.25) funktioniert die richtige Werterrechnung nicht. Fazit: Also so nicht anwendbar.

Da irrst du dich. Dein Ziel ist es laut deinen Angaben,

vor 4 Stunden schrieb WalterW:

1351409200_LuaSkriptProtokoll.jpg.600ebf758b9246cb8ed75365958aebd8.jpg

die Z-Position von 11,4 auf 12,8 also um 1,4 von den bestehenden Z-Position zu verschieben.

vor einer Stunde schrieb EASY:
object.transformation:translateZ(10)

verschiebt das Objekt aus seiner derzeitigen Position um 10 in z-Richtung.

Setze für die „10“ in Easy‘s Beispiel deine gewünschten „1,4“ ein und du hast dein Ziel ohne eine Maßstabsumrechnung erreicht.

VG,

Hawkeye

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye,

entschuldige meine "Negativ" Beurteilung. Was ich zu dem Zeitpunkt gestern noch nicht wusste, dass mit der Anweisung "objekt.transformation:translateZ()" das Objekt verschoben wird. Ich bin davon ausgegangen, dass der Wert als absolut neu gesetzt wird. Auf jeden Fall eine nützliche Alternative zu dem Skript-Vorschlag von Andy.
Man lernt eben nie aus. Nochmals auch für diese Antwort von dir vielen Dank.

Freundliche Grüße
Walter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Walter,

vor 10 Minuten schrieb WalterW:

Auf jeden Fall eine nützliche Alternative zu dem Skript-Vorschlag von Andy.

Ja, habe auch wieder was dazu gelernt. 😁

Aber zeig doch mal ein Bild, was du damit vorhast. Klingt auf jede Fall interessant. Lass uns an deiner Idee teilhaben.

Viele Grüße,

Hawkeye

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Hawkeye und Andy, sowie alle anderen Interessierten,

wenn ich so weit bin, dass etwas Vorzeigbares aus meiner Absicht geworden ist, werde ich gerne etwas dazu zeigen.
Im Grunde hat Andy schon einen Volltreffer gelandet. Es handelt sich tatsächlich um das steuerbare und langsame "wachsen" eines Getreidefeldes aus dem "Untergrund" heraus. Deshalb brauchte ich auch die Funktion für die Höhenpositionierung der Getreidefelder.

Viele Grüße

Walter

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb WalterW:

Deshalb brauchte ich auch die Funktion für die Höhenpositionierung der Getreidefelder.

Hallo Walter,

Alternativ kannst du

  • ein kurzes Stück virtuellen Fahrweg senkrecht verlegen,
  • das SX 1 Fahrzeug drauf setzen
  • und das Getreidefeld an dieses Fahrzeug koppeln.

Funktioniert prächtig und ist nicht schwer zu bewerkstelligen.

Viele Grüße
Götz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo an alle Interessierten,

ich habe, entsprechend dem Wunsch einiger, ein Modul erstellt, das einen Bauernhof mit animiertem Getreidefeld, der Ernte und dem neu "wachsenden" Getreide zeigt.

171824811_BauernhofmitGetreidefeld.thumb.jpg.361e484b0b47317182ec4f447e519df4.jpg

Die Contend-ID lautet: 6429BD22-761C-4DAD-9433-EDF2D5F6DB25

Viel Spaß und freundliche Grüße
Walter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...