Animationen und Liverywechsel über MP

Animationen und Liverywechsel über MP

Beitragvon Sanni » Mi Okt 15, 2014 10:13 pm

Hallo Ihrs,

seit einer ganzen Weile suche ich im Wiki nach einer Beschreibung, wie ich eine Animation über Multiplayer realisieren kann. Also wie bei der Bo105, wenn ich die Tür öffne, geht die Tür auch bei jedem auf, der mich mit meinem Flieger sehen kann.
Was die liveries angeht, gibt es ja ein HowTo. Aber das scheint schon überaltet zu sein. Es funktioniert scheinbar nicht so, wie es dort beschrieben ist. :o

Liebe Grüße, Sanni
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 396
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: Animationen und Liverywechsel über MP

Beitragvon dfaber » Do Okt 16, 2014 3:10 pm

Hallo Sanni,

Sanni hat geschrieben:Hallo Ihrs,

seit einer ganzen Weile suche ich im Wiki nach einer Beschreibung, wie ich eine Animation über Multiplayer realisieren kann. Also wie bei der Bo105, wenn ich die Tür öffne, geht die Tür auch bei jedem auf, der mich mit meinem Flieger sehen kann.


Damit die Animationen auf der anderen Seite im MP zu sehen sind müssen die dazu gehörigen Properties über das MP Protokoll übertragen werden. Für die üblichen Steuer/Motor Properties passiert das automatisch, braucht man spezielle kann man die über die Properties "sim/multiplay/generic/" schicken. Alle Properties die hier definiert sind werden über MP übertragen. Es gibt dort int, string, float und double. Man kann die Animationen direkt in diesem Bereich legen, oder sie per Nasal dorthin kopieren, dann muß man sie aber in der Model XML Datei wieder zurück kopieren. Ein Beispiel hierfür ist die bf109. Hier kopiere ich die Belegung der Außenlasten auf das MP Modell. Der Nasal Teil sieht dann so aus:

Code: Alles auswählen
var mp_loop = 0.3;

var update_mp_props = func {
   # print ("updating...");
   setprop("sim/multiplay/generic/int[0]", getprop ("/sim/armament/pylon[0]/type"));
   setprop("sim/multiplay/generic/int[1]", getprop ("/sim/armament/pylon[1]/type"));
   setprop("sim/multiplay/generic/int[2]", getprop ("/sim/armament/pylon[2]/type"));

   var state = 0;
   if (getprop ("sim/failure-manager/burning")) {
         state = state +1;
   }
   if (getprop ("sim/failure-manager/smoking")) {
         state = state +2;
   }
   setprop ("sim/failure-manager/fail-type",state);
   # print ("State: ", state);
   setprop("sim/multiplay/generic/int[10]", getprop ("/sim/failure-manager/fail-type"));

    settimer(update_mp_props, mp_loop);
}

Der zweite Teil sorgt dafür das der Flieger raucht oder brennt wenn er getroffen wurde. Die Modell XML Datei enthält dann den Nasal Part:
Code: Alles auswählen
     var target_in = self.getNode("sim/multiplay/generic/string[1]", 1);
      var pylon0_in = self.getNode("sim/multiplay/generic/int[0]", 1);
      var pylon1_in = self.getNode("sim/multiplay/generic/int[1]", 1);
      var pylon2_in = self.getNode("sim/multiplay/generic/int[2]", 1);

         var failure_in = self.getNode("sim/multiplay/generic/int[10]", 1);

         var pylon0_out = self.getNode("sim/armament/pylon[0]/type",1);
         var pylon1_out = self.getNode("sim/armament/pylon[1]/type",1);
         var pylon2_out = self.getNode("sim/armament/pylon[2]/type",1);

         var failure_out = self.getNode("sim/failure-manager/fail-type", 1);


und innerhalb des Loops:
Code: Alles auswählen
         pylon0_out.setValue(pylon0_in.getValue());
         pylon1_out.setValue(pylon1_in.getValue());
         pylon2_out.setValue(pylon2_in.getValue());

         failure_out.setValue(failure_in.getValue());


Für den Anfang ist es aber wohl einfacher sofort die MP Properties herzunehmen, dann kann man sich nämlich das hin und her kopieren sparen.

Sanni hat geschrieben:Was die liveries angeht, gibt es ja ein HowTo. Aber das scheint schon überaltet zu sein. Es funktioniert scheinbar nicht so, wie es dort beschrieben ist. :o

Es gibt zwei Funktionen die man hierfür hernehmen kann. Die aircraft.livery.init ist eine allgemeine Funktion speziell für das Livery Handling. Sie kümmert sich auch um den Auswahldialog. Aufgerufen wird sie über Nasal:
Code: Alles auswählen
aircraft.livery.init("Aircraft/bf109/Models/Liveries", "sim/model/livery/variant");

SIe kümmert sich auch selbst um das Übertragen per MP. Dann muss die Modell XML Datei einen Befehl haben das updaten der Livery zu übernehmen:
Code: Alles auswählen
      var update = aircraft.overlay_update.new();
      update.add("Aircraft/bf109/Models/Liveries", "sim/model/livery/file");


Die zweite Funktion gui.OverlaySelector kann man für Liveries und/oder spezielle optionale Dinge nehmen (hier: das Logo auf der Motorhaube). Ihr Aufruf sieht dann so aus:
Code: Alles auswählen
var logo_dialog = gui.OverlaySelector.new("Select Logo", "Aircraft/Generic/Logos", "sim/model/logo/name", nil, "sim/multiplay/generic/string");


In der Modell XML Datei ist der update Aufruf genauso wie bei aircraft.livery.init.
Hier die Erläuterung aus der gui.nas:
Code: Alles auswählen
# Overlay selector. Displays a list of overlay XML files and copies the
# chosen one to the property tree. The class allows to select liveries,
# insignia, decals, variants, etc. Usually the overlay properties are
# fed to "select" and "material" animations.
#
# SYNOPSIS:
#       OverlaySelector.new(<title>, <dir>, <nameprop> [, <sortprop> [, <mpprop> [, <callback>]]]);
#
#       title    ... dialog title
#       dir      ... directory where to find the XML overlay files,
#                    relative to FG_ROOT
#       nameprop ... property in an overlay file that contains the name
#                    The result is written to this place in the
#                    property tree.
#       sortprop ... property in an overlay file that should be used
#                    as sorting criterion, if alphabetic sorting by
#                    name is undesirable. Use nil if you don't need
#                    this, but want to set a callback function.
#       mpprop   ... property path of MP node where the file name should
#                    be written to
#       callback ... function that's called after a new entry was chosen,
#                    with these arguments:
#
#                    callback(<number>, <name>, <sort-criterion>, <file>,  <path>)
#
# EXAMPLE:
#       aircraft.data.add("sim/model/pilot");  # autosave the pilot
#       var pilots_dialog = gui.OverlaySelector.new("Pilots",
#               "Aircraft/foo/Models/Pilots",
#               "sim/model/pilot");
#
#       pilots_dialog.open();  # or ... close(), or toggle()
#


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

Re: Animationen und Liverywechsel über MP

Beitragvon Sanni » Di Okt 21, 2014 7:31 pm

Danke, für deine Ausführungen.
Die Liveries habe ich gleich mal ausprobiert. Leider funktionieren beide Wege nicht. Selbst wenn ich zwei Instanzen FG über local MP laufen lasse, bleibt die UH-1 leider immer noch schwarz. Da wird ja dann noch nichtmal das Standardlivery gezeichnet. Also ist wäre das dann nicht nur ein MP-Problem, sondern (wenn ich das so richtig verstehen,) noch mehr, als würde irgendwas hier die Liveries blockieren. Merkwürdigerweise ist das aber nicht bei allen. Es gibt andere, die können die korrekten Liveries sehen.
Es gibt doch bestimmt irgendwo in den Tiefen des FG-Wikis nachzulesen, wie das grundsätzlich läuft -- das mit den Liveries oder???
Ich würde gerne die Hintergründe verstehen...

LG, Sanni
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 396
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: Animationen und Liverywechsel über MP

Beitragvon Goosnen » Fr Nov 14, 2014 12:33 am

hy ho

hab bei meinem schätzken auch hier und da ein paar raabenschwarze ecken wenn der modelshader aktiviert ist, soeben mit der anneliese ausprobiert aber hier ist es genau umgekehrt sie is raabenschwarz wenn der modelshader slider auf 0 stellung ist???? heißt dann wohl des man erstens: mit lowend rechner (also ohne die shader unter grafikoptionen einstellen zu können) nur schwarze annelieses sieht. und zweitens des da meiner meinung nach was nicht stimmen kann mit den specular und wie auch immer werten innerhalb der liverie xmls... da einige ganz gut dargestellt werden und andere "sehr" dunkel auf der sonnenabgewandten seite sind.

ob es nu allein mit den liverie xml's zu tun hat kann ich allerdings auch nich sagen, ich würde aber mal alle effect tags im model.xml suchen und nacheinander mit <!--> aussparen um zu sehn an welchem tag es liegt..... ich tippe ja mal auf rembrandt

denn ein model unter den default shadern und rembrandt gleichzeitig kompatibel zu machen halte ich für äusserst schwierig, wenn es also ein rembrandt tag ist der da schwierigkeiten macht, dann raus damit... und falls du doch nochmal in den genuß von rembrandt kommen solltest einfach ein seperates aircraft (hubichen) NUR für rembrandt gemacht



(übrigens ging der liveryselect bei meinem MP versuch bei der anneliese eben auch wieder nicht, kann mich aber erinnern des das doch schonmal ging herjee :cry: )

melde mich auf jeden bei neuren erkenntnissen.
Benutzeravatar
Goosnen
 
Beiträge: 233
Registriert: So Jul 07, 2013 7:38 pm
Callsign: goosnen

Re: Animationen und Liverywechsel über MP

Beitragvon dfaber » Fr Nov 14, 2014 7:30 am

Goosnen hat geschrieben:hab bei meinem schätzken auch hier und da ein paar raabenschwarze ecken wenn der modelshader aktiviert ist,


schwarze Ecken beim model-combined shader können auch von konkaven Flächen im Modell kommen. Der Shader geht beim berechnen der Erleuchtung davon aus das du konvexe (nach außen gewölbte Flächen hast. Bei nach innen gewölbten Flächen rendert er die schon mal falsch. Das passiert meist unabsichtlich wenn quadratische Faces im Modell nich in derselben Ebene liegen (die Fläche also "verbogen" ist). Oft reicht es schon die Quadrate in Dreiecke umzuwandeln. Reicht das nicht, kann man versuchen sie ein bißchen "konkaver" zu machen.

Goosnen hat geschrieben: soeben mit der anneliese ausprobiert aber hier ist es genau umgekehrt sie is raabenschwarz wenn der modelshader slider auf 0 stellung ist????


wenn ich mich recht erinnere, hat die Anneliese zusätzlich zu den Texturen, noch Material animationen die die Materialfarben direkt manipulieren. Diese müssen auch über MP übertragen werden, sonst sind die Werte für RGB, Ambient und diffuse im MP Modell "0" und somit schwarz.

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

Re: Animationen und Liverywechsel über MP

Beitragvon Sanni » Fr Nov 14, 2014 9:41 am

Und genau da steige ich aus. Wie da mit dem Multiplayergesummsel funktioniert verstehe ich einfach nicht. :oops:
Kann man da nicht irgendwo mal was nachlesen? Scheinbar sind diese Sachen so gut über verschiedene Dateien verteilt, dass ich das nicht nachvollziehen kann . . . *heul*
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 396
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni

Re: Animationen und Liverywechsel über MP

Beitragvon Goosnen » Fr Nov 21, 2014 11:49 pm

ruhich blut ;)
zusätzlich zu den Texturen, noch Material animationen die die Materialfarben direkt manipulieren


hört sich doch schonmal ganz gut an, jetzt musst die tags nurnoch finden (weiß auchnich genau was Detlef meint... aber:) wenn du die gefunden hast einfach wie ich oben beschrieben hab aussparen und es sollte klappen , ... hast du momentan ein aktuellen download link da? kann ja mal drüber schauen ob ich was finde...

was mir nur ein rätsel ist, des es einigen auffällt und einigen nicht.... liegt das am os, oder graka oder wie?
und danke Detlef für die konkarv erklärung! Japp das dürfte es wohl sein.

Grußnen
Benutzeravatar
Goosnen
 
Beiträge: 233
Registriert: So Jul 07, 2013 7:38 pm
Callsign: goosnen

Re: Animationen und Liverywechsel über MP

Beitragvon Sanni » So Nov 23, 2014 9:23 pm

Was das Thema angeht, brauchst du doch keinen aktuellen Link!
Da ich daran nichts geändert habe (außer ein paar Liveries) reicht schon der Code von Helijah, um festzustellen, was nicht stimmt.

Eigentlich kann nur der Teil der main.xml gemeint sein, in der die material-Animation mit diffuse, ambient, specular und emission. Der Code steht gleich in den obersten Zeilen.
Hier ist der path-Pfad aber: sim/model/livery, und sollte, so wie ich das Multiplayer-Gesummsel bis jetzt verstanden habe richtig sein.
I failed the Turing test
Benutzeravatar
Sanni
 
Beiträge: 396
Registriert: Do Sep 26, 2013 9:05 am
Wohnort: Niedersachsen
Callsign: D-Sanni


Zurück zu Sonstiges

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron