Manuel NGLE
Textures
Animées : Techniques Avancées
Par Bedazzled
Note : ce tutoriel ne
s’applique qu’au nouveau moteur de jeu et non au précédent
NGLE.
P-Frames
Ceci vous permet de changer le texturage d’une pièce sans
utiliser de flipmaps. Par exemple, vous pouvez changer la
surface du sol d’herbe en neige en utilisant un flipeffect.
Pour ce faire, vous devez attribuer une rangée d’animation
conposée de 2 textures ou plus à l’aide de Anim – Type
paramétré sur P – Frame. En appliquant le trigger indiqué
ci-dessous, la texture référencée par le paramètre [E]xtr
est remplacée par la texture référencée par la paramètre du
timer. Deux rangées de P – Frame séparées peuvent être
utilisées avec ce type de trigger.

River-Rotate
Note: pendant les tests, j’ai utilisé des textures d’eau
normales, fournies avec les fichiers tga standards.
Je recommande de ne pas utiliser de valeurs supérieures à 4
et 6 respectivement pour des textures de 64x64 et 128x128
car l’effet désiré est perdu lorsque l’on utilise des
vitesses de défilement élevées.
Informations fournies par Paolone
Cette animation est un mélange de UV-Scroll full rotate
et d’animations de frames classiques. Elle est utilisée pour
simuler l’eau courante d’une rivière. En fait, l’eau est
courante (UV-range) mais il y a aussi de la lumière
réfléchie à la surface (frame animation).
Pour paramétrer cela dans la fenêtre Animation Range du
NGLE, vous devez indiquer dans la liste déroulante
supérieure une valeur faible pour UvRotate, telle que 1 ou 2
pour des textures de 64x64 ou une valeur de 2 ou 3 pour des
textures de 128x128.
Dans la liste déroulante inférieure, vous devez paramétrer
une valeur pour MAX_FPS de 28 fps ou un peu en dessous. La
liste déroulante inférieure va paramétrer la vitesse
d’animation des frames (comme pour l’eau normale) alors que
la liste déroulante supérieure paramètre la vitesse de
défilement (UvRange).
Il est recommandé de paramétrer seulement quelques textures
d’eau pour la rivière, afin de permettre de conserver
d’autres textures pour l’eau normale.
La rangée River-Rotate est placée dans le niveau comme des
textures d’eau normales – « double sided et transparent »
sur un portail entre deux pièces superposées. Lorsque vous
placez vos textures pour votre rivière, il est important de
faire pivoter toutes les textures de la même façon afin de
garder le même sens que l’animation UvRotate. Le sens doit
suivre celui du courant, bien entendu.
Si dans le jeu vous ne voyez pas très bien l’eau couler, il
peut être utile de réduire la vitesse des frames, en
paramétrant dans la liste déroulante inférieure une valeur
de MAX_FPS plus faible, par exemple en utilisant 28 fps ou
20 fps.
Paolone recommande que pour ce qui concerne la rangée
d’animation de la rivière, quelques-unes des textures de la
rangée soient placées en mode opaque dans une partie cachée
du niveau. J’ai testé avec et sans textures opaques et n’ai
pas remarqué de différence dans l’effet obtenu.
Séquences de Textures
Celles-ci permettent le remplacement d’une texture par une
autre dans une séquence définie par le créateur de niveaux,
et peut être démarrée et arrêtée successivement en utilisant
des triggers flipeffect. Un créateur de grand talent peut
réussir à faire en sorte à ce que les joueurs puissent voir
Lara sur une sorte d’écran en bougeant les lèvres comme si
elle leur parlait.
Seules des textures placées à des endroits précis du TGA
peuvent être utilisées. Celles-ci sont indiquées ci-dessous
et sont comptées horizontalement depuis le coin en haut à
gauche du fichier TGA, en commençant par 1.
Ce sont les textures de 5 à 12 et de 21 à 24. Toute texture
située à un autre endroit du TGA ne fonctionnera pas. Ce
problème pourrait être résolu à l’avenir, auquel cas, ce
tutoriel sera mis à jour afin de prendre en compte les
changements.
Beaucoup d’informations utiles concernant la commande de
script nécessaire ainsi que ses différents paramètres sont
incluses dans la documentation sur les scripts pour TRNG
fournie par Paolone, dont la partie concernée est
retranscrite à la fin de ce tutoriel. Je donnerai juste des
exemples de paramétrages utilisant diverses séquences de
textures.
Exemple 1 : séquence et rangée simples
Dans la fenêtre Animation Ranges, sélectionnez les textures
souhaitées, jusqu’à un maximum de 16, depuis la liste
déroulante Anim-Type, sélectionnez P – Frames et cliquez sur
les boutons Assign et OK.
Mettez en place un trigger pour cet effet à l’endroit
souhaité, puis les paramètres du trigger comme montré
ci-dessous :

