{"id":3948,"date":"2019-01-14T09:48:22","date_gmt":"2019-01-14T08:48:22","guid":{"rendered":"https:\/\/digitalteknik.it.slotshaven.dk\/?p=3948"},"modified":"2019-01-14T09:48:22","modified_gmt":"2019-01-14T08:48:22","slug":"unity-worked-example","status":"publish","type":"post","link":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/unity-worked-example\/","title":{"rendered":"Unity worked example"},"content":{"rendered":"\n<p>I dette eksempel skal vi s\u00e6tte en hel r\u00e6kke teknologier sammen, s\u00e5 vi ender med et system der kan f\u00f8lgende:<\/p>\n\n\n\n<p>Sende OSC beskeder fra en javascript side til en k\u00f8rende VR applikation, s\u00e5 lyset for eksempel slukker, ting bev\u00e6ger sig eller d\u00f8re \u00e5bner i det virtuelle rum. Sende OSC beskeder ud af VR igen, s\u00e5 vi eksempelvis kan t\u00e6nde lyset eller \u00e5bne en d\u00f8r i det fysiske rum. <\/p>\n\n\n\n<p>Vi starter med et worked example &#8211; alts\u00e5 et eksempel vi har sat op p\u00e5 forh\u00e5nd, hvor i kan f\u00e5 indtryk af de involverede scripts, og hvordan man modificerer dem. F\u00f8lg <a href=\"https:\/\/digitalteknik.it.slotshaven.dk\/?p=3932\">installationsguiden i indl\u00e6gget om Unity set-up<\/a>, og vend tilbage hertil, n\u00e5r du har \u00e5bnet et nyt Unity projekt og <a href=\"https:\/\/github.com\/slotshaven-digitek-2018\/unity\">importeret pakken fra github<\/a>. Find og \u00e5bn scenen darkroom.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gennemgang<\/h2>\n\n\n\n<p>I denne scene ser vi en lyskegle, et skilt med en besked og et ellers m\u00f8rkt rum. Lyskeglen kan kun bev\u00e6ges med OSC udefra. N\u00e5r lyset bev\u00e6ges rundt, kan man pludselig se en &#8220;treasure&#8221;, en diamantformet brik, man kan klikke p\u00e5. N\u00e5r man klikker p\u00e5 den, sendes der en OSC besked ud fra Unity. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">OSC test input<\/h3>\n\n\n\n<p>Vi sender OSC input til Unity fra en <a href=\"https:\/\/github.com\/slotshaven-digitek-2018\/unity-osc-bridge\">javascript proxy, som kan hentes her<\/a>. Skitsen er lavet med node.js og p5.js For at ramme din Unity app, skal scriptet kende app&#8217;ens ip adresse. Men denne ip er selvf\u00f8lgelig forskellig, n\u00e5r du krer Unity spillet fra din desktop og fra et par VR briller i en telefon. Derfor har vi lavet Unity app&#8217;en s\u00e5dan, at den henter sin egen ip og viser den p\u00e5 sk\u00e6rmen n\u00e5r den starter. \u00c5bn filen osc-unity.js og skriv den rigtige ip i Unity konfigurationen. K\u00f8r bridge.js fra terminalen, og \u00e5bn din webbrowser p\u00e5 localhost:8080.<\/p>\n\n\n\n<p>Test systemet ved at k\u00f8re Unity appen fra din desktop, og skriv en besked i tekstfeltet i din browser &#8211; det du skriver skal dukke op p\u00e5 tekstfeltet i Unity.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Unity scenen, asset for asset<\/h3>\n\n\n\n<p>For det f\u00f8rste ligger deer en masse gameobjecter der begynder med GVR &#8211; det st\u00e5r for Google VR. <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>GVREventSystem: scripts til at overs\u00e6tte events til VR<\/li><li>GVRHeadset: Gameobject til at repr\u00e6sentere headsettet<\/li><li>GVRControllerMain: Script til at styre input &#8211; fx mus eller Daydream Controller. L\u00e6s vejledning i inspectoren for at se hvordan du styrer VR i playmode.<\/li><li>GVREditorEmulator: script til at styre app&#8217;en fra desktoppens input, n\u00e5r den ikke k\u00f8rer i en brille<\/li><li>GVRInstantPreviewMain: Script der vistnok giver adgang til at teste sin app live p\u00e5 en Android tlf. Har ikke f\u00e5et det til at virke<\/li><li>SpotLight: Den lyskegle der skal styres udefra. Bem\u00e6rk at denne er forbundet med OSC controller objektet, s\u00e5 den kan styres med OSC.<\/li><li>Plane\/Room: scenen er opbygget af et simpelt plane omgivet af 5 cubes til v\u00e6gge og loft.<\/li><li>Treasure &#8211; dette er den lille diamant man skal finde. P\u00e5 selve diamanten (Icosahedron) findes tre vigtige scripts: <ul><li>C# OSC kontrol script &#8211; generelt utility bibliotek til OSC.<\/li><li>UDP packetIO: Generelt utility script til at sende pakker over <a href=\"https:\/\/en.wikipedia.org\/wiki\/User_Datagram_Protocol\">UDP<\/a> <\/li><li>OSC test sender script: Rebecca Fiebrink&#8217;s lille test sender script. Her kan vi se, hvordan man s\u00e6tter Unity op til at sende en OSC besked &#8211; i dette tilf\u00e6lde, n\u00e5r eventet gazedAt sker, p\u00e5 diamantobjektet. <\/li><\/ul><\/li><li>OSCControl: her er ingredienserne til at lave OSC ind. Objektet indeholder de samme generelle utility scripts som diamanten, men i stedet for senderen, et receiver script. Gennemg\u00e5 og kommenter scriptet for at l\u00e6re hvordan man modtager OSC i Unity.<\/li><li>Player: i 1ps VR er vi som udgangspunkt bare et kamera der flytter sig rundt med en pointer midt i blikretningen.<\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I dette eksempel skal vi s\u00e6tte en hel r\u00e6kke teknologier sammen, s\u00e5 vi ender med et system der kan f\u00f8lgende: Sende OSC beskeder fra en javascript side til en k\u00f8rende VR applikation, s\u00e5 lyset for eksempel slukker, ting bev\u00e6ger sig eller d\u00f8re \u00e5bner i det virtuelle rum. Sende OSC beskeder ud af VR igen, s\u00e5 &#8230; <a title=\"Unity worked example\" class=\"read-more\" href=\"https:\/\/digitalteknik.slotshaven.it\/wordpress\/unity-worked-example\/\" aria-label=\"Read more about Unity worked example\">L\u00e6s mere <\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-3948","post","type-post","status-publish","format-standard","hentry","category-vr"],"_links":{"self":[{"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/posts\/3948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/comments?post=3948"}],"version-history":[{"count":0,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/posts\/3948\/revisions"}],"wp:attachment":[{"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/media?parent=3948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/categories?post=3948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digitalteknik.slotshaven.it\/wordpress\/wp-json\/wp\/v2\/tags?post=3948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}