Lumières
Introduction
Cette page vous apprendra à ajouter des lumières sur vos blocs et véhicules. De base dans DynamX, une lumière est une part qui restera lumineuse la nuit, mais qui n'émettra pas de lumière. Voici deux exemples :
Cela permet de faire des phares, des clignotants, des gyrophares et bien plus encore.
Info
Le support des lumières sur les items et armures est prévu et arrivera plus tard.
En ajoutant BetterLights, qui est en cours de création (pas encore public), vous pourrez bientôt avoir des parts qui émettent réellement de la lumière, en éclairant les blocs et entités, et faire des vrais phares, des lampes torches, etc.
Prérequis
Vous devez avoir configuré au moins un bloc ou un véhicule.
Danger
Cette version du tutoriel fonctionne uniquement sur les versions 4.0.0 et ultérieures de DynamX.
Préparation du modèle
Dans votre modèle 3D, veillez à bien séparer chaque objet pouvant s'allumer séparément, et à les nommer d'une manière assez claire. Ensuite, ajoutez-leur au moins une texture pour l'état allumé, de la même manière que dans l'étape "Configuration du modèle" du MultiTextures : ici.
Configuration
Ajouter l'état allumé à la part lumineuse
Les lumières se configurent à l'aide du bloc "MultiLight", dont voici un exemple pour des feux arrières :
MultiLight_rear{
PartName: rearlight
LightObject_rearlights{
LightId: 4
Textures: on
}
LightObject_stop{
LightId: 6
Textures: on
}
}
MultiLight_rear
créée une nouvelle source de lumière, vous pouvez mettre nimporte quel suffixe à la place de 'rear'. PartName: rearlight
désigne la part dans le modèle obj. Ici, le phare arrière gauche et le phare arrière droit sont dans la même part, c'est plus simple à configurer. Pour chaque part du modèle, vous ne devez avoir qu'un seul MultiLight
.
Les sous-blocs LightObject_rearlights
et LightObject_stop
créent deux nouveau types de lumière : les feux arrières de la voiture quand les phares de nuit sont allumés, et les feux arrières allumés quand on freine. Pour les feux nocturnes, LightId: 4
désigne l'id de la lumière, et plusieurs LightObject
peuvent partager le même id. Quand vous voudrez allumer le phare, avec le BasicsAddon par exemple, c'est cet id qu'il faudra donner. Textures: on
désigne enfin la texture allumée du phare, telle que configurée dans le fichier mtl (voir plus haut).
Pour compléter les feux arrières, vous pouvez de la même manière ajouter les phares avants :
MultiLight_front{
PartName: light
LightObject {
LightId: 4
Textures: on
}
}
LightObject
n'a ici pas de nom : pas besoin comme il n'y en a qu'un seul, et qu'il partage le même LightId
que LightObject_rearlights
: les deux s'allumeront en même temps.
Faire clignoter les lumières
Voici un exemple de clignotants à gauche. Pour une configuration plus simple, dans le modèle obj les clignotants avant et arrières sont dans la même part.
MultiLight_turnleft {
PartName: left
LightObject{
LightId: 2
Textures: on
BlinkSequenceTicks: 8 15
}
}
BlinkSequenceTicks: 8 15
. C'est une séquence de ticks (20 ticks correspondent à une seconde), indicant en altenance le temps auquel la lumière s'allume puis s'éteint : avec 8 15
, la lumière s'allumera au bout de 8 ticks, s'éteindra au bout de 15 ticks, puis (on repart à 0) elle s'allumera de nouveau après 8 ticks. Avec BlinkSequenceTicks: -1 0 8 15
commencera dans l'état allumé, puis s'éteindra après 8 ticks, et se rallumera au bout de 15 ticks.
Vous pouvez également faire des séquences d'autres longueurs, et plus compliquées, par exemple avec BlinkSequenceTicks: -1 0 2 4 6 18
, la lumière commencera allumée, puis s'éteindra après 2 ticks, puis se rallumera au bout de 4 ticks, puis s'éteindra à 6 ticks, puis se rallumera à 18 ticks.
Ajouter une spotlight (avec le mod BetterLights)
Cette partie explique comment ajouter un projecteur : la source de lumière éclairera vraiment les blocs et entités devant elle, à l'aide de shaders et du mod BettetLighs.
Warning
Le mod BetterLights n'est pas encore disponible !
Modifiez le phare arrière précédent comme suit :
MultiLight_rear{
PartName: rearlight
LightObject_headlights{
LightId: 4
Textures: on
SpotLightColor: 0.5 0.1 0.1 1
}
LightObject_stop{
LightId: 6
Textures: on
SpotLightColor: 0.9 0.1 0.1 1
}
SpotLight_left {
Offset: 0.9 -0.1 -0.8
Direction: 0 -0.3 -1
Angle: 15
Distance: 20
}
SpotLight_right {
Offset: -0.9 -0.1 -0.8
Direction: 0 -0.3 -1
Angle: 15
Distance: 20
}
}
SpotLightColor
aux LightObjects : ce sera la couleur de la lumière projetée quand la source est allumée. Si les deux LightObjects sont allumés, le dernier dans la liste sera appliqué.
Les blocs SpotLight_left
et SpotLight_right
définissent les projecteurs gauche et droite.
Offset
correspond à leur position par rapport à l'origine du modèle 3D.Direction
correspond à la direction de la lumière dans le repère du modèle.Angle
correspond à la "largeur" de la lumière, en degrés.Distance
correspond à la portée de la lumière, en mètres.
Liste des propriétés configurables
MultiLight
Propriétés obligatoires
Nom | Type | Description | Exemple |
---|---|---|---|
PartName | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Nom de l'objet lumineux dans votre modèle | - |
Propriétés facultatives
Nom | Type | Description | Valeur par défaut |
---|---|---|---|
BaseMaterial | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | (Utilisateur avancé) Nom du matériau utilisé sur l'objet lumineux dans l'état par défaut. Cette propriété a le même comportement que la propriété BaseMaterial du multi-textures. | - |
Position | Vecteur au format blender (X,Z,Y*-1) | Position de l'objet | - |
Rotation | Quaternion (X,Y,Z,W) | Rotation de la part sur le véhicule, rotation indiquée dans blender dans le mode "quaternion" | none |
LightObject
Propriétés obligatoires
Nom | Type | Description | Exemple |
---|---|---|---|
LightId | Chaine de caractères (Peut être utilisé pour donner un nom ou une description) | Id de la part lumineuse. Il doit être partagé avec toutes les parts s'allumant en même temps. C'est lui qui sera utilisé dans les addons pour définir quand est-ce que la part doit d'allumer (pour configurer des phares par exemple). | - |
Textures | Liste de chaine de caractères (Pour les propriétés acceptant plusieurs valeurs, exemple : Valeur1, Valeur2, Valeur3, ....) | Texture(s) utilisée(s) sur la part lorsqu'elle est allumée. Voir la page multi-textures pour apprendre le fonctionnement du multi-textures sur les modèles. Si vous en mettez plus d'une, elle doivent respecter la BlinkSequenceTicks . |
Textures: Light_On |
Propriétés facultatives
Nom | Type | Description | Valeur par défaut |
---|---|---|---|
BlinkSequenceTicks | Liste de nombres entiers | Séquences de clignotement de la lumière, pour faire des gyrophares par exemple. Avec BlinkSequenceTicks: -1 10 20 , la part sera allumée 0.5 secondes, puis éteinte 0.5 secondes en alternance (une seconde = 20 ticks). Avec BlinkSequenceTicks: -1 20 elle sera allumée en continu. Une séquence peut contenir une infinité d'étapes. |
none |
RotateDuration | Nombre entier | Temps en ticks pour que la part lumineuse fasse un tour sur elle-même | 0 |
SpotLightObject (BetterLights)
Coming soon: ${SpotLightObject.md}
Conclusion
Vous savez maintenant comment mettre des lumières sur les objets DynamX ! Si vous rencontrez des difficultés ou que ce tutoriel n'est pas assez clair, vous pouver aller demander de l'aide sur le discord de DynamX !