Tutorial: Préparer les .S "lourds" pour MSTS avec PolyMaster

Version 0.1

Auteur: BB25187, http://BB25187.eu/

21 octobre 2007


Objectif et contenu

Problème à résoudre et solution

Le but de ce tutorial est d'expliquer comment résoudre le plantage de MSTS en présence de modèles construits avec TSM. Dans la majeure partie des cas, le problème provient d'une 3D atteignant un nombre limite de sommets. Une préparation du modèle sous MSTS et l'utilisation de PolyMaster après exportation permettent alors de résoudre ces problèmes.

Remarque importante

La possibilité de faire passer des objets "lourds" dans MSTS ne dispense pas de chercher à économiser les polys, notamment par une conception saine du modèle, et par la mise en place de LODs efficaces!

Autres causes de plantage non couvertes par ce tutorial

Notons toutefois que d'autres causes sont possibles:

L'analyse et la résolution de ces causes ne sont pas couvertes par ce tutorial!


Outils nécessaires

TSM

A priori, si vous lisez ce tutorial, c'est que vous êtes déjà en possession de TSM et familier de son usage. Dans le cas contraire, celui-ci est disponible avec la documentation associée, sur le site d'Amabilis: (http://www.trainsimulatorworld.com/tsm/tsmmain.htm).

PolyMaster

Cet outil a été créé par Thomas Pilder, alias Tophil, afin de palier certaines insuffisances de TSM:

PolyMaster est disponible sur le site de Tophil: (http://www.thopil.de/). Attention, c'est en allemand!

Ce tutorial se concentre sur les deux derniers aspects mentionnés ci-dessus. Un tutorial spécifique rédigé par Nicober, et traitant de la création des LODs, est par ailleurs accessible sur ASW (voir en bas de cette page: (http://www.activitysimulatorworld.net/Cours_en_ligne.htm). Il pourra vous être utile pour compléter votre connaissance de PolyMaster et aller plus loin dans son utilisation.

Shape Viewer

Pas la peine de présenter cet outil. Néanmoins pour ceux qui le rechercheraient, il est disponible sur ASW (http://www.activitysimulatorworld.net/Les_utilitaires.htm).


Travail préparatoire sous TSM

Diagnostic

Pour évaluer les chances que le traitement proposé ici porte ses fruit, je vous conseille de commencer par prendre connaissance du nombre de sommet que comportera le modèle (fichier .S) après exportation. La méthode la plus sûre consiste pour cela à utiliser PolyMaster. Lancer l'outil, puis, ouvrir le fichier .S que vous aurez exporté depuis TSM.

Pour le moment, un seul chiffre nous intéresse: c'est le nombre de sommets (vertices) que comporte le .S que devra gérer MSTS. C'est le chiffre cerclé de rouge dans la figure ci-dessous. Ce chiffre ne doit pas dépasser 14000. Si tel est le cas, et bien TS aura toutes les chances de planter au moment d'afficher votre modèle. Bonne nouvelle: la méthode que je vous propose devrait résoudre le problème!

Quelques précisions supplémentaires:

Attention: il ne faut pas confondre la notion de sous-objet avec la notion de partie. Un sous-objet peut en effet contenir une ou plusieurs parties. Une partie peut aussi être partagée entre plusieurs sous objets. Les deux notions sont donc disjointes!

Nettoyage des points orphelins

La présence de poin,ts orphelins dans le modèle 3D peut aussi expliquer des plantages sous MSTS. Avant de poursuivre, assurez vous que vous les avez tous nettoyés grâce à la fonction "Parties > Supprimer les points orphelins" disponible sous TSM.

Centrage des parties

Afin d'éviter tout problème ultérieur, assurez vous que les parties fixes du modèle sont toutes centrées en (0, 0, 0). Ceci ne concerne pas, évidemment, les parties mobiles (roues, bogies, éléments de pantographes et d'essuie-glace). Pour ce faire:

Les parties mobiles spéciales "BogieX", "WheelsXY", les éléments de pantographes ou d'essuie-glaces ne doivent pas être modifiées!

Hiérarchisation du modèle

En général, les modèles TSM sont hiérarchisés de la façon suivante: tous les éléments sont rattachés à la racine "Main".

Nus allons bouleverser un peu cet ordre établi, en:

Attention: les parties mobiles spéciales "BogieX", "WheelsXY", les éléments de pantographes ou d'essuie-glaces ne doivent pas être modifiées!

En gros, nous allons passer de la hiérarchie de gauche à celle de droite:

Cette modification peut être un peu fastidieuse, car elle demande de modifier le parent des parties une à une! Ce changement s'effectue en mode partie. La partie à modifier étant sélectionnée:

Association des rotations nulles

Cette étape est également décrite dans le toturial de Nicober précédemment cité.

A l'exportation, TSM tente de regrouper autant que possibles des parties disjointes du modèle. De ce fait, il est ensuite impossible de les séparer, ce qui peut rendre impossible la constitution de sous-objets de moins de 14000 sommets. Pour empêcher TSM de procéder à ces regroupements, il suffit d'accosier des rotations nulles à chacune des parties statiques (donc à l'exception des routes, bogies, éléments de panto, essuie-glaces, ... ). Le fichier LOD.rot joint vous simplifiera la tâche. Placez le simplement à la racine du répertoire d'installation de TSM.

Ensuite, passez les parties en revue (en mode partie). Pour chacune d'elles, effectuez un clic droit, puis sélectionner la fonction "Propriétés de l'objet" dans le menu déroulant. Ensuite:

Attention: les parties mobiles spéciales "BogieX", "WheelsXY", les éléments de pantographes ou d'essuie-glaces ne doivent pas être modifiées!

Pour que ces rotations soient correctement prises en compte, il faut indiquer à TSM que l'objet comporte des animations réparties sur un nombre donné de "trames". Pour cela:

Exportation

Voilà, notre modèle est désormais prêt à être "exporté" et traité sous PolyMaster! Effectuez donc une exportation comme vous en avez l'habitude. Comme PolyMaster ne travaille que sur des .S décompressés, nous allons simplement décocher la case "Convert to Binary" dans le panneau d'exportation. Ce nous évitera de longue et inutiles étapes de décompression!


Travail final sous PolyMaster

TSM en allemand ou en anglais...

Nous allons commencer par modifier si besoin le langage de l'interface de TSM. Par défaut, celui-ci est en allemand. Pour ceux qui préfèrent l'anglais, il est possible de modifier l'interface. Après avoir lancé PolyMaster, cliquer sur l'onglet "Settings", puis choisissez la langue de votre choix (allemand ou anglais).

Ouvrir le .S avec TSM

Nous voilà dans le vif du sujet. Tout d'abord, nous allons ouvrir le .S que nous venons de générer avec PolyMaster. Nous retrouvons le panneau présenté en début de document, avec cette fois la totalité des parties présentes dans le .DST:

Quelques explications sur l'interface

Tout d'abord il est utile de présenter les principaux éléments de l'interface. De prime abord, ça peut sembler compliqué. En fait avec un peu d'habitude, c'est plutôt simple.

  1. Affichage du niveau de LOD considéré. Dans ce tutorial, nous ne travaillons qu'au LOD1, mais le principe peut être étendu aux LODs supérieurs,
  2. Affichage du nombre de sommets par sous objet. Pour le moment notre modèle ne comporte qu'un unique sous objet!
  3. Affichage du nombre de polygônes par niveau de LOD. Notre objet ne comporte qu'un unique niveau de LOD,
  4. Affichage du nombre de polygônes et des animations des différentes parties,
  5. Touche permettant la compression d'un .S décompressé ou la décompression d'un .S compressé. Le .S n'est pas ouvert, mais seulement compressé/décompressé!
  6. Touche permettant l'ouverture d'un .S. Seuls les .S décompressés peuvent être ouverts!
  7. Touche validant l'application des LODs et du découpage en sous objets décrits dans le panneau 0 le cas échéant,
  8. Touche validant la suppression des animations sur les parties non cochées dans le panneau 4 (colonne "Anim"),
  9. Touche permettant de regrouper des sommets voisins,
  10. Touche permettant de regrouper des polygônes ayant une orientation voisine,
  11. Touche permettant de corriger les problèmes de transparence pour les sous-objets sélectionnés dans le panneau 2,
  12. Touche permettant d'annuler les changements appliqués au fichier .S (je ne l'ai jamais utilisée!),
  13. Touche permettant de sauvegarder les changements décrits par ces différents panneaux avec un nom par défaut,
  14. Touche permettant de sauvegarder les changements décrits par ces différents panneaux avec un nom différent,
  15. Touche permettant de sortir de l'outil,
  16. Panneau principal.

Nous ne nous intéresserons ici qu'à une petite partie de ces éléments.

Détails sur le panneau principal (16)

Nous allons nous concentrer sur le panneau principal (16), car c'est là que va s'effectuer l'essentiel du traval. Ce panneau founrit la liste de toutes les parties du modèle. Pour chacune d'elle sont fournis, sur quatre colonnes:

Ainsi, pour prendre un exemple, on sait que la partie Box_3:

Découpage en sous-objets

Avec ces connaissance minimales, nous allons maintenant pouvoir commencer le découpage en plusieurs sous-objets de notre modèle.

Combien de sous-objets?

La première question qui se pose est la suivante: combien de sous-objet va t'il nous falloir? Comme nous l'avons vu au début de ce tutorial, MSTS n'accepte pas les sous-objets comptant plus de 14000 sommets. Donc logiquement, si notre modèle comporte Ns sommets, le nombre de sous-objets nécessaires sera égal à (Ns/14000) au minimum. Personnellement, je conseillerais d'éviter les sous-objets trop lourds, et de viser plutôt un nombre maximum d'environ 5000 à 6000 sommets par sous-objet. La formule devient donc: (Ns/6000). Dans tous les cas, on arrondit évidemment le résultat de cette division au chiffre entier supérieur.

Si nous reprenons le modèle du début, qui comporte 14955 sommets, nous obtenons donc (14955/6000)=2,49. Après arrondi, nous obtenons donc 3 sous-objets.

La définition des sous objets dans TSM

Voilà: nous sommes prêts maintenant à découper notre modèle! Pas de panique: il n'y a aucun risque et tout est parfaitement réversible!

Ce découpage s'effectue de façon très simple, en indiquant dans la colonne "L1" du panneau principale (16) de TSM, l'indice correspondant au sous objet auquel doit appartenir la partie (ou le morceau de partie) considérée. Comme nous avons choisi d'utiliser 3 sous orbjets, nous devrons donc utiliser les indices 1, 2, et 3. Au départ, bien sur, toutes les parties appartiennent au seul sous-objet 1. Dans le panneau 2, nous savons déjà qu'apparait le nombre de sommets dans cet unique sous-objet, à savoir 14955:

Nous allons maintenant placer la première partie ("Bogie1_SolidNorm") dans le troisième sous objet. Pour cela nous tappons "3" dans la colonne "L1" en face du nom de cette partie. Dans le panneau 2, nous voyons apparaitre quelques changements:

A partir de là, il suffit de répéter la même opération pour l'ensemble des parties, en veillant à répartir au mieux les sommets dans les 3 sous-objets. A priori le placement dans l'un ou l'autre sous-objet n'est pas critique. Toutefois pour mieux s'y retrouver, on peut placer les parties similaires dans le même sous-objet (par exemple: tous les éléments de bogies). Notez aussi que dans le cas d'une correction des problèmes de transparence, cette répartition doit être régie par quelques règles supplémentaires spécifiques. Bref, on obtiendra par exemple au final sur le modèle ci-dessus une répartition telle que celle illustrée sur la figure ci-dessous. On note que l'équilibre n'est pas parfait entre les 3 sous-objets. Toutefois l'essentiel est que tous comptent un nombre de sommets très inférieur à la limite fatidique de 14000:

Suppression des animations inutiles

Il nous reste une tache importante à mener: puisque nous avons associé des rotations nulles à l'ensemble des parties fixes, il nous faut maintenant les supprimer! SI nous ne le faisions pas, au mieux MSTS rencontrerait des problèmes d'affichage, au pire rendrait la main à l'oncle Bill!

Pour réaliser cette opération, nous allons travailler dans le panneau 4. Dans la colonne "Anim", nous allons supprimer les croix en face de toutes les parties fixes qui en comporteraient, et nous allons aussi nous assurer que les parties mobiles (panto, roues, bogies) en comporte bien une. Par exemple sur la figure ci-dessous, la partie "Main", qui ne doit pas être animée, a vu sa croix supprimée. On a aussi vérifié que la partie "Bogie1", qui doit rester animée, était bien marquée d'une croix!

Validation et sauvegarde

Nous allons maintenant ouvoir valider notre travail et le sauvegarder. Pour cela, et après une dernière vérification, nous allons cliquer successivement sur les touches:

Attention: la sauvegarde porte sur les données que vous avez entrées dans PolyMaster. Pour un modèle My3D.S, PolyMaster crée un fichier de sauvegarde My3D.PolyMaster. Il vous est alors possible de réappliquer aisément les mêmes modifications à la même 3D fraichement exportée de TSM. Ceci n'est possible que si l'ordre des parties, le mapping des textures et les matériaux n'ont pas changé!

Attention: à partir du moment où nous cliquons sur "Save", les modifications sont effectivement appliquées à la 3D!

Compression

Puisque notre 3D est toujours ouverte dans PolyMaster, nous allons en profiter pour la compresser en cliquant simplement sur la touche "Compress/Decompress .s" (5). A partir de là, nous pouvons alors vérifier le résultat dans MSTS!


Références bilbiographiques

Le lecteur intéréssé pourra consulter les documents complémentaires suivants:


Remerciements

La rédaction de ce tutorial n'a été possible au grâce au travaux préliminaires et indications de brillants pioniers:


Copyright

CopyRight 2007, http://BB25187.eu/. La diffusion ou la recopie de ce tutorial sans mon accord explicite est interdite.