Table of Contents

Modelling

Robin DR-400 - Example Aircraft

In the SDK we have included an entire aircraft project, the Robin DR-400, including its 3D model and textures. By following the steps of the aircraft tutorial the necessary development programs will be installed and at the end of the tutorial the DR-400 will be installed as an additional aircraft in the simulator.

Please note that the 3D model of the Robin DR-400 provided is copyrighted and may not be used for any other purpose then demonstrating how to create aircraft for the Aerofly FS 2.

Preparing a Custom 3D-Model

After installing the SDK we will now go through the steps of converting a custom made 3D model from 3Ds Max into the Aerofly FS 2 Flight Simulator.

To achieve an error free export some preparation is needed to be done first. For the DR400 example aircraft all these steps have already been completed so that this plane can be used as a reference.

Overview

This overview shows the necessary steps to get an aircraft model from a 3D design software like 3D Studio Max or Cinema4D into Aerofly FS 2. The steps are described in more detail later in this chapter.

Steps 1. to 6. have already been done for the example aircraft that comes with this SDK so that you can start with step 7. right away and use the example aircraft as a reference for your projects.

  1. Create a new folder using lowercase letters a-z, digits 0-9 and the underscore only (like c172, b747, f4u, …). This folder will be referred to as the intermediate folder. The name of this folder will be the internal name of the aircraft (the name displayed in the aircraft menu can be set later) and determines the names of several files. In the following, we will choose the name to be xxxx.
  2. Copy and/or export all necessary source texture and sound files to the intermediate folder. The files must be in a format supported by the Aircraft Converter (.bmp / .tif / .png / .wav).
  3. Prepare the 3D model as described below.
  4. Export the 3d model to the intermediate folder using the filename xxxx (this creates the 'xxxx.tgi' file) as described further down.
  5. Create the aircraft definition and configuration files. You can create these files from scratch using the section 'Aircraft Definition' in this document as a reference, or you can copy and modify the files from an existing aircraft. If you just want to get the 3d model into the simulator to check the graphics, simply copy the 'template.tmc' and 'template.tmd' files from the SDK's 'template' folder and rename them to 'xxxx.tmc' and 'xxxx.tmd' respectively. Change the name and description in the .tmc file and replace the entry 'Box' in the GeometryList parameter at the end of the .tmd file by the names of all your geometries.
  6. Add the 'model.tmc' file. For the beginning, you can copy the 'model.tmc' from the SDK's 'template' folder and fine tune texture sizes later.
  7. Run the aircraft converter. Right click on the 'xxxx' intermediate folder and choose Aerofly FS 2 Aircraft Converter from the context menu and start the conversion.
  8. Your new aircraft is available in Aerofly FS 2 now. Test and refine the dynamics, graphics and sounds as desired.

Single 3D Model

Aerofly FS 2 works with just one 3D for an entire aircraft; there is no need to provide an external and internal model separately. The Aerofly FS 2 engine is optimized to draw only those objects that are in the view of the camera.

Generic Modeling Units

The units of the aircraft model should be set to 'Generic Units'.

Alignment and coordinate system

The aircraft should be aligned to the x-axis as the forward flight direction, the positive y-axis towards the left and the positive z-axis pointing upwards. The origin of the model coordinate system should be placed close to the center of gravity.

Animated objects should have their axis and rotation pivots set to a plausible location. Hinged objects should have their local origin in their hinge location. The pivots and axes set in 3D Studio Max will be exported to the log files which will be used later on to animate the objects in the graphics section of the .tmd file.

Animated objects should be positioned in the following neutral positions before export:

Individual objects

All animated objects like the control surfaces (rudder, aileron, elevator) and trim rudders, switches and knobs, gear parts and so on have to be individual objects in the 3D model so that they can be animated independently from each other. The Aerofly FS 2 rendering engine is optimized to merge objects in the same GeometryList when the aircraft is loaded, so there is no real benefit combining objects. Experience has shown that development time can be reduced if all switches and knobs are available as individual objects right away and the model doesn't need to be changed every time a developer decides to animate a certain switch.

Display screens have to be separate objects so you can set the display brightness independently of the background lighting later.

Object naming conventions

3D objects will be referenced by their name for display and animations, so it is essential that each object has a unique name. Objects should be named logically, and the name must not contain spaces or special characters (it is recommended to use A-Z, a-z, 0-9 only). While the object names have no meaning to the simulation, it is easier for everyone working on the project to use standardized names. We use the 'UpperCamelCase' convention, i.e. we capitalize the first letter of each word to get short but readable object names.

Advisable names are e.g.:
Fuselage, LeftWing, LeftAileron, LeftFlapInner, LeftSlat1, LeftSpoiler1, LeftSpoiler1LinkUpper, LeftStabilizer, LeftElevator, VerticalStabilizer, Rudder, LeftGearUpper, LeftGearLower, LeftFrontWheel, LeftPropeller, LeftBlade1, LeftBlade2, VirtualCockpitStatic, SwitchBatteryMaster, MCDUPushButtonA, CanopyFrame, CanopyGlass, COM1FrequencyKnobSmall, NAV1FrequencySwap, LeftEngineFan, LeftEngineExhaust, LeftEngineRevererFlap0, PrimaryFlightDisplayPilot, NavigationDisplayCopilot,…

Materials

Materials are defined by the set of textures they use and by tags or hints that describe the intended usage. A simple material just needs a diffuse texture, but Aerofly FS 2 also supports ambient, specular, bump/normal, reflection, (self-)luminance and illumination textures to define the material parameters at each texel. Use the 3D software's standard material and the following texture slots:

We use the suffixes '_color', '_ambient', '_bump', … to distinguish the different textures that make up one material. These suffixes are not required but allow the aircraft converter to automatically add textures to a material if they have the same base name, and the 3D modeling software doesn't support a particular texture slot.

Textures

All textures must be square power-of-two images with a pixel depth of 24-bit RGB .bmp, 24/32-bit .png or .tif files. Bump maps can be 16-bit grayscale textures. There is no support for .psd files in the converter, the different layers for diffuse, ambient, .. have to be exported to the intermediate folder first. You can keep a .psd file assigned to a texture slot in the 3D software if it has the name as the bitmap file except for the suffix.

It is recommended to create all textures at a resolution of 4096×4096 or even 8192×8192 pixels, and use the appropriate converter setting to reduce the actual size used in the simulator. The smallest size recommended is 32×32 pixels, the maximum supported texture resolution by the engine is currently 4096x4096px. The total compressed texture amount should be in the range of 150 MB to ensure compatibility with all platforms. The final texture resolution can be set in the 'model.tmc' file.

Refresh Texture assignments

If necessary, refresh the texture assignments in the 3D modeling software to use the exported textures in the intermediate folder. Again, you can keep a .psd file assigned to a texture slot in the 3D software if it has the name as the bitmap file except for the suffix. The converter ignores the texture suffix, so you can change from .bmp to .tif without changing or exporting the 3D model again.

Material Tags or Hints

Each material can define tags or shader hints to support the selection of the best shader when the aircraft is loaded. Shader hints can be combined to describe the material properties as precise as possible. Currently, the following shader hints are supported:

exterior everything that is not in the cockpit/cabin, outer faces of windows and canopy
interior everything that is in the cockpit and cabin, inside of windows and canopy
default
standard
glass
canopy
window
instrument
darken

The hint can be added to a material in 3D Studio Max as follows:

  1. Select an object that uses the selected material
  2. Open 'Animations' → 'Parameter Editor'
  3. Select 'Add to Type' → 'Selected Object's Material'
  4. Select 'Parameter Type' → 'String' and
    'UI Type' → 'EditText'
  5. Enter 'shader' in the 'Name' textbox
  6. Click the 'Add' button

Propeller

Aerofly FS 2 needs two models for the propeller. First is the static / solid model including the spinner / hub and the blades as separate objects. Second is the propeller disk, this is the blurred hull of the spinning propeller. The propeller disk needs to have a planar mapping from the front such that the disk fills the UV unit square. The corresponding texture is applied to the prop disk such that the bottom is at the center and the top is at the tips, left side is facing forward and right side is applied onto the back. Refer to the DR-400 example aircraft and the 'prop_color.bmp' for an example.

Exporting from 3D Studio Max

If you haven't done this yet, install the export plugin as described above. Load the aircraft in 3D Studio Max and select 'Export' → 'Export' and select the aircraft's intermediate folder. Select 'IPACS TGI Exporter (*.TGI)' and save to 'xxxx.tgi'. Select the output option 'Aircraft model' in the exporter menu and set the scale factor to


After all parameters have been entered a click on the button 'Export' will launch the export process. The export summary will notify the user about any errors in the export process and will summarize the total polygon and vertex count and other statistics.


Converting a 3D-Model to the Engine-Format

When you have collected all required files for an aircraft in the intermediate folder, run the aircraft converter: right click on the 'xxxx' intermediate folder and choose Aerofly FS 2 Aircraft Converter from the context menu. This opens up the converter window and the aircraft's internal name xxxx should be displayed. Start the conversion. If run for the first time, the converter will convert and compress all textures and render the previews. This might take some time depending on your hardware.

The next time you convert the aircraft, the converter will only converter will process only those textures that have been changed. You can always force the conversion of a texture or preview by deleting the generated file.

If you want to change the output folder, you can set this in the 'config.tmc' file located in your 'Documents/Aerofly FS 2 Aircraft Converter' folder. Change the entry 'DesktopFolder' to match your folder.

The same folder contains the converter's log file 'tm_aircraft_converter.log', which sometimes is helpful for troubleshooting, as well as the 'report.txt' in the aircraft's intermediate folder.

Aircraft 3D Modeling Guidelines

We use the following 3d modeling guidelines for the aircraft in Aerofly FS 2 and provide them for reference. These requirements are not mandatory and you can get an aircraft into Aerofly FS 2 without adhering to each requirement (none of our models adheres to all). However, experience has shown that these best practices make it easier for all people involved in the project and create models that run smoothly on all platforms. If you ever plan to release your aircraft for different platforms, it is strongly recommended to fulfill as many requirements as possible.

Summary

An aircraft model for Aerofly FS 2 includes the exterior and interior in one model. The overall polygon budget is 400k triangles and 200k vertices. The total compressed texture amount is in the range of 150 MB; this allows up to 2 GB of uncompressed textures at a resolution of 4069×4096. A unique, non-shared, non-degenerate texture mapping is required for ambient occlusion, illumination and texture baking. The mesh has a clean topology without T-junctions and long triangles. The dimensions are correct and the model is set up using generic units, where one generic unit corresponds to some metric unit.

The following guidelines should clarify what we consider being a clean model and should help to integrate a model into Aerofly FS 2. None of our aircraft models adheres to all items entirely, but this is what to aim for to have the finest aircraft in Aerofly FS 2.

Mesh

Textures

UV Mapping

Decals

Materials

Function 3ds max slot Texture file suffix
diffuse / color Diffuse Color _color
specular color + width Specular Color _specular
reflection/gloss Reflection _reflection
ambient occlusion Ambient Color _ambient
bumpmap Bump _bump
(self-)luminance Self-Illumination _luminance
illumination Filter Color _illumination

File Names