Ho avuto modo di provare sia Oculus Go che Oculus Rift.
L'impressione generale, anche in confronto a Daydream, e' che l'hardware sia trascurabile...cio' che fara' effettivamente la differenza sara' la disponibilita' di software
In merito a cio' Oculus Rift ha una killer application...Google Earth VR (non disponibile su Go e Daydream)...peccato che non sia possibile aggiungere dei temi personalizzati
Visualizzazione post con etichetta Daydream. Mostra tutti i post
Visualizzazione post con etichetta Daydream. Mostra tutti i post
venerdì 18 maggio 2018
giovedì 17 maggio 2018
Modello digitale del terreno con AFrame e Daydream controller
Tramite il framework Aframe e' possibile visualizzare su un comune browser un modello digitale del terreno in formato OBJ/MTL e poterlo navigare/ruotare con il controller nativo di Daydream
ATTENZIONE : per abilitare il controller Daydream si deve inserire nella url di Chrome la seguente stringa
chrome://flags
e si devono attivare gli switch WebVR e Gamepad API
-------------------------------------------------------------------------------------------
<html>
<head>
<script src="https://aframe.io/releases/0.8.0/aframe.min.js"></script>
<script src="//cdn.rawgit.com/donmccurdy/aframe-extras/v4.1.1/dist/aframe-extras.min.js"></script>
</head>
<body>
<a-scene background="color: green">
<a-entity id="rig"
movement-controls="fly: true; speed: 0.3"
position="15 0 15">
<a-entity camera
position="0 1.6 0"
look-controls></a-entity>
</a-entity>
<a-assets>
<a-asset-item id="dem-obj" src="Ricasoli_nord.obj"></a-asset-item>
<a-asset-item id="dem-mtl" src="Ricasoli_nord.mtl"></a-asset-item>
</a-assets>
<a-entity position="3 6 2" rotation="90 180 270" obj-model="obj: #dem-obj; mtl: #dem-mtl"></a-entity>
</a-scene>
</body>
</html>
ATTENZIONE : per abilitare il controller Daydream si deve inserire nella url di Chrome la seguente stringa
chrome://flags
e si devono attivare gli switch WebVR e Gamepad API
-------------------------------------------------------------------------------------------
<html>
<head>
<script src="https://aframe.io/releases/0.8.0/aframe.min.js"></script>
<script src="//cdn.rawgit.com/donmccurdy/aframe-extras/v4.1.1/dist/aframe-extras.min.js"></script>
</head>
<body>
<a-scene background="color: green">
<a-entity id="rig"
movement-controls="fly: true; speed: 0.3"
position="15 0 15">
<a-entity camera
position="0 1.6 0"
look-controls></a-entity>
</a-entity>
<a-assets>
<a-asset-item id="dem-obj" src="Ricasoli_nord.obj"></a-asset-item>
<a-asset-item id="dem-mtl" src="Ricasoli_nord.mtl"></a-asset-item>
</a-assets>
<a-entity position="3 6 2" rotation="90 180 270" obj-model="obj: #dem-obj; mtl: #dem-mtl"></a-entity>
</a-scene>
</body>
</html>
martedì 8 maggio 2018
Unreal e Google VR per DayDream
Si crea un Nuovo Progetto/Blank settando Mobile/Tablet
Menu' Settings /Project Settings/Platforms
Nel sottogruppo Android si devono accettare le due licenze (APK Packaging e Google Play Services) e si imposta il Mininum e Target SDK almeno a 21 per Google VR
Nel sottogruppo Android SDK sempre sotto Platforms si devono poi settare 4 directory che sotto Mac con Android Studio installato e JDK 1.8 sono
SDK : /Users/lucainnocenti/Library/Android/sdk (/Library/Android/sdk)
NDK : /Users/lucainnocenti/Library/Android/sdk/ndk-bundle (/Library/Android/sdk/ndk-bundle)
Ant : /usr/local/Cellar/ant/1.10.3/ (ant installato via Homebrew)
Java_Home : /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
per verificare la directory di Java_Home si puo' usare lo script in /usr/libexec/java_home
Per lanciare la applicazione su telefono si usa Launch dove compare il dispositivo (il computer ed il telefono devono essere gia' stati autorizzati)
Per creare il solo package si va in File/Package Project/Android/Android(ETC1)
Per importare modelli in Unreal la cosa piu' semplice e' usare il formato FBX. Se il modello e' troppo piccolo per la scena si puo' settare il fattore di scala
Specifiche per Google VR (DayDream)
In Project Settings spuntare Enable FullScreen Immersive on KitKat and above, Support amd64 e rimuovere armv7, In Advanced APK Packaging si spunt Configure GoogleVR for sustained performance ed in Configure GoogleVR to support specific hardware si seleziona DayDream
Nel menu Android SDK si configura l'NDK API ad android-21
Si va poi nel menu Engine/Input e si cancella la default touch interface (Clear)
Si clicca su Edit/Plugins e si seleziona la categoria Input Devices abilitando GoogleVR Motion Controller
e nella categoria Virtual Reality si aggiunge Google VR
Si riavvia l'editor per caricare i plugin
Per compilare pacchetti specifici per Daydream si deve selezionare l'opzione AndroidATC
Menu' Settings /Project Settings/Platforms
Nel sottogruppo Android si devono accettare le due licenze (APK Packaging e Google Play Services) e si imposta il Mininum e Target SDK almeno a 21 per Google VR
Nel sottogruppo Android SDK sempre sotto Platforms si devono poi settare 4 directory che sotto Mac con Android Studio installato e JDK 1.8 sono
SDK : /Users/lucainnocenti/Library/Android/sdk (/Library/Android/sdk)
NDK : /Users/lucainnocenti/Library/Android/sdk/ndk-bundle (/Library/Android/sdk/ndk-bundle)
Ant : /usr/local/Cellar/ant/1.10.3/ (ant installato via Homebrew)
Java_Home : /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
per verificare la directory di Java_Home si puo' usare lo script in /usr/libexec/java_home
Per lanciare la applicazione su telefono si usa Launch dove compare il dispositivo (il computer ed il telefono devono essere gia' stati autorizzati)
La prima volta la compilazione e' molto, molto molto lenta perche' devono essere compilati tutti gli shader del progetto (si parla di 10 minuti per il progetto Blank)
Per creare il solo package si va in File/Package Project/Android/Android(ETC1)
Per importare modelli in Unreal la cosa piu' semplice e' usare il formato FBX. Se il modello e' troppo piccolo per la scena si puo' settare il fattore di scala
Specifiche per Google VR (DayDream)
In Project Settings spuntare Enable FullScreen Immersive on KitKat and above, Support amd64 e rimuovere armv7, In Advanced APK Packaging si spunt Configure GoogleVR for sustained performance ed in Configure GoogleVR to support specific hardware si seleziona DayDream
Nel menu Android SDK si configura l'NDK API ad android-21
Si va poi nel menu Engine/Input e si cancella la default touch interface (Clear)
Si clicca su Edit/Plugins e si seleziona la categoria Input Devices abilitando GoogleVR Motion Controller
e nella categoria Virtual Reality si aggiunge Google VR
Si riavvia l'editor per caricare i plugin
Per compilare pacchetti specifici per Daydream si deve selezionare l'opzione AndroidATC
giovedì 3 maggio 2018
Stereoscopio interattivo con QGis2ThreeJS
Circa 3 anni fa avevo provato il plugin di QGis Qgis2ThreeJS per fare DEM stereoscopici da usare Google CardBoard ma poi avevo lasciato li' la cosa perche' non riuscivo ad avere l'interazione per girare il modello. Adesso ho trovato la soluzione ed e' molto piu' banale di quanto potessi immaginare...un mouse bluetooth. Basta accoppiare il mouse al telefono, inserire il telefono in un CardBoard o DayDream e si puo' visualizzare il modello da piu' punti di vista
Per fare il progetto QGis si deve utilizzare il plugin nel ramo sperimentale
https://github.com/minorua/ Qgis2threejs/tree/exp_stereo
e si deve selezione il template 3DViewer.html
Si seleziona poi il modo di controllare il modello
e questo il risultato finale (ovviamente da inserire nel visore)
Per fare il progetto QGis si deve utilizzare il plugin nel ramo sperimentale
https://github.com/minorua/
e si deve selezione il template 3DViewer.html
Si seleziona poi il modo di controllare il modello
e questo il risultato finale (ovviamente da inserire nel visore)
venerdì 27 aprile 2018
DayDream Emulator Controller
Ho trovato ad un prezzo stranamente basso (30 euro) un visore Daydream e il controller collegato ed ho voluto provarlo
Solo dopo ho scoperto che non e' necessario avere Daydream per poterci sviluppare.
Avendo un telefono di riserva (non necessariamente supportato da Daydream) si puo' installare un emulatore di controller che si collega al telefono principale sia via Bluetooth che via WiFi
L'emulazione del controller funziona anche con il package Unity mediante una connessione USB
Peraltro sto sperimentando molti problemi con il controller fisico (quello grigio all'estrema destra) che e' molto carino ma ha difficolta' a rimanere collegato al telefono. In un caso estremo sono dovuto andare in Impostazioni/App/Servizi Google VR/Spazio di archiviazione/Cancella Dati. Questa operazione resetta le impostazioni di Google VR
Solo dopo ho scoperto che non e' necessario avere Daydream per poterci sviluppare.
Avendo un telefono di riserva (non necessariamente supportato da Daydream) si puo' installare un emulatore di controller che si collega al telefono principale sia via Bluetooth che via WiFi
L'emulazione del controller funziona anche con il package Unity mediante una connessione USB
Peraltro sto sperimentando molti problemi con il controller fisico (quello grigio all'estrema destra) che e' molto carino ma ha difficolta' a rimanere collegato al telefono. In un caso estremo sono dovuto andare in Impostazioni/App/Servizi Google VR/Spazio di archiviazione/Cancella Dati. Questa operazione resetta le impostazioni di Google VR
Daydream Controller in Unity
Un semplice esempio di script da aggiungere al Player per muovere la Camera di Unity con il DayDream Controller
public class move_player : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Quaternion ori;
ori = GvrController.Orientation;
if (ori.eulerAngles.z > 20 && ori.eulerAngles.z < 90) {
Debug.Log ("Roll Left ");
}
if (ori.eulerAngles.z > 270 && ori.eulerAngles.z < 340) {
Debug.Log ("Roll Right");
}
if (ori.eulerAngles.x > 20 && ori.eulerAngles.x < 90) {
Debug.Log ("Drop");
var rot = transform.rotation;
rot.z -= Time.deltaTime * 1;
transform.rotation = rot;
}
if (ori.eulerAngles.x > 270 && ori.eulerAngles.x < 340) {
Debug.Log ("Climb");
var rot = transform.rotation;
rot.z += Time.deltaTime * 1;
transform.rotation = rot;
}
Debug.Log ("X : " + ori.eulerAngles.x.ToString("#.0")); //pitch
Debug.Log ("Y : " + ori.eulerAngles.y.ToString("#.0")); // yaw
Debug.Log ("Z : " + ori.eulerAngles.z.ToString("#.0")); // roll
if (GvrController.IsTouching) {
Vector2 touchPos = GvrController.TouchPos;
Debug.Log ("Toccato " + touchPos.x.ToString ("#.00"));
var x = touchPos.x * Time.deltaTime * 5.0f;
var y = touchPos.y * Time.deltaTime * 5.0f;
if (touchPos.x < 0.5f)
x *= -1.0f;
else
x *= +1.0f;
if (touchPos.y < 0.5f)
y *= -1.0f;
else
y *= +1.0f;
transform.Translate (x, y, 0.0f);
}
}
}
public class move_player : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Quaternion ori;
ori = GvrController.Orientation;
if (ori.eulerAngles.z > 20 && ori.eulerAngles.z < 90) {
Debug.Log ("Roll Left ");
}
if (ori.eulerAngles.z > 270 && ori.eulerAngles.z < 340) {
Debug.Log ("Roll Right");
}
if (ori.eulerAngles.x > 20 && ori.eulerAngles.x < 90) {
Debug.Log ("Drop");
var rot = transform.rotation;
rot.z -= Time.deltaTime * 1;
transform.rotation = rot;
}
if (ori.eulerAngles.x > 270 && ori.eulerAngles.x < 340) {
Debug.Log ("Climb");
var rot = transform.rotation;
rot.z += Time.deltaTime * 1;
transform.rotation = rot;
}
Debug.Log ("X : " + ori.eulerAngles.x.ToString("#.0")); //pitch
Debug.Log ("Y : " + ori.eulerAngles.y.ToString("#.0")); // yaw
Debug.Log ("Z : " + ori.eulerAngles.z.ToString("#.0")); // roll
if (GvrController.IsTouching) {
Vector2 touchPos = GvrController.TouchPos;
Debug.Log ("Toccato " + touchPos.x.ToString ("#.00"));
var x = touchPos.x * Time.deltaTime * 5.0f;
var y = touchPos.y * Time.deltaTime * 5.0f;
if (touchPos.x < 0.5f)
x *= -1.0f;
else
x *= +1.0f;
if (touchPos.y < 0.5f)
y *= -1.0f;
else
y *= +1.0f;
transform.Translate (x, y, 0.0f);
}
}
}
venerdì 30 marzo 2018
Modello digitale del terreno con Google DayDream ed Unity
In questo post il metodo che ho usato per mostrare dati di modelli digitali del terreno con Unity ed il visore DayDream di Google
Il progetto che ho creato e' di tipo Android. Nel Player Settings del progetto sotto XR Settings deve essere spuntato il supporto alla realta' virtuale e si aggiunge DayDream tra gli SDK. Sempre nel Player Settings si deve impostare in Other Settings un Minimum Level API a livello 24
Per prima cosa si crea il modello digitale.
L'immagine deve essere a scala di grigi, in cui il livello di grigio indica la quota sul livello del mare (nero equivale a livello piu' basso, spesso il livello del mare, il bianco e' la quota piu' alta)
Si crea un oggetto Terrain da GameObject/3D/Terrain con dimensioni pari a quelle del modello DEM
Si trascina l'immagine negli assets del progetto e si prende il file HeightmapfromTexture. Dalle proprieta' dell'immagine (a destra Advanced si deve spuntare Read/Write and Apply)
L'editor delle versioni moderne di Unity (Unity 3d 2017.2) non permettono di editare direttamente file JavaScript. Si copia quindi lo script in un editor e si aggiungono le seguenti linee (dove si dichiarano le variabili x ed y)
var mapColors = heightmap.GetPixels();
var map = new Color[w2 * w2];
var y = 0.0;
var x = 0.0;
si salva il file e lo si trascina negli assets del progetto.
Si selezione negli assets l'immagine DEM importata e si clicca sul menu' in alto Terrain/HeightMapFromTexture
Per settare il livello di amplificazione delle quote si cambia il valore di Terrain Height nell'inspector
Una volta importato e settato il modello digitale si deve aggiungere il supporto DayDream a Unity.
Una volta scaricato il package Daydream per Unity e lo aggiunge al progetto con il menu Assets/Import Package/Custom/GoogleVRforUnity.unitypackage.
Il progetto che ho creato e' di tipo Android. Nel Player Settings del progetto sotto XR Settings deve essere spuntato il supporto alla realta' virtuale e si aggiunge DayDream tra gli SDK. Sempre nel Player Settings si deve impostare in Other Settings un Minimum Level API a livello 24
Sicilia con Etna |
Per prima cosa si crea il modello digitale.
L'immagine deve essere a scala di grigi, in cui il livello di grigio indica la quota sul livello del mare (nero equivale a livello piu' basso, spesso il livello del mare, il bianco e' la quota piu' alta)
Si crea un oggetto Terrain da GameObject/3D/Terrain con dimensioni pari a quelle del modello DEM
Si trascina l'immagine negli assets del progetto e si prende il file HeightmapfromTexture. Dalle proprieta' dell'immagine (a destra Advanced si deve spuntare Read/Write and Apply)
L'editor delle versioni moderne di Unity (Unity 3d 2017.2) non permettono di editare direttamente file JavaScript. Si copia quindi lo script in un editor e si aggiungono le seguenti linee (dove si dichiarano le variabili x ed y)
var mapColors = heightmap.GetPixels();
var map = new Color[w2 * w2];
var y = 0.0;
var x = 0.0;
si salva il file e lo si trascina negli assets del progetto.
Si selezione negli assets l'immagine DEM importata e si clicca sul menu' in alto Terrain/HeightMapFromTexture
Per settare il livello di amplificazione delle quote si cambia il valore di Terrain Height nell'inspector
Il modello usato e' poco dettagliato 2048x2048 pixels |
Una volta importato e settato il modello digitale si deve aggiungere il supporto DayDream a Unity.
Una volta scaricato il package Daydream per Unity e lo aggiunge al progetto con il menu Assets/Import Package/Custom/GoogleVRforUnity.unitypackage.
- Si aggiunge quindi alla Hierarchy il modulo GvrEditorEmulator
- Si crea quindi un GameObject (dal menu' in alto), Gameobject/Create Empty e si rinomina come Player
- Si trascina la camera e si inserisce nell'albero sotto l'oggetto Player
- Si aggiungono GvrControllerMain e GvrEventSystem
- Se il progetto include una canvas deve essere aggiunto GvrPointerGraphicsRaycaster da Add Component
- Si aggiunge GvrPointerPhysicsRaycaster alla Camera da Add component
- Si aggiunge GvrControllerPointer agganciandolo al Player
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...