À l’heure où unity3D devient un incontournable en matière de réalité augmentée et réalité virtuelle, la société américaine a sorti il y a bientôt deux ans un package Linux, nous vous proposons dans cet article un tour d’horizon des possibilités qu’offre Unity sous ce système d’exploitation.
Avant d’entrer dans le vif du sujet, rappelons que passer sous Linux est avant tout une nouvelle façon de fonctionner en travaillant avec des logiciels libres et avec une gestion système axée sur les lignes de commandes. L’exercice ici consiste à intégrer différents SDK développés pour Unity avec pour objectif une compilation d’une scène test.
À noter qu’avec Blender, Unity3D, Monodevelop, Gimp ou bien encore Photoshop 7.0 (en version gratuite émulée avec Wine) vous disposez théoriquement des outils nécessaires au développement d’une application et tout cela gratuitement.
MISE EN PLACE
Pour l’installation de Unity sous Linux, il suffit de se rendre sur la page de blog Unity dédiée à Linux afin de profiter des dernières versions de la distribution Unity :
Les packages sont régulièrement mis à jour et suivent de près les mêmes versions que pour Unity Windows / Mac. Il ne reste plus qu’à espérer que les futurs packages puissent être directement téléchargeables sur le site Unity et non sur le forum dédié. Pour ma part j’ai réalisé les tests avec Ubuntu 16.04 et Unity 5.6.1.
Pour l’installation, Linux vous propose d’installer votre package avec votre gestionnaire de paquets ou bien évidemment directement en ligne de commande (si vous choisissez l’installation en ligne de commande celle-ci à l’avantage de vous installer directement toutes les dépendances.). Une fois Unity installé il ne vous reste plus qu’à le lancer pour voir si l’interface graphique apparait correctement et si Monodevelop est bien lié à Unity pour scripter votre application.
Par défaut Unity vous permet de compiler pour Linux et Windows. Vous pouvez également compiler pour Android en installant le SDK Android à cette adresse :
Le plus simple étant d’installer Android Studio pour accéder directement au SDK Manager afin de télécharger toutes les plateformes nécessaires au développement sous Android. Il ne vous reste plus qu’à lier le Android SDK dans vos préférences Unity et le tour est joué, vous pouvez alors compiler des .APK directement sous linux.
TEST DES DIFFÉRENTS SDK DU MARCHÉ
L’objectif étant de faire le tour le plus complet des possibilités Unity+Linux, nous avons par la suite testé l’intégration « from scratch » des SDK suivant Vuforia, Wikitude, ARtoolkit, Kudan, Google Tango, Google Cardboard et SteamVR.
Côté Réalité Augmentée :
- Vuforia
Après l’intégration du SDK Vuforia, il s’avère que celui-ci rencontre un problème avec les profils caméra du fichier profiles.xml. Malgré plusieurs tentatives, nous n’avons pas réussi à obtenir un build fonctionnel ni en exécutable Linux, ni sous Android. Pour suivre l’évolution de ce problème de profil, vous pouvez vous rendre à cette page.
- Wikitude
Le SDK de Wikitude, fonctionne directement après son intégration. En l’espace de quelques minutes vous pouvez compiler votre premier projet en réalité augmentée sous Android avec Linux.
- ARtoolkit
Dès l'intégration du SDK d'ARtoolkit, plusieurs erreures de DLL apparaissent, cependant il est possible de compiler l'application, mais la caméra n'est pas détectée. Concernant l'export pour Android, ARtoolkit nous indique un problème d'AndroidManifest.xml empêchant toute compilation.
- Kudan
Kudan n’est actuellement pas supporté par Linux.
- Google Tango
Le SDK de Google Tango s’intègre sans encombre dans Unity. La compilation du .APK fonctionne également sans erreurs particulières, mais au lancement de l’application, celle-ci crash automatiquement.
Côté Réalité Virtuelle :
- Google Cardboard
Le SDK du Google Cardoard fonctionne parfaitement. Une fois intégré celui-ci vous permet d’accéder aux scènes par défaut et de compiler sans encombre sous Android.
- SteamVR
Pour compiler votre première application Linux+Unity+SteamVR vous devez installer Steam sur votre machine. Il est possible que Steam ne se lance pas, pour ma part, j’ai résolu ce problème grâce à cette page.
Par la suite vous allez pouvoir intégrer votre plugin SteamVR dans Unity, cependant il est possible que celui-ci fasse crasher Unity dès l’ouverture d’une scène contenant des prefabs du plugins, ou tout simplement en intégrant ces préfabs dans une scène. Pour solutionner cette erreur, il vous suffit de déclarer une nouvelle région de compilation dans le script OpenVR comme l’explique cette page.
En conclusion, travailler avec Unity sous Linux n’est pas plus contraignant que sur un autre système d’exploitation, tant que vous restez dans des actions classiques. Vous pouvez rapidement exporter vous applications sous Linux, Windows et Android. Cependant, l’intégration des SDK annexes n’est pas toujours évidente.
Du côté de la réalité virtuelle, malgré quelques petits ajustements, vous pouvez obtenir une base stable pour développer vos applications pour des casques type cardboard ou pour HTC Vive / Oculus, ce qui est plutôt un bon point pour Linux.
Du côté de la réalité augmentée, cela se complique. Wikitude reste finalement le SDK qui s’intègre le plus facilement puisque dès votre première compilation, celle-ci se lance et trouve directement la caméra de votre smartphone. Concernant ARtoolkit, si l’on se base sur la documentation celui-ci est clairement utilisable sous Unity+Linux, cependant nous retrouvons toujours la même problématique avec ce Framework puisqu’il n’est pas très « user friendly » (et cela même avec la V6 du SDK) je n’ai donc malheureusement pas réussi à compiler une application ni pour Linux, ni pour Android. Enfin malgré plusieurs essais avec Vuforia il semble que le SDK numéro un sur le marché ne fonctionne pas sous Linux.
En résumé, il est possible d’utiliser Linux pour des projets 3D tels que des jeux vidéo ou des simples applications standalones en 2D ou en 3D. De développer également des applications en réalité virtuelle. En ce qui concerne la réalité augmentée, les compatibilités avec les frameworks sont malheureusement trop rares pour pouvoir réellement développer sereinement. Une compatibilité Vuforia ainsi qu’une meilleure facilité d’intégration d’ARtoolkit permettrait une plus grande flexibilité avec Unity et Linux.