User Tools

Site Tools


tools:a3flightmodeltool

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tools:a3flightmodeltool [2026/07/19 15:38] – [Pages] rocktools:a3flightmodeltool [2026/07/20 12:28] (current) rock
Line 10: Line 10:
   * [[tools:a3flightmodeltool#finding_flight_model_source_data|Finding the source data]]   * [[tools:a3flightmodeltool#finding_flight_model_source_data|Finding the source data]]
   * [[tools:a3flightmodeltool#flight_model_field_reference|Field reference]]   * [[tools:a3flightmodeltool#flight_model_field_reference|Field reference]]
-  * [[tools:arma3_flight_graph_tool:formulas|Formulas and estimates]] +  * [[tools:a3flightmodeltool#flight_model_formulas_and_estimates|Formulas and estimates]] 
-  * [[tools:arma3_flight_graph_tool:tuning_checklist|In-game tuning checklist]] +  * [[tools:a3flightmodeltool#in-game_flight_model_tuning_checklist|In-game tuning checklist]]
  
 ===== What the tool does ===== ===== What the tool does =====
Line 37: Line 36:
   * [[https://community.bohemia.net/wiki/CfgVehicles_Config_Reference|Bohemia Interactive - CfgVehicles config reference]]   * [[https://community.bohemia.net/wiki/CfgVehicles_Config_Reference|Bohemia Interactive - CfgVehicles config reference]]
  
-====== Arma 3 Flight Model Graph Tool Workflow ======+====== Flight Model Graph Tool Workflow ======
  
 Follow this process for each aircraft type. Do not tune duplicate editor variants separately unless they use genuinely different physics values. Follow this process for each aircraft type. Do not tune duplicate editor variants separately unless they use genuinely different physics values.
Line 173: Line 172:
  
 ^ Aircraft ^ Typical extracted config path ^ ^ Aircraft ^ Typical extracted config path ^
-| A-143 Buzzard | ''Q:\a3\air_f_gamma\Plane_Fighter_03\config.cpp''+| A-143 Buzzard | ''P:\a3\air_f_gamma\Plane_Fighter_03\config.cpp''
-| A-149 Gryphon | ''Q:\a3\air_f_jets\Plane_Fighter_04\config.cpp''+| A-149 Gryphon | ''P:\a3\air_f_jets\Plane_Fighter_04\config.cpp''
-| A-164 Wipeout | ''Q:\a3\air_f_epc\Plane_CAS_01\config.cpp''+| A-164 Wipeout | ''P:\a3\air_f_epc\Plane_CAS_01\config.cpp''
-| Caesar BTT | ''Q:\a3\air_f_exp\Plane_Civil_01\config.cpp''+| Caesar BTT | ''P:\a3\air_f_exp\Plane_Civil_01\config.cpp''
-| F/A-181 Black Wasp II | ''Q:\a3\air_f_jets\Plane_Fighter_01\config.cpp''+| F/A-181 Black Wasp II | ''P:\a3\air_f_jets\Plane_Fighter_01\config.cpp''
-| KH-3A Fenghuang | ''Q:\a3\air_f_exp\UAV_04\config.cpp''+| KH-3A Fenghuang | ''P:\a3\air_f_exp\UAV_04\config.cpp''
-| MQ-4A Greyhawk | ''Q:\a3\drones_f\Air_F_Gamma\UAV_02\config.cpp''+| MQ-4A Greyhawk | ''P:\a3\drones_f\Air_F_Gamma\UAV_02\config.cpp''
-| To-199 Neophron | ''Q:\a3\air_f_epc\Plane_CAS_02\config.cpp''+| To-199 Neophron | ''P:\a3\air_f_epc\Plane_CAS_02\config.cpp''
-| To-201 Shikra | ''Q:\a3\air_f_jets\Plane_Fighter_02\config.cpp''+| To-201 Shikra | ''P:\a3\air_f_jets\Plane_Fighter_02\config.cpp''
-| UCAV Sentinel | ''Q:\a3\air_f_jets\UAV_05\config.cpp''+| UCAV Sentinel | ''P:\a3\air_f_jets\UAV_05\config.cpp''
-| V-44 X Blackfish | ''Q:\a3\air_f_exp\VTOL_01\config.cpp''+| V-44 X Blackfish | ''P:\a3\air_f_exp\VTOL_01\config.cpp''
-| Y-32 Xi'an | ''Q:\a3\air_f_exp\VTOL_02\config.cpp'' | +| Y-32 Xi'an | ''P:\a3\air_f_exp\VTOL_02\config.cpp'' |
- +
-Search examples: +
- +
-<code -> +
-rtk rg -n -i 'class .*Plane|simulation *= *"airplanex"|envelope\[]|thrustCoef\[]' Q:\a3 +
-rtk rg -n 'class I_Plane_Fighter_04_F|class Plane_Fighter_04_Base_F' Q:\a3 +
-</code>+
  
 ===== Your addon config ===== ===== Your addon config =====
Line 364: Line 356:
 For a graph array with ''N'' editable points and zero-based point index ''i'': For a graph array with ''N'' editable points and zero-based point index ''i'':
  
-<code>+<code ->
 station_speed_kmh = maxSpeed_kmh * range * i / (N - 1) station_speed_kmh = maxSpeed_kmh * range * i / (N - 1)
 </code> </code>
Line 379: Line 371:
 Example for ''maxSpeed = 800'' and ''envelope[]'' point 6: Example for ''maxSpeed = 800'' and ''envelope[]'' point 6:
  
-<code>+<code ->
 station_speed_kmh = 800 * 1.25 * 6 / 13 station_speed_kmh = 800 * 1.25 * 6 / 13
 station_speed_kmh = 461.5 station_speed_kmh = 461.5
Line 390: Line 382:
 If two adjacent points surround 1 g, interpolate between them: If two adjacent points surround 1 g, interpolate between them:
  
-<code>+<code ->
 t = (1 - lower_g) / (upper_g - lower_g) t = (1 - lower_g) / (upper_g - lower_g)
 stall_speed = lower_speed + t * (upper_speed - lower_speed) stall_speed = lower_speed + t * (upper_speed - lower_speed)
Line 401: Line 393:
 Use landing-configuration stall speed if known: Use landing-configuration stall speed if known:
  
-<code>+<code ->
 landingSpeed = landing_stall_speed * 1.20 to 1.35 landingSpeed = landing_stall_speed * 1.20 to 1.35
 </code> </code>
Line 418: Line 410:
 Use this relationship as a rough check: Use this relationship as a rough check:
  
-<code>+<code ->
 approx_maneuver_speed = stall_speed * sqrt(positive_limit_g) approx_maneuver_speed = stall_speed * sqrt(positive_limit_g)
 </code> </code>
Line 430: Line 422:
 In simplified form for each axis: In simplified form for each axis:
  
-<code>+<code ->
 friction_force = v * abs(v) * coef2 + v * coef1 + sign(v) * coef0 friction_force = v * abs(v) * coef2 + v * coef1 + sign(v) * coef0
 </code> </code>
Line 436: Line 428:
 The arrays contain three values: The arrays contain three values:
  
-<code>+<code ->
 airFrictionCoefs0[] = { X, Y, Z }; airFrictionCoefs0[] = { X, Y, Z };
 airFrictionCoefs1[] = { X, Y, Z }; airFrictionCoefs1[] = { X, Y, Z };
Line 450: Line 442:
 If static thrust is known: If static thrust is known:
  
-<code>+<code ->
 baseThrustN = known_static_thrust_N baseThrustN = known_static_thrust_N
 </code> </code>
Line 456: Line 448:
 If engine power is known instead: If engine power is known instead:
  
-<code>+<code ->
 baseThrustN = power_W / target_speed_mps baseThrustN = power_W / target_speed_mps
 </code> </code>
Line 468: Line 460:
 The tool estimates climb from excess power: The tool estimates climb from excess power:
  
-<code>+<code ->
 excess_thrust_N = thrust_N - drag_N excess_thrust_N = thrust_N - drag_N
 excess_power_W = excess_thrust_N * speed_mps excess_power_W = excess_thrust_N * speed_mps
Line 586: Line 578:
  
 ^ Field ^ Value ^ ^ Field ^ Value ^
-| Aircraft class | | +| Aircraft class |   
-| Config version | | +| Config version |   
-| Baseline preset/class | | +| Baseline preset/class |   
-| Payload/fuel | | +| Payload/fuel |   
-| Altitude | | +| Altitude |   
-| Weather/wind | | +| Weather/wind |   
-| Changed fields | | +| Changed fields |   
-| Result | | +| Result |   
-| Next action | |+| Next action |   |
  
 ===== Acceptance criteria ===== ===== Acceptance criteria =====
tools/a3flightmodeltool.1784475519.txt.gz · Last modified: by rock