Board index FlightGear Development Aircraft

Announcing New UAV MQ-9 Predator B

Questions and discussion about creating aircraft. Flight dynamics, 3d models, cockpits, systems, animation, textures.

Re: Announcing New UAV MQ-9 Predator B

Postby Thorsten » Sat Jul 09, 2016 1:17 pm

Honestly, I think a very few people uses Bombable nowadays.


Well, since its distinguishing feature is that it works offline, how would you possibly know?

Also, I don't see the fun at dogfighting against AI when with the damage code you have the opportunity to deal with REAL pilots to test your/his skills.


Well, I bet you everyone who has, say, a family and can't simply go online for specific events but might find the odd half-hour for FG now and then between work and family obligations might disagree with the idea that MP is THE thing to do and see the value of AI systems. Not to mention all the people with crappy internet connections. As I said, there's a large community outside of what you're doing.

Also, conceptually bombable gives you AI ground targets, which I'd consider a severe design mistake including aircraft-side.

The damage code can be fitted in ANY FG aircraft without problems, just need a few tweaks from aircraft to aircraft.


Nope, it ain't working at all for the Space Shuttle for instance because that has a more realistic damage model with non-binary failure modes and explicit simulation of malfunctioning components and failure cascades (the kind of model I much prefer over on/off for components).

Maybe you're not interested in such a topic like dogfighting or similar military stuff and you're just defending what is the "normal way" to deal with such things in FG which is Bombable.


Or maybe, if you research my post history, you'll find that I have written some rather substantial concept studies about (combat) damage modeling way before you joined the forum.

If you just want to try it, just spawn around Nevada and we'll show you who it works when dogfighting.


I don't do MP, never have, never been interested, likely never will.

But if I would spawn in Nevada, you'd never catch me anyway, since my ride goes Mach 27. :mrgreen:
Thorsten
 
Posts: 11113
Joined: Mon Nov 02, 2009 8:33 am

Re: Announcing New UAV MQ-9 Predator B

Postby wlbragg » Sat Jul 09, 2016 3:15 pm

Well, I'm glad this information came out here.

These are two different concepts completely and don't necessarily have to be mutually exclusive. They each have their own place.

I see a MP protocol as very current. But there is a place for AI, especially for us old timers. Sounds to me like a weapons platform ship should include both systems to be as versatile and appealing to the widest range of users as possible.

Now the trick would be to make the two systems compatible with each other and able to distinguish when each is to be used.
Kansas(2-27-15)/Ohio/Midwest scenery development.
KEQA (2-27-15), 3AU, KRCP Airport Layout
User avatar
wlbragg
 
Posts: 4915
Joined: Sat Aug 25, 2012 11:31 pm
Location: Kansas (Tornado Alley), USA
Callsign: WC2020
Version: next
OS: Win10/Debain/nVGT640

Re: Announcing New UAV MQ-9 Predator B

Postby stuart » Mon Jul 11, 2016 3:39 pm

Hi all,

I've removed some posts, starting with Bomber's Flamebait and the subsequent degeneration.

Please try to stay on topic and report posts that are obviously flamebait rather than responding.

Bomber has received a 24 hour ban.

-Stuart
Last edited by stuart on Mon Jul 11, 2016 3:46 pm, edited 1 time in total.
Reason: Correct length of ban
G-MWLX
User avatar
stuart
Moderator
 
Posts: 1469
Joined: Wed Nov 29, 2006 9:56 am
Location: Edinburgh
Callsign: G-MWLX

Re: Announcing New UAV MQ-9 Predator B

Postby falafel » Tue Jul 12, 2016 11:00 am

What are the steps to promote its fdm? Anyone has any improvement to the Fdm?
falafel
 
Posts: 72
Joined: Mon Nov 09, 2009 10:42 am
Callsign: falafel
Version: 2
OS: Linux

Re: Announcing New UAV MQ-9 Predator B

Postby wlbragg » Tue Jul 12, 2016 5:02 pm

Anyone has any improvement to the Fdm?

I thought you already incorporated Erik's FDM?
Commit 516c2e5 ("Merged Erik's FDM model to MQ-9-JSBSim2", 2016-07-08)


Also, I have tried to post this question at least three times and either never hit the submit button or it failed to post. Is this suppose to be the MQ-1B Predator or the MQ-9A Reaper?
Kansas(2-27-15)/Ohio/Midwest scenery development.
KEQA (2-27-15), 3AU, KRCP Airport Layout
User avatar
wlbragg
 
Posts: 4915
Joined: Sat Aug 25, 2012 11:31 pm
Location: Kansas (Tornado Alley), USA
Callsign: WC2020
Version: next
OS: Win10/Debain/nVGT640

Re: Announcing New UAV MQ-9 Predator B

Postby PINTO » Tue Jul 12, 2016 5:51 pm

wlbragg wrote in Tue Jul 12, 2016 5:02 pm:Also, I have tried to post this question at least three times and either never hit the submit button or it failed to post. Is this suppose to be the MQ-1B Predator or the MQ-9A Reaper?


The Predator B is another name for the MQ-9.

From http://www.ga-asi.com/predator-b:
Designated MQ-9 Reaper® by its U.S. Air Force and Royal Air Force customers, the turboprop-powered, multi-mission Predator® B Remotely Piloted Aircraft (RPA) was developed with GA-ASI funding and provides significantly greater capabilities than Predator.


Also, the 3D model is of an MQ-9, not an MQ-1.

So, MQ-9.
Actively developing the MiG-21bis (github repo) (forum thread) (dev discord) (fg wiki)

http://opredflag.com is an active flightgear dogfighting community (using a system that isn’t bombable)
User avatar
PINTO
 
Posts: 945
Joined: Wed Oct 21, 2015 6:28 pm
Callsign: pinto
Version: 2016.3.0
OS: Win10

Re: Announcing New UAV MQ-9 Predator B

Postby wlbragg » Tue Jul 12, 2016 6:35 pm

Thanks, I went back to the article I was reading and it also clarified it. This does appear to be the correct designation.

The article broke it down as
MQ-1B Predator
and
MQ-9A Reaper aka Predator B (in the fine print)
Kansas(2-27-15)/Ohio/Midwest scenery development.
KEQA (2-27-15), 3AU, KRCP Airport Layout
User avatar
wlbragg
 
