La cabine de conduite

Une cabine dans MSTS n'est pas un vrai modèle 3D comme le matériel vu de l'extérieur. Une cabine est un ensemble de 3 images "plates" ou 2D. Ces 3 images correspondent aux 3 vues que le conducteur a en position normale de conduite comme figuré ci-dessous. Bien sûr ces images auront des "trous" (correspondant aux pare-brise et fenêtres) pour voir le paysage défiler derrière :
 
les vues cabine

En noir, on a figuré les trous pour voir le paysage. Ces images (de format 1024x768 pixels ou 640x480) sont créées avec transparence (format TGA) puis converties dans le format MSTS "ace" et placées dans le dossier CABVIEW du matériel.

Le nom de ces images et leur positionnement sont précisés dans le fichier de script de cabine "xxxx.cvf" dans ce même dossier où "xxxx" est le nom de l'engin.

Pour réaliser les 3 images 2D nécessaires, il est possible soit d'utiliser des photographies correctement prises soit de réaliser des copies d'écran des vues d'un modèle 3D. Pour ma part, c'est ce principe de modélisation 3D que j'utilise maintenant.

Mais en respectant quelques règles, il est très possible de dessiner schématiquement une cabine à partir de rien. L'erreur la plus courante est d'ignorer les lois élémentaires de la perspective : dans ce cas on a l'impression de rouler en crabe, d'être en l'air dans la cabine ou assis sur les rails... Sur la vue centrale, lorsque le conducteur regarde "droit devant" (c'est la direction (0,0,0)), le point de fuite du regard est au centre de l'image. Si la ligne est plate et toute droite, c'est le point où tous les rails se rejoignent que l'on soit à gauche, au centre ou à droite de la voie! Il faut donc dans ce cas que toutes les parallèles aux rails à l'extérieur et dans la cabine, convergent vers le centre de l'écran...

Par rapport à la réalité où le conducteur regarde soit la voie, soit les cadrans dans la cabine, il faut tout voir sur l'image 2D (avec une cabine "3D" ce sera différent). Il peut donc être nécessaire de modifier un peu l'agencement des commandes et des cadrans par rapport à la réalité et de déplacer ce point de fuite pour tout voir correctement : en particulier dans le cas des engins à vues latérales et capots longs. Ce sont les paramètres de la directive "Direction" (du regard) de la vue correspondante qu'il faut modifier.

direction du regard
C'est bien la direction du regard que l'on modifie : le point de fuite des rails va dans le sens opposé! Bien évidemment, il faudra aussi modifier la perspective des éléments du pupitre parallèles aux rails pour éviter qu'ils n'apparaissent de travers. 

Dans le fichier .cvf "script cabine" , on trouve 3 séquences correspondant aux 3 vues-cabine dans l'ordre : vue frontale, vue gauche, vue droite. Elles sont obligatoires. La séquence de la vue frontale est la suivante :

CabViewFile ( Cab_Front.ace )    <- fichier image de la vue frontale
CabViewWindow ( 0 0 640 250 )    
<- limites xmin, ymin, xmax, ymax du rectangle incluant la fenêtre transparente dans les coordonnées "image"
CabViewWindowFile ( AcWndFrn.ace )  <- fichier image comportant la fenêtre transparente
Position ( -0.75 3.5 7 )   <- position de l'oeil du conducteur dans le Repère de base x,y,z
Direction ( 10 0 0 )    <- direction du regard du conducteur dans le Repère de base

Les deux directives (en noir) semblent "historiques" pour disposer de 2 couches supplémentaires pour visualiser le pare-brise transparent et optimiser la surface concernée. Elles peuvent être systématiquement remplacées par les valeurs par défaut pour lesquelles je n'ai pas trouvé de différences de performances :

CabViewWindow ( 0 0 640 480 )
CabViewWindowFile ( "" ) ou CabViewWindowFile ( Cab_Front.ace )

Dans  la documentation officielle, il est demandé de placer le fichier image de vue frontale dans les deux formats 1024x768 et 640x480 mais un seul format fonctionne très bien sachant que le 1024x768 aura un meilleur aspect. Historiquement, le format .ace avec transparence n'était possible que sur une texture carrée : on peut donc présenter une vue frontale en 1024x1024 sachant qu'à l'affichage elle sera ramenée au format 1024x768 par compression verticale. L'intérêt du 1024x1024 est que ce format peut servir de texture pour le modèle 3D de la cabine si nécessaire !

Le script cabine est un des rares script de MSTS qui accepte des chemins relatifs pour référencer les fichiers .ace par exemple. Cela permet d'utiliser les mêmes éléments pour différentes cabines sans avoir à les recopier.

  Principe de mise en place des commandes et des afficheurs

Pour figurer les commandes et les indicateurs animés il faut superposer à l'image plane des petits "bouts" d'image qui sont des textures de petites dimensions dont l'affichage successif va réaliser l'animation...
Cette animation n'est possible que sur la vue frontale et pour un nombre limité
d'actionneurs et de variables.

 Le positionnement des commandes et des afficheurs se fait dans l'espace 2D de l'image 640x480 et ceci même si l'image est de format 1024x768. Ci-dessous l'espace en question :

 
 

Le principe de placement est simple une fois que l'on a préparé les textures des éléments mobiles des commandes et des indicateurs. Ces indicateurs doivent avoir été préparés à la dimension qu'ils ont sur l'image 640x480. Ci-dessus une aiguille tournante est figurée par une texture de "a" pixels de large et "b" pixels de haut. Le point de référence est le point rouge que l'on va placer sur l'image frontale aux coordonnées x,y écran (ici x=160 et y=240). "p" précise en pixels l'emplacement du pivot de l'aiguille. 

Le programme Microsoft Editeur de cabines (dans Editeurs et Outils) permet un placement interactif de ces éléments puis génère automatiquement le fichier .cvf correspondant. Néanmoins il est très peu fiable, ne permet pas les retours en arrière et ne donne pas accès à toutes les commandes et variables possibles (voir mes tableaux). Il est souvent nécessaire d'examiner et de modifier directement le fichier .cvf. Je n'ai trouvé aucune documentation précise sur le sujet c'est pourquoi je vous donne ici les informations issues de mon expérience et aussi glanées sur le Net.

  Le fichier .cvf : script de cabine

Placé dans le dossier CABVIEW, il comporte donc les parties essentielles décrites ci-dessous :

SIMISA@@@@@@@@@@JINX0h0t______

Tr_CabViewFile (
      CabViewType ( 1 )  
-> type de locomotive (1 électrique, 2 diesel, 3 vapeur)

CabViewFile ( Cab_Front.ace )   -> ces 5 déclarations pour chacune des 3 vues 2D (voir ci-dessus)
      CabViewWindow ( 0 0 640 250 )
      CabViewWindowFile ( AcWndFrn.ace )
      Position ( -0.75 3.5 7 )
      Direction ( 10 0 0 )
      .........
EngineData ( Acela )
-> référence au fichier .eng utilisateur de cette cabine

CabViewControls ( n   -> séquence de description des n afficheurs et commandes
       ......
      )
)

"n" est le nombre cumulé d'afficheurs et de commandes décrits. Pour une cabine sans aucune animation, on peut mettre "n" à 0. Il sera possible de conduire l'engin mais il faudra afficher le HUD (Affichage tête-haute : touche F5) pour voir le minimum de variables (vitesse, pression des freins...).

Truc : pour qu'une action sur une touche soit confirmée par l'affichage de la petite fenêtre en bas milieu de l'écran il faut au moins que cette commande soit déclarée (même sans fichier .ace!).

Exemple :

CabViewControls ( 1
      Lever (
        Type ( TRAIN_BRAKE LEVER )
        Position ( 600 400 32 32 )
        Style ( NOT_SPRUNG )
        MouseControl ( 1 )
        Orientation ( 1 )
        DirIncrease ( 1 )
    )


Il n'est pas fait référence à un fichier graphique, donc il n'y a pas d'affichage animé mais lorsqu'on appuie sur les touches "M" et "ù" (frein de train) on voit s'afficher en bas au milieu de l'écran l'augmentation ou la diminution du freinage en %.

La description d'un afficheur précise son type, sa position dans l'écran, le nom du fichier graphique de l'animation, le "style" de l'afficheur, l'unité, l'échelle d'affichage et éventuellement les différents états possibles.

À suivre... 

 

 © 2002-2009 - PG - Mise à jour 23 mars 2009