Bridge Command - Ship Models
Introduction
There are two classes of other ship models that can be defined in Bridge Command. These are 'own ships' and 'other ships.' Ownships are models that have their full dynamics modelled, and are for use as the user's own ship. 'Other ships' are used to model all other ships in the environment. For details of what you can do with these, and how to load them in scenarios, please see the Scenario specification and the Scenario writer.
The most fundamental part of any ship model to load in Bridge Command is the 3D model itself. This can be in DirectX (.x) or 3DS Max format (.3ds). Additionally, for own ship models, equirectangular panoramic photos can be used. For more details on this, please see below. Alongside the model, the text file boat.ini is used to define the other characteristics. The specification of this file is detailed below, but for a general introduction to the .ini file format used by Bridge Command, please read the .ini file format.
Each vessel is contained in a folder, with the vessel's name, under Models\Othership or Models\Ownship as appropriate. So if Bridge Command is installed in its default location, an own ship model called 'Protis' would be at 'C:\Program Files (x86)\Bridge Command X.X\models\Ownship\Protis'. Bridge Command also looks in the user directory, which can be found using the button on the Bridge Command launcher, so users can add new ship models without needing to be able to make changes in the installation directory.
Sections
Own ships
The 3D model to load, and all of the characteristics of the own ship model are defined in the file Boat.ini in the model's folder. In addition, a file Radar.ini sets up the parameters for the radar. A complete example of both files is given below, and the effect of each line is explained below this:
If you are using panoramic photos for the own ship, each photo must be an equirectangular panorama, with transparency set for all areas of the photo that are not part of the ship. So for example, all bridge windows must be transparent, so Bridge Command can render the surrounding scene. To use this mode, instead of specifying a model file with the FileName parameter, FileName="360" should be used. The view positions are defined as for a normal ship model, and are set as follows:
- Views: The number of viewpoints on board the vessel (Minimum 1)
- For each viewpoint, where # is the viewpoint number:
- ViewX(#): The viewpoint's X coordinate (in the model's unit system)
- ViewY(#): The viewpoint's Y coordinate (in the model's unit system)
- ViewZ(#): The viewpoint's Z coordinate (in the model's unit system)
- Pano(#): The filename of the equirectangular panorama image (must support transparency)
- PanoRotationYaw(#): Optional: The angle correction in the yaw direction (around vertical), in degrees
- PanoRotationPitch(#): Optional: The angle correction in the pitch direction, in degrees
- PanoRotationRoll(#): Optional: The angle correction in the roll direction, in degrees
Boat.ini
FileName="boat.x" ScaleFactor=0.3 YCorrection=-3 AngleCorrection=0 Depth=3.0 Views=3 ViewX(1)=-0.3 ViewY(1)=15.74 ViewZ(1)=-6.0 ViewX(2)=9.4 ViewY(2)=16.0 ViewZ(2)=-9.8 ViewX(3)=-9.4 ViewY(3)=16.0 ViewZ(3)=-9.8 Max_propulsion_force=3000 AsternEfficiency=0.667 Mass=5000 MaxRevs=2500 DynamicsSpeedA=18.71 DynamicsSpeedB=100 PropSpace=2.0 DynamicsTurnDragA=180000 DynamicsTurnDragB=12000 DynamicsLateralDragA=187.1 DynamicsLateralDragB=1000 Inertia=120000 RudderA=5 RudderB=0.05 RudderBAstern=0 RudderAngularVelocity=10 BowThrusterForce=2000 SternThrusterForce=2000 BowThrusterDistance=3.0 SternThrusterDistance=2.5 Buffet=3.0 Swell=1.0 RollPeriod=8 PitchPeriod=12
- FileName: Sets the name of the 3D model file to load
- ScaleFactor: The amount to scale the 3D model by. Bridge Command uses metres as it's units, so if the model is in feet, then this should be around 0.3
- Note that all subsequent positions/distances are in the units/coordinate system of the 3D model file, except for the propulsion system.
- YCorrection: The amount to move the model UP. Therefore, if the model's origin is at its keel, this should be a negative value
- AngleCorrection: The number of degrees the model should be rotated about its vertical axis to correctly align it: The Bridge Command axis system is Y up and Z towards the model's stern (when viewed in a 3d model editor with a right handed coordinate system. Bridge Command uses a left handed coordinate system internally, so the Z axis is towards the ship's bow)
- Depth: The vessel's depth under the water line (in the 3D model's units)
- Views: The number of viewpoints on board the vessel (Minimum 1)
- For each viewpoint, where # is the viewpoint number:
- ViewX(#): The viewpoint's X coordinate (in the model's unit system - as long as AngleCorrection is zero)
- ViewY(#): The viewpoint's Y coordinate (in the model's unit system - as long as AngleCorrection is zero)
- ViewZ(#): The viewpoint's Z coordinate (in the model's unit system - as long as AngleCorrection is zero)
- ViewHigh(#): (Optional) Set this to 1 if this is an elevated view, where the camera should automatically look straight down when switching to this view
- MakeTransparent (Optional): If this is set to 1, any part of the model that is partially transparent will be made fully transparent. This is useful where models have bridge windows where the material used partially obscures the view.
- HasDepthSounder: If this is set to 1, a depth sounder reading is displayed
- MaxDepth: If there is a depth sounder, the maximum depth that can be measured (m)
- HasGPS: If this is set to 1, the GPS position will be displayed
- HasRateOfTurnIndicator: If this is set to 1, a rate of turn indicator will be displayed
- Mass: The vessel's mass (in kg)
- DynamicsSpeedA: The amount of drag on the ship proportional to its speed squared (drag(N)=DynamicsSpeedA*Speed(m/s)^2)
- DynamicsSpeedB: The amount of drag on the ship proportional to its speed (drag(N)=DynamicsSpeedB*Speed(m/s))
- DynamicsTurnDragA: The amount of angular drag on the ship proportional to the rate of turn squared (drag(Nm)=DynamicsTurnDragA*Rate Of Turn(rad/s)^2)
- DynamicsTurnDragB: The amount of angular drag on the ship proportional to the rate of turn (drag(Nm)=DynamicsTurnDragB*Rate Of Turn(rad/s))
- DynamicsLateralDragA: The amount of drag on the ship proportional to its lateral (sideways) speed squared (drag(N)=DynamicsLateralDragA*Speed(m/s)^2)
- DynamicsLateralDragB: The amount of drag on the ship proportional to its lateral (sideways) speed (drag(N)=DynamicsLateralDragB*Speed(m/s))
- Inertia: The ship's polar moment of inertia about it's vertical axis(kg m^2)
- RudderA: The turning effect of the rudder proportional to the ship's speed (Rudder torque(Nm)=RudderA*Speed(m/s)*rudder angle (deg)
- RudderB: The turning effect of the rudder proportional to the engine speed (Rudder torque(Nm)=Rudder*Engine Thrust (N)*rudder angle (deg)
- RudderBAstern: The turning effect of the rudder proportional to the engine speed when going astern (Rudder torque(Nm)=Rudder*Engine Thrust (N)*rudder angle (deg)
- RudderAngularVelocity (Optional): The maximum rudder response rate in degrees per second. If not set, a default of 30 is used.
- BowThrusterForce (Optional): The maximum bow thruster force (in Newtons)
- SternThrusterForce (Optional): The maximum stern thruster force (in Newtons)
- BowThrusterDistance (Optional): The distance of the bow thruster forward of the centre of rotation of the vessel in metres (world, not model units)
- SternThrusterDistance (Optional): The distance of the stern thruster behind of the centre of rotation of the vessel in metres (world, not model units)
- Buffet: The amount the ship is affected by buffeting due to the weather.
- Swell: The amount the ship is rolls in the swell, due to the weather.
- RollPeriod: The period for one roll cycle in seconds (Default 8s)
- PitchPeriod: The period for one pitch cycle in seconds (Default 12s)
- Max_propulsion_force: The maximum propulsion force of one engine (in Newtons)
- AsternEfficiency: (Optional) The proportion of thrust available when going astern (range 0-1, default 1)
- MaxRevs: The ship's maximum engine revolutions (RPM)
- PropSpace: The spacing between the port and starboard propellors in metres (world, not model units). Set to zero to model a one-engined vessel.
- PropWalkAhead: (Optional) The maximum turning moment (Nm) applied by the 'prop walk' effect on the ship, with the engine engaged forwards. If the vessel has a normal propellor arrangement, with a single right turning propellor, or double outwards turning propellors, this should be positive.
- PropWalkAstern: (Optional) The maximum turning moment (Nm) applied by the 'prop walk' effect on the ship, with the engine engaged astern. This should be positive for normal vessels, and should normally be larger than the ahead value.
- PropWalkDriftEffect: (Optional) The amount the ship should move sidways due to the 'prop walk' effect (Metres per Nm of prop walk)
- Windage: (Optional) The ratio between the speed with which the ship is moved by the wind and the wind speed.
- WindageTurnEffect: (Optional) The rate of turn due to the wind's action on the ship (Degrees/second per metre/second of wind speed when beam on to the wind)
- RadarScreenX: X location to display a radar screen (in the ownship model coordinates).
- RadarScreenY: Y location to display a radar screen (in the ownship model coordinates).
- RadarScreenZ: Z location to display a radar screen (in the ownship model coordinates).
- RadarScreenSize: Size of radar screen to display in ownship model coordinates.
- RadarScreenTilt: Tilt of radar screen in degrees (default is 0).
Radar.ini
If no radar.ini file is present in the vessel's ownship folder, defaults will be used for all of the Radar's parameters.
NumberOfRadarRanges=6 RadarRange(1) = 12 RadarRange(2) = 6 RadarRange(3) = 3 RadarRange(4) = 2 RadarRange(5) = 1 RadarRange(6) = 0.5 radar_sensitivity=3.0 radar_range_sensitivity=5.0 radar_height=10 radar_noise=0.000000000005 radar_sea_clutter=0.000000001 radar_rain_clutter=0.00001 NumberOfRadarColourSets=2 radar1_red(1)=255 radar1_green(1)=255 radar1_blue(1)=0 radar_bg_red(1)=0 radar_bg_green(1)=0 radar_bg_blue(1)=255 radar1_red(2)=128 radar1_green(2)=0 radar1_blue(2)=0 radar_bg_red(2)=0 radar_bg_green(2)=0 radar_bg_blue(2)=0
- NumberOfRadarRanges: The number of radar ranges available on the vessel. This should be set as one or greater.
- For each radar range, where # is the range number (1 to NumberOfRadarRanges):
- RadarRange(#): The radar range in nautical miles
- radar_sensitivity: The beam width of your radar in degrees. The smaller this is, the sharper your radar will be, but if you set this to be too low, it will reduce the program's performance.
- radar_range_sensitivity: The accuracy of the radar in detecting ranges, in metres. This is only used for contact range detection, for automatic contact tracking on the radar (ARPA).
- radar_height: The height of the radar scanner in metres above sea level.
- radar_noise: The amount of random 'noise' picked up on the radar display. Default value: 0.000000000005
- radar_sea_clutter: The intensity of the sea clutter on the radar from the waves near the radar. Default value: 0.000000001
- radar_rain_clutter: The intensity of the rain clutter on the radar from reflections from rain. Default value: 0.00001
- NumberOfRadarColourSets: How many sets of colours are available on the radar (e.g. 2 if there is a daytime and a nighttime colour scheme)
- For each radar colour set, where # is the set number (1 to NumberOfRadarColourSets):
- radar1_red(#), radar1_green(#), radar1_blue(#): The colour for the radar plot, in red green and blue components, each in the range 0-255.
- radar_bg_red(#), radar_bg_green(#), radar_bg_blue(#): The colour for the radar background, in red green and blue components, each in the range 0-255.
Other ships
The 3D model to load, and all of the characteristics of the own ship model are defined in the file Boat.ini in the model's folder. A complete example is given below, and the effect of each line is explained below this:
FileName="boat.x" ScaleFactor=0.3038 YCorrection=-17 SolidHeight=45 AngleCorrection=0 NumberOfLights=5 LightX(1)=26.4 LightY(1)=59.2 LightZ(1)=105.4 LightRange(1)=6 LightRed(1)=0 LightGreen(1)=255 LightBlue(1)=0 LightStartAngle(1)=-1 LightEndAngle(1)=112.5 LightX(2)=-26.2 LightY(2)=59.2 LightZ(2)=105.4 LightRange(2)=6 LightRed(2)=255 LightGreen(2)=0 LightBlue(2)=0 LightStartAngle(2)=247.5 LightEndAngle(2)=361 LightX(3)=0 LightY(3)=103.3 LightZ(3)=93.3 LightRange(3)=6 LightRed(3)=255 LightGreen(3)=255 LightBlue(3)=255 LightStartAngle(3)=247.5 LightEndAngle(3)=472.5 LightX(4)=0 LightY(4)=35.1 LightZ(4)=-171.6 LightRange(4)=6 LightRed(4)=255 LightGreen(4)=255 LightBlue(4)=255 LightStartAngle(4)=112.5 LightEndAngle(4)=247.5 LightX(5)=0 LightY(5)=116 LightZ(5)=6.6 LightRange(5)=6 LightRed(5)=255 LightGreen(5)=255 LightBlue(5)=255 LightStartAngle(5)=247.5 LightEndAngle(5)=472.5
- FileName: Sets the name of the 3D model file to load
- ScaleFactor: The amount to scale the 3D model by. Bridge Command uses metres as it's units, so if the model is in feet, then this should be around 0.3
- Note that all subsequent positions/distances are in the units/coordinate system of the 3D model file
- YCorrection: The amount to move the model UP. Therefore, if the model's origin is at its keel, this should be a negatve value
- (Optional): SolidHeight: The maximum height at which the model should block radar targets behind it. If omitted, this defaults to about half of the height above the waterline. Note that this should be set in the model units and above the model's origin.
- AngleCorrection: The number of degrees the model should be rotated about its vertical axis to correctly align it: The Bridge Command axis system is Y up and Z towards the model's stern (when viewed in a 3d model editor with a right handed coordinate system. Bridge Command uses a left handed coordinate system internally, so the Z axis is towards the ship's bow).
- NumberOfLights: The number of navigation lights
- For each light, where # is the light number:
- LightX(#): The light's X coordinate (in the model's unit system - as long as AngleCorrection is zero)
- LightY(#): The light's y coordinate (in the model's unit system - as long as AngleCorrection is zero)
- LightZ(#): The light's z coordinate (in the model's unit system - as long as AngleCorrection is zero)
- LightRange(#): The maximum range of the light (in nautical miles)
- The light's colour is defined in terms of it's red, green and blue values. Therefore a pure red light would have LightRed=255,LightGreen=0 and LightBlue=0:
- LightRed(#): The red colour component of the light (0-255).
- LightGreen(#): The green colour component of the light (0-255).
- LightBlue(#): The blue colour component of the light (0-255).
- LightStartAngle(#): The bearing relative to the ship's head that a light is visible from. (0-360)
- LightEndAngle(#): The bearing relative to the ship's head that a light stops being visible at. (0-720)
- So for example, a port steaming light could have LightStartAngle(2)=247.5 and LightEndAngle(2)=361. Note that the LightEndAngle should be greater than the LightStartAngle, and can therefore be between 0 and 720 degrees