What you need

 
 
Install ClearView under c:\SVKSystems.  Start ClearView, then select "Help" then "About" and check the version - it must be 4.98 or up. Close the program. Download  the latest ClearView code and save it over c:\SVKSystems\ClearView\bin\clearview.jar. The models in this tutorial are created in multiple steps. At the end of each step, all model files are saved as separate model.  The model name is constructed as xxModelNameyyy where xx is the lesson number and yyy is the step number. For example, 01FirstPlane001 is the model build in lesson 1, step 1.
 
Download Create Plane for ClearView: Part 1 - Model physics and extract it under c:\SVKSystems\ClearView. Check if all lessons models are listed under c:\SVKSystems\ClearView\models. 
 

Part 1 - my first plane

Step1 - basic file structure for plane model

 
In Windows File Explorer, navigate to c:\SVKSystems\ClearView\models\01FirstPlane001 You should see something like this: 
 
Open params.txt:
Params.txt is the file that holds all model parameters. It is used to set control the values that the physics simulation engine uses for simulation the flight performance and behavior of the model. verNumber 6 indicates the latest physics model and modelType 1 is for planes (0 is for helis).
Click on wavdata folder - it contains the sound files needed for a plane model (note: sound files for helicopter model are different):
Click on data folder - it contains 3 very important ac (ac3d) files:
 
body.ac contains the visual representation of the model.
colbody.ac contains model representation that is used for collision detection and interaction with all world objects.
fmodel.ac contains model representation that defines the models physics objects (like props, wings, flight surfaces) and is used by the simulators physics engine.
At this early stage, all these 3 files will contain the same data. This will be the physics data. We will gradually build the model physics objects in fmodel.ac and save the exact same data as body.ac and colbody.ac. That way we can visualize the physics object and start flying the model at this early stage. Once we finish with the model physics in fmodel.ac, we will create a new visual model in body.ac and corresponding collision model in colbody.ac.
We start by having the minimal data possible - all we have are 3 triangles representing the model wheels. If you open fmodel.ac you will see this:
 
Files body.ac and colbody.ac contain exact same data.
We have 3 objects named maingear1, maingear2 and tailgear. These objects have no meaning in fmodel.ac. They are used in body.ac (so we see them when we load the model) and in colbody.ac (so the model have some real parts that let's it stands on the ground).
The folder 01FirstPlane001 contains the minimum files you will need to start building a new plane. Let's load the model in ClearView:
We see the wheels (as expected...). The model will not move or do anything. Let's open the advanced settings:
We can see that ClearView created params section in the params file. The data in params section is enclosed between these lines:
#begin params
... data valuses ...
#end params
These are default data values for plane flight model (because we used modelType 1) If modelType was set to 0, we would have the default data for helicopter model. As we add parts to this model, ClearView will add sections in params.txt Each section will be named using part type and part name. For example, if we add a elevator servo, we will have section named servo.elevator. The "servo" is the part type and "elevator" is the part name.

Step 2 - XYZObject, Moving parts and Lift Surtfaces

Models have moving parts. For example, the plane elevator is a flat surface that rotates along the elevator hinges axe. ClearView provides means to define movable and breakable model parts. We will explain how to make breakable parts latter. In this step, we will explain how to make moving parts. The moving is important for the physical model (so ClearView knows elevator have been moved). Moving is also important for the presentation model (body.ac) so ClearView properly render the elevator part. 

Definition: Moving part is coordinate system represented by XYZObject and set of 3d objects that are grouped together. 

The grouping is achieved by using qualified names.  For example, if we have XYZObject representing the elevator hinge axis, and two 3d objects representing the left elevator and the right elevator (for a model with two elevator surfaces) we will group them in single part by naming them like this:

Elevator.XYZObject, Elevator.leftElevator and Elevator.rightElevator

This moving part name is Elevator and it will be able to move or rotate along any of the axes defined by the XYZObject. Both 3d objects (parts) - leftElevator and rightElevator will move togehter.

 Moving parts are used mainly in body.ac and we will visit them in latter lesson. For now, we learned that plane control surfaces that we see move when we move controls are implemented in body.ac using moving parts.

Definition: liftsurface is moving part that consist of XYZObject and single rectangular surface

The coordinate system is defined by XYZObject.  You import XYZObject from the Data folder (SVKSystems\ClearView\Data) and use it to create a new moving part or surface, Here is how XYZObject looks like:

 There is easy rule to remember the axes: The shortest axe is Y, the longest is Z and the one between them is X.

Here is example of lift surface:
Here is how I built this liftsurface:
I imported XYZObject from Data folder. I named it elevator.XYZObject. I created a single rectangle and named it elevator.elev In ClearView, this pair represents a single lift surface. ClearView associates the coordinate system (axes) defined by the XYZObject with that surface. The axes and named X,Y and Z and are defined by the XYZObject. In ClearView, you can move or rotate any surface along its axes by using servo objects.
Let's load model 01FirstPlane002 in ClearView. You will see this:
We can see the model gears, and the elevator object. For now, we can't move anything - our model is essentially a flat wing on 3 wheels and have no engine, servos or propellers. Hmmm ....wait a minute... Let's blow some wind... Go to Settings,  select "Weather Setup" and set the Thermal speed to 10 and Wind Speed to 10, then click "Accept". You will see the wind blowing the model around. When the model gets too far, press space bar to reset.
 Great - so far I built a simple model that is subject to the normal physics. In next steps, we will learn how to control that lift surface by moving or rotating it along the surface axes. This will teach us how to create control surfaces for planes - like elevator, ailerons, rudder etc. etc.
Before going to the next step, load ClearView, select "Weather Setup" and set all wind values to 0. Save and exit ClearView.

Step 3 - moving and rotating Lift Surfaces

 Let's see what makes the elevator in a real RC model move:

- We move the elevator stick on the Tx

- The model receiver picks that movement

- The elevator servo gets the input from the receiver

- The elevator servo rotates the elevator using a link.

So far in our ClearView model we only have the elevator liftsurface object. We need to define transmitter, receiver and servo objects for this model.

I load the model and add the following lines in params section of params.txt (using Advanced Settinsg):

modelTransmiters myTx

modelReceivers receiver1

modelServos elevServo

We save the params file, then load the file again by opening the Advanced Settings again. We can see that ClearView created 3 new objects - a transmitter named transmiter.myTx, a receiver named receiver.receiver1 and a servo object named servo.elevServo The naming convention for these object is [object type].[object name]

In the real model, I have to wire the servo to the receiver and attach the servo link to the elevator. After reading the object declaration in the params section, ClearView instantiates these objects and creates a separate params section for each new object.  The objects are not wired. After declaring the objects in params.txt, we must reload the model, and open Advanced Settings again. Here, we wire the model objects the same way as we would do in the real model:

Let's load 01FirstPlane003 and move the elevator stick. We can see that the elevator surface rotates around the Z axis, defined by the surface XYZObject. 

Let's take a close look at these tow parameters for the elevator servo object:

  controlledAxisName z

  controlledPartMovement rotate // use rotate/move/input
 If I choose move as controlledPartMovement, the liftsurface will move along the selected axis.
Exersizes:
1. Change controlledAxisName to controlledAxisName x, exit the Advance settings and observe that the surface will rotate around the x axis.

2. Change controlledAxisName to controlledAxisName y, exit the Advance settings and observe that the surface will rotate around the y axis.

3. Change controlledPartMovement to controlledPartMovement move , exit the Advance settings and observe that the surface will move around the y axis.
 

Step 4 - Controlling a Lift Surface via two servos

Load 01FirstPlane04 model. Open the advanced setup and examine that the model has two servos that are wired to control the same lift surface. Here is what I did for that model:
1. In params section I added one more servo:
modelServos elevServo elevServo1
2. I edit the elevServo1 params section as follows:
#begin servo.elevServo1
   breakPartName none
   controlledAxisName x
   controlledPartMovement move // use rotate/move/input
   controlledPartName elevator
   controlledPartType liftsurface
   debug 0.0
   inputChanel 2.0
   inputName receiver1
   inputType receiver
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.elevServo1
It is the same as elevServo, but I changed controlledPartMovement  to move instead of rotate. Now, as I move the elevator stick, the elevator surface will move along the X axis and will rotate along the Z axis. By changing the move and rotate axis I can move the surface in different paths if needed.
Use this model to experiment by choosing (for each servo) different axis and changing the action between move and rotate.

Step 5 - Controlling Nested Lift Surfaces

Another approach for complex movement is to create a hierarchical tree of moving objects. Let's take a plane with swept wing, there is aileron on the wing and there is a trim tab on the aileron. We want the wing to rotate along a vertical axis, the aileron to rotate along it's hinge and the trim tab to rotate along to the tab hinge. The aileron must indeed rotate with the wing and the trim tab must rotate with the wing and with the aileron. Here is how I nest all these objects so such movements are possible:
Here I have 3 lift surfaces: leftWing, leftAileron and leftTab. I use 3 servos to control each surface independently. Load 01FirstPlane04 model. Examine how the servos are declared in params section. Examine how are they wired and what servo controls what lift surface. Here is how surfaces move when elevator is applied:

  Stef 6 - creating the physics model using lift surfaces

The model I am working on is Yak 54 and is 32% sized model used for IMAC and Freestyle Flying. It has wingspan of 102 inches. I already have built the 3d model. The 3d model dimensions are just like the real plane. I will use the 3d model as reference for the actual model size. This will help me create correct size lifting surfaces for this model. The first step is to load the Yak 54 model, select all object and merge them in a single object. Then I save the model to a new file. This way, I can easily use the model when sizing the physics flight surfaces. I start from the model 01FirstPlane03, and create identical folder named 01FirstPlane06. I store my Yak model in data folder as file named yak54.ac. Then, I open body.ac and import yak54.ac I select the yak54 object (this is the whole Yak model) and lock it. Now I can build the physics model lift surfaces using the actual model for scale reference:
First, I scale the landing gear triangles and move them to the proper places using the model gear as reference. Now I will start creating the model lift surfaces. To make this easier, I open a new file and I create a single new surface there. It is named template. It consists of template.XYZObject and template.surface. I save this ac file as surface.ac. Here is how this surface looks like:
Now I open body.ac again. Here is what I plan to do:
1. Import surface.ac
2. Rename:
template.XYZObject to centerwing.XYZObject
template.surface to centerwing.cwing
This creates a new surface object names centerwing. This object will represent the center portion of the main wing.
3. Size the centerwing.cwing rectangle
4. Position the new lift surface (by moving and rotating BOTH objects).
Here is the result:
Next, I create the left and right wing surfaces, the ailerons (left and right) and the elevator. Tip: anytime I create a new flight surface, I lock it so it does not interfere with my work on the next surface. At the end I will save the model, then reload it The surfaces will be unlocked for final preview. I am done with approximating the model with horizontal lift surfaces - here is how it looks how:
Note:
For some models, the wings have dihedral - in that case, the wing surfaces must be rotated accordingly to follow the wing dihedral.
Now, I will approximate with vertical lift surfaces the model body. Here is an easy technique: I will copy all 3 horizontal surfaces, then will rotate them 90 degree. After that, I will re-size the surface rectangles (if needed) and will move them to proper position. I am done, here is the model outline and you can see how I approximated the model horizontal and vertical projections with lift surfaces. I also have 3 triangles for wheels that are ignored in fmodel.ac, but are important in colbody.ac so the model stands properly on the ground.
Now I unlock all objects, select just yak54 object and delete it. Then I save this file as fmodel.ac, colbody.ac and body.ac. This is how the physics lift surface definitions look like:
Lets fire ClearView and load 01FirstPlane006 and see how the physics definition of the plane lift surfaces looks like in ClearView:
This plane does not move - well, it is expected, because I have not added engine and propeller yet.  Now I will add a new physics object - the Propeller object.
To create the Propeller object, I import the surface object and rename the two sub-objects to Propeller1.XYZObject and Propeller1.prop Then I re-size Propeller1.prop rectangle to look more like a prop (just make it a little narrower and a little longer). This have no effect to physical model  and is just for visual appearance. Then I import yak54.ac and lock it. Now I have the model outlines. I rotate the propeller object 90 degrees and move it to the nose. I use the model outline to position the propeller object exactly on the model prop axe. This way, I define for ClearView the exact position of the propeller in space.
I save this as fmodel.ac, colbody.ac and body.ac. My next step is to add these new object to the plane:
These objects do not have special spatial information. Therefore we do not have to create them in the 3d model physics definition file fmodel.ac These parts must be declared in the params section of the params file.  We can open the params file with text editor or open it by loading the model. In the params section I will add:
modelTransmiters myTx
modelReceivers receiver1
modelServos leftAileronServo rightAileronServo elevatorServo rudderServo throttleServo
modelMotors motor1 
  Now, I will start ClearView, load the model and go to Advanced Settings. I can see that ClearView have created individual parameters section for every object that makes this model. We have params section for each and every liftsurface; we have params section for the propeller object. We have params section for motor1, all the servos, the receiver and the transmitter. That means that our whole model is assembled and all parts are already in ClearView. Just like in the real model, now I have to wire the parts together. For example, I have to link the receiver receiver 1 to the the transmitter myTx (in real like we bind the receiver to transmitter). I have to plug the throttle servo to channel 3 on the receiver, and tell ClearView that this servo is linked (and controls) the engine - motor1. I have to tell ClearView that the propeller object Propeller1 is driven by the engine motor1 (in real life, I put the propeller on the engine). The same for plugging in the rest of the servos and linking the servos to the moving control surfaces.
This ts the model params file before I linked the components:
#begin params
   apilotAelCoef 2.0
   apilotAelGain 0.0
   apilotElevCoef 2.0
   apilotElevGain 0.0
   apilotOn 0.0
   apilotRudCoef 5.0
   apilotRudGain 0.0
   apilotType 0.0
   breakPart propdisk 10.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
   centerOfGravity 0.0 0.0 0.0
   dimensions 1.0 1.0 0.2
   floatsHeight 0.12
   floatsOffset -0.1
   floatsVolumeUnits 4.0
   gravity 9.8
   initModelPos 2.0 0.02 -5.0
   initModelRot 0.0 45.0 0.0
   initSpeedVect 0.0 0.0 0.0
   mainGearBounce 0.6
   mainGearFriction 0.08
   mainGearFrictionOrt 1.1
   mainGearSpring 100.0
   modelMass 3.0
   modelMotors motor1
   modelName body.ac
   modelReceivers receiver1
   modelServos leftAileronServo rightAileronServo elevatorServo rudderServo throttleServo
   modelTransmiters myTx
   modelType 1.0
   noseGearBounce 0.6
   noseGearFriction 0.08
   noseGearFrictionOrt 1.1
   noseGearSpring 100.0
   noseGearTurnRatio 0.2
   planeType 0.0
   renderEnvBlend 1.0
   renderFlag 0.0
   retractType 0.0
   smokeExostPoint 0.05 -0.12 0.0
   smokeExostVect 10.0 0.0 0.0
   specialMode 0.0
   tailGearBounce 0.6
   tailGearFriction 0.08
   tailGearFrictionOrt 1.1
   tailGearSpring 100.0
   tailGearTurnRatio 1.0
   useFloats 0.0
   useModelInitPos 0.0
   verNumber 6.0
#end params
#begin liftsurface.centerwing
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName centerwing
   thrustWashName notdefined
#end liftsurface.centerwing
#begin liftsurface.elevator
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName elevator
   thrustWashName notdefined
#end liftsurface.elevator
#begin liftsurface.horbody1
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName horbody1
   thrustWashName notdefined
#end liftsurface.horbody1
#begin liftsurface.horbody2
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName horbody2
   thrustWashName notdefined
#end liftsurface.horbody2
#begin liftsurface.horbody3
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName horbody3
   thrustWashName notdefined
#end liftsurface.horbody3
#begin liftsurface.leftaileron
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName leftaileron
   thrustWashName notdefined
#end liftsurface.leftaileron
#begin liftsurface.leftwing
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName leftwing
   thrustWashName notdefined
#end liftsurface.leftwing
#begin liftsurface.rightaileron
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName rightaileron
   thrustWashName notdefined
#end liftsurface.rightaileron
#begin liftsurface.rightwing
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName rightwing
   thrustWashName notdefined
#end liftsurface.rightwing
#begin liftsurface.rudder
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName rudder
   thrustWashName notdefined
#end liftsurface.rudder
#begin liftsurface.verstab
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName verstab
   thrustWashName notdefined
#end liftsurface.verstab
#begin motor.motor1
   breakPartName none
   debug 0.0
   driveshaft1GearRatio 1.0
   driveshaft1OneWayBB 1.0 // 1 for one way ball bearing
   driveshaft2GearRatio 5.0
   driveshaft2OneWayBB 0.0 // 1 for one way ball bearing
   driveshaft3GearRatio 1.0
   driveshaft3OneWayBB 0.0 // 1 for one way ball bearing
   driveshaft4GearRatio 1.0
   driveshaft4OneWayBB 0.0 // 1 for one way ball bearing
   engineBrakingCoef 1.0
   inputThrotChanel 1.0
   inputThrotName none
   inputThrotType none
   maxRPM 7000.0
   motorRotatingMass 0.1
   motorRotatingMassDiam 1.0
   powerCurveWatts 0.0 90.0 120.0 150.0 150.0 140.0
#end motor.motor1
#begin propeller.Propeller1
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   controlSound 1.0
   debug 0.0
   inputMotorDriveshaftNumber 1.0
   inputMotorName none
   inputMotorType none
   propDiamInch 12.0
   propDirection 0.0 // 0 for CD 1 for CCD
   propDragAdjustment 1.0
   propInducedDragAdjustment 1.0
   propLiftAdjustment 1.0
   propMass 0.01
   propMaxRPM 6000.0
   propPitchDegree 6.0
   propPitchDegreeMax 16.0
   propPitchDegreeMin -16.0
   propPitchInch 3.9623365
   propPrecessionForce 0.2
   propTorqCoef 1.0
   propWindmillAdjustment 1.0
   renderGroupName Propeller1
   translationalMaxSpeedMs 10.0
   translationalThrustCoef 0.0
#end propeller.Propeller1
#begin receiver.receiver1
   breakPartName none
   debug 0.0
   inputName myTx
   inputType transmiter
#end receiver.receiver1
#begin servo.elevatorServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement rotate // use rotate/move/input
   controlledPartName none
   controlledPartType none
   debug 0.0
   inputChanel 1.0
   inputName none
   inputType none
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.elevatorServo
#begin servo.leftAileronServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement rotate // use rotate/move/input
   controlledPartName none
   controlledPartType none
   debug 0.0
   inputChanel 1.0
   inputName none
   inputType none
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.leftAileronServo
#begin servo.rightAileronServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement rotate // use rotate/move/input
   controlledPartName none
   controlledPartType none
   debug 0.0
   inputChanel 1.0
   inputName none
   inputType none
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.rightAileronServo
#begin servo.rudderServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement rotate // use rotate/move/input
   controlledPartName none
   controlledPartType none
   debug 0.0
   inputChanel 1.0
   inputName none
   inputType none
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.rudderServo
#begin servo.throttleServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement rotate // use rotate/move/input
   controlledPartName none
   controlledPartType none
   debug 0.0
   inputChanel 1.0
   inputName none
   inputType none
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.throttleServo
#begin transmiter.myTx
   breakPartName none
   debug 0.0
   expo1 0.0 // between -1,1 negative=smoother around center
   expo2 0.0
   expo3 0.0
   expo4 0.0
   expo5 0.0
   expo6 0.0
   expo7 0.0
   expo8 0.0
   pitchCurveIdleUp -1.0 -0.5 0.0 0.5 1.0
   pitchCurveNormal -1.0 -0.5 0.0 0.5 1.0
   pitchCurveThrottleHold -1.0 -0.5 0.0 0.5 1.0
   rate1 1.0 // between 0 and 1 , 1=100% rate
   rate2 1.0
   rate3 1.0
   rate4 1.0
   rate5 1.0
   rate6 1.0
   rate7 1.0
   rate8 1.0
   tailPitchCurveIdleUp 0.0 0.0 0.0 0.0 0.0
   tailPitchCurveNormal 0.0 0.0 0.0 0.0 0.0
   tailPitchCurveThrottleHold 0.0 0.0 0.0 0.0 0.0
   throttleCurveIdleUp -1.0 -0.5 0.0 0.5 1.0
   throttleCurveNormal -1.0 -0.5 0.0 0.5 1.0
   throttleCurveThrottleHold -1.0 -0.5 0.0 0.5 1.0
   trim1 0.0 // between -1,1
   trim2 0.0
   trim3 0.0
   trim4 0.0
   trim5 0.0
   trim6 0.0
   trim7 0.0
   trim8 0.0
   txmodel 0.0 // 0=raw tx data, 1=heli, 2=plane model
#end transmiter.myTx
Now I have to link all components together - bind the receiver to the transmitter, plug the servos to the receiver, clink the servos to control lift surfaces, etc.etc.
After that , I edited the propeller section and the motor section in the params file to account for the propeller size and type for this model I set proper RPM for the motor and corresponding power curve. All these parameters will be discussed latter in the advanced tuning sections. Let's load the model and try have the maiden flight:
This is the model params file after I linked the components together:

#begin params
   apilotAelCoef 2.0
   apilotAelGain 0.0
   apilotElevCoef 2.0
   apilotElevGain 0.0
   apilotOn 0.0
   apilotRudCoef 5.0
   apilotRudGain 0.0
   apilotType 0.0
   breakPart propdisk 10.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0
   centerOfGravity 0.0 0.0 0.0
   dimensions 1.0 1.0 0.2
   floatsHeight 0.12
   floatsOffset -0.1
   floatsVolumeUnits 4.0
   gravity 9.8
   initModelPos 2.0 0.02 -5.0
   initModelRot 0.0 45.0 0.0
   initSpeedVect 0.0 0.0 0.0
   mainGearBounce 0.6
   mainGearFriction 0.08
   mainGearFrictionOrt 1.1
   mainGearSpring 100.0
   modelMass 15.0
   modelMotors motor1
   modelName body.ac
   modelReceivers receiver1
   modelServos leftAileronServo rightAileronServo elevatorServo rudderServo throttleServo
   modelTransmiters myTx
   modelType 1.0
   noseGearBounce 0.6
   noseGearFriction 0.08
   noseGearFrictionOrt 1.1
   noseGearSpring 100.0
   noseGearTurnRatio 0.2
   planeType 0.0
   renderEnvBlend 1.0
   renderFlag 0.0
   retractType 0.0
   smokeExostPoint 0.05 -0.12 0.0
   smokeExostVect 10.0 0.0 0.0
   specialMode 0.0
   tailGearBounce 0.6
   tailGearFriction 0.08
   tailGearFrictionOrt 1.1
   tailGearSpring 100.0
   tailGearTurnRatio 1.0
   useFloats 0.0
   useModelInitPos 0.0
   verNumber 6.0
#end params

#begin liftsurface.centerwing
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName centerwing
   thrustWashName notdefined
#end liftsurface.centerwing

#begin liftsurface.elevator
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 1.0
   propWashDistanceCoef 0.4
   renderGroupName elevator
   thrustWashName Propeller1
#end liftsurface.elevator

#begin liftsurface.horbody1
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName horbody1
   thrustWashName notdefined
#end liftsurface.horbody1

#begin liftsurface.horbody2
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName horbody2
   thrustWashName notdefined
#end liftsurface.horbody2

#begin liftsurface.horbody3
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName horbody3
   thrustWashName notdefined
#end liftsurface.horbody3

#begin liftsurface.leftaileron
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 1.0
   propWashDistanceCoef 0.4
   renderGroupName leftaileron
   thrustWashName Propeller1

#end liftsurface.leftaileron

#begin liftsurface.leftwing
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName leftwing
   thrustWashName notdefined
#end liftsurface.leftwing

#begin liftsurface.rightaileron
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 1.0
   propWashDistanceCoef 0.4
   renderGroupName rightaileron
   thrustWashName Propeller1
#end liftsurface.rightaileron

#begin liftsurface.rightwing
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName rightwing
   thrustWashName notdefined
#end liftsurface.rightwing

#begin liftsurface.rudder
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 1.0
   propWashDistanceCoef 0.4
   renderGroupName rudder
   thrustWashName Propeller1
#end liftsurface.rudder

#begin liftsurface.verstab
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   debug 0.0
   dragCoef 1.0
   inducedDragCoef 1.0
   liftCoef 1.0
   propWashCoef 0.0
   propWashDistanceCoef 0.4
   renderGroupName verstab
   thrustWashName notdefined
#end liftsurface.verstab

#begin motor.motor1
   breakPartName none
   debug 0.0
   driveshaft1GearRatio 1.0
   driveshaft1OneWayBB 0.0 // 1 for one way ball bearing
   driveshaft2GearRatio 1.0
   driveshaft2OneWayBB 0.0 // 1 for one way ball bearing
   driveshaft3GearRatio 1.0
   driveshaft3OneWayBB 0.0 // 1 for one way ball bearing
   driveshaft4GearRatio 1.0
   driveshaft4OneWayBB 0.0 // 1 for one way ball bearing
   engineBrakingCoef 3.0
   inputThrotChanel 1.0
   inputThrotName throttleServo
   inputThrotType servo
   maxRPM 15000.0
   motorRotatingMass 5.0
   motorRotatingMassDiam 1.0
   powerCurveWatts 0.0 6000.0 8000.0 9000.0 9000.0 10000.0
#end motor.motor1

#begin propeller.Propeller1
   airfoilDataName NACA-0009 // use: NACA-0009,NACA-0012,NACA-0015 of custom airfoil file name
   breakPartName none
   controlSound 1.0
   debug 0.0
   inputMotorDriveshaftNumber 1.0
   inputMotorName motor1
   inputMotorType motor
   propDiamInch 24.0
   propDirection 0.0 // 0 for CD 1 for CCD
   propDragAdjustment 1.0
   propInducedDragAdjustment 1.0
   propLiftAdjustment 1.0
   propMass 0.5
   propMaxRPM 15000.0
   propPitchDegree 6.0
   propPitchDegreeMax 16.0
   propPitchDegreeMin -16.0
   propPitchInch 7.924673
   propPrecessionForce 0.2
   propTorqCoef 1.0
   propWindmillAdjustment 1.0
   renderGroupName Propeller1
   translationalMaxSpeedMs 10.0
   translationalThrustCoef 0.0
#end propeller.Propeller1

#begin receiver.receiver1
   breakPartName none
   debug 0.0
   inputName myTx
   inputType transmiter
#end receiver.receiver1

#begin servo.elevatorServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement rotate // use rotate/move/input
   controlledPartName elevator
   controlledPartType liftsurface
   debug 0.0
   inputChanel 2.0
   inputName receiver1
   inputType receiver
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.elevatorServo

#begin servo.leftAileronServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement rotate // use rotate/move/input
   controlledPartName leftaileron
   controlledPartType liftsurface
   debug 0.0
   inputChanel 1.0
   inputName receiver1
   inputType receiver
   servoLinkRatio -1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.leftAileronServo

#begin servo.rightAileronServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement rotate // use rotate/move/input
   controlledPartName rightaileron
   controlledPartType liftsurface
   debug 0.0
   inputChanel 1.0
   inputName receiver1
   inputType receiver
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.rightAileronServo

#begin servo.rudderServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement rotate // use rotate/move/input
   controlledPartName rudder
   controlledPartType liftsurface
   debug 0.0
   inputChanel 4.0
   inputName receiver1
   inputType receiver
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.rudderServo

#begin servo.throttleServo
   breakPartName none
   controlledAxisName z
   controlledPartMovement input // use rotate/move/input
   controlledPartName none
   controlledPartType none
   debug 0.0
   inputChanel 3.0
   inputName receiver1
   inputType receiver
   servoLinkRatio 1.0
   servoLinkTrim 0.0
   servoSpeed 0.1
   servoType 1.0 // 1=3pole,2=5pole,3=coreless,4=dgtl5pole,5=dgtl/crls
#end servo.throttleServo

#begin transmiter.myTx
   breakPartName none
   debug 0.0
   expo1 0.0 // between -1,1 negative=smoother around center
   expo2 0.0
   expo3 0.0
   expo4 0.0
   expo5 0.0
   expo6 0.0
   expo7 0.0
   expo8 0.0
   pitchCurveIdleUp -1.0 -0.5 0.0 0.5 1.0
   pitchCurveNormal -1.0 -0.5 0.0 0.5 1.0
   pitchCurveThrottleHold -1.0 -0.5 0.0 0.5 1.0
   rate1 1.0 // between 0 and 1 , 1=100% rate
   rate2 1.0
   rate3 1.0
   rate4 1.0
   rate5 1.0
   rate6 1.0
   rate7 1.0
   rate8 1.0
   tailPitchCurveIdleUp 0.0 0.0 0.0 0.0 0.0
   tailPitchCurveNormal 0.0 0.0 0.0 0.0 0.0
   tailPitchCurveThrottleHold 0.0 0.0 0.0 0.0 0.0
   throttleCurveIdleUp -1.0 -0.5 0.0 0.5 1.0
   throttleCurveNormal -1.0 -0.5 0.0 0.5 1.0
   throttleCurveThrottleHold -1.0 -0.5 0.0 0.5 1.0
   trim1 0.0 // between -1,1
   trim2 0.0
   trim3 0.0
   trim4 0.0
   trim5 0.0
   trim6 0.0
   trim7 0.0
   trim8 0.0
   txmodel 0.0 // 0=raw tx data, 1=heli, 2=plane model
#end transmiter.myTx

 This will end the step 6 - let's recap: - I created the physics definitions for the model. The physics definitions consist of lift surfaces and Propeller objects. These objects are created in fmodel.ac I also created 3 wheels - maingear1, maingear2 and tailgear that are used from colbody.ac In order to visualize the physics model, I saved fmodel.ac to colbody.ac (for collision detection and object interaction) and in body.ac (for model visualization). After I created these 3 files, I loaded the model and added number of components as separate object - I added transmitter, receiver, servos, engine and propeller. These objects where declared in params section of the params.txt file. After loading the advanced settings for first time, ClearView uses these declarations to instantiate the objects.  Then, ClearView writes params section for each object in the params file params.txt. We learned two physics type objects - lift surfaces and Propellers. We learned there are other objects like servos, motor and receiver that also have their params sections in params.txt In addition, because of the naming conventions used and because we wired the components properly, we can see that the model that we build have moving surfaces and prop. It properly interacts with the environment and is flyable. At that point the physics work  related to fmodel.ac file is complete. The flying properties of that model can be further tuned up by changing parameters to all objects in params.txt but no more editing of fmodel.ac is needed. The next step is to work on visual appearance by editing file body.ac. After completing the visual appearance in body.ac  I will have to start working on colbody.ac to make it better match body.ac . Finally I will have to edit params.txt and define the breakable parts. For now, I have completed Lesson 1 by having a flyable model that is the starting point for Lesson2.
Here is the model with control surfaces deflected: