Bienvenue dans ce premier article d'une série entièrement consacrée sur les rotations. Pourquoi appliquer une rotation à un modèle hormis le placement naturel par rapport aux besoins de construction ou à la typologie du terrain ? Et bien c'est ce que nous allons bientôt découvrir. En attendant, nous allons nous focaliser sur les bases même de la rotation concernant les modèles dans EEP.
Les bases de la rotation des modèles dans EEP
Dans EEP, en mode 2D ou 3D, tous les modèles (sauf les matériels roulants et la signalisation) acceptent les rotations X, Y et Z. Regardons le modèle ci-dessous dans la fenêtre 3D :
Nous pouvons remarquer une différence entre les rotations et les axes des positions. La rotation est symbolisée par un demi-cercle de la couleur correspondante à l'axe qu'elle représente :
- Rouge : Rotation X et axe de position X,
- Vert : Rotation Y et axe de position Y,
- Bleu : Rotation Z et axe de position Z.
Les axes de positions sont représentés par des lignes droites perpendiculairement entre-elles.
Manipulons à présent les trois rotations avec le gizmo (ou manipulateur d'objet) dans la vue 3D :
Comme nous pouvons le constater, bouger une rotation directement avec le gizmo ne déplace pas l'axe associé à la rotation. Par exemple, l'axe de position Z ne bouge pas si vous manipulez la rotation Z. Idem pour les deux autres positions, l'axe de position Y ne bouge pas si vous manipulez la rotation Y et ainsi de suite. Logique vu que la rotation s'effectue autour du même axe.
Tous les modèles modifiables avec le gizmo sont construits sur le même principe. Ainsi à première vue, on pourrait se dire que les rotations X, Y et Z s'effectuent toujours au centre exactement comme le permet le gizmo. Il convient ici de nuancer cette affirmation :
- Vrai : Les rotations avec le gizmo s'effectuent toujours au centre de celui-ci,
- Faux : Les rotations des modèles si on utilise les fonctions Lua comme EEPStructureSetRotation() ou encore EEPGoodsSetRotation() peuvent donner des résultats bien différents selon la conception intrinsèque des modèles.
Nous allons dans le chapitre suivant, tester les rotations de différents modèles directement avec les fonctions Lua dédiées à cet effet.
Tester les rotations des différents modèles
Tous les modèles présentés ici (sauf exception qui sera signalée) sont inclus dans l'inventaire standard d'EEP. Ainsi, vous pouvez reproduire les exemples chez vous à partir de votre EEP.
Nous allons commencer par un modèle constitué de panneaux de bois et lui appliquer une rotation Z avec la fonction EEPStructureSetRotation() :
Et voici les quelques lignes de codes pour effectuer la rotation :
-- Récupérer les angles de rotation du modèle ID25
ok, X, Y, Z = EEPStructureGetRotation("#25")
-- Ouverture de 0 à 90 degrés en rotation Z
for i = 0, 90 do
EEPStructureSetRotation( "#25", X, Y, i )
end
Ici, la rotation Z se comporte exactement comme si le gizmo était utilisé car la rotation de base du modèle s'effectue au centre. Le poteau au centre du panneau est juste là pour symboliser le centre de la rotation du modèle.
Maintenant, nous allons passer au modèle suivant et appliquer également une rotation Z avec la fonction EEPStructureSetRotation() :
Que pouvons-nous constater ? cette fois-ci, la rotation de base du modèle n'est plus placée au centre mais sur le côté gauche. Pourtant si nous manipulons la rotation Z du même modèle avec le gizmo, la rotation est bien placée au centre de celui-ci :
Dans l'article suivant, j'expliquerai pourquoi et comment la rotation des modèles n'est pas toujours placée au même endroit. Pour le moment, continuons avec un autre modèle :
Avec ce modèle gratuit que vous pouvez télécharger sur le site d'EEPNolie, la rotation n'est plus placée au centre ou à gauche mais sur le côté droit. Avec le gizmo, la rotation serait également bien placée au centre de celui-ci.
Et pour terminer un dernier exemple :
La rotation Z se comporte exactement comme si le gizmo était utilisé car la rotation d'origine s'effectue au centre. Le poteau au centre du mur est juste là pour symboliser le centre de la rotation du modèle.
Important : Comme nous venons de le voir, la rotation des modèles avec le gizmo s'effectue toujours au centre alors que l'application des fonctions de rotation EEPStructureSetRotation() ou EEPGoodsSetRotation() peut s'effectuer aussi bien au centre, à gauche ou à droite selon la conception interne des modèles.
Jusqu'ici, vous pouvez vous demander mais pourquoi appliquer une rotation à un mur, un portillon, un panneau... ? Voici quelques éléments de réponse :
- Pouvoir 'déplacer' dans l'espace certains modèles pour les besoins d'une scène (ouverture de porte, portail, coulisser un mur...) permet d'apporter du dynamisme dans un réseau,
- En cherchant bien, la seule limite dans la construction de vos réseaux est votre créativité car certains modèles peuvent être facilement détournés de leur fonction première (par exemple, la petite clôture en béton pourrait très bien être utilisée comme un portillon, un mur pourrait être utilisé pour construire les portes d'une écluse, etc...).
Conclusion
Cet article fait office de porte ouverte pour entrer dans le domaine des rotations. Dans les articles suivants je vous invite à découvrir certains mécanismes afin d'ajouter virtuellement des points de rotation (ouverture, fermeture, entrebâillement, etc...) exactement comme si les modèles étaient équipés d’éléments mobiles et même déplacer la rotation de base de gauche vers la droite, ou du centre vers la gauche, etc... Comment ? suite au prochain article.
Merci d'avoir lu cet article. Si vous avez des questions ou des suggestions, n’hésitez pas à nous en faire part en bas de cette page en commentaires.
Amusez-vous à lire un autre article. A bientôt !