Formation Unity 3D Réalité Virtuelle

Preview:

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

Recommended