This tutorial will help you understand how the system of cameras works in Flight Simulator X, and how to edit or add your own. The terms camera and view can be used interchangeable on this page. When editing .cfg files, use notepad, or a similar text editor to to edit them. Always backup files before you edit them if you are unsure of what you are doing. It is helpful to have hidden files and folders, along with file extensions shown.
Type of Cameras
Cameras in FSX define how you view your aircraft, and also the surroundings. The 7 main types of cameras and there typical sub categories are as follows.
- Cockpit
- Cockpit
- Virtual Cockpit
- Other cameras unique to aircraft
- Outside
- Spot
- Locked Spot
- FlyBy
- Top-Down
- Tower
- Nearest Tower
- Next Closest Towers
- Aircraft
- Cameras unique to an aircraft
- Runway
- Runways in proximity to aircraft
- Air Traffic
- Air traffic in proximity to aircraft
- Fixed
- Custom made cameras
Some of these cameras apply to all aircraft, while some are unique to a certain aircraft.
Camera Configuration Locations
The cameras that apply to all aircraft include cockpit, outside, tower, runway, air traffic, and fixed. These cameras are located in the Cameras.cfg file, located in the following directories:
Windows XP: C:\Documents and Settings\”User”\Application Data\Microsoft\FSX
Windows Vista/7/8/10: C:\Users\”User”\AppData\Roaming\Microsoft\FSX
There are also cameras that apply to a specific aircraft, which include aircraft and cockpit cameras. These cameras are located in the aircraft.cfg file for an aircraft, which can be found in the following directories.
DVD Version: C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X\SimObjects\”Airplanes” or “Rotorcraft”\
Steam Version: C:\Program Files (x86)\Steam\steamapps\common\FSX\SimObjects\”Airplanes” or “Rotorcraft”\
Camera Definition Properties
The following is taken from the FSX SDK Camera Configuration, showing each camera property, and what it does. Yes and No are interchangeable with True and False.
Camera Property | Range | Description | Examples |
Title | Camera title; appears in the upper-right corner of the view window when changing cameras. | Title = “Tail” | |
Guid | A guid, or globally unique identifier is a unique reference number used for identification. They are made up of letters and numbers forming a 32 character long string. The guid number for a camera definition must be different from any other guid numbers in the file. Guidgen is a good site for generating a guid number to use. | Guid = {18EF1F08-7138- 4530-948C-07698E51940D} | |
Description | Camera description. This is not used by the system, but can be used to provide a descriptive string in the configuration file. | Description = View from the right wing tip looking at the cockpit | |
Origin | Cockpit Virtual Cockpit Center Pilot Tower Fixed WorldObject | Every camera definition must have an origin that defines the object or point on which the camera is oriented: “Cockpit” Camera is locked at fixed position in the 2D cockpit. Forward views include 2D instrument panel. Oblique view angle show virtual cockpit interior. “Virtual Cockpit” Camera is mounted at the eye point defined in the aircraft’s CFG file. “Center” External (spot plane) camera that points at the center of the aircraft’s visual model. “Pilot” External (spot plane) camera that points at the pilot position inside the aircraft’s visual model. “Tower” External camera mounted at a control tower defined via the facilities (BGLCOMP) database. “Fixed” External camera at a fixed position. Fixed camera definitions must include FixedLatitude, FixedLongitude and FixedAltitude values. “WorldObject” Used by SimConnect clients. Not available through CFG settings.Note that this does not affect the View menu that the camera title appears in, the menu is set by the category parameter. | Origin = Tower |
ShowPanel | Yes/No | Determines whether the 2D instrument panel is shown. This property seems to not work after testing in various cameras. | ShowPanel = Yes |
SnapPbhAdjust | None Ordinal Swivel Orthogonal | These settings control how camera movement is handled when the camera system receives a view pan or “snap to” command. “None” Commands are ignored (position remains fixed). | SnapPbhAdjust = Ordinal |
SnapPbhReturn | True/False | If true, camera position returns to its initial position when the snap movement command key is released. | SnapPbhReturn = True |
PanPbhAdjust | None Ordinal Swivel Orthogonal | Same range of options as snappbhadjust. | PanPbhAdjust = Swivel |
PanPbhReturn | True/False | If true, camera position returns to its initial position when the pan movement command key is released. | PanPbhReturn = False |
Track | None FlyBy Track TrackBank FlatChase FlatChaseLocked | External cameras have the ability to track a user or AI object. The Track parameter controls this behavior: “None” No tracking behavior. User has manual control over the camera. | Track = FlatChase |
ShowAxis | Yes No FrontOnly | Determines whether the axis indicator is shown. | ShowAxis = FrontOnly |
AllowZoom | Yes/No True/False | Controls whether the camera responds to zoom commands. | AllowZoom = TRUE |
InitialZoom | 0.0 to 512.0 | Sets the initial zoom. | InitialZoom = .3 |
SmoothZoomTime | 0.0 to 30.0 Default: 5.0 | 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. | SmoothZoomTime = 2.0 |
ShowWeather | Yes/No | Determines whether weather visuals are shown. | ShowWeather = Yes |
InitialXyz | XYZ | Determines the camera’s location in relation to the origin, in meters. x= distance left or right. + is right and – is left. y= distamce up and down. + is up and _ is down. z= distance forward and back. + is forward and – is backwards | InitialXyz = 20.0, 0.0, -2.0 |
InitialPbh | XYZ | Camera pitch, bank and heading orientation offset from the default in degrees. p= pitch. + is down and – is up. b= bank. + banks it to the left and – banks it to the right. h= heading. + is right and – is left. Note: 180=-180, 90=-270. | InitialPbh = 0, 0, 180 |
XyzAdjust | True/False | Controls whether the camera responds to position change commands. | XyzAdjust = True |
XyzRate | Default: 0.25 | The desired speed of the camera in meters per second. The direction of movement is determined by the camera control keys that are pressed. | |
xyzAccellerator Time | Default: 5.0 | The time in seconds it will take for the camera to reach the speed set by xyzRate. A value of 0 will disable acceleration. Note that xyzAdjust must be set to True for this feature to be enabled. | |
AllowPbhAdjust | Yes/No | Controls whether the camera responds to pitch, bank and heading change commands. | |
ShowLensFlare | True/False | Determines whether lens flare effect can be shown (based on user setting). | ShowLensFlare = False |
Category | Aircraft AirTraffic Cockpit Custom Outside Multiplayer Runway Scenery Tower | Every camera definition must include a category that defines how the camera is exposed in the user interface. Categories define the view cycling behavior (S and A keys) 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. | Category = Cockpit |
MomentumEffect | Yes/No | Controls whether the camera exhibits momentum effect. | MomentumEffect = Yes |
ZoomPanScalar | 0.0 to 100.0 | 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). | ZoomPanScalar = 1.0 |
PitchPanRate | 0.0 to 100.0 | Controls the rate at which pitch is changed in degrees per second. | PitchPanRate=20 |
HeadingPanRate | 0.0 to 100.0 | Controls the rate at which heading is changed in degrees per second. | HeadingPanRate=60 |
Panacceleratortime | 0.0 to 30.0 Default: 5.0 | 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 (as controlled by PitchPanRate and HeadingPanRate), thus yielding smoother panning movement. Lower numbers yield more abrupt panning. | |
HotKeySelect | 1 to 10 | Links the camera to one of the 10 pre-defined key events for activating cameras; see the Control Assignments dialog. | HotKeySelect=2 |
Transition | Yes/No | When switching between camera views Flight Simulator can provide a “smooth” transition 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 yes. If either or both are set to No then the view switch is instantaneous. | Transition = Yes |
ClipMode | Normal Minimum Spot Tower | 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: “Normal” The near clip plane is scaled along with the zoom level. Useful for most views. | ClipMode=Minimum |
Chasedistance | 0.0 to 3000.0 Default: 0.0 | Initial distance in meters of the camera from the target object in external views. | ChaseDistance = 500 |
Chaseheading | -180.0 to 180.0 | Initial angular offset in degrees of the camera relative to the target object in external views. | ChaseHeading = 15 |
Chasealtitude | -1000 to 3000 Default: 0.0 | Initial altitude in feet of the camera relative to the target object in external views. | ChaseAltitude = 10 |
Chasetime | 0.0 to 200.0 Default: 0.0 | Length of time in seconds an aircraft is kept in Fly-By view before a new position is computed. | ChaseTime = 20 |
Instancedbased | Yes/No | If Yes, a new instance of the camera is created for each instance of the object referenced by the TargetCategory setting. | InstancedBased = Yes |
Cyclehideradius | 0.0 to 100.0 | For instance based cameras, sets the distance (in nautical miles) beyond which the camera is skipped in the cycling order. | CycleHideRadius = 7 |
Targetcategory | None AI Planes Fixed | Determines which object class, when a new instance is created, triggers the creation of a new InstanceBased camera. | TargetCategory = Fixed |
Cyclehidden | Yes/No | If Yes, the camera is hidden from view cycling—it does not appear when cycling through views using the keyboard. | CycleHidden=Yes |
FixedLatitude | -90.0 to 90.0 Latitude values can be expressed in decimal (-90 to +90) or hemispheric (N90 to S90) notation. Default: 0.0 | For Fixed camera types, the latitude of the cameras position. | FixedLatitude=n32.8155 |
FixedLongitude | -180.0 to 180.0 Longitude values can be expressed in decimal (-180 to +180) or hemispheric (W180 to E180) notation. Default: 0.0 | For Fixed camera types, the longitude of the cameras position. | FixedLongitude=w115.655 |
FixedAltitude | -500.0 to 30,000,000.0 Default: 0.0 | For Fixed camera types, the altitude of the cameras position in meters. | FixedAltitude=-12 |
With the above information, you can make edits to existing camera definitions, knowing what each of the property lines mean. To add a new camera, the best way is to copy an existing entry, and then modify the above parameters to customize how you want it to behave. The three examples below will walk you through the steps to add a certain type of camera.
Important Note: The cameras in the cameras.cfg file (located in app data) is only reloaded when the game is restarted. Cameras located in an aircraft.cfg file are easier to edit, since the aircraft can be reloaded in mid-flight, without having to reselect the plane in the menu, or restarting the game. The reload aircraft command has to be manually set in the control settings, and is called “Aircraft (reload)”. This enables the user to reload the aircraft.cfg after any modification to the configuration file.
Examples
Adding an Aircraft Camera
We are going to add a camera on the CRJ-700 as if it was positioned at the top of the tail section, looking forward at the top of the fuselage. The best way to do this is by making a copy of the tail view, and adjusting it to the desired angle. The tail view is the closest camera to what we want. The tail camera definition is shown below, and can be found in the following location:
DVD Version: C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X\SimObjects\Airplanes\Bombardier_CRJ_700\aircraft.cfg
Steam Version: C:\Program Files (x86)\Steam\steamapps\common\FSX\SimObjects\Airplanes\Bombardier_CRJ_700\aircraft.cfg
[CameraDefinition.1] Title = “Tail” Guid = {5c1df273-034b-4e7f-953a-9d5e26f1646c} Description = Looking forward from behind the aircraft Origin = Center SnapPbhAdjust = Swivel SnapPbhReturn = FALSE PanPbhAdjust = Swivel PanPbhReturn = FALSE Track = None ShowAxis = FALSE AllowZoom = TRUE InitialZoom = .75 ShowWeather = Yes InitialXyz = 0, 3, -35.0 InitialPbh = 5, 0, 0 XyzAdjust = TRUE Category=Aircraft MomentumEffect=TRUE ClipMode=Minimum | CRJ-700 Default Tail Camera Definition |
To start things off, we will rename Tail to Tail Cam, use Guidgen to get a unique guid number, and give the camera a different description.
Title = “Tail Cam” Guid = {639D2B60-6442-4b6c-BDC1-F9D0C9FEDD2A} Description = Looking forward from a camera in the tail | Modified Title, Guid and Description |
The camera is going to be of the outside of the aircraft, so the category will remain Aircraft. After that, the trickiest part is adjusting InitialXyz and Initial Pbh so that the camera faces the top of the fuselage. To move the view back towards the tail, we adjust the last value of InitialXyz to -13, and 4 moves the camera up, as if it was positioned on the tail. The only other adjustment we need to make for InitialPbh is to angle the camera slightly down, so more of the fuselage is in view. A value of 20 will angle the camera down to how we want it. We will also zoom the camera out to a value of .3 to include more of the plane in the view.
InitialXyz = 0, 4, -13 InitialPbh = 20, 0, 0 InitialZoom = .3 | Modified Camera Angle Parameters |
Since the camera is angled as if it was mounted on the tail, we do not want it to move forwards or back as the aircraft accelerates or decelerates. Disabling the momentum effect takes care of this.
MomentumEffect=False | Disabling the Momentum Effect |
That’s all the changes needed for this camera. The image below shows the tail camera we just made.
Adding a Cockpit Camera
In this example, we are going to add a backseat camera in the Baron 58, looking out towards the right wing. We’ll start by copying the right seat camera, and make our edits there. The aircraft.cfg file location is listed below.
DVD Version: C:\Program Files (x86)\Microsoft Games\Microsoft Flight Simulator X\SimObjects\Airplanes\beech_baron_58\aircraft.cfg
Steam Version: C:\Program Files (x86)\Steam\steamapps\common\FSX\SimObjects\Airplanes\beech_baron_58\aircraft.cfg
[CameraDefinition.001] Title = “Right Seat” Guid = {195EAB58-9E4A-1E2A-A34C-A8D9D948F078} Origin = Virtual Cockpit MomentumEffect = Yes SnapPbhAdjust = Swivel SnapPbhReturn = False PanPbhAdjust = Swivel PanPbhReturn = False Track = None ShowAxis = YES AllowZoom = TRUE InitialZoom = 0.7 SmoothZoomTime = 2.0 ZoomPanScalar = 1.0 ShowWeather = Yes XyzAdjust = TRUE ShowLensFlare=FALSE Category = Cockpit PitchPanRate=20 HeadingPanRate=60 InitialXyz=0.52, 0.0, 0.0 InitialPbh=3, 0, 0 | Baron 58, Right Seat Default Camera Definition |
The first step is to give the camera a different title and guid (view previous example for more info on the guid). Most cockpit cameras don’t have a description in their entries.
Title = “Right Backseat” Guid = {195EAB58-9E4A-3E2A-A34C-A8D9B848F068} | Modified Title and Guid |
The next step is locating the position of the camera and it’s angle. A value of .45 moves the camera to the right, -.2 moves it down, and -1.8 moves it back towards the backseats. A value of 45 for InitialPbh rotates the view 45° to the right, showing a view of the right wing. Initial zoom is set to .3 to show more of the aircraft in the camera.
InitialXyz=.45, -.2, -1.8 InitialPbh=0, 0, 45 InitialZoom = .3 | Modified Camera Angle Parameters |
All the edits for this camera are complete. The image below shows the right backseat camera.
Adding a Fixed Camera
In this example, we will place a camera on the beach, at the end of runway 09 at Princess Juliana. Because FSX does not include any default fixed cameras, use the template below to make your own. If you want the camera to be usable by all aircraft, place the camera in the cameras.cfg file. If you only want the camera to be accessible in certain aircraft, place the camera into aircraft’s aircraft.cfg file.
Cameras.cfg file location:
Windows XP: C:\Documents and Settings\”User”\Application Data\Microsoft\FSX
Windows Vista/7/8/10: C:\Users\”User”\AppData\Roaming\Microsoft\FSX
[CameraDefinition.XXX] Title = Title Goes Here Guid = {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} Origin = Fixed InstancedBased = No SnapPbhAdjust = None PanPbhAdjust = Swivel Track = X ShowAxis = No AllowZoom = Yes InitialZoom = 1.0 SmoothZoomTime = 5.0 ShowWeather = Yes XyzAdjust = TRUE ShowLensFlare=FALSE Category = Custom ClipMode=Normal CycleHideRadius = 7 FixedLatitude=XX.XXXX FixedLongitude=XX.XXXX FixedAltitude=X CycleHidden=X | Fixed Camera Definition Template |
As done previously, we will give the camera it’s own unique title and guid.
Title = Princess Juliana: Beach Overhead Guid = {2900F626-8C26-4154-8FDC-E4346177C404} | Modified Title and Guid |
We also want the camera to track the user’s aircraft as they fly by, so the track will be set to track.
Track = Track | Camera Motion Set to Track |
The next thing to do is locating the camera position in the world. To find the desired latitude and longitude, you can either fly or slew your aircraft to the location you want, and grab the latitude and longitude that is displayed after entering slew, or pressing shift + z. The coordinates will have to be converted to decimal format to FSX to read them correctly. A helpful tool is the Convert Coordinates Page on earthpoint.com. Plug in the latitude and longitude from FSX into the first two boxes and hit Calc. Then copy the Degress Lat Long coordinates into the .cfg file. To ensure the camera is positioned in the correct hemisphere, use the following notation in front of the coordinates: N/+, S/-, E/+, W/-.
FixedLatitude=n18.03925 FixedLongitude=w63.1205 FixedAltitude=5.5//Alternate NotationFixedLatitude=+18.03925 FixedLongitude=-63.1205 | Camera Location Parameters |
The fixed altitude value is the distance in meters that is camera is positioned from ground level. Because the latitude and longitude coordinates set the camera position, there is no need for the InitialXyz camera property. This camera is also set to track the user’s aircraft as they fly by, so there is no need for the InitialPbh camera property. If track =none, then InitialPbh could be used to determines the camera’s angle of pitch, bank, and heading.
Another important factor we have to decide is whether the camera will show display when cycling through views. If we were to be flying anywhere except for Princess Juliana and decided to cycle through views, this camera would display in the cycle, which besides for there being almost no scenery loaded at that location, it is an annoying feature most of the time. Setting CycleHidden to Yes removes the camera from the cycle, meaning that the user has to right click and select the camera manually from the menu.
CycleHidden=Yes | Hide the Camera during Camera Cycling |
Here is the finished camera view for Princess Juliana. Note that the number given to this camera definition is 012, since the last camera in the cameras.cfg file is 011 (multiplayer planes).
[CameraDefinition.012] Title = Princess Juliana: Beach Overhead Guid = {2900F626-8C26-4154-8FDC-E4346177C404} Origin = Fixed InstancedBased = No SnapPbhAdjust = None PanPbhAdjust = Swivel Track = Track ShowAxis = No AllowZoom = Yes InitialZoom = 1.0 SmoothZoomTime = 5.0 ShowWeather = Yes XyzAdjust = TRUE Transition = No ShowLensFlare=FALSE Category = Custom ClipMode=Normal CycleHideRadius = 7 FixedLatitude=n18.03925 FixedLongitude=w63.1205 FixedAltitude=5.5 InitialPbh=0, 0, 0 CycleHidden=Yes | Completed Camera Definition |
Here is the finished camera view at the end of runway 09 at Princess Juliana.