Développement pour OpenBVE
0 - Tutoriel Route
1 - L'Objet b3d
2 - L'Objet csv
3 - L'Objet X
4 - L'Objet Animated
5 - La Route csv
6 - La Route rw
7 - Le Fichier train.dat
8 - Le Fichier extensions.cfg
9 - Le Fichier panel.cfg
10 - Le Fichier panel2.cfg
11 - Le Fichier panel.animated


Encore en construction


Contenus

1. Aperçu général


1. Aperçu général

Tout ce qui est écrit en bleu correspond au texte du fichier route.

C'est un fichier .csv avec le nom que l'on veut par exemple : route01.csv

La première chose a savoir est que le Rail 0 est le rail ou circule le train et qu'il existe par défaut dans le fichier route, on n'a pas besoin de le définir, il commence au point 0,0,0 de la route, cela correspond a l'écriture x,y,z dans les fichiers de développement (5-La Route csv).
X est l'axe perpendiculaire à la voie, le négatif (-1) c'est vers la gauche et le positif (1) c'est vers la droite, le point 0 correspond au centre de la voie.
Y est l'axe vertical à la voie, le négatif (-1) c'est vers le bas et le positif (1) c'est vers le haut, le point Y=0 correspond au dessus du rail.
Z est l'axe de la voie, le négatif (-1) c'est vers l'arrière et le positif (1) c'est vers l'avant , le rail démarre au point 0 le suivant au point 25 et ainsi dessuite tous les 25 m.
Pour le voir il faut avoir créé l'image du rail dans un fichier objet Track0.csv et le définir avec la commande With Structure dans le fichier Route exemple :

With Structure
.Rail(0).Load (Objets\track\Track0.csv)
.Rail(1).Load (Objets\track\Heurtoir_0d.csv)
.Rail(2).Load (Objets rack\Curve400GW.csv)

La commande .Rail(n) charge les rails que l'on va utiliser.

C'est un exemple j'ai mis mes fichiers dans le répertoire Objets, on peut le nommer autrement souvent en rapport avec le nom de la route, dans les objets des routes Anglaise les rails sont dans un répertoire track que j'ai gardé pour mes rails mais on peut aussi le nommer autrement, (chacun fait comme il veut pour les noms des répertoires).
La commande With Structure charge les objets pour la route, mais le Rail 0 apparaît après la commande With Track c'est à partir de là que la route commence vraiment.

With Track
0,
.Sta Départ; 07.5900; 08.0000; ; -1; 1; ;
.RailType 0;1



(ici commence la voie au km 0 )
(c'est la gare avec l'heure d'arrivée et de départ)
(C'est le rail 0 avec l'objet Heurtoir_0d.csv de la commande
.Rail(1) de With Structure
)
C'est pour une voie simple, si on a une voie double on va rajouter le rail 1.
.RailStart 1;4.34;0;

(C'est le rail 1 a 4.34 m à droite du rail 0 et au même
niveau 0, voir fichier routecsv.pdf
)

Pour d'autre voie on rajoutera d'autre rails à gauche ou à droite du rail 0, tous les rails en plus sont défini par rapport au rail 0, et toujours les définir à partir de ce rail car il existe toujours sauf si on entre la commande RailEnd 0, ce qui termine la route.

25,.
.RailType 0;0 

.RailType 1;0

(ici on est à 25 mètres début du deuxième rail).
(On change de type de rail le rail 0 avec l'objet Track0.csv
de la commande .Rail(0) de With Structure
)
(On change le type du rail )
C'est le même rail à 50, 75, ainsi de suite tous les 25 m, jusqu'à ce que l'on change de type de rail.
Pour créer une courbe on écrit par exemple à 100 m :
100,
.Curve -400; 50
.RailType 0;2
.RailType 1;2

(on est à 100 mètres)
(Courbe vers la gauche d'un rayon de 400 m et d'un devers de 50)
(changement du type de rail du rail 0 par un rail courbe)
(changement du type de rail du rail 1 par un rail courbe)

Pour une courbe à droite c'est .Curve 400;50 et pour la fin de la courbe c'est .Curve 0, et on repart sur un rail droit, pour les aiguillage quand le train file droit c'est comme un rail droit quand le train tourne c'est une courbe et on défini le type de rail courbe en fonction.
Pour les gares il y a la commande .Sta qui donne le nom de la gare, l'heure d'arrivée et de départ, l'indication de quel coté les portes s'ouvrent, la durée d'arrêt etc ...

Maintenant que l'on a le rail on va s'occuper du sol avec la commande .Ground
On charge les fichiers objets ground que l'on a créé dans With structure à la suite des rails.

With Structure
.Ground(0).Load (Objets\ground\ground0.csv)
.Ground(1).Load (Objets\ground\ground1.csv)

La commande .Ground(n) charge le sol que l'on va utiliser.
On la place en début, exemple :

With Track
0,
.Ground 0

 
(ici commence la voie au km 0)
(ici commence le sol au km 0
La commande va se répéter tout les 25 mètres, (c'est la distance par défaut que l'on a choisi), jusqu'à ce que l'on change de .Ground(n), et le sol est défini à -0.3 voir image.
100,
.Ground 1
(on est à 100 mètres)
(ici on change le sol au km 100
Et ainsi de suite.

Maintenant que l'on a le rail et le sol on va s'occuper des quais de la gare avec la commande .Form
On charge les fichiers objets pole que l'on a créé dans With structure à la suite des rails et des sols.

With Structure
.FormL(0).Load (Objets\station\FormL-0.csv)
.FormCL(0).Load (Objets\station\FormCL-0.csv)
.FormR(0).Load (Objets\station\FormR-0.csv)
.FormCR(0).Load (Objets\station\FormCR-0.csv)

Les commandes .FormL(n) .FormCL(n) .FormR(n) .FormCR(n) charge les quais de gare. On la place au niveau des gares, exemple :

With Track
0,
.Form 0;L;0;0;
.Form 1;R;0;0;

 
(ici commence la voie au km 0)
(quai positionné sur le rail 0 et à gauche)
(quai positionné sur le rail 1 et à droite)

J'ai un quai sur le .Rail(0) à gauche et un quai sur le .Rail(1) à droite.

Maintenant que l'on a le rail, le sol et les quais on va s'occuper des poteaux pour les caténaires avec la commande .Pole, le fichier pole que j'ai créé a pour point de construction l'axe de la voie.
On charge les fichiers objets pole que l'on a créé dans With structure à la suite des rails et des sols.

With Structure
.Pole(0; 0).Load (Objets\poles\pole-0g-3d.csv)

La commande .Pole(n;n) charge les poteaux des catenaires.
On la place en début, exemple :
With Track
0,
.Pole 0;0;0;50;0
.Pole 1;0;1;50;0

 
(ici commence la voie au km 0)
(Poteau simple sur le rail 0 et à gauche)
(Poteau simple sur le rail 1 et à droite)
Dans l'exemple ci dessus les poteaux sont placé tous les 50 m, soit tous les deux rails. Si au lieu de 50 il y avait 25 c'est tous les 25 m.

Maintenant on va s'occuper de charger les murs .Wall que l'on va utiliser, on les fait d'une longueur de 25 pour tout un rail ou plus court s'il s'arrête avant la fin d'un rail.

With Structure
.WallL(0).Load (Objets\wall\wallL0.csv)
.WallR(0).Load (Objets\wall\wallL0.csv)
.WallL(1).Load (Objets\wall\wallL0.csv)
.WallR(1).Load (Objets\wall\wallL0.csv)

 
(Mur du coté gauche d'un rail)
(Mur du coté droit d'un rail)
(Autre mur du coté gauche d'un rail)
(Autre mur du coté droit d'un rail)
On le place en début d'un rail qui longe un mur, exemple :
With Track
200,
.Wall 0;-1;0
.Wall 1; 1;0

 
(ici on va commencer le mur a 200m)
(Mur WallL(0) placer à gauche du rail0)
(Mur WallR(0) placer à droite du rail1)
Le mur placé se répète pour chaque rail qui suit celui ou il est indiqué jusqu'à une commande .Wall 0;-1;1 qui change de mur et il ne prend fin qu'avec la commande .WallEnd.
300,
.WallEnd 0
.WallEnd 1

(ici on va arrêter le mur a 300m)
(ici on arrête le mur du rail0)
(ici on arrête le mur du rail1)
Ensuite il y a les Talus on va les charger, ils ont les même propriété que les murs.
With Structure
.DikeL(0).Load (Objets\wall\wallL0.csv)
.DikeR(0).Load (Objets\wall\wallL0.csv)
.DikeL(1).Load (Objets\wall\wallL0.csv)
.DikeR(1).Load (Objets\wall\wallL0.csv)

 
(Talus du coté gauche d'un rail)
(Talus Mur du coté droit d'un rail)
(Talus Autre mur du coté gauche d'un rail)
(Talus Autre mur du coté droit d'un rail)
On le place en début d'un rail qui longe un talus, exemple :
With Track
200,
.Dike 0;-1;0
.Dike 1; 1;0

 
(ici on va commencer le mur a 200m)
(Talus DikeL(0) placer à gauche du rail0)
(Talus DikeR(0) placer à droite du rail1)
Comme pour les murs ils se répètent tous les rails suivant pour mettre fin au talus il faut la commande .DikeEnd comme pour changer de talus il faut une nouvelle commande .Dike.

Maintenant il faut ajouter des objets à la suite dans With Structure :

With Structure
.FreeObj(0).Load (Objets\poles\catenaire-50.csv)
.FreeObj(1).Load (Objets\poles\catenaire-25.csv)
.FreeObj(2).Load (Objets\signals\Halte-4.csv)
.FreeObj(3).Load (Objets\signals\Halte-6.csv)
.FreeObj(4).Load (Objets\signals\Halte-8.csv)
.FreeObj(5).Load (Objets\signals\Halte.csv)

Plus on veut améliorer le paysage de notre route plus on aura d'objets charger et placer.
Plus le fichier Route sera lourd pour la simulation.
On va placer les fichiers objets sur la voie après la commande With Track

With Track
0,
.FreeObj 0;0;;;0;
.FreeObj 1;0;;;0;

 
(ici commence la voie au km 0 valeur de Z)
(ici place un objet par rapport au rail0 au km 0)
(ici place un objet par rapport au rail1 au km 0)

On peut placer les objets par rapport à n'importe quel autre rail que le rail0, mais tout est finalement placer par rapport au rail0 puisque tous les autre rails sont placés par rapport au rail0, l'objet ne se répète pas.
Dans l'exemple ci dessus on place l'objet au centre du rail, pour placer un objet à gauche c'est la commande .FreeObj 0;39; -42;-0.2;0; c'est donc X = -42 et Y = -0.2 cette commande s'écrit :

.FreeObj RailIndex; FreeObjStructureIndex; X; Y; Yaw; Pitch; Roll
RailIndex c'est l'index du rail, 0 pour le .Rail(0) 1 pour le .Rail(1) et ainsi de suite.
FreeObjStructureIndex c'est l'index de l'objet, 0 pour le .FreeObj(0) 1 pour le .FreeObj(1) et ainsi de suite.
X C'est la distance de l'objet par rapport au rail valeur positive coté droit et valeur négative coté gauche.
Y C'est la distance de l'objet par rapport au rail valeur positive au dessus et valeur négative au dessous du rail.
Placé a la distance Z = 0, 25, 50, 75, etc l'objet est placé au début d'un rail sinon il faut rajouté une valeur différente comme :
10,
.FreeObj 0;551;0;0;0;
.FreeObj 1;551;0;0;0;

 
(ici place un objet par rapport au rail0 à Z = 10m)
(ici place un objet par rapport au rail1 à Z =10m)

Yaw C'est l'angle donné à l'objet par rapport à l'axe Y du rail et au point 0,0,0 de l'objet
Pitch C'est l'angle donné à l'objet par rapport à l'axe X du rail et au point 0,0,0 de l'objet
Roll C'est l'angle donné à l'objet par rapport à l'axe Z du rail et au point 0,0,0 de l'objet

Voir les images ci-dessous.


mise à jour 14 Juin 2022 - Webmaster : Hervé Duliscouët -