Note: le paramètre de la rangée d’animations placé dans la
fenêtre du trigger doit correspondre au numéro de la rangée
mise en place. Si, par exemple, vous aviez précédemment
défini une rangée d’animations pour n’importe quelle raison,
vous devrez sélectionner la deuxième rangée d’animations
dans la liste déroulante [E]xtra.
Un second trigger pour arrêter l’effet peut également être
défini comme indiqué ici :

Enfin, pour
terminer le paramétrage, la commande TextureSequence= doit
être ajoutée à la partie « level » de votre script, comme le
montre l’exemple ici :
TextureSequence= 1, 1, SEQ_LOOP,3, 2, 1, 0
Ceci fera tourner une séquence de quatre textures dans
l’ordre 3,2,1,0 à un taux d’une par seconde, en boucle
infinie jusqu’à être stoppée par un flipeffect.
Les divers paramètres pouvant être utilisés sont expliqués
en détail à la fin de ce tutoriel.
Exemple 2 : plusieurs séquences et rangées
Ceci est paramétré de la même façon que l’exemple précédent,
jusqu’à ce que l’on arrive au paramétrage des triggers et
des entrées du fichier script. Dans cet exemple, j’ai
paramétré une rangée d’animations pour les textures d’eau
normales avant de paramétrer la seconde rangée de textures,
en fin de compte j’ai sélectionné la 3è rangée d’animations
dans la liste déroulante [E]xtra de la fenêtre du trigger.

Le script
nécessite une entrée pour chaque rangée comme décrit ici, la
seconde entrée faisant référence à la seconde rangée
numérotée 3 comme expliqué ci dessus. J’ai également choisi
comme vitesse 2 frames par seconde et également un
défilement inversé à l’aide de SEQ_LOOP_INVERSE.
TextureSequence= 1, 1, SEQ_LOOP,3, 2, 1, 0
TextureSequence= 3, 2, SEQ_LOOP_INVERSE,3, 2, 1, 0
Exemple 3 : des séquences multiples avec une seule rangée
Il est possible d’avoir plusieurs séquences de textures dans
une seule rangée d’animations. Pour cette exemple,
j’utiliserai une seule rangée de 8 textures divisées en 2
séquences. Voici les textures utilisées pour ce tutoriel
afin que vous puissiez mieux comprendre comment cela se
passe.

Partons du principe que pour commencer, la texture “A” est
appliquée sur un mur, et que nous voulons que les textures
comportant une lettre forment une séquence et les textures
comportant un chiffre forment l’autre séquence.
Nous devrons paramétrer ce trigger pour la première séquence
:

Et ce trigger
pour la seconde:

Puis saisir
ces lignes dans le script :
TextureSequence= 1, 1, SEQ_LOOP,0, 1, 2, 3
TextureSequence= 2, 1, SEQ_LOOP,4, 5, 6, 7
Les chiffres de 0 à 7 font référence à la position de
chaque texture au sein de la rangée. Lorsque le premier
trigger est activé, la lettre « A » sera remplacée par les
lettres B, C et D successivement. Une fois le second trigger
activé, la séquence deviendra comme suit : A, 1, B, 2, C, 3,
D, 4.
Le fait d’activer les 2 triggers dans l’ordre inverse aurait
pour résultat les séquences suivantes : 1,2,3,4 et
1,A,2,B,3,C,4,D.
Chacune des séquences, ou les deux, s’arrêtent en utilisant
un flipeffect comme indiqué dans l’exemple 1 et peuvent
aussi être arrêtées et redémarrées successivement.
TextureSequence=
********************
Syntaxe: TextureSequence=IdTexSeq, FramePerSec, SEQ_
flags, Tex Indices array {...}
Emplacement : à utiliser dans la section [Level]
Champ IdTexSeq
Nombre progressif pour l’identification de la séquence de
textures lorsque vous l’activez en utilisant un trigger
flipeffect. Vous utiliserez « 1 » pour la première commande
TextureSequence, « 2 » pour la deuxième commande, etc…
Champ FramePerSec
Dans ce champ, vous paramétrez la vitesse de la séquence. La
valeur est en frames par seconde. La valeur maximale est de
30, càd 30 frames par seconde, la valeur minimale est de 1.
Champ SEQ_ flags
Vous pouvez paramétrer deux SEQ_flags ou plus. Vous en
trouverez la liste dans le panneau de référence du programme
NG Center.
Pour le moment, il existe les indicateurs suivants :
SEQ_LOOP
La sequence se déroulera à l’infini. Si vous utilisez cet
indicateur, vous devrez utiliser un flipeffect spécial pour
arrêter la séquence, autrement, elle se déroulera
continuellement.
SEQ_LOOP_INVERSE
Cet indicateur fonctionne uniquement si vous avez paramétré
un indicateur SEQ_LOOP. Alors que le simple indicateur
SEQ_LOOP met en place une boucle infinie de la séquence (en
supposant que nous utilisions 4 textures, de 0 à 3) la
séquence se déroulera ainsi :
0 1 2 3 0 1 2 3 0 1 2 3 …
Lorsque vous paramétrez également un indicateur
SEQ_LOOP_INVERSE, alors la séquence se déroulera comme suit
:
0 1 2 3 2 1 0 1 2 3 2 1 0 …
SEQ_STOP_AT_FIRST
Si vous paramétrez cet indicateur, vous forcez le moteur de
jeu à revenir à la première texture de la rangée lorsque la
séquence d’animation s’est entièrement déroulée. Au
contraire, si vous oubliez cet indicateur, la dernière
texture qui s’affichera dépendra du type de séquence
paramétré.
Si vous n’avez pas paramétré de boucle (loop), la dernière
texture qui apparaîtra sera celle comportant le dernier
indice de la séquence. Si vous avez paramétré une boucle, la
dernière texture qui s’affichera dépendra du moment exact
auquel vous déclencherez le flipeffect « Stop texture
sequence ».
Champs Tex Indices array {…}
Le tableau tex indices peut héberger jusqu’à 100 indices
différents. Vous séparerez les valeurs par des virgules
classiques. Chaque indice décrira la position de l’indice
pour chaque texture à l’intérieur d’une même rangée
d’animations.
Par exemple, si vous paramétrez quatre textures du fichier
tga, avec une lettre sur chaque texture, par exemple A sur
la première, puis B, C et D. Lorsque vous voulez afficher un
frame avec la texture A, vous taperez 0 (zéro), lorsque vous
voudrez afficher la B, vous taperez 1, etc…
Par exemple, si votre commande TextureSequence est la
suivante :
TextureSequence= 1, 4, IGNORE,
3, 2, 1, 0
Vous aurez une séquence avec comme ID = 1 (il s’agit du
nombre à paramétrer dans le trigger flipeffect pour
démarrer/arrêter cette séquence).
L’animation sera lente, car vous aurez paramétré 4 frames
par seconde, ainsi l’image ne changera que quatre fois par
seconde.
Pas de boucle, car vous avez paramétré IGNORE pour
SEQ_flags.
La séquence s’affichera dans le jeu avec les images
suivantes :
D (3)
C (2)
B (1)
A (0)
Remarques :
- Les rangées que vous pouvez animer avec la commande
TextureSequence doivent être paramétrées en tant que «
P-Frames » sous NGLE.
- Le nombre maximum de textures que vous pouvez animer en
utilisant TextureSequence est de 16. Ce qui signifie que
vous ne pouvez saisir que des nombres compris entre 0 et 15
dans les champs Indices Array.
- Vous pouvez animer la même rangée P-Frame avec différentes
commandes TextureSequence.
- Le nombre de P-Frame à animer devra être paramétré dans le
trigger flipeffect.
Retour