Stage – StudioXR

| |

Wat Is StudioXR?

Mijn Taken

In de 5 maanden dat ik stage heb gelopen, heb ik gewerkt aan verschillende opdrachten. Allemaal waren ze interessant aangezien ik nauwelijks ervaring had met de meer toegepaste kant van gamedevelopment, en deze opdrachten lieten mij de Unity engine gebruiken op manieren zoals ik dat normaal niet deed. Hieronder zie je een aantal van de grotere projecten.

AR maquette Utrecht

Mijn eerste opdracht was meteen een interessante. Het was een opdracht vanuit de gemeente van utrecht en het idee was dat mensen een app kunnen downloaden en vervolgens een specifieke QR-code op het Domplein in Utrecht kunnen scannen. Wanneer mensen dit doen verschijnt er op hun device een maquette van een historisch stadsdeel uit de QR-code. Er waren al een aantal dingen geprobeerd om dit rond te krijgen via WebAR, maar wegens beperkingen was er een kleine reset nodig. Nu kreeg ik dus de vraag of ik uit kon zoeken wat de mogelijkheden zouden zijn als we dit via Unity zouden proberen. Vlak voordat ik begon was er al een kleine opzet gemaakt door een collega waar ik op voort kon bouwen. Deze voorbereiding bestonden met name uit het klaarmaken van de AR-Foundation package in Unity.

De eerste twee maanden heb ik dus grotendeels zelfstandig gewerkt aan dit project. Eerst heb ik uitgezocht wat de mogelijkheden zijn voor een QR-code scanner binnen Unity. Het was met name een uitdaging om te zorgen dat de scanner voldeed aan de eisen van de klant. De QR-code zou op de grond komen te liggen, dus de klant eiste dat mensen de code konden scannen zonder door de knieën te hoeven gaan. Dit koste een beetje tijd om voor elkaar te krijgen, maar uiteindelijk heb ik de scanner zo werkende gekregen dat het op ooghoogte werkt. Het hielp ook dat de keuze was gemaakt om de QR-code van een ander materiaal te maken dan orgineel de bedoeling was. Nadat het scannen gelukt was, was het de uitdaging om te zorgen dat de maquette op de juiste manier verscheen. De maquette moest namelijke overeenkomen met een omtrek van het stadsdeel dat staat op het plakaat waar de code in ligt. Naast het feit dat dit mijn eerste ervaring met AR was, koste het mij de nodige moeite om de hoekpunten van de QR-code te kunnen herkennen en zo de draaing en positie van het model te kunnen berekenen. Uiteindelijk is het gelukt en heb ik een prototype van de app gemaakt.

Hierna stond het project tijdelijk op pauze in afwachting van overleggen met de klant. Toen het project weer op gang kwam heb ik er niet meer aan gewerkt. Iemand anders heeft het project afgemaakt door te zorgen dat alles in een presenteerbare staat was. Op de laatste vrijdag van mijn stageperiode is de app gelanceerd en was er een opening op het Domplein.

Wil je meer lezen over dit project kijk dan vooral hiernaar!

Wearable Creation Editor Tool

De tweede opdracht waar ik aan gewerkt heb was een editor tool. Bij StudioXR hebben ze een opdracht lopen voor de gemeente Groningen. Voor dit project waren ze aan het werken aan een Character Customisation Menu. Bij het customisen van een karakter horen ook kleding stukken. Ik was niet verantwoordlijk voor het maken van de kledingstukken, maar het was mijn taak om een editor-tool te maken die makkelijk van een FBX een kledingstuk dat gebruik kan worden in de customiser maakt. Het idee is simpel, het art-team maakt een kledingstuk en importeert het als een FBX in het Unity project. Vervolgens openen ze de tool, selecteren ze de FBX die ze willen omzetten en passen ze een paar parameters aan zodat het kledingstuk er goed uitziet op het karakter. Daarna klikken ze op een knop en het kledingstuk wordt van FBX omgezet naar een prefab met de nodige scripts en een wearable ScriptableObject wordt gemaakt met de parameters gezet en een verwijzing naar de prefab.

Voordat ik begon aan deze opdracht had ik maar een klein beetje ervaring met editor tooling. Ik had wel eens een custom editor script gemaakt om bepaalde velden in de inspector aan te passen. Deze opdracht was een flinke uitdaging. Al snel had ik een plan gemaakt voor hoe de tool eruit zou zien. Ik wist wat het Art-Team er graag in wilde hebben en ik had een globaal idee hoe ik dat moest doen. Nu was het de uitdaging om te leren wat de mogelijkheden en beperkingen van editor tooling.

Het eindresultaat was een makkelijk te gebruiken tool waar alles in zat waaar het team om vroeg. Ik had zelfs een paar extar features toegepast die enorm gewaardeerd werden. Bijvoorbeeld een een previewscherm waar je het kledingstuk op een karakter kunt zien voordat je het proces afrond. Het team was super tevreden met de tool en is het meteen gaan gebruiken. Een tijdje later was het kledingsysteem aangepast, dus ik moesteen update schrijven. Het ging met name om het supporten van verschillende lichaamstypes voor een kledingstuk. Ik heb deze mogelijkheid ook gebruikt om de tool te stroomlijnen en iets mooier te maken.

Addressable Uploader Editor tool

De laatste opdracht waar ik het over ga hebben is een addressable uploader tool. Deze zal ik simpel houden. De bedoeling was dat addressable data makkelijk geupload kon worden naar de server. De uitdaging was niet om addressables of om een editor tool te maken, maar om te communiceren met de backend van de server. Voor mij was dit de eerste keer dat ik binnen Unity moest communiceren met een bron buiten Unity. In het begin koste mij dit best wat tijd om te begrijpen hoe dit werkt, maar toen ik dit eenmaal begreep kwam het best makkelijk.

Eerst mote je inloggen op de backend, daarna selecteer je een project waar je data naartoe wilt uploaden. De laatste stap is het selecteren van de objecten die je wilt omzetten in addressables en voor welke platformen je het wilt uploaden. De tool doet vervolgens de rest. Aangezien addressables voor ieder platform individueel gebuild moeten worden, lag er hier nog een uitdaging. Wanneer Unityt switched van buildtarget begint er een recompilation. Dit zorgt ervoor dat data in de editor reset. Uiteraard is dat niet handig wanneer je die data nodig hebt om door te gaan in je proces. Ik moest dus opzoek naar een manier om deze beperking heen. Uiteindelijk heb ik ervoor gekozen om de nodige data tijdelijk op te slaan in een ScriptableObject vlak voor een recompilation. Wanner de tool dan weer opstart checkt het of de ScriptableObject bestaat. Wanneer dit het geval is worden de data herbouwd en gaat het door met de volgende stap wanneer dit nodig is.

Conclusie

Mijn tijd bij StudioXR was een leuke en leerzame. Naast het feit dat ik een hoop nieuwe soorten projecten heb gemaakt, werd ik onderdeel van een gezellig en omarmend team. Het was een team die open stond voor vragen en waar iedereen een stem had. Ik heb een hoop geleerd over software development, maar vooral ook over samenwerking en werksfeer. Mijn eindbeoordeling was een extreem positieve en ik ben uitgezwaaid met het geluid van alleen maar lovende kritieken, en ik heb niks anders dan lovende kritieken voor hun.

Zie ook: