Il est très pratique d'utiliser XPresso pour ajuster l'éclairage,
particulièrement si vous utilisez un grand nombre de lumières
devant être contrôlées.
Le but de cet expression est de créer un couloir éclairé
par des lampes dont l'intensité varie avec leur distance par rapport
à un objet qui se déplace. Pensez à une pièce qui
allumerait automatiquement les lampes situées dans la partie ou vous
marchez. Se contenter d'allumer ou éteindre les lampes risque d'être
un peu abrupt, et nous voulons aussi que le couloir ne soit jamais complètement
dans le noir.
Comme d'habitude il existe plusieurs méthodes pour résoudre ce
problème, nous allons vous en montrer deux.
La première est de créer une expression qui contrôle l'intensité
en fonction de la distance pour chaque lampe.
La seconde est de créer une seule expression qui contrôlera toutes
les lampes.
Fondamentalement ces deux méthodes fonctionnent à l'identique,
la principale différence réside dans la manière dont vous
référencerez les lampes. La première expression peut être
transférable ainsi vous pouvez la réutiliser facilement, alors
que la seconde est plus facile à ajuster puisque vous n'avez qu'une seule
expression à modifier.
Nous commencerons par créer une expression d'après la première
méthode, ensuite nous la modifierons selon la seconde méthode.
Ajoutez une propriété XPresso sur la première lumière puis faites glisser la lumière elle même et la sphère dans l'éditeur XPresso. Nous aurons besoin de la position globale de ces deux objets pour déterminer la distance. La distance peut être calculée soit par la soustraction des deux positions, le vecteur résultant étant converti en un réel (Info), ou en utilisant le nœud distance. Dans notre exemple nous utiliserons le nœud distance.
| Votre expression doit ressembler à cela : | ![]() |
| Maintenant il nous faut adapter la distance à l'intensité
de la lumière. Pour avoir une idée de l'intervalle de valeurs
dont nous parlons, créez un nœud Résultat et connectez
le à la sortie du nœud distance. Activez la Mise à jour
de l'animation dans le menu Calculer pour avoir un affichage en temps réel
du résultat dans le nœud. Vous pouvez tester l'expression en déplaçant la sphère le long de son axe Z. Si vous ne modifiez pas la position en X et en Y de la sphère, la plus petite distance doit être un peu en dessous de 140 unités, ainsi nous connaissons la distance minimum qui devra créer l'intensité maximum au niveau de l'éclairage. Maintenant déplacez la sphère sur son axe Z jusqu'à atteindre la lumière suivante. La distance est d'environ 330 unités cela correspond à la distance à laquelle la lumière aura son intensité minimum. Comme nous ne voulons pas que la lumière s'éteigne complétement nous utiliserons un intervalle d'intensité compris entre 20% et 100% (0.2 - 1.0). Pour convertir l'intervalle des valeurs (Info) de 330/140 vers 20%/100% vous pouvez utiliser un certain nombre de nœuds math ou le nœud de cartographie d'intervalle. Nous utiliserons la cartographie d'intervalle puisque elle a justement été créée pour cet usage. Remplacez le nœud résultat par la cartographie d'intervalle. Nous allons avoir besoin d'un second nœud pour l'objet lumière, faites le simplement glisser depuis le gestionnaire d'objets et placez le à droite de la cartographie d'intervalle. Vous pouvez créer la connection en tirant un lien depuis la sortie de la cartographie d'intervalle puis en le relâchant sur le carré bleu situé en haut et à gauche du nœud lumière. |
![]() |
| Réglez l'intervalle de sortie de la cartographie d'intervalle
sur Pourcentages et activez Clamper (min) et Clamper (max) (Info). Du fait que nos intervalles sont inversés (une valeur élevée sera convertie en une valeur faible) vous activez l'option Inverser. Nous n'utiliserons pas la spline optionnelle donc vous pouvez la désactiver. Saisissez les limites des intervalles dans les champs Paramètres. |
![]() |
|
Nous avons désormais une lumière qui fonctionne comme prévu (scene). Réalisez une animation qui déplace la sphère d'une extrémité du couloir à l'autre pour tester votre expression.(animation) |
|
|
Nous devrons effectuer une modification avant de copier cette expression
sur les autres lumières. Actuellement elle pointe vers l'objet
Lumière1 et le fait de copier l'expression ne changera pas cela.
La solution consiste à utiliser une référence relative.
Sélectionnez les deux nœuds de l'objet Lumière1 et
changez la référence absolue en référence
relative. |
![]() |
|
L'expression que nous venons de créer présente
quelques inconvénients. Si vous souhaitez modifier la distance
ou l'intervalle d'intensité il faudra le faire séparément
pour toutes les expressions ou bien remplacer toutes les propriétés
par une nouvelle qui a été modifiée. Une première
étape pour rendre les choses plus faciles est de permettre l'accès
aux valeurs souhaitées en dehors de l'éditeur XPresso en
utilisant une des méthodes indiquées ici.
Cela vous permettra de faire une multi sélection des lumières
(si vous employez les données utilisateur) ou des propriétés
(si vous utilisez les ports du groupe) et de changer les valeurs simultanément.
Cependant vous êtes toujours coincés avec une propriété
Xpresso pour chaque lumière. (scène) Supprimez toutes les propriétés XPresso excepté celle de la Lumière1 puis ajoutez un nœud Liste d'objets. Comme nous allons placer cette expression sur l'objet neutre il faut changer la référence de la Lumière1 en absolue, sinon la référence pointera vers le neutre qui n'a pas de valeur d'intensité. Ensuite vous déplacez la propriété depuis la Lumière1 sur l'objet neutre Lumières. |
![]() |
| A présent nous connectons la sortie Instance du nœud
Liste d'objets à l'entrée Objet des deux nœuds Lumière1.
De cette façon la référence changera tout à
tour pour pointer successivement sur chacun des objets placés dans
la liste. Pour rendre cette expresssion plus simple d'emploi ajoutez toutes les valeurs susceptibles d'être modifiées au port d'entrée du groupe principal (Info) Vous pouvez modifier l'ordre des ports en cliquant sur le nom d'un port puis en le faisant glisser, cela permet de garder l'expression bien lisible. (scène) |
![]() |
Vous pouvez facilement modifier cette expression pour que, à la place de lumières qui changent d'intensité ce soient des portes qui s'ouvrent et se ferment automatiquement. Animez simplement la rotation des portes à la place de l'intensité de la lumière.
Gardez à l'esprit qu'il y a toujours plus d'une solution à
un problème.
Essayez toujours de trouver plus d'une solution à un problème.
Ceci vous aidera quand cela deviendra difficile d'avancer et que vous devez
produire dans un temps limité ou avec des contraintes.