Fermer

octobre 19, 2018

Préparer votre contenu pour l'avenir de la réalité étendue (XR) –


Cet article sur la préparation du futur XR a été publié à l'origine par dans le magazine Torque et est reproduit ici avec autorisation.

Vous avez probablement déjà entendu des rumeurs concernant les innovations de la réalité virtuelle. , Réalité augmentée et réalité mixte. Ces supports peuvent généralement être définis comme étant une réalité étendue ou XR.

Mon premier projet de développement dans le domaine de la XR a eu lieu en 2010, lorsque j'explorais le développement Flash. Ma demande était simple. affichez à la webcam un code de réponse rapide (QR) et le programme superposera un modèle 3D au marqueur. Avec le recul, ce fut un moment qui a changé ma vie. En plus d’être ma première expérience de manipulation d’objets 3D numériques, c’était aussi ma première expérience de réalité augmentée accessible sur le Web.

Le concept d’écran fera probablement l’objet d’une réflexion ultérieure dans les années à venir, au moment où nous commençons à estomper les frontières. notre moi physique et numérique. Nous serons probablement entourés de versions personnalisées de nos environnements et toute cette personnalisation sera stockée comme méta dans une base de données quelque part. Il est crucial que tout le monde ait le pouvoir de contrôler cette méta et je suis optimiste. WordPress y aura sa place car c’est là que ça brille vraiment. WordPress vous permet de faire tout ce qui est difficile en matière de gestion de contenu avec très peu de connaissances sur son fonctionnement sous le capot. Je n'ai pas besoin de savoir comment créer un système utilisateur à partir de rien… je peux utiliser WordPress.

Le contenu et les méta seront une constante dans nos vies et, à mon avis, WordPress s'est assuré un très bel emplacement à l'avenir avec l'intégration de l'API REST. Tout ce qui peut faire une requête HTTP est maintenant capable de prendre des données de WordPress et de prendre des décisions intelligentes basées sur celles-ci. Peut-être que la structure de cette approche changera dans les années à venir à mesure que différents concepts tels que GraphQL progressent, mais dans l’ensemble, l’exigence de méthodes reposantes de traitement des données restera probablement constante pour WordPress.

À quoi ressemblerait un MVP WordPress dans XR?

L'année dernière, j'ai cherché à créer un minimum de WordPress VR viable en utilisant uniquement les fonctionnalités disponibles dans une instance WordPress standard. J'ai utilisé Unity3D pour mon prototype car il s'agissait de la plus basse barrière à l'entrée (FREE). L'idée de ce prototype était simple. utilisez les données de publication pour renseigner les éléments d'interface utilisateur dans le monde de la réalité virtuelle et utilisez l'image 360 ​​de la publication présentée en tant que skybox autour de l'utilisateur. Mon cas d'utilisation imaginé était de devenir un simulacre de blog de voyage.

Voici à quoi cela ressemble:

Voici le flux de données et de conditions requises:

 Paramètres de l'inspecteur

n'est pas trop rude d'un concept. Nous faisons un appel REST via C # en utilisant la fonction WWW. Nous prenons les données renvoyées par WordPress et les enregistrons dans une variable que Unity Dev attribuerait à l’aide du simple outil de glisser-déposer de l’éditeur. Unity prend les éléments d'interface utilisateur définis et applique le texte stocké dans la variable à leur objet texte mappé.

J'ai ouvert ce projet à la source à la suite du repo . (Remarque: cela a été fait lors d’un hackathon de deux jours l’année dernière. C’est loin d’être un code prêt à la production.)

Ce qui se passe dans C # pour analyser JSON

Il est important de mentionner que l’API REST renvoie JSON. JavaScript est littéralement dans le nom, il n’est donc pas surprenant qu’il n’existe pas d’analyseur natif robuste pour JSON en C #. (Vous pouvez certainement utiliser Javascript dans Unity, je trouve qu'il est préférable d'utiliser C # pour ce projet.) Le script que j'ai utilisé pour analyser JSON s'appelle SimpleJSON . Bien que cela puisse paraître un peu intimidant, avant les deux jours que j'ai passés à construire ce projet, j'avais très peu de connaissances en C #. En lisant des exemples SimpleJSON, vous pouvez très rapidement voir ce qui se passe.

Pour le code ci-dessous, nous examinons le script controllerWordPress.cs dans le dossier Actifs .

Corotine ci-dessous (DownloadFile) . ] est utilisé comme une sorte d’appel global pour que les données soient utilisées par d’autres Coroutines alimentées par des URL de point de terminaison REST:

 private IEnumerator DownloadFile (string url, resultat System.Action )
{
AddToLog ("Téléchargement" + url);

WWW www = nouveau WWW (url);

rendement retour www;

si (www.error! = null)

{

AddToLog (www.error);

}

autre

{

AddToLog ("Téléchargé" + www.bytesDownloaded + "octets");

}

résultat (www.text);

}

Nous avons ensuite la DownloadJsonFile Coroutine qui télécharge le json et le stocke dans l'objet jsonString:

 private IEnumerator DownloadJsonFile (string url)

{

jsonString = null;

if (continueBody = true)

{

return return StartCoroutine (DownloadFile (url, fileContents => jsonString = fileContents));

Debug.Log (jsonString);

jsonLogString = TruncateStringForEditor (jsonString);

find_feat_image = true;

find_comments = true;

foundBody = true;

}

}

La fonction Start appelle les variables définies par le script d'outil Unity ci-dessus (voir la capture d'écran du contrôleur WordPress) et lance le DownloadJsonFile Coroutine dès l'initialisation du programme. . Portez une attention particulière à la valeur de décalage. Si nous voulons changer d’environnement, nous pouvons simplement ajouter 1 à la variable et configurer les machines d’état pour qu’elles écoutent à quel moment dumper les données et passer à la pièce suivante. Fun!

 void Start () {

StartCoroutine (DownloadJsonFile ("http: //" + blogURL + "/ wp-json / wp / v2 / posts? Order = desc & per_page = 1 & offset =" + offset)). ToString ();

Renderer renderer = GetComponent  ();

}

En ce qui concerne la fonction de mise à jour, nous vérifions que les conditions sont vérifiées afin de déclencher le rendu de leurs données. Il existe de bien meilleurs modèles de conception pour y parvenir. Encore une fois, il s’agit de MVP et, à ce stade du hackathon, j’étais loin du sommet du flammeur qui m’a amené à naviguer du côté des choses.

 void Update () {

if (foundBody == true)

{

var jsonData = JSON.Parse (jsonString);

jsonImageFinal = jsonData [0]["featured_media"];

title_text.text = jsonData [0]["title"]["rendered"];

body_text.text = stripHtml (jsonData [0]["content"]["rendered"]);

postID = jsonData [0]["id"];

authorUrl = jsonData [0]["_links"]["author"][0]["href"];

foundBody = false;

find_author = true;

}

Il existe quelques requêtes pour des éléments tels que l'image Gravitar et les informations sur l'auteur, mais globalement, il s'agit d'une vue d'ensemble de la façon dont mon MVP VR WordPress traite les données JSON. Vous pouvez voir dans le dernier bloc de code que, après quelques ajustements, vous commencez à en arriver à un point où les choses ressemblent davantage à des objets de données avec lesquels nous avons l'habitude de travailler en mode PHP / JS. C’est là que ça devient puissant.

C’est là que ça devient vraiment intéressant. Avec WordPress, vous êtes habilité à créer votre propre méta personnalisée comme bon vous semble. Cette méta peut fonctionner dans un fouillis de fonctions pour décider de l'état ultime à enregistrer dans votre base de données. En utilisant cette méta, il est possible de modifier des variables de niveau entier telles que les couleurs de shader ou les propriétés d'éclairage. C’est peut-être juste une méta booléenne qui décide qu’il faut faire quelque chose d’extraordinaire lorsqu’un utilisateur spécifique entre dans la salle. J'ai un projet particulier que j'aimerais explorer en tant que V2 de ce concept. Imaginez-vous entrer dans une version 3D d'un magasin en ligne où l'utilisateur peut physiquement choisir des produits à leur taille réelle. Cela donne à l'utilisateur la possibilité de faire l'expérience de votre produit dans un espace physique. Pour améliorer l'expérience, un développeur peut attacher une boîte de collision invisible pour suivre l'arrière du cou du joueur. Si l’utilisateur voit quelque chose qu’il aime dans le magasin, il peut simplement tendre la main vers son cou et entrer en collision avec la boîte pour ajouter au panier . Un peu comme le jeter dans votre sac à dos. 1965

Voyons maintenant un exemple concret plus concret. Je travaille actuellement sur un jeu de réalité virtuelle basé sur la musique appelé Broken Place . J'utilise WordPress pour extraire les fichiers de chanson dans le répertoire de jeu local du lecteur. Ces fichiers de chanson sont un langage open source appelé Pure Data. J'ai configuré mon site WordPress pour accepter le type MIME .pd et créé un type de message personnalisé "morceaux" qui est exposé à l'API REST.

Voici un aperçu de mon éditeur de type de message personnalisé "chansons": [19659004]  Meta Place Broken Place

Cela me permet de garder le contenu à jour dans mon jeu sans avoir à faire de versions ou de correctifs. Cela garantit que chacun de mes utilisateurs reçoit le même contenu, le dernier et le meilleur. Cela ouvre également la possibilité d'ajouter des utilisateurs sur le site pour contribuer au contenu sans un backend compliqué. Je ne suis pas un développeur de jeux expérimenté. Il est impossible que je construise un système utilisateur à partir de zéro. Avec WordPress, je peux créer des rôles et des fonctionnalités de manière granulaire. Finalement, il est possible que je puisse avoir un écran de connexion qui permette à un utilisateur de se lancer uniquement dans ses propres chansons.

Dans l'état actuel de mon jeu, j'appelle simplement pour ce type de message et je récupère le fichier à l'aide de l'URL stockée. en méta. Le jeu télécharge ensuite le fichier, le stocke localement et charge la chanson. Vous remarquerez que sur la capture d'écran, ce jeu ne donne aucune indication qu'il utilise WordPress. Magic!

 Broken Place JSON: aucune indication du code WordPress

Alors que nous nous dirigeons vers un monde davantage axé sur la XR, je suis impatient de voir où WordPress atterrira à l'intérieur. La manière dont nous consommons le contenu est en constante évolution, mais avec une plate-forme comme WordPress, nous sommes en mesure de nous adapter et de créer autant d'expériences numériques nouvelles et engageantes.




Source link