Tutorial: Préparer les .S "lourds" pour MSTS avec PolyMasterVersion 0.1 Auteur: BB25187, http://BB25187.eu/21 octobre 2007 |
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.
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!
Notons toutefois que d'autres causes sont possibles:
L'analyse et la résolution de ces causes ne sont pas couvertes par ce tutorial!
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.
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).
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!
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.
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!
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:
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:
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:
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!
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).
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:
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.
Nous ne nous intéresserons ici qu'à une petite partie de ces éléments.
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:
le nom (colonne "Name"). En fait ce nom est étendu avec le type de matériau utilisé pour cette partie. Une partie comprenant plusieurs matériaux apparait sur autant de lignes,
Ainsi, pour prendre un exemple, on sait que la partie Box_3:
Avec ces connaissance minimales, nous allons maintenant pouvoir commencer le découpage en plusieurs sous-objets de notre modèle.
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.
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:
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!
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: à partir du moment où nous cliquons sur "Save", les modifications sont effectivement appliquées à la 3D!
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!
Le lecteur intéréssé pourra consulter les documents complémentaires suivants:
La rédaction de ce tutorial n'a été possible au grâce au travaux préliminaires et indications de brillants pioniers:
CopyRight 2007, http://BB25187.eu/. La diffusion ou la recopie de ce tutorial sans mon accord explicite est interdite.