Table of Contents

Importing Switches

Imported switches are used when the Railtool cannot generate a special switch type reliably.

Most standard switches can be created directly with the Railtool. However, more complex constructions (for example DW, EKW, DKW, special double crossovers, or asymmetric real-world layouts) vary a lot between networks and often require manual modelling.

In those cases, the switch is built in a 3D program (usually Blender), exported as FBX, imported into SubwaySim 2, and finally wrapped into a Blueprint so the Railtool can use it like any other switch.

This page covers:

modelling → paths → export → import → animations → Blueprint → Railtool connection


1) When Do You Need Imported Switches?

Use imported switches when:

You do NOT need imported switches for:

Crossings (no moving parts) are generated by Railtool and do not need custom building.


2) Using Built-in Imported Switches (SDK / Base Game)

The Modding SDK ships with a variety of imported switches that are used by the base game.

You can find them here:

SubwaySim2_Modding / RailwaySystem / ImportedSwitches

Inside this folder, you will see many switch assets.

Important:


2.1 Placing an Imported Switch in the Level

1. Make sure you are in Selection Mode in the Unreal Editor

 (important: not in Railtool mode while placing the BP)

2. Drag the desired BP_… imported switch into your level.

3. You can freely move and rotate it like any normal actor.

4. Align it to your intended layout.

 (This is manual placement, so take your time.)


2.2 Connecting the Switch to Railtool Tracks

Once the switch is placed, it needs to be connected to the Railtool track network:

Laying Tracks

After this step:


3) Creating Your Own Imported Switches

If none of the provided switches fit your needs, you can create your own imported switch.

Typical reasons include:

The full workflow looks like this:

1) Planning & naming
2) Modelling rails + frogs + guards
3) Creating drivable paths (critical!)
4) Sleepers, clamps, gravel
5) UVs & materials
6) Rigging blades + throw bars
7) Animations (NLA)
8) Export FBX
9) Import into Unreal (SkeletalMesh, StaticMeshes, paths, animations)
10) Animation Blueprint (ABP)
11) Switch Blueprint (RTImportedSwitchActor)
12) Test in level + connect with Railtool

This is the same concept used by base game imported switches.


4) Terminology (German + English)

Quick translation list used in references and modelling:

English German
Rail Gleis
Blade Zunge
Stock (Rail) Backenschiene
Frog Herzstück
Flangeway Rillenweite
Guard Rail Radlenker
Guide Rail Leitschiene
Switch Motor Weichenmotor
Sleepers Schwellen
Hollow Sleeper (Tub) Trogschwelle

5) Switch Parts Explained

5.1 Rail Profile

We generally build everything in the 60E1 rail profile.

That means:


5.2 Blade and Stock Rail

The blade rail is the moving part of the switch. The stock rail is the fixed rail the blade presses against.

Key details:

This transition is critical:


5.3 Frog

The frog is where rails intersect and split.

It is usually the most complex part because:


5.4 Throw Bar and Switch Motor / Lever

The throw bar and motor move the blades.

Important behavior:

If you animate blade movement:


5.5 Guard Rails and Guide Rails

Guard rails and guide rails keep wheels aligned over frogs.

When a guard rail does not fit cleanly:


5.6 Clamps

Switches use several clamp types:

Clamps often become the biggest performance cost if modelled fully. (We cover optimization later.)


6) Switch Types (Crossing, Switch, DW, EKW, DKW)

6.1 Rail Crossing

Crossings are NOT switches. They have no moving parts. Railtool can generate them → no custom build required.


6.2 Normal Switch

A standard switch (single turnout) can be generated by Railtool. No custom build needed in most cases.


6.3 DW (Doppelweiche / Double Switch)

DW is basically two switches extremely close together that intersect. These currently must be custom built because Railtool cannot reliably generate them.


6.4 EKW (Einfache Kreuzungsweiche)

EKW is a crossing with a switch integrated. Custom build required.


6.5 DKW (Doppelkreuzungsweiche)

DKW is like EKW but allows switching between tracks in multiple directions. Even more complex → custom build required.


6.6 DKW: “Blades Inside” vs “Blades Outside”

DKW has two typical constructions:

Outside blades:

Inside blades:


7) Planning + Naming Convention

Before modelling, decide:

Example naming:

DW-60E1-100-6:1LR

Some softwares don’t like “:” so you may see:

DW-60E1-100-1_6LR

Keep the naming consistent across:


8) Modelling in Blender

We assume you are working inside a prepared file like:

60E1-Rail.blend

This file already contains prepared meshes and references. Follow its folder / collection structure:


8.1 Curves and Paths (Foundation)

First we set up our angle, example 1:6:

1) Place a single vertex in world origin
2) Extrude it 6 m along X-Axis
3) Extrude it 1 m along Y-Axis
4) Fill the 2 lonely verts → you now have a triangle

The edge that is ~6.08 m long will be called “c”.

Next we make a 100° circle and align it so that the bottom vertex sits in the origin. Recommended:

Example: 1024 verts.

Delete unnecessary verts (keep only the range you need).

Now:

How to align precisely (recommended):

This is faster and more precise than eyeballing.

Now you have the left curve more or less done.

You still need a right curve:

Now add a straight edge, convert them to curves. At this point your switch layout curves should look correct.


8.2 Creating Drivable Paths (Export-Ready / Critical!)

Paths define where trains can drive. They MUST be correct, otherwise routing will fail.

Workflow:

Important rule:

Naming recommendation:

(and more if needed)

These paths will later be referenced inside the Switch Blueprint SwitchConfigurations.


8.3 Rails + Flangeway (Array + Curve Modifiers)

Rails:

Flangeway / wheel space:

After that you should have rails + clearance along the curves.


8.4 Sleepers (Array on Curves)

Next, sleepers:

After lengthening and vertex merging you should have sleepers aligned.


8.5 Frogs: Cut-Out + Stitching the Heart

At first the frog area will look wrong because rails intersect.

Step 1: Cut out the parts where the flangeway and rail intersect.

Step 2: Model the frog:

Frogs will always look a bit weird in Blender – don’t worry. Focus on clearance and correct geometry.


8.6 Blades + Stock Rails

Blades:

Now:

Stock rail:

Repeat for all blade/stock sections.

Goal:


8.7 Guards and Guides

Guard rail:

If a guard does not fit:


8.8 Hollow Sleepers + Throw Bar

Hollow sleepers:

Throw bar:

Make sure:


8.9 Clamps (Tedious but Required)

Clamps are the most tedious part.

Helper setup:

Placement workflow:

1) take RailClamp mesh
2) edge snap it to the middle of the first sleeper and middle of the rail
3) duplicate it along X by 0.6 m (sleeper spacing)
4) press Shift+R to repeat until you cover the full length
5) move clamps to align with the curve of the rail
6) rotate all clamps individually to match the rail direction

Why not instances/arrays:

Blade clamps:

Guard clamps:

Special clamps:


8.10 Clamp Optimization Choices

Clamps are a lot of geometry. You have two approaches:

Correct way (best performance, more work):

This is easier for symmetrical switches (especially DKW quarters).

Lazy way (often good enough to start):

Recommendation:


8.11 Gravel

Take a gravel mesh (GravelOEBB or GravelSubway depending on usage) and apply curve modifiers (often multiple curve passes).

Then:

UV important:


9) UVs and Textures

UVs are quite simple because we use a tileable trimsheet: RailTileSet.

Workflow:

Consistency matters:


10) Rigging and Animating

Imported switches need blade movement.

We use an Armature.


10.1 Rigging

1) Create your root bone:

 Name: **Rail**

2) Assign a vertex group called “Rail” to everything that is static (non-moving):

Fast workflow:

3) For each blade:

Naming convention:

Blade(direction from → direction to)_(left/right blade)(bone index starting at thick end)

Examples:

Throw bars:

Skinning:


10.2 Animating

Example: A DW usually has 2 animations:

Typical timing example:

Example rotation values (will vary):

Important:

Graph Editor:

Output requirement:


11) Exporting (FBX)

Export groups (recommended):

Folder structure:

Paths requirement:


12) Importing Into Unreal (SubwaySim 2 SDK)

Import categories:


12.1 SkeletalMesh and Animations

Import the SkeletalMesh like a vehicle:

Verify:


12.2 StaticMeshes and Paths

StaticMeshes:

Paths:


13) Animation Blueprint (ABP)

Create an Animation Blueprint for the switch.

Rules:

Workflow (recommended):

(triple check for typos and correct order)

If blades don’t move:


14) Switch Blueprint Setup (RTImportedSwitchActor)

This Blueprint is what you actually place in the world and what Railtool integrates with.

It combines:


14.1 Create the Blueprint

1) Create Blueprint Class 2) Parent Class: RTImportedSwitchActor 3) Name it coherently, e.g.:

 BP_IS_DW_60E1_100_1_6LR

14.2 Assign Meshes and ABP

In the Blueprint:

Optional:


14.3 RailTool2 SwitchConfigurations

Open the Blueprint Details and locate:

RailTool2 → SwitchConfigurations

Each SwitchConfiguration defines one valid route through the switch.

Each configuration links:

Example idea:

Path = PathLeft

    SW1 = 1 (end)
    SW2 = 0
* Route “Right”:
    Path = PathRight
    SW1 = 0
    SW2 = 2

Notes:


14.4 Optional Construction Script Toggles

Some imported switches need optional toggles:

Typical setup:


14.5 Switch Motors

If your switch uses motor meshes:


15) Testing the Switch in the Level

1) Make sure you are in Selection Mode 2) Drag your BP_… imported switch into the level 3) Move/rotate it into position 4) Connect it with Railtool ControlPoints:

 → [[manual:subwaysim:map_construction:laying_tracks|Laying Tracks]]

Validate:


16) Extra Info: Calculating the Angle

Example 1:6:

1/6 = 0.1666...
atan(0.1666...) = 9.462322208...

Rounded to 4 decimals:

9.4623°

It can be useful to maintain a list of known angles to avoid repeating the math.


17) Common Pitfalls


Next Step

Once your imported switch is placed and connected successfully, continue building your track network as usual: