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