Horten 229

Neu- und Weiterentwicklung von Flugzeugen.

Re: Horten 229

Beitragvon geed » So Okt 27, 2013 12:12 pm

Ich schreibe Javascript professionell im Rahmen meiner Firmentaetigkeiten, wenn's also mal was gibt, wo ihr Hilfe braucht, sagt bescheid :)
geed
 
Beiträge: 118
Registriert: Di Sep 24, 2013 9:09 am
Callsign: G-EED

Re: Horten 229

Beitragvon Cpt Haddock » Mi Okt 30, 2013 9:32 pm

geed hat geschrieben:Ich schreibe Javascript professionell im Rahmen meiner Firmentaetigkeiten, wenn's also mal was gibt, wo ihr Hilfe braucht, sagt bescheid :)

Hallo,

danke für das Angebot. In der Tat kann ich Hilfe brauchen. Seit ein paar Tagen versuche ich den Brandhahn in der Ho mit Detlefs Triebwerkscode zu verbinden. Die Animation des Griffes funktioniert prinzipiell. Nur leider noch nicht mit Nasal. Das Triebwerk habe ich noch nie zum Schweigen gebracht, obwohl ich schon etliche Schreibweisen durchprobiert habe.
Ich bin ja durchaus willig Nasal zu lernen, allerdings habe ich noch keine rechte Vorstellung davon entwickeln können, wie es aufgebaut ist. Die ganzen Dokumentationen, die ich dazu gelesen habe, beantworten meine Fragen meist nicht oder verwirren sogar eher. Die gezeigten Beispiel-Codes variieren für mich in der Schreibweise ohne das ich den Grund dafür nachvollziehen kann und funktionieren, wenn ich versuche Dinge danach umzusetzen in der Regel nie.
Es wäre also schön, wenn man mir kurz zumindest zu einem grundsätzlichen Nasal-Verständnis verhelfen könnte.
Mein bescheidenes Programmier Vorwissen beschränkt sich auf Datenbank-Programmierung mit 4D, was ich mir mit meinem laienhaften Verständnis über die Jahre selbst erarbeitet habe.
Was ich schon mitgekriegt habe ist, dass der Nasal-Code zu Beginn der Sim geladen sein muss(, oder?).
Deshalb habe ich im Nasal-Ordner des Models ein engines.nas angelegt mit folgendem Inhalt:
Code: Alles auswählen
var killl = aircraft.door.new ("/controls/engines[0]/kill",2);

    var nofuel = props.globals.getNode("engines/engine[0]/out-of-fuel",1 );
    var thrust = props.globals.getNode("engines/engine[0]/thrust-lbs",1);

    var kill_engineL = func {
       nofuel.setValue(1);
       nofuel.setAttribute("writable", 0);
       thrust.setValue(0);
       thrust.setAttribute("writable",0);
    } 
   
       engines.engine[1].kill =
     { door :
       [aircraft.door.new("/controls/engines/engine[1]/kill/position-norm", 2)
       ]
     };
     
KillRpos  = "/controls/engines/engine[1]/kill";
setprop(KillRpos, "postion-norm", 0);

setprop("/controls/engines/engine[1]/kill/postion-norm", 0);

var killr = aircraft.door.new ("/controls/engines/engine[1]/kill/position-norm",2);

    var nofuel = props.globals.getNode("engines/engine[1]/out-of-fuel",1 );
    var thrust = props.globals.getNode("engines/engine[1]/thrust-lbs",1);

    var kill_engineR = func {
       nofuel.setValue(1);
       nofuel.setAttribute("writable", 0);
       thrust.setValue(0);
       thrust.setAttribute("writable",0);
    } 

Das .xml für den Brandhahn enthält dann folgendes:
Code: Alles auswählen
# Anfang habe ich weggelassen da nichts zum Brandhahn

   <nasal>
    <load>
    setprop("/controls/engines/engine[1]/kill/postion-norm", 0);
    setprop("controls/engines/engine[1]/kill/postion-norm", 0);
   
    var nofuel = props.globals.getNode("engines/engine[1]/out-of-fuel",1 );
    var thrust = props.globals.getNode("engines/engine[1]/thrust-lbs",1);

    var kill_engineR = func {
       nofuel.setValue(1);
       nofuel.setAttribute("writable", 0);
       thrust.setValue(0);
       thrust.setAttribute("writable",0);
    } 

      </load>
    </nasal>
   
   
