CAMERA DEFINITION PROPERTIES

The cameras configuration file is an optional file that may be included along with other files for a SimObject and is called camera.cfg. Legacy projects not made with (or for) Microsoft Flight Simulator will have their camera properties set in either sim.cfg or container.cfg - for SimObjects - or aircraft.cfg - for non-aircraft SimObjects.

 

Below you can find information on the different sections used in the camera.cfg file as well as what parameters and values are expected within them.

 

 

[VERSION]

The [VERSION] section provides version information for the configuration file. In Microsoft Flight Simulator, major versions should always be at least equal to 1. Note that this information is mandatory and should always be included.

 

Parameter Description Type
major Major CFG file version number, values must be greater than 0. Integer
minor Minor CFG file version number, values must be greater than 0. Integer

 

 

[VIEWS]

The [VIEWS] section has the following elements and is used to determine the base position of the cockpit camera (note that all the camera definitions will be defined relative to this point):

 

Parameter Description Type
eyepoint longitudinal, lateral, and vertical distance from the center of the aircraft model.

Floats

 

 

[CAMERADEFINITION.N]

In a single cameras.cfg file you can define multiple cameras for a single aircraft or SimObject. Each camera will need it's own [CAMERADEFENITION.N] header and contents, where N is the numeric identifier for the camera, starting at 0. The table below outlines all the possible entries into the CFG file for a camera, but it's worth pointing out the following as being the most important when it comes to setting up:

  • InitialXyz (position) and InitialPbh (angle): These are used to set the initial position offsets and the viewing angle for the camera. Note that InitialPbh is not used when the SubCategoryItem is set to "PilotVR", and the "bank" value will not be used when the camera is set to Cockpit.
  • Origin: The origin of the camera, which can be any one of a number of pre-defined values (listed in the table below)
  • Category: What kind of camera you are setting, which can be any one of a number of pre-defined values (listed in the table below)

 

Parameter Description Type
Title This is descriptive only, not used by the system String
UITitle This is a localisable string that will be used to show the name of the camera in the simulation.  String
GUID Camera definition's unique identifier. This GUID must be unique. String
(format {GUID})
Description A brief description of the camera. String
Origin

Every camera definition must have an origin that defines the object or point on which the camera is oriented. In Microsoft Flight Simulator, we principally use Virtual Cockpit or Center

String:
  1. Cockpit - Camera is locked at fixed position in the 2D cockpit. Forward views include 2D instrument panel. Oblique view angle show virtual cockpit interior.
  2.  
  3. Virtual Cockpit - Camera is mounted at the eye point defined in the aircraft's CFG file.
  4.  
  5. Center - External (spot plane) camera that points at the center of the aircraft's visual model.
  6.  
  7. Pilot - External (spot plane) camera that points at the pilot position inside the aircraft's visual model.
  8.  
  9. Tower - External camera mounted at a control tower defined via the facilities (BGLCOMP) database.
  10.  
  11. Fixed - External camera at a fixed position. Fixed camera definitions must include FixedLatitude, FixedLongitude and FixedAltitude values.
  12.  
  13. WorldObject - Used by SimConnect clients. Not available through CFG settings.
InstancedBased If TRUE (1) then a new instance of the camera is created for each instance of the object referenced by the TargetCategory setting. Bool
NoSortTitle Set to TRUE (1) to disable sorting cameras by title in the menu system, or FALSE (0) otherwise. Bool
Transition When switching between camera views a "smooth" transition is obtained by moving the camera in real time from its old location to the new one. Note that this behavior is only applied if the Transition settings for both cameras are set to TRUE (1). If either or both are set to FALSE (0) then the view switch is instantaneous. Bool
CycleHidden If TRUE (1), the camera is hidden from view cycling and it does not appear when cycling through views using the keyboard. Bool
CycleHideRadius

This sets the distance (in nautical miles) beyond which the camera is skipped in the cycling order for instance based cameras.

The default value is 0.0.

Float
0.0 - 100.0
ShowPanel Determines whether the 2D instrument panel is shown (1, TRUE) or not (0, FALSE). Bool
Initialzoom

Sets the initial camera zoom level.

The defaults value is 1.0.

Float
0.0 to 512.0
SmoothZoomTime

The zoom time in seconds. By default, zooming in and out is "smoothed" by changing between old and new zoom levels over a small time period (5 seconds). This setting enables you to control this effect on a per-camera basis.

The default value is 0.5.

Float
0.0 to 30.0
Category

Every camera definition must include a category that defines how the camera is exposed in the user interface. Categories define the view cycling behavior as well as the menu structure. Some categories (AirTraffic, Runway, Multiplayer and Tower) can also be instance-based, meaning new cameras are created automatically based on the object type.


The most useful categories are:

  1. Cockpit - For the cockpit camera's default position (first one), then for instrument cycle
  2. Custom - For the Quickviews. Always in this order: left, down, right, up
  3. FixedOnPlane - For cameras fixed to the object
  4. Aircraft - For shifting the default external camera original position (title must be DEFAULT_CHASE or name of an flight state)

String:

  1. "Aircraft"
  2. "AirTraffic"
  3. "Cockpit"
  4. "Custom"
  5. "Outside"
  6. "Multiplayer"
  7. "Runway"
  8. "Scenery"
  9. "Tower"
  10. "FixedOnPlane"
SubCategory

You can specify the principle role of the camera with the "subcategory". This defines the context we need the user to view.

String:
  1. "Pilot" - The view can be used by the cockpit to load any "pilot" view, like VFR, IFR, Landing, Copilot, etc...
  2.  
  3. "Instrument" - Allow you to define an instrument camera which we can cycle through while in instrument view.
  4.  
  5. "QuickView" - Allow you to define a Quickview camera which we can cycle through while in the Quickview view.
  6.  
  7. "CheckList" - Any Checklist view
  8.  
  9. "Custom" - Used to create a custom view.
  10.  
  11. "FixedOnPlaneIntern" - Allows you to define a fixed camera on one place in the interior of the object
  12.  
  13. "FixedOnPlaneExtern" - Allows you to define a fixed camera on one place on the exterior of the object
  14.  
  15. "Shadow Center" - Used only to specify a correct position of shaders for the interior model.
SubCategoryItem

SubCategoryItem is used to specify a unique view. For each object, you can only have one of those views linked to a particular Subcategory/ Category combo, eg:

Aicraft/ Quickview can have only one QuickView1. But Cockpit/ Quickview can also have one. SubCategoryItem can only be used with its linked SubCategory.

String:
  1. "ClosePilot"
  2. (Subcategory:Pilot) - Pilot view specialized for IFR flight (better view on instruments)
  3.  
  4. "DefaultPilot"
  5. (Subcategory:Pilot) - Pilot view specialized for VFR flight (better view on scenery)
  6.  
  7. "LandingPilot"
  8. (Subcategory:Pilot) - Pilot view specialized for Landing (better view on ground)
  9.  
  10. "CoPilot"
  11. (Subcategory:Pilot) - Pilot view place at the copilot position
  12.  
  13. "TrueCockpit"
  14. (Subcategory:Pilot) - Pilot view for homemade cockpits (centered, cockpit hidden)
  15.  
  16. "QuickView1...8"
  17. (Subcategory:QuickView)
  18.  
  19. "PilotVR"
  20. (Subcategory:Pilot) - Pilot view used when VR is active.
TargetCategory When a new instance is created this determines which object class triggers the creation of a new InstanceBased camera.

String:

  1. None
  2. AI Planes
  3. Fixed
PanAcceleratorTime This defines the pan acceleration time (in seconds). When panning the camera, an acceleration/deceleration effect is added over a period of time. The larger this value is the longer it takes for the pan movement to reach its full rate, thus yielding smoother panning movement. Lower numbers yield more abrupt panning. The default value is 5.0. Float
0.0 - 30.0
InitialXyz

Camera XYZ position offset from the default location.

All values are in meters with a range of -500.0 to 500.0 (for each of the three), and default to 0.0

xyz
X, Y, Z position
XYZRate

The desired speed of the camera (in meters per second). The direction of movement is determined by the camera control keys that are pressed.

The default value is 0.25.

Float
XYZAcceleratorTime The desired acceleration time (in seconds) that it takes the camera to go from 0 to XYZRate.

Float

0.0 - 100.0

InitialPbh

Camera pitch, bank and heading orientation offset from the default in degrees. Note that positive pitches give a downward view, and positive headings are to the right.

All values are in degrees, between:

  • -90 to 90.0 (pitch)
  • -180 to 180.0 (bank and heading)

NOTE: This parameter is not used when the SubCategoryItem is set to "PilotVR".

IMPORTANT! When using the Cockpit camera, the "bank" value will be ignored.

pbh
Pitch, Bank, Heading
VarToggle

Originally this parameter was for defining a node that would be hidden when the camera being defined was active, however now it functions as a simple toggle for local variables. You supply one (or more) L: Vars and then when the camera is active the variable will be toggled to 1 (TRUE) and when it is deactivated it will be toggled to 0 (FALSE).

This is useful, in particular when using different model behaviours - for example using the visibility template to to hide the yoke when a specific camera that is viewing an instrument.

Note that this toggle of the L: var will only happen if it's value is less than one when the camera is selected. If it is already 1 (or greater) then the toggle will not happen, and that includes it being set to 0 on switching away from the camera.

 

The default value is "", and you may supply multiple L: vars in a single string by separating them with a space.

String
ClipMode This setting is used to control how the clip planes are computed. Clip planes are used to set the minimum and maximum distances for rendering in a 3D graphics program. The relative location of these planes determines how precise the graphics engine can maintain the Z-order of objects. A discussion of clip plane management is beyond the scope of this document, however the concept is relevant to the camera system because it determines whether the camera favors near or far objects in the view.

String:

  1. "Normal" – The near clip plane is scaled along with the zoom level. Useful for most views.
  2.  
  3. "Minimum" – Clamps the near clip plane at its absolute minimum value (1 meter). Useful for cameras where the camera is placed close to object geometry (e.g., aircraft cameras).
  4.  
  5. "Spot" – Favors distant objects by scaling the near clip plane with altitude and distance. Useful when the camera is positioned a reasonable distance away from the target object (e.g., spot view).
  6.  
  7. "Tower" – Favors near objects by scaling the near clip plane by one-half the zoom level and clamping the far plane based on visibility settings with an absolute limit of 20km. Useful when objects at the limits of visibility aren't important.
BoundingBoxRadius

Allows you to define a bounding box to the camera - in meters -  which can be used with the instrument camera to give more or less "space" between the camera and the instrument auto selection and the focus with the mouse going over it.

The default value is 0.1, and all values are in meters.

Float
0.0 - 100.0

ChaseDistance

The initial distance (in meters) of the camera from the target object in external views.

The default value is 0.0.

Float
0.0 - 3000.0

ChaseHeading

Initial angular offset in degrees of the camera relative to the target object in external views.

The default value is 0.0.

Float
-180.0 - 180.0
ChaseAltitude

Initial altitude in feet of the camera relative to the target object in external views.

The default value is 0.0.

Float
-1000.0 - 3000.0
ChaseTime

Length of time in seconds an aircraft is kept in Fly-By view before a new position is computed.

The default value is 10.0.

Float
0.0 - 200.0
ChaseDistanceAdjustRate This controls the rate at which chase distance changes when incremented or decremented using key events. The default value is 5.0. Float
1.0 - 250.0
HotKeySelect Links the camera to one of the 10 pre-defined key events for activating cameras.

Integer

1 - 10

 

Note that a number of settings in this file are legacy from FSX, and as such are not used by Microsoft Flight Simulator, but should however still be included in the CFG file. These settings are listed in the table below and have a default value which you should always use when creating new cameras.

Parameter Description Type
MomentumEffect

Controls whether the camera exhibits momentum effect.

The default value is TRUE (1).

Bool

SnapPbhAdjust

These settings control how camera movement is handled when the camera system receives a view pan or "snap to" command.

The default value is "Swivel".

String:
  1. None - Commands are ignored (position remains fixed).
  2.  
  3. Ordinal - Camera moves to the next ordinal compass position in the direction of the command.
  4.  
  5. Swivel - Camera moves incrementally in the direction of the command.
  6.  
  7. Orthogonal - Camera rotates in the direction of the command (used in top-down view).
SnapPbhReturn

If TRUE (1), camera position returns to its initial position when the snap movement command key is released.

The default value is FALSE (0).

Bool
PanPbhAdjust

Same range of options as SnapPbhAdjust (listed above).

The default value is "Swivel".

String:

  1. None
  2. Ordinal
  3. Swivel
  4. Orthogonal
PanPbhReturn

If true (1), camera position returns to its initial position when the pan movement command key is released.

The default value is FALSE (0).

Bool
Track

External cameras have the ability to track a user or AI object. The Track parameter controls this behavior.

The default value is "None".

String:
  1. None - No tracking behavior. User has manual control over the camera.
  2.  
  3. FlyBy - Fly-by mode; the camera is positioned away from the user aircraft (at a location given by ChaseDistance, ChaseAltitude and ChaseHeading values) and tracks the aircraft for ChaseTime seconds before computing a new position.
  4.  
  5. Track - Camera tracks the object while maintaining its position.

 

  1. TrackBank - Camera tracks the object while maintaining its position.
  2.  
  3. FlatChase - Camera moves with the object, maintaining a fixed distance from it. Camera movements are dampened.
  4.  
  5. FlatChaseLocked - Camera moves with the object, maintaining a fixed distance from it. Camera movements are rigid.
ShowAxis

Determines whether the axis indicator is shown.

The default value is ON.

Enum:

  1. - NO / OFF
  2. - FrontOnly
  3. - YES / ON / TRUE / Always
AllowZoom

Controls whether the camera responds to zoom commands.

The default value is TRUE (1).

Bool
ZoomPanScalar

One side effect of zooming in on an object is that it becomes difficult to make fine camera panning adjustments because the absolute movement of the camera around its position remains constant. The ZoomPanScalar setting compensates for this by adjusting panning movements by the given factor in relation to zoom level. Movement is scaled by dividing the ZoomPanScalar value by the zoom level. For example, with a ZoomPanScalar setting of 1, camera panning is reduced by half at 2x zoom (1 / 2). A setting of 2, on the other hand, accelerates panning to twice the normal rate at 1x zoom (2 / 1) and is exactly the normal rate at 2x zoom (2 / 2).

The default value is 1.0.

Float
0.0 to 100.0
ShowWeather

Determines whether weather visuals are shown.

The default value is true (1).

Bool
XyzAdjust

Controls whether the camera responds to position change commands.

The default value is TRUE (1).

Bool
ShowLensFlare

Determines whether lens flare effect can be shown (based on user setting).

The default value is FALSE (0).

Bool
PitchPanRate

Controls the rate at which pitch is changed in degrees per second.

The default value is 20.0.

Float
0.0 - 100.0
HeadingPanRate

Controls the rate at which the heading is changed in degrees per second.

The default value is 60.0.

Float
0.0 - 100.0

 

 

[CAMERA_RAY_NODE_COLLISION]

This section permits you to define up to 10 different nodes on the user aircraft model (interior and/or exterior) with which to check if the camera is "pointing" at them, using a ray traced from the camera. This camera ray is defined as coming from a point in the center of the FOV of the camera and going "forward" relative to the camera angle. Once you have defined these nodes, you can then use the SimVar IS CAMERA RAY INTERSECT WITH NODE to check for collisions.

 

Parameter Description Type
node.i

This is the model node definition that you want to check for collisions with the camera. You may have up to 10 of these node definitions where i starts at 1 and ends on 10. The definition itself is a hash map comprised of the following key/value pairs:

  • ModelDefinition - either "Interior" or "Exterior"
  • Name - the name of the node, as defined in the glTF

You can see an example node definition below:

node.1 = ModelDefinition:Interior#Name:NO_HMD_COLLISION

Hash Map

(see Data Types for more information)