Posts: 4915
Joined: Sat Aug 25, 2012 11:31 pm
Location: Kansas (Tornado Alley), USA
Callsign: WC2020
Version: next
OS: Win10/Debain/nVGT640

Re: Announcing New UAV MQ-9 Predator B

Postby PINTO » Tue Jul 12, 2016 6:55 pm

Yeah when I was looking it up, it was a tad confusing as well.
Actively developing the MiG-21bis (github repo) (forum thread) (dev discord) (fg wiki)

http://opredflag.com is an active flightgear dogfighting community (using a system that isn’t bombable)
User avatar
PINTO
 
Posts: 945
Joined: Wed Oct 21, 2015 6:28 pm
Callsign: pinto
Version: 2016.3.0
OS: Win10

Re: Announcing New UAV MQ-9 Predator B

Postby J Maverick 16 » Sat Jul 16, 2016 1:17 pm

Flight testing right now the MQ-9 and I must say that with the latest FDM improvements it's easier to take off but yet it doesn't behave well at medium altitudes and the autopilot needs a serious improvement since it doesn't control well the drone. Also, fuel consumption has been messed up I think since I've done 1 hour of flight and I ran out of fuel when the Reaper should do way more than that.
Anyway, keep improving the FDM, it's getting a nice project! :D
Regards, Maverick
Breakin' the sound barrier every day!

Scenery designer, basic livery maker, aircraft developer (current projects: F-16, UH-60).
Using Thrustmaster FCS Flight Pack.
Follow me also on Instagram & Twitter @j_maverick16 and YouTube.
User avatar
J Maverick 16
 
Posts: 780
Joined: Sat Feb 01, 2014 6:26 pm
Location: Northern Italy
Callsign: J-Mav16, REBEL84
Version: 2019.1.1
OS: macOS 10.12

Re: Announcing New UAV MQ-9 Predator B

Postby falafel » Sat Jul 16, 2016 7:58 pm

Erik,
Can you help out on improving the FDM. If anyone else has a way to help, then you are more than welcome.
falafel
 
Posts: 72
Joined: Mon Nov 09, 2009 10:42 am
Callsign: falafel
Version: 2
OS: Linux

Re: Announcing New UAV MQ-9 Predator B

Postby erik » Sat Jul 16, 2016 8:47 pm

I'm sorry but I'm too busy with work at this time.
What is it specifically you want to improve?

Erik
erik
 
Posts: 1520
Joined: Thu Nov 01, 2007 1:41 pm

Re: Announcing New UAV MQ-9 Predator B

Postby falafel » Sun Jul 17, 2016 3:27 pm

Maverik complained that the airplane now is more responsive taking off, but there are issues when flying at medium altitude and that the fuel consume is too high. AOF should be above an hour.
Could you evaluate the FDM and correct as needed?
I have no experience in FDM. It would be nice to see this drone go from alpha to beta.
falafel
 
Posts: 72
Joined: Mon Nov 09, 2009 10:42 am
Callsign: falafel
Version: 2
OS: Linux

Re: Announcing New UAV MQ-9 Predator B

Postby erik » Mon Jul 18, 2016 1:35 pm

You seem to have forgotten to add the new Turboprop engine and Propeller in the Engines directory.
This also requires the new Nasal/Engine.nas file

And some uodated animations and sound configuration:
change engines/engine[0]/n2 to engines/engine[0]/n1

Erik
erik
 
Posts: 1520
Joined: Thu Nov 01, 2007 1:41 pm

Re: Announcing New UAV MQ-9 Predator B

Postby wlbragg » Tue Jul 19, 2016 8:27 pm

@falafel, I have combined my version of the "bombable version" incorporating Erik's FDM into the MQ-9 repo (locally). However, I do not have push rights to your repo. I can either wait for access from you or post it as a zip that you can fetch.

Keep in mind though that it is only the bombable version I upgraded. I have no use for the version that did not include bombable and really didn't want to duplicate my effort to incorporate Erik's FDM.

Please let me know if you have a preference in how you want me to post these files.
Kansas(2-27-15)/Ohio/Midwest scenery development.
KEQA (2-27-15), 3AU, KRCP Airport Layout
User avatar
wlbragg
 
Posts: 4915
Joined: Sat Aug 25, 2012 11:31 pm
Location: Kansas (Tornado Alley), USA
Callsign: WC2020
Version: next
OS: Win10/Debain/nVGT640

Re: Announcing New UAV MQ-9 Predator B

Postby pjedvaj » Fri Sep 30, 2016 11:31 am

I've updated the prop animations in MQ-9.xml file, you can push it to your repo;

MQ-9 is now also hosted on main SVN;

https://sourceforge.net/p/flightgear/fg ... raft/MQ-9/

Code: Select all
<?xml version="1.0"?>

<PropertyList  include="MQ-9-bombableinclude.xml">

   <!-- Model -->

   <path>MQ-9.ac</path>
   
   <offsets>
      <pitch-deg>-3</pitch-deg>   
      <heading-deg>0</heading-deg>
      <roll-deg>0</roll-deg>
      <x-m>0</x-m>
      <y-m>0</y-m>
      <z-m>0</z-m>
   </offsets>
   
    <!-- Invisible -->
   
    <animation>
        <type>select</type>
        <object-name>Sensor</object-name>
      <object-name>SensorMount1</object-name>
      <condition>
            <not>
                <property>sim/current-view/internal</property>
            </not>
        </condition>
    </animation>
   
   <!-- Stores -->

   <model>
      <name>Stores</name>
      <path>Aircraft/MQ-9/Models/Stores/Stores.xml</path>
   </model>

   <!-- Multiplayer sounds -->

   <sound>
      <path>Aircraft/MQ-9/Sounds/MP-Sounds.xml</path>
   </sound>
   
    <!-- Rembrandt transparent -->
   
    <effect>
        <inherits-from>Effects/model-transparent</inherits-from>
        <condition>
            <greater-than>
                <property>sim/multiplay/generic/float[6]</property>
                <value>9</value>
            </greater-than>
            <property>/sim/rendering/rembrandt/enabled</property>
           </condition>
      <object-name>Disk</object-name>
      <object-name>BladesBlur</object-name>
    </effect>
   
   <!-- Effects -->

   <model>
      <path>Aircraft/MQ-9/Models/Effects/Effects.xml</path>
   </model>

   <!-- Lights -->

   <model>
      <path>Aircraft/MQ-9/Models/Lights/LightPack.xml</path>
   </model>

   <nasal>
      <load><![CDATA[
         var root = cmdarg();
         var rootindex = root.getIndex();
         var mpPath = "/ai/models/multiplayer["~ rootindex ~"]/";

         var lightsPath = mpPath~"lightpack/"; #path to the property node, where all internal values are placed

         props.globals.initNode(mpPath~"sim/is-MP-Aircraft", 1, "BOOL");

         srand();
         #wherever you want to add randomization of time, use something like:  + rand()*0.05-0.025 (included by default where appropriate)


         #list of switches for lights - if you don't intend to use some light, assign it nil value instead, like whateverSwitch = nil; and you don't need to care about anything else
         #IMPORTANT: don't put / on the start of the string, it's already included in the mpPath property
         var navSwitch = mpPath~"controls/lighting/nav-lights-switch";
         var beaconSwitch = mpPath~"controls/lighting/beacon-switch";
         var strobeSwitch = mpPath~"controls/lighting/strobe-switch";
         var landingSwitch = mpPath~"controls/lighting/landing-lights-switch";
         var taxiSwitch = mpPath~"controls/lighting/taxi-light-switch";
         var probeSwitch = mpPath~"controls/lighting/probe-light-switch";
         var whiteSwitch = mpPath~"controls/lighting/white-light-switch";

         #switch this from 1 to 0 if you want to use advanced cyclical fading animation of the the nav lights instead of being stable on when the switch is on
         navStillOn = 1;


         #I need to set listener on some MP transferred properties; this doesn't seem to work well sometimes, so I mirror them to the original location on any change
         #This also simplifies work as I can use almost the same code for MP as is the local Nasal. Furthermore, I can use meaningful property names in the model XML files instead of referencing the MP properties.
         var mpVar = {
         new: func(propIn, propOut) {
         var m = { parents: [mpVar] };
         m.propIn = propIn;
         m.propOut = propOut;
         if(propIn==nil) return m;
         m.value = getprop(propIn);
         setprop(propOut, m.value);
         return m;
         },
         check: func {
         if(me.propIn==nil) return;
         var newValue = getprop(me.propIn);
         if(newValue != me.value) {
         setprop(me.propOut, newValue);
         me.value = newValue;
         #print("value of "~me.propOut~" changed: "~newValue);
         }
         },
         };
         #init any property copy object needed in this array (anything you need to transfer over MP, but you are using the original paths in your xmls)
         #also used for properties you are using a listener on, or properties which you maybe want to manipulate during the <unload>
         #if you're just using the pack, change the values according to the MP bindings in the -set.xml file
         #you don't need to delete the entries if the path is nil - it gets skipped automatically and the MP path is just ignored
         var mirrorValues = [
         mpVar.new(mpPath~"sim/multiplay/generic/int[7]", mpPath~"sim/crashed"),
         mpVar.new(mpPath~"sim/multiplay/generic/int[0]", navSwitch),
         mpVar.new(mpPath~"sim/multiplay/generic/int[1]", beaconSwitch),
         mpVar.new(mpPath~"sim/multiplay/generic/int[1]", strobeSwitch),
         mpVar.new(mpPath~"sim/multiplay/generic/int[2]", landingSwitch),
         mpVar.new(mpPath~"sim/multiplay/generic/int[3]", taxiSwitch),
         mpVar.new(mpPath~"sim/multiplay/generic/int[3]", probeSwitch),
         mpVar.new(mpPath~"sim/multiplay/generic/int[0]", whiteSwitch),
         ];
         #loop at the default MP transfer frequency (10Hz)
         var mirrorTimer = maketimer(0.1, func {
         foreach(var mir; mirrorValues) {
         mir.check();
         }
         });
         mirrorTimer.start();



         #### NAV LIGHTS ####

         #class for a periodic fade in/out animation - for flashing, use rather standard aircraft.light.new(), as in Beacon and Strobe section
         var lightCycle = {
         #constructor
         new: func(propSwitch, propOut) {
         m = { parents: [lightCycle] };
         props.globals.initNode(propOut, 0, "DOUBLE");
         props.globals.initNode(propSwitch, 1, "BOOL");
         m.fadeIn = 0.4 + rand()*0.05-0.025; #fade in time
         m.fadeOut = 0.4 + rand()*0.05-0.025; #fade out time
         m.stayOn = 1.5 + rand()*0.05-0.025; #stable on period
         m.stayOff = 1 + rand()*0.05-0.025; #stable off period
         m.turnOff = 0.12; #fade out time when turned off
         m.phase = 0; #phase to be run on next timer call: 0 -> fade in, 1 -> stay on, 2 -> fade out, 3 -> stay off
         m.cycleTimer = maketimer(0.1, func {
         if(getprop(propSwitch)) {
         if(m.phase == 0) {
         interpolate(propOut, 1, m.fadeIn);
         m.phase = 1;
         m.cycleTimer.restart(m.fadeIn);
         }
         else if(m.phase == 1){
         m.phase = 2;
         m.cycleTimer.restart(m.stayOn);
         }
         else if(m.phase == 2){
         interpolate(propOut, 0, m.fadeOut);
         m.phase = 3;
         m.cycleTimer.restart(m.fadeOut);
         }
         else if(m.phase == 3){
         m.phase = 0;
         m.cycleTimer.restart(m.stayOff);
         }
         }
         else {
         interpolate(propOut, 0, m.turnOff); #kills any currently ongoing interpolation
         m.phase = 0;
         }
         });
         m.cycleTimer.singleShot = 1;
         if(propSwitch==nil) {
         m.listen = nil;
         return m;
         }
         m.listen = setlistener(propSwitch, func{m.cycleTimer.restart(0);}); #handle switch changes
         m.cycleTimer.restart(0); #start the looping
         return m;
         },
         #destructor
         del: func {
         if(me.listen!=nil) removelistener(me.listen);
         me.cycleTimer.stop();
         },
         };

         #By default, the switch property is initialized to 1 (only if no value is already assigned). Don't change the class implementation! To override this, set the property manually. You don't need to care if any other code already does it for you.
         var navLights = nil;
         if(!navStillOn) {
         navLights = lightCycle.new(navSwitch, lightsPath~"nav-lights-intensity");
         ### Uncomment and tune those to customize times ###
         #navLights.fadeIn = 0.4; #fade in time
         #navLights.fadeOut = 0.4; #fade out time
         #navLights.stayOn = 3 + rand()*0.05-0.025; #stable on period
         #navLights.stayOff = 0.6; #stable off period
         #navLights.turnOff = 0.12; #fade out time when turned off
         }


         ### BEACON ###
         var beacon = nil;
         if(beaconSwitch!=nil) {
         props.globals.initNode(beaconSwitch, 1, "BOOL");
         beacon = aircraft.light.new(lightsPath~"beacon-state",
         [0.0, 1.0 + rand()*0.05-0.025], beaconSwitch);
         }


         ### STROBE ###
         var strobe = nil;
         if(strobeSwitch!=nil) {
         props.globals.initNode(strobeSwitch, 1, "BOOL");
         strobe = aircraft.light.new(lightsPath~"strobe-state",
         [0.0, 0.87 + rand()*0.05-0.025], strobeSwitch);
         }


         ### LIGHT FADING ###

         #class for controlling fade in/out behavior - propIn is a control property (handled as a boolean) and propOut is interpolated
         #all light brightness animations in xmls depend on propOut (Rembrandt brightness, material emission, flares transparency, ...)
         var lightFadeInOut = {
         #constructor
         new: func(propSwitch, propOut) {
         m = { parents: [lightFadeInOut] };
         m.fadeIn = 0.3; #some sane defaults
         m.fadeOut = 0.4;
         if(propSwitch==nil) {
         m.listen = nil;
         return m;
         }
         props.globals.initNode(propSwitch, 1, "BOOL");
         m.isOn = getprop(propSwitch);
         props.globals.initNode(propOut, m.isOn, "DOUBLE");
         m.listen = setlistener(propSwitch,
         func {
         if(m.isOn and !getprop(propSwitch)) {
         interpolate(propOut, 0, m.fadeOut);
         m.isOn = 0;
         }
         if(!m.isOn and getprop(propSwitch)) {
         interpolate(propOut, 1, m.fadeIn);
         m.isOn = 1;
         }
         }
         );
         return m;
         },
         #destructor
         del: func {
         if(me.listen!=nil) removelistener(me.listen);
         },
         };

         fadeLanding = lightFadeInOut.new(landingSwitch, lightsPath~"landing-lights-intensity");
         fadeTaxi = lightFadeInOut.new(taxiSwitch, lightsPath~"taxi-light-intensity");
         fadeProbe = lightFadeInOut.new(probeSwitch, lightsPath~"probe-light-intensity");
         fadeWhite = lightFadeInOut.new(whiteSwitch, lightsPath~"white-light-intensity");
         if(navStillOn) {
         navLights = lightFadeInOut.new(navSwitch, lightsPath~"nav-lights-intensity");
         navLights.fadeIn = 0.1;
         navLights.fadeOut = 0.12;
         }
         #manipulate times if defaults don't fit your needs:
         #fadeLanding.fadeIn = 0.5;
         #fadeLanding.fadeOut = 0.8;


         ### the rest of your model load embedded Nasal code ###

         ]]>
      </load>
      <unload>
         stopFire();
         disintegrated = 0;
         removelistener(listenCrash);

         #prevent multiple timers and listeners from running and fighting on next connect
         #cleanly destroy MP property mirroring
         mirrorTimer.stop();
         mirrorTimer = nil;
         mirrorValues = nil;

         #cleanly destroy nav lights
         if(navStillOn) {
         navLights.del();
         }
         else {
         if(navSwitch!=nil) setprop(navSwitch, 0);
         navLights.del();
         if(navSwitch!=nil) navLights.cycleTimer = nil;
         navLights = nil;
         }

         #cleanly destroy beacon
         if(beaconSwitch!=nil) setprop(beaconSwitch, 0);
         beacon.del();
         beacon = nil;

         #cleanly destroy strobe
         if(strobeSwitch!=nil) setprop(strobeSwitch, 0);
         strobe.del();
         strobe = nil;

         #cleanly destroy light fade in/out animation objects
         fadeLanding.del();
         fadeTaxi.del();
         fadeProbe.del();
         fadeWhite.del();

         ### the rest of your model unload embedded Nasal code ###
      </unload>
   </nasal>

   <!-- Normal Map -->

   <effect>
      <inherits-from>Aircraft/MQ-9/Models/Effects/Normal</inherits-from>
      <object-name>MQ-9</object-name>
   </effect>

   <!-- Specular Map -->
   
   <effect>
      <inherits-from>Aircraft/MQ-9/Models/Effects/Specular</inherits-from>
      <object-name>MQ-9</object-name>
   </effect>

   <!-- Liveries -->

   <nasal>
      <load>
         var livery_update = aircraft.livery_update.new("Aircraft/MQ-9/Models/Liveries");
      </load>
      <unload>
         livery_update.stop();
      </unload>
   </nasal>

   <animation>
      <type>material</type>
      <object-name>MQ-9</object-name>
      <property-base>sim/model/livery</property-base>
      <texture-prop>texture</texture-prop>
      <texture>Aircraft/MQ-9/Models/Liveries/Default.jpg</texture>
   </animation>
   
   <animation>
      <type>material</type>
      <object-name>Disk</object-name>
      <texture-prop>texture</texture-prop>
      <texture>Aircraft/MQ-9/Models/Liveries/Disk.png</texture>
   </animation>

   <animation>
      <type>material</type>
      <object-name>BladesBlur</object-name>
      <texture-prop>texture</texture-prop>
      <texture>Aircraft/MQ-9/Models/Liveries/Disk.png</texture>
   </animation>

   <!-- Animations -->
   
   <!-- Ailerons -->
   
   <animation>
      <type>rotate</type>
      <object-name>AileronR</object-name>
      <property>surface-positions/left-aileron-pos-norm</property>
      <factor>20</factor>
      <axis>   
         <x1-m>  0.6977</x1-m>
         <y1-m>  5.5070</y1-m>
         <z1-m>  0.4481</z1-m>
         <x2-m>  0.6255</x2-m>
         <y2-m>  8.8878</y2-m>
         <z2-m>  0.4392</z2-m>
      </axis>
   </animation>

   <animation>
      <type>rotate</type>
      <object-name>AileronL</object-name>
      <property>surface-positions/left-aileron-pos-norm</property>
      <factor>20</factor>
      <axis>   
         <x1-m>  0.6977</x1-m>
         <y1-m> -5.5070</y1-m>
         <z1-m>  0.4481</z1-m>
         <x2-m>  0.6255</x2-m>
         <y2-m> -8.8878</y2-m>
         <z2-m>  0.4392</z2-m>
      </axis>
   </animation>
   
   <!-- Flaps -->
   
   <animation>
      <type>rotate</type>
      <object-name>FlapR2</object-name>
      <property>surface-positions/flap-pos-norm</property>
      <factor>40</factor>
      <axis>   
         <x1-m>  0.7273</x1-m>
         <y1-m>  2.5708</y1-m>
         <z1-m>  0.4576</z1-m>
         <x2-m>  0.6968</x2-m>
         <y2-m>  5.5070</y2-m>
         <z2-m>  0.4495</z2-m>
      </axis>
   </animation>

   <animation>
      <type>rotate</type>
      <object-name>FlapL2</object-name>
      <property>surface-positions/flap-pos-norm</property>
      <factor>-40</factor>
      <axis>   
         <x1-m>  0.7273</x1-m>
         <y1-m> -2.5708</y1-m>
         <z1-m>  0.4576</z1-m>
         <x2-m>  0.6968</x2-m>
         <y2-m> -5.5070</y2-m>
         <z2-m>  0.4495</z2-m>
      </axis>
   </animation>
   
   <animation>
      <type>rotate</type>
      <object-name>FlapR1</object-name>
      <property>surface-positions/flap-pos-norm</property>
      <factor>40</factor>
      <axis>
         <x1-m>  0.7302</x1-m>
         <y1-m>  0.7240</y1-m>
         <z1-m>  0.4589</z1-m>
         <x2-m>  0.7196</x2-m>
         <y2-m>  2.5708</y2-m>
         <z2-m>  0.4545</z2-m>
      </axis>
   </animation>

   <animation>
      <type>rotate</type>
      <object-name>FlapL1</object-name>
      <property>surface-positions/flap-pos-norm</property>
      <factor>-40</factor>
      <axis>   
         <x1-m>  0.7302</x1-m>
         <y1-m> -0.7240</y1-m>
         <z1-m>  0.4589</z1-m>
         <x2-m>  0.7196</x2-m>
         <y2-m> -2.5708</y2-m>
         <z2-m>  0.4545</z2-m>
      </axis>
   </animation>
   
   <!-- Elevators -->
   
   <animation>
      <type>rotate</type>
      <object-name>ElevatorR</object-name>
      <property>surface-positions/elevator-pos-norm</property>
      <factor>-20</factor>
      <axis>   
         <x1-m> 3.4018</x1-m>
         <y1-m> 0.4181</y1-m>
         <z1-m> 0.6136</z1-m>
         <x2-m> 3.5428</x2-m>
         <y2-m> 2.9323</y2-m>
         <z2-m> 2.3741</z2-m>
      </axis>
   </animation>
   
   <animation>
      <type>rotate</type>
      <object-name>ElevatorL</object-name>
      <property>surface-positions/elevator-pos-norm</property>
      <factor>20</factor>
      <axis>   
         <x1-m> 3.4018</x1-m>
         <y1-m>-0.4181</y1-m>
         <z1-m> 0.6136</z1-m>
         <x2-m> 3.5428</x2-m>
         <y2-m>-2.9323</y2-m>
         <z2-m> 2.3741</z2-m>
      </axis>
   </animation>
   
   <!-- Rudder -->
   
   <animation>
      <type>rotate</type>
      <object-name>Rudder</object-name>
      <property>surface-positions/rudder-pos-norm</property>
      <factor>20</factor>
      <axis>   
         <x1-m> 3.3652</x1-m>
         <y1-m> 0.0000</y1-m>
         <z1-m> 0.2360</z1-m>
         <x2-m> 3.4900</x2-m>
         <y2-m> 0.0000</y2-m>
         <z2-m>-0.7541</z2-m>
      </axis>
   </animation>
   
   <!-- Landing gear -->
   
   <animation>
      <type>rotate</type>
      <object-name>WheelN</object-name>
      <object-name>JawN</object-name>
      <property>surface-positions/rudder-pos-norm</property>
      <factor>-20</factor>
      <center>
         <x-m>-2.9145</x-m>
         <y-m> 0.0000</y-m>
         <z-m>-1.2683</z-m>
      </center>
      <axis>
         <x>0.0</x>
         <y>0.0</y>
         <z>1.0</z>
      </axis>
   </animation>
   
   <animation>
      <type>rotate</type>
      <object-name>WheelN</object-name>
      <object-name>JawN</object-name>
      <object-name>Strut1N</object-name>
      <object-name>Strut2N</object-name>
      <object-name>Scissor1N</object-name>
      <object-name>Scissor2N</object-name>
      <property>gear/gear[1]/position-norm</property>
      <factor>130</factor>
      <offset-deg>-130</offset-deg>
      <center>
         <x-m>-2.0705</x-m>
         <y-m> 0.0000</y-m>
         <z-m> 0.1760</z-m>
      </center>
      <axis>
         <x>0.0</x>
         <y>1.0</y>
         <z>0.0</z>
      </axis>
   </animation>
   
   <animation>
      <type>rotate</type>
      <object-name>WheelL</object-name>
      <object-name>StrutL</object-name>
      <property>gear/gear[1]/position-norm</property>
      <factor>98</factor>
      <offset-deg>-98</offset-deg>
      <axis>
         <x1-m> 0.0559</x1-m>
         <y1-m>-0.3306</y1-m>
         <z1-m> 0.3248</z1-m>   
         <x2-m> 0.0559</x2-m>
         <y2-m>-0.2413</y2-m>
         <z2-m> 0.2317</z2-m>
      </axis>
   </animation>
   
   <animation>
      <type>rotate</type>
      <object-name>WheelR</object-name>
      <object-name>StrutR</object-name>
      <property>gear/gear[2]/position-norm</property>
      <factor>-98</factor>
      <offset-deg>98</offset-deg>
      <axis>
         <x1-m> 0.0559</x1-m>
         <y1-m> 0.3306</y1-m>
         <z1-m> 0.3248</z1-m>   
         <x2-m> 0.0559</x2-m>
         <y2-m> 0.2413</y2-m>
         <z2-m> 0.2317</z2-m>
      </axis>
   </animation>
   
   <!-- Gear Compression -->

   <animation>
      <type>translate</type>
      <object-name>WheelN</object-name>
      <object-name>JawN</object-name>
      <object-name>Scissor1N</object-name>
      <object-name>Scissor2N</object-name>
      <object-name>Strut1N</object-name>
      <property>gear/gear[0]/compression-norm[0]</property>
      <factor>0.60</factor>
      <axis>
         <x1-m>-2.7232</x1-m>
         <y1-m> 0.0000</y1-m>
         <z1-m>-0.6690</z1-m>   
         <x2-m>-2.5221</x2-m>
         <y2-m> 0.0000</y2-m>
         <z2-m>-0.4077</z2-m>
      </axis>
   </animation>

   <animation>
      <type>translate</type>
      <object-name>WheelR</object-name>
      <object-name>StrutR</object-name>
      <property>gear/gear[2]/compression-norm[0]</property>
      <factor>0.1</factor>
      <axis>
         <x1-m>-0.0728</x1-m>
         <y1-m> 1.7594</y1-m>
         <z1-m>-1.0981</z1-m>   
         <x2-m>-0.0728</x2-m>
         <y2-m> 1.7594</y2-m>
         <z2-m>-0.8998</z2-m>
      </axis>
   </animation>

   <animation>
      <type>translate</type>
      <object-name>WheelL</object-name>
      <object-name>StrutL</object-name>
      <property>gear/gear[1]/compression-norm[0]</property>
      <factor>0.1</factor>
      <axis>
         <x1-m>-0.0728</x1-m>
         <y1-m>-1.7594</y1-m>
         <z1-m>-1.0981</z1-m>   
         <x2-m>-0.0728</x2-m>
         <y2-m>-1.7594</y2-m>
         <z2-m>-0.8998</z2-m>
      </axis>
   </animation>
   
   <!-- Propeller -->
   
   <animation>
      <type>spin</type>
      <object-name>Propeller</object-name>
      <object-name>Blades</object-name>
      <property>engines/engine[0]/n1</property>
      <factor>3</factor>
      <center>
         <x-m>4.4823</x-m>
         <y-m>0.0000</y-m>
         <z-m>0.7577</z-m>
      </center>
      <axis>
         <x>1.0</x>
         <y>0.0</y>
         <z>0.0</z>
      </axis>
   </animation>
   
   <animation>
      <type>select</type>
      <object-name>Blades</object-name>
      <condition>
         <less-than>
            <property>engines/engine[0]/n1</property>
            <value>50.0001</value>
         </less-than>
      </condition>
   </animation>
   
   <animation>
      <type>select</type>
      <object-name>BladesFlat</object-name>
      <condition>
         <greater-than>
            <property>engines/engine[0]/n1</property>
            <value>50.000</value>
         </greater-than>
         <less-than>
            <property>engines/engine[0]/n1</property>
            <value>70.0001</value>
         </less-than>
      </condition>
   </animation>

   <animation>
      <type>spin</type>
      <object-name>BladesFlat</object-name>
      <property>engines/engine[0]/n1</property>
      <center>
         <x-m>4.4823</x-m>
         <y-m>0.0000</y-m>
         <z-m>0.7577</z-m>
      </center>
      <axis>
         <x>1.0</x>
         <y>0.0</y>
         <z>0.0</z>
      </axis>
   </animation>

   <animation>
      <type>select</type>
      <object-name>Disk</object-name>
      <condition>
         <greater-than>
            <property>engines/engine[0]/n1</property>
            <value>70.0000</value>
         </greater-than>
      </condition>
   </animation>

   <animation>
      <type>spin</type>
      <object-name>Disk</object-name>
      <property>engines/engine[0]/n1</property>
      <factor>.5</factor>   
      <center>
         <x-m>4.4823</x-m>
         <y-m>0.0000</y-m>
         <z-m>0.7577</z-m>
      </center>
      <axis>
         <x>1.0</x>
         <y>0.0</y>
         <z>0.0</z>
      </axis>
   </animation>
   
   <!-- Sensor -->

   <animation>
      <type>rotate</type>
      <object-name>Sensor</object-name>
      <object-name>SensorMount1</object-name>
      <property>sim/model/turret[0]/heading</property>
      <axis>
         <x> 0</x>
         <y> 0</y>
         <z>-1</z>
      </axis>
      <center>
         <x-m>-4.1425</x-m>
         <y-m> 0.0000</y-m>
         <z-m>-0.0697</z-m>
      </center>
   </animation>

   <animation>
      <type>rotate</type>
      <object-name>Sensor</object-name>
      <property>sim/model/turret[0]/pitch</property>
      <offset-deg>0</offset-deg>
      <axis>
         <x>0</x>
         <y>1</y>
         <z>0</z>
      </axis>
      <center>
         <x-m>-4.1425</x-m>
         <y-m> 0.0000</y-m>
         <z-m>-0.0697</z-m>
      </center>
   </animation>

</PropertyList>


Sounds.xml

Code: Select all
<?xml version="1.0"?>

<PropertyList>

   <fx>

      <engine>
         <name>Engine starting</name>
         <mode>looped</mode>
         <path>Aircraft/MQ-9/Sounds/Startup.wav</path>
         <condition>
            <property>engines/engine[0]/starter</property>
         </condition>
         <volume>
            <property>engines/engine[0]/n1</property>
            <type>log</type>
            <factor>0.6</factor>
            <offset>0.5</offset>
         </volume>
         <volume>
            <property>sim/sound/cabin</property>
         </volume>
         <pitch>
            <property>engines/engine[0]/n1</property>
            <type>log</type>
            <factor>0.4</factor>
            <offset>0.1</offset>
         </pitch>
      </engine>

      <engine>
         <name>Engine starting plus</name>
         <mode>once</mode>
         <path>Sounds/turbine_start.wav</path>
         <condition>
            <property>engines/engine[0]/starter</property>
         </condition>
         <volume>
            <property>sim/sound/cabin</property>
            <factor>0.4</factor>
         </volume>
      </engine>

      <engine>
         <name>Engine running</name>
         <mode>looped</mode>
         <path>Aircraft/MQ-9/Sounds/Running.wav</path>
         <condition>
            <or>
               <greater-than>
                  <property>engines/engine[0]/n1</property>
                  <value type="double">19.9</value>
               </greater-than>
               <and>
                  <not>
                     <property>engines/engine[0]/starter</property>
                  </not>
                  <greater-than>
                     <property>engines/engine[0]/n1</property>
                     <value type="double">1</value>
                  </greater-than>
               </and>
            </or>
         </condition>
         <volume>
            <property>engines/engine[0]/n1</property>
            <type>log</type>
            <factor>0.4</factor>
            <offset>0.2</offset>
         </volume>
         <volume>
            <property>sim/sound/E_volume</property>
         </volume>
         <pitch>
            <property>engines/engine[0]/n1</property>
            <factor>0.004</factor>
            <offset>0.8</offset>
         </pitch>
      </engine>

      <engine>
         <name>Engine running plus</name>
         <mode>looped</mode>
         <path>Aircraft/MQ-9/Sounds/Running.wav</path>
         <condition>
            <property>engines/engine[0]/running</property>
         </condition>
         <volume>
            <property>engines/engine[0]/n1</property>
            <type>log</type>
            <factor>0.6</factor>
            <offset>0.5</offset>
         </volume>
         <volume>
            <property>sim/sound/cabin</property>
         </volume>
         <pitch>
            <property>engines/engine[0]/n1</property>
            <type>log</type>
            <factor>0.4</factor>
            <offset>0.1</offset>
         </pitch>
      </engine>

      <tire-rumble>
         <name>Tire rumble</name>
         <mode>looped</mode>
         <path>Sounds/Rumble.wav</path>
         <condition>
            <or>
               <property>/gear/gear[0]/wow</property>
               <property>/gear/gear[1]/wow</property>
               <property>/gear/gear[2]/wow</property>
            </or>
         </condition>
         <volume>
            <property>/velocities/groundspeed-kt</property>
            <factor>0.004</factor>
            <max>0.7</max>
         </volume>
      </tire-rumble>


      <gear>
         <name>Gear</name>
         <mode>in-transit</mode>
         <path>Sounds/gear.wav</path>
         <property>/gear/gear[0]/position-norm</property>
         <pitch>
            <internal>dt_play</internal>
            <offset>1.0</offset>
            <factor>-0.04</factor>
         </pitch>
      </gear>

      <gear-lock>
         <name>Gear lock</name>
         <path>Sounds/gear-lck.wav</path>
         <condition>
            <equals>
               <property>/gear/gear[0]/position-norm</property>
               <value>0</value>
            </equals>
         </condition>
      </gear-lock>

      <flap>
         <name>Flaps</name>
         <mode>in-transit</mode>
         <path>Sounds/flaps.wav</path>
         <property>/surface-positions/flap-pos-norm</property>
         <volume>
            <offset>0.25</offset>
         </volume>
      </flap>

      <air-brake>
         <name>Airbrake</name>
         <mode>in-transit</mode>
         <path>Sounds/flaps.wav</path>
         <property>surface-positions/speedbrake-pos-norm</property>
         <volume>
            <factor>0.25</factor>
         </volume>
      </air-brake>

      <squeal>
         <name>Squeal</name>
         <path>Sounds/squeal.wav</path>
         <condition>
            <or>
               <property>/gear/gear[0]/wow</property>
               <property>/gear/gear[1]/wow</property>
               <property>/gear/gear[2]/wow</property>
            </or>
         </condition>
         <volume>
            <property>/velocities/speed-down-fps</property>
            <factor>0.05</factor>
         </volume>
         <volume>
            <property>/velocities/airspeed-kt</property>
            <factor>0.01</factor>
         </volume>
         <volume>
            <internal>dt_stop</internal>
            <factor>0.05</factor>
            <max>1.0</max>
         </volume>
         <pitch>
            <property>/velocities/airspeed-kt</property>
            <factor>0.0025</factor>
            <offset>1.2</offset>
         </pitch>
      </squeal>

      <wind>
         <name>Wind</name>
         <mode>looped</mode>
         <path>Sounds/wind.wav</path>
         <property>/velocities/airspeed-kt</property>
         <volume>
            <property>/position/altitude-ft</property>
            <factor>-0.000015</factor>
            <offset>1.0</offset>
            <min>0.1</min>
            <max>1.0</max>
         </volume>
         <volume>
            <property>/velocities/airspeed-kt</property>
            <factor>0.0015</factor>
            <min>0.03</min>
            <max>0.25</max>
         </volume>
         <pitch>
            <property>/velocities/airspeed-kt</property>
            <factor>0.01</factor>
            <offset>1.25</offset>
         </pitch>
      </wind>

      <buffet>
         <name>Alpha Buffet</name>
         <mode>looped</mode>
         <condition>
            <greater-than>
               <property>/orientation/alpha-deg</property>
               <value>10.0</value>
            </greater-than>
         </condition>
         <path>Sounds/rumble.wav</path>
         <volume>
            <property>/orientation/alpha-deg</property>
            <type>abs</type>
            <factor>0.02</factor>
            <max>0.8</max>
         </volume>
         <pitch>
            <property>/orientation/alpha-deg</property>
            <type>abs</type>
            <factor>0.05</factor>
         </pitch>
      </buffet>

      <crash>
         <name>Crash</name>
         <condition>
         <equals>
            <property>sim/crashed</property>
            <value type="bool">true</value>
         </equals>
         </condition>
         <path>Sounds/crash.wav</path>
      </crash>
   
      <crash>
         <name>Missile 1</name>
         <condition>
         <property>fdm/jsbsim/systems/armament/station1/released</property>
         </condition>
         <path>Aircraft/MQ-9/Sounds/Missile.wav</path>
      </crash>
       
      <crash>
         <name>Missile 2</name>
         <condition>
         <property>fdm/jsbsim/systems/armament/station2/released</property>
         </condition>
         <path>Aircraft/MQ-9/Sounds/Missile.wav</path>
      </crash>
      
      <crash>
         <name>Missile 5</name>
         <condition>
         <property>fdm/jsbsim/systems/armament/station5/released</property>
         </condition>
         <path>Aircraft/MQ-9/Sounds/Missile.wav</path>
      </crash>
      
      <crash>
         <name>Missile 6</name>
         <condition>
         <property>fdm/jsbsim/systems/armament/station6/released</property>
         </condition>
         <path>Aircraft/MQ-9/Sounds/Missile.wav</path>
      </crash>

      <crash>
         <name>Bomb 3</name>
         <condition>
         <property>fdm/jsbsim/systems/armament/station3/released</property>
         </condition>
         <path>Aircraft/MQ-9/Sounds/Bomb.wav</path>
      </crash>

      <crash>
         <name>Bomb 4</name>
         <condition>
         <property>fdm/jsbsim/systems/armament/station4/released</property>
         </condition>
         <path>Aircraft/MQ-9/Sounds/Bomb.wav</path>
      </crash>
      
   </fx>

