Fixed-wing flight model (FWG_01)

Source: the five DA_FWG_01_* flight assets, Curve_Symmetrical_LiftCoefFromAngleOfAttackDeg, Curve_DragCoefFromAngleOfAttackDeg, Curve_FWG_01_NoseCenterWheel_SteeringInfluenceByForwardSpeedKmPH and CurveTable_FWG_01_AutoTrimByAirspeedKmPH under Content/Vehicles/Pawns/Air/Airplane/FWG_01/Data. Generated by _tools/vehicle_round85_tables.py. Evidence and status: round 85 vehicles.

FWG_01 is the unfinished two-seat airplane described in Fixed-wing airplane. Vehicles (reference) section 3 and 4 list its mass, thrust, airfoil areas and control mapping. This page adds the rest: the property names, the full drag and torque set, the curve keys, the auto-trim table and the control-assist stacks. The data stores no top speed and no stall speed; the speed figures in section 6 are read from the auto-trim table.

1. Engine and body (stored property names)

Asset Property Value
DA_FWG_01_Engine FanRPMIncreaseRatePerSecond 5,000
DA_FWG_01_Engine FanRPMDecreaseRatePerSecond 5,000
DA_FWG_01_Engine ThrustOrigin_LS (-700, 0, 0)
DA_FWG_01_Engine ThrustDirection_LS (1, 0, 0)
DA_FWG_01_Engine MaxEngineThrust_n 226,800
DA_FWG_01_Engine MinEngineThrust_n 0
DA_FWG_01_Body bEnableInertiaTensorOverride true
DA_FWG_01_Body InertiaTensorOverride (6e+08, 1.6e+08, 2.5e+08)
DA_FWG_01_Body bEnableMassOverride true
DA_FWG_01_Body MassOverride 10,000
DA_FWG_01_Body bEnableCenterOfMassOverride true
DA_FWG_01_Body CenterOfMassOverride (-150, 0, 0)
DA_FWG_01_Body bEnableMaxAngularVelocityOverride true
DA_FWG_01_Body MaxAngularVelocityOverride_degps 180

The engine has one thrust vector and two limits, no thrust-by-speed curve and no fuel use of its own. Thrust is a straight 0 to 226,800 N range, scaled by the throttle control. Mass, inertia and thrust units are not stated in the export (read as kg and N below).

2. Drag (DA_FWG_01_Drag, BHAirplaneDragDataAsset)

Property Value
AirDensityAtSeaLevel 0.00125
FrontDragArea 4,000
RearDragArea 3,500
SideArea 5,000
BottomArea 2,800,000
TopArea 2,800,000
DragCoefficient 0.0056
bDrawDragDebugLines true
YawAngularVelocityInducedDragTorqueCoef 2.4e+12
PitchAngularVelocityInducedDragTorqueCoef 1.2e+13
RollAngularVelocityInducedDragTorqueCoef 9.5e+11
RollLinearVelocityInducedDragTorqueCoef 0.18
PitchLinearVelocityInducedDragTorqueCoef 90,000
YawLinearVelocityInducedDragTorqueCoef 70,000
YawLinearVelocityInducedDragTorqueCoefBySkidAngleCurve CF_YawDragAngle_AggressiveNearZero
PitchLinearVelocityInducedDragTorqueCoefByAngleCurve CF_PitchDragAngle
ReverseYawCorrectionCoef 0.8

The two skid-angle curves live in the helicopter folder (CF_YawDragAngle_AggressiveNearZero, CF_PitchDragAngle); the airplane borrows them. The air density of 0.00125 is the sea-level value in g/cm3 (1.25 kg/m3) (unit reading assumed). How the native code multiplies the six area fields and the coefficient is not decoded.

3. Lift and drag curves (angle of attack in degrees)

All twelve airfoils share these two curves (LiftCoeffFromAngleOfAttackDeg_Curve, DragCoeffFromAngleOfAttackDeg_Curve). The airfoil angle of attack is the airplane angle plus the airfoil IncidenceAngle_deg (wings and flaps 2 degrees, the airbrake -45).

Lift coefficient (Curve_Symmetrical_LiftCoefFromAngleOfAttackDeg, symmetric about 0):

Angle (deg) Key value Interpolation
-90 0 Cubic
-45 -1.1 Cubic
-25 -0.5 Cubic
-16 -1 Cubic
0 0 Cubic
16 1 Cubic
25 0.5 Cubic
45 1.1 Cubic
90 0 Linear

Derived values between the keys (evaluated as an Unreal rich curve, cubic keys with their tangents):

Angle (deg) 0 2 4 6 8 10 12 14 16 18 20 22 25 30 35 40 45 60 90
Lift coefficient 0 0.15 0.33 0.52 0.69 0.83 0.93 0.98 1 0.99 0.93 0.78 0.5 0.71 0.99 1.08 1.1 0.92 0
Drag coefficient 0.01 0.011 0.012 0.016 0.02 0.026 0.033 0.042 0.053 0.065 0.079 0.096 0.124 0.183 0.261 0.36 0.486 1.123 2.5

The curve climbs to 1.0 at 16 degrees, falls to 0.5 at 25 degrees (the stall) and rises again to 1.1 at 45 degrees (flat-plate behaviour), then returns to 0 at 90 degrees.

Drag coefficient (Curve_DragCoefFromAngleOfAttackDeg, five keys over -180 to 180 degrees):

Angle (deg) Value Interpolation
-180 0.01 Cubic
-90 2.5 Cubic
0.007533 0.01 Cubic
90 2.5 Cubic
180 0.01 Cubic

Drag is 0.01 edge-on and 2.5 broadside (90 degrees); the cubic keys make it rise slowly (see the derived row above).

Nose-wheel steering influence by forward speed (Curve_FWG_01_NoseCenterWheel_SteeringInfluenceByForwardSpeedKmPH, km/h):

Forward speed (km/h) Steering influence Interpolation
0 1 Linear
50 1 Cubic
100 4.818e-07 Cubic

The value at 100 km/h is 4.8e-07, effectively 0. The nose wheel keeps full steering to 50 km/h and fades out by 100 km/h.

4. Landing gear and other flight fields

Side Braking strength Steering strength Steering damping Max steering angle (deg) Brake steering influence Bones (wheel / suspension / steer)
NoseCenter 0 250 50 45 0 wheelF_J / wheelMechanismF_J / wheelMechanismRotateF_J
RearLeft 1,000,000 0 0 0 0.2 wheelL_J / wheelMechanismL_J / wheelMechanismRotateL_J
RearRight 1,000,000 0 0 0 0.2 wheelR_J / wheelMechanismR_J / wheelMechanismRotateR_J
Property Value
bEnableMaxAngularVelocity false
MaxAngularVelocityDegPerS 83
TranslationalLiftPercent 20
TranslationalLiftMinAtHorizSpeed_mps / MaxAt 24 / 34
GroundEffectAltitude_m / GroundEffectFalloff_m / GroundEffectStrengthPercent 8.38 / 8.38 / 0
DefaultFMAssistanceLevel bNeutralLift = true, bRateLock = true
PitchHoverAssistanceCurve CF_PitchHoverAssistance (helicopter folder)
RearRotorEfficiencyCurve TestHelo_RearRotorEfficiency_Curve2000KG (helicopter folder)
GForceControlFalloffCurve CF_GForceControlFalloff_AprilKom (helicopter folder)
AerodynamicSettings.MainLiftMultiplier 0.4

The helicopter fields (translational lift, ground effect, rear rotor, hover assistance) were copied from the helicopter flight asset and carry helicopter values; ground effect is switched off (strength 0). The maximum angular velocity limit is disabled.

5. Control assists

Each control is a BHRotaryMovementControl with a stack of assists (a category, a label, optional conditions, and a body). Flap and airbrake controls have none. Values are as stored; the gain units are not stated.

Control Assist label Enabled Conditions Body
Throttle Apply change on none ChangeBody: RawIncreaseInterpSpeed 2; RawDecreaseInterpSpeed 2; IncreasePerSecond 0.5; DecreasePerSecond 0.5; ClampLowerBound 0
Pitch Reduce pitch when exceeding GForce limit on SmoothedInfluenceConditions: InInterpSpeed 0.3; OutInterpSpeed 0.3; Conditions (1) SetToValueBody
Pitch Auto-trim on none AutoTrimCurveSamplingBody: CurveTable CurveTable_FWG_01_AutoTrimByAirspeedKmPH
Roll Stabilize after input released on StabilizedAfterInputReleasedCondition: StabilityControlValueType LocalAngularVelocity_DegPerS; StabilityControlValueComponent X; StabilityThreshold 2.8648; InputStateCondition: ControlType CyclicX; Threshold 0.01; Operator Equal PIDBody: OutputParams NegateCondition=Always; ControlValueParams Type=LocalAngularVelocity_DegPerS, Component=X; PID ProportionalGain=0.2094, IntegralGain=0.001745, DerivativeGain=0.0873
Yaw Dampen pressed inputs on InputStateCondition: ControlType Pedals; Threshold 1; Operator Equal DampingBody: Interpolation InterpolationMethod=INTERP_TO, InterpSpeed=1
Yaw Dampen inputs on InputStateCondition: ControlType Pedals; Operator Equal DampingBody: Interpolation InterpolationMethod=INTERP_TO, InterpSpeed=0.5
Wheel brake Engage when fully stopped on IsFullyStoppedAircraftMovementCondition SetToValueBody: Value 1
Wheel brake Damping on none DampingBody: Interpolation InterpolationMethod=INTERP_TO, InterpSpeed=3

The pitch auto-trim assist is the one that samples the 22-row table in section 6a.

6. Auto-trim table and speed figures

6a. Auto-trim table (CurveTable_FWG_01_AutoTrimByAirspeedKmPH)

The pitch assist samples one of 22 curves; the row names are Gear_{0,1}_Thrust_{0..100 step 10}, so the curves are chosen by landing-gear state and throttle in tens of percent. Native (static reading, round 91): the game parses the row names at load (Gear_ then a number, Thrust_ then a number; the thrust number times 0.01 becomes the row’s throttle key, 0 to 1) and keeps two lists sorted by that key. Each frame it reads the landing-gear state: Down uses the Gear_0 list, Up uses the Gear_1 list, and while the gear is retracting or extending it samples both lists and blends them by the gear travel fraction (the travel direction while in transit is inferred). Within a list the current engine thrust ratio (0 to 1) is looked up between the two nearest throttle keys, each of those two curves is read at the airspeed, and the two values are blended linearly by where the thrust ratio falls between the keys (below the lowest key or above the highest key the nearest row is used alone). So the table is interpolated in both throttle and airspeed, not looked up by a rounded row. The airspeed fed to the curves is the airplane’s forward speed along its own forward axis, converted from centimeters per second to kilometers per hour by the engine’s unit conversion, so the row keys are km/h. Each curve maps airspeed in km/h to a pitch-control trim value (stored as shown, unit not stated). Every curve rises to +0.2 within 10 km/h, holds it up to a throttle-dependent speed, then falls through 0 and ends at -0.08 or -0.09 at 1200 km/h. The throttle-0 rows are flat at -0.09. All keys are linear.

Row Keys Holds +0.2 up to (km/h) Falls to 0 at (km/h, derived) Value at 1200 km/h
Gear_1_Thrust_100 30 240 440 -0.08
Gear_1_Thrust_90 31 220 420 -0.08
Gear_1_Thrust_80 26 210 390 -0.08
Gear_1_Thrust_70 26 200 370 -0.08
Gear_1_Thrust_60 24 180 340 -0.08
Gear_1_Thrust_50 25 170 310 -0.08
Gear_1_Thrust_40 26 150 280 -0.09
Gear_1_Thrust_30 23 130 240 -0.09
Gear_1_Thrust_20 23 100 190 -0.09
Gear_1_Thrust_10 23 70 140 -0.09
Gear_1_Thrust_0 3 - - -0.09
Gear_0_Thrust_100 31 230 440 -0.08
Gear_0_Thrust_90 29 220 410 -0.08
Gear_0_Thrust_80 26 210 390 -0.08
Gear_0_Thrust_70 26 200 360 -0.08
Gear_0_Thrust_60 23 180 340 -0.08
Gear_0_Thrust_50 26 160 310 -0.08
Gear_0_Thrust_40 24 150 270 -0.08
Gear_0_Thrust_30 23 130 240 -0.09
Gear_0_Thrust_20 23 100 190 -0.09
Gear_0_Thrust_10 21 70 135 -0.09
Gear_0_Thrust_0 3 - - -0.09

The zero crossing is the airspeed where the assist asks for no pitch trim at that throttle, which is the speed the designers expected the airplane to hold level at that throttle. It rises from about 140 km/h at 10% to 430 km/h at 100% with the gear up (gear down: 135 to 430 km/h). At 100% the curve reaches zero at 430 and stays there until 440, which is the value the table column shows; at lower throttles the column is the point where the curve leaves zero. Gear_1 is the gear-up set and Gear_0 the gear-down set (confirmed in the native reader above). The full key list of every row is in the export; keys are 10 km/h apart or wider.

6b. Speed figures

The data stores no top speed and no stall speed. The only speed figures it gives are the zero crossings read from the auto-trim table in 6a: the speed where no pitch trim is asked for, 140 km/h at 10% throttle and 430 km/h at 100% throttle with the gear up (135 and 430 km/h with the gear down). They are read from the table, not stored as a limit.

See also