Hololens et Unreal Engine 4: à la poursuite de la licorne ?

On lit un peu partout.. oui Unreal Engine supporte Hololens… ok, d’accord… je devrais avoir le bouzin entre les mains, mais j’ai pas encore testé. Je vous rappelle toutefois qu’on peut commencer avec l’émulateur, c’est à dire sans passer par le SDK de 3000$. J’en parle dans cet article et d’ailleurs je fais aussi une petite présentation du SDK par la même occasion. Bon, mais vous avez déjà testé vous avec Unreal Engine ?  Hololens, la licorne d’UE4 ? Car oui, en vrai, quand on cherche de l’info à ce sujet, y-a pas grand chose… Hé bien, j’ai décidé de mettre un peu le nez dans le caca et je vous dévoile tout ça dans cet article.

Pour ceux qui se demande comment ça fonctionne – je parle d’Hololens – voici une courte explication.

C’est un casque “ouvert” dans le sens où on dispose d’une sorte de visière (oui comme les casques de moto) et on peut voir le monde extérieur (en partie). Mais dans cette “visière”, il y a aussi des surfaces où l’on peut afficher de la 3D, comme sur un casque de réalité virtuelle. De fait, si on ajoute un “objet 3D”, il sera affiché au-dessus de ce qu’on voit de l’environnement.

De la réalité augmentée ? Oui, mais Microsoft préfère parler de “Réalité Mixte” et c’est vrai en quelques sortes car, d’une part, ce qu’on voit du mon de extérieur n’est pas retransmis par une caméra et un écran – on le voit directement. Et d’autre part, il existe des mécanismes assez chiadés comme l’occlusion qui permette à un objet virtuel de passer entre 2 objets réels par exemple.

Comment ça fonctionne ? Tout simplement (non c’est pas le bon terme, mais je fais exprès car je suis un brin taquin), parce que chaque pixel de l’image réelle existe en mémoire même si l’image n’est pas utilisée pour l’affichage. Et chaque pixel contient aussi un profondeur car il est vu par une caméra RGBD, c’est à dire con tenant un distance. Et grâce au mécanisme de Zbuffer, notre objet 3D aplati en 2D contient lui aussi un information de distance. Il suffit donc de choisir le pixels les plus proches pour l’affichage… c’est un simple tri/filtre ! Enfin en théorie… car en pratique je ne suis pas certain que cela fonctionne ainsi sous Hololens. En AR classique, avec une caméra monoculaire par exemple, on ne chope pas la profondeur de tous les pixels, mais seulement quelques points de “raccord” clairement identifiables. Après, il faut donc trouver des techniques pour associer des zones de pixels à ces points pour connaitre leur profondeur en Z et calculer éventuellement un masque d’occlusion permettant de faire passer un objet 3D entre 2 objets de la vidéo. Là, c’est plus compliqué. Mais, ça fonctionne plutôt bien normalement, et j’ai bien envie de tester sur Hololens…

Alors, maintenant comment on fait pour faire fonctionner ça sous UE4 ?

A priori, c’est bien intégré sous Unity ! Si on regarde la page dédiée aux developpeurs sur Microsoft, on parle d’Unity, mais pas d’Unreal Engine… Stratégie commerciale ? Pas forcément, quoi que… je vous laisse juge. Allez voir cette page. Vous pourrez conclure qu’il manque quelque chose pour que cela fonctionne avec UE4…

De nombreux développeurs se plaignent actuellement de devoir utiliser Unity à la place d’UE4… mais c’est une réalité – l’API n’a pas encore été portée sous UE4 ! On apprenait en 2015 de la bouche de Tim Sweeney, le PDG fondateur d’Epic Games, que “Microsoft put Epic Games in wave 3“. Alors qu’Unity est en 1 ou 2 (je ne sais plus). Tout ce petit monde du dev 3D pense “Inb4 ce sera bientôt intégré” ! Oui, mais ça fait 2 ans qu’on lit ça et toujours rien…

Alors, j’ai voulu en savoir un peu plus… Et je suis tombé sur un chinois (à chaque fois qu’on cherche, on tombe sur un chinois – le copain visé par cette citation se reconnaitra) – notons que c’est peut-être un japonais vu que ça ressemble plus à du Kanji, mais je n’y connais rien, alors… Bref, c’est pas important. Voici ce que j’ai trouvé !

Oui, mais le Github a disparu… Non, si c’est ce que vous trouvez, c’est parce que vous n’êtes pas dans le Hub d’Epic Games – pour plus d’infos, allez ici. Bref, c’est déjà ce qu’on trouvait sur le forum d’Epic, mais je n’y avais pas prêté attention à l’époque. En gros, c’est lié au dev sur la plateforme UWP et mieux vaut être un partner autorisé pour accéder aux docs sur le site de Microsoft. Il ya quelques temps, Microsoft avait forké UE4 pour intégrer cet export. Mais ce n’est pas une impasse si vous n’êtes pas un partner autorisé. Voici ce qu’on trouve:

On va donc télécharger le tout et rebuilder UE4 pour qu’il accepte l’export UWP. Ah oui, j’oubliais, UWP c’est pour “Universal Windows Plateform”. Je crois qu’on en a déjà parlé sur ce blog, mais sinon vous avez la doc à cette adresse. En gros, c’est une sorte de couche d’abstraction permettant à Microsoft de ne produire qu’un seul code compilé pour toutes ses plateformes (Pc, Surface, IoT, Xbox, Hololens, etc.). Donc, pour développer sous Hololens, ça passe par UWP, j’aurais pu commencer par là.

Bon, c’est pas tout, il faut aussi configurer son install de Visual Studio pour que tout cela fonctionne. Il faut supporter C++ (ça c’est par défaut si vous bossez avec UE4), mais aussi UWP:

Vous avez maintenant de bonnes bases pour démarrer l’exploration. Cela fonctionne, on peut même assister à une petite démo sur le post twitter de alwei (le Japonais – ouais, arrêtons de l’appeler le chinois… ça va finir par faire raciste).

Bref, c’est pas prêt sous UE4, mais c’est vrai qu’ils y bossent… chez Microsoft. Je suis juste inquiet concernant la technologie “logicielle” de Microsoft qui semble s’appuyer sur des tiers externes – pas forcément pro-UE4. J’aurais cru qu’ils auraient principalement bossé cet aspect, mais rien n’est moins sûr. Inquiet, parce que ce petit soucis de licence est probablement à l’origine du retard de la mise à dispo sous UE4 d’un plugin pour Hololens.

L’avenir nous dira si mes craintes sont fondées ou non. En marsd 2017, Tim Sweeney aborde un peu le sujet dans une interview, mais reste assez vague là dessus. Par contre, il perçoit bien l’intérêt pour le cinéma… “It’s a huge factor in Hollywood cinematography to mix CG objects in with the real environment and the engine has to solve all these problems.” – D’ailleurs, il ne se focalise ni sur Hololens, ni sur Magic Leap, mais parle plus généralement de projet de type “AR”, de réalité augmentée.

En tous cas, vous pouvez vous frotter au code et faire quelques essais si vous avez un casque Hololens (bon crâne pas, j’aurais le mien prochainement – professionnellement parlant j’entends), mais pas question de faire un produit commercialisable pour l’instant en utilisant UE4 et Hololens – dans tous les cas, c’est un peu prématuré. A très bientôt les loulous (et les louloutes bien évidemment) !

Ces articles pourraient aussi vous intéresser …