Tutorial : Section 2


Create the aft section : the TAIL sub-assy TAIL

new concepts : create a sub-assy - cover templates

We shall create the TAIL sub-assy which will contain the aft part of the fuselage and the fixed part of the rudder. Select the Sub-assy|New Sub-assy menu option. An input window is displayed on the right of the screen which allows you to input the sub-assy name. Write "tail" in the input data field. Validate by clicking on the OK button. The sub-assy est created and a new icon is displayed on the icon bar (in the following, we shall call it the sub-assy bar) at the bottom of the screen.

fuselage aft part

We shall generate automatically this part of the fuselage on the basis of the "fusetemp" templates. Select the Template|Cover Template menu option. In the input window which is displayed on the right of the screen, the currently selected class is "fusetemp" (there is at the moment only one class available). The default type of cover is cover section, it is fine. We must now select the templates which will be used in the cover process : the coordinates of the selected templates are displayed in two 3-coordinate rows just below the cover type selection panel. Select the templates which origin are located at :

0.000 -15.000 -0.900
0.000 -8.000 -2.200

To do that, use the Up/Down arrows beside the 3-coordinate rows. The cover ought to be seen from the exterior of the aircraft : this is the default option of the Int/Ext button pair. Make sure that the selected icon of the sub-assy bar is the "TAIL" icon. Validate by clicking on the cover button. The input window is cleared. Look at the Graphic Editor blue-navy screen : a set of polygons has been drawn to cover the two selected templates.

Select the Template|Cover Template menu option again. Select the dual summit cover option. Select the first template in the template list :

0.000 -15.000 -0.900

Enter the following numbers in the input data field labeled summit of the cone :

0.000 -15.700 -0.500

Enter : 1.350 in the ridge length input data field. Validate by clicking on the cover button. The very aft part of the fuselage is created.

apply a texture on a set of polygons

new concepts : the Model Editor - code pages - assign a texture - insert an instruction

To apply a texture on the fuselage, we need to launch the Model Editor. There are three ways to launch the Model Editor :

A window is opened which displays the Model Editor screen. The instruction panel contains the following instruction list :

UGLY100    MASTER
TAIL         SUBASSY,T     click to open sub-assy
ENDBLOCK

This is the high level code associated with the model. At the moment, the listing looks very simple : the beginning instruction, the TAIL sub-assy declaration, the ending instruction. To display the code associated with the sub-assy, you just have to double-click on the data field of the sub-assy declaration instruction (it is presently filled with the "click to open sub-assy" label). You could also activate the Code|Open sub-assy menu option after having selected the sub-assy declaration instruction (keypad shortcut : ALT-C, S). The last option available is to activate the Page|TAIL menu option. The Page menu allows you to have a direct access to all code pages from the menu.

The code page associated with the TAIL sub-assy is longer : it is composed of the declaration of all the polygons generated by Aircraft Designer 2000 during our previous operations.

TAIL      SUBASSY,T     click to come back
TPOLY 4; 2, 3, 15, 14
TPOLY 4; ...
...
RETURN

Select the second line of the list by clicking on it or on the left margin beside it. Note that the status bar at the bottom of the Model Editor displays the number of lines of the current code page and the index of the currently selected line. We shall insert an insert an instruction right there.

Click on the second button of the tool bar or press the INSERT key of the keypad. An instruction selection window is displayed. Select the Color/Texture option in the left panel. The right panel is modified. Select the Texture option and validate the instruction insertion by clicking on the OK button. The listing now displays :

TAIL      SUBASSY,T     click to come back
TEXTURE ?
LIMITS undefined limits
TPOLY 4; 2, 3, 15, 14
TPOLY 4; ...
...
RETURN

Double-click now on the question mark (?) in the data field of the TEXTURE instruction. A texture selection window is displayed. In the list of available texture files displayed on the right of the window you will find the "fusaft" bitmap file (it should be here if you did not forget to copy the *.BMP files in the "Ugly100" directory as I asked you to do at the beginning of this tutorial). Select the file by clicking on its name. The bitmap is displayed in the left panel of the window. Have a look to the "radio-boutons" in the right lower part of the window. We shall use the default options (full and side). Validate by clicking on the OK button. The listing now displays :

TAIL      SUBASSY,T     click to come back
TEXTURE fusaft
LIMITS undefined limits
TPOLY 4; 2, 3, 15, 14
TPOLY 4; ...
...
RETURN

texture limits

new concepts : save button - scale factor - create a polygon - capture mode - texture support - the grid

To assign limits to the texture, we need to come back to the Aircraft Designer 2000 main screen. The texture limits must be defined with a polygon. We shall create the polygon in the Desk and then declare it as a texture support. To come back to the main screen, you just have to click in the exit mark (x) in the upper right corner of the Model Editor window. Don't forget to save you job as you progress in the design of your model (third button of the Aircraft Designer 2000 tool bar).

We shall create the texture support polygon from scratch and register it in the Desk. Select the Desk by clicking on the "Desk" icon (sub-assy bar). To ease you work, use the Up/Down arrows beside the scale factor data field in the lower right corner of the screen to magnify the image of the model. Select a 20 pixels/ft scale factor. Center the image by using the horizontal scroll-bar below the navy-blue Graphic Editor screen.

To activate the polygon creation mode, click on the fourth button of the tool bar (or activate the Draw|New chain menu option). The fixed window of the chain editor is displayed on the right of the screen. At the moment, we shall not use this window and work directly on the screen.

Move the mouse in order to get the cross-hair cursor around the aft extremity of the fuselage. The coordinates of the current position of the cursor are displayed in the control window in the upper right part of the screen. Close the cursor to the point located in :

y = -15.700 z = 0.850

When you are just on this point (which is one of the vertices of the structure), this one will be highlighted by a small white square. Press the SHIFT key on the keypad and click on this point in the mean time. The point is "captured" and will be used as the first point of the chain of vertices which defines the polygon.

To help you when trying to locate a point on the screen, you may activate the "grid" mode. To do this, you just have to select the View|Grid menu option.

Bring now the cursor at a point defined by :

y = -2.400 z = 1.500

This is a vertex of a "fusetemp" template. It is highlighted by a white square as long as the cursor moves close to it. Press the SHIFT key and click on this point. There are actually two points at the same location on the screen. A small temporary panel will be displayed in order for you to select one of them. Select the xt = 0.469 line in this panel by clicking on it. A second point is added to the chain. Repeat the operation with the point located at :

y = -2.400 z = -2.500

to capture the third point of the chain.

If nothing went wrong, you should see the following list in the chain editor window :

0.000 -15.700 0.850
0.469 -2.400 1.500
0.469 -2.400 -2.500

Validate the created chain by clicking on the poly button (make sure that the Desk sub-assy is selected : if not, press the "Desk" icon in the sub-assy bar before you validate the chain creation). The window is cleared and the polygon is displayed as a triangle with a white and yellow line. This indicates you that this is the currently selected chain.

To declare the polygon as a texture support, activate the Utilities|Define chain as support menu option. If you activate the Utilities|Show texture support menu option, the triangle will be displayed with a violet and yellow line. It indicates that this is the currently selected texture support...

Launch the Model Editor (tenth button of the tool bar). Select the TAIL suib-assy code page (double-click on the "click to open sub-assy" data field). Now double-click on the "undefined limits" data field of the LIMITS instruction. The texture support selection window is displayed. Click on one of the blue-green arrows. The window will be updated to display the minimum and maximum coordinates defined by the previously defined texture support :

ymin, ymax : -15.700 -2.400
zmin, zmax : -2.500 1.500

As it is the only registered texture support, it should be the right one ! Validate by clicking on the OK button. The listing is updated to display :

TAIL      SUBASSY,T     click to come back
TEXTURE fusaft
LIMITS -15.700,-2.400,-2.500,1.500
TPOLY 4; 2, 3, 15, 14
TPOLY 4; ...
...
RETURN

There are 28 lines in the list : select the 28th line (the last one) and press the INSERT key. As you would bet, the instruction selection window is selected. The default option is RETURN : validate (OK button). This RETURN instruction will help us isolate the already created polygons from the other parts we intend to create in the TAIL sub-assy later on. Exit the Model Editor and go back to the Aircraft Designer 2000 main screen.

