Luckily in Transport Fever 2 this is all quite simple if you've once done it:
All this is done in the .mdl file.
- Bogies/axles: You basically group the files, so you have this hierarchy:
1. Body
1. Interior
1. Doors
1. Other parts like details or lights
-2. Bogie 1
--3. Axle 1
--3. Axle 2
-2. Bogie 1
--3. Axle 1
--3. Axle 2
It looks like this (german names: achse=axle, dg=bogie, anbauteile=details on the body):
{
materials = { "vehicle/waggon/bboe_n28ca.mtl", },
mesh = "vehicle/waggon/bboe_n28anbauteile.msh",
name = "body",
transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, },
},
{
materials = { "vehicle/waggon/bboe_n28ca.mtl", },
mesh = "vehicle/waggon/bboe_n28anbauteilehinten.msh",
name = "body",
transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, },
},
{
children = {
{
materials = { "vehicle/waggon/bboe_n28ca.mtl", },
mesh = "vehicle/waggon/bboe_n28achse.msh",
name = "w1",
transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.29, 0, 0.534, 1, },
},
{
materials = { "vehicle/waggon/bboe_n28ca.mtl", },
mesh = "vehicle/waggon/bboe_n28achse.msh",
name = "w1 (2)",
transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.29, 0, 0.534, 1, },
},
},
materials = { "vehicle/waggon/bboe_n28ca.mtl", },
mesh = "vehicle/waggon/bboe_n28dg.msh",
name = "body",
transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7.35, 0, 0, 1, },
},
{
children = {
{
materials = { "vehicle/waggon/bboe_n28ca.mtl", },
mesh = "vehicle/waggon/bboe_n28achse.msh",
name = "w1",
transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1.29, 0, 0.534, 1, },
},
{
materials = { "vehicle/waggon/bboe_n28ca.mtl", },
mesh = "vehicle/waggon/bboe_n28achse.msh",
name = "w1 (2)",
transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1.29, 0, 0.534, 1, },
},
},
materials = { "vehicle/waggon/bboe_n28ca.mtl", },
mesh = "vehicle/waggon/bboe_n28dg.msh",
name = "body",
transf = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7.35, 0, 0, 1, },
},
Alles anzeigen
As you can see, the body parts are positioned at the origin (0, 0, 0). The bogies are placed on where they are connected to the body (7.35, 0, 0) (-7.35, 0, 0). The axles are placed in a RELATIVE position to the bogies, so when it is distanced +-1.29 from the center of the bogie, you place it there. The name=w1 tag defines it as an axle and the game automatically does all the rest.
Passengers are also placed easily. You have to define every seat in the train.
metadata = {
... here come top speed, availability, weight and so on ...
seatProvider = {
crewModels = { },
drivingLicense = "RAIL",
seats = {
{
animation = "sitting", crew = false, forward = true,
group = 1,
transf = { -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 8, 0.6, 1.1, 1, },
}, {
animation = "sitting", crew = false, forward = true,
group = 1,
transf = { -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 8, 1, 1.1, 1, },
},
....
}
Alles anzeigen
In the metadata-section you might encounter a seatProvider section. Change the position values to where your seats are. The values above explain for themselves what they do. You can change the animation to sitting, standing and driving. If crew is true, this is a crew member that is always visible.
Oh and when you insert your models, please always take body at first! This makes many things easier and you can always leave the "group = 1" as it is.
All models/passengers are positioned with a transformation matrix. If you can't handle this, there are many helping tools on the internet. This site also has one, but I think it's broken at the moment due to the new database system.
We'll leave the doors for now. If you have done the other things, you might have a better understanding, which you will need as your doors are folding doors I think. 
Edit: When exporting your train, you only need similar models ONCE. If you have 4 similar axles, you'll only need them once and then insert it multiple times.