Création d'une aiguille, entre TSection, .tdb et .w

Vous avez des astuces pour rendre MSTS plus agréable. Venez les poster ici.

Modérateur : Modérateurs

Avatar du membre
XylonAkau
Messages : 1936
Enregistré le : 24 juil. 2010 8:49
Localisation : Taputapuatea (ISLV)
Contact :

Création d'une aiguille, entre TSection, .tdb et .w

Messagepar XylonAkau » 06 nov. 2015 18:48

___Ia ora na.
___Pour revenir aux TrackShapes et TrackSections évoqués dans ce sujet,
1) on peut rester un peu incertain quant à l'emploi de numéros inférieurs à 5 000 (certaines lignes ont plus de 4 000 sections de voie dynamiques affichées) - mais cela ne gênera pas le fonctionnement de la ligne (seulement et éventuellement celui d'autres) ;
2) as-tu envisagé, pour le développement de la ligne, l'utilisation d'une mini-route ? elle permettrait de modifier librement le TSection.dat et, plus généralement, tout le contenu du répertoire \Global (et peut-être, plus tard, du \Trainset), sans interférer avec le reste de l'installation ;
3) pour le TrackShape ( 270
a} puisque MainRoute est à ( 1 ), c'est le chemin SectionIdx ( 1 0 0 0 0 356 ) qui sera pris par défaut - donc, normalement, la voie droite (= rectiligne) ; 355 étant le TrackSection courbe (qui doit alors avoir un symétrique en 354) ;
b} dans un tout autre ordre d'idée, si on crée un fichier .s quelconque disposant d'une animation valide et l'appelle M61vAiguillageGch.s, - par exemple une porte qui s'ouvre et se ferme, on pourra ouvrir et fermer la porte en appuyant sur [G] (à la seule condition que l'animation soit valide, avec seulement un état initial et un état final) ;
c} on peut obtenir le même résultat en plaçant dans l'éditeur d'itinéraires (et, par conséquent dans le fichier .tdb) une aiguille équivalente (par exemple A1tPnt10dRgt) puis en remplaçant, dans le fichier .w, la ligne

Code : Tout sélectionner

FileName ( A1tPnt10dRgt.s )
par

Code : Tout sélectionner

FileName ( ../../Routes/Métro6/Shapes/M61vAiguillageGch.s )
(à supposer que ta ligne soit dans un répertoire \Métro6). L'avantage est que le TSection.dat reste standard et que les sections de voie créées pour la ligne restent dans le répertoire \Shapes de cette ligne, sans qu'il soit besoin de les installer à part dans le \Global\Shapes ; l'inconvénient est qu'il faut se limiter aux sections (TrackShapes) définies dans le TSection.dat (entre huit et neuf mille sections de voie dont mille cent quatre-vingts aiguilles, dans la version 38).
4) Bien sûr, la question en croise une autre : la ligne restera-t-elle sur ton seul disque dur ou a-t-elle vocation à être diffusée ? Dans ce dernier cas, les manipulations de TSection.dat (et, à un moindre degré, de \Global\Shapes) ne sont pas anodines - mais rien n'interdit évidemment à l'auteur de dire « c'est comme ça ! »
___Quels que soient tes choix, bonnes étapes.

Avatar du membre
XylonAkau
Messages : 1936
Enregistré le : 24 juil. 2010 8:49
Localisation : Taputapuatea (ISLV)
Contact :

Re: Création d'une aiguille, entre TSection, .tdb et .w

Messagepar XylonAkau » 08 nov. 2015 19:34

___Ia ora na fa'ahou.
___Ce message-ci répond à celui-là.
___Pardonne-moi, mais j'ai un peu de mal à suivre...
1) as-tu modifié le TSection.dat pour placer SectionCurv ( 38 -10 ) avant SectionCurv ( 38 10 ) ?
2)
Didier a écrit :J'ai réduit le trackshape à uniquement la voie directe :

Code : Tout sélectionner

TrackShape ( 270
 FileName ( M61vAiguillageGch.s )
 NumPaths ( 1 )
 MainRoute ( 0 )
 ClearanceDist ( 20 )
 SectionIdx ( 1 0 0 0 0 357 )
)
___Le propre d'une aiguille est d'avoir deux chemins, donc deux SectionIdx. Si tu n'en mets qu'un, ce n'est plus une aiguille (NumPaths ( 1 )), c'est une section de voie banale, mais hybride du fait de MainRoute ; elle peut ne pas provoquer de plantage, mais ne se comportera jamais en aiguillage (et peut-être pas toujours en section simple).
3)
Didier a écrit : avec la case "animer cet objet" cochée, les aiguilles sautent.
___Avec une aiguille comme avec un passage à niveau, cette commande est indépendante de l'objet interactif ; elle fait bouger les éléments en tant qu'objet Static.
4)
Si je le réduit à uniquement la voie déviée :

Code : Tout sélectionner

TrackShape ( 270
 FileName ( M61vAiguillageGch.s )
 NumPaths ( 1 )
 MainRoute ( 1)
 ClearanceDist ( 20 )
 SectionIdx ( 1 0 0 0 0 355 )
)
___Ce n'est pas vraiment étonnant : MainRoute ( 1) indique que la voie par défaut est la deuxième ligne SectionIdx - or il n'y en a qu'une !
5)
pourquoi faut-il aussi un tracksection pour une troisième voie qui n'existe pas ?
___Si tu fais allusion au couple des deux SectionCurve dont il est question en 1), ce sont deux choses totalement différentes ; la troisième voie qui n'existe pas est une affaire de TrackShape (tu en auras d'ailleurs peut-être besoin pour M61vAiguillageDrt.s...) Le couple 355 // -10 et 356 // 10 est une affaire de TrackSection : MSTS crée les composants courbes par paire symétriques (c'est comme ça), et il a donc besoin de trouver les spécifications des deux éléments ; c'est pareil pour les sections de voie dynamiques dans le TSection.dat local.
6) Quand je parlais de pas-à-pas, je pensais à vérifier le fonctionnement de chaque élément
a} en créant une section de courbe M61v38r10d .s formée du seul TrackSection 355 (ou 356, c'est sans importance) ;
b} puis une section de droite M61v20mStrt .s formée du seul TrackSection 357 ;
[c'est un peu ce que font les deux essais que tu rapportes, mais avec une définition de TrackShape qui rend difficile l'interprétation des résultats] ;
c} vérifier que ces deux éléments peuvent être placés sans problème au milieu d'autres, dans l'éditeur d'itinéraires, puis parcourus dans le jeu.
d} si tel est le cas, alors tu pourras être sûr que le problème provient de l'aiguille ; restera alors à déterminer si la cause se situe dans la définition du TrackShape (à voir ici), ou dans la syntaxe du fichier .s lui-même (dans la rubrique Vos projets).
___Bon courage pour la suite.

Avatar du membre
XylonAkau
Messages : 1936
Enregistré le : 24 juil. 2010 8:49
Localisation : Taputapuatea (ISLV)
Contact :

Re: Création d'une aiguille, entre TSection, .tdb et .w

Messagepar XylonAkau » 09 nov. 2015 23:24

___Ia ora na 'a.
___Une cause d'erreur que je n'avais pas relevée : dans tes définitions de TrackSection, il faut SectionCurve et non SectionCurv (qui fait bien planter MSTS). Cette modifcation faite, tout semble coller :
1) j'ai créé dans le TSection.dat (qui est de version 38)

Code : Tout sélectionner

   TrackSection ( 355
     SectionSize ( 1.5 0 )
     SectionCurve ( 38 -10 )
    )
    TrackSection ( 356
     SectionSize ( 1.5 0 )
     SectionCurve ( 38 10 )
    )
    TrackSection ( 357
     SectionSize ( 1.5 20.14 )
    )
et

Code : Tout sélectionner

TrackShape ( 270
     FileName ( M61vAiguillageGch.s )
     NumPaths ( 2 )
     MainRoute ( 1 )
     ClearanceDist ( 35 )
     SectionIdx ( 1 0 0 0 0 355 )
     SectionIdx ( 1 0 0 0 0 357 )
   )
2) j'ai cloné un aiguillage quelconque sous le nom de M61vAiguillageGch.s ;
3) cet aiguillage peut être placé sans problème dans l'éditeur d'itinéraires ; bien sûr, les voies branchées sur les deux pôles bleus partent de travers, mais le chemin enregistré dans le .tdb est bon ;
4) dans le jeu, on peut manœuvrer l'aiguille :
Image
et passer dessus.
___ Bonne continuation.

Avatar du membre
XylonAkau
Messages : 1936
Enregistré le : 24 juil. 2010 8:49
Localisation : Taputapuatea (ISLV)
Contact :

Re: Création d'une aiguille, entre TSection, .tdb et .w

Messagepar XylonAkau » 11 nov. 2015 22:48

___Ia ora na.
___Quelques réflexions (au sens premier : ce qui est renvoyé par une réalité) d'un avocat du diable d'un jour.

___Préambule : modéliser dans MSTS une ligne du métro peut se faire de diverses façons - s'agissant du rendu des voies :
A] utiliser ce qui existe : c'est ce qu'ont fait PkVintuitKat pour RFSP ou Ptrmarci pour MetroLine (MetroPalya), en employant des A1t et A2t standard ;
B] créer des sections de voie personnalisées et
___1) les rendre standard : c'est ce qu'a fait Sjoerd Ydema pour son Schwebebahn, dont les sections (jamais réutilisées ailleurs, à ma connaissance) ont été incluses dans le TSection.dat à partir de la version 38 ; ces sections WS... ne font pas partie de XTracks et sont distribuées avec la ligne elle-même, à charge pour l'utilisateur de copier le contenu du répertoire correspondant dans son propre répertoire \Global\Shapes ; mais, une fois cela fait, il suffit d'avoir un TSection.dat de version 38 ou ultérieure pour pouvoir utiliser la ligne, sans perturber aucune autre ligne compatible avec le TSection.dat standardisé (donc lignes d'origine comprises) ;
___2) créer et diffuser le TSection.dat qui va avec les sections personnalisées ;
______a} c'est ce qu'a fait TML pour sa version MSTS du métro de Berlin, dont le TSection.dat (caché) contient les sections TmL1t... et TmL2t... ; mais le cas est un peu particulier puisque le lancement de ces deux lignes se fait par un programme spécial (runubahn.exe) qui remplace ou renomme bon nombre des fichiers de MSTS ;
______b} c'est aussi ce que font, de façon plus limitée et discrète, certaines lignes, notamment d'Europe de l'Est ; il existe ainsi un TSection.dat créé en novembre 2007, sans numéro de version mais titré "special for polish routes" - avec des sections de voie (TrackShapes) rajoutées sous des numéros allant de 259 à 851 ; en cherchant un peu sur ce forum, on trouvera les échos d'utilisateurs un peu surpris de voir leur rame partir dans le décor quand ils parcouraient une ligne qui, jusque-là, ne les avait pas habitués à de telles escapades ;
C] Reste une dernière façon de faire, intermédiaire entre A] et B], utilisée notamment par Graphics15 pour le Schwebebahn de WupperExpress 11 : créer la ligne (et, par conséquent, le .tdb) avec des sections standard, puis remplacer dans les fichiers .w (donc pour le seul affichage) les sections standard par des objets personnalisés, en redirigeant vers le répertoire \Shapes de la ligne. Ainsi

Code : Tout sélectionner

   TrackObj (
      UiD ( 1035 )
      SectionIdx ( 8 )
      Elevation ( 0 )
      CollideFlags ( 583 )
      FileName ( ../../ROUTES/WupperExpress11/Shapes/g15_schweb_fahrprofil250m.s )
      StaticFlags ( 00200180 )
      Position ( 771.671 -14.0021 -255.359 )
      QDirection ( 0 -0.642733 0 0.76609 )
      VDbId ( 4294967294 )
      StaticDetailLevel ( 2 )
   )
___A l'écran, on voit l'objet g15_schweb_fahrprofil250m.s, dont le fichier se trouve dans le répertoire \Shapes de la ligne WE11
Image
mais pour la rame, tout se passe comme si elle avait à faire à une banale section A2t250mStrt (TrackShape n° 8) et, plus précisément, l'un des deux composants

Code : Tout sélectionner

TrackSection ( 3
 SectionSize ( 1.5 250 )
)
constituant A2t250mStrt.
___Ce procédé (assez lourd, c'est vrai) permet d'afficher des éléments de voie personnalisés sans toucher au TSection.dat.
___Fin du préambule.

___Dans le cas présent,
1a} le TS.dat standardisé contient deux composants

Code : Tout sélectionner

TrackSection ( 29266
 SectionSize ( 1.5 0 )
 SectionCurve ( 38.05 -10 )
)
TrackSection ( 29267
 SectionSize ( 1.5 0 )
 SectionCurve ( 38.05 10 )
)
1b} Par ailleurs, il existe un segment de 20 mètres

Code : Tout sélectionner

TrackSection ( 191
 SectionSize ( 1.5 20 )
)
et un autre de 20 mètres 20 à quelques poussières près :

Code : Tout sélectionner

TrackSection ( 28862
 SectionSize ( 1.5 20.2068 )
)
___Et cette extrémité de l'aiguille est plutôt flottante : A1t30dTramLft a une section droite de 5 m [pardon... de 4,985 mètres - quinze millimètres qui expliquent sans doute la création du TrackSection 39867, à côté du 27048 (5 mètres et 4 millimètres), et des 31008, 32639, 32951, 33004 et 39870 - tous les cinq de 5 mètres pile, et rigoureusement identiques au demeurant] ; SR_1tSwt_c_ia03dL, de 10 mètres ; A1t45dYardLft, de 20 mètres ; A1tPnt10dLft, de 40 mètres.
2) Restent bien sûr deux pierres d'achoppement, qui tiennent l'une et l'autre à l'entrevoie :
a} la voie courbe des aiguilles ; comme déjà mentionné, celles de Kuju et XTracks sont prévues pour donner un écartement de 4,985 mètres, celles de ukfs sont prévues pour 3,413 mètres ; mais ukn utilise un écartement de 2,495 m - ce qui permet de relier par deux ukn1tPnt10dLftMnl.s deux voies parallèles d'écartement égal ou supérieur. Et, s'il l'appareil ne convient pas, l'emploi de sections A1tPnt0dLftMnl/A1tPnt0dRgtMnl permet de créer quasiment n'importe quelle sorte d'aiguillage.
b} les voies en courbe. Si le composant d'un A1t250r20d a bien un rayon de 250 mètres, ceux d'un A2t250r20d (plus fréquents, dans les réseaux métropolitains) ont respectivement 247,5075 et 252,4925 de rayon ; il faudrait donc des composants de 248,55 et 251,45 mètres ; il existe bien des SectionCurve de 248,5 et 251,5 mètres (soit 3 m d'entrevoie), mais les TrackShapes correspondants sont des sections de route ; leur emploi comme sections de voie demande quelques manipulations, et ils n'existent que pour une gamme de rayons limitée.

___Voilà. Si ces éléments concourent à fixer les idées plus qu'à obscurcir le débat, ils ne seront pas totalement inutiles.
___Bonne journée.


Retourner vers « MSTS: Trucs et astuces »