the fixed part of the rudder

new concepts : align a point on another point - create an intersection - the C shortcut - duplicate and flip a polygon - texture mask

Select the TAIL sub-assy by pressing on its icon on the sub-assy bar. Select a 50 pixels/ft scale factor and move the image on the screen with the scroll-bars in order to have a good view of the rear of the fuselage.

Activate the chain creation mode. Chains are used to create polygons and open lines. Move the cursor close to the point located at :

y = -15.700 z = 0.850

This time, press the CTRL key and click on the left button of the mouse. This will not capture the point as it did before. It creates a new point with the same coordinates as the existing point it is aligned on. Click then on a point located at :

y = -15.700 z = 4.500

It's not that easy, is it ? You created a point located at :

y = -15.750 z = 4.480

This is not that big an issue. Go to the chain editor window. Enter the number -15.700 in the input data field of the y coordinate. Enter the number 4.500 in the input data field of the z coordinate. Click on the modify button. That's it !

Now create a third point located at :

y = -14.500 z = 4.500

We shall now build the fourth point of the rudder shape by having Aircraft Designer 2000 calculating an intersection. Click on the inter. button in the chain editor window. The lower part of the window is modified and now displays a list of instructions and a few more buttons. As a matter of fact, an OK button stands beside a label written with red bold characters. This label ask you to select a plane. The plane you ought to select is a plane in which will be located the intersection point.

Move the cursor around the point located at :

y = -8.000 z = 1.400

When the cursor is close to it, it is highlighted by a white square. Click on it. One of the polygons to which this point is bbelonging is now drawn by a marroon-green line. Of course it's not the right one (Murphy's law...). We want to select the polygon which is right over the fuselage. As we are in a side view, this one should appear as a single line. That's not an issue : press the C key as many time as it takes to get the right polygon drawn with a marroon-green color. Once you are done with it, click on the small OK button beside the red label in the chain editor window. The button will shift a little bit lower, the select a plane label is now written with black italic characters and the label just below (select a point) turns red.

Move the cursor close to the point located at :

y = -14.500 z = 4.500

and click on it. It will be highlighted by a red square. Click on the small OK button. The button shifts again, the select a point label is now written with black italic characters and the label just below turns red (select another point or a vector). We shall use the second option. Enter the following numbers in the input data fields of the vector coordinates :

0.000 1.000 -2.000

Click on the small OK button (which is cleared) and then on the other OK button at the bottom of the chain editor window. The intersection is created. The chain editor window now displays the list of the four vertices which define the rudder shape :

0.000 -15.700 0.850
0.000 -15.700 4.500
0.000 -14.500 4.500
0.000 -12.779 1.059

Validate the created chain by clicking on the poly button . The created polygon is drawn with a white and yellow line on the Graphic Editor screen.

That is just one side of the fixed part of the rudder. We must now create the other side of it. Activate the Draw|Copy/Translation menu option. As usual, a fixed window is displayed. We just want to create a copy of the currently selected polygon. Enter :

0.000 0.000 0.000

in the input data fields of the coordinates of the translation vector. Click then on the dupl. + move button. A polygon similar to the currently selected one is created. It needs to be reversed in order to be visible from the other side of the aircraft. Activate the Draw|Flip menu option : that's it !

Let's launch the Model Editor. Display the code page associated with the TAIL sub-assy. You will notice that two lines were added at the end of the list. We shall assign a texture to these two polygons. Highlight the 29th line by clicking on it (it is the first of the two instructions that we have just created). Press the INSERT key and insert a TEXTURE/LIMITS combined instruction pair (see above how to do that). Double-click on the question mark in the TEXTURE data field. Select the "Rudder" file. Select then the half2 mask option. You will notice that a mask is applied on the bitmap displayed in the left panel of the window. Keep the default orientation option (side) and validate by clicking on the OK button. At the moment, we shall not assign the texture limits. Let us have a look to the sorting logic of the two parts that we have created (the aft part of the fuselage and the fixed part of the rudder).

allowing the flight simulator to sort the parts

new concepts : JUMP PLANE instruction - seal plane - label - assign a destination address to a JUMP instruction

Come back to the top of the instruction list and select the line #2. At the moment, it is a TEXTURE instruction ("TEXTURE fusaft"). Press the INSERT key, select the Jump option in the left panel of the instruction selection window and the Jump Plane option in the right panel. Validate by clicking on the OK button.

Two lines have been inserted into the list :

TAIL      SUBASSY,T     click to come back
JUMP PLANE ?
PLANE undefined vector
TEXTURE fusaft
LIMITS -15.700,-2.400,-2.500,1.500
TPOLY ...

You will now insert six other instructions just below the JUMP PLANE / PLANE combined instruction pair in order to get the following sequence :

TAIL      SUBASSY,T     click to come back
JUMP PLANE ?
PLANE undefined vector
GOSUB ?
GOSUB ?
RETURN
GOSUB ?
GOSUB ?
RETURN
TEXTURE fusaft
LIMITS -15.700,-2.400,-2.500,1.500
TPOLY ...

The JUMP PLANE / PLANE combined instruction pair is a conditional jump. This kind of conditional jump is required by FS98™ and CFS™ to define which of the fuselage or the tail must be drawn first during the viewing process. The result of the jump instruction depends on the position of the observer with respect to the junction plane between these two parts. We need to define this junction plane (a junction plane is called a seal by Aircraft Designer 2000 : see the program help file to learn more about the seal planes and their use). In that particular case (fuselage vs. rudder), this is the plane we already used to build the intersection point which is part of the rudder definition. This plane is based on a polygon of the TAIL sub-assy. We need to declare it as a seal.

A 3D model is composed of several sub-assemblies. As an example, let us consider the fuselage and the two wings. When the flight simulator displays the model on the screen, the sub-assemblies must be sorted in order to be drawn in the right order. The sorting process depends upon the position of the "virtual observer" with respect to the model. If he stands on the right side of the aircraft, the flight simulator must draw the left wing, then draw the fuselage and eventually draw the right wing. Therefore, the left wing is partly covered by the fuselage, which is covered by a part of the right wing. If the virtual observer stands on the left side, the order must be reversed. This is a simplistic example. There are many sub-assemblies in a model. Yet, it is always possible to say : if the observer is on the right side, or below, or in front of a given plane, the sub-assembly set "A" must be drawn before the sub-assembly set "B", in the other case, the sub-assembly set "B" must be drawn before the sub-assembly set "A".

Neither FS98™ nor CFS™ perform that sorting process by themselves : they must be given instructions to do that. This is the purpose of the JUMP PLANE and GOSUB instructions :

JUMP PLANE    X01     
PLANE P01 //according to the observer position with respect to plane P01...
GOSUB A //... draw "A" before "B"

GOSUB B
RETURN
X01     GOSUB B //... or draw "B" before "A"

GOSUB A

RETURN
...

FS2000™ uses a new "viewing engine" , based on a different algorithm, which does not need this kind of instruction sequence to perform the sorting process.

The GOSUB instructions work as "subroutine calls" in a program. JUMP PLANE instructions can be nested in the "subroutines". For instance :

JUMP PLANE    X01     
PLANE P01 //according to the observer position with respect to plane P01...
GOSUB A //... draw "A" before "B"
GOSUB B
RETURN
X01      GOSUB B //... or draw "B" before "A"
GOSUB A
RETURN

A JUMP PLANE X02
PLANE P02 //according to the observer position with respect to plane P02...

GOSUB C //... draw "C" before "D"

GOSUB D
RETURN

X02 GOSUB D //... or draw "D" before "C"

GOSUB C
RETURN
...

What does it mean :

according to the position of the observer with respect to plane P01, draw "A" before "B" or draw "B" before "A"... when drawing "A" : according to the position of the observer with respect to plane P02, draw "C" before "D" or draw "D" before "C" ("C" and "D" can be considered as sub-sub-assemblies of "A").

This is a little bit tricky, but you must master this kind of technique if you want to avoid undesirable "transparencies" when looking at the model under certain angles. Before you go into the detailed design, you should consider thinking at the model structure for a few minutes. You need to come up with a model breakdown into sub-assemblies that you can sort according to a logical and simple algorithm. It looks like programming the model : actually, you will get accustomed to the process very quickly !

Exit the Model Editor and go back to the Aircraft Designer 2000 main screen. Move the cusror around the point located at :

y = -8.000 z = 0.450

There is a fuselage vertex at this point : select it by clicking on the point. A polygon which contains this point will be highlighted. This is not the right one : press on the C key as many times as needed to highlight the adequate polygon. It is the polygon which covers the fuselage and it should appear as a single line if you are in the side view. Activate the Utilities|Add chain to seals menu option. Launch again the Model Editor and select the code page associated with the TAIL sub-assy.

Double-click on the data field of the third instruction (it should be a "PLANE undefined vector" instruction). A seal selection window is displayed. Click on one of the blue-green arrows at the top of the window. There is just one seal in the list, it will be selected at once :

distance : -1.966
coordinates : 0.000, 0.071, -0.997

Validate the sélection by clicking on the OK button. The listing is updated :

TAIL      SUBASSY,T     click to come back
JUMP PLANE ?
PLANE -1.966;0.000,0.071,-0.997
GOSUB ?
GOSUB ?
RETURN
GOSUB ?
GOSUB ?
RETURN
...

A JUMP PLANE works in that way : if the observer stands on the one side of the plane defined by the PLANE instruction, the flight simulator viewer will execute the two first GOSUB instructions, if he stands on the other side, the viewer will execute the second set of GOSUB instructions. The JUMP PLANE instruction must address the first GOSUB instruction of the second set.

Double-click on the question mark (?) in the data field of the JUMP PLANE instruction. The cursor is modified and figures now a finger. Have the finger pointed at the seventh instruction of the list (the first GOSUB instruction after the RETURN instruction) and click on it. This instruction has no label : a label input window is displayed. Enter "T01" in the data field and validate. The label input window is cleared and the cursor turns back to its former cross-hair shape. The listing is updated to take into account the new label :

TAIL      SUBASSY,T     click to come back
JUMP PLANE T01
PLANE -1.966;0.000,0.071,-0.997
GOSUB ?
GOSUB ?
RETURN
T01 GOSUB ?
GOSUB ?
RETURN
...

We now need to give a label to both parts of the sub-assy : the fuselage part and the fixed part of the rudder. Double-click on the address field of the tenth instruction (TEXTURE fusaft). The same label input window as above is displayed. Enter "fuse" and validate. Go then to the 37th instruction (TEXTURE Rudder) and proceed in the same way to call the label input window. This time, enter "rud" and validate.

Go back to the top of the instruction list. Double-click on the first undefined question mark (instruction #4). The finger is displayed. Have the finger pointing at the address field of the 37th instruction (this one that was labeled "RUD" just before) and click on it. Use the vertical scrollbar to help you navigate in the instruction list. The cursor turns back to the cross-hair shape and the "RUD" label is now replacing the question mark in the data field of the GOSUB instruction. Go ahead with the question mark of instruction #5. Double-click on it and point the finger at the address field of instruction #10 (this one with the "FUSE" label).

To complete the operation, you need to assign the two remaining GOSUB in order to have them calling the "FUSE" and "RUDDER" sub-parts in the opposite way. The listing should be updated as follows :

TAIL      SUBASSY,T     click to come back
JUMP PLANE T01
PLANE -1.966;0.000,0.071,-0.997
GOSUB RUD //the rudder is drawn
GOSUB FUSE //and then the fuselage
RETURN
T01 GOSUB FUSE //the fuselage is drawn
GOSUB RUD //and then the rudder
RETURN
FUSE TEXTURE fusaft
LIMITS -15.700,-2.400,-2.500,1.500
TPOLY ...
...
RETURN
RUD TEXTURE Rudder
LIMITS undefined limits
TPOLY ...
TPOLY ...
RETURN

The TAIL sub-assy is quite completed : we still have to define the rudder texture limits. We shall do it a little bit later on.

 


Go to the next section
- January, 2000 - Copyright Hervé Devred -