Kochbuch: Schwenkschiebetüren: Unterschied zwischen den Versionen
Aus LOTUS Wiki DE
K (1 Version importiert: Init) |
(Updated from LOTUS Lexicon on 2025-01-21) |
||
Zeile 1: | Zeile 1: | ||
{{ArticleMetadata | |||
|author=Janine | |||
Schwenkschiebetüren animieren und steuern | |created_date=2020-11-22T23:55:40+01:00 | ||
|modified_date=2020-11-22T23:55:40+01:00 | |||
|source_url=https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/ | |||
}} | |||
Schwenkschiebetüren animieren und steuern | |||
(alt, Artikel ggf. mit neuer Vorgehensweise neu strukturieren) | (alt, Artikel ggf. mit neuer Vorgehensweise neu strukturieren) | ||
== Schwenkschiebetüren animieren == | == 1 Schwenkschiebetüren animieren == | ||
Ziel: Schwenkschiebetüren animieren und steuern | Ziel: Schwenkschiebetüren animieren und steuern | ||
Zutaten: Eine Schalter-Variable (boolean), Türflügel als separates Mesh | Zutaten: Eine Schalter-Variable (boolean), Türflügel als separates Mesh | ||
Werkzeug: Content Tool --> Object & Vehicle Tool + Script Editor | Werkzeug: Content Tool --> Object & Vehicle Tool + Script Editor | ||
Ergebnis: Die Türen schwenken zuerst nach außen und fahren dann zur jeweiligen Seite auf | Ergebnis: Die Türen schwenken zuerst nach außen und fahren dann zur jeweiligen Seite auf | ||
Zeile 15: | Zeile 28: | ||
Zubereitung: | Zubereitung: | ||
1. In der [[https://www.lotus-simulator.de/lexikon/index.php?entry/11-script-system/#2-Aufbau|Script-Hauptdatei]] im Abschnitt `PUBLIC_VARS` die beiden Variablen deklarieren, die nachher die Animation steuern, `Door_1_pos_x: single;` und `Door_1_pos_y: single;` | |||
2. Im Script die Konstanten, die restlichen Variablen und die gewünschte Prozedur deklarieren. Dies kann entweder in der Hauptdatei selbst geschehen, oder ausgelagert werden. | |||
3. Innerhalb der `Simstep`-Prozedur in der Hauptdatei muss die neu angelegte Prozedur aufgerufen, also eingetragen werden. | |||
4. Die Prozedur implementieren, die die Animation steuert. Sind die Script-Arbeiten erledigt, muss das Script im Object- und Vehicle-Tool importiert werden (siehe ganz oben). | |||
5. Anlegen des "Schwenkens nach außen" | |||
1. Im Object- und Vehicle-Tool unter "Animationen" den [[https://www.lotus-simulator.de/lexikon/index.php?entry/62-wagenkasten/&synonym=31|Wagenkasten]] auswählen, der die betreffende Tür beherbergt --> "Hinzufügen" klicken | |||
2. Der Animation einen selbsterklärenden Namen vergeben und Typ "Verschiebung entlang einer Achse" auswählen --> OK drücken | |||
3. Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern: | |||
1. `Y` und `Z` sind `0`, `X` ist für Türen im Wagen rechts `1`, für Türen links im Wagen `-1` | |||
2. Bei `Variable` wird nun `Door_1_pos_x` ausgewählt - ist das nicht möglich, wurde entweder die Variable nicht unter `PUBLIC_VARS` deklariert oder das Script nicht neu importiert. | |||
3. Bei `Verschiebung bei Var = B (m)` wird die Strecke eingetragen, die die Tür nach außen laufen soll. In unserem Beispiel `0,2` m. | |||
4. Mit OK bestätigen. | |||
6. Anlegen des "Fahrens zur Seite" | |||
1. Erster Türflügel (der 1. in Fahrtrichtung) | |||
1. Unter "Animationen" nun die zuvor angelegte Schwenk-Animation auswählen --> "Hinzufügen" klicken, Namen vergeben und "Verschieben entlang Achse" auswählen --> OK drücken | |||
2. Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern: | |||
1. `X` und `Z` sind `0`, `Y` ist `1`, weil dieser Türflügel in Fahrtrichtung laufen wird | |||
2. Bei `Variable` wird nun `Door_1_pos_y` ausgewählt | |||
3. Bei `Verschiebung bei Var = B (m)` wird nun die Strecke eingetragen, die dieser Türflügel nach vorn laufen wird. In unserem Beispiel `0,5` m. | |||
4. Mit OK bestätigen. | |||
3. Sicherstellen, dass unter "Animationen" immer noch die eben gerade angelegte Animation ("Fahren zur Seite") ausgewählt ist! | |||
4. Den Button "Mesh hinzufügen/entfernen" betätigen und anschließend alle Meshs auswählen, die zu diesem Türflügel gehören - die Auswahl kann direkt am Vorschaubild des Fahrzeuges erfolgen oder in der Mesh-Liste rechts. Sollte das Tool in einer Meldung nach Mesh-Koordinaten fragen, diese Frage mit "Nein" quittieren. | |||
5. Sind alle Meshs des Türflügels ausgewählt, den Button "Mesh hinzufügen/entfernen" erneut betätigen und damit den Vorgang beenden. | |||
2. Den Vorgang für den zweiten Türflügel wiederholen - diesmal den Parameter `Y` auf `-1` setzen, da dieser Türflügel entgegen der Fahrtrichtung laufen wird. | |||
Script | |||
Code | |||
1. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_1_c4c681|]]//in der Hauptdatei deklarieren: | |||
2. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_2_c4c681|]] | |||
3. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_3_c4c681|]] {PUBLIC_VARS | |||
4. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_4_c4c681|]] ... | |||
5. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_5_c4c681|]] Door_1_pos_x: single; | |||
6. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_6_c4c681|]] Door_1_pos_y: single; | |||
7. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_7_c4c681|]] ... | |||
8. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_8_c4c681|]] } | |||
9. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_9_c4c681|]] | |||
10. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_10_c4c681|]] \----------------------------------------- | |||
11. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_11_c4c681|]] | |||
12. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_12_c4c681|]] //in der Hauptdatei oder einer separat eingebundenen Script-Datei deklarieren: | |||
13. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_13_c4c681|]] | |||
14. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_14_c4c681|]] const | |||
15. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_15_c4c681|]] DOOR_SPEED_S = 0.5; // Tür benötigt 2 Sekunden zum Auf-/Zulaufen, hiervon der Kehrwert ist 0,5 | |||
16. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_16_c4c681|]] DOOR_LIFT_PART = 0.1; // 10% des Laufweges wird für das Herausschwenken der Türen benötigt | |||
17. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_17_c4c681|]] | |||
18. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_18_c4c681|]] var | |||
19. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_19_c4c681|]] door_1_target: boolean; //Schalter-Stellung - true = öffnen; false = schließen; | |||
20. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_20_c4c681|]] door_1_pos: single; //Hilfsvariable - Position der Tür über den gesamten Vorgang | |||
21. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_21_c4c681|]] | |||
22. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_22_c4c681|]] procedure Door1_SimStep; //diese Prozedur muss im Simstep der Haupt-Datei aufgerufen werden! | |||
23. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_23_c4c681|]] begin | |||
24. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_24_c4c681|]] if door_target then //Tür soll geöffnet werden, denn Schalter ist auf true | |||
25. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_25_c4c681|]] begin | |||
26. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_26_c4c681|]] if door_1_pos < 1 then //falls Tür noch nicht ganz auf | |||
27. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_27_c4c681|]] door_1_pos := door_1_pos + 1/DOOR_SPEED_S * Timegap //Tür weiter öffnen | |||
28. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_28_c4c681|]] else //sonst | |||
29. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_29_c4c681|]] door_1_pos := 1; //Vorgang auf "beendet (auf)" setzen | |||
30. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_30_c4c681|]] end | |||
31. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_31_c4c681|]] else //Tür soll geschlossen werden | |||
32. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_32_c4c681|]] begin | |||
33. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_33_c4c681|]] if door_1_pos > 0 then //falls Tür noch nicht ganz zu | |||
34. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_34_c4c681|]] door_1_pos := door_1_pos - 1/DOOR_SPEED_S * Timegap //Tür weiter schließen | |||
35. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_35_c4c681|]] else //sonst | |||
36. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_36_c4c681|]] door_1_pos := 0; //Vorgang auf "beendet (zu)" setzen | |||
37. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_37_c4c681|]] end; | |||
38. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_38_c4c681|]] | |||
39. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_39_c4c681|]] if door_1_pos < DOOR_LIFT_PART then //Gesamtvorgang ist unter 10% | |||
40. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_40_c4c681|]] begin | |||
41. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_41_c4c681|]] Door_1_pos_x := door_1_pos * 1/DOOR_LIFT_PART; //Berechnung des "Schwenks nach außen" | |||
42. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_42_c4c681|]] Door_1_pos_y := 0; //Während des "Schwenks nach außen" findet keine Öffnung der Flügel statt | |||
43. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_43_c4c681|]] end | |||
44. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_44_c4c681|]] else //sonst | |||
45. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_45_c4c681|]] begin | |||
46. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_46_c4c681|]] Door_1_pos_x := 1; //Schwenk nach außen findet nicht weiter statt, ist abgeschlossen | |||
47. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_47_c4c681|]] Door_1_pos_y := (door_1_pos - DOOR_LIFT_PART) * 1/(1-DOOR_LIFT_PART) //Berechnung der "Fahrt zur Seite" | |||
48. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_48_c4c681|]] end; | |||
49. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_49_c4c681|]] end; | |||
Alles anzeigen | |||
Bonus: Die Variable | Bonus: Die Variable `door_1_target` mit einem Schalter verbinden, um die Tür aus dem Fahrzeug heraus zu steuern und so die Animation zu testen. |
Aktuelle Version vom 21. Januar 2025, 22:55 Uhr
Schwenkschiebetüren animieren und steuern
(alt, Artikel ggf. mit neuer Vorgehensweise neu strukturieren)
1 Schwenkschiebetüren animieren
Ziel: Schwenkschiebetüren animieren und steuern
Zutaten: Eine Schalter-Variable (boolean), Türflügel als separates Mesh
Werkzeug: Content Tool --> Object & Vehicle Tool + Script Editor
Ergebnis: Die Türen schwenken zuerst nach außen und fahren dann zur jeweiligen Seite auf
Zubereitung:
1. In der [[1]] im Abschnitt `PUBLIC_VARS` die beiden Variablen deklarieren, die nachher die Animation steuern, `Door_1_pos_x: single;` und `Door_1_pos_y: single;` 2. Im Script die Konstanten, die restlichen Variablen und die gewünschte Prozedur deklarieren. Dies kann entweder in der Hauptdatei selbst geschehen, oder ausgelagert werden. 3. Innerhalb der `Simstep`-Prozedur in der Hauptdatei muss die neu angelegte Prozedur aufgerufen, also eingetragen werden. 4. Die Prozedur implementieren, die die Animation steuert. Sind die Script-Arbeiten erledigt, muss das Script im Object- und Vehicle-Tool importiert werden (siehe ganz oben). 5. Anlegen des "Schwenkens nach außen" 1. Im Object- und Vehicle-Tool unter "Animationen" den [[2]] auswählen, der die betreffende Tür beherbergt --> "Hinzufügen" klicken 2. Der Animation einen selbsterklärenden Namen vergeben und Typ "Verschiebung entlang einer Achse" auswählen --> OK drücken 3. Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern: 1. `Y` und `Z` sind `0`, `X` ist für Türen im Wagen rechts `1`, für Türen links im Wagen `-1` 2. Bei `Variable` wird nun `Door_1_pos_x` ausgewählt - ist das nicht möglich, wurde entweder die Variable nicht unter `PUBLIC_VARS` deklariert oder das Script nicht neu importiert. 3. Bei `Verschiebung bei Var = B (m)` wird die Strecke eingetragen, die die Tür nach außen laufen soll. In unserem Beispiel `0,2` m. 4. Mit OK bestätigen. 6. Anlegen des "Fahrens zur Seite" 1. Erster Türflügel (der 1. in Fahrtrichtung) 1. Unter "Animationen" nun die zuvor angelegte Schwenk-Animation auswählen --> "Hinzufügen" klicken, Namen vergeben und "Verschieben entlang Achse" auswählen --> OK drücken 2. Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern: 1. `X` und `Z` sind `0`, `Y` ist `1`, weil dieser Türflügel in Fahrtrichtung laufen wird 2. Bei `Variable` wird nun `Door_1_pos_y` ausgewählt 3. Bei `Verschiebung bei Var = B (m)` wird nun die Strecke eingetragen, die dieser Türflügel nach vorn laufen wird. In unserem Beispiel `0,5` m. 4. Mit OK bestätigen. 3. Sicherstellen, dass unter "Animationen" immer noch die eben gerade angelegte Animation ("Fahren zur Seite") ausgewählt ist! 4. Den Button "Mesh hinzufügen/entfernen" betätigen und anschließend alle Meshs auswählen, die zu diesem Türflügel gehören - die Auswahl kann direkt am Vorschaubild des Fahrzeuges erfolgen oder in der Mesh-Liste rechts. Sollte das Tool in einer Meldung nach Mesh-Koordinaten fragen, diese Frage mit "Nein" quittieren. 5. Sind alle Meshs des Türflügels ausgewählt, den Button "Mesh hinzufügen/entfernen" erneut betätigen und damit den Vorgang beenden. 2. Den Vorgang für den zweiten Türflügel wiederholen - diesmal den Parameter `Y` auf `-1` setzen, da dieser Türflügel entgegen der Fahrtrichtung laufen wird.
Script
Code
1. [[3]]//in der Hauptdatei deklarieren: 2. [[4]] 3. [[5]] {PUBLIC_VARS 4. [[6]] ... 5. [[7]] Door_1_pos_x: single; 6. [[8]] Door_1_pos_y: single; 7. [[9]] ... 8. [[10]] } 9. [[11]] 10. [[12]] \----------------------------------------- 11. [[13]] 12. [[14]] //in der Hauptdatei oder einer separat eingebundenen Script-Datei deklarieren: 13. [[15]] 14. [[16]] const 15. [[17]] DOOR_SPEED_S = 0.5; // Tür benötigt 2 Sekunden zum Auf-/Zulaufen, hiervon der Kehrwert ist 0,5 16. [[18]] DOOR_LIFT_PART = 0.1; // 10% des Laufweges wird für das Herausschwenken der Türen benötigt 17. [[19]] 18. [[20]] var 19. [[21]] door_1_target: boolean; //Schalter-Stellung - true = öffnen; false = schließen; 20. [[22]] door_1_pos: single; //Hilfsvariable - Position der Tür über den gesamten Vorgang 21. [[23]] 22. [[24]] procedure Door1_SimStep; //diese Prozedur muss im Simstep der Haupt-Datei aufgerufen werden! 23. [[25]] begin 24. [[26]] if door_target then //Tür soll geöffnet werden, denn Schalter ist auf true 25. [[27]] begin 26. [[28]] if door_1_pos < 1 then //falls Tür noch nicht ganz auf 27. [[29]] door_1_pos := door_1_pos + 1/DOOR_SPEED_S * Timegap //Tür weiter öffnen 28. [[30]] else //sonst 29. [[31]] door_1_pos := 1; //Vorgang auf "beendet (auf)" setzen 30. [[32]] end 31. [[33]] else //Tür soll geschlossen werden 32. [[34]] begin 33. [[35]] if door_1_pos > 0 then //falls Tür noch nicht ganz zu 34. [[36]] door_1_pos := door_1_pos - 1/DOOR_SPEED_S * Timegap //Tür weiter schließen 35. [[37]] else //sonst 36. [[38]] door_1_pos := 0; //Vorgang auf "beendet (zu)" setzen 37. [[39]] end; 38. [[40]] 39. [[41]] if door_1_pos < DOOR_LIFT_PART then //Gesamtvorgang ist unter 10% 40. [[42]] begin 41. [[43]] Door_1_pos_x := door_1_pos * 1/DOOR_LIFT_PART; //Berechnung des "Schwenks nach außen" 42. [[44]] Door_1_pos_y := 0; //Während des "Schwenks nach außen" findet keine Öffnung der Flügel statt 43. [[45]] end 44. [[46]] else //sonst 45. [[47]] begin 46. [[48]] Door_1_pos_x := 1; //Schwenk nach außen findet nicht weiter statt, ist abgeschlossen 47. [[49]] Door_1_pos_y := (door_1_pos - DOOR_LIFT_PART) * 1/(1-DOOR_LIFT_PART) //Berechnung der "Fahrt zur Seite" 48. [[50]] end; 49. [[51]] end;
Alles anzeigen
Bonus: Die Variable `door_1_target` mit einem Schalter verbinden, um die Tür aus dem Fahrzeug heraus zu steuern und so die Animation zu testen.