![]() |
FSDS - Design Conditions
Hallo, ich mal wieder... :)
Ein neues Problem. Ich habe mit FSDS 1.6b ein Objekt gemacht bei dem ich die Sichtbarkeit einzelner Teile getrennt steuern will. Das heißt, ca. 3000 m vom Flieger soll eine vereinfachte Version des Objekts (zwei Flächen) erscheinen, ab ca. 1000 m soll dann das "richtige" Objekt dargestellt werden. Ich habe mir dafür unter "Display Conditions" die Option "Distance to Aircraft" ausgeguckt und gedacht, alles ganz einfach.....Pustekuchen. Bei der vereinfachten Version habe ich V1=1000 und V2=3000 gsetzt. Bei der vollständigen Version habe ich V1=0 und V2=1000 gsetzt Die "normale" Visibility des Objekts (im SCC) liegt bei 3000 m, die Reichweite bei ebenfalls 3000 m. Aber es funktioniert nicht. Wenn ich mich auf das Objekt zu bewege erscheint es irgendwann mal kurz und verschwindet nach ein paar Sekunden wieder. Ich habe dann - auf gut Glück, da in der Hilfe nicht weiter beschrieben - mit verschiedenen Werten rumexperimentiert ohne etwas zu erreichen. Was muss ich wie korrekt eingeben? Danke Horst |
Leute entäuscht mich nicht......ich weiß dass ihr das wisst! :)
Hab heute noch mal den ganzen Vormittag rumprobiert, es klappt einfach nicht... :( Horst |
Hallo Horst,
ich glaube, du verwendest den falschen Ansatz. Die Display Condition "Distance to Aircraft" wird für andere Effekte verwendet. Was du machen willst, ist ein Objekt mit multipler Auflösung (MultiResolution File, in der gmax-Sprache: Level of Details) zu bauen. Das kann man mit FSDS 1.6 auch tun. Du musst einzelne Projekte bauen, also, das vereinfachte Objekt und das vollständige Objekt. Dann kannst du im Menü File > Create MultiResolution File die einzelne Modelle kombinieren. Dabei muss man angeben, wann die Modelle sich abwechseln. Ausschalggebend dabei ist die prozentuale Größe am Bildschirm bzw. die Größe in Pixeln. In der Hilfe von FSDS steht alles darüber (glaube ich). |
Hmm, das hört sich gut an, das scheint genau das zu sein was ich brauch. Muss ich mal ausprobieren. Danke.
Horst (Aber trotzdem begreife ich nicht warum meine erste Methode nicht funktioniert, grummel grummel...) |
Bist du aber neugierig!
Distance from Aircraft ist eine Display Condition nur für Szenerien. Sie läßt die damit markierten Objekte erst dann erscheinen, wenn die Entfernung zum Flugzeug den gewünschten Wert erreicht hat. |
Dann hätte es doch gehen müssen! Es geht ja um ein Szenerieobjekt. Ich habe neben der Aufgabenstellung aus meinem ersten Beitrag auch noch mal mit beliebigen einzelnen Objekten experiementiert, die z. B. nur in einem Bereich zwischen 1000 m und 2000 m vom Flugzeug sichtbar sein sollten. Aber gleich was ich für Werte bei V1 und V2 eingebe, es funktioniert nicht. Immer wenn ich mich auf das Objekt zu bewege erscheint es irgendwann mal kurz und verschwindet nach ein paar Sekunden wieder. Das ist das Rätsel vor dem ich stehe.
Horst |
@ Sergio
Inzwischen habe ich mal die Beschreibung für diese Multi Resolution Geschichte durchgeackert. Im Prinzip ist das schon das was ich machen will, nur eben mit etwas komplexeren statischen Objekten. Da geht es aber durchgehend nur um MDLs. Normale Objekte (Gebäude usw.) z. B. als API-Objekte kommen da gar nicht vor. Jetzt versteh' ich gar nix mehr... Horst:( |
Nein, die MultiResoultion-Option gilt in FSDS 1.x nur für Flugzeuge. Du hast im ersten Posting auch nur von einem "Flieger" geschrieben.
Bei Szenerien ist es anders. API-Makros haben, so weit ich weiß, diese Funktion nicht. Zumindest nicht, wenn man sie mit FSDS 1.x baut. Aber vielleicht irre ich mich. Anders ist, wenn man die BGL direkt mit gmax baut. Obwohl: Level of Details sind in gmax nicht gerade leicht. An sich könnte auch FSDS 2.x solche BGL erzeugen und es wäre viel leichter als mit gmax. Aber ich habe das nie getestet. |
@ Sergio
Das stimmt so nicht. Ich habe geschrieben: "...ca. 3000 m vom Flieger soll eine vereinfachte Version des Objekts (zwei Flächen) erscheinen, ab ca. 1000 m soll dann das "richtige" Objekt dargestellt werden..." Es geht ja um die Darstellung von Objekten bei einem bestimmten Abstand zum eigenen Flugzeug. Also zurück zur ursprünglichen Frage: warum geht es mit "Design Conditions....Distance to Aircraft" wie im ursprünglichen Posting beschrieben für die einzelnen Parts nicht, was doch anschienend genau dafür da ist? Horst |
Tja, Horst, die englischen Manuals sind in der Tat manchmal nicht einfach zu verstehen... :D
V1 bezeichnet die Distanz zwischen Flugzeug und Makro in Metern, in der das Objekt sichtbar wird. V1=7000 bedeutet, daß das Objekt zu sehen ist, wenn das Flugzeug höchstens 7000 Meter von ihm entfernt ist. V2 ist aber etwas ganz anderes. Mit diesem Wert wird der gedachte Durchmesser um das Objekt im Metern bestimmt. Wenn ein Gebäude also 30m breit und 10m lang ist, müßte V2=30 sein. Dieser Wert ist erforderlich, damit das Objekt von der Grafik-Engine nur berechnet wird, wenn es tatsächlich zu sehen ist. Um Darstellungsfehler zu vermeiden, empfiehlt es sich aber, statt den Wert doppelt so groß anzugeben, in unserem Beispiel also V2=60 Also irgendwie logisch, daß bei Dir nichts angezeigt wurde. Zu Deinem Problem: Du mußt in das Makro eine Entfernungsabfrage einbauen (da mußt Du den Werlitz fragen, welche Variable Du brauchst) und dann tatsächlich die Zeichenbefehle für Deine beiden "Variationen" in dem Makro komplett unterbringen, also einmal die einfache Version und einmal die detaillierte. Ich glaube, Du hattest Dir erhofft, daß die Makros vom FS automatisch vereinfacht werden. Das ist leider nicht so. |
Hallo Jens,
"V2 ist aber etwas ganz anderes..." Das sind ja ganz neue Aspekte. Muss ich mal ausprobieren. "Ich glaube, Du hattest Dir erhofft, daß die Makros vom FS automatisch vereinfacht werden. Das ist leider nicht so" Nee, in FSDS kann man den einzelnen Parts eines Objekts diese Eigenschaft über "Display Conditions...Distance to Aircraft" direkt mitgeben. Nur sind die Parameter dafür nirgends beschrieben. Es ist ein Kreuz mit diesen Handbüchern... Danke Horst |
Nee, war leider auch nix...
Horst :( |
???
Der entsprechende Part im Makro müßte ungefähr so aussehen: mif( %11 ) RefPoint( 3 :End %1 %2 E= %11 V1= 11700 V2= 60 ) melse RefPoint( 7 :End 1 %1 %2 V1= 11700 V2= 60 ) mifend SetScaleX( :End 0 0 11 ) ; Scale=0,03125 |
Tut mir leid, ich kann leider nicht programmieren. Deshalb ging es mir ja darum die beschriebene Funktion im FSDS erklärt zu bekommen weil ich nur mit Designprogrammen arbeiten kann.
Horst |
Du könntest aber wenigsten im Makro nachsehen, ob der Code ungefähr so aussieht. Die entsprechende Stelle dürfte ziemlich weit oben zu finden sein. Und wie Du sehen kannst, steht vor den Zahlen ja V1 und V2 - da kann man dann eigentlich nix verkehrt machen, wenn man die Zahlen mal von Hand im FSDS-produzierten Makro verändert.:confused:
|
Ich hab jetzt mal mit dem FSDS ein ganz simples Objekt, einen Quader 1x1x1m gemacht, diesem V1=1000 und V2=2000 zugewiesen und ein API draus gemacht. Den Text im Eingabefenster verstehe ich so dass das Objekt jetzt beim drauf zu Fliegen ab 2000 m sichtbar und ab 1000 m wieder unsichtbar werden müsste. Zu sehen ist aber gar nichts.
Hier das API. Ein solcher Textblock wie du schreibst ist enthalten, sieht aber irgendwie anders aus: ;VODDATA Latitude Longitude Range Scale Rotation Not_used Not_used Not_used Not_used Visibility Altitude Scenery_complexity(0-5) Not_used Not_used ;MACRODESC FSDS object 1x1 using scale 1.000000 ;Generated with FS Design Studio v1.6 ;Copyright 2000 ; %1 = Latitude ; %2 = Longitude ; %3 = Range ; %4 = Scale ; %5 = Rotation ; %6 = Not used ; %7 = Not used ; %8 = Not used ; %9 = Not used ; %10 = Visibility range ; %11 = Altitude ; %12 = Scenery complexity mif( 0 ) ; displays airport symbol Area( 5 %1 %2 1 ) RotatedCall( :symbol 0 0 %5 ) Jump( :endsymbl ) :symbol RefPoint( 7 : 1 %1 %2 ) Points( 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ) Poly( a 1 5 2 ) Poly( a 2 5 3 ) Poly( a 3 5 4 ) Poly( a 4 5 1 ) Return :endsymbl EndA mifend Area( 5 %1 %2 %3 ) IfVarRange( :Exit 0346 %12 5 ) PerspectiveCall( :PCall ) ShadowCall( :PC02 ) Jump( :Exit ) :PCall Perspective :PC02 mif( %11 ) RefPoint( 2 :Skip %4 %1 %2 E= %11 v1= %10 V2= 2 ) melse RefPoint( 7 :Skip %4 %1 %2 v1= %10 v2= 2 ) mifend RotatedCall( :B 0 0 %5 ) Return :B ; CRASH Detection IfVarRange3( :NoCrash 37E 0 0 382 0 1 386 0 0 ) SetVar( 0284 14 ) :NoCrash Call32( :Part0 ) :Skip Return :Exit Jump32( :End ) ; ; Part: Box :Part0 IfVarRange( :Skip 33a 1000 2000 ) Points( 0 0 0 0 ; 0 0 1 0 ; 1 1 1 0 ; 2 1 0 0 ; 3 0 0 1 ; 4 0 1 1 ; 5 1 1 1 ; 6 1 0 1 ; 7 ) ;RGBSColor( ef 255 255 255 ) Dwx( 2d ) ; color command Dbd( 255 ) ; red Dbx( ef ) ; flag/transparency Dbd( 255 ) ; green Dbd( 255 ) ; blue Poly( 0 0 -32767 0.50 0 1 2 3 ) Poly( 0 0 32767 0.50 7 6 5 4 ) Poly( -32767 0 0 0.50 5 1 0 4 ) Poly( 32767 0 0 0.50 2 6 7 3 ) Poly( 0 32767 0 1.00 5 6 2 1 ) Poly( 0 -32767 0 0.00 0 3 7 4 ) Return :End EndA Horst |
Na bitte, ist doch alles gar nicht so schwer. Jetzt ist auch klar, warum es nicht funktioniert. 4 Zeilen aus dem Text haben die entscheidende Bedeutung:
; %10 = Visibility range Hier erfahren wir zunächst, daß die Variable "%10" die Sichtweite bezeichnet. Dummerweise kommt irgendwann diese Zeile: Area( 5 %1 %2 %3 ) Die in diesem Fall entscheidende Bedeutung hat in diesem Fall die Zahl 5: Das ist nämlich die Entfernung in Kilometern, ab der das Objekt in den Speicher geladen wird. Da kann V1 auch 100.000 groß sein, zu sehen ist trotzdem erst ab 5km was. Die restlichen beiden Zeilen hatte ich schon mal angesprochen: IfVarRange( :Exit 0346 %12 5 ) PerspectiveCall( :PCall ) ShadowCall( :PC02 ) Jump( :Exit ) :PCall Perspective :PC02 mif( %11 ) !!!!! RefPoint( 2 :Skip %4 %1 %2 E= %11 v1= %10 V2= 2 ) !!!!! melse !!!!! RefPoint( 7 :Skip %4 %1 %2 v1= %10 v2= 2 ) !!!!! mifend RotatedCall( :B 0 0 %5 ) Return Interessieren tut, was nach v1= und nach v2= kommt: Bei V1 steht die Variable "%10" und aus der Beschreibung wissen wir ja, daß damit die Sichtweite gemeint ist. Daß da eine Variable und kein Wert wie 5000 o.ä. steht, deutet darauf hin, daß man im Design-Programm festlegen kann, wie groß dieser Wert sein soll. Aaaber: Man kann im Programm zwar größer als 5km festlegen, wegen dem Range-Wert wird es aber immer erst ab 5km angezeigt. Hinter V2 steht in diesem Fall der Wert 2, der vom Programm automatisch berechnet wurde und hier den Durchmesser einer gedachten Halbkugel ums Objekt in Metern angibt. Jetzt klarer? |
Jens ganz sicher das bei Area( 5
die 5 für eine Entfernung von 5000m steht. In den Scasm Docs steht das nämlich anders. Hier steht was von 0...22km (0...40km)für invisible bei Area( 5 Bei Area( 8 steht das dieses 40...130km bedeutet. Bei Area( B steht das dieses 0...255km bedeutet. Da 5 oder 8 demnach hier nicht für Zahlenwerte in 1000m stehen wundert mich diese Interpretation mit Metern. Bei Runways konnte ich das mit dem sichtbar werden der Runway bei Area( 5 nämlich eher den 22km zuordnen als den 5km. Das ist für mich nämlich auch eine entscheidende Frage bei der Dokumentation des Verschwindens/Flackerns von Taxiwaytexturen bei Airports. Ich hoffe Du hast Dich geirrt. Ich möchte ja wenn möglich nichts falsches in die Dokumenation schreiben. Wenn ich nicht recht habe klär mich mal bitte auf. Es steht übrigends in der scacmd2.doc. |
Danke, JOBIA, Du hast natürlich Recht: Nich die erste, sondern die letzte Zahl in der Range-Anweisung betrifft die Kilometer, in diesem Fall ist es auch eine Variable, nämlich die "%3"
Habe halt seit etwas längerer Zeit nichts mehr von derselbigen gehabt, um was zu machen, weil ich noch viiiiiiiel mit meinem Sohn beschäftigt bin. |
| Alle Zeitangaben in WEZ +2. Es ist jetzt 09:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag