Archives de
Auteur : Yann

Créateur de jeux vidéo / Programmeur / Hacker
Créer une caméra First Person avec Unreal Engine 4

Créer une caméra First Person avec Unreal Engine 4

C’est la rentrée alors voilà une toute nouvelle série de tutoriels consacrés à Unreal Engine 4 ! Dans ce premier tutoriel, je vous propose de créer un contrôleur en première personne (une camera FPS). Ce tutoriel part presque de zéro, il est quand même préférable d’avoir un peu d’expérience avec un autre moteur de jeu. Ce premier tutoriel sera ainsi l’occasion pour vous de vous familiariser avec l’éditeur, les Blueprint, etc... Pour le moment nous n’utiliserons pas de C++, nous ne travaillerons qu’avec l’éditeur visuel de script.

Avant de commencer : Ce tutoriel peut vous paraître peut être un peu long, mais rassurez vous, une fois que vous aurez compris comment ça fonctionne, vous pourrez refaire l’ensemble de cette page en moins de 5 minutes 😉

Création du projet

La première étape est évidement de créer un projet Blueprint vide, sans le Starter Content.

Création du projet Blueprint vide
Création du projet Blueprint vide

L’éditeur Unreal

Comme c’est notre premier tutoriel complet sur Unreal, je vais prendre le temps de vous expliquer un peu comment fonctionne l’éditeur. Evidemment si vous utilisez déjà Unity, vous verrez qu’il y a beaucoup de similitudes !

L'éditeur Unreal
L’éditeur Unreal

La zone orangée représente la barre de menu et la barre d’action. Vient ensuite la hiérarchie de votre scène en jaune. Les panneaux dans le carré bleu permettent de configurer les entités de votre scène et de régler les paramètres du monde. Unreal Editor dispose comme tout bon moteur qui se respecte, d’une sélection d’objets et d’outils pour construire votre scène. Lumières, primitives, éditeur de terrain, éditeur de maillage, etc…

Enfin, la zone en rouge représente le Content Brower (le gestionnaire d’assets), c’est là où vous glisserez vos images, modèles et sons. Les assets importées sont automatiquement copiées et converties au format .uasset, il n’est pas possible de les modifier après cette étape. Vous devez donc conserver vos assets de base sur votre disque. Maintenant que vous êtes un peu plus familiarisé avec l’éditeur, nous allons pouvoir passer à la suite, je veux bien évidemment parler du réglage des entrées utilisateur !

Clavier, Souris, Gamepad ou Touch ?

Une fois que votre projet est crée, vous ne pouvez pas encore utiliser le clavier, la souris ou le gamepad car le gestionnaire d’input est vide. Sur Unity il est pré-rempli avec Horizontal, Vertical, Fire1, etc.. Avec Unreal vous devrez le remplir manuellement pour chaque nouveau projet. A partir du menu en haut de l’éditeur, choisissez Edit / Project Settings, puis dans la liste de gauche, dans la catégorie Engine, sélectionnez Input.

ue4_tuto_input1

Vous voyez le petit plus (+) à côté de Action Mappings et Axis Mappings ? Il servent respectivement à ajouter des boutons et des axes au gestionnaire. Pour notre contrôleur à la première personne nous allons définir les noms des axes et des boutons dont nous avons besoin.

Les axes

  • MoveForward : Avancer
  • MoveRight : Aller à droite
  • Turn : Tourner sur l’axe X
  • LookUp : Regarder en haut ou en bas

Les boutons

  • Jump : Pour sauter

Evidemment vous pouvez utiliser les noms que vous voulez. Essayons d’ajouter la barre espace pour le saut. Cliquez sur le petit plus (+) de Action Mappings et nommez l’entrée Jump. Une ligne est apparue en dessous, cliquez dessus et tapez Space Bar. La première bonne nouvelles est que cette zone de recherche est très efficace car elle va s’auto-filtrer. Vous pouvez désormais aller sur Axis Mappings et faire de même pour les axes.

info-xxlAu fait, pourquoi ne pas utiliser d’axe MoveBackward et MoveLeft ? Parce que les axes sont analogiques et que leur valeur est comprise entre -1.0 et 1.0. Ainsi MoveForward permet d’aller en avant quand il vaut 1 et en arrière quand il vaut -1.

 

Donc dans le cas de MoveForward encore, on pourra dire que la touche Z est équivalent à la valeur 1 et que la touche S à -1. On change ces valeurs avec la propriété Scale, mais je vous laisse regarder la capture d’écran suivante qui devrait répondre à toutes vos interrogations !

ue4_tuto_input2

Vous voyez le petit cadenas qui se trouve sous le titre (Engine – Input) ?, il indique que le fichier qui stock les paramètres est ouvert en mode écriture, ce qui veut dire que les changements sont sauvegardés automatiquement.

Character et Game Mode : Un Duo incontournable !

Unreal Engine va mettre à votre disposition plusieurs types d’entités qui possèdent plus au moins de fonctionnalités. Certaines pourront être utilisée comme des points de spawn, d’autres comme de simple décors alors que d’autres seront des ennemis ou le joueur lui même.

Un peu de théorie

Actor : C’est l’entité de base, elle est équivalente au GameObject dans Unity. En réalité c’est un noeud vide sur la scène qui ne possède qu’un composant gérant ses transformations.

Pawn : Il hérite d’Actor, mais peut être contrôlé par un joueur et peut recevoir des événements input.

Character : C’est un Pawn amélioré qui peut marcher et sauter ! C’est ce que nous allons utiliser très prochainement !

Player Character : C’est un Character avec plus de fonctionnalités (notamment pour la gestion en réseau).

Dans le Content Browser (le gestionnaire d’assets), vous pouvez constater qu’il y a un dossier Content. Cliquez dessus et créez un dossier à l’intérieur que vous nommerez Controller. De là, dans la zone centrale du Content Browser, faites un clique droit, cela ouvrira un menu contextuel. Il faut choisir Blueprint, puis Character. Nommez le nouveau fichier : CharacterBP.

ue4_tuto_characterbp

Ce premier Blueprint sera notre joueur, et ce fichier à lui seul permettra de configurer son aspect visuel ainsi que ses fonctionnalités. Recommencez la même opération mais cette fois-ci, au lieu de choisir Character, choisissez GameMode et nommez le MyGameMode. Cet objet un peu particulier va définir les règles de votre jeu. Vous allez par exemple pouvoir définir le nombre de joueurs, si le jeu peut être mis en pause ou pas, si c’est une cinématique, le gestionnaire d’interface utilisateur, etc… Un jeu complet aura plusieurs GameMode, un qui définira le fonctionnement de vos scénes cinématiques, un pour les menus et enfin un autre pour les phases de jeu par exemple.

Avant d’aller plus loin, je vous propose de sauvegarder votre Map (l’équivalent de la Scène avec Unity), même si cette dernière est vide. On commence par créer un dossier Maps à côté du dossier Controller. Puis dans le menu File / Save As.. Enregistrez la scène dans le dossier Maps sous le nom MyMap (Original non ?).

Game Mode : La pratique

ue4_tuto_cb

Cliquez deux fois sur votre GameMode depuis le Content Browser. Vous pouvez désormais configurer votre jeu via une pléthore de paramètres. Nous n’en changerons qu’un seul aujourd’hui, celui de la classe du joueur à utiliser par défaut. A droite, dans la catégorie Classes, il faut changer la valeur de Default Player Class, par celle que vous avez créer tout à l’heure, à savoir CharacterBP. Première révélation, un Blueprint est une classe !

ue4_tuto_gamemode1

Pour ce tutoriel nous allons utiliser ce GameMode par défaut (car aujourd’hui nous n’avons qu’une seule scène et que c’est simple de faire comme ça.. et toc !). Rendez vous dans le menu Edit/ Project Settings. Dans la colonne de gauche, dans la partie Project, il faut choisir Maps & Modes. De là vous pouvez changer la valeur de Default GameMode et choisir celui que vous venez de créer, à savoir MyGameMode. Vous pouvez aussi, si vous le désirez, choisir la scène que vous avez sauvé juste avant en tant que scène principale.

ue4_tuto_gamemode2

D’ailleurs vous pouvez aller fouiller un peu dans Description pour changer le nom du jeu, lui ajouter une icône, etc… Maintenant que tout est en place, nous n’avons presque plus rien à faire.. C’est presque vrai en plus car nous n’avons qu’à créer le script visuel qui va déplacer notre joueur.

Premier pas en scripting visuel

Nous avons crée deux Blueprint tout à l’heure, ce sont des classes (comme en C++) avec des variables, des méthodes, mais au lieu d’être représenté sous forme de code, un Blueprint est représenté de manière visuel. Cela a ses avantages et ses inconvénients. Un bon paquet de fonctionnalités C++ sont accessibles via Blueprint, cela peut vous permettre par exemple de créer un jeu entier (sans gameplay complexe) sans coder une seule ligne de C++ ! Rassurez vous, vous pouvez aussi créer vos Blueprint en C++, mais ça c’est une autre histoire :-).

Commencez par ouvrir le fichier CharacterBP (qui pour rappel est le joueur) en double cliquant dessus, une fenêtre va s’ouvrir..

Fenêtre Blueprint simplifiée
Fenêtre Blueprint simplifiée

Il est possible que vous ayez cette fenêtre après avoir cliqué deux fois sur CharacterBP. Ceci est la vue simplifiée, cliquez sur Open Full Blueprint Editor (carré rouge) pour ouvrir l’éditeur complet.

Éditeur Blueprint complet
Éditeur Blueprint complet

Cet éditeur va vous permettre de faire beaucoup de choses, c’est pour ça qu’il est un peu chargé 😀 Nous allons donc le découvrir petit à petit ok ? Rappelez vous juste que cette première vue va vous servir à paramétrer la partie visuelle de votre entité en lui ajoutant par exemple des composants (Rectangle vert). Qui dit Blueprint, dit fonctions, variables non ? Et bien dans le panneau représenté par le rectangle rouge, vous pouvez définir des variables, des fonctions et des événements. Le panneau en bleu est un inspecteur, tout ce qu’il y a de plus classique. Enfin les onglets vous permettront dans changer de mode (Conception, Construction, Event). Vous remarquerez qu’il n’y a pas de caméra et pourtant si vous essayez le jeu tout de suite, vous verrez qu’une caméra est bien présente. Elle est intégrée automatiquement, il n’est pas obligatoire de la rajouter. Cependant vous pouvez le faire si vous avez des choses spécifiques à faire dessus.

Passons tout de suite au vif du sujet, le scripting visuel, avec l’onglet Event Graph ! Vous pouvez déjà commencer par supprimer les trois blocs présents devant vous (touche Supprimer). Pour poser un nouveau nœud, il suffit de faire un clic droit, de là un menu contextuel s’ouvre et vous permet de rechercher ou sélectionner la fonction requise.

Votre premier Blueprint

Avancer, reculer, droite et gauche

La première chose à faire est de récupérer l’événement MoveForward pour avancer ou reculer le joueur lorsque les touches Z/D sont appuyées, ou l’axe Y du stick droit du Gamepad est pressé. Pour cela faites un clic droit pour afficher le menu contextuel et tapez MoveForward. Vous avez deux options possibles, soit la valeur de l’axe, soit l’événement. Nous prenons l’événement (Axis Events).

ue4_bp_3

A partir de cet événement on peut très facilement dire que si l’axe à une valeur, alors il faut l’utiliser pour faire bouger le joueur. Pour cela on va utiliser un nœud AddMovementInput, avec les liaisons suivantes.

ue4_bp_4

Les graphes se lisent de gauche à droite et là il faut lire : « Lorsqu’un événement MoveForward est envoyée, il faut déplacer l’objet actuel ». Le paramètre Scale Value défini la valeur de déplacement, c’est pour cela qu’elle est reliée au paramètre Axis Value. Cependant ce n’est pas terminé car la fonction AddMovementInput est incapable de savoir dans quelle direction il faut déplacer le joueur. Pour cela on va ajouter deux nouveaux nœuds, GetControlRotation et GetForwardVector !

ue4_bp_5

On reprend.. On récupère la rotation du joueur, de là, on récupère le vecteur direction avant et on passe cette valeur à AddMovementInput via le paramètre World Direction. Maintenant vous pouvez compiler (bouton Compile), sauvegarder (bouton Save) et essayer (bouton Play). Après avoir cliqué sur la fenêtre de démo, vous pourrez avancer et reculer !

ue4_bp_6

Voilà ce que donne le graphe complet pour le mouvement avant / arrière et droite / gauche. Je vous encourage à encadrer vos graphes dans des boites commentaire et de les nommer, cela sera plus facile par la suite pour vous relire. Pour créer un commentaire, il suffit de sélectionner les nœuds que vous voulez, puis faire un clic droit dans la zone de titre d’un nœud et choisir Create Comment From Selection.

Rotation vertical et horizontal

Cette partie est encore plus simple car nous n’avons qu’à appliquer deux rotations ! Vous aller utiliser les événements Turn pour la rotation horizontal (Yaw en Anglais) et LookUp pour la rotation vertical (Pitch en Anglais). Pour appliquer une rotation on utilise un nœud AddController[Yaw|Pitch|Roll]Input, avec uniquement un paramètre Val !

ue4_bp_7

Le saut

Vous vous rappelez sans doute que nous utilisons un Blueprint dérivant de la classe Character, ce dernier possédant tout un tas de fonctions relatives au joueur. Et bien figurez vous qu’il y a une fonction Jump et StopJump.

ue4_bp_8

Facile non ? Lorsque le bouton Jump est pressé, on active la commande de saut et quand il est relâché et bien.. on arrête tout. Compilez et sauvegardez votre travail avant de tester pour valider le fonctionnement. La touche espace permet désormais de sauter !

Et voilà le travail ! J'ai pris la liberté d'ajouter quelques blocs...
Et voilà le travail ! J’ai pris la liberté d’ajouter quelques blocs…

Vous êtes prêt !

Ce tutoriel vous a permis de créer votre propre contrôleur à la première personne qui gère automatiquement les collisions et peut aussi sauter. Vous pouvez essayer de l’améliorer en ajoutant par exemple une fonction pour courir (attention AddMovementInput ne prend qu’une valeur entre -1.0 et 1.0). Si vous avez un casque de réalité virtuelle, je vous recommande de regarder le petit triangle à côté du bouton play, il y a un mode VR Preview qui vous permettra d’essayer votre jeu en VR sans rien faire (si vous utilisez OSVR, il faut activer le plugin dans le gestionnaire de plugins). Vous pouvez récupérer les sources du projet sur mon dépôt github.

Vous travaillez sur un projet ou vous voulez simplement discuter entre passionnés ? Alors n’hésitez pas à laisser un commentaire ou à directement venir sur Google+. Vous avez un projet professionnel ? Dans ce cas c’est par ici !

Alors comme ça vous voulez faire de la VR sur PC ? 1 – La configuration PC

Alors comme ça vous voulez faire de la VR sur PC ? 1 – La configuration PC

Alors ça y est ? Vous voulez vous lancer dans le monde de la réalité virtuelle sur PC ? Vous avez sans doute un tas de questions concernant les configurations PC, les casques, les contrôleurs, etc… Nous allons voir tout cela dans une petite série de billets dédiés à la réalité virtuelle sur PC. Dans cet article nous traiterons de la configuration requise et recommandée, je pense que vous aurez des surprises. Ensuite nous comparerons les solutions actuelles, à savoir OSVR HDK, Oculus Rift DK2, CV1 et HTC Vive ! Enfin, un chapitre bonus traitera des contrôleurs VR disponibles pour les utilisateurs de Rift et d’OSVR.

20160904_135003
Mon PC : Core i5 3350p, RX 480 8 Go, 8 Go DDR3

La configuration minimal d’un PC VR

Petite note avant de commencer : Cet article a été écrit le 4 septembre 2016, il est évident que d’ici 1 ou 2 ans ça ne soit plus d’actualité.

Que ce soit chez Oculus ou chez les concurrents, vous pourrez lire qu’il faut au minimum un processeur Core i5 de 4éme génération, une carte graphique GTX 970 ou une Radeon R9 390/490, de 8 Go de ram et de Windows 7 (le 10 étant conseillé) en version 64 bit. Tout ça correspond à une configuration de joueur régulier et représente un certain budget.

Parlons CPU

Est-ce que cela ne vous choque pas qu’AMD ne soit pas présent dans la liste des processeurs ? Hélas il y a moins de bons processeurs chez AMD que chez Intel, mais ça ne veut pas dire qu’on ne peut pas faire de réalité virtuelle avec un processeur AMD et ça ne veut pas dire que tous les processeurs de cette marque sont mauvais. Voici la liste des CPU recommandés :

  • FX -9590
  • FX-9370
  • FX 8370
  • FX-8350
  • FX-6350

Les CPU FX-6350  et surtout le FX-8350 sont relativement abordables. Si vous avez par exemple de la DDR3, vous pouvez très facilement vous faire une configuration carte mère + CPU à moins de 200 € !

Ce que je vous recommande

CPU Minimum
  1. AMD FX-8350 (8 x 4.0 Ghz)
  2. AMD FX-6350 (6 x 3.9 Ghz)
CPU Recommandé
  1. Intel Core i5 6400 (4 x 2.7/3.3 Ghz)
  2. AMD FX-9370 (8 x 4.4/4.7 Ghz)
CPU Confort
  1. Intel Core i7 6700 (8 x 3.4/3.9 Ghz)
  2. Intel Core i5 6600 (4 x 3.5/3.9 Ghz)

Une carte graphique haut de gamme ? Vraiment ?

Il n’y a pas de secret, un contenu en réalité virtuelle consommera plus de puissance graphique qu’un contenu flat, il vous faut donc de la puissance. Cependant on peut faire de la réalité virtuelle avec des cartes plus modestes, en modifiant les paramètres graphiques par exemple.

Sachez que vous pouvez utiliser le Rift et le Vive avec tous les GPU supportant l’API NVIDIA Gameworks VR ou AMD Liquid VR. Ainsi il est tout à fait possible d’utiliser un HTC Vive avec une GeForce GTX 750 (mais je ne vous le recommande pas). Le problème d’une carte graphique de milieu de gamme est qu’elle sera vite à genoux quand il y a beaucoup d’effets (traitement d’image en première ligne). Les GeForce GTX 960 et RX 470 s’en sortent très bien !

zwbpp2lccz79

Sur l’application Oculus Home par exemple vous aurez un message vous informant que vous n’avez pas la configuration recommandée, ce n’est absolument pas grave. Gardez simplement en tête que les contenus sont (normalement) optimisés pour une GTX 970 minimum, cependant pas mal d’entre eux fonctionnent sur une GTX 960 !

Ce que je vous recommande

GPU minimum
  1.  AMD RX 470
  2.  GeForce 960
GPU recommandé
  1. AMD RX 480 8 Go
  2. GTX 970
GPU ultra haut de gamme
  1. GTX 1080
  2. GTX 1070

Vous voilà prêt à monter votre PC !

Désormais toutes les bonnes cartes graphique doivent être dans vos mains pour monter une machine qui correspondra à vos besoin, selon votre budget. N’oubliez pas qu’il est recommandé de mettre 8 Go de ram, ça peut passer avec 4, mais ça sera nettement plus confortable avec le double. Enfin, même si cela fait encore un peu polémique aujourd’hui, je vous recommande vraiment d’installer Windows 10 (en version 64 bit évidement) car cet OS dispose de DirectX 12 et il serait fort dommage de se priver de tous les bienfaits de cette API graphique. D’un autre côté Vulkan est compatible depuis Windows 7, mais pour combien de temps ?

Si vous êtes sous Linux, pour le moment je ne vous recommande pas le matériel AMD, sauf si vous savez ce que vous faites.

 

Kinect & OSVR : Position tracking avancé et RoomScale

Kinect & OSVR : Position tracking avancé et RoomScale

Nous avons vu dans le dernier article consacré à OSVR que la solution de suivi de position (position tracking) était encore très expérimentale. Même terminée et parfaitement fonctionnelle, elle souffrira de plusieurs problèmes, à savoir par exemple

  • Un champs de vision trop petit
  • Tracking à +/- 180° difficile voir impossible
  • Obligation d’ajouter une ou plusieurs caméras supplémentaires

Dans l’état, il est impossible d’envisager créer des expériences RoomScale digne de ce nom, à cause de ces limitations. Cependant, il existe un accessoire qui pourrait bien répondre à une partie de cette problématique, je veux bien entendu parler de la caméra Kinect pour Xbox 360 et Xbox One !


Demonstration !

Sans contrôleurs

Avec un PS Move dans The Lab

Pré-requis

Voici ce dont vous avez besoin pour utiliser Kinect avec OSVR :

  • Un capteur Kinect pour Xbox 360, Windows ou Xbox One
  • [Xbox 360] Un adaptateur Kinect Xbox 360 vers PC
  • [Xbox One] Un adaptateur Kinect Xbox One vers PC
  • [Xbox 360] Le Runtime (ou le SDK) Kinect V1 pour Windows
  • [Xbox One] Le Runtime (ou le SDK) Kinect V2 pour Windows
  • Le plugin OSVR-Kinect (onglet release)
  • Le plugin OSVR-Fusion (idem)

Et celui de Kinect pour Xbox 360

Si vous avez acheté votre caméra Kinect en boite alors vous devriez avoir l’adaptateur qui va avec car il permet aussi le branchement en USB sur la Xbox 360 non slim. Si vous n’avez pas ce câble, vous pouvez vous en procurer un pour moins de 10 € !

A propos de l’adaptateur Kinect Xbox One

Malheureusement, l’adaptateur pour brancher Kinect au PC n’est pas fourni comme c’était le cas avec Kinect pour Xbox 360. Cet adaptateur est obligatoire et se trouve entre 40 et 50 €. Cependant, si vous êtes bidouilleur, vous pouvez fabriquer un câble.

Je vous recommande de placer Kinect face à vous, il faut un espace d’environ 60 cm minimum pour que le capteur puisse vous reconnaître.

  • Vous pouvez l’utiliser en étant assis ou debout
  • Kinect doit voir vos mains pour vous détecter
  • Le RoomScale à 360° est possible si Kinect déctecte vos mains…

Installation des plugins

Les deux archives que vous avez récupéré contiennent deux plugins, celui pour Kinect et un autre qui va nous servir à réaliser une fusion de capteurs ! Malheureusement les archives sont incomplètes, vous devez télécharger en plus les fichiers je_nourish_kinect.json et je_nourish_fusion.json.

Copiez ensuite les fichiers je_nourish_fusion.dll et je_nourish_kinect.dll ainsi que les fichiers json que vous venez de récupérer dans le dossier osvr-plugins-0. Voilà c’est terminé ! Généralement un plugin a un fichier de configuration au format json.

OSVR_Plugins_Dist
Vous devez utiliser je_nourish_kinect.dll/json (cette capture utilise une vielle version du plugin qui ne gérait que Kinect V2)

Utilisation avec le serveur OSVR

Avec OSVR, tout est une affaire de fichier de configuration, nous allons donc modifier le fichier osvr_server_config.json localisé dans le dossier d’installation d’OSVR. Vous pouvez soit adapter votre fichier de configuration, soit le remplacer par celui-ci.

Attention car ce fichier utilise le mode direct pour un HDK 1.3/1.4, si votre casque fonctionne en mode étendu il faut par exemple changer les deux lignes suivantes

"display": "displays/OSVR_HDK_1_3_with_mesh.json",
"renderManagerConfig": "sample-configs/renderManager.direct.landscape.json",

Et mettre plutôt (remplacez landscape par portrait suivant votre mode d’affichage)

"display": "displays/OSVR_HDK_1_3_with_mesh.json",
"renderManagerConfig": "sample-configs/renderManager.extended.landscape.json",

Vérification et tests

Vous pouvez lancer OSVRTrackerView.exe, il se trouve dans le dossier d’installation d’OSVR, il vous permettra de voir si tout fonctionne bien.

OSVR_TrackerView

Vous devez voir 3 choses, votre tête ainsi que vos deux mains. Oui vos deux mains 🙂 car le fichier de configuration du plugin Kinect expose la tête et les mains (25 points du corps peuvent être utilisés en réalité). Vous pouvez désormais lancer SteamVR et constater un réel changement dans vos déplacement !

info-xxl

Si vos les axes de position sont inversés alors il faut lancer l’utilitaire osvr_reset_yaw.exe qui se trouve comme toujours… dans le dossier d’installation d’OSVR

 

Des contrôleurs VR avec OSVR-Fusion

Le plugin je_nourish_fusion va créer un appareil virtuelle possédant une position et une rotation, il a donc besoin d’une source de position et d’une autre de rotation. Examinons le fichier de configuration de plus près :

"drivers": [{
	"plugin": "je_nourish_fusion",
	"driver": "FusionDevice",
	"params": {
		"name": "HDK_Kinect",
		"position": "/je_nourish_kinect/Kinect/semantic/body1/head",
		"orientation": "/com_osvr_Multiserver/OSVRHackerDevKitPrediction0/semantic/hmd",
		"alignInitialOrientation": false,
		"offsetFromRotationCenter": {
			"x": 0,
			"y": 0.01,
			"z": -0.05
		}
}],
"aliases": {
	"/headSpace": {
		"translate": [0.0, 0.0, 0.04141],
		"child": "/org_osvr_filter_videoimufusion/HeadFusion/semantic/fused"
	},
	"/me/head": "/je_nourish_fusion/HDK_Kinect/tracker/0"
}

Nous lui donnons la rotation du HDK et la position de la tête renvoyée par Kinect. Il en résulte un nouveau appareil, totalement virtuelle qui est ensuite utilisé à la fin (/me/head) pour la tête.

Vous avez vu plus haut que le plugin Kinect récupérait aussi les positions et les rotations des mains… En mixant ça avec par exemple… deux Wiimotes… vous pouvez créer des contrôleurs VR utilisables dans vos applications et avec SteamVR* ! L’intégration des Wiimotes dans OSVR se fait en installant, exactement comme nous l’avons fait plus haut, le plugin OSVR-Wiimote.

* 18/07/2016 Le support dans contrôleurs dans OSVR-SteamVR est actuellement en cours d’implémentation

Modification de osvr_server.json

Vous pouvez récupérer le contenu du fichier de configuration serveur ici.

Démonstration (encore!)

Gestion des input dans OSVR avec Unity

Le SDK OSVR permet d’utiliser assez facilement des contrôleurs, il suffit de glisser deux scripts sur un GameObject afin que celui-ci soit automatiquement mis à jour avec la position et la rotation du contrôleur. La gestion des boutons est cependant plus contraignante. Ouvrez un nouveau projet Unity et ajoutez y le SDK OSVR pour Unity. Pour cet exemple j’utilise le prefab VRPlayerController fourni par le SDK, mais vous pouvez utiliser votre propre prefab.

Dans un premier temps, nous allons créer un GameObject vide, parent du GameObject du joueur et nous l’appellerons Controllers.  Ce nœud est un conteneur dans lequel nous attachons deux autre GameObjects qui seront en réalité nos contrôleurs. Appelez les Controller Left et Controller Right et attachez y les scripts PositionInterface.cs, OrientationInterface.cs et ButtonInterface.cs. Enfin attachez un cube à ces GameObjects avec un scaling à 0.2. Vous devriez avoir quelque chose comme ça :

OSVR_Unity_Controllers
Il y a une petite faute de frappe sur cette capture, c’est bien /me/hands/left (hands prend un s)

Les scripts prennent en paramètre un chemin (variable path) vers la partie du corps à utiliser. Si vous reprenez le fichier de configuration du haut, vous verrez qu’en alias nous avons

  • /me/head : Votre tête qui a une position et une rotation
  • /me/hands/left : Votre main gauche (Wiimote 1)
  • /me/hands/right : Votre main droite (Wiimote 2)

Pour le bouton on utilise le chemin /me/controller/left/1. Les chemins qui définissent des parties du corps sont exprimés comme suis : /me/partie_du_corps/[droite ou gauche]. Pour les boutons c’est /me/controller/droite_ou_gauche/numéro_du_bouton.

Les deux premiers scripts sont autonomes, mais si vous voulez lire la valeur du bouton, il va falloir utiliser un script. Créez un nouveau script que vous appellerez InputHandler et attachez le sur le contrôleur de droite. Regardons ensemble son contenu :

using UnityEngine;
using OSVR.Unity;

public class InputHandler : MonoBehaviour
{
    OSVR.ClientKit.ButtonInterface _buttonInterface = null;

    void Start()
    {
        var button = GetComponent<ButtonInterface>();
        _buttonInterface = button.Interface;
        _buttonInterface.StateChanged += Interface_StateChanged;
        
    }

    // En utilisant un évenement.
    private void Interface_StateChanged(object sender, OSVR.ClientKit.TimeValue timestamp, int sensor, byte report)
    {
        Debug.LogFormat("[Event] The button 1 is {0}", _buttonInterface.GetState().Value > 0 ? "Pressed" : "Released");
    }
    
    // Dans une fonction
    void Update()
    {
        if (_buttonInterface.GetState().Value > 0)
            Debug.Log("[Update Method] The button 1 is pressed");
        else
            Debug.Log("[Update Method] The button 1 is released");
    }
}

Les choix qui ont été fait pour le module des inputs et très discutable…  On récupère l’objet OSVR.ClientKit.ButtonInterface qui dispose d’un événement, mais aussi d’une variable donnant l’état du bouton. Sachez qu’il existe un tas d’interfaces ! AnalogInterface, EyeInterface, SkeletonInterface, etc…

Et maintenant ?

Maintenant vous avez les cartes en main pour développer du contenu RoomScale avec votre casque Razer HDK. Il est aussi possible d’utiliser Kinect en tant que solution de tracking de position avec SteamVR, vous permettant si vous avez des contrôleurs compatibles de profiter d’une bonne partie de la ludothèque VR de Valve. Evidemment Kinect n’est pas LA solution, car le capteur fonctionne à 30 Hz, ce qui va occasionner une sensation de lag entre vos mouvements et ce que vous verrez dans le casque. Cela reste cependant très acceptable, surtout si vous vous limitez à des expériences n’exigent pas une rapidité exemplaire 😛

Bien démarrer avec son OSVR Hacker Development Kit

Bien démarrer avec son OSVR Hacker Development Kit

Vous venez de recevoir votre Hacker Development Kit et vous êtes perdu ? Ce billet est fait pour vous, nous allons voir ensemble tout ce qu’il faut faire pour profiter de votre casque de réalité virtuelle pour développer, et peut être même jouer. Ce tutoriel se limitera à Windows, mais vous pouvez utiliser son contenu et l’adapter pour Linux et Mac.

20160514_091058

Bien que cela soit un détail, nous allons parler de vocabulaire pour commencer. Vous tenez dans les main un HDK (Hacker Development Kit), c’est un casque produit par la société Razer. La conception du casque est le fruit du travail de la société Sensics, déjà experte dans ce domaine depuis des années. OSVR est une organisation ayant pour but de proposer de démocratiser et standardiser la réalité virtuelle, en proposant du software et du hardware open source. Ainsi vous n’avez pas entre les main un casque OSVR, mais un Razer HDK exploitant la plateforme OSVR, utilisant des logiciels issus de cette dernière pour fonctionner.

info-xxlToutes les instructions qui suivent fonctionnent avec le HDK 1.3/1.4, il est très facile de les adapter pour le HDK 2.0, il suffit généralement de remplacer 1.3 par 2.0 dans les fichiers de configuration.


Parlons du branchement

Même si le branchement peut paraître relativement simple, il faut bien garder en tête que le casque se branche sur un port USB 3 et que la prise HDMI se branche sur votre carte vidéo dédiée. Si vous avez une carte mère avec un GPU intégré, comme c’est aujourd’hui le cas sur presque tous les modèles, il ne faut pas brancher le HDK sur cette prise, mais bien sur votre carte vidéo. Brancher le HDK sur la prise HDMI de la carte fonctionnera, mais vous n’aurez pas la puissance de votre carte graphique dédiée pour l’affichage, et donc de très mauvaises performances en plus de fonctionnalités limités.

Installation des pilotes

La première chose à faire est d’installer les pilotes du casque, vous pouvez les télécharger à cette adresse. Utilisez toujours la dernière version, par exemple OSVR-HDK-Combined-Driver-Installer-1.2.7.exe ici. Une fois téléchargement terminé, il suffit de l’installer.

Installation et configuration du serveur

Le casque utilise un serveur fonctionnant avec des plugins. Par chance, il y a justement un plugin pour le HDK, mais sachez que ce serveur n’est pas limité au HDK, vous pouvez y faire fonctionner l’Oculus Rift, le HTC Vive ainsi que d’autres casques VR plus ou moins connus. Le fait d’avoir un fonctionnement via des plugins est une force, car vous pouvez si vous le désirez, créer votre plugin. OSVR met à notre disposition un site permettant de récupérer la dernière version de développement du runtime. A chaque modification dans le code, une nouvelle version sera compilée et accessible à tous.

Rendez vous sur cette page et téléchargez la version que vous voulez pour l’architecture de votre processeur. OSVR Runtime si vous ne voulez pas faire de développement C++, sinon OSVR SDK qui contient la même chose que la précédente, avec en plus les bibliothèques permettant de créer ses plugins. Personnellement je prends le SDK en 64 bit. Une fois que tout est installé, il va falloir configurer le serveur, c’est peut être la partie la moins amusante, mais n’oubliez pas que vous avez entre les mains un kit de développement, pas un casque grand publique.

Configuration du serveur

Si vous lancez le serveur maintenant vous aurez la configuration de base et suivant votre modèle de carte graphique, rien ne fonctionnera. Il va falloir le configurer pour indiquer le modèle du casque ainsi que le mode de fonctionnement.

Les modes de fonctionnement

 

red_round_warning_sign_4867N’oubliez pas de mettre à jour vos pilotes de carte graphique avant de faire cette opération. C’est assez contradictoire, mais jetez aussi un œil sur cette documentation pour déterminer quel est la meilleur version du driver pour votre carte graphique.

Le mode direct

Les cartes graphique Nvidia de milieu et haut de gamme, ainsi que les dernières cartes AMD haut de gamme, proposent une fonctionnalité très utile en réalité virtuelle, le mode direct. Le mode direct permet de dire au système d’exploitation que le casque n’est pas un écran secondaire mais bien un casque de réalité virtuelle. Le programme n’affichera donc pas le contenu sur l’écran, mais directement dans le casque, sans passer par les routines graphiques du système d’exploitation. Le principal avantage est que cette méthode est rapide et c’est justement ce dont nous avons besoin.

Les GPUs sur PC portable, les cartes Intel* et les modèles d’entrée de gamme ou dépassés ne supportent pas le mode direct. De même les drivers graphiques sous Linux et Mac ne supportent pas encore cette fonctionnalité. Rassurez vous, si votre GPU n’est pas compatible ce n’est pas trop grave car vous pouvez utiliser le mode étendu.

* Il semblerait qu’Intel travaille à l’ajout du mode direct dans ses drivers..

Le mode étendu

Le casque sera reconnu comme un écran à part entière, d’ailleurs vous pourrez le voir dans la configuration d’affichage de Windows. Le contenu sera directement mis sur l’écran concerné et le fonctionnement sera quasiment transparent pour vous. Presque car Windows vous affichera un écran de plus dans le gestionnaire d’affichage.

OSVR_Extended
L’écran numéro 2 correspond au HDK en mode portrait

En mode étendu, il n’est pas obligatoire de passer l’affichage en paysage, ce n’est d’ailleurs pas recommandé car c’est moins performant que le mode portrait. Rassurez vous encore une fois, lorsque vous afficherez du contenu, la partie software fera ce qu’il faut pour que ça fonctionne bien :-p Le contenu sera placé automatiquement sur l’écran du casque.

20160227_094747
Le HDK fonctionnant sur un PC portable en mode d’affichage étendu paysage

Choisir son mode d’affichage

OSVR_Modes

Allez dans le dossier d’installation du Runtime ou SDK et suivant la marque de votre carte graphique, cliquez sur EnableOSVRDirectMode[AMD].exe, si tout est noir dans votre casque, c’est que vous êtes en mode direct ! Sinon, si vous voyez encore votre bureau c’est que votre GPU n’est malheureusement pas compatible et vous devrez continuer avec le mode étendu.

Configuration du serveur

La configuration du serveur se trouve dans le dossier du Runtime ou du SDK, dans un fichier qui se nomme osvr_server_config.json, par défaut, ce fichier contient le minimum d’informations et nous allons le remplir avec les informations nécessaires au bon fonctionnement de votre casque. Toujours dans le dossier du Runtime ou SDK, allez dans le dossier sample-configs, et repérez les fichiers nommés osvr_server_config.HDK13[DirectMode|Extended][Landscape|Portrait].sample.json.

OSVR_ConfigFiles

Suivant le modèle de votre casque et votre mode d’affichage il faudra choisir le fichier adapté et copier son contenu (avec notepad++ en mode administrateur par exemple) dans le fichier osvr_server_config.json. Voici quelques exemples de fichiers à utiliser.

  • Mode direct : osvr_server_config.HDK13DirectMode.sample.json
  • Mode étendu portrait : osvr_server_config.HDK13ExtendedPortrait.sample.json
  • Mode étendu paysage : osvr_server_config.HDK13ExtendedLandscape.sample.json

Les plus perspicaces d’entre vous aurons remarqué qu’il existe exactement les mêmes fichiers avec le suffixe _with_mesh. Ces fichiers utilisent ce que l’on appel un Barrel Mesh pour la correction de distorsion (le noir autour de l’image dans le casque). Vous pouvez utiliser ces versions, mais j’ai noté que dans certains cas, les performances étaient moins bonnes, mais cela dépend du programme, donc c’est à vous d’essayer. Je vous recommande la version classique pour l’instant.

Mise à jour du firmware du HDK

Il est possible que le firmware de votre HDK ne soit pas à jour quand vous recevrez votre kit, il va donc falloir faire une mise à jour du firmware du casque. Vous aller avoir besoin d’installer trois choses

  1. OSVR Control : Panneau de contrôle du HDK
  2. FLIP : Un logiciel pour flasher le firmware du HDK utilisé par OSVR Control
  3. Jave Runtime : Parce que FLIP utilise Java en version 32 bit

OSVR_Control

OSVR Control permet de modifier certains paramètres sur le casque mais aussi de mettre à jour le firmware. Il faut commencer par cliquer sur le bouton Connect en haut à droite, de là nous pouvons utiliser les différents boutons de l’interface.

Le mode Side by Side (SBS) permet de passer le casque en affichage stéréoscopique. Par exemple en mode étendu ou clonage, vous pourrez voir votre bureau normalement. L’utilisation de cette option en mode direct n’a absolument aucun intérêt, cependant si un jour votre casque passe tout seul en mode SBS, il faudra lancer cet utilitaire pour repasser en mode normal. Je vous laisse découvrir les autres paramètres via la documentation.

Pour mettre à jour le casque il faut cliquer sur Update Firmware et cliquer sur suivant jusqu’à la sélection du firmware. Le dernier devrait être automatiquement sélectionné, mais vous pouvez le vérifier manuellement.

OSVR_Firmwares

Après il faut simplement valider et cliquer sur le bouton Go !

OSVR_Control_Flash

Après quelques instants, votre casque sera flashé avec la dernière version du firmware !

Mise à jour de la caméra IR

Mettre à jour le casque est une chose, mais la caméra infrarouge aura peut être une mise à jour elle aussi… Dans un premier temps vous devez télécharger Firmware update tool for HDK IR Camera, disponible à cette adresse.

OSVR_IRCameraUpdate

Le processus est relativement simple, vous devez brancher votre caméra au PC via le cordon USB (le cordon Jack n’est pas nécessaire) et lancer le programme téléchargé précédemment. Il n’y a qu’un seul bouton qui va mettre à jour la caméra si une mise à jour est disponible.

Calibration de la caméra IR

Le HDK possède plusieurs leds infrarouge sur sa façade, vous pouvez les voir avec une caméra de téléphone portable quand le casque fonctionne. Ces leds permettent à la caméra infrarouge (IR) livrée avec le kit, de faire ce que l’on appel du position tracking (suivi de position de la tête). Cette fonctionnalité est encore très expérimentalle avec le HDK, certains préfèrent la débrancher, personnellement je vous recommande de la placer au bon endroit et de bien la calibrer en attendant une mise à jour. Pour démarrer le processus il faut aller dans le dossier d’installation et lancer le serveur osvr_server.exe ainsi que l’utilitaire VideoTrackerCalibrationUtility.exe.

OSVR_CalibrationTracker

Vous devez tourner le casque dans tous les sens jusqu’à ce que tous les points passent au vert. La barre en bas vous permet de suivre la progression du processus. Une fois que tout est vert, appuyez sur la touche S et fermez l’application.

Tester le fonctionnement avec les outils et démos

Maintenant vous pouvez lancer le programme osvr_server.exe si ce n’est pas déjà fait et votre casque sera désormais fonctionnel !

Vous devriez avoir une fenêtre dans ce genre là… J’ai quelques plugins, il est donc tout à fait normal que vous n’ayez pas exactement la même chose 😉 Maintenant il faut tester votre installation, vous pouvez le faire très simplement avec le logiciel OSVRTrackerView.exe ou avec les quelques démos présentes dans le dossier d’installation.


OSVR_TrackedView

Installation du driver SteamVR

Vous pensiez qu’il fallait un HTC Vive pour utiliser l’API OpenVR ou jouer à des jeux VR sur Steam ? OpenVR permet aux développeurs de créer des drivers permettant d’ajouter la prise en charge d’autres casques. C’est le cas pour les Oculus Rift DK2 et CV1 par exemple. Dans un premier temps il faut installer Steam puis l’application SteamVR qui est disponible dans la section Outils. Ensuite nous allons installer le driver OSVR-SteamVR qui est téléchargeable ici. Rendez vous sur la page du projet, descendez un peu et téléchargez la version pour Windows.

OSVR_SteamVRGithub
Téléchargement sur la page github (dans la description)
OSVR_SteamVRDownload
Ce site permet de récupérer une nouvelle version dès qu’une modification est faite sur github !

Il est possible qu’OSVR propose un fichier d’installation automatique plus tard, mais pour le moment il faut tout faire à la main. Une fois l’archive récupérée, vous pouvez la décompresser et copier le dossier SteamVR-OSVR\lib\openvr\osvr dans C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers. De manière à ce que le dossier osvr soit à côté des dossiers lighthouse, oculus, etc.. Toujours dans ce dossier, il y a un fichier nommé drivers.cfg, il faut ajouter [osvr] en début de fichier.

[osvr]

[oculus]

[vortex]

Vous pouvez désormais lancer SteamVR et profiter du contenu disponible. Malheureusement il n’existe pas encore de contrôleurs VR officiels, vous pourrez tout de même profiter des titres se jouant assis avec un clavier ou une manette, mais pour les autres il faudrait vous procurer des contrôleurs VR compatibles. J’utilise des Razer Hydra qui sont durs à trouver et à mon avis trop chères,  mais qui permettent une utilisation correct de SteamVR en mode RoomScale. Vous pouvez aussi essayer les PS Move ou le Leap Motion, mais ces solutions sont soit encore en développement soit relativement limitées.

Développer des applications et des jeux avec OSVR

Si il y a une chose qui est sur, c’est que vous avez le choix ! Le SDK OSVR est disponible pour une large variété de moteur

  • Unity : Encore assez instable et pas évident à utiliser *
  • Unreal Engine 4 : Il est intégré au moteur, il suffit d’activer sa prise en charge dans les options
  • CryEngine : Là aussi c’est intégré au moteur
  • MonoGame : Je vous recommande plutôt de regarder du côté de Managed-OSVR

Maintenant vous avez peut être votre propre moteur ? Là encore il existe un SDK pour

  • C++ (inclus lorsque vous installez le paquet OSVR-SDK)
  • Managed-OSVR : Il est utilisé dans Unity
  • OSVR-Java

Et pourquoi pas SteamVR ?

OSVR_SteamVR_Unity

Si vous installez le driver OSVR-SteamVR vous êtes en mesure de développer directement avec l’API OpenVR ! Ajouter à ça des contrôleurs alternatifs type Razer Hydra ou PSMove et vous voilà prêt pour créer du contenu RoomScale, à condition d’avoir le tracker de position qui va bien évidemment (mais ça sera pour un prochain article ça les amis).

En résumer, en plus de pouvoir jouer à des jeux VR sur Steam, vous pouvez aussi en développer, sympa non ? Dans Unity, c’est une case à cocher, rien de plus ! Il suffit d’aller dans les paramètres du player (Player Settings) et de cocher la case Virtual reality Supported, ensuite vous n’avez plus qu’à ajouter OpenVR dans la liste et le tour est joué !

info-xxlA partir de là, la caméra principale sera automatiquement surchargée avec la position et la rotation du HDK ! Si vous voulez aller plus loin, avec l’utilisation des contrôleurs par exemple, il faudra installer le SDK SteamVR.

Le HDK EST un DevKit, mais…

Nous venons de voir comment configurer le HDK et bien que pas particulièrement compliqué, vous aurez remarqué à la taille de l’article qu’il y avait pas mal de choses à dire. Le HDK est effectivement réservé avant tout aux développeurs n’ayant pas peur de perdre du temps, à configurer le casque et chercher la meilleur configuration possible. Il n’est pas rare de mettre les mains dans le code des différents SDK pour faire avancer un peu les choses par vous même. Mais nous sommes aujourd’hui dans une phase de stabilisation et on peut espérer que cette tendance continue doucement jusqu’à la sortie effective du casque pour les consommateurs. Les plus curieux et bidouilleurs peuvent aussi l’essayer sans problème, ce n’est cependant pas un produit grand publique.

Suivre OSVR

Projets à suivre de très près

Dans tous les cas les possibilités actuelles du casque sont déjà intéressantes, vous pouvez par exemple développer avec Unity ou Unreal. Côté gaming pur, il est possible de jouer à des jeux VR sur Steam (en étant équipé pour certains) et même de profiter de la bibliothèque d’Oculus en utilisant ReVive !

Enfin, si vous cherchez quelques jeux natifs sympas à essayer, je vous propose de faire un tour sur ma page itch.io.

Vous avez des questions ? Envie d’échanger vos retours d’expérience sur la plateforme OSVR, de parler de développement ? Alors n’hésitez pas à laisser un commentaire 😉

Accélérer l’auto-complétion de Visual Studio avec l’Unreal Engine 4

Accélérer l’auto-complétion de Visual Studio avec l’Unreal Engine 4

Vous venez de démarrer un projet C++ avec l’Unreal Engine 4 sous Windows et vous trouvez que Visual Studio est lent ? Pire que ça, l’auto-complétion est très souvent indisponible ? Rassurez vous, nous allons corriger ça très rapidement !

Ouvrez votre projet Unreal et lancez Visual Studio, de là il faut aller dans les propriétés de votre projet. Dans la fenêtre « Page de Propriétés de [Nom de Votre Projet] », choisissez NMake dans la colonne de gauche. Enfin ajoutez l’option /Yu dans les options supplémentaires.

vsue4

Vous pouvez recompiler votre projet, Visual Studio est désormais beaucoup plus rapide et la complétion sera là tout le temps, même après avoir ajouté de nouveaux membres à vos classes !

Qu’est ce qui n’allait pas ? En fait Visual Studio scanne tous les headers, et dans le cas d’un projet Unreal, il y en a beaucoup ! Etant donné que certains fichiers ne bougent pas, il est préférable de les précompiler, permettant à Visual Studio de se concentrer sur l’essentiel, à savoir les fichiers modifiés. L’option Yu sert donc à précompiler les headers.

Bon code à tous 😀

 

Développer sur Gear VR avec Unity 3D – Partie 1 : Bien démarrer

Développer sur Gear VR avec Unity 3D – Partie 1 : Bien démarrer

Créer du contenu en réalité virtuelle avec Unity est aujourd’hui très facile, si vous développez sur Oculus Rift ou Gear VR, c’est une case à cocher dans les paramètres du Player. De là, la caméra principale sera automatiquement mise à jour avec les rotations et la position de la tête. Facile ! Mais dans un projet existant avec du contenu déjà existant, c’est une autre histoire. Effectivement outre l’aspect performance, qui va monopoliser à lui seul pas mal de temps, il y a effectivement plusieurs choses à savoir afin de proposer au joueur une expérience digne de ce nom.

M.A.R.S. Extraction VR sur PC
M.A.R.S. Extraction VR sur PC

Je travail actuellement sur M.A.R.S. Extraction, un jeu de tir à 6 degrés de liberté, comme Descent ou Forsaken pour les connaisseurs ! Il est actuellement disponible sur plusieurs plateformes, dont très bientôt, pour Gear VR. Il m’est arrivé tellement de choses durant le développement (et ce n’est d’ailleurs pas terminé !) qu’un retour d’expérience s’imposait afin d’en faire profiter à tout ceux qui veulent se lancer dans cette aventure. Nous allons donc parler du Gear VR et du monde merveilleux du développement mobile sur Android avec le moteur Unity 3D.

Le Gear VR c’est quoi ?

07936153-photo-gear-vr-galaxy-s6

Le Gear VR est un casque de réalité virtuelle mobile créé par Samsung et Oculus. Il y a deux grandes différences entre ce casque et un autre de type Cardboard. Le Gear VR n’est pas qu’un bout de plastique haut de gamme, il embarque des capteurs (Gyroscope, Accéléromètre et Compas). Les calculs relatifs au Head Tracking sont réalisés grâce au casque et plus grâce au téléphone, permettant d’alléger la charge CPU du mobile. Mais ce n’est pas tout, le casque dispose aussi d’un pad tactile sur la droite (très perfectible), permettant de se balader dans les menus et de valider des actions. L’utilisateur final n’est pas obligé d’avoir un gamepad et c’est un gros plus car la majorité des gens n’en ont pas.

Enfin, la partie Software est assurée par Oculus, on retrouve ainsi un dashboard VR dédié quand le téléphone est enfoncé dans le casque (et connecté via USB). L’immersion VR est impressionnante, les jeux se lancent directement depuis cet espace. Il n’est pas nécessaire d’enlever le casque pour passer d’une application à une autre, tout est parfaitement intégré. C’est d’ailleurs grâce à ce dernier point que le Gear VR est vraiment un casque VR mobile grand public !

Le point le plus bloquant est qu’il est réservé au possesseurs de Samsung Galaxy S6, S6 Edge, Note 5 et les futurs hauts de gamme de la marque. Cette fermeture permet aux développeurs de travailler sur du matériel homogène (les tailles d’écran changent juste).

Première étape : Unity

Suite à cette petite présentation, je vous propose de lancer Unity et de créer un nouveau projet 3D. Allez dans les préférences du Player File / Build Settings… / Player Settings, puis dans Other Settings afin d’y cocher la case magique Virtual Reality Supported.

othersettingsRien qu’avec cette manipulation, votre projet devient compatible avec les casques suivants

  • Samsung Gear VR
  • Oculus Rift DK2 et CV1
  • Playstation VR
  • SteamVR (bientôt)

Désormais, lorsqu’un casque VR supporté sera détecté, la caméra avec le tag Main Camera sera surchargée. Le composant Transform sera mis à jour avec les données relatives à la position et à la rotation de la tête du joueur. Cela peut poser des problèmes dans le sens où vous ne pouvez pas changer les valeurs de ce composant, vous pourrez toujours essayer, mais Unity reprendra la main. Il faudra donc créer un GameObject parent à la caméra.

Vous pouvez créer une scène basique avec un sol, et une caméra ayant le tag MainCamera (c’est le cas par défaut). Passer votre build target sur Android et vous êtes presque prêt à….

Déployer sur son téléphone

Si vous déployez votre projet sur votre téléphone maintenant, ça fonctionnera presque, d’ailleurs vous pouvez noter que quand l’application est lancée, un message indique qu’il faut placer le téléphone dans le Gear VR pour aller plus loin. Cependant, vous aurez très vite un message d’erreur vous indiquant que vous ne pouvez pas aller plus loin car cette application n’est pas valide.

Et oui les amis, afin de limiter la distribution de contenu, Oculus et Samsung ont eux une super bonne idée© : Bloquer les APK qui ne sont pas distribués depuis le store. Mais alors comment tester son travail ? Rassurez vous, il suffit d’aller sur le site d’Oculus et de générer un fichier spécifique, l’Oculus Signature File ou OSIG pour les intimes 😉

Rendez vous ici avec le numéro de série de votre téléphone, une fois entré dans le formulaire vous pourrez télécharger un fichier qui devra être placé pour tout vos projets Gear VR, dans le dossier Assets/Plugins/android/assets/.

Cependant, lorsque vous aller créer une version de production à destination de l’Oculus Store, il faudra supprimer ce fichier. A partir de maintenant vous pouvez déployer sur votre mobile, et magie, ça fonctionne !

Un mot sur le SDK Oculus Mobile

Le SDK mobile est requis pour déployer une application sur le l’Oculus Store, par chance Unity embarque déjà presque tout ce qu’il faut. Vous n’avez qu’à le télécharger et l’importer dans votre projet.

ovrsdk

Je vous rassure encore une fois, trois quart du package n’est pas nécessaire et peut être supprimé sans problème !  Voici les fichiers que j’ai conservé. D’ailleurs OVRTouchPad n’est pas nécessaire non plus (c’est une version custom dans mon projet).

Au niveau du dossier Plugins, c’est pareil, vous n’avez besoin que de libOculusMediaSurface.so, il se trouve dans Assets/Plugins/android.

Et à quoi ça sert tout ça ?

Le SDK mobile permet d’utiliser deux fonctions permettant de modifier les fréquences du CPU et du GPU. C’est très efficace pour donner un coup de boost sur les scène un peu chargées ! Evidemment, si vous en arrivez là, c’est que votre contenu affiché à l’écran est gros (c’est mon cas) et avant d’utiliser ces fonctions je vous recommande vraiment de faire de l’optimisation car augmenter les fréquences du CPU et du GPU vont faire chauffer le téléphone ce qui provoquera à la longue, une erreur de surchauffe. Gardez bien ça en tête.

// 0 est la valeur par défaut, 3 est la valeur maximum
OVRPlugin.gpuLevel = value;

// Idem
OVRPlugin.cpuLevel = value;

Pour plus d’informations sur ces deux fonctions, je vous recommande la lecture de cet article.

Les paramètres de qualité

La première chose à faire est de ne pas utiliser d’antialiasing. Oui cela fait partie des choses à à éviter sur Android.

qualitysettings

Cependant, si votre contenu n’est pas trop gros, vous pouvez passer en 2x Multi-Sampling, mais n’allez pas au delà, c’est un conseil !

De même il s’avère que le paramètre de qualité Simple soit suffisant pour garder un bon rapport entre qualité et performance. Vous pouvez descendre plus bas pour gagner un peu, mais si vous devez le faire, c’est que vous avez probablement un problème ailleurs. Utiliser une valeur plus importante que Good est une cependant une très mauvaise idée.

 Pour finir

Cette première partie est terminée, il va nous rester deux grandes choses à voir, l’optimisation des performances, que ce soit en amont avec vos assets ou dans l’éditeurs, il y a de quoi faire. Enfin nous parlerons du déploiement sur l’Oculus Store. Mais n’ayez crainte ! nous verrons tout ça prochainement, vous permettant de devenir comme votre serviteur, un véritable VR-chitect =D (Prononcé Vi Are Kitect – Architecte de la réalité virtuelle)

Unity 3D est disponible en preview pour Linux

Unity 3D est disponible en preview pour Linux

Cela faisait déjà quelques temps que des rumeurs circulaient autour d’un éventuel port de l’éditeur d’Unity pour les systèmes Linux. Après une première phase de test privé, voilà que le dit éditeur est proposé en version preview pour tout le monde. C’est une très bonne nouvelle, cependant il faut tout de même faire attention car cette version preview va servir à l’équipe chargée du port de l’éditeur de vérifier qu’il est possible de livrer une version Linux de l’éditeur en même temps que les versions Windows et Mac.

Today’s build is what we call an experimental build; future support is not yet guaranteed.

Si les retours ne sont pas concluants et si le travail nécessaire est trop important, il est possible que l’éditeur ne voient jamais le jour en version stable sur nos systèmes. N’hésitez donc pas dès aujourd’hui à tester, utiliser et surtout remonter un maximum de bugs.

Unity sous Linux avec une scène standard en 3D
Unity sous Linux avec une scène standard en 3D

Lire la suite Lire la suite

La réalité virtuelle sur mobile

La réalité virtuelle sur mobile

La réalité virtuelle est une expérience immersive très intense, et ce qui aujourd’hui n’est qu’une simple tendance, va devenir dans les mois et années qui arrivent, quelque chose d’incontournable. L’année 2015 sera riche en annonce et nouveautés dans ce domaine, c’est incontestable. Cependant cette technologie « futuriste » peut paraître éloignée, à cause de la disponibilité et du prix des solutions actuelles. Mais rassurez vous, il y a un domaine dans lequel la VR (Virtual Reality – Réalité Virtuelle) est accessible, celui de la mobilité ! Cet article sera donc dédié à la VR sur mobile car comme vous allez le voir, c’est une solution bon marché qui donne de très bons résultats.

Un Google CardboardEn 2014, Google arrive avec le Google Cardboard, un casque de réalité virtuelle en carton fonctionnant avec un Smartphone ! Typiquement une application VR va afficher deux rendus (un par œil) et utiliser le gyroscope et l’accéléromètre du téléphone pour récupérer les mouvements de la tête. L’avantage de cette solution est que ça ne coûte presque rien, vous n’avez besoin que du casque (entre 5 et 20 euros) et d’un bon smartphone. Par contre ce n’est pas pratique à utiliser car ce n’est pas confortable et il n’y a pas de sangle.. Heureusement il y a désormais de très bonnes alternatives, des casques qui ressemblent à un Oculus Rift (plastique, mouse et sangle) mais qui sont dédiés aux mobiles et donc très abordable !

Il est temps de prendre la pilule rouge et de découvrir le monde passionnant de la réalité virtuelle sur mobile.

Lire la suite Lire la suite

Retour sur un mois de Jam en novembre

Retour sur un mois de Jam en novembre

Le mois de novembre a été relativement chargé cette année, si il y a des mois où je ne fais que développer dans mon coin des prototypes plus ou moins aboutis, là ça a été vraiment différent. Tout à commencé avec la 7HFPS (Seven Hours FPS) où il fallait tenter de créer un FPS en 7 heures maximum. Puis à démarré la 7DFPS (Seven Days FPS) où là encore il était question de créer un FPS, mais en 7 jours cette fois-ci. Pour finir en beauté, j’ai participé à la PointClickJam organisée par GameJolt, qui consistait à créer un Point & Click en deux semaines, avec des règles très précises concernant l’aspect final du jeu. Dans tous les cas, la contrainte de devoir rendre un jeu avec un délai donné m’a permis d’apprendre de nouvelles choses dans le monde merveilleux (et terriblement stressant) des créateurs de jeux vidéo.  Dans tous les cas, j’ai utilisé à chaque fois des technologies variées.

Lire la suite Lire la suite

#PointClickJam : Une Game Jam dédiée aux Point and Click Old School

#PointClickJam : Une Game Jam dédiée aux Point and Click Old School

Décidément le mois de novembre est riche en Game Jam ! Après l’annonce de la #7DFPS voici la Point and Click Jam, organisée par Game Jolt. Le but est de créer en deux semaines, du 14 au 29 novembre 2014, un jeu de type Pointer et cliquer en respectant certaines règles.

samnmax_006

  • Le jeu doit être proche des productions LucastArts, Delphine, Sierra, etc…
  • Une palette de couleur spécifique doit être utilisée
  • La résolution est fixée à 320×200
  • Il est possible de travailler l’histoire maintenant mais la réalisation ne doit pas commencer avant le 14 novembre.
  • Aucune limitation technologique, vous êtes libre de faire ça avec ce que vous voulez.

Une palette de couleur

Effectivement c’est un choix qui va être déterminant dans la création graphique du titre. Le site propose plusieurs palettes de couleurs avec un nombre limité de couleurs. Par exemple si vous voulez utiliser la palette Amiga, il faudra choisir 32 couleurs parmi les 4096 couleurs disponibles.

paletteEGA

La palette EGA rappellera sans doute beaucoup de titres aux joueurs DOS, elle est limitée à 16 couleurs mais il faut avouer que même avec cette limitation, nous avions de très beaux titre sur nos ordinateurs à l’époque !

Si comme moi vous pensez participer à cette Jam alors n’hésitez pas à laisser un commentaire !