<animation>
 <type>pick</type>
 <object-name>BrandhahnR</object-name>
 <visible>true</visible>
 <action>
  <name>click</name>
  <button>0</button>
  <repeatable>false</repeatable>
  <binding>
     <!-- command>property-toggle</command>
        <property>controls/engines/engine[1]/kill/position-norm</property -->
   <command>nasal</command>
      <script>engines.killr.toggle();</script>
      <script>engines.engine[1].kill.toggle();</script>
    <script>kill_engineR.toggle();</script>
  </binding>
 </action>
</animation>

  <animation>
    <type>translate</type>
    <object-name>BrandhahnR</object-name>
    <property>controls/engines/engine[1]/kill/position-norm</property>
    <interpolation>
     <entry><ind> 0 </ind><dep> 0.0 </dep></entry>
     <entry><ind> 0.01 </ind><dep> -0.005 </dep></entry>
     <entry><ind> 0.99 </ind><dep> -0.005 </dep></entry>
     <entry><ind> 1 </ind><dep> 0.0 </dep></entry>
    </interpolation>
    <axis>
      <x>  0 </x>
      <y>  1 </y>
      <z>  0 </z>
    </axis>
  </animation>
 
 <animation>
  <type>rotate</type>
  <object-name>BrandhahnR</object-name>
  <property>controls/engines/engine[1]/kill/position-norm</property>
  <factor>54</factor>
  <center>
   <x-m>0.143</x-m>
   <y-m>0.007</y-m>
   <z-m>0</z-m>
  </center>
  <axis>
   <x>0.0</x>
   <y>-1.0</y>
   <z>0.0</z>
  </axis>
 </animation>
</PropertyList>

Dabei ist jetzt die Summe diverser vergeblicher Versuche im Code enthalten. Ich hatte auch mal mit Beispiel-Code für door.nas rumprobiert. Damit bin ich aber wahrscheinlich im völlig falschem Film gelandet.
Immerhin funktioniert die Animation mit <command>property-toggle</command>.

Eigentlich würde ich annehmen, ich muss die Triebwerksroutine in der engines.nas laden und dann durch pick im Brandhahn.xml aufrufen. Ist das richtig?
Leider ist mir unklar, wie ich diese ansprechen muß. In der Datenbank schreibe ich Methoden und rufen die mit Ihrem Namen auf. Hier scheint alles über Variablen zu laufen. In der Datenbank sollte man diese zuvor typisieren und dann initialisieren.
Hier scheint Typisierung eher zweitrangig zu sein und leider gelingt mir nicht mal das Initialisieren der Property mit setprop. Die Property wird angelegt ist aber immer Nil.
Ich vermute, das func hier in etwa einer Methode in der Datenbank entspricht. Aufgerufen wird sie dann über die Variabel?
Zur Zeit habe ich versucht für jede Turbine eine func zu haben. Vermutlich kann man das auch global machen und mit Zeiger o. Ä. zuweisen?
Wie der globalnamespace funktioniert ist mir auch noch nicht recht klar. Ich würde vermuten, es ist ähnlich wie der property tree in FG?
Gibt es da eine Liste der verfügbaren sub-namespaces oder kann ich alles mögliche anlegen?

So wie ichs jetzt verstehe würde meine engines.nas einen subnamespace bilden. Darf ich den Namen überhaupt verwenden oder ist der ev. schon vergeben und woher weiss ich, in welchem darüberliegenden space es abgelegt ist?
Oder muss ich den Pfad dafür zuerst komplett selbst anlegen? Wenn Ja, wie?

Sind die Variablen global oder nur im entsprechenden Unter-namespace gültig?

Ist der Property tree mit seinen Pfaden etwa auch im Nasal namespace abgelegt oder separat in FG?

Muß ich Nasal Befehle auch über den Namespace aufrufen?

Bildet mein Flugzeug einen subnamespace, so dass ich ich es im Pfad einbauen muss?
Wenn ja: welchen Namen muss ich da verwenden? Den vom Ordner, Set-File oder wie s im MP erscheint?

Brauche ich pro Triebwerk eine .nas Datei?

Soweit meine wirren Anfängerfragen.
Würde mich freuen, wenn mir jemand zu etwas mehr Klarheit verhelfen könnte.
Ansonsten:
Wenn Nasal so ähnlich wie Java-Script ist, werde ich da mal suchen. Da wird es ja hoffentlich anfängertaugliche Literatur geben.

Grüße

H~\
Cpt Haddock
 
Beiträge: 155
Registriert: Sa Aug 24, 2013 10:54 am
Callsign:

Re: Horten 229

Beitragvon chris_blues » Do Okt 31, 2013 1:32 am

:shock:
Ich habe nichts von deinem post verstanden. Meine bescheidenen versuche mit JaveScript fanden alle ihren Anfang hier: http://de.selfhtml.org/javascript/index.htm
Wobei ich auch JavaScript mehr als nur verwirrend finde... Ich hoffe Dir ergehts da besser!

Ich hoffe, das bringt etwas... :oops:
Nur nicht zögern, mir zu sagen daß ich im Unrecht bin, oder einfach nur nerve! Aber bitte nett bleiben! :)
2x2.6GHz AMD CPU - 8GB DDR2 RAM - NVidia GeForce GTS450 1GB DDR5 - Debian Testing 64bit - FG git
Benutzeravatar
chris_blues
 
Beiträge: 293
Registriert: Di Jul 30, 2013 12:52 am
Wohnort: /home/chris
Callsign: chris_blues

Re: Horten 229

Beitragvon dfaber » Do Okt 31, 2013 9:30 am

Cpt Haddock hat geschrieben: Die gezeigten Beispiel-Codes variieren für mich in der Schreibweise ohne das ich den Grund dafür nachvollziehen kann und funktionieren, wenn ich versuche Dinge danach umzusetzen in der Regel nie.


Viele Wege führen nach Rom. Das setzen von Properties kann auf mindestens 3 verschiedenen Wegen passieren.
Einmal das einfache:
Code: Alles auswählen
 setprop("some/property",1);


Das "some/property" kann man, der Übersicht halber, auch in eine Variable packen:

Code: Alles auswählen
var prop = "some/property";

setprop (prop,1);


Dann gibt es noch die objektorientierte Variante:
Code: Alles auswählen
var prop = props.globals.getNode("some/property");

prop.setValue(1);


Diese 3 Varianten machen dasselbe, nämlich der Property "some/property" den Wert 1 zuweisen. Welche man nimmt ist Geschmackssache. Für spezielle Dinge, wie das Schreibschutz Attribut setzen oder wenn man AI/MP Modelle programmiert, muss jedoch die objektorientierte Version genommen werden.

Cpt Haddock hat geschrieben:Was ich schon mitgekriegt habe ist, dass der Nasal-Code zu Beginn der Sim geladen sein muss(, oder?).
...
Eigentlich würde ich annehmen, ich muss die Triebwerksroutine in der engines.nas laden und dann durch pick im Brandhahn.xml aufrufen. Ist das richtig?


Das kommt darauf an. Wenn du einen Loop machst der etwas überwacht (z.B automatische Vorflügel), dann muss dieser nach der Initialisierung des FDM gestartet sein. Das wird üblicherweise mit einem Listener gemacht.
Wenn eine Funktion nur per Schalter aktiviert wird (z.B dein Brandhahn) dann muss er nur als function (func ) in einer Nasal Datei vorhanden sein. Die Nasal Dateien verknüpfst du in der -set Datei. Der Name der Sektion in der -set Datei ist dann auch Teil des Aufrufs, damit FG weiß aus welcher Nasal Datei die Funktion steht (z.B jeep.wipers ).

Cpt Haddock hat geschrieben: In der Datenbank schreibe ich Methoden und rufen die mit Ihrem Namen auf. Hier scheint alles über Variablen zu laufen. In der Datenbank sollte man diese zuvor typisieren und dann initialisieren.
Hier scheint Typisierung eher zweitrangig zu sein und leider gelingt mir nicht mal das Initialisieren der Property mit setprop.
...
Sind die Variablen global oder nur im entsprechenden Unter-namespace gültig?


Du mußt zwischen Variablen und Properties unterscheiden. Variablen initialisiersdt du in der Nasal Datei selbst. Das var zeigt an das es sich um lokale Variablen handelt. Variablemn ohne var wären global.

Properties werden in der -set Datei initialisiert und mit einem Typ versehen (bool, string, int, float, double):

Code: Alles auswählen
<prop type="bool">true</prop>


Es gibt Möglichkeiten Properties via Nasal zu erzeugen, aber üblicherweise reicht es aus das in der -set Datei zu machen.

Cpt Haddock hat geschrieben:Ich vermute, das func hier in etwa einer Methode in der Datenbank entspricht. Aufgerufen wird sie dann über die Variabel?
...
Muß ich Nasal Befehle auch über den Namespace aufrufen?

Die Funktion wird mit ihrem Namen aufgerufen und ggf Parameter übergeben. Wird aus derselben Nasal Datei aufgerufen reicht der einfache Funktionsname. Wird von einem Tastaturkürzel oder aus einer pick Animation aufgerufen, muss der Name des Nasal Kontextes mitgegeben werden (z.B, jeep.wipers; s.o).

Cpt Haddock hat geschrieben:Zur Zeit habe ich versucht für jede Turbine eine func zu haben. Vermutlich kann man das auch global machen und mit Zeiger o. Ä. zuweisen?
Wie der globalnamespace funktioniert ist mir auch noch nicht recht klar. Ich würde vermuten, es ist ähnlich wie der property tree in FG?
Gibt es da eine Liste der verfügbaren sub-namespaces oder kann ich alles mögliche anlegen?
So wie ichs jetzt verstehe würde meine engines.nas einen subnamespace bilden. Darf ich den Namen überhaupt verwenden oder ist der ev. schon vergeben und woher weiss ich, in welchem darüberliegenden space es abgelegt ist?
Oder muss ich den Pfad dafür zuerst komplett selbst anlegen? Wenn Ja, wie?
...
Bildet mein Flugzeug einen subnamespace, so dass ich ich es im Pfad einbauen muss?
Wenn ja: welchen Namen muss ich da verwenden? Den vom Ordner, Set-File oder wie s im MP erscheint?
Brauche ich pro Triebwerk eine .nas Datei?


Du kannst die Funktionen auf beliebig viele Dateien aufspalten. Ich persönlich finde es einfacher nicht alles in EINE Datei reinzuklatschen. Das vereinfacht das Portieren. Entscheidend für das Ausführen ist die Verknüpfung der Nasal Dateien in deer -set Datei.

Cpt Haddock hat geschrieben:Ist der Property tree mit seinen Pfaden etwa auch im Nasal namespace abgelegt oder separat in FG?


Property Tree und Nasal sind getrennt. es gibt lediglich Nasal Funktionen um mit Properties zu interagieren.


Grüße
dfaber
 
Beiträge: 302
Registriert: Di Jun 11, 2013 1:43 pm
Wohnort: Aachen
Callsign: D-FABR

Re: Horten 229

Beitragvon Cpt Haddock » Sa Nov 02, 2013 11:11 pm

Hallo,

erstmal vielen Dank für die Nasal-Erhellungen. Immerhin reagiert es jetzt schon teilweise. Damit wir aber möglichst bald eine veröffentlichungsfähige Version bekommen, habe ich dieses fruchtlose Kapitel jedoch erstmal zur Seite gelegt und mich wieder dem Cockpit-Ausbau gewidmet. Einige Detailverbesserungen sind in der Zwischenzeit aufgelaufen.
Bild
Der Zustand der der Klappen wird nun durch drei Lämpchen markiert. Leuchtet erstmal alle rot. Konnte leider noch nicht feststellen, ob es wirklich Lampen waren oder irgendwelche Stellzeichen. Und wenn Lampen alle Rot oder anders?
Bild
Im Cockpit gibt's jetzt auch rechts einen Hebel, der angeblich für den Schleudersitz zuständig war. Vorsichtshalber erstmal ohne Funktion, zumal die Funktionsfähigkeit des Sitzes schon damals bezweifelt wurden.
Das Panel wurde auch noch mal überarbeitet.
Habe nun in einer Quelle gelesen, bei den vermeintlichen Brandhähnen soll es sich um die Klappensteuerung handeln. Erscheint mir etwas merkwürdig, die Klappen für jede Seite einzeln zu regeln. Zumal es nur eine Anzeige gibt. Weiss jemand, ob es sowas gab?
Bild
Nun wir auch durch den Fahrwerkschacht partiell Einblick gewährt, wie in echt.
Bild
Weitere Vorbereitung für die neue Haube wurden getätigt. Hier ist schon mal die Form angedeutet.
Bild
Die Fronthaube wurde schon eingearbeitet. Dabei wurde der Rumpf (oder muss es heissen der Flügel?) am Bug etwas überarbeitet (Vorher - Nachher).
Bild
Hier im Einsatz.

Enjoy!

H-)
Cpt Haddock
 
Beiträge: 155
Registriert: Sa Aug 24, 2013 10:54 am
Callsign:

Re: Horten 229

Beitragvon Cpt Haddock » Mo Nov 25, 2013 12:39 am

Nach ner längeren Pause wegen Rechnerärger mal wieder was Neues.
Die Grundlage für die neue Haube ist gelegt.
Bild
Ist aber noch Einiges dran zu tun.
Bild
Hier von Innen.
Bild
Von Aussen ist noch die alte Haube zu sehen. Aber gibt schon mal einen Eindruck.
Bild
Der Innenraum wurde erweitert, so dass die Triebwerke jederzeit inspiziert werden können. ;)
Das Triebwerkspanel wurde auch noch etwas verfeinert.

Enjoy!

H-)
Cpt Haddock
 
Beiträge: 155
Registriert: Sa Aug 24, 2013 10:54 am
Callsign:

Re: Horten 229

Beitragvon Goosnen » So Dez 01, 2013 2:20 am

Hy Leute

hab die Horten Brüder :mrgreen: (meine und Haddocks Versionen) jetzt mal unter einen Hut gesteckt und alles von mir in Haddocks letzte version gebastelt.... (da ist die Haube nochnicht bei nur angedeutet) Er selbst hat wohl die kommende woche wenig zeit es zu testen, wie er mir schrieb und kommt erst frühstens nächstes we dazu.

http://www.FastShare.org/download/Ho229_1113.zip

Deshalb hier mal das Ergebnis damit soviele Testflugstunden wie möglich zusammen kommen!
bitte alles was euch buggy vorkommt notieren und berichten wenn geht.

**Guns smoke hab ich schon registriert wird behoben
**auch des bei meiner yasim der stall plötzlich futsch ist, bedaure ich zutiefst ;) iwann versteh ich das sicherlich mit den wingwerten nur weiß ich im moment nochnicht worans liegt...

Dafür sind aber alle drei Yasims vorhanden (helijah/Haddock/meine), könnt ihr einfach austauschen

Grüße tob
Benutzeravatar
Goosnen
 
Beiträge: 233
Registriert: So Jul 07, 2013 7:38 pm
Callsign: goosnen

Re: Horten 229

Beitragvon Goosnen » Do Jan 30, 2014 4:12 pm

http://www.fastpic.info/image/20140130/4df1a3d0f5.png
http://www.fastpic.info/image/7a1e5b7b75
Cockpit der obigen version


Hy Frank, hy all

was mir grad noch einfällt! Der masterarm ist der linke von den beiden eigentlichen zündschaltern!
nicht des das so bleiben sollte, eher als prädikat pädagogisch wertvoll^^ und weil ich die funktionstüchtigkeit testen wollte....

nur falls jemand schiessen will ;~)

und dann hab ich noch die camerapoints der heli und chase cam eben mal geändert:

Code: Alles auswählen
 <view n="1">
    <config>
     <y-offset-m archive="y"> 0 </y-offset-m>
      <z-offset-m archive="y"> 3 </z-offset-m>
     <target-y-offset-m archive="y" type="double"> 2.2 </target-y-offset-m>
      <target-z-offset-m archive="y" type="double"> -2 </target-z-offset-m>
     <pitch-offset-deg> -0 </pitch-offset-deg>
     <default-field-of-view-deg> 44 </default-field-of-view-deg>
    </config>
  </view>

  <view n="2">
     
    <config>
            <z-offset-m archive="y"> 10 </z-offset-m>
            <y-offset-m archive="y">  24 </y-offset-m>
           <target-z-offset-m archive="y" type="double"> -15 </target-z-offset-m>
           <limits>
                <enabled type="bool">true</enabled>
                <left>
                  <heading-max-deg type="double">20</heading-max-deg>
                  <x-offset-max-m type="double">8</x-offset-max-m>
                  <x-offset-threshold-deg type="double">50</x-offset-threshold-deg>
                </left>
                <right>
                    <heading-max-deg type="double">20</heading-max-deg>
                    <x-offset-max-m type="double">8</x-offset-max-m>
                    <x-offset-threshold-deg type="double">50</x-offset-threshold-deg>
                </right>
            </limits>     
     <pitch-offset-deg> -26.6 </pitch-offset-deg>
     <default-field-of-view-deg> 58 </default-field-of-view-deg>
    </config>
  </view>


ähnlich wie beid er letzten w34, also etwas sportlichere cam einstellung, ist auch vll besser wenn man die auf individuelle positionen macht anstatt auf eins und zwei... um die veteranen nicht ausm takt zu bringen :D

nur anregung wie sich versteht ..

Grüße tob



ps: sämtliche änderungen die ich im dec gemacht habe, wie instrus neu auflegen und ein kleiner bodeneffekt bei unter 50ft und ab bestimmten geschwindigkeiten sind erstmal futsch... wird ne weile dauern .. auch da mir im moment die muse erstmal vergangen ist, warte auf neuen rechner.....
Benutzeravatar
Goosnen
 
Beiträge: 233
Registriert: So Jul 07, 2013 7:38 pm
Callsign: goosnen

Re: Horten 229

Beitragvon Goosnen » Mi Apr 16, 2014 12:56 pm

zwecks werbung nicht im screenshot faden sondern hier
Bild
Bild
Bild
Benutzeravatar
Goosnen
 
Beiträge: 233
Registriert: So Jul 07, 2013 7:38 pm
Callsign: goosnen

Re: Horten 229

Beitragvon Cpt Haddock » Mi Mai 14, 2014 9:53 pm

Hallo,

hat etwas gedauert. Wegen Vielerlei war länger nichts mehr mit FlightGear, aber nun ist es soweit. Nach etlichen Tagen harter Arbeit ist die neue Haube fertig und eingearbeitet.
Habe versucht, es in die letzte Version von Goosnen einzuarbeiten. Die obersten 9 Screenshots sind noch mit meiner Entwicklungsversion gemacht. Deshalb sieht man da noch die alten Instrumente.
Nach einigen ersten Test hier scheint es im großen alles zu funktionieren. Das Model ist bis jetzt nicht vollständig für Performance optimiert, läuft hier aber ohne Probleme. Hinweis an Goos: die Aussenform mit der ich arbeite ist noch die Heliasche. Deshalb sind Deine Bremsklappen hier noch nicht drin. Wollte es aber endlich hier einstellen und nicht da noch Zeit verlieren.
Das Revi habe ich auskommentiert da die V3 keines hatte. Es ist aber noch drin. Wer s haben will kann es leicht wieder aktivieren.

Bild
Da ist sie!
Bild
Die neue Haube von aussen
Bild
und von innen
Bild
hier zu
Bild
und auf
Bild
Rolling home
Bild
Follow Me!
Bild
Angekommen
Bild
Endlich wehts nicht mehr rein
Bild
So schaut in der Download-Version

Hoffe es gefällt. Download gibt's hier:
http://fmgoeldner.net/FG/Flieger/HoIX/Horten-Ho-IX20140514.zip

Enjoy!

f-)
Cpt Haddock
 
Beiträge: 155
Registriert: Sa Aug 24, 2013 10:54 am
Callsign:

VorherigeNächste

Zurück zu Flugzeuge

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron