Alignements précis et remplacements d'objets dans une route

Les documents, recettes et petits trucs qui sont utiles à tout fan de MSTS!

Modérateur : Modérateurs

Avatar du membre
Jimidi
Expert
Messages : 1920
Enregistré le : 02 nov. 2008 14:32
Localisation : Ille sur Têt (66)
Contact :

Alignements précis et remplacements d'objets dans une route

Messagepar Jimidi » 27 nov. 2011 20:33

Bonjour à toutes et tous,

Dans le terrible monde de H.P.Lovecraft, il est compris qu'il ne faut surtout pas s'aventurer à "pousser les portes interdites" sous peine de libérer les monstrueuses entités de l'époque des "Grands Anciens", Cthulhu en tête ! Et Jabba le Hutt, à côté, est un enfant de choeur ! Et oui, Jimidi affectionne aussi le monde mystique des maitres de l'épouvante : intérêt répandu chez tout "gothique" déjà passionné de médiévisme, celtisme, Chevalerie, "pop-rock métalleuse", "space-opéra"... et j'en passe !
Dans les arcanes des fichiers de MSTS, soyez-en convaincus, aucun risque de cette envergure... même si éditer du code s'apparente souvent à la noble mission d'avoir "terrasser le dragon" ! Parce qu'il faut quand même le reconnaitre, avec une absence totale de "manuel de référence" des codes du jeu, c'est avec beaucoup d'acharnement et d'adrénaline qu'il faut opérer pour enfin s'exclamer : "je l'ai eu !" ou : "j'ai enfin trouvé !" Bien sur, ici comme dans tout code informatique, pas de place à l'erreur de saisie : la moindre faute de frappe est sanctionnée sans détour par un plantage ! C'est indéniablement une "école de la rigueur"...

Lorsque j'ai eu terminer la rédaction du "mode d'emploi" pour l'usage du "pont Warren" récemment produit, je me suis dit qu'il ne serait sans doute pas inutile d'en reproduire les passages essentiels. En effet, je pense que ce laïus pourrait bien être profitable aux réalisateurs de routes qui ne connaitraient pas forcément ces "subtilités".
J'ai déjà eu l'occasion d'exprimer ici mon admiration pour ces auteurs, spécialement pour la patience "toute monacale" dont ils doivent faire usage dans leur travail d'élaboration, tant l'éditeur prévu comporte de "sensibilité" et autres "approximations" ! Pas étonnant alors que l'on puisse rencontrer des positions d'objet approximatives, justement.
Pourtant, même si ça peut sembler moins "souple", l'édition directement dans le code révèle beaucoup d'avantages ; mieux, c'est souvent d'une grande rapidité et toujours d'une efficacité assortie de la meilleure précision ! Il faut juste s'en donner la peine...

- Mise en œuvre et placement du pont Warren dans une route :

L'important pour l'implantation correcte et précise de ce modèle et de commencer par implanter deux éléments de voie du type "A1t45mStrt.s" précisément centrés par rapport à l'axe de l'emplacement prévu pour ce pont. Ce dernier faisant précisément 93,6 m de longueur hors tout, il restera 1,8 m ( (93,6m - 2x45m)/2 ) de chaque côté que viendront recouvrir les voies "aboutées" aux extrémités. Ne vous souciez pas de l'usage d'élément de voie avec ballast (et non ceux spécifiques aux "ponts") car ces éléments de 45m sont posés de manière provisoire. Insérez le modèle du pont et disposez-le sans vous préoccuper de l'orientation et des coordonnées précises ! De toute façon, l'outil prévu dans l'éditeur (F4) est trop pénible d'usage et les angles ne sont malheureusement pas éditables en valeurs saisies ! Le placement "ultra précis" viendra plus tard... astucieusement !

Dans tous les cas, il faudra ensuite opérer le creusement de la voie d'eau. Une astuce facilitant cette tâche est d'user d'un élément de voie ferrée placé momentanément dans le sens du cours d'eau (et non en prolongement de la ligne réelle !) Suivant que vous utilisez une double, triple, quadruple voie ou plus, vous obtiendrez ainsi rapidement une largeur adaptée. L'astuce consiste ici à faire correspondre la hauteur de cette voie avec celle prévue pour le fond du cours d'eau (donc sous l'eau !) et d'user de la fonction d'alignement de sol sous l'élément sélectionné (touche Y). Prenez soin au préalable de bien régler les valeurs de la palette "Terrain" pour les angles de pentes ! Une fois ce travail effectué, vous pouvez supprimer ces éléments de voie "temporaires".

- Remplacement d'éléments de voie :

Après avoir enregistré les placements d'objets et changements de relief du terrain, fermez l'éditeur d'itinéraire et ouvrez l'explorateur de fichiers Windows (WIN+E) Naviguez dans vos dossiers de façon à atteindre le répertoire des fichiers "World" (".w") de votre route. Si vous êtes en mode d'affichage "Détails", il vous suffit de cliquez sur l'entête de colonne "Date de modification" pour "classer" l'ordre d'affichage des fichiers en fonction de la date justement : du coup, vous trouverez la parcelle venant d'être éditée en tête de liste ! Sinon, vous pouviez aussi relever les coordonnées de la parcelle affichées par la fenêtre "Caméra" dans l'éditeur... le fichier concerné porte un nom composé par ces mêmes coordonnées (abscisse "x" et ordonnée "z" de la parcelle, à ne pas confondre avec les valeurs de longitude et de latitude pour cette même parcelle).

Une fois ce fichier trouvé, il vous faut l'éditer en texte. Il est très avantageux d'utiliser un éditeur spécialement dédié à l'édition de texte "Unicode". Vous pouvez vous contenter de MS Wordpad fourni avec tout Windows... personnellement, je lui préfère le gratuiciel "NotePad2" de Florian Balmer pour tous les outils puissants et options dont il est doté.

Dans l'éditeur de texte, tapez "Ctrl+F" afin d'ouvrir la fenêtre de l'outil de recherche et tapez-y : A1t45mStrt.s dans le champ de saisie idoine ; confirmez (Enter) Il y a de forte chance pour que le code de cet élément s'affichant corresponde au placement de l'un des deux éléments de voie posés dans la parcelle : ces dimensions n'étant pas courantes (45m), il serait curieux qu'il y en ait d'autres dans cette même parcelle ! Toutefois, vous pourrez vérifier par comparaison les valeurs des coordonnées des deux éléments (ils se suivent normalement) avec celles du pont : si ces valeurs sont proches, c'est parfait, ce sont les bonnes sections de voie !

Une fois rendu au premier de ces éléments de voie :

Code : Tout sélectionner

TrackObj (
   UiD ( nnn )
   SectionIdx ( nnnnn )
   Elevation ( n )
   CollideFlags ( nnn )
   FileName ( A1t45mStrt.s )
   StaticFlags ( nnnnnnnn )
   Position ( xxx,xxx yyy,yyy zzz,zzz )
   QDirection ( n n.nnnnnn n n.nnnnnn )
   VDbId ( nnnnnnnnnn )
)


... remplacer la ligne de code d'identité de la forme ".s" par :

Code : Tout sélectionner

TrackObj (
   UiD ( nnn )
   SectionIdx ( nnnnn )
   Elevation ( n )
   CollideFlags ( nnn )
   FileName ( "../../ROUTES/NomDeVotreRoute/SHAPES/JIM_A1t45mPont.s" )
   StaticFlags ( nnnnnnnn )
   Position ( xxx,xxx yyy,yyy zzz,zzz )
   QDirection ( n n.nnnnnn n n.nnnnnn )
   VDbId ( nnnnnnnnnn )
)


… et cela bien entendu à répéter pour la deuxième occurrence de l'élément "A1t45mStrt.s".

Il est ainsi possible de remplacer tout élément de voie standard du "Global" par des éléments spécialisés reprenant juste les mêmes caractéristiques dimensionnelles ; donc sans toucher au fichier sensible "tsection.dat" du GLOBAL ! Ici, il est fait appel à un "chemin" pointant vers le fichier :

Code : Tout sélectionner

"../../Dossier/Sous-dossier/Sous-sous-dossier/NomDuFichier.s"


- Placement précis :


Profitez que vous êtes dans ces codes pour opérer une sélection et un "copier" (Ctrl+C) des deux lignes concernant le placement du deuxième élément dans l'ordre de pose, car c'est précisément lui qui possède les coordonnées du centre du pont ! En effet, les éléments de voie de MSTS ont leurs "origines x y z" en tout début de forme 3D :

Code : Tout sélectionner

   ….....
   Position ( xxx,xxx yyy,yyy zzz,zzz )
   QDirection ( n n.nnnnnn n n.nnnnnn )
   ….....


Relancez l'outil de recherche et tapez-y maintenant : "JIM_pontFerTertre.s" qui est le nom de l'objet pont (En fait il ne devrait pas être très éloigné des lignes de code des nouvelles sections de voie implantées juste avant !) Une fois dans le code de celui-ci, "coller" (Ctrl+V) les deux lignes de coordonnées de ce deuxième élément de voie de 45m en lieu et place de celles du pont :

Code : Tout sélectionner

Static (
   UiD ( nnn )
   FileName ( JIM_pontFerTertre.s )
   Position ( xxx,xxx yyy,yyy zzz,zzz )
   QDirection ( n n.nnnnnn n n.nnnnnn )
   VDbId ( n )
   StaticDetailLevel ( 0 )
)



… attendu que le modèle 3D du pont a spécialement été conçu en rapport avec les données des éléments de voies "standards" de MSTS, cette astuce permet d'obtenir un placement et une orientation parfaite et précise ! De plus, pas de souci avec le sens d’implantation : ce pont est symétrique. Tout cela sans perdre patience ni les nerfs avec les "outils approximatifs" de l'éditeur !

Conclusion : pour tout placement d'objet où la précision s'impose du fait d'alignement avec d'autres objets déjà en place, cette procédure garanti un résultat impeccable.
Par ailleurs, si vous désirez obtenir un placement rigoureux en termes d'angles d'orientation en renseignant les 4 valeurs affectées à la commande "QDirection ( n n.nnnnnn n n.nnnnnn )" vous serez confronté à un sérieux problème de math ! En effet, ils relèvent de l'usage de "quaternions", domaine de notation mathématique incontournable dès lors que l'on doit gérer des questions de rotation simultanément sur les trois axes dans la sphère 3D... et c'est du lourd !
Si vous désirez en savoir un peu plus sur ces "quaternions", vous pouvez toujours tenter la digestion de ceci !

Il faut toutefois signaler que l'on peut encore trouver un utilitaire spécialement fait pour les alignements d'objets entre-eux dans l'éditeur :
- AlignUtil de Derek Wilde et Vince Cockeram
… j'ai testé un peu rapidement mais n'ai pas su du tout le mettre en œuvre !

De même, il est possible aussi de trouver un fichier Excel spécialement concocté pour s'attaquer à ces alignements et rotation, donc capable de renseigner les champs des "quaternions"  et fourni avec le tutoriel mode d'emploi (en anglais):
- ObjectRotator de Michael Vone
Et là, accrochez-vous, outre que c'est en anglais, ce n'est pas du léger !

Personnellement, je pense que l'astuce présentée ici suffit amplement pour atteindre l'ultime précision, attendu qu'il s'agira le plus souvent d'aligner un ou plusieurs objets par rapport à un existant déjà en place : ponts, quais, etc.

Enfin, un dernier conseil : comme pour toute édition de code d'un fichier quelconque, préférez tant que faire se peut, les "copier-coller" aux saisies manuelles ! Cela permet de mieux s'affranchir des classiques erreurs de syntaxe. (.

Voilà, espérant avoir contribué à votre engouement à venir pour ce genre d'exercice... ?+
Jean-Michel
"T'occup' nin des signaux garchon, mets du carbon !"
Image
facebook Jimidi

Avatar du membre
redikal
Messages : 195
Enregistré le : 12 avr. 2006 17:34
Contact :

Re: Alignements précis et remplacements d'objets dans une route

Messagepar redikal » 17 déc. 2011 13:46

Salut Jean Michel,

Très bonnes explications que tu donnes là! J'avoue que les techniques que tu énumères sont exactement celles que j'utilise pour la conception de ma route. Cependant, je pense que l'on peut rajouter une autre astuce. En effet, suivant les objets que l'on veut placer, certains sont modélisés perpendiculairement aux axes des voies de TS, ce qui fait que si l'on suit la technique de placement que tu as donné précédement, on sera obliger de faire, en plus une rotation de 90 degrés. L'astuce que je vais donner consiste en une modification manuelle (encore une fois ?+ ) des coordonnées de la la ligne Qdirection dans le fichier world. Voici la marche à suivre:

Soit la ligne QDirection avec les valeurs suivantes:

QDirection ( A1 A2 A3 A4 )

Pour réaliser une rotation de 90 degrés, il faudra avoir la ligne QDirection avec les nouvelles valeurs suivante:

QDirection ( B1 B2 B3 B4 )

Avec:

B1= A3
B2= A4
B3= -A1
B4= -A2

@+

Avatar du membre
Jimidi
Expert
Messages : 1920
Enregistré le : 02 nov. 2008 14:32
Localisation : Ille sur Têt (66)
Contact :

Du plaisir de lire une "réaction éclairée"

Messagepar Jimidi » 17 déc. 2011 15:47

Bonjour,

redikal a écrit :... Pour réaliser une rotation de 90 degrés, il faudra avoir la ligne QDirection avec les nouvelles valeurs suivantes...


- "Et ben mon colon !"
V'la t'y pas que pas plus tard que depuis hier soir, je gamberge de nouveau sur les quaternions et en suis à l'instant à "m'amuser" avec ces calculs et notions... dans la perspectives d'user un peu moins "empiriquement" des orientations d'objets relevant de ces variables ! Je me suis entre autre agacer à avoir ré-installé MS Office pour rien, suite au constat que le fichier ".xls" de Michael Vone (cité plus haut) ne fonctionnait pas dans "OOo Calc" d'OpenOffice ! Parce que le fichier en question, pas si facile que ça à dégoter par ailleurs, ne fonctionne finalement pas mieux avec l'Excel de mon Office2000, suite bureautique que j'avais décidé ne plus installer ni utiliser !

Tout ça pour dire que si j'envisage effectivement d'écrire un (gros) tuto sur le sujet, je désire bien entendu y inclure les travaux et conclusions sur la manipulation "manuelle" de ces variables !
Car celles-ci, variables dites "quaternions" rappelons-le, sont utilisées dans MSTS autant pour le paramètre d'objet "QDirection" d'un fichier ".w" quelconque que dans les valeurs (x ; y ; z ; w) des animations angulaires d'un ".s"... tout bonnement parce que ce système est incontournable en matière d'orientation spatiale 3D (lire les conclusions complètes de l'article Wiki cité ci-haut)
Or, avant de réussir à trouver quelques rares articles de fond sur le sujet, j'avais déjà eu l'occasion d'être passablement perturbé de trouver des valeurs trigo... de demi-angles dans les paramètres d'animation d'un ".s" ! La première fois ce fut avec le fameux portail intégralement refait en code "à la louche" ! Parce qu'enfin, racine de 2/2 (0,707107) ça va bien pour 45°... mais surement pas pour 90° ! Or voici ce qu'il en est :

Sil l'on considère :
sin(α) = sin(Angle réel/ 2) et cos(α) = cos(Angle réel/ 2)
... on a pour ces "machins-à-gnons", la relation :

- "a" = axe(x) sin(α) ; "b" = axe(y) sin(α) ; "c" = axe(z) sin(α) et enfin "d" fonction de cos(α)
... ainsi que :
- √( a² + b² + c² + d² ) = 1

Et en complément de la "drôle de relation" que tu a cité, on peux ajouter la relation d'inversion totale des orientations d'un objet avec :
- valeurs d'origine : QDirection ( a b c d )
- valeurs au final : QDirection ( -c -d a b )

D'où le fait que la valeur d'un objet orienté par défaut au Nord et valant : QDirection ( 0 0 0 1 ) deviendra : QDirection ( 0 -1 0 0 ) pour le Sud et que la direction Est : QDirection ( 0 0,707107 0 0,707107 ) devra valoir : QDirection ( 0 -0.707107 0 0,707107 ) pour pointer à l'Ouest... CQFD !

Je suis donc particulièrement enchanté que tu réagisse à ce "post" et y participe de cette lumineuse anecdote ! .=

Pour ceux-ce qui ont eu la patience de tenir jusque là, je les invite en attendant à se détendre en jouant avec cette superbe animation Flash de l'UFR de Nantes, même s'ils s'estiment "non-concernés" par ces "assommantes" histoires de maths...

Sinon ne perdons pas de vue que la Lumière se tient à l'Orient et que la verticalité devrait participer à la préservation de notre salut.

J'ai dit, Jean-Michel... en plein dans l'étude du cœur de croisement moulé en acier au manganèse, puf, puf .+
"T'occup' nin des signaux garchon, mets du carbon !"
Image
facebook Jimidi

Avatar du membre
redikal
Messages : 195
Enregistré le : 12 avr. 2006 17:34
Contact :

Re: Alignements précis et remplacements d'objets dans une route

Messagepar redikal » 17 déc. 2011 20:35

Salut,

Remarquables explications, encore une fois! (. J'espère que certains ne se sont pas perdu en route /:< Donc oui, pour déterminer une rotation, de 90 degrés, on peut utiliser plus d'une relation. Je pense que l'on peut faire un petit schéma circulaire avec la représentation d'un sens positif qui serait le sens horaire et le sens négatif serait donc anti-horaire où encore sens trigonométrique (ça va vous suivez encore tout le monde? /nb ) avec les 4 données a,b,c, et d à l'état "initial" dans une couleur donnée et le résultat des différentes rotations de 0 et 180 degrés (voire 45) dans une autre couleur. Ainsi, la compréhension des relations que nous avons donné en serait, je pense, grandement simplifiée.

Tu vas finir par proposer un service annexe "soutient de mathématiques" si tu continues ainsi /nb

@+


Retourner vers « Les incontournables »