topic: Aircraft Development

Updating Aircraft for X-Plane 11.30

Aircraft saved in Plane Maker version 11.30 will be opted into a few new systems & requirements. Aircraft will need to be updated accordingly. If you wish to avoid updating your aircraft, do NOT re-save it in Plane Maker 11.30.

Stabilizer

Stabilizer wash was severely broken for high aspect ratio wing aircraft like fighters in older versions. This is the only exception to the re-save rule–it is fixed in 11.30 and is applied whether or not your aircraft is re-saved in 11.30. This fix was mandatory for fighter aircraft; most other planes should not see a difference.

Oxygen System

It is now possible to equip high-flying aircraft with an oxygen system rather than or in addition to the pressurized cabin, to allow realistic black-out behavior also with unpressurized aircraft. The new oxygen system is mandatory–if you do not want to use it, override the pressurization system with the new override dataref. See the article “The X-Plane oxygen system” for more information.

Lights

Lights attached to cockpit object of type glass (in or out) used to light everything. This is corrected for 11.30. If your aircraft loses interior lights upon re-save in Plane Maker 11.30, check your cockpit object’s lighting settings in Plane Maker.

Cockpit obj

The cockpit.obj is no longer a special object. It is attached to the plane in the Miscellaneous Objects screen in Plane Maker 11.30. Aircraft will be automatically upgraded upon re-save in Plane Maker 11.30. For more information, see the “Attaching 3-D Objects” section of the Plane Maker manual.

Cockpit Prefill

X-Plane 11.26 had a bug where it ignored cockpit prefill settings. 11.30 correctly handles prefill options so you will need to review your prefill settings to ensure they are set up correctly.

Autopilots

Version 11.30 offers to equip planes with preconfigured autopilots, in addition to the many configurable options of previous X-Plane versions. See the articles “X-Plane autopilot params” and “Preconfigured autopilots and other autopilot changes in 11.30” for more information.

Icing Systems

X-Plane simulates ice accumulation on your aircraft that will affect your performance greatly. X-Plane also simulates a wide variety of systems that can prevent the accumulation of ice on various surfaces (anti-ice), or get rid off ice that has accumulated (de-ice). See the article “The X-Plane Anti- and De-Ice systems” for more information.

Propeller Feathering

X-Plane simulates governors for constant speed propellers that can have various failure modes. Depending on the type of engine/propeller combination on the aircraft, the behavior of the governor in case of an engine failure will be different. X-Plane 11.30 allows you to select the type of governor to simulate, to accommodate a wide range of different engine types. See the article “Propeller feathering systems” for more information.

Vacuum Systems

X-Plane has two vacuum systems per airplane, one for the pilot side instruments and one for the copilot side instruments. By default, the suction is generated by pumps driven by the engine, so it is dependent on your engine RPM. Two additional sources of vacuum are now available in X-Plane 11.30. See the article “Vacuum systems” for more information.

Gyro systems

X-Plane can drive the attitude indicator, also known as the artificial horizon, from any of three systems. This yields a total of six gyros you can use for your attitude instruments (pilot and copilot side). See the article “Vacuum gyro limitations and caging” for more information.

Fixed turboprop engine governor

To get the correct governor type for a fixed-shaft turboprop, you need to set both the engine type and the failure mode of the prop governor correctly. Then, the prop must be configured for sensible blade angles to achieve correct alpha and beta. Correct behavior of the governor requires correct set up of the prop first. See the article “Setting up a fixed turboprop engine governor” for more information.

Default Particle Effects

By default, the particle effects from 11.26 are still enabled on all aircraft. To turn them off, go to Expert > Part Visibility in Plane Maker 11.30 and use the checkboxes in the section “Disable X-Plane’s Built-In Effects.”

Toe Braking

Previous to 11.30, automatic toe braking for users without hardware or plugin-controlled toe brakes was applied automatically to aircraft based on internal heuristics and analysis of the landing gear. The heuristics sometimes produced useful results, but sometimes not, and they weren’t easily author-controllable

Starting in X-Plane 11.30, authors can control the amount of automatic toe brake applied with rudder deflection in Plane-Maker; the field “left and right brake power” in the landing gear screen’s “Gear Data” field lets you control this feature.

A value of 0 will mean X-Plane applies no automatic toe brakes with rudder deflection; positive values apply the toe brakes based on a power curve. Use a value of 1 for linear brake application with rudder, and larger values to defer brake application to the strongest rudder deflections. Generally, if you need toe brakes, but you want less of them, use a larger number.

For older aircraft, this field will be pre-initialized to match X-Plane 11.26’s shipping behavior.

Vectored Thrust

Due to a bug, vectored thrust was applied even to engines for which the per-engine check box was not checked.  While these aircraft continue to have vectored thrust in 11.30 to maintain compatibility, you will need to correct your check-boxes when you re-save in Plane-Maker 11.30.

Todo for authors: review the engine tab and make sure the “Vectored thrust” check-box is set appropriately for all engines.

4 Comments

Vacuum gyro limitations and caging

Gyro systems

X-Plane can drive the attitude indicator, also known as the artificial horizon, from any of three systems. This yields a total of six gyros you can use for your attitude instruments (pilot and copilot side). The three systems are:

  • vacuum gyro – this one is driven by air being sucked through it, and the vacuum necessary to pull the air into it is generated by an engine-driven vacuum pump. This is the system most often found in simpler general aviation aircraft like a C172. X-Plane simulates a vacuum pump driven off the accessory section of the engine, thus the gyro will spin up when the engine spins up.
    Check out the article on the vacuum system itself for more information.
  • electric gyro – this gyro replaces the failure-prone vacuum pump, hose, and filter system with a simple electric motor inside the instrument, which spins up the gyro. You find those in non-glass Cirruses, Diamonds, and other more modern general aviation aircraft. X-Plane drives this motor off a DC electric bus, or, if checked in Plane Maker, off the AC inverter.
  • AHARS – the fully electronic attitude and heading reference system replaces the gyros with sagnac laser-gyros or cheaper MEMS gyroscopic sensors (comparable to the ones in your smartphone) to generate attitude and heading information without any moving parts. This system is obviously electrically powered.

Limitations of the mechanical attitude gyro instrument

The attitude instrument uses a gimbal mechanism which allows the instrument case (and by extension, the whole airplane) to revolve around the gyro, which keeps pointing upward. The movements of the gimbal are translated by a pickup mechanism into movements of the part of the instrument the pilot is looking at. So while the plane rotates around the gimbal, the deflection of the gimbal is what causes the blue/brown part of the attitude indicator to move. It is important to keep in mind that this pickup mechanism is quite delicate, and also limited in its freedom of movement. It can indicate up to 110 degrees in bank and 70 degrees in pitch. Beyond that, the mechanism locks up and the attitude reading on the instrument becomes inaccurate. Moreover, a violent excursion of the bank or pitch limitations of the instrument can even cause permanent damage to the pickup mechanism, but that doesn’t happen in X-Plane.
After an exceeding of the instrument limitations, the indicated pitch or bank will be off, depending on how far the gyro was forced off from its natural position. The gyro rights itself at three degrees per minute in normal flight conditions, so you will see the attitude indicator correcting itself at this slow rate. To force the gyro back into the upright position quicker, you can pull the caging or fast erect knob.

Caging to the rescue

Aerobatic planes that are expected to exceed 70 degrees of pitch and 110 degrees of bank, if equipped with an attitude indicator at all, will have an instrument that allows caging. A caged gyro is locked to the instrument case, and rather than the delicate pickup mechanism taking the beating, the whole instrument absorbs the gyroscopic forces. While it is caged, the attitude indicator indicates straight and level, while the aerobatic plane can go to extreme bank and pitch angles without damaging the gyro. Back in normal flight, the gyro can be uncaged and resume normal operation.

What is “fast erect”?

On some attitude indicators, the caging knob is instead labeled “(pull to) fast erect”. The mechanism however is the same: When pulled, the gyro is forced into the upright straight and level position and locked to the instrument case, however the fast erect knob snaps back to the uncaged position when let go, while a caging knob can be locked in the caged position. Since they perform the same operation, the knob is the same dataref

sim/cockpit/gyros/gyr_cage_ratio[N]

For a fast erect knob, the dataref can be ramped up with the command

sim/instruments/ah_fast_erect(_copilot)

this simulates pulling out the knob, which instantly springs back when let go.
For the cage knob the command

sim/instruments/ah_cage(_copilot)

instead simulates toggling the knob to the pulled position.

Comments Off on Vacuum gyro limitations and caging

Vacuum systems

X-Plane has two vacuum systems per airplane, one for the pilot side instruments and one for the copilot side instruments. By default, the suction is generated by pumps driven by the engine, so it is dependent on your engine RPM.
Two additional sources of vacuum are available in X-Plane 11.30:

  • an aircraft can be equipped with a venturi tube instead, a very simple system found on vintage aircraft, where the suction is generated by the air going through a venturi tube placed on the fuselage, so it is effected by airspeed and propeller slipstream
  • an electric backup pump that can be switched on and provide suction when the engine pumps fail

Engine-driven vacuum pumps – single engine

X-Plane simulates the vacuum system for physical vacuum-driven gyros as follows:

  • There are two vacuum systems: One for the pilot instruments, one for the copilot instruments.
  • If you have no copilot instruments, then no problem: The second vacuum system goes unused, like it is not even there.
  • Each vacuum system has exactly one vacuum pump, which may be failed by the instructor.
  • For a single-engine airplane, that one engine turns both pumps… and if your plane has only one system, no problem! Just don’t specify any instruments as “Copilot”, which would have them use the second system.
  • The low-vacuum annunciator goes off if EITHER vacuum system runs low, but if you want to make an instrument that tracks WHICH system has run low on pressure, the simply use these datarefs
  • For airplanes that have TWO vacuum pumps on ONE system, we just don’t simulate that, just like we don’t simulate both the tire and innertube inside it… we only simulate the actual outgoing force that you see. So, for the dual-vacuum pump planes that have two pumps on one system, simply fail the vacuum pump in the failure list to take out BOTH pumps, since that will remove the pumping pressure from the system.

Engine-driven vacuum pumps – twin engine

  • For a multi-engine airplane, engine one turns the pump on system 1, engine 2 turns the pump on system 2… and if your plane has only one system, no problem! Just don’t specify any instruments as “Copilot”, which would have them use the second system.
  • If the vacuum system is set up in a way that both engine pumps pull from a common vacuum manifold, check the “vacuum systems cross-tied” in Plane Maker on the Systems page. In this case, with both engines running you will have plenty of suction, and in case of an engine failure, the one remaining pump will be enough to sustain suction at most power settings, but maybe not at idle RPM.

Electric backup

If your aircraft is equipped with an electric backup pump, you can use the dataref

sim/cockpit2/switches/standby_vacuum_pump

to turn on the electric pump in case the engine-driven pump has failed.

Venturi for Vintage aircraft

If you check the “venturi vacuum system” in the Systems page of Plane Maker, X-Plane will not run the engine driven vacuum pumps and instead place a venturi tube on the fuselage, like you’d see in an old a straight-tail 172. That venturi tube will be affected by the airspeed and the propeller slip stream, so you will first see it generating suction during the engine runup, when there is plenty of airflow from the propeller.

Comments Off on Vacuum systems

Setting up a fixed turboprop engine governor

Preconditions

To get the correct governor type for a fixed-shaft turboprop, you need to set both the engine type and the failure mode of the prop governor correctly. Then, the prop must be configured for sensible blade angles to achieve correct alpha and beta. Correct behavior of the governor requires correct set up of the prop first. The below guide assumes that:

  • you have a “fixed turboprop” type on the engines 2 page.
  • you have selected the loss of oil pressure position of the governor to “startlock” on the prop engines spec page.
  • you have “constant speed” as the type of the propeller on the props 1 page.
  • you have ticked the boxes to allow the prop to go into beta as well as reverse on the engine 1 page.
  • you have set up the minimum alpha pitch as fine pitch on the prop 1 page. With the prop at this pitch, it should generate a substantial forward thrust at 0 airspeed.
  • you have set up the beta pitch on the engine 1 page. At this pitch, the prop should be generating close to 0 thrust at 0 airspeed.
  • you have set up the reverse pitch aft of the beta pitch on the engine 1 page so that the prop can generate negative thrust.

Setting up governed speeds

There’s two governing functions that control the speed of the shaft: The prop governor controls it in alpha mode, and the fuel delivery control controls it in beta mode. The prop governor usually only controls the speed within a range of 96% to 100% of nominal RPM, while the fuel delivery control varies the engine speed between around 60% to 96% of nominal RPM. To set up the governing speeds you need to:

  1. Provide the nominal (100%) speed in RPM as the “redline engine RPM” speed
  2. Provide the same 100% speed as the “top of the green arc engine RPM” speed (for correct indication, does not effect governor simulation)
  3. Provide the minimum alpha speed for the prop governor as the “bottom of green arc engine RPM” – this is usually 96% of the nominal RPM. This value will be used as the lowest selectable for the prop governor in alpha mode and also for the underspeed governor that will increase fuel flow to keep the RPM up in alpha mode.
  4. Provide the lower limit for beta operation (65-73% of nominal RPM on most installations) as “minimum governor speed engine RPM”. This is the minimum RPM achievable in beta with the prop speed lever as far back as to not cross over into feather. This is the lowest RPM that can be set with fuel delivery control.

Setting up the engine idle fuel adjustments

Fuel delivery control works by manipulating the “idle_speed_ratio” actuator, so it changes the idle speed between “low_idle_ratio” and “high_idle_ratio” to govern the engine speed in beta mode. In order to do so effectively, you must tweak the low and high idle to be suitable for the governor. To do so, start up X-Plane and run these two tests:

  1. Place the power lever just below flight idle, in the tiniest bit of beta you can get. Basically, toggle into beta mode and then advance to beta_ref=0.01 or just the tiniest bit of beta. This way, the prop will be at or very close to the minimum alpha angle, thus grabbing the highest load it can get without crossing over into alpha fully. With the engine speed lever fully forward, the fuel delivery control must now achieve bottom of green arc RPM – usually around 96%. It will do so by running up the “idle speed ratio” towards high idle. Now tweak the “high idle ratio” parameter such that the governor sets an idle speed ratio close to 1.0. In other words, we want the fuel delivery control to be using close to all of its idle fuel here. The engine should be operating very close to the maximum idle ratio. Note the “high_idle_ratio” dataref now.
  2. Place the power lever as far back into beta without getting reverse thrust. With a properly set up prop, that means beta_ref=1.0. The prop is now at full beta pitch and should be producing very little thrust now and provide the lowest load on the engine. Observe that fuel delivery control will have lowered the idle speed ratio somewhat because it doesn’t need as much fuel flow now to keep the engine turning at min green RPM. Now pull the speed lever back as far as it goes without going into feather. You should be at about 2% travel on the prop axis to achieve minimum RPM short of feather. This will cause the fuel delivery control to call for a very low idle speed ratio to get the RPM down to the minimum governed RPM now, which will typically be between 65-73%. Now, tweak the “low idle ratio” so that the governor will use about 0.3 of “idle speed ratio” to achieve this lowest governed RPM (we need about 30% room below for the engine to spool down). Write down that “low idle ratio” dataref now.

Now back in Plane Maker, on the engines 1 page, set the parameters “hi idle fuel adjustment” and “low idle fuel adjustment” to the two values obtained.

Only with the idle parameters set sensibly, you will get proper response going in and out of beta mode, i.e. when going from flight to ground idle.

Finally, you probably will find that the “throttle available at max reverse lever position” should be low. During reverse, as the prop moves from beta pitch towards reverse pitch, it picks up more load, and this is counteracted by fuel delivery control, keeping engine speed up at the bottom of the green arc. Only if you find that at your reverse pitch you need additional throttle (more than fuel delivery control will provide) to keep the RPM up, should you allow for more throttle here.

Comments Off on Setting up a fixed turboprop engine governor

Preconfigured autopilots and other autopilot changes in 11.30

X-Plane 11.30 offers to equip planes with preconfigured autopilots, in addition to the many configurable options of previous X-Plane versions. Some of the available autopilots come with additional features.
Read More

Comments Off on Preconfigured autopilots and other autopilot changes in 11.30

X-Plane autopilot params

The X-Plane autopilot works with cascaded PID controllers. Tuning the PID controllers for your aircraft is key to having a smooth working autopilot. This article explains the parameters you can set in Plane Maker, and how to tweak them.

Read More

Comments Off on X-Plane autopilot params

The X-Plane oxygen system

Starting with X-Plane 11.30, it is possible to equip high-flying aircraft with an oxygen system rather than or in addition to the pressurized cabin, to allow realistic black-out behavior also with unpressurized aircraft.
Read More

Comments Off on The X-Plane oxygen system

The X-Plane Anti- and De-Ice systems

X-Plane simulates ice accumulation on your aircraft that will affect your performance greatly. X-Plane also simulates a wide variety of systems that can prevent the accumulation of ice on various surfaces (anti-ice), or get rid off ice that has accumulated (de-ice).
Read More

Comments Off on The X-Plane Anti- and De-Ice systems

Propeller feathering systems

X-Plane simulates governors for constant speed propellers that can have various failure modes. Depending on the type of engine/propeller combination on the aircraft, the behavior of the governor in case of an engine failure will be different. X-Plane 11.30 allows you to select the type of governor to simulate, to accommodate a wide range of different engine types. Read More

Comments Off on Propeller feathering systems

Aircraft VR Configuration (_vrconfig.txt) File Format Specification

The _vrconfig.txt file is a text-based configuration file that customizes VR interactions for your aircraft.

VR Configurations are aircraft-specific which means each ACF requires its own configuration file. While VR Configurations are not required, they are  strongly encouraged. Aircraft that do not have a VR Configuration will still load and still work, even with VR enabled, however, there will be no hotspots to make it easy for the user to get back into the pilot seat, and there will be no customization allowing the VR controllers to be used to their fullest potential.

The VR Configuration name needs to match the prefix of the ACF file, with _vrconfig.txt appended to the end. For example, to make a VR config for Cessna_172SP.acf, the file needs to be called Cessna_172SP_vrconfig.txt. This file must exist in the same directory as the ACF file.

The _vrconfig.txt file is a text file – Unix or Windows line endings are legal, blank lines are allowed after the header, and the character set should be UTF-8.

The header of the file should be

A
1100
VRCONFIG

followed by the directives listed below.

Hotspot Definitions

Hotspots are predefined locations that are used to precisely orient the VR user when selected. They are commonly used on the pilot and co-pilot seats so that users can quickly position themselves accurately in the seats.

Each hotspot block defines a single hotspot on or around the aircraft. You must use a matched pair of BEGIN_TELEPORT_HOTSPOT and END_TELEPORT_HOTSPOT. In this block you must have:

  • Exactly one Axis-Aligned-Bounding-Box (AABB)
  • Exactly one XYZ location
  • Exactly one Psi, Theta, and Phi orientation respectively.

Note: Unless the REF_POINT_ACF directive is set, all units are in Aircraft Coordinates – meters with the origin at the aircraft CG and the positive Z axis pointing aft.  This is not the same as the English units used in Plane-Maker.

REF_POINT_ACF (V12 and later)

If this directive appears in the VRCONFIG, the hotspot location origin for AABB and PRESET_XYZ are no longer tied to the aircraft’s CG but instead moves to some offset from the aircraft’s authoring point in Plane-Maker. Typically artists will put the reference point of the aircraft at the tip of the nose or tail and it stays there throughout the aircraft’s existence. This makes it a more useful reference point for coordinates than the aircraft’s CG which might change as authors gather newer and more accurate data to model the aircraft.

There are two main uses of this directive. First, if the VRCONFIG is being done for the very first time, setting this directive tells the sim to just use the authoring point as the origin so it’ll never be tied to the CG. You can leave the Y/Z coordinates blank and the sim will assume you mean 0.0 0.0. The second main use is for VRCONFIGs that have already been done for an aircraft that is now having it’s CG moved. Rather than have to adjust every coordinate in the VRCONFIG, you can use this directive to tell the sim that the origin should be at the OLD CG’s location by telling it where the OLD CG was relative to the aircraft’s authoring point. For example, if the OLD CG was at a Y/Z of 3.28084ft/-6.56168ft (remember, PlaneMaker uses FEET for its units) then you could add REF_POINT_ACF 1.0 -2.0 (which is the old CG location, converted from feet to meters) as a directive to the VRCONFIG which will allow the CG to move but the reference point for the file to stay at the OLD CG.

BEGIN_TELEPORT_HOTSPOT

This begins the definition of a new teleport hotspot. All hotspot properties must be specified after this directive and before the matched END_TELEPORT_HOTSPOT directive. The legal types of hotspots are ‘SITTING’ and ‘STANDING’. A sitting hotspot places the user’s head at the XYZ location. A standing hotspot places the user’s feet at the XYZ location. The name property is useful for debugging purposes.

END_TELEPORT_HOTSPOT

This defines the end of a given teleport hotspot. Each hotspot must be “ended” before anything else in the file occurs, and before the file ends.

AABB

This adds an axis-aligned bounding box (in aircraft coordinates, that is +X = right, +Y = up, +Z = aft) in meters around the CG of the aircraft. When the teleport beam lands inside this box, if the user ends the teleport, this hotspot will be used to position the user.

PRESET_XYZ

This sets the location of the user to the location X, Y, Z in meters, relative to the default CG of the aircraft; X is right, Y is up, Z is aft. A sitting hotspot places the user’s head at the XYZ location. A standing hotspot places the user’s feet at the XYZ location.

PRESET_PSI <deg 0 – 360>

This sets the rotation orientation (rotating about the Y-axis) of the user’s view in degrees. 0 degrees is facing forward in the aircraft, 90 would look toward the right wing, 180 degrees would be looking back at the tail etc.

PRESET_THE <deg -90 – 90>

This sets the pitch orientation (rotating about the X-axis) of the user’s view in degrees. 0 degrees is level. 90 would look straight up at the sky. -90 would look down at the ground.

PRESET_PHI <deg -180 – 180>

This sets the tilt orientation (rotating about the Z-axis) of the user’s view in degrees. 0 degrees is upright. -90 would be like tilting their left ear to their shoulder. 90 would be like tilting their right ear to their shoulder.

Manipulator Customization

Some aircraft manipulators need more information than is currently available in the OBJ itself in order to function optimally with VR Controllers. The most common examples of these are knobs and switches. With a mouse, knobs usually move one detent for each click. With a VR controller, however, X-Plane needs to know how much rotation is necessary in order to move the knob to the next detent. For linear knobs like lighting rheostats, this can be a fraction of a degree. For more coarse knobs like a fuel selector, you may want to require 60 degrees of rotation. There are other reasons to specialize manipulators such as changing their behavior entirely. For example, if the default aircraft manipulator uses commands to increment something by single degrees, but you want a smoother feel to the knob, you may want to redefine the manipulator to use a dataref to increment by fractions of a degree.

It’s important to note that customizations done with this file ONLY affect VR controllers. They will not change mouse or joystick hardware functionality.

BEGIN_MANIP  <cmnd1/dref1> <cmnd2/dref2>

This begins the manipulator block that defines the EXISTING aircraft OBJ manipulator to be customized. All manipulator properties must be specified AFTER this directive and before the matched END_MANIP directive. This line essentially contains the unique pieces of the OBJ manipulator for it to be looked up.

The manipulator type needs to match the type specified in the OBJ but without the ‘ATTR_manip_’. For example, if the OBJ has an ATTR_manip_command_axis, the type (for the purposes of this file) should be ‘command_axis’. The cmnd1/dref1 and cmnd2/dref2 should match those that exist in the OBJ manipulator definition. If the manipulator needs only one command/dataref, then cmnd2/dref2 can be omitted completely.

Lastly, to disambiguate two manipulators that have the exact same type and act on the same commands/datarefs, an optional tooltip can be used. This is common with Yoke manipulators since there are usually two yokes for the pilot and copilot and they typically act on the same datarefs. Again, if the tooltip is unnecessary to find a manipulator that is unambiguous and unique, it can be omitted completely.

The manipulator block will match only one manipulator – if more than one manipulator in the OBJ matches the specification, only one will be remapped; use more information (E.g. tooltips) when you need to remap manipulators that are otherwise ambiguous.

END_MANIP

This marks the end of a given manipulator block. Each manipulator block must be “ended” before anything else in the file occurs, and before the file ends.

ACTION axis_knob

This tells the VR system that this manipulator should be changed to an axis_knob manipulator and used instead of the original manipulator. This is useful if you want to act on the dataref instead of a command in VR mode to have finer control over the knob’s increment/decrement amounts. DX specifies the amount of change applied to the dataref for each action. Use DEG_PER_ACTION to set the amount of wrist rotation needed for an action to fire.

ACTION axis_switch_up_down (V12 and later)

This tells the VR system that this manipulator should be changed to an ATTR_manip_axis_switch_up_down manipulator and used instead of the original manipulator. This is useful if you want to act on a dataref instead of a command in VR mode to have finer control over the Up/Down switch’s increment/decrement amounts. DX specifies the amount of change applied to the dataref for each action. Use SWITCH_THRESHOLD to set the amount of wrist deflection/movement needed for an action to fire.

ACTION axis_switch_left_right (V12 and later)

See ACTION axis_switch_up_down for details. It’s exactly the same except in the horizontal direction.

ACTION drag_xy four_arrows 

This tells the VR system that this manipulator should be changed to a drag_xy manipulator and used instead of the original manipulator. This is usually used to override the show/hide Yoke manipulator to instead make it behave as if the user has grabbed the yoke to begin using it.

ACTION command_axis (V12 and later)

This tells the VR system that this manipulator should be changed to an ATTR_manip_command_axis manipulator and used instead of the original manipulator. This is useful for mechanical things that have two states that you want to move through with a rest in between. For example, consider an elevator trim switch that’s spring loaded in the up and down positions so it always recenters. This manipulator coupled with a HOLD_MANIP flag will get you that behavior.

ACTION command_knob (V12 and later)

This tells the VR system that this manipulator should be changed to an ATTR_manip_command_knob manipulator and used instead of the original manipulator. This is useful if you want the mechanical thing to perform one command in a direction and another command if rotated in the opposite direction.

ACTION command_switch_up_down2 (V12 and later)

This tells the VR system that this manipulator should be changed to an ATTR_manip_command_switch_up_down2 manipulator and used instead of the original manipulator. This is useful if you have a single command that toggles rather than requiring two separate commands like ATTR_manip_command_switch_up_down.

ACTION command_switch_left_right2 (V12 and later)

This tells the VR system that this manipulator should be changed to an ATTR_manip_command_switch_left_right2 manipulator and used instead of the original manipulator. This is useful if you have a single command that toggles rather than requiring two separate commands like ATTR_manip_command_switch_left_right.

DEG_PER_ACTION

This tells the system how many degrees of wrist rotation is necessary before a knob manipulator will be acted upon. Another way of thinking about it is how far does the VR controller need to be rotated before the manipulator will fire as if the mouse was clicked once.

SWITCH_THRESHOLD

Similar to DEG_PER_ACTION for knobs, SWITCH_THRESHOLD tells the system how much wrist tilt or motion is necessary to trigger a command. This is useful for things dials like the vertical speed dial on an airliner. The angle in degrees tells the system how many degrees of tilt are necessary before triggering the command. The offset threshold in meters tells the system how much motion should exist before triggering the command. This allows the user to lift/lower their arm to operate the dial instead of tilting their wrist.

WRAP_MANIP

This tells the system that the knob manipulator should wrap. Examples of knobs that should wrap would include the course knob or heading bug. Examples of knobs that should not wrap are lighting knobs and volume controls.

HOLD_MANIP

This tells the system that the knob/switch manipulator should hold down commands continuously while it is not in motion. Without this, commands are issued once for each ‘click’ of the switch or knob; with this, a command is held until the knob/switch is released or moved again. Do not use this for manipulators that use datarefs. It is only intended for command manipulators.

Starter keys and spring-loaded knobs and switches often require the HOLD_MANIP directive as they will return to the off position when not held.

INVERT_MANIP (V12 and later)

This tells the system that the knob/switch manipulator should be inverted in the way it processes commands. For example, switches are expected to be UP in the ‘on’ position and DOWN in the ‘off’ position but some switches just aren’t modeled that way or the real switch is actually mounted upside down. With this flag, you can reverse the behavior to match real life without having to change the command order in the OBJ.

DISABLE_VISUALS (V12 and later)

This tells the system that it should not draw any kind of feedback visuals during manipulator use. Some manipulators such as axis manipulators visualize the axis while a user interacts with it. With this flag, that drawing will be disabled. This does not affect the drawing of the manipulator geometry BEFORE interaction.

JOYSTICK_MANIP

This tells the system that the manipulator is one that should be treated like a real-world joystick control (like those found on Airbuses and the CirrusJet). The data here will only become active if the user has enabled “Realistic” mode for their VR Yokes. The pitch and roll mins and maxes define the range of tilting motion in degrees of the VR controller that should be mapped to the full range of motion of the flight controls.

YOKE_MANIP_TRANSLATE

This tells the system that the manipulator is one that should be treated like a real-world yoke control (like those found on a Cessna 172) where the pitch axis is a translation axis that slides back and forth and the roll axis is a rotation one like a steering wheel that rotates about a centroid. The data here will only become active if the user has enabled “Realistic” mode for their VR Yokes.

Pitch min and max x,y,z are in OBJ units and define the axis of translation for pitch; they can be taken directly from the translation axis used to animate your yoke. The length of the vector between these points defines how far the yoke moves from full nose up to full nose down, and is typically aligned along the Z axis.

Roll centroid x,y,z are also in OBJ units and define the point at which the yoke rotates around. This point should be somewhere on the center of the yoke, and can be taken from the static translation that precedes your yoke’s roll animation.

The roll axis defines the axis about which the yoke rolls, and can be taken from the axis of your roll animation directly. This should be a unit vector, and will typically be about the Z axis.

The roll min and max angles define the maximum travel in either direction from the “level” point, and can be taken from the end key frames of your roll animation.

YOKE_MANIP_ROTATE   

This tells the system that the manipulator is one that should be treated like a real-world flight stick (like those found in a fighter jet or SuperCub) where the pitch and roll axis are attached to a single stick that is attached to a mount point that can be rotated forward and back as well as left and right about two centroids (that can be co-located).

Pitch and roll centroid x,y,z are in OBJ units and define the centroids about which the pitch and roll axis rotates – you can take them from the static translation that precedes your animation.

Pitch and rolls axis x,y,z define the unit vectors of the rotation axes for pitch and roll; they should be unit vectors and can be taken directly from your pitch and roll animations. Typically the pitch axis will be the X axis and the roll axis will be the Z axis.

The pitch and roll min and max degrees define the maximum amount of rotation that can exist in either direction, for both pitch and roll.

Note that you can use YOKE_MANIP_ROTATE for both flight sticks (like a helicopter or fighter) or for airliner-style column yokes. In the flight stick case, the rotation centroid is at the floor pivot for both axes. For an airliner yoke, the pitch centroid is on the floor but the roll centroid is on the yoke itself.

We do not recommend using YOKE_MANIP_ROTATE for very small side sticks because they are hard to control in VR; prefer JOYSTICK_MANIP instead.

 

15 Comments