Fermer

novembre 7, 2018

Comment construire un modèle de réalité virtuelle avec une prévisualisation interpériphériques en temps réel


À propos de l'auteur

Doctorat en intelligence artificielle chez UC Berkeley, axé sur les petits réseaux de neurones en perception, pour véhicules autonomes. Grand amateur de cheesecake, corgis, et…
Pour en savoir plus sur Alvin

Dans ce didacticiel, nous allons programmer des objets en trois dimensions et leur ajouter des interactions simples. En outre, vous pouvez apprendre à créer un système de transmission de messages simple entre clients et serveurs.

La réalité virtuelle (VR) est une expérience basée sur un environnement généré par ordinateur. un certain nombre de produits de réalité virtuelle font les manchettes et sa gamme d'applications est très large: pour les Jeux olympiques d'hiver, l'équipe américaine a utilisé la réalité virtuelle pour l'entraînement sportif; les chirurgiens expérimentent la réalité virtuelle pour une formation médicale; et le plus souvent, la réalité virtuelle est appliquée aux jeux.

Nous nous concentrerons sur la dernière catégorie d'applications et nous nous concentrerons plus particulièrement sur les jeux d'aventure point-and-click . De tels jeux sont une classe de jeux occasionnels; l'objectif est de pointer et de cliquer sur les objets de la scène pour terminer un mini-jeu. Dans ce tutoriel, nous allons construire une version simple d'un tel jeu mais en réalité virtuelle. Ceci sert d'introduction à la programmation en trois dimensions et constitue un guide de démarrage autonome pour le déploiement d'un modèle de réalité virtuelle sur le Web. Vous construirez avec webVR, un framework offrant un double avantage: les utilisateurs peuvent jouer à votre jeu en réalité virtuelle et les utilisateurs sans casque VR peuvent toujours jouer à votre jeu sur un téléphone ou un ordinateur de bureau.

Developing For Real Reality

développeur peut créer du contenu pour VR de nos jours. Pour mieux comprendre le développement de la réalité virtuelle, un projet de démonstration peut vous aider. Lire l'article →

Dans la seconde moitié de ce didacticiel, vous allez ensuite créer un «miroir» pour votre bureau. Cela signifie que tous les mouvements effectués par le lecteur sur un appareil mobile seront reflétés dans un aperçu du bureau. Cela vous permet de voir ce que le joueur voit, de vous guider, d’enregistrer le jeu ou tout simplement de divertir les invités.

Prérequis

Pour commencer, vous aurez besoin des éléments suivants. Pour la seconde moitié de ce tutoriel, vous aurez besoin d’un Mac OSX. Alors que le code peut s’appliquer à n’importe quelle plate-forme, les instructions d’installation des dépendances ci-dessous s’appliquent à Mac.

  • Accès Internet, plus précisément à glitch.com ;
  • Un casque à réalité virtuelle (facultatif, recommandé). J'utilise Google Cardboard, qui est proposé à 15 dollars pièce.

Étape 1: Configuration d'un modèle de réalité virtuelle (VR)

Dans cette étape, nous mettra en place un site Web avec une seule page HTML statique. Cela nous permet de coder depuis votre bureau et de les déployer automatiquement sur le Web. Le site Web déployé peut ensuite être chargé sur votre téléphone portable et placé dans un casque VR. Le site Web déployé peut également être chargé par un casque VR autonome. Commencez par naviguer vers glitch.com . Ensuite,

  1. Cliquez sur “Nouveau projet” en haut à droite.
  2. Cliquez sur “hello-express” dans la liste déroulante.

 Commencez par naviguer sur glitch.com
( Grand aperçu )

Cliquez ensuite sur views / index.html dans la barre latérale gauche. Nous nous référerons à cela comme à votre "éditeur".


 La prochaine étape consisterait à cliquer sur views / index.html dans la barre latérale gauche, ce qui sera appelé votre "éditeur".
( Grand aperçu )

Pour avoir un aperçu de la page Web, cliquez sur “Aperçu” en haut à gauche. Nous allons parler de cela comme votre preview . Notez que toute modification apportée à votre éditeur sera automatiquement reflétée dans cet aperçu, à l'exception des bogues ou des navigateurs non pris en charge.


 Pour prévisualiser la page Web, cliquez sur "Aperçu" en haut à gauche. Nous nous référerons à cela comme votre aperçu. Notez que toute modification apportée à votre éditeur apparaîtra automatiquement dans cet aperçu, à l'exception des bogues ou des navigateurs non pris en charge.
( Grand aperçu )

Dans votre éditeur, remplacez le code HTML actuel par le standard suivant pour un modèle VR.



    
  
    
      
      
      
      
      
      
        
      
      
        
      
      
    
  

Naviguez comme suit:


 Lorsque vous revenez à votre aperçu, vous verrez les couleurs bleu et marron du fond de travail. 19659019] (<a href= Grand aperçu
)

Pour avoir un aperçu de cela sur votre casque VR, utilisez l'URL dans l'omnibar. Dans l'image ci-dessus, l'URL est https://point-and-click-vr-game.glitch.me/ . Votre environnement de travail est maintenant configuré. n'hésitez pas à partager cette URL avec votre famille et vos amis. Dans l'étape suivante, vous allez créer un modèle de réalité virtuelle.

Étape 2: Construire un modèle d'arbre

Vous allez maintenant créer un arbre à l'aide des primitives de aframe.io . Ce sont des objets standard qu'Aframe a préprogrammés pour en faciliter l'utilisation. Plus précisément, Aframe désigne les objets sous le nom d'entités . Notre discussion est organisée autour de trois concepts, liés à toutes les entités:

  1. Géométrie et matériau,
  2. Axes de transformation,
  3. Transformations relatives.

Premièrement, géométrie et ] matériau sont deux blocs de construction de tous les objets tridimensionnels du code. La géométrie définit la «forme» – un cube, une sphère, une pyramide, etc. Le matériau définit les propriétés statiques de la forme, telles que la couleur, la réflectivité, la rugosité.

Aframe simplifie ce concept pour nous en définissant des primitives, telles que et beaucoup d'autres pour établir une spécification. d'une géométrie et de son matériau plus simple. Commencez par définir une sphère verte. Ajoutez ce qui suit à la ligne 19 de votre code, juste après :


      
        
      

Deuxièmement, il y a trois axes pour transformer notre objet. L'axe x s'étend horizontalement, où les valeurs x augmentent lorsque vous vous déplacez à droite. L'axe y s'étend verticalement, où les valeurs de y augmentent à mesure que nous montons. L’axe z s’écoule en dehors de votre écran, où les valeurs z augmentent à mesure que nous nous déplaçons vers vous. Nous pouvons traduire, faire pivoter ou mettre à l'échelle des entités le long de ces trois axes.

Par exemple, pour traduire un objet «à droite», nous augmentons sa valeur x. Pour faire tourner un objet comme un sommet, nous le faisons pivoter le long de l’axe des y. Modifiez la ligne 19 pour déplacer la sphère vers le haut – cela signifie que vous devez augmenter la valeur y de la sphère. Notez que toutes les transformations sont spécifiées comme ce qui signifie que pour augmenter sa valeur y, vous devez augmenter la deuxième valeur. Par défaut, tous les objets sont situés aux positions 0, 0, 0. Ajoutez la spécification de position ci-dessous


      
       
      

Troisièmement, toutes les transformations sont relatives par rapport à la propriété parent. Pour ajouter un tronc à votre arbre, ajoutez un cylindre à l'intérieur de la sphère ci-dessus. Cela garantit que la position de votre coffre est relative à celle de la sphère. En substance, cela maintient votre arbre ensemble comme une seule unité. Ajoutez l'entité entre les balises et .


      
         
      

