Introduction
NB: You will not need any external tools - everything you need comes with the base game.
Many British trains tend to have a rather small driver's cab and window. Although realistic, I find it gives a rather poor view of the surroundings. You can see the track and signals, but very little else.
Of course, I can use an external camera, but then I don't hear the AWS sounds. There is only a visual indication on the HUD, but I sometimes miss that, which means the train activates its emergency brakes and I have to wait for it to come to a complete stop before I can go on.
Most cabs have at least two camera positions. In this guide, I will show you how I've modified the secondary camera position of a class 377 EMU. It now sits in front of the cab, giving me a completely unobscured view.
To illustrate, we're going to make it so you can freely switch between these two camera positions:
The original cab view.
The new "cab" view, which is actually just in front of the wind shield.
As far as the game is concerned, I'm still inside the cab, and still hear all the sounds as if I were inside the cab. This means I can still hear the AWS and Vigilance sounds.
Although I only show how to do this for the 377 EMU that comes with the London to Brighton line, it should be very similar to other EMUs, such as the 319, 378, 380, 444, 450, 455, 4BIG, 4CIG and 4VEP. Of course, it should also work with DMUs such as the class 150 and 158.
The paths to the cab view .bin-files will obviously be different for different trains, but the steps you need to follow will be the same.
As always when messing with files, be careful and make backups before doing anything.
Find And Convert The Cab Camera File
Find the file and make a backupYou need to find the file where the cab camera positions are defined. In this example, this is the folder for the cab of the Class 377 that comes with the London to Brighton route:
C:\Program Files\Steam\steamapps\common\railworks\Assets\RSC\BrightonMainLine\RailVehicles\Electric\Class377\CabView
The above path should all be on a single line. That goes for all paths in this tutorial, by the way.
If you have steam installed in a different folder than C:\Program Files\, the beginning of this path will obviously be different.
In this folder you should find the file Class377 Cab Camera.bin. That's the file we're going to modify, so before doing that, make a backup of it first.
Convert the file so you can edit it It is not possible to directly edit .bin files, as they appear to be compressed text files. To uncompress them, you will need the program serz.exe, which comes with the game. Find it in the root of your Train Simulator game folder:
C:\Program Files\Steam\steamapps\common\railworks\serz.exe
At this point we'll either need to fiddle around with the windows command line, or we can just copy the Class377 Cab Camera.bin file into the same folder as serz.exe. The latter is easier, so I'm going to do that.
After having copied Class377 Cab Camera.bin into the root Train Simulator, drag the file on top of serz.exe. For a split second, a windows command line window will appear and close itself. You should now notice a new file: Class377 Cab Camera.xml
Now we have a text file we can edit.
RW_ToolsThere is a tool called RW_Tools[www.rstools.info] , which is an unofficial, non-free third party tool, to directly edit .bin files without needing to manually convert them. It can also do a whole bunch of other things. Feel free to use that instead if you have it. However, I promised to show how to do this without any third-party tools, and so I shall.
Change The Camera Positions
Identifying the important parts of the fileNow we're going to edit the file Class377 Cab Camera.xml. Use a regular text editor, such as Notepad. Don't use WordPad or MS Word.
Although you're editing a plain text file, it needs to be parsed by a program, and it will be very picky even if you've accidentally deleted a single character, such as a / or > character. Be very careful as you edit this file.
In the image I've identified the important parts of the file. Notice how each camera has two parts, it has an offset which indicates its position, and a direction which is where it's pointing by default.
If you've driven one of these Class 377 trains before, you may be aware they have two camera views. One is the regular, default view, the second is one that is slightly closer to the window. We will edit the second camera position, and leave the first as it is. Both cameras have the same direction, which is directly forward. So we only need to change the offset of the second camera, and leave the direction unchanged.
I'm quite happy with how much you can turn the camera around, and have no problems with how bouncy it is, so we're not going to change those values either.
XYZ-coordinatesThe offset of each camera is defined using coordinates X, Y and Z, one for each axis in the 3D simulation. I don't know what units are used (metres?), but here's what I've figured out:
X - How far the camera is from the centre of the train. 0 is right in the middle, a negative value is to the left, and a positive value is to the right. It's currently a negative value of -0.785, because the driver's seated on the left of the train.
Y - How far the camera is, measured from the ground. It is at 2.6.
Z - How far the camera is positioned forward or backward. Measured from some arbitrary point. A higher number is further forward. It is currently at 8.8.
Determining the new coordinatesI want the secondary camera to be positioned in the same place as the regular primary camera, with the only difference that it's moved forward enough, so that it is in front of the wind shield. That means we can give the secondary camera the same X and Y coordinates as the primary camera.
The only thing we'll need to figure out is what the Z coordinate needs to be. It is currently at 8.8, but that's not far enough forward. The secondary camera is at 9.1, which is indeed a little more forward, but still not enough. So what we know for sure is that it has to be more than 9.1
It will take some trial and error to find the right value, see the next section about testing your changes. After a few attempts, I settled on 10.3.
Testing Your Modifications
Convert the file backAfter you've made your changes to the file Class377 Cab Camera.xml, save them. Now we need to convert it back to a .bin file. You can do this by dragging and dropping the Class377 Cab Camera.xml onto serz.exe. The Windows command line window will appear again for a split-second, and you should now see that the file Class377 Cab Camera.bin has been updated.
You can tell from the file modification time in Windows Explorer, that the .bin-file has been updated.
Place the file back into its original folderNow place the .bin file back into its original folder: C:\Program Files\Steam\steamapps\common\railworks\Assets\RSC\BrightonMainLine\RailVehicles\Electric\Class377\CabView
You did make a backup like I told you earlier, right? Overwrite the Class377 Cab Camera.bin that was already in that folder.
Now start up Train Simulator and load up a scenario with the train in question. Then switch between camera positions with the right and left arrow keys to see the results.
If you're not happy with it, edit the xml-file again, convert it to bin, place it back into its proper folder and restart Train Simulator. Repeat this until you've found a value you like.
I can still see the passenger walkway bit if I turn my head all the way to the right, but I now have a completely clear view in front of the train. And I still hear the AWS sounds.
The XML File
For completeness' sake, here's the entire Class377 Cab Camera.xml after I was finished modifying it:
<?xml version="1.0" encoding="utf-8"?> <cBlueprintLoader xmlns:d="http://www.kuju.com/TnT/2003/Delta" d:version="1.0"> <Blueprint> <cCabCameraBlueprint> <Name d:type="cDeltaString">377 Cab Camera</Name> <RenderComponent> <cCameraRenderBlueprint/> </RenderComponent> <UpdateComponent> <cCabCameraUpdateBlueprint> <camType d:type="sUInt32">1</camType> <cameraOffset> <cRVector3> <X d:type="sFloat32" d:alt_encoding="00000060B81EE9BF" d:precision="string">-0.785</X> <Y d:type="sFloat32" d:alt_encoding="000000C0CCCC0440" d:precision="string">2.6</Y> <Z d:type="sFloat32" d:alt_encoding="000000A099992140" d:precision="string">8.8</Z> </cRVector3> </cameraOffset> <cameraDirection> <cRVector3> <X d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</X> <Y d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</Y> <Z d:type="sFloat32" d:alt_encoding="000000000000F03F" d:precision="string">1</Z> </cRVector3> </cameraDirection> <windowCameraOffset> <cRVector3> <X d:type="sFloat32" d:alt_encoding="00000060B81EE9BF" d:precision="string">-0.785</X> <Y d:type="sFloat32" d:alt_encoding="000000C0CCCC0440" d:precision="string">2.6</Y> <Z d:type="sFloat32" d:alt_encoding="000000A099992440" d:precision="string">10.3</Z> </cRVector3> </windowCameraOffset> <windowCameraDirection> <cRVector3> <X d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</X> <Y d:type="sFloat32" d:alt_encoding="0000000000000000" d:precision="string">0</Y> <Z d:type="sFloat32" d:alt_encoding="000000000000F03F" d:precision="string">1</Z> </cRVector3> </windowCameraDirection> <verticalDirectionalFreedom d:type="sFloat32" d:alt_encoding="000000606666EE3F" d:precision="string">0.95</verticalDirectionalFreedom> <horizontalDirectionalFreedom d:type="sFloat32" d:alt_encoding="000000000000FC3F" d:precision="string">1.75</horizontalDirectionalFreedom> <SpringXCoefficient d:type="sFloat32" d:alt_encoding="000000A09999B93F" d:precision="string">0.1</SpringXCoefficient> <SpringYCoefficient d:type="sFloat32" d:alt_encoding="000000E051B8BE3F" d:precision="string">0.12</SpringYCoefficient> <SpringZCoefficient d:type="sFloat32" d:alt_encoding="000000E051B8AE3F" d:precision="string">0.06</SpringZCoefficient> <DampingXCoefficient d:type="sFloat32" d:alt_encoding="00000080976E923F" d:precision="string">0.018</DampingXCoefficient> <DampingYCoefficient d:type="sFloat32" d:alt_encoding="000000E051B88E3F" d:precision="string">0.015</DampingYCoefficient> <DampingZCoefficient d:type="sFloat32" d:alt_encoding="00000040E17A843F" d:precision="string">0.01</DampingZCoefficient> </cCabCameraUpdateBlueprint> </UpdateComponent> <PosOriComponent> <cPosOriBlueprint/> </PosOriComponent> </cCabCameraBlueprint> </Blueprint> </cBlueprintLoader>
I've set tab indentation to be just two spaces wide for the sake of legibility.
Missing Tracks.bin Error
I haven't seen this error happen with the Class 377, but the game may show you the "missing tracks.bin" error if you have modified the game and are trying to play a career scenario.
If you see the message, don't click anything, but press F2. This opens the save dialog. Save the game, or just press cancel, and you should be able to play. You will not get any points when you finish the scenario, and I believe the achievements don't work either. If you want your points and achievements really badly, you will have to undo the modifications.
What happens here is that the game detects it's been modified. It doesn't know exactly what has changed, just that something has. It could potentially be something that lets you cheat in the on-line scoring charts you see when you finish a scenario. In theory, you could modify a train to be extremely light and responsive, so you can always be 10 minutes early at every stop.
Another Example: Moving The Class 86 Second Camera To The Right
Player @Mattg17 [TF] told me of a camera modification he did to the Class 86 that comes with the WCML North route. The second camera of that train just pushes your face closer to the windshield, he modified it to have it sit on the right side of the cab instead.
The steps required are very similar.
FilenameThis is the file you need to edit:
railworks\Assets\keithmross\WCMLNorth\RailVehicles\Electric\Class86\Default\Cabview\Class86_CabCam.bin
From the file name we can tell this is the cab camera definition, although it's named slightly differently from the one used for the 377. How the files are named is up to the developer of the train.
New XYZ-coordinatesDetermining the coordinates is really easy, since we're just doing a mirroring of the default camera position. For the second camera, the Y and Z coordinates should be exactly the same as those for the primary camera, since height and forward position are the same.
Only the X coordinate changes, and it's a matter of changing it from a negative value to a positive one. The default camera's X coordinate was set at -0.75, so for the second camera the value should be 0.75.
Enjoy!
Have fun with your new camera position!
If you look behind you form this new position, the cab can look a bit odd. That's because we've done something the developers never anticipated on, and are now viewing the inside of the cab from the wrong side. It looks downright weird with many missing textures. But since we're going to spend most of our time looking forward, this is no issue.
Don't forget to make a backup of your modified camera position file. Updates to the game may restore this file to its original state, as does verifying the integrity of the game cache.
Attribution-ShareAlike 4.0 International[creativecommons.org]
Source: https://steamcommunity.com/sharedfiles/filedetails/?id=389270539
More Train Simulator guilds
- All Guilds
- Train Simulator 20XX Achievements List
- Fixing the Out of Memory Error
- Train Simulator Guide 9
- Using RealTimeTrains
- [ENG] TS2015 - Controls Overview
- Driving and Firing Steam Engines
- Train Simulator - UK Commuter Rail Guide (Tips and Tricks)
- Train Simulator - How to Get the Correct Picture When Posting a Scenario and Else Tips
- Train Simulator - Guide to Creating and Importing Custom Scenery