Jump to content

Recommended Posts

Maybe some of the flight model guys find this useful for creating, analyzing or checking flight models.

Last year I had the idea for a tool that extracts the data of the debug hud and writes them into a text file:
(from this post: https://combatace.com/forums/topic/91675-how-to-develop-test-flight-models/?do=findComment&comment=741238):

Quote

So it seems, the only way to get the flight data from the game engine is to observe and manually note the desired flight data parameter from the hud debug output while flying the aircraft.

Mmmh...I have an idea: Why not record a video of the flight (e.g. via shadowplay or the like) with enabled hud debug mode. Then afterwards postprocess the video to extract the data from the video images. I think it shouldn't be too difficult to write a small tool in python by using opencv and a ocr library to extract the data. Then we have access to all hud debug parameter over the whole flight time.

 

The process steps are illustrated in the following figure:

process_steps.thumb.jpg.ce389234ca2440f5e05e4a4b8facdf62.jpg

 

The tool "DebugHUDExtractor" I came up with is written in python and uses the optical character recognition (OCR) software tesseract. Thus to use the DebugHudExtractor you have to install python, some python packages and the tesseract software.

For those who want to try this tool, here are the installation, configuration and usage instructions:
 
1.) Download and install tesseract: https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v4.1.0.20190314.exe

Copy lucidaconsole.traineddata into tessdata directory (e.g. C:\Program Files\Tesseract-OCR\tessdata). Needs admin rights.
This file contains the trained data for the lucida console font. I use this font as it gave me the best results with the character recognition. This font has to be configured for the debug hud output in the game (see. step 4 below)

2.a) Download and install python: https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe
    While installing select "Customize installation":
    -optional: change the installation directory (e.g I use C:\Python37)
    -enable "Add Python to environment variables"

2.b) Install needed python packages.

On the windows command line execute the following commands:

pip install pillow
pip install numpy
pip install opencv-python
pip install pytesseract

3.) Setting the path to the tesseract executable:
In <Python_install_directory>\Lib\site-packages\pytesseract\pytesseract.py (line 35) set tesseract_cmd to the file path of the tesseract executable. Use double backslashes or normal slashes.
E.g.:

tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract'

 

4.) Configure the game.

In SF2/FE2 game set Option Hud = Normal and configure the Huddata.ini.
It enables the debug hud, set the font to lucida console, sets a bigger font size (the bigger the better, but all relevant debug info should still be displayed in the screen,e.g. for my 1920x1080 resolution I use TextSize = 24)
,the normal font color is changed to red (required for text filtering), the default right info box is disabled and the default left aircraft info box is moved to the right (that gives more space for the debug info box on the left)

[Debug]
DisplayDebug=true

[Font]
TextFontName=Lucida Console
TextSize=24

[InfoDisplay]
//BackgroundImage=TextBackground.tga
BottomLeftPosition=0.8,1.0
//BottomRightPosition=0.99,0.985
NormalColor=1.0,0.0,0.0,1.0


5.) Configure the python script debughudextractor.py :

Depending on the values you want to extract from the debug hud the variables extractPitch, extractAlpha, ... have to be set to True or False,
The leftRect and rightRect variables have to be configured depending on where the debug info box and aircraft info box is located on your screen (depending on your screen resolution and the entries in your huddate.ini)
The format is as follows:

leftRect = (top-left-x, top-left-y, bottom-right-x, bottom-right-y)


The top left corner of the screen is the origin (0,0).

E.g. with a resolution of 1920x1080 and the above huddata.ini, I use the following:

leftRect = (56,236,1450,1080)
rightRect = (1528,968,1920,1080)

 

See this picture:

rectangle_areas.jpg.4170ecd4da8ff08bd39387994dc1138a.jpg


6.) Start the script from windows command line:

python debughudextractor.py video_file_path time_step_in_s start_time_in_s end_time_in_s

<video_file_name>.txt and <video_file_name>_error.txt will be written into the directory of the video file.
<video_file_name>.txt contains the extracted data.
<video_file_name>_error.txt contains what values at what time couldn't be recognized. If a value couldn't be recognized, then the very next video frame is used and analyzed.

  • Like 5
  • Thanks 5

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By mue


      View File LODViewer
      This is the newest version of the LODViewer.
      New features:
      -decal support
      -display of collision and pivot points
      -added transparency and wireframe display mode
      -user definable background color
      -view manipulation via keyboard
      -64 bit application
      -uses the OpenSceneGraph library and Qt 5.9.5
       
      Install instructions:
      Extract the content of the zip package to a convenient location.
      The LODViewer depends on the Microsoft Visual Studio 2017 C++ libraries. If not already installed on the computer (e.g. by other applications) it has to be installed by running vcredist_x64.exe (you can find it in the redist subfolder of this package).
       
      Have fun! And report bugs
      Mue
      Submitter mue Submitted 06/06/2019 Category Utilities / Editors  
    • By mue
      Currently I'm trying to reverse engineer the SF2 flight model.
      I stumbled over the stall tables.
      Does anyone know how the stall tables (StallLiftTable, StallDragTable and StallXacShiftTable) work?
      As an example here are the StallLiftTable and StallDragTable from the P-51D and F-4B inner wings:


      I assume the abscissa is alpha and the ordinates are factors for some lift or drag coefficients. Correct?
      What are the lift and drag coefficients? CLmax for lift and StallDrag for drag?
      But the drag table looks odd. I would have assumed that at alpha = -90 degree and +90 degree the drag factor would have its maximum.
      When are these tables used? If alpha > AlphaDepart?
    • By mue
      Question for the FM experts: What does the chord value in the wing sections of the aircraft_data.ini mean? How is it used in the FM?
    • By mue
      This is the newest version of the LODViewer.
      New features:
      -decal support
      -display of collision and pivot points
      -added transparency and wireframe display mode
      -user definable background color
      -view manipulation via keyboard
      -64 bit application
      -uses the OpenSceneGraph library and Qt 5.9.5
       
      Install instructions:
      Extract the content of the zip package to a convenient location.
      The LODViewer depends on the Microsoft Visual Studio 2017 C++ libraries. If not already installed on the computer (e.g. by other applications) it has to be installed by running vcredist_x64.exe (you can find it in the redist subfolder of this package).
       
      Have fun! And report bugs
      Mue
    • By Spudknocker


      View File Strike Eagle FM and Loadout Enhancement Kit
      3.3- Added F-15I_Raam decals folder as it occurred to me not everyone has that specific Raam decal folder name
       
      3.2-Fixed an error in the F-15I Ra'am's AIrcraftdata section and updated all variant's gross weight's thanks to Fanatic Modder bringing to my attention that the wing pylons weights were added twice to the aircraft's mass. Also more refinements to the AI statements for happy wingmen!
       
      3.0- Best update yet! Redone AI statements for all Strike Eagle Variants, your wingmen and all AI will finally be able to drop dumb bombs on target! Also fixes AI strafing runs and the Strike Eagles will be able to strafe ground targets with accuracy! Also added some nice hanger and loading screens to the F-15SG as some extra eye Candy! Enjoy your new wingies!
       
      Update 2.5-Fixed CBU Attack loadout! Updated FM even more! Suggestions always welcome!
       
      This is a FM and loadout enhancement package first started by Crusader to kinda bring the Strike Eagle family more up to date with recent advances in SF2 modding ability! This mod changes the order of release for the CFT weapon stations and allows for more customized loadouts in the loadout menu before a mission. These changes along with a new STRIKE loadout of MK82's allows the AI to more easily hit a target. The FM changes are just updates to the FM and more realistic gross weights/Loaded weights etc and should help the AI better manage Flying the Strike Eagle and all its variants. Small updates were also made to the LANTIRN systems of all the jets. Also is an updated F-15i skin touched up by me. This pack covers the F-15 Strike Eagle variants from FastCargo's F-15 Super Pack including the
      F-15E
      F-15E_04
      F-15I
      F-15K
      F-15S
      and F-15SG
       
      Now we just need a new strike eagle cockpit!
       
      Thank you especially to Fastcargo for his F-15 pack and crusader for starting the FM mod, and anyone else who has contributed to the F-15's and everyone on CA!
      If I've messed anything up feel free to PM me and I can see what I can do to fix the issue! Happy SCUD Hunting or Iranian nuclear bunker busting!
      Submitter Spudknocker Submitted 03/08/2016 Category F-15  
×

Important Information

By using this site, you agree to our Terms of Use, Privacy Policy, and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..