Aerosoft official retail partner for Microsoft Flight Simulator !! 
Click here for more information

Jump to content

Archived

This topic is now archived and is closed to further replies.

maydayc

LUA Script zum anpassen des LOD per Mausklick

Recommended Posts

Hallo,

basierend aus der Diskussion im Thread "Landschafts-Erweiterungen" habe ich einmal ein kleines LUA Script geschrieben das es mit zwei kleinen

Knöpfen im Cockpit erlaubt den LOD der angezeigten Objekte während des Fluges anzupassen.

Warum diese Script ? Wenn der Flug über eine große Stadt geht müssen viele viele Objekte angezeigt werden. Dadurch sinkt natürlich die FPS.

Jetzt würde man normalerweise die "Number of objects" in den settings reduzieren (extreme auf z.B. mega tons) dann muss aber immer die

Szenerie neu geladen werden und beim rausfliegen aus der Stadt ist dann die FPS wieder so hoch das man wieder mehr Gebäude anzeigen könnte.

Also die Prozedur von vorne (mega tons -> extrem-> neu laden) . Umgehen kann man das dadurch das man im DataRefEditor ->Art Controls den

Wert reno/LOD_bias_rat von 1.0000 auf z.B. 1.20000 (oder höher) setzt. Dadurch wird der LOD geringer und die FPS steigt wieder.

Ein Wert kleiner als 1 erhöht die Anzahl der angezeigten Objekte in der Ferne.

Um das benutzerfreundlicher zu machen habe ich dieses Script geschrieben was aus dem Cockpit heraus erlaubt die LOD in 0.1 Schritten zu erhöhen

oder zu verringern. (1.0 ist Default...das kann jeder für sich selbst im Script anpassen). Der Maximalwert kann bis zu 3.5 und der Minimalwert 0.6 sein.

Das Script zeigt nicht nur den eingestellten LOD sondern auch die FPS dazu unten links an.

Die Bilder zeigen wie sich die Szenerie mit unterschiedlichen LOD Werten ändert.

Das Script wie immer bei LUA in das Verzeichnis "\X-Plane 10\Resources\plugins\FlyWithLua\Scripts" kopieren und neu starten ...

Viel Spaß beim ausprobieren ...

P.S: Bei FPS unter 20 wird der Text Rot angezeigt und bleibt bei 20....

post-105923-0-33363800-1403095274_thumb.

post-105923-0-96908300-1403095286_thumb.

post-105923-0-74213900-1403095296_thumb.

post-105923-0-87868100-1403095304_thumb.

FPS_LOD_0_1a.zip

Share this post


Link to post
Share on other sites

Tolle Idee. Geht das nicht evtl. sogar automatisch abhängig von dem aktuellen FPS-Wert?

Share this post


Link to post
Share on other sites

Die Idee habe ich auch schon mal in einem LUA Script umgesetzt aber das hat zu folgendem Problem geführt.

Wenn die FPS niedrig ist hat das Script die LOD erhöht ... also steigt die FPS wieder... soweit so gut ....

Jetzt ist die FPS aber wieder hoch also senkt das Script die LOD wieder (mehr Objekte können ja angezeigt werden).... und das führt wieder zu einer schlechteren FPS :-(

Das führt dann zu einem "Flackern" ... was unschön ist ... mit Schwellwerten kann man das im Zaun halten und wird dadurch auch etwas besser.

Ich persönlich finde es aber mit den Knöpfen angenehmer weil ich es dann individuell einstellen kann ;-)

Share this post


Link to post
Share on other sites

Ich finde dein Script sehr gut. Bei meinem System reichen oft nur 0.1 - 0.3 LOD mehr um schon in framelastigen Situationen, einige FPS zu gewinnen. Ist meistens über großen Ballungsgebieten mit gleichzeitig vielen Wolken.

Kann man sowas auch für die Wolken machen? Bin leider auf Achse und kann deswegen nicht gucken ob es eine entsprechende ArtControl dafür gibt.

Share this post


Link to post
Share on other sites

Hallo Jaggo

>> Kann man sowas auch für die Wolken machen? Bin leider auf Achse und kann deswegen nicht gucken ob es eine entsprechende ArtControl dafür gibt.

Ich denke schon das das geht ...

Einen direkten Einfluss auf die Framerate hat der Parameter clouds/plot_radius in den Art Controls.

Dieser Wert bestimmt wie "dick" die Wolken sein sollen.

Der Wert clouds/plot_radius steht im Standard auf 1. Eine Reduzierung um jeweils 0.1 macht die Wolken kleiner und dadurch steigt die FPS.

Bei einem Wert von 0.0 sind die Wolken komplett aus. Eine Erhöhung des Wertes clouds/plot_radius größer 1 generiert "dickere" Wolken und die FPS wird kleiner.

Hinweis: Das ist natürlich von der Art der Wolken abhängig die beim Wetter eingestellt sind.

Bei "few cumulus ist der Effekt kleiner ... bei cumulus ocats(bumpy) größer...

Einfach mal ausprobieren mit dem DataRef Editor (Art Controls) ... ein Script zu bauen ist dann kein Problem mehr ...

P.S.: Ob das auch bei Skymaxx Pro funktioniert muss ich noch mal ausprobieren ... Bei den Standard X-Plane Wolken funktioniert es aber ...

Ich finde dein Script sehr gut. Bei meinem System reichen oft nur 0.1 - 0.3 LOD mehr um schon in framelastigen Situationen, einige FPS zu gewinnen. Ist meistens über großen Ballungsgebieten mit gleichzeitig vielen Wolken.

Kann man sowas auch für die Wolken machen? Bin leider auf Achse und kann deswegen nicht gucken ob es eine entsprechende ArtControl dafür gibt.

Share this post


Link to post
Share on other sites

Die ArtControl kenne ich schon. Danke trotzdem für den Hinweis.

Ich werde einfach versuchen dein script für die Wolken umzuschreiben wenn du nichts dagegen hast

Share this post


Link to post
Share on other sites

Kein Problem ... dann nimm am besten gleich die neue Version (0.2) .... lade ich jetzt gleich hoch ...

Share this post


Link to post
Share on other sites

Hallo,

anbei eine neue Version des Scripts. OE3GSU hat mich darauf aufmerksam gemacht das die Graphik noch im Skript initialisiert werden muss um Konflikte mit anderen

laufenden LUA Scripts zu umgehen. Danke noch mal dafür :-)

Beim testen habe ich dann gesehen das ein draw_string in ein gefülltes Viereck zu flackern führt was sich dann auch auf andere laufende LUA Scripts auswirkt.

Deshalb nun die "Knöpfe" komplett als Grafik.

Hier die geänderte Version.

FPS_LOD_0_2.zip

Share this post


Link to post
Share on other sites

Hallo,

Anbei die Version 0.3 des Scripts.

In dieser Version kann die LOD mit einem Joystick Button erhöht oder vermindert werden.

Das vereinfacht die Anpassung der Werte während des Fluges erheblich, da man nicht mehr zur Maus greifen muss.

Im Script ist aktuell der T5 Knopf von meinem Saitek X52 (Werte 012 und 013) hinterlegt. Den passend Wert kann unter:.

"Jostick, Tastatur und Geräte"->"Buttons: Extra" ermittelt werden.

Eine weitere Änderung ist der kleine Knopf "Skip_LOD". Damit kann das LOD handling der Scenery ausgeschaltet werden und Objekte

werden auch in weiter Ferne dargestellt. Damit sinkt natürlich auch die Framerate. Um diesen Effekt zu sehen muss aber

"Draw per pixel lightning" unter "Darstellungsoptionen" ausgeschaltet sein.

FPS_LOD_0_3.zip

post-105923-0-86684700-1408054728_thumb.

post-105923-0-87877700-1408054731_thumb.

Share this post


Link to post
Share on other sites

Habe dein neues lod3 installiert. kannst du nähere angaben für die joystickanpassung machen,. auch ändert sich mit dem kleinen lod-ausschalter bei mir nichts. drwa per... ist ausgeschaltet. ansonsten finde ich dein script supper. vielen dank

Share this post


Link to post
Share on other sites

Im Script müssen die Zeilen mit button(013), last_button(013) sowie button(012) und last_button(012) auf den entsprechenden Wert angepasst werden.

Den Wert, wie oben beschrieben aus X-Plane "Jostick, Tastatur und Geräte"->"Buttons: Extra" auslesen und eins (1) abziehen. Also wenn 014 angezeigt wird, beim

drücken des Knopfes, ist es dann die Zahl 13 die einzutragen ist. Einfach diese Werte an den entsprechenden Stellen im Script eintragen und dann sollte es funktionieren.

Die entsprechenden Werte stehen in den Funktionen READ_BUTTON und GET_MOUSEPOS.

Ja man könnte das auch in einer Variablen ablegen ... war halt auf die schnelle mal implementiert :mallet_s:

Die Änderungen mit dem kleinen LOD Knopf sind eigentlich nur in der Ferne zu sehen und sind auch noch von "World detail distance, airport detail etc." abhängig. Bei einigen Rechner

ist der Effekt deutlich zu sehen bei anderen fast gar nicht.

Share this post


Link to post
Share on other sites

Hallo Captain, wollte dein script auf meinen saitek ändern. bei der taste p2 kommt die 008. habe darauf den button013 auf 007 geändert. geht aber nicht. kannst du mir vielleicht ein script für die "008" zaubern. ich bin den luascript schon gewohnt.

Share this post


Link to post
Share on other sites

Ok habe das Script mal angepasst (v0.4) und eine Variable für die Knöpfe und eine Test Funktion für die Knöpfe dazu gemacht.

Zum testen der Werte für einen gedrückten Knopf einfach in der Funktion do every draw die beiden "--" vor test_draw wegnehmen und das Script neu laden (LywithLua->Reload all Lua Script files"

Dann wird der Wert des gedrückten Knopfes angezeigt.

Diesen Werte dann in die Variablen (lod_up_button und lod_down_button) eintragen:

-- Change this values for your controler
lod_up_button = 13 -- T5 up for Saitek X52 joystick (13)
lod_down_button = 12 -- T5 down for Saitek X52 joystick (12)
In deinem Beispiel dann für die beiden Feuerknöpfe (E und der darunter):
lod_up_button = 7 -- T5 up for Saitek X52 joystick (13)
lod_down_button = 6 -- T5 down for Saitek X52 joystick (12)
Der Knopf (i) geht leider nicht :mecry_s:

Dann nicht vergessen die beiden "--" wieder eintragen und test_draw damit auskommentieren.

Sonst wird das immer angezeigt und geht auf die Performance ;-)

FPS_LOD_0_4.zip

Share this post


Link to post
Share on other sites

Mit dem 0.4 version klappt nun die steuerung mit den joysticktasten. bei mir startet es immer mit lod 1.5. könnte man den wert z.b auf 0.6 ändern?

Share this post


Link to post
Share on other sites

Der Knopf (i) geht leider nicht :mecry_s:

Wenn Du in den Controllereinstellungen des X52 im Reiter "MFD" den Kupplungsmodus "deaktivierst",

kannst Du den I-Knopf in X-Plane nutzen.

Gruß Tom

post-76091-0-55603000-1408182770_thumb.j

Share this post


Link to post
Share on other sites

Hallo maydayc, habe mal dein DynLod_v0_1 ausporobiert. arbeitet super mit meiner Nvidia gt640 zusammen. hast du eigentlich vor, dieses lua-script weiter zu entwickeln?. für mich arbeitet es super. interesant wäre es eine LOD-anzeige und eine FPS anzeige am schirm zu haben. habe es versucht aus dem lodV2 zu übernehmen. hat aber leider nicht geklappt. (man muss halt von der lua-programmierung eine ahnung haben.

Share this post


Link to post
Share on other sites

Hallo,

ja klar das Script werde ich natürlich noch weiter entwickeln.

Es gibt ja zwei Version davon. Das eine (DynLod) welches die LOD in Abhängigkeit von der Höhe verändert und das zweite Script (FPS_LOD) welches die LOD mit Mouse oder Joystick Button ändert.

Habe schon in der Planung beide Versionen in irgend einer Art zu kombinieren.

Share this post


Link to post
Share on other sites

... und schon geht es mit der nächsten Version weiter. Die Neuerungen sind:

a.) Die LOD kann auf einen Default Wert im Script für den Start eingestellt werden. Default ist 1.0.

Der Wert wird in Zeile 46 definiert ... z.B. set( "sim/private/controls/reno/LOD_bias_rat", 1.5 )

b.) Der Knopf Skip_LOD kann an (true) oder ausgeschaltet (false) werden.

Der Wert wird in Zeile 56 definiert... z.B. show_skip_ractangle = false

Die jeweiligen Stellen sind im Script markiert und können leicht angepasst werden.

FPS_LOD_0_5.zip

Share this post


Link to post
Share on other sites

Hallo maydayc,

dein Tool interessiert mich sehr.

Habe es wie beschrieben in Lua hineinkopiert.

Aber wie kann ich es auf meinem Saitek Yoke ansprechen ?

Die Belegungstasten Nummern habe ich in die Zeien 79 und 80 eingegeben

habe aber keine Reaktion.

PS.

Dank an dich für deine Anleitung über die Google-Objecte.

Habe mittlerweile meine Heimatstadt Essen und halb Duisburg erstellt.

Günther

Share this post


Link to post
Share on other sites

Hallo Günther,

ich habe leider keinen Saitek Yoke zum testen :mecry_s: ... Welche Werte werden bei "Button pressed" angezeigt wenn du die Funktion test_draw aktivierst

Kann das sein das du nur "analoge" Werte vom Saitek Yoke geliefert bekommst ? Also das du versuchst einen Schieberegler zu konfigurieren und keinen Schalter ?

madayc

Share this post


Link to post
Share on other sites

×
×
  • Create New...