I am attempting to design mouse-aimed turning to control an aircraft in a 3D environment. To cut it short, you aim where you want to go, and the aircraft turns to face that direction (similar to War Thunder).
When turning an aircraft, it makes sense to use your elevator instead of your rudder (especially in long turns). If you need to turn 90 degrees left, it makes sense to roll 90 degrees left first, then use the elevator to turn, finally leveling out the aircraft once the target heading is reached.
Now, I want the user to be able to control the roll, but I also want the game to do it automatically when the player is not controlling it. My problem is conceptualizing what operations I need to do to get the target roll angle.
I managed to figure out that to align myself correctly, I need to align the plane that bisects the aircraft (the V plane) with the direction I want to move to (the D vector). The R angle is how much I would need to turn (in local angles) to achieve the derired orientation.
So, if I the player looks at the blue circle, the plane will roll right and hold that roll until it's almost aligned with the desired direction. At that point, it will unroll and level out.
Just figuring out the roll I need would be a big help. Preferably I'd like to get it done with dot and cross products, as these operations are already established and I have easy access to the up, right and forward vectors of the plane, as well as the direction vector.