</PropertyList>


MP-Sounds.xml

Code: Select all
<?xml version="1.0"?>

<PropertyList>

   <fx>

      <engine>
         <name>Engine starting</name>
         <mode>looped</mode>
         <path>Aircraft/MQ-9/Sounds/Startup.wav</path>
         <condition>
            <property>engines/engine[0]/starter</property>
         </condition>
         <volume>
            <property>engines/engine[0]/n1</property>
            <type>log</type>
            <factor>0.6</factor>
            <offset>0.5</offset>
         </volume>
         <volume>
            <property>sim/sound/cabin</property>
         </volume>
         <pitch>
            <property>engines/engine[0]/n1/property>
            <type>log</type>
            <factor>0.4</factor>
            <offset>0.1</offset>
         </pitch>
      </engine>

      <engine>
         <name>Engine starting plus</name>
         <mode>once</mode>
         <path>Sounds/turbine_start.wav</path>
         <condition>
            <property>engines/engine[0]/starter</property>
         </condition>
         <volume>
            <property>sim/sound/cabin</property>
            <factor>0.4</factor>
         </volume>
      </engine>

      <engine>
         <name>Engine running</name>
         <mode>looped</mode>
         <path>Aircraft/MQ-9/Sounds/Running.wav</path>
         <condition>
            <or>
               <greater-than>
                  <property>engines/engine[0]/n1</property>
                  <value type="double">19.9</value>
               </greater-than>
               <and>
                  <not>
                     <property>engines/engine[0]/starter</property>
                  </not>
                  <greater-than>
                     <property>engines/engine[0]/n1</property>
                     <value type="double">1</value>
                  </greater-than>
               </and>
            </or>
         </condition>
         <volume>
            <property>engines/engine[0]/n1</property>
            <type>log</type>
            <factor>0.4</factor>
            <offset>0.2</offset>
         </volume>
         <volume>
            <property>sim/sound/E_volume</property>
         </volume>
         <pitch>
            <property>engines/engine[0]/n1</property>
            <factor>0.004</factor>
            <offset>0.8</offset>
         </pitch>
      </engine>

      <engine>
         <name>Engine running plus</name>
         <mode>looped</mode>
         <path>Aircraft/MQ-9/Sounds/Running.wav</path>
         <condition>
            <property>engines/engine[0]/running</property>
         </condition>
         <volume>
            <property>engines/engine[0]/n1</property>
            <type>log</type>
            <factor>0.6</factor>
            <offset>0.5</offset>
         </volume>
         <volume>
            <property>sim/sound/cabin</property>
         </volume>
         <pitch>
            <property>engines/engine[0]/n1</property>
            <type>log</type>
            <factor>0.4</factor>
            <offset>0.1</offset>
         </pitch>
      </engine>

      <engine>
         <name>Turbine</name>
         <mode>looped</mode>
         <path>Sounds/turbine_loop.wav</path>
         <property>engines/engine[0]/n1</property>
         <volume>
            <property>sim/sound/cabin</property>
            <factor>0.3</factor>
         </volume>
         <pitch>
            <property>engines/engine[0]/n1</property>
            <offset>1.0</offset>
            <factor>0.001</factor>
         </pitch>
      </engine>

      <engine>
         <name>Engine off</name>
         <mode>once</mode>
         <path>Sounds/turbine_shutdown.wav</path>
         <condition>
            <property>engines/engine[0]/cutoff</property>
         </condition>
         <volume>
            <property>sim/sound/cabin</property>
            <factor>0.3</factor>
         </volume>
      </engine>

      <squeal>
         <name>Squeal</name>
         <path>Sounds/squeal.wav</path>
         <condition>
            <or>
               <property>gear/gear[0]/wow</property>
               <property>gear/gear[1]/wow</property>
               <property>gear/gear[2]/wow</property>
            </or>
         </condition>
         <volume>
            <property>velocities/speed-down-fps</property>
            <factor>0.05</factor>
         </volume>
         <volume>
            <property>velocities/airspeed-kt</property>
            <factor>0.01</factor>
         </volume>
         <volume>
            <internal>dt_stop</internal>
            <factor>0.05</factor>
            <max>1.0</max>
         </volume>
         <pitch>
            <property>velocities/airspeed-kt</property>
            <factor>0.0025</factor>
            <offset>1.2</offset>
         </pitch>
      </squeal>

      <crash>
         <name>Crash</name>
         <condition>
         <equals>
            <property>sim/crashed</property>
            <value type="bool">true</value>
         </equals>
         </condition>
         <path>Sounds/crash.wav</path>
      </crash>

   </fx>

</PropertyList>
Retired
User avatar
pjedvaj
 
Posts: 682
Joined: Thu Mar 18, 2010 8:32 pm

PreviousNext

Return to Aircraft

Who is online

Users browsing this forum: bugman, CaptainCrazyAviation, F-TLS13, Google [Bot], Honzaku and 3 guests