Pour créer ces barebones sans arbres, ajoutez davantage de feuillage, sous la forme de deux autres sphères vertes.


      
        
         
         
      

Revenez à votre aperçu, et vous L'arbre suivant apparaît:


 Lorsque vous revenez à votre aperçu, vous pourrez maintenant voir un arbre vert placé dans votre arrière-plan.
( Grand aperçu )

Rechargez l'aperçu du site Web sur votre casque VR et vérifiez votre nouvel arbre. Dans la section suivante, nous allons rendre cet arbre interactif.

Étape 3: Ajouter l'interaction d'un clic au modèle

Pour rendre une entité interactive, vous devez:

  • Ajouter une animation,
  • Obtenir cette animation trigger on click

Comme l'utilisateur final utilise un casque de réalité virtuelle, cliquer équivaut à regarder: c'est-à-dire regarder un objet pour qu'il clique dessus. Pour effectuer ces modifications, vous commencerez par le curseur. Redéfinissez la caméra en remplaçant la ligne 13 par la suivante:


  
    
  

La procédure ci-dessus ajoute un curseur pouvant déclencher l'action de clic. Notez les objets : .clickable . Cela signifie que tous les objets avec la classe «cliquable» déclencheront l'animation et recevront une commande «clic» le cas échéant. Vous ajouterez également une animation au curseur de clic afin que les utilisateurs sachent quand le curseur déclenche un clic. Ici, le curseur se rétrécit lentement lorsqu'il pointe sur un objet cliquable, s'accrochant après une seconde pour indiquer qu'un objet a été cliqué. Remplacez le commentaire par le code suivant:


Déplacez l'arborescence vers la droite de 2 unités et ajoutez la classe «cliquable» à l'arborescence, en modifiant la ligne 29 pour correspondre à ce qui suit:


Vous allez ensuite:

  • Spécifiez une animation,
  • Déclenchez l'animation en un clic.

En raison de l'entité d'animation facile à utiliser d'Aframe, les deux étapes peuvent être effectuées en succession rapide.

Ajouter une balise sur ligne 33, juste après la balise mais avant la fin de la .


Les propriétés ci-dessus spécifient un certain nombre de configurations pour l'animation. L'animation:

  • est déclenchée par l'événement click
  • Modifie la position de l'arbre
  • Commence à partir de la position d'origine 2 0.75 0
  • ] Se termine dans 2.2 0.75 0 (déplacement de 0,2 unités vers la droite)
  • Anime les déplacements aller-retour à destination
  • Animation alternative pour vous rendre à la destination et en revenir
  • Répète cette animation une fois . Cela signifie que l'objet s'anime au total deux fois – une fois vers la destination et une fois vers la position d'origine.

Enfin, accédez à votre aperçu et faites glisser le curseur vers votre arborescence. Une fois que le cercle noir repose sur l'arbre, l'arbre se déplacera à droite et à l'arrière.

 Une fois que le cercle noir reposera sur l'arbre, l'arbre se déplacera à droite et à l'arrière.
Grand aperçu [194519659020] Ceci conclut les bases nécessaires à la création d'un jeu d'aventure pointer-cliquer, en réalité virtuelle. Pour afficher et jouer à une version plus complète de ce jeu, reportez-vous à la courte scène suivante . La mission consiste à ouvrir la porte et à cacher l’arbre derrière la porte en cliquant sur divers objets de la scène.


 La mission consiste à ouvrir la porte et à masquer l’arbre derrière la porte en cliquant sur divers objets de la scène. .
( Grand aperçu )

Ensuite, nous avons configuré un serveur nodeJS simple pour servir notre démonstration statique.

Étape 4: Configuration du serveur NodeJS

Dans cette étape, nous allons configurer un serveur nodeJS fonctionnel de base qui sert votre modèle de réalité virtuelle existant. . Dans la barre latérale gauche de votre éditeur, sélectionnez package.json .

Commencez par supprimer les lignes 2 à 4.

 "// 1": "décrit votre application et ses dépendances",
"// 2": "https://docs.npmjs.com/files/package.json",
"// 3": "la mise à jour de ce fichier va télécharger et mettre à jour vos paquets",

Remplacez le nom par mirrorvr .

 {
  "name": "mirrorvr", // change moi
  "version": "0.0.1",
  ...

Sous dépendances ajoutez socket.io .

 "dépendances": {
  "express": "^ 4.16.3",
  "socketio": "^ 1.0.0",
},

Mettez à jour l'URL du référentiel pour qu'elle corresponde à votre problème actuel. L'exemple de projet Glitch s'appelle de jeu de point-et-clic-vr . Remplacez-le par le nom de votre projet glitch.

 "référentiel": {
  "url": "https://glitch.com/edit/#!/point-and-click-vr-game"
},

Enfin, remplacez la balise "pépin" par "vr" .

 "mots clés": [
  "node",
  "vr",  // change me
  "express"
]

Vérifiez que votre package.json correspond maintenant à ce qui suit:

 {
  "name": "mirrorvr",
  "version": "0.0.1",
  "description": "Modèles de réalité virtuelle miroir",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dépendances": {
    "express": "^ 4.16.3",
    "socketio": "^ 1.0.0"
  },
  "moteurs": {
    "noeud": "8.x"
  },
  "référentiel": {
    "url": "https://glitch.com/edit/#!/point-and-click-vr-game"
  },
  "licence": "MIT",
  "keywords": [
    "node",
    "vr",
    "express"
  ]
}

Vérifiez deux fois que votre code des parties précédentes correspond aux éléments suivants, dans views / index.html .

  

  
         
  
    
      
      
       
      
      
      
        
             
        
      
        
      
       
        
      
      
         
         
         
         
      
      
    
  

Modifiez le serveur existant.js .

Commencez par importer plusieurs utilitaires NodeJS.

  • Express
    Il s'agit du framework Web que nous utiliserons pour exécuter le serveur. 19659012] http
    Ceci nous permet de lancer un démon écoutant les activités sur différents ports.
  • socket.io
    L'implémentation de sockets nous permettant de communiquer entre le côté client et le serveur. en temps quasi réel.

Lors de l’importation de ces utilitaires, nous initialisons également l’application ExpressJS. Notez que les deux premières lignes sont déjà écrites pour vous.

 var express = require ('express');
var app = express ();

/ * commence un nouveau code * /
var http = require ('http'). Server (app);
var io = require ('socket.io') (http);
/ * fin du nouveau code * /

// nous vous avons démarré avec Express,

Les utilitaires étant chargés, le serveur fourni demande ensuite au serveur de renvoyer index.html comme page d'accueil. Notez qu'il n'y a pas de nouveau code écrit ci-dessous; c'est simplement une explication du code source existant.

 // http://expressjs.com/fr/starter/basic-routing.html
app.get ('/', fonction (demande, réponse) {
  response.sendFile (__ dirname + '/views/index.html');
});

Enfin, le code source existant indique à l'application de lier et d'écouter un port, qui est 3000 par défaut, sauf indication contraire.

 // écoute les demandes :)
var listener = app.listen (process.env.PORT, function () {
  console.log ('Votre application écoute sur le port' + listener.address (). port);
});

Une fois le montage terminé, Glitch recharge automatiquement le serveur. Cliquez sur "Afficher" en haut à gauche pour prévisualiser votre application.

Votre application Web est maintenant opérationnelle. Nous enverrons ensuite des messages du client au serveur.

Étape 5: Envoi d'informations du client au serveur

Au cours de cette étape, nous allons utiliser le client pour initialiser une connexion avec le serveur. Le client informera en outre le serveur s'il s'agit d'un téléphone ou d'un ordinateur de bureau. Pour commencer, importez le fichier Javascript bientôt existant dans votre views / index.html .

Après la ligne 4, ajoutez un nouveau script.

   

À la ligne 14, ajoutez le récepteur de la caméra à la liste des propriétés de l'entité caméra.


     ...

Ensuite, accédez à public / client.js dans la barre latérale gauche. Supprimer tout le code Javascript dans ce fichier. Ensuite, définissez une fonction utilitaire qui vérifie si le client est un périphérique mobile.

 / **
 * Vérifiez si le client est sur le mobile
 * /
fonction mobilecheck () {
  var check = false;
  (fonction (a) {if (/ (android | bb  d + | meego). + mobile | avantgo | bada  / | blackberry | blazer | compal | elaine | fennec | hiptop | iemobile | ip (hone | od) | iris | kindle | lge | maemo | midp | mmp | mobile. + firefox | netfront | opera m (ob | in) i | palm (os)? | téléphone | p (ixi | re)  / | plucker | pocket | psp | série (4 | 6) 0 | symbian | treo | up . (navigateur | lien) | vodafone | wap | windows ce | xda | xiino / i.test (a) || / 1207 | 6310 | 6590 | 3gso | 4thp | 50 [1-6] i | 770s | 802s | a wa | abac | ac (er | oo | s  -) ​​| ai (ko | rn) | al (av | ca | co) | amoi | an (ex | ny | yw) | aptu | ar (ch | go) | as (te | us) | attw | au (di |  -m | r | s) | avan | be (ck | ll | nq) | bi (lb | rd) | bl (ac | az) | br (e | v) w | bumb | bw  - (n | u) | c55  / | capi | ccwa | cdm  - | cellule | chtm | cldc | cmd  - | co (mp | nd) | craw | da (it | ll | ng) | dbte | dc  -s | devi | dica | dmob | do (c | p) o | ds (12 |  -d) | el (49 | ai) | em (l2 | ul) | er (ic | k0) | esl8 | ez ([4-7] 0 | os | wa | ze) | fetc | fly ( - | _) | g1 u | g560 | gene | gf  -5 | g  -mo | go (. w | od) | gr (ad | un) | haie | hcit | hd  - (m | p | t) | hei  - | hi ( pt | ta) | hp (i | ip) | hs  -c | ht (c ( - | | _ | a | g | p | s | t) | tp) | hu (aw | tc) | i  - (20 | go | ma) | i230 | iac (|  - |  /) | ibro | idea | ig01 | ikom | im1k | inno | ipaq | iris | ja (t | v) a | jbro | jemu | jigs | kddi | keji | kgt (|  /) | klon | kpt | kwc  - | kyo (c | k) | le (no | xi) | lg (g |  / (k | l | u) | 50 | 54 |  - [a-w]) | libw | lynx | m1  -w | m3ga | m50  / | ma (te | ui | xo) | mc (01 | 21 | ca) | m  -cr | me (rc | ri) | mi (o8 | oa | ts) | mmef | mo (01 | 02 | bi | de | do | t ( - | | o | v) | zz) | mt (50 | p1 | v) | mwbp | mywa | n10 [0-2] | n20 [2-3] | n30 (0 | 2) | n50 (0 | 2 | 5) | n7 ( 0 (0 | 1) | 10) | ne ((c | m)  - | sur | tf | wf | wg | wt) | nok (6 | i) | nzph | o2im | op (ti | wv) | oran | owg1 | p800 | pan (a | d | t) | pdxg | pg (13 |  - ([1-8] | c)) | phil | pire | pl (ay | uc) | pn  -2 | po (ck | rt | se) | prox | psio | pt  -g | qa  -a | qc (07 | 12 | 21 | 32 | 60 |  - [2-7] | i  -) ​​| qtek | r380 | r600 | raks | rim9 | ro (ve | zo) | s55  / | sa (ge | ma | mm | ms | ny | va) | sc (01 | h  - | oo | p  -) ​​| sdk  / | se ( c ( - | 0 | 1) | 47 | mc | nd | ri) | sgh  - | shar | sie ( - | m) | sk  -0 | sl (45 | id) | sm (al | ar | b3 | it | t5) | so (ft | ny) | sp (01 | h  - | v  - | v) | sy (01 | mb) | t2 (18 | 50) | t6 (00 | 10 | 10 | 10 | 18) | ta (gt | lk) | tcl  - | tdg  - | tel (i | m) | tim  - | t  -mo | à (pl | sh) | ts (70 | m  - | m3 | m5) | tx  -9 | up (. b | g1 | si) | utst | v400 | v750 | veri | vi (rg | te) | vk (40 | 5 [0-3] |  -v) | vm40 | voda | vulc | vx (52 | 53 | 60 | 61 | 70 | 80 | 81 | 83 | 85 | 98) | w3c ( - |) | webc | whit | wi (g | nc | nw) | wmlb | wonu | x700 | yas  - | votre | zeto | zte  - / i.test (a.substr (0,4))) check = true;}) (navigator.userAgent || navigator.vendor || window.opera )
  chèque de retour;
};

Nous allons ensuite définir une série de messages initiaux à échanger avec le côté serveur. Définissez un nouvel objet socket.io pour représenter la connexion du client au serveur. Une fois le socket connecté, enregistrez un message sur la console.

 var socket = io ();

socket.on ('connect', function () {
  console.log ('* Connexion établie');
});

Vérifiez si l'appareil est mobile et envoyez les informations correspondantes au serveur à l'aide de la fonction emit .

 if (mobilecheck ()) {
  socket.emit ('newHost');
} autre {
  socket.emit ('newMirror');
}

Ceci termine l’envoi du message par le client. Maintenant, modifiez le code du serveur pour recevoir ce message et réagir en conséquence. Ouvrez le fichier server server.js .

Gérez les nouvelles connexions et écoutez immédiatement le type de client. À la fin du fichier, ajoutez le texte suivant:

 / **
 * Gérer les interactions de socket
 * /

io.on ('connexion', fonction (socket) {

  socket.on ('newMirror', function () {
    console.log ("* Le participant est enregistré comme" miroir "")
  });

  socket.on ('newHost', function () {
    console.log ("* Participant enregistré en tant qu '" hôte "");
  });
});

Encore une fois, prévisualisez l'application en cliquant sur «Afficher» en haut à gauche. Chargez cette même URL sur votre appareil mobile. Dans votre terminal, vous verrez ce qui suit:

 à l’écoute sur *: 3000
 * Participant enregistré en tant qu'hôte
 * Participant enregistré comme "miroir"

Il s'agit du premier système de transmission de messages simple, dans lequel notre client renvoie des informations au serveur. Quittez le processus NodeJS en cours d'exécution. Pour la dernière partie de cette étape, le client enverra les informations de la caméra au serveur. Ouvrir public / client.js .

À la toute fin du fichier, inclure les éléments suivants:

 var camera;
si (mobilecheck ()) {
  AFRAME.registerComponent ('camera-listener', {
    tick: function () {
      camera = this.el.sceneEl.camera.el;
      var position = camera.getAttribute ('position');
      var rotation = camera.getAttribute ('rotation');
      socket.emit ('onMove', {
        "position": position,
        "rotation": rotation
      });
    }
  });
}

Enregistrez et fermez. Ouvrez le fichier de votre serveur server.js pour écouter cet événement onMove .

Ajoutez ce qui suit dans le newHost de votre code de socket.

 ] socket.on ('newHost', function () {
    console.log ("* Participant enregistré en tant qu '" hôte "");
    / * commence un nouveau code * /
    socket.on ('onMove', fonction (données) {
      console.log (données);
    });
    / * fin du nouveau code * /
  });

Encore une fois, chargez l'aperçu sur votre bureau et sur votre appareil mobile. Une fois qu'un client mobile est connecté, le serveur commence immédiatement à enregistrer les informations de position et de rotation de la caméra, envoyées du client au serveur. Ensuite, vous allez implémenter l’inverse: vous renvoyez des informations du serveur au client.

Étape 6: Envoi d’informations de serveur à client

Au cours de cette étape, vous allez envoyer les informations de la caméra d’un hôte à tous les miroirs. Ouvrez le fichier de votre serveur principal, server.js .

Modifiez le gestionnaire d'événements onMove comme suit:

 socket.on ('onMove', fonction (données) {
  console.log (données); // supprime moi
  socket.broadcast.emit ('move', données)
});

Le modificateur broadcast garantit que le serveur envoie ces informations à tous les clients connectés au socket, à l'exception de l'expéditeur d'origine. Une fois ces informations envoyées à un client, vous devez configurer la caméra du miroir en conséquence. Ouvrez le script client, public / client.js .

Ici, vérifiez si le client est un ordinateur de bureau. Si tel est le cas, recevez les données de déplacement et enregistrez-les en conséquence.

 if (! Mobilecheck ()) {
  socket.on ('move', fonction (données) {
    console.log (données);
  });
}

Chargez l'aperçu sur votre bureau et sur votre appareil mobile. Dans votre navigateur de bureau, ouvrez la console de développement. Ensuite, chargez l'application sur votre téléphone mobile. Dès que le téléphone portable charge l'application, la console du développeur sur votre bureau doit s'allumer avec la position et la rotation de la caméra.

Ouvrez à nouveau le script client, à public / client.js . Nous ajustons enfin la caméra du client en fonction des informations envoyées.

Modifiez le gestionnaire d'événements ci-dessus pour l'événement move .

 socket.on ('move', fonction (data) {
  / * commence un nouveau code * /
  camera.setAttribute ('rotation', données ["rotation"]);
  camera.setAttribute ('position', données ["position"]);
  / * fin du nouveau code * /
});

Chargez l'application sur votre bureau et votre téléphone. Chaque mouvement de votre téléphone est reflété dans le miroir correspondant sur votre bureau! Ceci termine la partie miroir de votre application. En tant qu'utilisateur de bureau, vous pouvez maintenant prévisualiser ce que voit votre utilisateur de mobile. Les concepts introduits dans cette section seront cruciaux pour le développement ultérieur de ce jeu, car nous transformons un joueur unique en un jeu multijoueur.

Conclusion

Dans ce tutoriel, nous avons programmé des objets en trois dimensions et ajouté des interactions simples à ces objets. En outre, vous avez créé un système de transmission de messages simple entre clients et serveurs, pour obtenir un aperçu de ce que vos utilisateurs nomades voient sur le bureau.

Ces concepts vont même au-delà de webVR, la notion de géométrie et de matériau s’étendant à SceneKit sur iOS ( qui est liée à ARKit), Three.js (l’épine dorsale d’Aframe) et d’autres bibliothèques en trois dimensions. Ces simples blocs de construction réunis nous permettent une grande flexibilité pour créer un jeu d’aventure point-and-click à part entière. Plus important encore, ils nous permettent de créer n’importe quel jeu avec une interface à base de clics.

Voici plusieurs ressources et exemples à explorer:

  • MirrorVR
    Une implémentation à part entière de la prévisualisation en direct construite. au dessus de. Avec un seul lien Javascript, ajoutez un aperçu en direct de tout modèle de réalité virtuelle sur mobile à un ordinateur de bureau.
  • Bit by Bit
    Une galerie de dessins pour enfants et le modèle de réalité virtuelle correspondant pour chaque dessin. [19659012] Aframe
    Exemples, documentation de développement et davantage de ressources pour le développement de la réalité virtuelle.
  • Google Cardboard Experiences
    Expériences pour la salle de classe avec des outils personnalisés pour les éducateurs.

La prochaine fois, nous construira un jeu complet en utilisant des prises Web pour faciliter la communication en temps réel entre les joueurs dans un jeu de réalité virtuelle. N'hésitez pas à partager vos propres modèles dans les commentaires ci-dessous.

 Smashing Editorial (rb, ra, yk, il)




Source link