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

On lit un peu partout.. oui Unre­al Engine sup­porte Hololens… ok, d’ac­cord… je devrais avoir le bouzin entre les mains, mais j’ai pas encore testé. Je vous rap­pelle toute­fois qu’on peut com­mencer avec l’é­mu­la­teur, c’est à dire sans pass­er par le SDK de 3000$. J’en par­le dans cet arti­cle et d’ailleurs je fais aus­si une petite présen­ta­tion du SDK par la même occa­sion. Bon, mais vous avez déjà testé vous avec Unre­al Engine ?  Hololens, la licorne d’UE4 ? Car oui, en vrai, quand on cherche de l’in­fo à ce sujet, y‑a pas grand chose… Hé bien, j’ai décidé de met­tre un peu le nez dans le caca et je vous dévoile tout ça dans cet arti­cle.

Pour ceux qui se demande com­ment ça fonc­tionne – je par­le d’Hololens – voici une courte expli­ca­tion.

C’est un casque “ouvert” dans le sens où on dis­pose d’une sorte de visière (oui comme les casques de moto) et on peut voir le monde extérieur (en par­tie). Mais dans cette “visière”, il y a aus­si des sur­faces où l’on peut affich­er de la 3D, comme sur un casque de réal­ité virtuelle. De fait, si on ajoute un “objet 3D”, il sera affiché au-dessus de ce qu’on voit de l’en­vi­ron­nement.

De la réal­ité aug­men­tée ? Oui, mais Microsoft préfère par­ler de “Réal­ité Mixte” et c’est vrai en quelques sortes car, d’une part, ce qu’on voit du mon de extérieur n’est pas retrans­mis par une caméra et un écran – on le voit directe­ment. Et d’autre part, il existe des mécan­ismes assez chi­adés comme l’oc­clu­sion qui per­me­tte à un objet virtuel de pass­er entre 2 objets réels par exem­ple.

Com­ment ça fonc­tionne ? Tout sim­ple­ment (non c’est pas le bon terme, mais je fais exprès car je suis un brin taquin), parce que chaque pix­el de l’im­age réelle existe en mémoire même si l’im­age n’est pas util­isée pour l’af­fichage. Et chaque pix­el con­tient aus­si un pro­fondeur car il est vu par une caméra RGBD, c’est à dire con ten­ant un dis­tance. Et grâce au mécan­isme de Zbuffer, notre objet 3D aplati en 2D con­tient lui aus­si un infor­ma­tion de dis­tance. Il suf­fit donc de choisir le pix­els les plus proches pour l’af­fichage… c’est un sim­ple tri/filtre ! Enfin en théorie… car en pra­tique je ne suis pas cer­tain que cela fonc­tionne ain­si sous Hololens. En AR clas­sique, avec une caméra monoc­u­laire par exem­ple, on ne chope pas la pro­fondeur de tous les pix­els, mais seule­ment quelques points de “rac­cord” claire­ment iden­ti­fi­ables. Après, il faut donc trou­ver des tech­niques pour associ­er des zones de pix­els à ces points pour con­naitre leur pro­fondeur en Z et cal­culer éventuelle­ment un masque d’oc­clu­sion per­me­t­tant de faire pass­er un objet 3D entre 2 objets de la vidéo. Là, c’est plus com­pliqué. Mais, ça fonc­tionne plutôt bien nor­male­ment, et j’ai bien envie de tester sur Hololens…

Alors, main­tenant com­ment on fait pour faire fonc­tion­ner ça sous UE4 ?

A pri­ori, c’est bien inté­gré sous Uni­ty ! Si on regarde la page dédiée aux devel­oppeurs sur Microsoft, on par­le d’U­ni­ty, mais pas d’Un­re­al Engine… Stratégie com­mer­ciale ? Pas for­cé­ment, quoi que… je vous laisse juge. Allez voir cette page. Vous pour­rez con­clure qu’il manque quelque chose pour que cela fonc­tionne avec UE4

De nom­breux développeurs se plaig­nent actuelle­ment de devoir utilis­er Uni­ty à la place d’UE4… mais c’est une réal­ité – l’API n’a pas encore été portée sous UE4 ! On appre­nait en 2015 de la bouche de Tim Sweeney, le PDG fon­da­teur d’Epic Games, que “Microsoft put Epic Games in wave 3″. Alors qu’U­ni­ty est en 1 ou 2 (je ne sais plus). Tout ce petit monde du dev 3D pense “Inb4 ce sera bien­tôt inté­gré” ! Oui, mais ça fait 2 ans qu’on lit ça et tou­jours rien…

Alors, j’ai voulu en savoir un peu plus… Et je suis tombé sur un chi­nois (à chaque fois qu’on cherche, on tombe sur un chi­nois – le copain visé par cette cita­tion se recon­naitra) – notons que c’est peut-être un japon­ais vu que ça ressem­ble plus à du Kan­ji, mais je n’y con­nais rien, alors… Bref, c’est pas impor­tant. Voici ce que j’ai trou­vé !

Oui, mais le Github a dis­paru… Non, si c’est ce que vous trou­vez, c’est parce que vous n’êtes pas dans le Hub d’Epic Games – pour plus d’in­fos, allez ici. Bref, c’est déjà ce qu’on trou­vait sur le forum d’Epic, mais je n’y avais pas prêté atten­tion à l’époque. En gros, c’est lié au dev sur la plate­forme UWP et mieux vaut être un part­ner autorisé pour accéder aux docs sur le site de Microsoft. Il ya quelques temps, Microsoft avait forké UE4 pour inté­gr­er cet export. Mais ce n’est pas une impasse si vous n’êtes pas un part­ner autorisé. Voici ce qu’on trou­ve:

On va donc télécharg­er le tout et rebuilder UE4 pour qu’il accepte l’ex­port UWP. Ah oui, j’ou­bli­ais, UWP c’est pour “Uni­ver­sal Win­dows Plate­form”. Je crois qu’on en a déjà par­lé sur ce blog, mais sinon vous avez la doc à cette adresse. En gros, c’est une sorte de couche d’ab­strac­tion per­me­t­tant à Microsoft de ne pro­duire qu’un seul code com­pilé pour toutes ses plate­formes (Pc, Sur­face, IoT, Xbox, Hololens, etc.). Donc, pour dévelop­per sous Hololens, ça passe par UWP, j’au­rais pu com­mencer par là.

Bon, c’est pas tout, il faut aus­si con­fig­ur­er son install de Visu­al Stu­dio pour que tout cela fonc­tionne. Il faut sup­port­er C++ (ça c’est par défaut si vous bossez avec UE4), mais aus­si UWP:

Vous avez main­tenant de bonnes bases pour démar­rer l’ex­plo­ration. Cela fonc­tionne, on peut même assis­ter à une petite démo sur le post twit­ter de alwei (le Japon­ais — ouais, arrê­tons de l’ap­pel­er le chi­nois… ç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 inqui­et con­cer­nant la tech­nolo­gie “logi­cielle” de Microsoft qui sem­ble s’ap­puy­er sur des tiers externes — pas for­cé­ment pro-UE4. J’au­rais cru qu’ils auraient prin­ci­pale­ment bossé cet aspect, mais rien n’est moins sûr. Inqui­et, parce que ce petit soucis de licence est prob­a­ble­ment à l’o­rig­ine du retard de la mise à dis­po sous UE4 d’un plu­g­in pour Hololens.

L’avenir nous dira si mes craintes sont fondées ou non. En marsd 2017, Tim Sweeney abor­de un peu le sujet dans une inter­view, mais reste assez vague là dessus. Par con­tre, il perçoit bien l’in­térêt pour le ciné­ma… “It’s a huge fac­tor in Hol­ly­wood cin­e­matog­ra­phy to mix CG objects in with the real envi­ron­ment and the engine has to solve all these prob­lems.” — D’ailleurs, il ne se focalise ni sur Hololens, ni sur Mag­ic Leap, mais par­le plus générale­ment de pro­jet de type “AR”, de réal­ité aug­men­tée.

En tous cas, vous pou­vez vous frot­ter au code et faire quelques essais si vous avez un casque Hololens (bon crâne pas, j’au­rais le mien prochaine­ment – pro­fes­sion­nelle­ment par­lant j’entends), mais pas ques­tion de faire un pro­duit com­mer­cial­is­able pour l’in­stant en util­isant UE4 et Hololens – dans tous les cas, c’est un peu pré­maturé. A très bien­tôt les loulous (et les louloutes bien évidem­ment) !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.