Jump to content
Unity Insider Forum

GoogleVR SDK - Unity VR supported Unterschied


3ncrypt0

Recommended Posts

Hi zusammen,

ich hatte mir mehrmals überlegt ob ich hierzu wirklich einen Thread aufmachen soll, da ich mir nicht sicher bin ob ich einfach nur etwas falsch verstanden habe, oder meine Frage bzw. Anliegen berechtigt ist.

Ich entwickel gerade eine Android APP in der ich auch optional VR integrieren möchte. Nun habe ich mir das GoogleVR SDK herunter geladen und in mein Projekt importiert. Beim testen im Unity Editor habe ich das GvrViewerMain Prefab in die Scene gezogen und konnte so ein Ergebnis sehen. Beim testen auf dem Android ist mir nun aufgefallen, dass es nicht funktioniert. In der GoogleVR SDK Doku steht, dass man in den PlayerSettings Unity VR supported aktivieren muss und ein SDK auswählen muss, also Cardboard oder Daydream (Habe den Unterschied noch nicht verstanden, da ich komplett neu in das Thema VR). Danach funktionierte es auch auf dem Android Smartphone - allerdings ist nun alles mit einem Splitscreen ausgestattet (auch zb Unity Splashscreen). Das GoogleVR SDK kann ich auch löschen - einen Unterschied macht das nicht.

Mein Frage: Wie kann ich den Splitscreen nur auf eine bestimmte Scene anwenden? Was genau bringt mit das GoogleVR SDK? Denn als ich an den Einstellungen herumgespielt hatte, konnte ich keinerlei Änderungen feststellen.

Unity Version (5.6.0f3)

 

Danke und VG

 

EDIT: 

Ok, ich habe noch folgendes versucht:

In den PlayerSettings VR aktiviert und als Device none ausgewählt. 

In meiner Scene folgendes Script hinzugefügt:

// Run in split-screen mode

using System.Collections;
using UnityEngine;
using UnityEngine.VR;

public class vrinit : MonoBehaviour
{
	void Start()
	{
		StartCoroutine(LoadDevice("cardboard"));
	}

	IEnumerator LoadDevice(string newDevice)
	{
		VRSettings.LoadDeviceByName(newDevice);
		yield return null;
		VRSettings.enabled = true;
	}
}

Allerdings wird da nichts geladen - auch wenn ich Split auswähle, passiert dort auf meinem Smartphone nichts. Im Editor lädt er z.B. den Splitscreen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zuerst vorweg: Ich kann dir nicht all deine Fragen beantworten. Versuche dir aber trotzdem etwas zu helfen, was das Thema Cardboard angeht.

 

vor 14 Stunden schrieb 3ncrypt0:

Ok, ich habe noch folgendes versucht:

In den PlayerSettings VR aktiviert und als Device none ausgewählt. 

In meiner Scene folgendes Script hinzugefügt:

Allerdings wird da nichts geladen - auch wenn ich Split auswähle, passiert dort auf meinem Smartphone nichts. Im Editor lädt er z.B. den Splitscreen.

Ich fange mal zum Einstieg hier unten an zu beantworten. Auf die Frage kann ich leider nicht direkt eingehen, da ich die native VR Funktion von Unity nie benutzt habe.
Im Endeffekt ist das aber auch nur die GoogleVR SDK, nur fest in Unity integriert. Und somit unter Umständen veraltet und dir fehlen die Prefabs. Von daher würde ich empfehlen das komplett in den Player Settings auszuschalten und die gedownloadete GoogleVR SDK zu benutzen. Das ist auf jeden Fall praktischer für den Einstieg.

Zitat

Cardboard oder Daydream (Habe den Unterschied noch nicht verstanden, da ich komplett neu in das Thema VR).

Cardboard ist das System mit der Pappschachtel als Logo. Sinn und Zweck dahinter ist es, Virtual Reality für jeden zur Verfügung zu stellen. Die Apps dafür werden auch ganz normal über den Play Store vertrieben und sind für jeden (mit einem Gyroscope Sensor im Smarthphone) einseh- und runterladbar. Ebenso kann auch jeder dafür Brillen auf den Markt bringen.
Daydream ist ein geschlossenes System und nur für ne Hand voll (Hochleistungs-)Smartphones verfügbar. (Ähnlich wie bei der GearVR, welche nur mit leistungsstarken Samsung Handys funktioniert). Die Auswahl der Daydream Apps ist dadurch natürlich im Durchschnitt qualitativ deutlich hochwertiger. Dazu kommt, dass es zu der Daydream einen Controller gibt, welcher in der Funktionalität den der Oculus Rift ähnelt (Das wird auch der Unterschied zu der Cardboard SDK sein)

 

Zitat

Mein Frage: Wie kann ich den Splitscreen nur auf eine bestimmte Scene anwenden?

Wenn du die GoogleVR SDK benutzt, kannst du einfach in den NonVR Scenen auf die VR Prefabs verzichten.
Da du was von einen optionalen VR Modus geschrieben hast: Schreibe momentan auch ein Spiel von mir auf einen optionalen VR Modus um und habe dort das so geregelt, dass ich im Player Prefab zwei Camera drin habe (VR / NonVR) und dann per Script die passende aktiviere.

 

 

Warum das aber auf deinem Smartphone nicht wie gewollt funktioniert, kann ich dir leider nicht beantworten. Funktionert es denn auf deinem Smartphone, wenn du eine Sample Scene aus dem SDK Ordner auf dein Handy spielst?

Da es aber mit der nativen SDK schonmal bei dir funktioniert hat, aber mit der gedownloadeten SDK nicht, könnte es auch sein, dass das ein Fehler in der gedownloadeten SDK Version liegt. Vllt mal ne ältere Version in ein leeres Projekt zum testen importieren.
Bevor du dir aber deswegen einen Wolf suchst, gucke lieber erstmal die Github Issues durch. Gibt da häufiger Probleme. Z.B auf dem Galaxy S7 funktioniert der Cardboard Modus seit der GoogleVR SDK 0.85 nicht mehr vernünftig. Das Problem ist seit Juli 2016 auf Github bekannt und immer noch nicht gefixt. Kenne mich deswegen auch nicht mit den neueren SDKs so gut aus.

 

Ansonsten check mal den Youtuber NurFACEGAMES ab. Hab den leider erst zu spät entdeckt, sprich nachdem ich das erste mal alles zum laufen bekommen habe :D

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

danke für deine ausführliche Antwort. Allerdings:

Zitat

Im Endeffekt ist das aber auch nur die GoogleVR SDK, nur fest in Unity integriert. Und somit unter Umständen veraltet und dir fehlen die Prefabs. Von daher würde ich empfehlen das komplett in den Player Settings auszuschalten und die gedownloadete GoogleVR SDK zu benutzen. Das ist auf jeden Fall praktischer für den Einstieg.

Auf der Google Seite Get started schreiben die allerdings, dass man erst das SDK importieren soll (Import the SDK) und als nächsten Schritt, dass man VR in den PlayerSettings aktivieren soll (Configure build settings). Oder ist das nur eine Alternative? Ich bin davon ausgegangen, dass es eine Schritt für Schritt Anleitung ist.

Zitat

Da du was von einen optionalen VR Modus geschrieben hast: Schreibe momentan auch ein Spiel von mir auf einen optionalen VR Modus um und habe dort das so geregelt, dass ich im Player Prefab zwei Camera drin habe (VR / NonVR) und dann per Script die passende aktiviere.

Da könnte ich ja dann auch auf das MainVR Prefab gehen und dort VR auf active oder nonactive setzen. Das SDK nimmt sich ja immer die MainCamera automatisch, sofern VR aktiviert ist. Allerdings ist mir auch aufgefallen, dass wenn man die Scene startet und man im Nachhinein VR aktiviert, es nicht funktioniert...

Zitat

Warum das aber auf deinem Smartphone nicht wie gewollt funktioniert, kann ich dir leider nicht beantworten. Funktionert es denn auf deinem Smartphone, wenn du eine Sample Scene aus dem SDK Ordner auf dein Handy spielst?

Gute Frage - werde ich gleich noch einmal testen. Ich hatte ja in den PlayerSettings VR aktiviert und da wollte er erst eine Oculus erkennen. Diese habe ich aber erst vorgestern bekommen.

Zitat

Bevor du dir aber deswegen einen Wolf suchst, gucke lieber erstmal die Github Issues durch. Gibt da häufiger Probleme. Z.B auf dem Galaxy S7 funktioniert der Cardboard Modus seit der GoogleVR SDK 0.85 nicht mehr vernünftig. Das Problem ist seit Juli 2016 auf Github bekannt und immer noch nicht gefixt. Kenne mich deswegen auch nicht mit den neueren SDKs so gut aus.

Guter Hinweis - Ich habe das S7 Edge... Werde mal eine ältere Version testen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab mir grad mal die GoogleVR SDK 1.30.0 geladen und mit Unity Unity 5.4.5f1 in einem leerem Projekt angeguckt. Da hat sich ja einiges getan, im Vergleich zu der Cardboard SDK 0.7.2, die ich sonst benutze. Wusste auch noch garnichts von der Google VR Services App^^

 

Zitat

Auf der Google Seite Get started schreiben die allerdings, dass man erst das SDK importieren soll (Import the SDK) und als nächsten Schritt, dass man VR in den PlayerSettings aktivieren soll (Configure build settings). Oder ist das nur eine Alternative? Ich bin davon ausgegangen, dass es eine Schritt für Schritt Anleitung ist.

Ui, da hast du recht. Entschuldigung. Alternativ kannst du auch Assets\GoogleVR\GVRBackwardsCompatibility.unitypackage importieren, dann braucht du dir deswegen keinen Kopf mehr machen und musst dich nur noch um die GoogleVR Scripte kümmern.

 

Zitat

Da könnte ich ja dann auch auf das MainVR Prefab gehen und dort VR auf active oder nonactive setzen. Das SDK nimmt sich ja immer die MainCamera automatisch, sofern VR aktiviert ist. Allerdings ist mir auch aufgefallen, dass wenn man die Scene startet und man im Nachhinein VR aktiviert, es nicht funktioniert...

Das deaktiviert soweit ich weiß aber nicht das Head Tracking und vermutlich laufen dann auch noch im normalen Modus GoogleVR Scripte im Hintergrund. Kann aber auch je nach Spielkonzept erwüschnt sein. Das Head Tracking lässt sich aber bestimmt auch einzelnt per Script abschalten.
Funktioniert es dann, wenn du erst im nachhinein den GvrViewerMain aktivierst? Also das komplette GameObject.

 

Zitat

Gute Frage - werde ich gleich noch einmal testen. Ich hatte ja in den PlayerSettings VR aktiviert und da wollte er erst eine Oculus erkennen. Diese habe ich aber erst vorgestern bekommen.

Hats funktioniert? Das wäre die allerwichtigste Frage um das Problem einzugrenzen. Wenn selbst das in einem komplett neuen Projekt nicht funktioniert, liegt es entweder an der Kombination Unity Version / Google VR SDK Version oder Smartphone / GoogleVR SDK Version.

 

Zitat

Guter Hinweis - Ich habe das S7 Edge... Werde mal eine ältere Version testen.

Ah noch ein S7 Besitzer :D

https://github.com/googlevr/gvr-unity-sdk/issues/271

https://github.com/googlevr/gvr-unity-sdk/issues/421

https://github.com/googlevr/gvr-unity-sdk/issues/315

Hat zwar keinen direkten Bezug auf dein Problem und weiß grad auch nicht, ob auch das S7 Edge betroffen ist, würde das aber als S7 Besitzer im Hinterkopf behalten ;) Das Problem fängt kurz nachdem man die App bei Google Play hochgeladen hat an und lässt sich durch das verwenden der Cardboard SDK 0.7.2 lösen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich habe mich mal an diesen Plan gehalten unter Built applications: Choosing startup device - Man soll VR Support aktivieren und in der Liste der SDKs None wählen. Als zweite SDK z.B. Cardboard. 

