Airfoil
![]() The Airfoil object can be used to apply aerodynamic forces to any object supporting physics, like a RigidBody-based airplane fuselage. This allows you to realistically simulate aircraft, sailing boats, submarines or any other object moving through a fluid. Used with the Car object, airfoils can also be used to set up race cars that behave more realistically (down force simulation). Furthermore, physics can be influenced by wind, if the Airfoil object is linked to a Wind object. You can visually apply ('attach') an Airfoil to any object in the scene, launch the simulation and see what happens. After adding the Airfoil object to your project, you can configure it by double-clicking it in the Object List. ![]() Checking this option helps you see the airfoil reference geometry runtime. This is useful for example when testing airfoils that can be controlled and rotate about their axis. The bigger the airfoil surface, the greater the lift and drag forces produced. Note that lift force is only generated when the angle of attack is below approximately 14 degrees. When this option is checked, no lift forces are produced. The airfoil will only produce drag forces, simulating a generic body with a frontal projection area equal to the airfoil surface area (see above). This feature can be used to simulate air friction more realsitically than simply using RigidBody object's damping parameters. NOTE: when this option is not checked, the Airfoil object still simulates drag forces (besides lift), but only those produced by a flat object like a wing or a sail. The bigger the ratio, the smaller the effect of drag forces on the airfoil. In general, reducing this factor makes a plane less realistic but easier to control. Setting this factor to any non-zero, positive value will automatically apply a force to the object linked to the airfoil (e.g. airplane fuselage) to prevent it from banking/pitching too much. The bigger the value, the stronger the force applied. This option helps you setup aircrafts that tend to fly horizontally and are easier to control. Enabling auto-balance for more than one single airfoil attached to the same aircraft is not recommended. You should only enable auto-balance for one single airfoil per aircraft (usually the main wing). You can make the airfoil interactive by checking the box next to the input controls (Decrease angle control, Increase angle control). This option is typically checked for airfoils that will work as elevators, rudders, ailerons etc. Please note that this option must be unchecked if you want to control the airfoil by manipulating its internal value, for example by using the Script object. See internal values table below for more. Please note that delays should be set to 0.0 if proportional controls are used (see ConfigureControls for details). For information about the remaining controls, please click here. Airfoil is a fantastic asset. However, in order to create systems that work as expected (e.g. a flying plane) it is recommended that you start by using as few airfoils as possible, to keep things simple. To make your own airplanes it is recommended that you use the AircraftDemo.3dr project as basis. This is basically a RigidBody object shaped like a plane. Mass distribtuion and weight are based on a Cessna 170. When using your own RigidBody models, start placing Airfoil objects close to the horizontal plane passing through the center of mass. This should give you a stable setup. You can find the center of mass by right-clicking the RigidBody object in the Vistual Editor, while holding the 'M' key pressed. Launch the project to see if the system can actually fly. If it can you may gradually move airfoils to real positions to reproduce behaviors peculiar to your specific aircraft type. While freely experimenting with Airfoil surface area and lift-to-drag parameters is highly recommended, please keep in mind that you usually get better results by using real airplanes' specifications as a reference. The following internal parameters can be accessed by using other objects like EventOnValue or Script: |
||||