Tuto textures saisonnières
Transcription
Tuto textures saisonnières
COMPLEMENTS GMAX - Scenery - FS9 Table des matières 1. Généralités ............................................................................................................................. 3 1.1. But de ce document ............................................................................................................ 3 1.2. Conventions d'écriture......................................................................................................... 3 1.3. Documents liés.................................................................................................................... 3 2. Texture saisonnières dans les objets Gmax ....................................................................... 5 2.1. Outils nécessaires............................................................................................................... 5 2.2. Méthode .............................................................................................................................. 5 2.2.1. Export.............................................................................................................................. 5 2.2.2. Désignation des textures................................................................................................. 5 2.2.3. Attribution des textures ................................................................................................... 6 2.2.4. Explications de la routine créée ...................................................................................... 7 2.2.5. Compilation du fichier ..................................................................................................... 8 2.2.6. Utilisation du nouveau fichier '*.mdl'................................................................................ 9 3. Notes..................................................................................................................................... 11 Tutoriaux complémentaires 2 1. Généralités 1.1. But de ce document Ce document regroupera plusieurs tutoriaux complémentaires à ceux déjà conçus autour de Gmax et FS9. Ce document s’adresse à tous ceux qui voudraient aller plus loin dans la conception d'objet sous Gmax, et leur intégration dans le monde de FS9. Ces tutoriaux se veulent surtout didactiques et comportent une grande part d'explications avant d'aborder réellement la pratique. Quand on connaît le pourquoi, le comment devient naturel! 1.2. Conventions d'écriture Les accolades '{xxx}' indiquent un clic sur un menu ou sur un bouton dans une fenêtre. Exemple : Cliquez {Enregistrer} Les crochets '[xxx]' indiquent une action sur une touche du clavier. Exemple : Appuyez [Entrée] Les actions simultanées sur plusieurs touches sont symbolisées par le signe ‘+’. Exemple : Appuyez [Ctrl]+[Z] Ø La puce en flèche demande une action de la part de l’utilisateur de ce tutorial. • La puce en point donne une information. 1.3. Documents liés • Flight Simulator 2004 - Software Development Kit (FS SDK) : • Adresse : http://www.microsoft.com/games/flightsimulator/fs2004_downloads_sdk.asp • • • TutoGmax (AVA).pdf GmaxSceneryTutorial_FR.pdf Install Scenery.pdf • A trouver sur : http://avalsace.free.fr/page_technique.htm Tutoriaux complémentaires 3 Tutoriaux complémentaires 4 Textures saisonnières 2. Texture saisonnières dans les objets Gmax 2.1. Outils nécessaires Ces quelques outils nous seront utiles : • Bloc-notes de windows • 'makemdl.exe' : en principe déjà présent dans le gamepack fs2004 de Gmax • 'bglc_9.exe' : version fs2004 du compilateur livré pour fs2002. C'est une version béta, non fournie par Microsoft mais présente dans le logiciel 'CAT' ou 'Mdl Tweaker' par exemple à télécharger depuis : http://www.scenerydesign.org/forum/local_links.php?catid=1 Merci Arno ! 2.2. Méthode 2.2.1. Export Au moment de l'export de Gmax vers un objet du type 'FlightSim Scenery Object' vous obtenez normalement deux fichiers : • 'Objet.mdl' : définition graphique de l'objet • 'Objet.xml' : placement géographique de l'objet. La définition de textures saisonnières passe par la modification de deux fichiers intermédiaires : • 'Objet.asm' • 'Objet_0.asm' Ces fichiers sont créés par 'makemdl.exe' qui s'en sert, puis les efface (quel égoïste!). Pour lui forcer la main, il y a une solution : Ø Allez voir dans '//Gmax\gamepacks\fs2004\plugins' : vous y trouverez 'makemdl.exe' et éventuellement 'makemdl.cfg'. Si ce dernier n'existe pas, il faudra le créer (par le Blocnotes par exemple) Ø Ouvrez 'makemdl.cfg', ajoutez-y les deux lignes suivantes : [Options] Keep=1 Ø Enregistrez 'makemdl.cfg' Maintenant, 'makemdl.exe' conserve les deux fichiers '*.asm' après s'en être servi lors d'un export. Ils sont situés dans le même dossier que '*.mdl' et '*.xml'. Ces fichiers sont des fichiers de type texte, facilement modifiables dans le Bloc-notes. L'exemple suivant traite un arbre créé dans Gmax auquel est attribué des textures d'origine Gerrish Gray (Merci à lui). Nom du fichier exporté : 'Oval.mdl'. Le fichier qui nous intéresse ici est : 'Oval_0.asm'. 2.2.2. Désignation des textures La première étape consiste à désigner par leur nom les textures qui seront appliquées : Ø Démarrez le Bloc-notes Ø Ouvrez 'Oval_0.asm' Ø Recherchez, dans le texte, l'ensemble de lignes suivantes : Tutoriaux complémentaires 5 Textures saisonnières ..... oval_top label BGLCODE texture_riff_start_oval label word db 'T','E','X','T' dd texture_riff_end_oval - $ - 4 TEXTURE_LIST_BEGIN TEXTURE_DEF TEXTURE_BUILDING TEXTURE_LIST_END BGL_RETURN texture_riff_end_oval label word ..... , <255,255,255,255>, 8.374447, "TREE_OVAL.BMP" ;0 Ces lignes définissent le nom de la texture par défaut utilisée par l'objet 'Oval.mdl'. Cette texture est la texture d'été : "TREE_OVAL.BMP". Ø Ajoutez-y les définitions des textures des autres saisons que vous voulez utiliser. Les outils 'Copier/Coller' conviennent parfaitement pour dupliquer les lignes nécessaires, dans lesquelles il suffira de modifier le nom de la texture en fin de ligne. Les éléments qui suivent les ';' sur la même ligne ne sont que des commentaires et ne sont donc pas pris en compte lors de la compilation. Vous devez obtenir ce texte : ..... oval_top label BGLCODE texture_riff_start_oval label word db 'T','E','X','T' dd texture_riff_end_oval - $ - 4 TEXTURE_LIST_BEGIN TEXTURE_DEF TEXTURE_BUILDING TEXTURE_DEF TEXTURE_BUILDING TEXTURE_DEF TEXTURE_BUILDING TEXTURE_DEF TEXTURE_BUILDING TEXTURE_DEF TEXTURE_BUILDING TEXTURE_LIST_END BGL_RETURN texture_riff_end_oval label word ..... , <255,255,255,255>, 8.374447, "TREE_OVAL.BMP" , <255,255,255,255>, 8.374447, "TREE_OVAL_FA.BMP" , <255,255,255,255>, 8.374447, "TREE_OVAL_WI.BMP" , <255,255,255,255>, 8.374447, "TREE_OVAL_HW.BMP" , <255,255,255,255>, 8.374447, "TREE_OVAL_SP.BMP" ;0 ;1 ;2 ;3 ;4 Les lignes ajoutées sont en Italique. 2.2.3. Attribution des textures Il faut maintenant attribuer chaque texture à la période de l'année qui lui convient : Ø Recherchez dans le même fichier la séquence suivante : ..... Oval_MasterScale_1 label BGLCODE MATERIAL 0,0 ; <255,255,255,255> TREE_OVAL.BMP;;; DRAW_TRI_BEGIN 0, 22 DRAW_TRI 5, 10, 17 ; poly=1 part=1 DRAW_TRI 17, 15, 5 ; poly=2 part=1 ..... Dans cette séquence, c'est la ligne repérée en Italique qui attribue la texture utilisée ici toute l'année. Ce sera celle-ci qui sera supprimée et remplacée par des lignes de code. Tutoriaux complémentaires 6 Textures saisonnières Dans FS9, nous pouvons définir le moment dans l'année par deux variables : • '06F8h' : contient le nom de la saison en cours : winter=0, spring=1, summer=2, fall=3 • '038Ah' : contient le quantième du jour de l'année : de 0 à 365 Ø Pour utiliser le nom de la saison, remplacez la ligne en Italique ci-dessus par le texte en Italique ci-dessous. Vous devez obtenir cela : ..... oval_MasterScale_1 label BGLCODE IFIN1 tex_01, 06F8h, 0, 0 MATERIAL 0,2 ; winter JUMP tex_continue tex_01 label word IFIN1 tex_02, 06F8h, 1, 1 MATERIAL 0,4 ; spring JUMP tex_continue tex_02 label word IFIN1 tex_03, 06F8h, 2, 2 MATERIAL 1,0 ; summer JUMP tex_continue tex_03 label word MATERIAL 0,1 ; fall tex_continue label word DRAW_TRI_BEGIN 0, 22 DRAW_TRI 5, 10, 17 ; poly=1 part=1 DRAW_TRI 17, 15, 5 ; poly=2 part=1 ..... 2.2.4. Explications de la routine créée • • • • 'IFIN1 tex_01, 06F8h' teste la variable FS9 pour la comparer avec les bornes (mini, maxi) recherchées Si la variable est comprise entre les deux bornes, l'instruction suivante est exécutée. Dans notre cas : 0, 0 = winter,winter. La texture "TREE_OVAL_WI.BMP" est appliquée par : 'MATERIAL 0,2' puis 'JUMP tex_continue' renvoie à la dernière ligne, donc nous fait sortir de la routine. Si la variable n'est pas comprise entre les deux bornes recherchée, le test 'IFIN1' suivant est effectué et ainsi de suite. Si aucun test ne répond favorablement, 'MATERIAL 0,1' est exécuté et la texture 'fall' est appliquée. Une remarque dans l'application de cette routine : il n'y a que quatre saisons possibles. Or FS9 nous gratifie d'une cinquième saison : 'Hard Winter' au cours de laquelle les paysages et arbres sont plus ou moins enneigés en utilisant les textures '*_hw.bmp'. Pour accéder à cette saison, il faut utiliser le quantième du jour de l'année. Quelques manips de souris dans le menu 'Date et heure' de FS9 permettent de définir les plages utiles et un bon calendrier donnera les quantièmes correspondants : • • • • • • Hard Winter : du 01/01 au 14/02 --> 0 Winter : du 15/02 au 19/03 --> 46 Spring : du 20/03 au 20/06 --> 79 Summer : du 21/06 au 22/09 --> 172 Fall : du 23/09 au 21/12 --> 266 Winter : du 22/12 au 31/12 --> 356 Tutoriaux complémentaires 7 > > > > > > 45 78 171 265 355 365 Textures saisonnières Comme on peut le remarquer, l'année est même divisée en six périodes ! La routine utilisée sera la même que la précédente sauf l'utilisation de '038Ah' comme variable FS9 et des quantièmes des jours de l'année dans les tests. On remarque aussi que le nombre de textures différentes utilisables n'est limité que par le nombre de jours de l'année : 365 (366). La limite est donc l'attribution d'une texture différente chaque jour ! Ø Pour utiliser les six périodes, modifiez le texte précédent comme suit : oval_MasterScale_1 label BGLCODE IFIN1 tex_01, 038Ah, 0, 45 ; 01/01>14/02 MATERIAL 0,3 ; h_winter JUMP tex_continue tex_01 label word IFIN1 tex_02, 038Ah, 46, 78 ; 15/02>19/03 MATERIAL 0,2 ; winter JUMP tex_continue tex_02 label word IFIN1 tex_03, 038Ah, 79, 171 ; 20/03>20/06 MATERIAL 0,4 ; spring JUMP tex_continue tex_03 label word IFIN1 tex_04, 038Ah, 172, 265 ; 21/06>22/09 MATERIAL 0,0 ; summer JUMP tex_continue tex_04 label word IFIN1 tex_05, 038Ah, 266, 355 ; 23/09>21/12 MATERIAL 0,1 ; fall JUMP tex_continue tex_05 label word MATERIAL 0,2 ; winter 22/12>31/12 tex_continue label word DRAW_TRI_BEGIN 0, 22 DRAW_TRI 5, 10, 17 ; poly=1 part=1 DRAW_TRI 17, 15, 5 ; poly=2 part=1 Ø Les modifications manuelles sont terminées, enregistrez 'oval_0.asm'. 2.2.5. Compilation du fichier Il est temps de créer le fichier 'oval.mdl' contenant les nouvelles définitions de textures : Ø Ouvrez l'explorateur de Windows. Ø Recherchez le programme 'bglc_9.exe' et copiez-le dans le dossier où se trouvent déjà les fichiers *.asm' sur lesquels vous travaillez. Ø Ouvrez une fenêtre 'Invite de Commande' : {Démarrer}/{Exécuter}/cmd/{OK}. Ø Déplacez-vous vers le dossier de travail (cd ..). Ø Listez les fichiers présents (dir), vous devez y retrouver tous les fichiers dont il était question plus haut : 'bglc_9.exe', 'oval.asm', 'oval.mdl', 'oval.xml' et 'oval_0.asm'. Ø Saisissez la ligne de commande : bglc_9/bin oval.asm oval.mdl puis [Enter], un nouveau fichier 'oval.mdl' est créé et remplace le précédent. Attention à bien traiter 'oval.asm' et non pas 'oval_0.asm'. Le fichier 'oval.xml' n'est pas modifié par cette opération, le 'guid' attribué par l'export de Gmax précédent est toujours valable. Tutoriaux complémentaires 8 Textures saisonnières 2.2.6. Utilisation du nouveau fichier '*.mdl' Intégrez votre nouveau fichier 'oval.mdl' dans votre bibliothèque 'UserMdl' de 'SceneGenX' et placez-le dans vos scenery préférés. Les différentes textures saisonnières doivent bien sûr exister et être accessibles par le fichier *.bgl placé dans le dossier 'Scenery' voulu. Les textures locales seront donc placées dans le dossier 'Texture' associé au dossier 'Scenery' intéressé, et les textures généralistes (arbres, végétation, …) auront leur place privilégiées dans '//FS9\Texture'. La texture de nuit n'a jamais de variation saisonnière. Ce développement est également valable pour tout objet conçu dans Gmax et exporté dans le type 'FlightSim Scenery Object' en fichier *.mdl. On peut par exemple enneiger des toits de bâtiments pendant la période 'Hard Winter'. Tutoriaux complémentaires Printemps Eté Automne Plein hiver 9 Textures saisonnières Tutoriaux complémentaires 10 3. Notes Ce document n'en est qu'à son début, il n'est pas figé, il reste ouvert à toute participation. Toute critique est également bienvenue surtout si elle est constructive. Patrick RENAUDIN (AVA) [email protected] Tutoriaux complémentaires 11 Tutoriaux complémentaires 12