Die App wird dann als none-VR Application initialisiert. Nun kann man über eine Aktion alle verfügbaren VR Devices durchgehen, welche in der SDK Liste stehen. Ist ein Device kompatible, schaltet er um. Mein Problem ist allerdings, dass ich nicht von None auf z.B. Cardboard oder Split schalten kann. Dann erhalte ich ein komplett verzerrtes Bild und es passieren komische Dinge, sobald ich einmal None erreiche.

Hier mal 3 Varianten:

1: None an erster Stelle - App startet als None-VR App

 

2: Ohne None - Cardboard an erster Stelle der SDK Liste

 

3: None an zweiter Stelle - Cardboard an erster

 

Interessant ist, dass er bei None an zweiter Stelle, die komplette neustartet -_- Danach geht es aber trotzdem nicht. 

In den drei Beispielen habe ich das GoogleSDK vorher rausgeworfen. Bekomme aber das gleiche Ergebnis wie mit dem Google SDK.

Das GoogleVR SDK ist ja auch nur eine Erweiterung zum Nativen Unity VR. Ohne Unity VR geht es also nicht...

Zitat

Unity's native integration with Google VR makes it easy to build Android applications for Daydream and Cardboard. The Google VR SDK for Unity provides additional features like spatialized audio, Daydream controller support, utilities and samples.

Macht mich schon etwas wahnsinnig der Spass - Und auf eine ältere Version springen ist auch nicht immer die beste Idee. Und 2 Apps erstellen (eine VR Version eine noneVR) ist halt auch immer so eine Sache.

 

Hier noch mein Script:

using UnityEngine;
using UnityEngine.VR;
using UnityEngine.UI;
public class ToggleVR : MonoBehaviour
{
    public Text text;
    private int mode = 0;
    //Example of toggling VRSettings
    private void Start()
    {

        //Debug.Log(VRSettings.supportedDevices[1]);
    }
    private void Update()
    {
        //If V is pressed, toggle VRSettings.enabled
        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended || Input.GetKeyDown(KeyCode.V))
        {

            if(mode < VRSettings.supportedDevices.Length-1)
            {
                mode++;
                VRSettings.LoadDeviceByName(VRSettings.supportedDevices[mode]);
                VRSettings.enabled = true;
            }
            else
            {
                mode = 0;
                VRSettings.LoadDeviceByName(VRSettings.supportedDevices[mode]);
                VRSettings.enabled = true;
            }
            
                    
            Debug.Log("Device:" + VRSettings.supportedDevices[mode]);
            this.text.text = "Device:" + VRSettings.supportedDevices[mode] + " \nEnabled: " + VRSettings.enabled;
        }
    }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab jetzt grad nicht so viel Zeit zum Antworten, antworte ggf. heute Nacht oder morgen vernünftig. Hab mir auch noch nicht deine Videos angeguckt.
Wenn du die Libraries einfach als Asset importierst (Assets\GoogleVR\GVRBackwardsCompatibility.unitypackage), ansatt in den Playper Settings zu aktivieren, kannst du das einfach so handhaben:

using UnityEngine;

public class test : MonoBehaviour
{

	void Start ()
    {
        InvokeRepeating("SwitchDisplayMode", 5, 5);

    }

    void SwitchDisplayMode()
    {
        GvrViewer.Instance.VRModeEnabled = !GvrViewer.Instance.VRModeEnabled;
    }
}

Funktioniert bei mir sowohl im Editor, als auch aufm Smartphone perfekt. Und ist die neuste GoogleVR SDK (keine Cardboard SDK, die ich sonst nutze).
Der Kram mit der nativen VR Unterstützung in Unity ist noch relativ neu, vllt liegt der Fehler auch da irgendwo.

 

Edit: Das da was von Backwards Compatibility bei dem Unity Package steht, heißt nicht, dass das alt ist. Das ist einfach nur für ältere Unity Versionen (w.z.B. Unity 5.4.5f1 bei mir) gedacht, die die neue native VR Unterstützung für Smartphone VR noch nicht haben.

 

Edit 2: Sonst fällt mir auch nichts neues mehr ein :/

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...