31
Loop : making of © JL Coste 2004 L L O O O O P P : : L L E E M M A A K K I I N N G G O O F F J’ai découvert BVE par hasard il y a quelques années, en cherchant des fichiers de routes pour Mekanicks, un grand ancien. A cette époque, ni Trainz ni MSTS n’étaient sortis, ce qui plaçait BVE comme LE simulateur de train par excellence. D’emblée, j’ai été séduit par trois grandes routes, qui restent parmi mes préférées : Sandymill, HeavyCoal, et Desert Freight USA. Elles dégagent une atmosphère particulière, à la fois de train réel, d’exotisme, de mystère, de rêve, bref tout ce qui fait que l’on aime le train, et ce qui fait pour moi la réussite d’une route. Lors de la sortie de l’extension de Balfearn à Invernay, la présence d’un raccordement à la sortie de Balfearn permettait de supposer l’existence d’une boucle possible partant de Sandymill par le tunnel de droite. Comme Alice, j’ai toujours voulu savoir ce qu’il y avait derrière le miroir, alors découvrir les paysages derrière ce tunnel….. La tâche ne fut pas simple, car j’avais tout à apprendre, les commandes, la syntaxe, les astuces, comme tout débutant. Mais peu à peu, en lisant les forums, en examinant les routes des autres auteurs, en expérimentant une idée ou une autre, en mettant bout à bout tous les essais réalisés, Loop est née. C’est devant le nombre de problèmes résolus parfois simples, parfois plus complexes, mais toujours récurrents dans les forums, que je me suis décidé à écrire ce texte, afin que chacun puisse échanger ses trouvailles. Tout d'abord, il ne faut pas oublier que le tracé des voies de chemin de fer nécessite quelques notions de mathématiques assez simples. D'autre part, BVE est un simulateur. Ce qui veut dire que c'est le monde qui voyage autour du train, et non l'inverse. Il faudra donc toujours apprendre à BVE comment faire pour que l'illusion à l'écran soit la plus parfaite possible. Dans la mesure du possible, j’essaierai d’aller du plus simple au plus complexe, tout en conservant l’ordre chronologique de réalisation. 1

LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

LLOOOOPP :: LLEE MMAAKKIINNGG OOFF

J’ai découvert BVE par hasard il y a quelques années, en cherchant des fichiers de routes pour Mekanicks, un grand ancien. A cette époque, ni Trainz ni MSTS n’étaient sortis, ce qui plaçait BVE comme LE simulateur de train par excellence. D’emblée, j’ai été séduit par trois grandes routes, qui restent parmi mes préférées : Sandymill, HeavyCoal, et Desert Freight USA. Elles dégagent une atmosphère particulière, à la fois de train réel, d’exotisme, de mystère, de rêve, bref tout ce qui fait que l’on aime le train, et ce qui fait pour moi la réussite d’une route. Lors de la sortie de l’extension de Balfearn à Invernay, la présence d’un raccordement à la sortie de Balfearn permettait de supposer l’existence d’une boucle possible partant de Sandymill par le tunnel de droite. Comme Alice, j’ai toujours voulu savoir ce qu’il y avait derrière le miroir, alors découvrir les paysages derrière ce tunnel….. La tâche ne fut pas simple, car j’avais tout à apprendre, les commandes, la syntaxe, les astuces, comme tout débutant. Mais peu à peu, en lisant les forums, en examinant les routes des autres auteurs, en expérimentant une idée ou une autre, en mettant bout à bout tous les essais réalisés, Loop est née. C’est devant le nombre de problèmes résolus parfois simples, parfois plus complexes, mais toujours récurrents dans les forums, que je me suis décidé à écrire ce texte, afin que chacun puisse échanger ses trouvailles. Tout d'abord, il ne faut pas oublier que le tracé des voies de chemin de fer nécessite quelques notions de mathématiques assez simples. D'autre part, BVE est un simulateur. Ce qui veut dire que c'est le monde qui voyage autour du train, et non l'inverse. Il faudra donc toujours apprendre à BVE comment faire pour que l'illusion à l'écran soit la plus parfaite possible. Dans la mesure du possible, j’essaierai d’aller du plus simple au plus complexe, tout en conservant l’ordre chronologique de réalisation.

1

Page 2: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Le Tracé de la route.

Toute route devant raconter une histoire, le script fut facile à réaliser. Il y a deux rivières et un raccordement entre Sandymill et Balfearn. Donc, au moins deux viaducs, et une grande gare de bifurcation dans Loop. Celle-ci devant aller d’un point à un autre déjà fixés par Robert Glass dans Sandymill, la première étape fut la réalisation du tracé de telle manière que les deux routes parviennent au même point.. Pour ce faire, un tableur type Excel est l’outil idéal. Un peu de triangulation, donc de trigonométrie, beaucoup de couper coller, quelques données à entrer, et hop, une belle carte facilement. Comment faire ? C’est simple à partir de quelques notions de trigonométrie :

Prenons le triangle rectangle ABC. Nous avons un angle droit ABC et deux autres angles tels que la somme: Angle ABC + angle BAC + angle BCA = 180°. Donc, angle BAC + angle BCA = 90°. Le sinus de l'angle BAC, noté sin(BAC) est égal à BC / AC. Le cosinus de l'angle BAC, noté cos(BAC) est égal à BA / AC. C'est tout ce dont nous avons besoin.

2

Page 3: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Le principe de calcul est simple. Tous les 25 m, nous calculons les nouvelles coordonnées de la voie, à partir de la direction suivie par les rails. En pratique, cela revient à calculer tous les 25 m les coordonnées du point C par rapport au point A. Pour cela, nous avons besoin de connaître l’angle BAC, qui modifie la direction suivie jusqu’à présent par le train. Nous avons donc: Un cercle de centre O, de rayon OA=OC, et quelques angles droits: OAB, ODA, ODC, ABC. Le train va tourner d'un angle BAC, en jaune sur la figure. Nous avons: Angle BAC + Angle CAO = 90°. Comme, on l'a vu, la somme Angle BAC + Angle BCA = 90°, on obtient: Angle BAC + Angle CAO = Angle BAC + Angle BCA = 90°. Donc, Angle CAO = Angle BCA. Comme les deux triangles rectangles ADO et CDO sont symétriques par rapport à OD, on en tire: ⇒ Angle DAO = Angle DCO, et Angle AOD = Angle DOC. ⇒ Angle AOC = 2 * Angle AOD = 2 * Angle BAC. ⇒ C'est à dire: Angle BAC = Angle AOC / 2. Pour rappel: Angle AOC = 360° * arcAC / Circonférence du cercle = 360° * arcAC / (2 * ∏ * rayon) = 2 * ∏ * arcAC / (2 * ∏ * rayon) = arcAC/ rayon (en radian, puisque 360° = 2 * ∏ radian). Comme les rayons utilisés sont très grands, on peut considérer que l’arcAC est égal à AC, donc 25 m. Donc, Angle BAC en degré = 360° * arcAC / (2 * ∏ * rayon de la courbe) = 180° * AC / (∏ * rayon de la courbe). Les nouvelles coordonnées du point C sont égales aux coordonnées du point A + AB ou + BC : xB = xA + BC = xA + (AC * sin(BAC)) yB = yA + AB = yA + (AC * cos(BAC)) Ce qui s’implémente facilement dans Excel: Nous avons besoin de la distance parcourue, de la courbe suivie, des angles de déviation ponctuel et total, des coordonnées ponctuelles xB et yB, pour calculer les coordonnées réelles xN et yN nous permettant d’obtenir le tracé de la voie. Pour des raisons de lisibilité du tableau et de facilité de calcul, une colonne supplémentaire est réservée à la description de points remarquables, et une autre aux courbes de la voie. Ce qui nous donne à partir de la seconde ligne, la première ne contenant que des 0 par défaut. Col 1 : Distance parcourue, 1° ligne = point de départ (souvent 0), lignes suivantes = ligne précédente + 25. Col 2 : Texte libre (points remarquables). Col 3 : Command CURVE ( = @/.Curve(NNN) indiquée dans le fichier de route.. Col 4 : Rayon réel de la courbe parcourue = NNN ou 0. Col 5 : Angle de déviation local = 360 * 25 / ( 2* PI() * Col 4) Col 6 : Angle de déviation total depuis le départ = Col 5 + dernière valeur = Col 5 + (Col 4, ligne -1) Col 7 : xB = 25 * Sin ( Col 6 * PI() / 180 ). Col 8 : yB = 25 * Cos ( Col 6 * PI() / 180 ). Col 9 : xN = Col 7 + dernière valeur = Col 7 + (Col 9, ligne – 1). Col 10 : yN = Col 8 + dernière valeur = Col 8 + (Col 10, ligne – 1).

3

Page 4: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

La création du tracé est fort simple : Il suffit de sélectionner les données des colonnes I et J, et de créer un graphique, nuage de points avec lignes arrondies.

Voici le résultat pour Loop :

(NB : les deux routes Sandymill- Balfearn et Loop ont été réalisées côte à côte sur la même feuille, chaque tracé correspondant à une série xN yN distincte. Le carré central en jaune sert simplement à corriger la distorsion de la figure)..

4

Page 5: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Une astuce très pratique : en utilisant certaines fonctions logiques d’Excel, le tableau peut s’autonomiser, et on peut voir la courbe se modifier en temps réel en changeant simplement un rayon ou la longueur de la courbe : Col 4 = SI (ESTVIDE( Col 3 );[Col 4,ligne-1];Col 3) : si la colonne 3 est vide, c’est la valeur précédente, sinon c’est la même. Cela permet de rentrer uniquement les modifications induites par la commande CURVE. Col 5 = SI([Col 4,ligne-1] <>0;360*25/(2*PI()*D4);0) : si le rayon de la ligne précédente n’est pas nul, on calcule l’angle, sinon on met 0.

Ce qui nous donne (en français) :

A B C D E F G H I J

1 Distance Points Courbe Courbe Angle Cumul xB yB xN yN

2 0 Sandymill 0 0 0 0 0 0 0 0

3 25 657.8 657.8 0 0 0.00 25.00 0.00 25.00

4 50 657.8 2.177553189 2.1776 0.95 24.98 0.95 49.98

5 75 -657.8 -657.8 2.177553189 4.3551 1.90 24.93 2.85 74.91 6 100 -657.8 -2.177553189 2.1776 0.95 24.98 3.80 99.89

C'est-à-dire :

A B C D E F G H I J 1 Distance Points Courbe Courbe Angle Cumul xB yB xN yN 2 0 Sandymill 0 0 0 0 0 0 0 0 3 A2+25 657.8 SI(ESTVIDE(C3);D2;C3) SI(D2<>0;360*25/(2*PI()*D2);0) F2+E3 25*SIN(F3*PI()/180) 25*COS(F3*PI()/180) I2+G3 J2+H3 4 A3+25 SI(ESTVIDE(C4);D3;C4) SI(D3<>0;360*25/(2*PI()*D3);0) F3+E4 25*SIN(F4*PI()/180) 25*COS(F4*PI()/180) I3+G4 J3+H4 5 A4+25 -657.8 SI(ESTVIDE(C5);D4;C5) SI(D4<>0;360*25/(2*PI()*D4);0) F4+E5 25*SIN(F5*PI()/180) 25*COS(F5*PI()/180) I4+G5 J4+H5 6 A5+25 SI(ESTVIDE(C6);D5;C6) SI(D5<>0;360*25/(2*PI()*D5);0) F5+E6 25*SIN(F6*PI()/180) 25*COS(F6*PI()/180) I5+G6 J5+H6

Il suffit donc de créer les 3 premières lignes (vertes), puis de couper coller la troisième (vert foncé) sur les suivantes (jaunes) à volonté. Puis, d’inscrire simplement chaque modification de courbe dans la colonne C ( Bleu) .

La même méthode peut être utilisée pour marquer des points remarquables, ici, les gares sont en jaune. On prend les coordonnées du STOP, et on y ajoute +/- 150m :

A B C D E F G H I J K L 53 1275 0 0 1.432 80.96 24.69 3.93 593.43 927.63 I53+150 J53+15054 1300 Docks -2000 -2000 0 80.96 24.69 3.93 618.12 931.56 I53-150 J53+15055 1325 -2000 -0.72 80.24 24.64 4.24 642.76 935.80 I53-150 J53-15056 1350 -2000 -0.72 79.53 24.58 4.54 667.35 940.34 I53+150 J53-15057 1375 0 0 -0.72 78.81 24.52 4.85 691.87 945.19 I53+150 J53+150

5

Page 6: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Une fois votre tracé terminé, il est facile d’y insérer les rivières, les autres lignes etc.

L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est inférieure à 0,5 pour mille (+/- 20 m pour 38 Km), ce qui est très satisfaisant. Vous remarquerez le petit prolongement entre le Dépôt et Sandymill, créé secondairement pour répondre à un « 3 miles challenge » sur le forum. Cette ligne de 4,8 km entre Depot et Docks (Boot), partie intégrante de Loop, n’est plus disponible seule, le challenge ayant disparu.

6

Page 7: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Les outils indispensables. Mackoy ayant visiblement décidé d'abandonner les anciens formats de fichiers de route rw (sans doute pour route writing(?) ), ou d'objets B3D (pour Boso 3D(?)), pour ne plus utiliser que le format csv, Excel © ou tout tableur compatible est de fait devenu un outil indispensable pour la création des fichiers de route ou d'objets. Si cette option rend ces fichiers plus volumineux et surtout moins lisibles, certaines facilités que cela procure rend ce choix judicieux. De toute façon, si la dernière version 2.6.3 de BVE lit indiférement les fichiers csv rw, et B3D, il n'en est plus de même à partir de la version 3 compatible .Net©. Les commandes rw et B3D ont récemment disparues de son site, signe que développer un objet ou une route pour BVE doit se faire en csv, et que les anciens fichiers devront être converti dans le nouveau format. Pour les objets, aucun souci, Mackoy fournit un utilitaire sur son site: - B3D > CSV converter, disponible à http://mackoy.cool.ne.jp/archives/objconv.zip - Structure viewer pour visualiser un objet : http://mackoy.cool.ne.jp/archives/sv1_5_9.zip - Mirror, pour inverser un objet : http://mackoy.cool.ne.jp/archives/mirror.zip Pour les routes, c'est plus compliqué, une correction manuelle restant indispensable. Si vous désirez créer des routes facilement, Route Buider est fait pour vous : http://routebuilder.bve-routes.com/ Mais cet outil très puissant ne peut pas relire des routes déjà créées, ni créer des objets. Enfin, vous devez posséder deux outils très puissants: Pour la visualisation des routes : Track viewer : http://mackoy.cool.ne.jp/archives/track1_2_5.zip Et pour la création des courbes, croisements et aiguillages, l'indispensable SWITCH15 créé par Rüdiger Hülsmann: http://home.t-online.de/home/r.hulsmann Cette petite liste n’est pas exhaustive, mais suffira pour le moment.

7

Page 8: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Le tracé de la voie.

Les commandes BVE pour le tracé des voies sont peu nombreuses :

- Curve pour les courbes. - Turn pour les virages, que nous n’avons pas employé. - Pitch pour les montées et descentes. - Rail, avec railstart, railend, pour l’affectation d’un objet au dessin de la voie. - Freeobj, pour l'utilisation d'un objet particulier à la place d'un rail.

I ) La principale difficulté du traçage de voie avec BVE est le calcul des déviations de voies, courbes, aiguillages et croisements. A) En d'autres termes, comment calculer la distance entre les différentes voies dans ces cas de figures. Reprenons notre figure :

On a déjà vu que :

Angle BAC en degré = 180° * AC / (∏ * rayon de la courbe).

8

Page 9: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Cela nous donne :

1) ⇒ Angle BAC = 360° * AC / (2 * ∏ * rayon) = 180° * AC / (∏ * rayon). ⇒ AC = (2 * ∏ * rayon) * Angle AOC / 360 ° ⇒ Sin(Angle BAC) = BC/AC. ⇒ BC = AC * sin( Angle BAC) = AC * sin(180° * AC/ 2*∏ * rayon) ⇒ Comme 360° = 2 * ∏ en radian, on a: AC = rayon * Angle AOC = 2 * rayon * Angle BAC..

⇒ BC = AC * Sin( AC/2*rayon) (en radian)

2) ⇒ AngleBAC = Angle AOD, donc Sin(AngleBAC) = Sin(AngleAOD). ⇒ BC/AC = AD/AO

=> BC = AD * AC / AO = (AC/2) * AC / Rayon = AC*AC / (2 * Rayon) = AC2 / ( 2 * rayon). Ce résultat est très intéressant, car il permet de calculer très rapidement BC en fonction du rayon et réciproquement :

=> BC = AC2 / ( 2 * Rayon). Rayon = AC2 / (2 * BC )

D'où: Déviation = (distance parcourue)2 / (2 * rayon) et Rayon = (distance parcourue)2 / (2 *

Déviation) Si la courbe continue, nous pouvons facilement en déduire la déviation suivante, car, n’oublions pas, BVE fonctionne par pas de 25 m : Nouvelle Déviation = (distance parcourue)2 / (2 * rayon) = (N* distance d'origine)2 / (2 * rayon) =

N 2 * déviation d'origine. Les calculs sont donc simplifiés. Par exemple, soit un rayon de courbure de 1000 m. On a:

25 m Déviation = (25*25)/2000 = 0,3125 m 50 m Déviation = 4 * 0,3125 = 1,25 m 75 m Déviation = 9 * 0,3125 = 2,8125 m

100 m Déviation = 16* 0,3125= 5 m. Et ainsi de suite…

9

Page 10: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Cela se vérifie aisément sur la figure suivante :

Avec AG = GC, Première déviation : HG Seconde déviation : BC => BC = 4* HG

10

Page 11: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

B) Autre problème important. Comment calculer la déviation lorsque la courbe se finit et la voie continue tout droit ?

Nous avons une courbe AG – GC, puis une droite CF. Nous voulons calculer EF. On a : EF = BC + JF et CF = AG = GC = 25m. AngleAOC = Angle BIC = AngleJCF (BIC + 90° = AOC + 90°) ⇒ JF = AG * sin(Angle AOC). AngleAOC = AngleAOG + AngleGOC. =2*(360*AG/(2πRayon)) (en degrés) = 4πAG/2πRayon = 2 AG Rayon. ⇒ JF = AG * sin(2 AG Rayon).en radian. Ici, nous avons 2 déviations avant la ligne droite. Dans le cas général, l’angle de déviation global JCF est égal à N fois l’angle élémentaire AOD. D’où : JF = AG * sin(N AG Rayon) et EF = BC + AG*sin(N*AG*Rayon). En résumé: Tant que le train tourne, la distance de déviation croît de façon géométrique, puis lorsqu'il roule de nouveau en ligne droite, de façon arithmétique. Sur la courbe, on a:

Déviation = (distance parcourue)2 / (2 * rayon) Rayon = (distance parcourue)2 / (2 * Déviation).

Nouvelle Déviation = (distance parcourue)2 / (2 * rayon) = (N* distance d'origine)2 / (2 * rayon)

= N2 * première déviation. A la fin de la courbe:

Nouvelle distance = N2 * première déviation + AG*sin(N*AG/Rayon).

11

Page 12: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Exemple: Un train arrive à un aiguillage, tourne en suivant pendant 125 m une courbe de 1000m, puis poursuit tout droit. On a: N Distance Déviation Résultat 1 25 m (25*25)/2000 0,3125 m 2 50 m 4 * 0,3125 1,25 m 3 75 m 9 * 0,3125 2,8125 m 4 100 m 16 * 0,3125 5 m. 5 (Fin de la courbe) 125 m 25 * 0,3125 7,8125 m. 6 150 m 7,8125 +

25*sin(5*25/1000) 10,9293 m

7 175 m 10,9293 + 3,1168 14,04625m. 8 200 m 14,04625+ 3,1168 17,163 m C) En réalité, dans BVE, toute distance d’un rail par rapport au rail (0) est toujours mesurée

perpendiculairement à ce dernier. Si le train suit AB, la déviation est BC. Si le train suit la courbe AC, c'est CX, la perpendiculaire à la tangente au cercle de centre O, donc segment poursuivant le rayon AC.

Or, AO et BC sont parallèles. Donc, AngleAOC = AngleBCX. Et BC/CX = Cos(AngleBCY). D’où :

CX = BC / Cos(Angle AOC) CX = AC2 / ( 2 * rayon * Cos(AC/Rayon).

12

Page 13: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Exemple : la bifurcation entre les voies de Balfearn et des docks à la sortie de Sandymill. Dans les tunnels, à l‘entrée de la courbe vers les docks, les voies vers Balfearn sont à 7,125m, avec une petite divergence de 0,95m tous les 25 m. Le calcul est simple : Distance = [7,125 + (N*0,95) + ((n*25)2/(2*rayon)) ] / cos[(N*25)-12.5]/rayon) Le rayon est de 350m Ce qui donne : AC Angle BC CX 25 m 0,071 8,96785 8,9990775903 50 m 0,14 12,5964 12,72603682 75 m 0,214 18,01071 18.4322833 100 m 0,28 25,21071 26,27592055 125 m 0,357 34,196428 36,49956905 150 m 0,428 44,967857 49,43911299 175 m 0,498 57,25 65,23602734 Les vues suivantes montrent que le résultat est très satisfaisant:

Vue depuis le train.

13

Page 14: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Vue en zoomant.

Vue latérale en zoomant. On voit la courbe que va suivre le train sur la droite.

14

Page 15: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Vue d'avion La légère distorsion dans la double ligne droite provient des arrondis de calcul, en particulier de la pente de la voie sous le tunnel. Mais elle est en pratique invisible dans le simulateur.

15

Page 16: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

II ) Abordons maintenant un autre problème fréquent: L’utilisation des objets et quelles courbes employer ? Les trains devant éviter les obstacles naturels et limiter les pentes à gravir, les voies ont très souvent recours à des courbes, qui doivent cependant rester praticables à des vitesses correctes. A ) Quelles sont donc les vitesses limites induites par les courbes ?

Rayon minimal

Vitesse (Km/h)

i+ d (30)

i+ d (50)

i+ d (70)

i+ d (80)

i+ d (90)

i+ d (100)

i+ d (110)

i+ d (120)

i+ d (130)

82 30 66 59 53 51 48 46 44 42 41 145 40 118 105 94 90 86 82 79 76 73 227 50 184 164 148 140 134 128 123 118 113 327 60 266 236 212 202 193 185 177 170 163 445 70 361 321 289 275 263 251 241 231 222 581 80 472 420 378 360 343 328 315 302 290 735 90 597 531 478 455 434 416 398 382 368 908 100 738 656 590 562 536 513 492 472 454

1098 110 892 793 714 680 649 621 595 571 549 1307 120 1062 944 850 809 772 739 708 680 654 1534 130 1246 1108 997 950 906 867 831 798 767 1779 140 1446 1285 1156 1101 1051 1006 964 925 890 2042 150 1659 1475 1328 1264 1207 1154 1106 1062 1021 2324 160 1888 1678 1510 1438 1373 1313 1259 1208 1162 2623 170 2131 1895 1705 1624 1550 1483 1421 1364 1312 2941 180 2390 2124 1912 1821 1738 1662 1593 1529 1470 3277 190 2662 2367 2130 2028 1936 1852 1775 1704 1638 3631 200 2950 2622 2360 2248 2145 2052 1967 1888 1815 4003 210 3252 2891 2602 2478 2365 2263 2168 2082 2001 4393 220 3570 3173 2856 2720 2596 2483 2380 2284 2197 4802 230 3901 3468 3121 2972 2837 2714 2601 2497 2401 5228 240 4248 3776 3398 3237 3089 2955 2832 2719 2614 5673 250 4609 4097 3688 3512 3352 3207 3073 2950 2837 6136 260 4986 4432 3988 3798 3626 3468 3324 3191 3068 6617 270 5376 4779 4301 4096 3910 3740 3584 3441 3309 7116 280 5782 5140 4626 4405 4205 4022 3855 3700 3558 7634 290 6202 5513 4962 4726 4511 4315 4135 3970 3817 8169 300 6638 5900 5310 5057 4827 4617 4425 4248 4085

Ce tableau montre les rayons de courbure en mètres sans et avec différentes valeurs de dévers en millimètres (d) pour une vitesse maximale donnée. Ces valeurs sont celles retenues à la SNCF en France, en tenant compte de l’insuffisance de dévers (i) compatible avec le confort des passagers :

- à pleine vitesse sans recourir à la pendulation, - et à l’arrêt en courbe.

L’utilisation est simple : A un rayon de courbure donné, le tableau donne la vitesse limite possible à plat, puis selon différentes valeurs croissantes de dévers. Par exemple, les voies à Sandymill sont toutes limitées à 25 miles/h, soit environ 40 km/h. Le rayon de courbure minimal des courbes est donc de 145 m. Pour un aiguillage de 25m de long, et avec 3,8m entre chaque voie, cela nous donne un rayon de : 25^2/3,8 = 164,47m, ce qui est compatible avec la vitesse limite. Nous avons cependant retenu un aiguillage de 50m de long (rayon de 657m) pour des questions d’esthétisme et d’uniformatisation des aiguillages. Par contre, la vitesse limite à Moorland Junction a été portée à 40 miles/h, soit 64 km/h., ce qui reste compatible avec les aiguillages et la sécurité.

16

Page 17: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

B) La segmentation 1) Pour la voie, BVE utilise l’objet affecté à celle-ci par Rail. Si nous utilisons toujours le même objet en ligne droite et en courbe, ces dernières seront à l’écran en forme de polygones de 25 m de côté. Cet aspect polygonal peut être considérablement réduit en augmentant le nombre de segments composant l’objet. BVE ne sait pas, en effet, dessiner un cercle. Par contre, si on considère que celui-ci est une sorte de polygone composé d’une infinité de cotés, on peut obtenir un aspect très réaliste à l’écran, en n’oubliant pas que plus un objet a de faces, plus il est volumineux et plus il est difficile à manipuler par BVE. Il nous faut donc choisir un compromis réaliste. Si BVE classique utilise le VGA, soit 640*480 pixels, la nouvelle version 4, BVE Net, permet de monter jusqu’au 1024*768 pixels. Et rien n’empêche d’envisager par la suite d’autres résolutions supérieures. Il nous donc prévoir d’emblée un effet visuel correct, donc une résolution élevée. Quel est donc le rayon de courbure à partir duquel on peut utiliser un rail droit sans que cela se voit à l’écran ? C’est ce que nous allons essayer de calculer, à partir de quelques exemples de courbes créées avec Switch15, visualisées avec Track Viewer en zoomant au maximum pour écraser la perspective. Pour mémoire, rappelons que tous les objets créés par Switch15 ont une segmentation de 5 pour 25 m, c'est-à-dire sont composés de polygones de 5 m de côté.

Courbe de 223 m de rayon

17

Page 18: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Courbe de 300m de rayon

Ces deux images montrent bien la structure polygonale des rails dans des rayons aussi petits, structure devenant presque invisible lorsque le rayon devient supérieur à 600m :

Aiguilles et courbes de 657m de rayon.

18

Page 19: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

2) Quelles sont les limites d’utilisation des différentes segmentations ? Reprenons notre figure :

La courbe réelle est l’Arc AC. Le segment dessiné est le segment AC. L’erreur visuelle correspond donc au segment DG. C'est très simple. AG = GC = 25 m et AngleHAG = AngleGAD = Angle BAC / 2. ⇒ AD = AH et HG = DG = BC / 4.Dans le cas d'une non segmentation, DG = 1/4 de la déviation BC. Dans le cas d'une segmentation 5, (comme avec SWITCH15), la déviation globale est égale à: BC = AC2 / ( 2 * Rayon). Et la déviation de chaque segment est égale à, (comme N = 5): [AC2 / ( 2 * Rayon) ] / N2 = [AC2 / ( 2 * Rayon) ] /25 = AC2 / (50 * Rayon)

DG = [AC2 / ( 50 * Rayon) ] / 4 = AC2 / ( 200 * Rayon) Pour un rayon de 200m, on a donc : Erreur visuelle = 625 / 40000 = 0,015625 m = 15 cm. Avec une largeur de rail de 8 cm, c'est très acceptable. Calculons la limite théorique de l'absence de segmentation: N = 1 ⇒ DG = AC2 / ( 8 * Rayon ) ⇒ Rayon = 625 / ( 8 * 0,015625) = 5000 m. En dessous de 5000m, on doit donc employer une segmentation des rails. N = 3 ⇒ DG = AC2 / (36 * Rayon ) ⇒ Rayon = 625 / ( 36 * 0.015625) = 1111 m. Rayon Segmentation des rails > 5000 m Pas de segmentation Entre 5000 m et 1200 m Segmentation 3 Entre 1200 m et 200 m Segmentation 5 < 200 m Segmentation 10

19

Page 20: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Commençons maintenant par nous intéresser à la création des courbes. Pour faciliter cela, BVE permet d’affecter n’importe quel objet à Rail. Il parait donc facile de créer un rail courbe au moyen de SWITCH15, par exemple, puis de l’utiliser en place du rail droit habituel. Il y a cependant un point très important à noter : Lorsque le train tourne, l’ensemble des objets tournent avec lui. Et le rail courbe aussi. Celui-ci doit suivre l’Arc AC lorsque le train suit le segment AC, donc en tournant. Or, lorsque nous créons ce rail Courbe, c’est par rapport au segment BC. Il faut donc indiqué à SWITCH15 que nous voulons un objet « tourné par lui-même », c'est-à-dire créé par rapport au segment AC.

Objet non tourné

Objet tourné

La ligne rouge correspond à l’axe du rail droit. Il faut donc réserver l’option « tourné par lui-même » aux objets destinés à être utilisés comme Rail, les objets devant être utilisés au moyen de Freeobj ne devant pas être tournés par eux même. Pour ces derniers, il faut donc les faire tourner, l’angle de rotation étant égal à la moitié de l’angle de déviation, et de même sens.(Il s’agit de l’angle HAG) .

20

Page 21: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

III) Les aiguillages. SWITCH15 permet de réaliser, en voie normale, tous les aiguillages possibles, y compris des aiguillages courbes. Certaines règles sont cependant à respecter pour obtenir de bons résultats rapidement. A) Il y a deux points très importants à comprendre:

1) Tous les objets utilisés par BVE sont positionnés aux coordonnées indiquées par la commande: Freeobj( Rail, Index de l'object, Position X (Droite, gauche), Position Y (Altitude),Angle de rotation (en degrés)). La rotation de l'objet s'effectue toujours par rapport au début du segment de rail concerné. C'est à dire à + 0 m du début du rail.

2) BVE dessine la voie par segments de 25 m, et l'ensemble du paysage depuis l’horizon situé entre 200 et 600m en avant, jusqu’à 25 m en arrière de l’écran. Tous les autres éléments sont, soit effacés (en arrière), soit pas encore dessinés. Cela veut dire qu'un objet de plus de 25 m de long doit être dessiné au maximum à +25 m, et doit donc comporter des coordonnées négatives. Exemple: Un objet de 50 m de long doit être dessiné de -25m à +25 m, sous peine de disparaître brutalement lorsque le train dépasse les premiers 25 m. B) Abordons les aiguillages : l’angle de rotation. Le problème des aiguillages est qu’il faut les positionner nous même, en tenant compte de deux facteurs, l’angle de rotation de l’objet, et son décalage ou Offset par rapport au rail, décalage dû à deux facteurs, l’angle de rotation et la longueur de l’objet. Cela peut paraître compliqué, mais c’est en réalité assez simple. Il y a deux cas de figures possibles: a) Soit l'aiguillage est parcouru en ligne droite. On est donc dans le cas d’un rail droit. L'angle de rotation est, soit nul (aiguillage parcouru dans le sens normal), soit égal à 180° (aiguillage parcouru en sens inverse). Il n’y a donc pas de d’offset. b) Soit l'aiguillage est parcouru en voie déviée. Nous nous retrouvons dans le cas de figure d'une

courbe. Comme l’aiguillage a été créé par SWITCH15, il n’a pas été « tourné par lui-même ». Nous devons donc calculer l'angle de rotation quelle que la longueur de l’aiguillage, qu’il soit droit ou courbe. Seule compte la courbe suivie par le train, c'est-à-dire son rayon et sa longueur. Rappelons le, l’axe de rotation d’un objet est à +0m. Tout dépend donc de la longueur de l’objet. On l’a vu, celui-ci ne peut pas dépasser la cote +25m, sous peine de disparaître brutalement à l’écran au bout de quelques mètres. Un aiguillage de 25 m ira donc de 0 à +25m, un de 50m de -25 à +25 m, un de 75m de -50m à +25 m, etc. On l’a vu pour les courbes, l’angle de rotation d’un objet non tourné par lui même est égal à la moitié de l’angle de déviation, mais de sens inverse.

L’angle de rotation est l’angle nécessaire pour tourner l’objet correctement à +12,5m. Angle = (-) 180*12,5 / (π * rayon)

Pour un objet de 25 m, l’angle est donc égale à la moitié de l’angle de rotation comme pour une courbe simple, et de sens opposé à l’angle de déviation.

21

Page 22: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Exemple : Entraxe = 3,8m ⇒ R= 252/ 3,8 = 164,474 ⇒Angle = 180 * 12,5 / ( Π * R) = 4,3545° Virage à droite, angle = (-) 4,3545 ; virage à gauche, angle = (+) 4,354. +/- 180° si inversé. Pour un objet plus long, il faut tenir compte de toute la partie située entre –XX et 0m. Nous avons donc un angle de rotation égal à l’angle de déviation, mais de sens opposé à celui-ci, puisque nous sommes avant le point B, et ceci par segment de 25 m. Ainsi donc, pour un aiguillage de 50m, on a : Partie entre 0 et +25 m : comme au dessus : α1= − 1/2 angle de déviation. Partie entre -25 et 0 m : α2 = + 1 angle de déviation. Au total, α = α1+ α2 = −[180∗12,5/ ( Π * R)] + [180∗25/ ( Π * R)] = +[180∗12.5/ ( Π * R)] Donc de même sens que l’angle de déviation. Exemple : Entraxe = 3,8m ⇒ R= 502/ 3,8 = 657,89 ⇒Angle = 180 * 12,5 / ( Π * R) = 1,088° Virage à droite, angle = (+) 1,088 ; virage à gauche, angle = (-) 1,088. +/- 180° si inversé. Même chose pour un aiguillage de 75 m. Angle de rotation de -50 à -25 +Angle de rotation de -25 à 0 + Angle de rotation de 0 à +12,5M = (+) angle de déviation + (+) angle de déviation + (-) ½ angle de déviation = (+)1½ angle de déviation. Exemples : Longueur 75 m, Rayon 1000 m, sens normal : α= 180 * (75-12.5) / ( Π * R)= 3,58°. (+) vers la droite, (-) vers la gauche. Sens inverse : longueur avant le pivot de rotation = 25 m α= 180 * (25-12.5) / ( Π * R)= 0,716 + 180 = 180,716° Rayon 1500m, sens inverse : α = 0,477 + 180 = 180,477° Et ainsi de suite. C) L’offset se déduit très simplement : Pour un aiguillage de 25m, la rotation s’effectue au point D. Il n’y a donc pas d’offset, puisque l’objet est positionné selon AC. Pour un objet de plus de 25m de long, le début de l’objet est décalé d’un offset équivalent à BC, dans le sens inverse de la courbe. Pour 50 m , offset = 25^2 / (2*R) ⇒ 625/(2*657.89)= 0,475m. Pour 75m, l’offset dépend là encore du sens de l’objet :

- sens direct : BC = 50^2/(2*R) - sens inverse : BC = 25^2/(2*R).

Pour 1000m, sens direct ⇒ BC = 1,25m ; Sens inverse ⇒ BC = 0,3125m Exemples : Les aiguillages de DOCKS : On a deux aiguilles de 1000m de rayon, vers la droite, de sens direct : α = - 3,58°, offset = -1,25 m ; puis un aiguillage de 1500m de rayon,vers la gauche, inversé : α = 180,419°, offset = 0.208 m Enfin, un dernier aiguillage de 1000 m de rayon, vers la gauche, inversé : α = 180,477°, offset = 0,3125 m

22

Page 23: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

1000m de rayon

23

Page 24: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

1500 m de rayon, inversé

1000m de rayon, inversé.

Vous trouverez une petite route démo sur le site : Switches.rw.

24

Page 25: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

D) Les gares plus complexes : Dès lors, la création et l’utilisation des aiguillages étant résolues, il m’a semblé intéressant de créer une grande gare de jonction entre plusieurs lignes principales, avec triage, dépôt, etc. : Moorland Junction. Il faut noter qu’à l’époque de la création de LOOP, le nombre de rail disponibles était limité à 8 (rail(0…7)), ce qui représentait un véritable défi. La solution retenue fut double :

- utilisation de rails doubles et quadruples, de traversées jonctions doubles, d’aiguilles en Y… - optimisation des voies grâce à Excel.

Le résultat est intéressant : une grande gare de jonction de 3 lignes différentes, dont deux à double voie. En positionnant des rails doubles comme simples objets, il a été possible d’obtenir 11 voies en parallèle, avec une certaine complexité, et des trains en stationnement.

25

Page 26: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

L’entrée de la gare est comme un rêve d’enfant jouant au train électrique – j’ai dû, quelque part , oublier de grandir- : jonction des deux doubles voies, traversées – jonctions doubles, aiguillage en Y, petit dépôt de traction, etc. Actuellement, avec 16 rails disponibles, toutes les combinaisons sont possibles, y compris de véritables gares de triages.

26

Page 27: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

E) Le son. L’un des sons les plus caractéristiques du train est le passage des pointes de cœur des aiguillages, tout du moins ceux à pointe de cœur fixe. BVE déclenche le fichier correspondant à chaque fois qu’une file de rail rejoint Rail(0). L’utilisation d’un objet comme aiguillage impose donc de bien déclencher le fichier son au passage de la pointe de cœur. C’est en pratique assez facile. Il suffit d’utiliser une autre file de rail, et de lui faire quitter ou rejoindre ou croiser Rail(0) au bon endroit. Track Viewer permet très facilement de vérifier cela visuellement, l’essai imposant cependant le lancement de BVE.

Lorsque le résultat est satisfaisant, il suffit de rendre invisibles les files de rail, et le tour est joué.

De la même manière, les croisements et traversées jonctions doubles à pointe de cœur multiples sont faciles à traiter.

27

Page 28: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

F) Dernier point : la taille des objets créés avec Switch15. Lors du chargement d’une route, BVE commence par lire tous les fichiers objets avant de les traduire en fichiers directement utilisables en mémoire. Ce temps de chargement et de compilation est étroitement dépendant :

- du nombre d’objets, - et de leur taille.

Moins l’ordinateur est puissant, plus ce temps est long. D’autre part, plus la taille des fichiers objets est importante, plus ils prennent de place en mémoire. Il est donc important d’optimiser ces fichiers, et donc de réduire leur taille si possible. De longs commentaires, copyrights, etc, multipliés par le nombre de fichiers, peuvent ralentir de façon sensible une machine un peu ancienne, sans améliorer le résultat final. Loop a bénéficié de cette optimisation des objets, rendant son chargement plus court de 30% environ, par rapport aux fichiers objets d’origine. C’est surtout vrai avec les fichiers créés par Switch15. En effet, ce dernier utilise une segmentation 5 pour tous les rails, y compris les droits. Ce qui est naturellement inutile, mais allonge le fichier et ralentit l’ordinateur d’autant. C’est un travail ingrat, long et fastidieux, mais les possesseurs d’une machine ancienne vous remercieront. Malgré le nombre important de fichiers objets, Loop reste parfaitement à l’aise avec un PII 350 MHz.

28

Page 29: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

IV) Autres utilisations. La possibilité d’utiliser n’importe quel objet à la place du rail standard permet de créer facilement routes et rivières. Mais une possibilité intéressante est la création directement de paysages très réalistes. Par exemple, créons un talus en herbe, descendant 30m en dessous de la voie, à une distance de 50m, et plaçons le latéralement à la voie.

L’utilisation d’un rail invisible permet dès lors de créer déblais et remblais facilement :

29

Page 30: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

La construction est simple :

30

Page 31: LOOP : LE MAKING OFferrovipathe.free.fr/Docs/Loop_making_of_Fr.pdf · L’erreur relative de Loop par rapport à la route d’origine (carré jaune et carré bleu de Balfearn) est

Loop : making of © JL Coste 2004

Formules pour BVE. ©J.L.Coste 2005

Résumé:

A) Déviation en courbe : Déviation d’une courbe par rapport ligne droite = (distance parcourue)2 / (2 * rayon) Rayon de la courbe = (distance parcourue)2 / (2 * Déviation) Nouvelle déviation = N2 * première déviation. Déviation d’une ligne droite par rapport à une courbe = Déviation d’une courbe par rapport ligne droite / cos(distance parcourue / rayon)

B) A la fin de la courbe : Déviation = N2 * première déviation + (Dernière déviation * sin(N*distance / Rayon))

C) Aiguillages : Sens direct : Angle = 180 * (longueur de l’aiguillage – 12,5) / (π * rayon) Offset = (longueur de l’aiguillage – 25) 2 / (2 * rayon). Sens inverse : Angle = 180 * 12,5 / (π * rayon). Offset = 25 2 / (2 * rayon) seulement si l’aiguillage fait plus de 25 m de long.

31