Week 1: Lift, Thrust, and, Drag
- Trevor Pierre
- Jun 1, 2022
- 3 min read
Updated: Jun 9, 2022
This past week, I was able to put a lot of time into this, and made a good amount of progress. I started out this week by switching to Unreal 4, as mentioned in my last post. This was really due to the scope and scale of this project, along with the fact at Unreal 5 is still super new.
After that, I went through a couple of different iterations relatively of lift/drag generation. I starting by using the Flying Template that Unreal provides, but ended up switching to a Character Derived Class so I could take advantage of the Character Movement Component. This allows me to add force without having to enable simulation of Unreal’s Physics System.
On one of my first iterations using the Character Derived Class, I thought it would be best to LERP in-between values for my Lift and Drag Coefficient calculations. But after doing some more research I found that you can mathematically calculate this using Thin Airfoil Theory, and Lifting Line Theory. (Picture and info taken from this site)

The latter of the two formulas is what I ended up using as my final formula, but they both have a slight issue of only really being useful up to the maximum Lift Angle. So, they can’t accurately calculate the Lift/Drag Coefficient of a stalling plane. Thankfully, I won’t have to implement stalling until much later in this project.
Here are some examples of what my first few iterations looked like:
One of the consistent issues I was coming across was my lift only working in certain directions. Quickly I was able to find out that this was an issue with my vectors not all being in local space. Along with that my math seemed to be off by quite a lot. To troubleshoot these issues faster, and to create new iterations at a faster pace. I decided to switch over to using Blueprints and then rewrite everything in C++ when I liked where it was at. Another thing I started doing which quickly became very helpful was drawing a large amount of Debug arrows for my Lift and Velocity Vectors. On top of all that, as you can probably tell in the videos that I post with this Blog Post, I output as much data as possible onto the screen.
The arrows where a great addition because they’re an easy visual tell to see if my vectors are working in the right space or not. Here are some examples of them in action:
(This one specifically is of a Dual Lift Version I'll go into more detail about next post)

So, after fixing the vector localization issue, I moved on to tackling my next big issue which was the math. I decided to use a real plane’s data for the Lifting Line Theory Formula, instead of trying to generate my own. The plane I ended up using was the Cesnea 310/320, and the data referenced can be found here (This isn't the same plane that's my skeletal mesh by the way).
Before doing this, I was only able to have a plane that could take off really fast and keep flying till it exited the playable zone as seen in the video above.
But after the addition of the real-life airplane data, tinkering with the numbers, and generating weight by myself. I was able to have a plane achieve pretty level flight. The angle of attack is a bit higher than I’d like it to be to do this, but overall, I’m pretty surprised I was able to accomplish this within a week.
Here is some actual footage of pretty level flight and using a line trace to show off how the plane can climb and descend:
I also took the time to add in some asset pack objects such as a plane skeletal mesh, and a basic environment that it can fly around in. This was also basic set up for this week which is the implementation of basic flight controls. Pitching the plane up and down to change the angle of attack is basically already completed, and I’ve already put a good amount of time into the roll, and then all that will be left is the yaw controls. But more info on that on the next Blog Post!!
Thank you so much for reading, and if you have any questions, please feel free to reach out!!
Comments