Upload
yannick-comte
View
513
Download
4
Embed Size (px)
Citation preview
Formation Unity VRParce que la VR c’est trop cool
Qui suis-je ?
Yannick Comte
- Développeur R&D Réalité Virtuelle chez Wanadev
- Développeur de jeux vidéo en Réalité Virtuelle
- Contributeur OSVR
- Auteur d’articles et de toolkit pour la Réalité Virtuelle
Me suivre
- Twitter : @CYannick
- Google+ : http://plus.google.com/+YannickComte
Rappel Unity
- Moteur 3D et 2D
- Gère le son
- Animation
- Physique
- Multiplateformes (Linux, Mac, Android, iOS, WebGL, Xbox One, etc...)
- VR : Oculus Rift (Runtime 1.3+), OpenVR (Vive, etc...)
- Scripting C#
- Extensible (plugins, code natif, etc...)
Red or Blue pill?!
Rappel sur les casques
- Oculus : Le Rift CV1 est la version actuelle grand public. L’application Oculus
Home est requise à son fonctionnement
- HTC Vive : Le Vive est née d’un partenariat entre HTC et Valve (Steam, Half
Life, etc...). La plateforme Steam est requise ainsi que l’application SteamVR.
- HDK : Née d’un partenariat entre Sensics et Razer. Il fonctionne sur la
plateforme OSVR. Razer a crée le design et produit le HDK, Sensics
s’occupe de la conception matériel et logiciel (OSVR entre autre).
OpenVR
OpenVR est l’API utilisée par le HTC Vive sur Steam. Elle est ouverte aux tiers et
gère le Rift, mais aussi les casques fonctionnant sur OSVR (via un driver externe).
- Créer des drivers pour d’autres casques (OSVR)
- Créer des drivers de contrôleurs VR (Razer Hydra, Leap Motion, PS Move)
- L’utiliser sous Windows, Linux (prochainement) et Mac (en théorie)
C’est une API universelle dont les sources sont fermées (seuls les headers sont
disponibles). Nous pouvons l’utiliser pour développer avec tous les casques du
marché.
Unity : VR Everywhere
Supporter un projet VR en quelques clics
(Oculus, OpenVR)
File / Build Settings / Player Settings / Other
Settings / Virtual reality SDKs
La caméra principale sera surchargée avec
la position et la rotation du casque !
Scripting C#
MonoBehaviour : La classe de base d’un script. Il s'attache sur un GameObject
(noeud sur la scène)
- Awake() équivalent au constructeur
- OnEnable/Disable je vous laisse deviner
- OnDestroy() Quand le script est détruit
- Start() une fois que tous les MonoBehaviour sont chargés (Awake appelé)
- Update() Mise à jour des inputs, etc..
- FixedUpdate() Mise à jour de la physique (Rigidbody)
LateUpdate() Mise à jour de la caméra
Documentation
La documentation C#
- https://docs.unity3d.com/ScriptReference/
Les tutoriels Français
- http://blog.drakulo.com/
- http://www.demonixis.net/blog
Les plugins / Outils utiles
- Demonixis.Toolbox : Scripts pour gérer les SDKs VR, l’UI, etc...
- ProBuilder : Outil de level design (Blender pour les nuls), la version gratuite
est suffisante pour commencer, la version payante coûte 100$
- InControl : Gestion des input (37.50€)
- DoTween : Animation / Séquences
Les SDKs
- Le SDK OSVR
- Le SDK OpenVR (SteamVR)
- Le SDK Oculus Rift et Gear VR
Pour une utilisation facile => Demonixis.VR
Gère automatiquement l’ajout des différents scripts sur votre prefab de joueur. Il
restera ainsi propre de tout script vendeur !
Créer un FPS (rien qu’ça)
- Créer le niveau
- Créer le contrôleur
- Tirer
- Tester
Règle numéro 1 : Forcer le déplacement du joueur peut rendre malade (motion
sickness), il ne faut pas être trop brusque, mais on s’y fait !
Règle numéro 2 : Du coup on utilise de la téléportation car c’est à la mode et ça
ne rend personne malade.
Hiérarchie du joueur
Player : GameObject (déplacement)
-> Head : GameObject
-> TrackingSpace : GameObject
-> MainCamera : Camera
-> Canvas (UI à appliquer au joueur)
-> Controllers : GameObject (conteneur des contrôleurs au cas ou)*
Cette hiérarchie est proposée par Oculus et fonctionne avec TOUT.
* Si les contrôleurs ne gère pas la position par rapport au casque, il faut les attacher au GameObject Head
L’UI : Car c’est important
Règle numéro 3 : Ne pas charger le champs de vision du joueur
- Pas de notion d’écran en VR
- Uniquement des UI World Space
- Fonctionnement des UI
- Interaction au regard avec VRGazeUI.cs https://github.com/demonixis/Unity-
toolbox/blob/master/VR/VRGazeUI.cs
- On oublie pas de s’ajouter un callback pour AddInputListener qui va valider
ou pas l’action.
La téléportation
- Ajout d’un sprite qui réagit au regards
- Utiliser ScreenFader https://github.com/demonixis/Unity-
toolbox/blob/master/Graphics/ScreenFader.cs pour faire une transition propre
var pos = target.position
pos.y = player.y;
transform.position = pos;
Règle numéro 4 : On ne modifie pas directement la rotation (pour ne pas que le
joueur perde ses repaires, mais il y a des exceptions évidemment :-) )
Fin