Introduzione
In questo articolo ti illustrerò brevemente come poter muovere un oggetto in realtà aumentata direttamente con il touch del dispositivo.
Il progetto sarà sviluppato con Unity per dispositivi Android con le librerie ARCore e AR Foundation.
Sviluppo
Per manipolare gli oggetti dovremmo in principio creare un progetto AR dove poter utilizzare il tool AR Object Control Tool, disponibile su Github, che semplifica il ridimensionamento e la rotazione degli oggetti in AR.
Prerequisti
Prima di iniziare lo sviluppo è necessario
- importare nel progetto le librerie ARCore e AR Foundation,
- impostare il build per dispostivi android,
- aggiungere ai plugin provideres ARCore,
- rimuovere Vulkan dalle API Grafiche e impostare il build per i soli dispoistivi con Android a partire dalla versione 8,
- ed infine potrebbe essere necessario impostare un build per i dispositivi arm64 (è necessario scriptingBackend IL2CPP).
Infine è necessario importare nel vostro progetto il package disponibile al seguente link: https://github.com/LeoSery/AR-Object-Control-Tool--Unity3DTool/releases/tag/V3.0
Configurazione della scena
Come per tutti i progetti AR, inzia rimuovendo la Main Camera.
Aggiungere alla scena XR->AR Session Origin e XR->AR Session. Dal menù GameObject > XR > aggiungi alla scena AR Session e AR Session Origin.
Per abilitare il plane detection aggiungi all’oggetto AR Session Origin lo script AR Plane Manager. Ti consiglio anche di modificare il campo DetectionMode to Horizontal.
Per interagire con funzionalità tracciabili aggiungi all’oggetto AR Session Origin lo script AR Raycast Manager.
Per visualizzare la posizione dei plane nella nostra scena AR abbiamo bisogno di un Plane Prefab in modo che lo script AR Plane Manager possa visualizzare la posizione del plane nella nostra scena AR; quindi aggiungiamo un XR > AR Default Plane nella scena. Trascina il nuovo oggetto creato nell’asset di progetto in modo da creare un prefab con l’AR Default Plane e cancellalo dal Hierarchy di scena.
Aggiungi allo script AR Plane Manager l’AR Default Plane appena creato, come da figura sottostante.
- A questo punto abbiamo bisogno di un oggetto da far comparire e poi manipolare sull’ambiente AR. Per fare questo creiamo un cubo e chiamiamo SpawnableObject.
Ricorda di ridurre lo scale a 0.1 per ogni asse per avere una buona visuale quando punti l’oggetto in AR.
Nel mio esempio invece del cubo utilizzero l’avatar di ReadyPlayerMe, se vuoi sapere come utilizzare l’avatar invece del cubo guarda questo articolo: https://www.francescogarofalo.it/post/come-creare-un-avatar-personalizzato-e-utilizzarlo-in-unity-con-readyplayerme/
- Crea un tag Spawnable e aggiungetelo a SpawnableObject.
- Per far comparire l’oggetto Spwnable Object devi creare uno script che si occupa di questo Spawnable Manager.cs
|
|
Crea un oggetto di gioco vuoto nella tua scena e chiamalo SpawnManager.
Inserisci all’interno dell’oggetto SpawnManger lo script Spawn Manager creato in precedenza.
Aggiungi nel campo dello script Spawn Manager.cs Raycast Manager: AR Session Origin e nel campo Spawnable Prefab:Spawnable Object.
A questo puoi provare che lo SpawnableObject venga correttamente istanziato.
Manipolare l’oggetto SpawnableObject
Con il package AR Object Control Tool puoi facilmente modificare in runtime alcune caratteristiche dello SpawnableObject creato nei precedenti step di questo articolo.
Configurazione
Per abilitare le attività di
- Scaling
- Rotating
- Replacement
- Movement
puoi aggiungere all’oggetto Spawnable Object lo script Movement Manager.cs.
Abilitando le opzioni Scaling, Rotating e Replacing puoi facilmente manipolare l’oggetto in AR.
Conclusione
Aggiungendo lo script MovementManger all’oggetto che vogliamo manipolare possiamo facilmente modificare a runtime un oggetto in realtà aumentata cambiandogli posizione, dimensione e ruotandolo a nostro piacimento.
In questo modo possiamo creare facilemente qualsiasi tipo di gioco in realtà aumentata da provare in ambienti non controllati.
Fonti
Grazie :)