01.77.06.97.27 - 06.62.38.35.93

UNREAL ENGINE

Ceci est un extrait du support de cours que je proposerai pour la formation Unreal qui sera mise en place en septembre. Bien évidemment, cette formation sera adaptée aux utilisateurs des logiciels 3dsmax ou Sketchup entre autres et surtout aux possesseurs d’un casque de Réalité Virtuell HTC Vive ou Oculus Rift afin de monter en compétence sur leurs rendus en temps-réel pour leurs clients.

Exemple de créations intéressantes pour la réalité virtuelle

Idéalement, ce que souhaiterai savoir-faire, c’est une visite virtuelle avec un rendu identique à un Vray mais en Temps-Réel RT. L’idée est de créer votre scène dans votre logiciel 3D et d’exporter vers Unreal Engine, maîtriser les matériaux (90 % du travail est fait si vous maîtrisez les matériaux sur votre logiciel 3D), créer des interactions et comportements sur vos objets 3D.

Ce qui fait la force de ce logiciel,

  • Il est gratuit, puis payant si vous faites fortune
  • Vous n’avez pas besoin de connaître un logiciel 3D externe
  • Vous n’avez pas besoin de savoir programmer, tout ce fait par un système de nœuds qui se relient les uns aux autres

Lors d’une visite virtuelle, ce que l’on peut rechercher,

  • Des interrupteurs pour les lumières pour allumer ou éteindre
  • Des interactions de matières, si je pointe le plancher, je souhaiterai avoir des choix complémentaires pour les matières de mes parquets ou carrelages.
  • Des effets de mouvement fluides pour ne pas faire vomir mes clients

Pour suivre ce petit cours, il va sans dire que vous devriez avoir un compte Epic, un compte UnrealEngine, et une version installée de UnrealEngine.

Créer une porte qui s’ouvre

Créer un nouveau projet FirstPerson

capture_unreal
A côté de Search Folders on clique pour avoir l’effet arborescence et on choisit FirstPersonBP et on va dans le dossier BluePrints
On va se créer notre nouveau BluePrint dans la catégorie BPclass choisir Actor

capture_unreal2
Une boule s’ajoute dans les icônes, on la nomme BP_Door et on double clic dessus
Une fenêtre indépendante s’ouvre, la boule seule sur fond noir et on doit maintenant y insérer le cadre de porte et la porte. Ces éléments on les trouve dans les Props du content starter activé ou non au début du projet.
Le cadre se place au-dessus de la sphère, mais au niveau zéro, la porte ne va pas se caler automatiquement au centre. Utiliser l’outil de translation, mais il peut y avoir un décalage, dans ce cas utiliser les outils de snap sur surface car par défaut la valeur est peut-être 5 ou 10, mais suivant la taille de vos objets, mettre à 1 pourra être plus simple. Aussi de passer en vue de haut et en mode wireframe pourra vous aider.

Ensuite il va falloir choisir l’objet qui va permettre de détecter les interactions avec la porte
capture_atfi_unreal
Pour cela AddComponent pour ajouter une boite de collision.

Comme il y a beaucoup de composants, je vous conseille de passer la barre de recherche et taper BoxCollision. Une boite filaire orange va apparaître au centre de votre porte et on va mettre à l’échelle au mieux centré et plus épais.
Le BluePrint est créé et doit maintenant être programmé, mais pas une programmation codée comme Unity ou CryEngine, dans UE c’est du Visual Node.
Restez dans le BP et accédez au Graph Event, c’est une interface qui a déjà des paramètres que l’on peut enlever.
Dans la partie des composants, vous avez le Default Scene Root qui inclus votre SM_Door et votre box que vous pouvez renommer Box_Collision au passage.

  • Clic droit sur Box_Collision et on y ajoute 2 composants
  • OnComponentBeginOverlap (boxcollision) et
  • OnComponentEndOverlap

L’idée est d’activer ou de désactiver par la pression d’une touche, l’ouverture de la porte uniquement si on se trouve dans la zone de collision.
Sur chaque événement il faut créer un enable Input pour le begin / un disable Input pour le End, ces événements se créent en glissant par les Pins de chaque fenêtre.
Ensuite c’est la position du joueur/visiteur qui ira gérer ces actions, on va donc relier les 2 pistes PlayerController à un GetPlayerControler

Pour ne pas nous mélanger les pinceaux au début, c’est pratique de créer des zones de BluePrints.
Cliquez-Glisser un rectangle de sélection sur les 5 blocs et clic droit et choisir Create a Commentaire From Selection.

C’est un cadre qui englobe les nodes souhaités, et quand on déplacera le bloc commentaire, tout suivra comme un groupe.
Le commentaire doit être court mais tout de même explicite pour repérer rapidement ce que l’on doit modifier.

4

Maintenant que c’est créé, il faut passer à la phase condition et exécution de la rotation

Insérer un input de valeur F pour le EntryKeyboard dans la Phase Pressed F pressé, il faut lancer une condition qui aura une valeur de résultat vrai ou faux. C’est une Branch
La condition (booléen) va amener une variable PromoteToVariable
Que l’on va nommer IsClosed on ne peut le faire que dans le panneau de gauche
Cette variable sera utilisée afin de vérifier la condition. Il faut la glisser dans le BluePrint choisir l’option Set – et le copier-coller
L’une reliée à True (la porte est fermée), l’autre à False et la variable est cochée sur closed

Ceci fait, on va déclencher l’animation de la porte
On va chercher l’action Add Timeline et relier Play avec la condition est vrai et l’option reverse de la même fenêtre si la condition est fausse.
Suivant le cas de figure, Timeline va ouvrir un nouvel onglet quand on double clic dessus pour configurer notre timeline.
Un nouvel onglet Timeline se crée, on va cliquer sur l’icône Add float Track (icone ressemblant au f de fonction et on va créer 2 points distincts sur la ligne de timeline avec Shift appuyé cliqué à 2 endroit.
Le premier point se situera à 0 en time et en value, c’est-à-dire que c’est l’état fermé donc à 0 ° d’ouverture au moment zéro (avant que l’on appuie sur F)
Le deuxième point sera placé à 2 en time (2 secondes) 100 degrés d’ouverture

On n’écrit pas degré dans les valeurs car pour UE c’est la valeur et la valeur sera spécifiée plus tard avec les actions de rotation.
Aussi la courbe est droite et trop régulière, la forte d’ouvrirai brutalement. Si l’on veut laisser un peu de suspens (lent au début et plus rapide sur la fin, il faudra ajouter la fonction Auto.
Sélectionner les 2 points sur la courbes – si vs ne voyez pas les 2, il faut recadrer en Horizontal et Vertical) et choisissez Auto ce qui va assouplir la courbe.
On peut personnaliser cette courbes grâce aux poignées de Bézier

Maintenant que l’animation est préparée, on va l’adapter à notre porte.
Appeler l’objet SM_Porte et le relier à SetRelativeRotation sur sa cible Target
L’animation RotationPorte reliera le SetRelative par son update
Chercher l’action MakeRotator
La porte doit faire une rotation sur Z et retourner la valeur pour NewRotation

On compile / on sauvegarde et on teste

Dans le BluePrint 1stPerson insérer une porte et s’approcher en appuyant sur F pour ouvrir (tester les courbes d’ouvertures). Si vous appuyez sur F pour refermer, il le fait mais avec un petit délai.
Dans mon cas elle ne se refermait pas, bien sûr on vérifie notre BP, chez moi ce qui a fonctionné, c’est d’élargir la box collision, on recompile, on enregistre et PLAY.

Pour conclure avec cette méthode, on devrait pouvoir mettre en scène de l’eau qui sort d’un robinet en s’approchant du lavabo, mais aussi un feu dans une cheminée quand cette dernière est dans le cadre de visibilité du visiteur, avec les sons qui vont avec.

 

unnamedxs (1) unnamedxs

Comments are closed.