1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

"Virtual Reality-Spiele entwickeln mit Unity" ─ Migration auf 2018.3 ?

Dieses Thema im Forum "VR-Entwicklung mit Unity" wurde erstellt von deHavilland, 21. Februar 2019.

Schlagworte:
  1. Hallo
    Ich habe letztes Jahr das Buch durchgeackert und möchte nach einer Pause nun fortfahren und ein Projekt für Oculus beginnen. Das möchte ich aus sicher verständlichen Gründen aber nicht mehr auf 2017.xy basieren, sondern auf der aktuellen Unity-Version.
    Leider merkte ich bald, dass sich einiges verändert hat ─ offenbar weil Unity weitere VR-Basis-Funktionalitäten schon integriert hat. Im aktuellen Oculus-Integration-Package finde ich die ganzen Prefabs, darunter auch das OVRCameraRig, gar nicht mehr. Das 1.28.0-"Utilities"-Package kann ich zwar immer noch importieren, aber wohl ist mir bei der Sache nicht.
    Hat ein(e) BuchleserIn die Migration auf 2018.ff schon gemacht? Gibt es Hilfsmittel, Tutorials, Buchnachträge dafür. Ist ein Buchupdate angekündigt?
    Ich will vorläufig nicht viel mehr, als mich in einem Architekturmodell mit Hilfe der Touch frei bewegen können. Hätte auch eine Vive, wenn's damit besser geht?
     
  2. Hallo deHavilland!

    Ich hoffe dir hat das Buch soweit gefallen!
    Zum aktuellen Zeitpunkt ist keine Aktualisierung des Buches auf eine neuere Unity Version geplant. Aus Zeitgründen fällt es mir derzeit auch schwer ein "offizielles" Addendum zu dem Thema zu schreiben.
    Ich werde aber versuchen, dir hier so gut wie möglich informell zu helfen :)

    Vorweg: Es ist nichts schlimmes ältere Versionen zu verwenden. Beruflich verwende ich beispielsweise nur sehr selten die neuste Unity Version, da diese in der Regel fehleranfällig ist und die Dokumentation dazu noch nicht ausgereift ist, wenn man über die "Kern"-Funktionalität hinaus geht. Es geschehen in der Regel auch keine Wunder, wie das die neuste Version plötzlich einen riesigen Performance Boost hat o.Ä. (es sei denn die alte Version hatte einen Bug).
    Trotzdem fühlt es sich natürlich immer besser an, das neuste vom neusten zu verwenden :love: (bis man auf kritische Bugs stößt und dann doch wieder alles downgradet :D)

    Das soll allerdings nicht heißen, dass man für immer mit der 2017.1 arbeiten soll. Deswegen habe ich heute Abend einen kleinen Quickstart-Guide für den Umstieg runter geschrieben. Aufgrund der Kürze der Zeit ist er weder vollständig noch hat er irgendeine Quallitätskontrolle durchlaufen (außer meiner eigenen).

    Umstieg von Unity 2017.1 auf Unity 2018.3 mit Oculus SDK (Rift, Go, Gear, Quest) - Quickstart-Guide


    Ich beziehe mich nachfolgend auf die Unity Version 2018.3.6f1 und die Oculus Integration 1.34 (beides die derzeit neusten Versionen).
    Der Guide setzt teilw. Wissen aus meinem Buch "Virtual Reality-Spiele entwickeln mit Unity" vorraus.

    Neue Menüs und Umbenennung:

    Einer der wichtigsten Unterschiede zwischen den Versionen ist, dass zum einen einige Optionen in eigene Untermenüs verlegt wurden und zum anderen der "VR"-Namespace in "XR" umbenannt wurde (Mixed Reality). Viele Einstellungen die man vorher unter "VR" gefunden hat, sind nun unter "XR" zu finden.

    Am deutlichsten wird dies wohl in den Player Settings, wo du das jeweilige VR-SDK aktivieren musst: Die SDK Auswahl wurde von dem Menü "Other Settings" in das neue Menü "XR Settings" verschoben. Außerdem sind ein paar weitere Optionen hinzugekommen. In der Regel kannst du die aber auf ihren Standardwert belassen (gilt auch für OpenVR).

    [​IMG]

    Zu den Player Settings an sich: In 2018.3 gibt es zwei Wege sie zu öffnen. Einmal über den alten weg: File -> Build Settings -> Player Settings. Dann öffnen sie sich, wie gewohnt, rechts im Inspector. Oder den neuen Weg: Edit -> Project Settings. Es öffnet sich ein neues Fenster, indem du in der Liste links "Player" auswählen kannst. Die Menüs sind identisch, es ist lediglich einmal im Inspector und einmal (übersichtlicher) in einem extra Fenster. Ich vermute die alte Inspector Variante wird in Zukunft nicht mehr vorhanden sein.

    Package Manager:
    Ein weiteres neues Features ist der sogenannte Package Manager.
    Wenn du in Unity 2017 eine Editor Erweiterung installiert hast, landete sie immer in deinem Asset Ordner. Bei großen Projekten wurde das schnell unübersichtlich, vor Allem wenn man noch eine hohe Anzahl an tatsächlichen Assets (Texturen, Modelle, Scriptes, usw.) hat. Um dies zu bekämpfen wurde der Package Manager eingeführt.

    "Assets" welche die Funktionalität von Unity erweitern (wie z.B. Entwicklungswerkzeuge) landen jetzt nicht mehr im "Assets"-Ordner, sondern sind im Project Browser unter "Packages" (- wenn sie bereits aktualisiert wurden.) Derzeit wird der neue Package Manager vor Allem von Unity selbst verwendet: Aktivierst du beispielsweise, wie oben dargestellt, das Oculus SDK, findest du kurz darauf das "Oculus (Desktop)"-Package unter "Packages" (siehe Screenshot, unten).

    Dieses "Oculus (Desktop)"-Package ist nicht das "Utilities"-Package, dass du kennst, sondern eine Variante, die sich rein auf die technische Funktionalität bezieht, also dass Unity mit der Hardware kommunizieren kann. Grundsätzlich kannst du hiermit schon alles machen, es fehlen aber die Beispiele und Prefabs etc, die du aus dem Utlities-Package kennst.

    (Es ist leicht verwirrend, aber diese neuen Packages haben nichts mit den "Unity Packages" zu tun, mit denen du Assets Ex- und Importieren kann, auch wenn die Funktion vergleichbar ist).


    Unter "Window" -> "Package Manager" kannst du sehen, welche Packages dir alle zur Verfügung stehen und welche aktiviert sind.


    [​IMG]


    Das "Oculus Integration"- UnityPackage

    Die dir bekannten Beispiele befinden sich jetzt in dem "Oculus Integration"-UnityPackage (<- ich schreibe das jetzt mal immer dazu, um es besser von den neuen "Packages" für Funktionserweiterungen zu differenzieren). Dieses Package kann offiziell ausschließlich aus dem Asset Store geladen werden und nicht mehr über die Oculus eigene Seite.

    [​IMG]

    Dieses UnityPackage beinhaltet außerdem auch das Oculus Avatar SDK und das Oculus Audio SDK, alles in einem, da es umfangreicher ist, hat es aber einen etwas anderen Aufbau, auf den ich auch kurz eingehen möchte:

    Die Oculus Integration, importiert sich in den "Assets"-Ordner, da hier keine "Low Level"-Schnittstellen enthalten sind, sondern Beispielprojekte.

    Dort werden die im Bild unten dargestellten Ordner angelegt. Der "Avatar"-Ordner entspricht dem Oculus Avatar SDK und der "VR"-Ordner dem Inhalt des "Oculus Utilities"-UnityPackages, (fast) wie es im Buch beschrieben wurde. Der Aufbau dieser beiden Ordner, sowie die darin enthaltenen Prefabs, sind fast identisch zu den im Buch beschrieben Varianten. (Die Scripte wie "OVR Manager" haben zwar ein paar neue Funktionen erhalten, auf diese werde ich hier aber nicht eingehen, da die Prefabs mittels "Drag and Drop" ohne Änderung und wie im Buch beschrieben verwendet werden können.
    Wunder dich nicht, sollte an einem der Prefabs mal ein Script fehlen, dass im Buch noch beschrieben wurde. Die Funktion des Scripts wurde vermutlich in Unity aufgenommen und das Script selbst wird nicht mehr benötigt.

    [​IMG]


    Auch die anderen Ordner der Integration sind ziemlich spannend:
    • Audio Manager: Ein fertig funtkionierender Audio Manger, welcher Sound Clips beispielsweise im vorraus lädt, damit sie beim ersten Abspielen keinen Ruckler verursachen
    • Avatar: Das Oculus Avatar SDK, wie im Buch beschrieben (Scifi Shooter)
    • Lip Sync: Ein Beispiel wie man das Mikrofon ausliest und Lippen Synchron dazu bewegt (enthält auch ein Beispiel, dass einen AudioClip anstelle des Mics verwendet)
    • Platform: Verschiedene Beispiel zur Verwendung der Oculus Platform für Netzwerk Code, Voice Chat usw.
    • Sample Farmwork: Eine Vielzahl an Beispielen für Locomotion, Gegenstände Greifen mit Touch, Mixed Reality Aufnahmen und mehr
    • Spatializer: Oculus Audio SDK für "3D Sounds" ("Binaural Audio")
    • Voice Mod: Ein Stimmenverzerrer Beispiel (für Micro oder Sound Effekte)
    • VR: Das neue Zuhause der Oculus Utilities im Verzeichnis: Assets/Oculus/VR/Prefabs findest du, wie im Screenshot unten zu sehen, die dir bekannten Prefabs:
    [​IMG]



    Beispiel Step by Step Workflow mit Unity 2018.3.6 und Oculus Rift:
    1. Installiere Unity 2018.3.6f1, entweder direkt oder über den Unity Hub.
    2. Lege ein neues, leeres Projekt an
    3. Im Projekt, aktiviere das Oculus SDK:
      - File -> Build Settings... -> im Fenster unten: "Player Settings".
      - Dort wie im Screenshot oben unter "XR Settings" "Virtual Reality Supported" aktivieren und über "+" das "Oculus"-SDK hinzufügen, wenn es nicht automatisch enthalten ist.
      - Das "OpenVR"-SDK nicht entfernen, sondern einfach an 2. Stelle stehen lassen.
      - Unter "Packages" im Project Browser sollte das "Oculus (Desktop)" Package auftauchen, sobald die Player Settings geschlossen werden.
      (Klicke dazu z.B. ein GameObject in der Scene an)
    4. Importiere die Oculus Integration:
      - Öffne den Asset Store (Window -> Asset Store)
      - Suche nach "Oculus" und wähle das Suchergebnis "Oculus Integration" aus.
      - Klicke auf Download
      - Wenn es sich nach dem Download nicht automatisch importiert, klicke im Asset Store Fenster auf "Import"
    5. Nach dem Import öffnet sich ein Dialogfenster "Update Oculus Utilites Plugin", welches dich fragt, ob du das Oculus-Plugin aktivieren möchtest. Wähle "Yes"
      - Es öffnet sich ein weiteres Dialogfenster, dass dich bittet Unity neu zu starten. Wähle "Restart".
    6. Erstelle eine neue Scene mit einem einfachen Terrain o.Ä.
    7. Gehe in den Ordner "Assets/Oculus/VR/Prefabs/" und ziehe den OVRPlayerController in die Scene
    8. Drücke "Play" und nach einer kurzen Ladezeit kannst du in VR herumlaufen (y)

    So! :sleep: Ich denke das sollte genug sein, um dich erstmal ans laufen zu bekommen! Es gibt noch einige andere tolle neue Funktionen in Unity 2018.3. ich sag nur: Nested Prefabs. Prefabs IN Prefabs. :love: Aber dazu kommen wir vielleicht ein anderes mal :censored:

    Falls noch etwas unklar sein sollte, melde dich gerne.

    Beste Grüße
    Daniel :coffee:
     
    #2 Dakor, 26. Februar 2019
    Zuletzt bearbeitet: 27. Februar 2019
    PsychoCandy, Zork23, nullptr und 2 anderen gefällt das.
  3. Ich frag mich immer wieder warum bei so einem Thema oft auf ein spezielles Gerät mit einem PlugIn, genau für dieses Gerät, eingegangen wird und nicht auf die Platformübergreifende Schnittstelle SteamVR.
     
  4. Moin Neidhard,
    in diesem Fall wurde explizit nach Oculus gefragt, deswegen gab es eine Oculus spezifische Antwort. Das Buch behandelt neben dem Oculus SDK- (Desktop und Mobile) auch das SteamVR- und GoogleVR-SDK im Detail. D.h. es werden sowohl PC als auch Mobile VR Brillen behandelt. Die Oculus Tools sind einsteigerfreundlicher, ein weiterer Punkt, warum ich sie, in der kürze der Zeit hier beschrieben habe.

    Für den Entwickler bietet es verschiedene Vorteile das native SDK zu verwenden, da dies in der Regel einfacher ist und die Funktionen der Hardware ohne Umwege intuitiv unterstützt werden. Abgesehen davon gibt's natürlich offizielle Beispiele, welche die Hardware voll ausnutzen (wie das Avatar SDK z.B.). Bei der allgemeineren Schnittstelle OpenVR mussten Kompromisse bei den Entwicklungswerkzeugen eingegangen werden, die sie IMHO behäbiger und weniger intuitiv machen.

    Die Beschreibung hier, kann zudem problemlos auch für Samsung GearVR und GO verwendet werden, welche bei Einsteigern bliebt sind und nicht von SteamVR unterstützt werden.

    -> Aus Entwicklersicht ist es sinnvoll (im PC Bereich) beide SDKs zu kennen um sowohl native Oculus Anwendungen als SteamVR Varianten ausspielen zu können. Neben den Features verhalten sich die Versionen in der Praxis nämlich nicht immer gleich, weshalb man z.B. bei einigen Titeln vor dem Start auswählen kann, ob die SteamVR oder Oculus Variante verwendet werden soll.
    Langfristig wird dies alles innerhalb von Unity vereinheitlicht werden, was mit jeder Version mehr und mehr geschieht. Dann wird das darunter liegende SDK nur noch eine Option in Unity sein und alle Anleitungen sind universal.

    Ich hoffe ich konnte deine Frage, für diesen Fall hier, ausreichend beantworten.

    Solltest du das Buch gelesen haben und Hilfe beim Umstieg auf das neuste SteamVR-Package benötigen, öffne gerne einen eigenen Thread dazu! (y)

    Mit bestem Gruß
    Daniel
     
    #4 Dakor, 27. Februar 2019
    Zuletzt bearbeitet: 27. Februar 2019
    PsychoCandy gefällt das.
  5. Hallo Dakor
    Also erst mal ganz grossen und herzlichen Dank für deine schnelle und ausführliche Antwort mit Dummy-Adaption! Ich hatte es nicht explizit erwähnt, aber die neuen Packages, Oculus Integration und dass da plötzlich ein "Oculus Desktop" vorhanden war, den ich bei einem neu erstellten Objekt aber vergeblich suchte, war für einen Newbie einfach zu viel! ;)
    Mit deinen tollen Erklärungen kam ein allgemeines Verständnis zurück und nachdem ich den "Step-by-step-Workflow" auch erfolgreich umgesetzt habe, freue ich mich darauf, wieder voll ins Buch steigen zu können.
    Betreff Oculus vs. OpenVR: Obwohl ich selber auch eine Vive und Pimax habe, die ich aber (fast) ausschliesslich auf einem dedizierten Flugsimulationssystem einsetze, ist es für mich rein hardware-mässig viel praktikabler, mich am Desktop allein auf die altgediente Oculus zu konzentrieren. Und wie du sagst, eine solche Fokussierung hält für einen Anhänger die Anzahl Stolpersteine halt doch potenziell kleiner...
    Beste Cyber-Grüsse, deHavilland
     
    Dakor und PsychoCandy gefällt das.
  6. Da ist ein Punkt, der mich schon bei der ersten Lektüre irritiert hat, betreff 3.9.6.3 "Alternatives Material erstellen":
    Wenn die SimpleColorPalette und auch die SimpleColorPalette_ALT Bitmaps mit Schachbrettmuster sind und die Buchrücken dann nur die Farbe eines einzigen Feldes anzeigen, dann musst du doch irgendwo auf genau diesen Ausschnitt referenzieren. Ich finde aber im Inspector nichts in dieser Art...
    unity material 3.PNG
     
  7. Es freut mich, dass dir meine Anleitung geholfen hat! Ich hab mir schon gedacht, dass der Hinweis auf die neuen Packages fast alles ist, was du als Hilfe benötigen würdest ^^. Durch die etwas umfassende Anleitung, hilft es aber ggf. auch anderne mit vergleichbaren Problemen.

    Bzgl. deiner neuen Frage: "Woher weiß Unity, welchen Bereich der Textur für die einzelnen Bereiche des 3D-Modells verwendet werden soll?"

    Die Information, welche Bereiche der Textur, für welche Bereiche des 3D-Modells verwendet werden sollen, ist im jeweiligen 3D-Modell selbst gespeichert und kann im Unity Editor nicht eingesehen werden. Man bezeichnet diese Zuordnung von Modell-Oberflächen zur Textur als UV-Mapping. Das Thema ist zusammen mit dem "Erstellen von 3D-Modellen" leider nicht mehr im Buch gelandet.

    Es foglt aber eine kurze Einfürung in das Thema:
    Die Basics des UV-Mappings

    [​IMG]
    (Bildquelle: medium.com)

    Beim UV-Mapping werden die gebogen Oberflächen des 3D-Modells (a.k.a. "Faces") gruppiert und flach "ausgerollt" (visualisiert im Bild oben). Die einzelnen zusammenhängenden Flächen können dann frei auf einer Texturgrafik positioniert werden. Im Falle des Buch-Modells wurde der gesamte Bucheinband in eines der kleinen bunten Kästchen "gequetscht" und die Buch-Innenseiten in ein anderes. Das Bild unten zeigt, wie das in einem 3D-Modell-Editor aussehen könnte:

    [​IMG]
    (Von mir beschrifteter Screenshot aus diesem Youtube Video über UV-Mapping in Blender)

    Links hast ein 3D-Modell, in diesem Fall einen einfachen Würfel. Du kannst hier die einzelnen Oberflächen des Würfels anklicken. Rechts siehst du eine von dir ausgewählte Textur, welche du der Oberfläche zuweisen möchtest. Klickst du links eine der Würfeloberflächen an, wird sie dir im UV-Editor rechts angezeigt (das orangene Rechteck). Im UV-Editor kannst du die UV-Koordinaten nun frei verschieben, drehen und skalieren. Links siehst du dann eine Live-Vorschau des 3D-Modells.
    Wie man im Screenshot sehen kann, verwendet die Oberfläche des 3D-Modells, nur den rechts ausgewählten Bereich.

    Am Anfang verwendet man häufig eine eigene Texturgrafik pro Oberfläche. Aus Performance-Gründen kann es aber sinnvoll sein, unterschiedliche Texturen in einer einzigen Texturgrafik zusammenzufügen und die UV-Maps entsprechend anzupassen. Diesen Vorgang bezeichnet man als "Texture-Packing" und die kombinierte Grafik als "Texture-Atlas". Das wurde auch bei der "SimpleColorPalette"-Texture in dem Beispiel gemacht. Dadurch können (fast) alle 3D-Modelle des Beispiels dieselbe Texturgrafik verwenden, was die Hardware weniger auslastet.

    Das sind auch schon die Basics des UV-Mappings. (y)

    Tiefer Einsteigen:

    Falls du dich mit dem Thema "3D-Modellierung" tiefer auseinandersetzen möchtest, würde ich dir die Software Blender empfehlen, weil sie vollkommen kostenlos ist (auch für kommerzielle Projekte) und es sehr viele Einstigeranleitungen für sie gibt. Der Einsteig in Blender kann etwas komplizierter wirken, da viel über Shortcuts auf der Tastatur erledigt wird, anstelle von Menüs. Hat man die Grundlagen einmal drin, ist es aber ein mächtiges Werkzeug, dass auch in professionellen Umgebungen verwendet wird.

    Es sei jedoch gesagt, dass (relativ teure) Programme wie Autodesk Maya oder 3D Studio Max in professionellen Umgebungen häufiger zum Einsatz kommen. Ich sehe es aber so: Wenn du die Grundlagen vom 3D-Modellieren kennst, kannst du dich schnell in jede Software einarbeiten. Die Bedienung und die Menüs sind vielleicht unterschiedlich, die Techniken sind aber i.d.R. gleich.

    Ich habe hier auch nochmal ein Anleitungsvideo zum UV-Mapping in Blender herausgesucht, wo du das ganze einmal in Aktion sehen kannst:
     
    Rocco und SolKutTeR gefällt das.
  8. Hello Dakor,
    I want to start my first project in Unity and was very impressed with this 3D model .

    Is this possible for a novice or should I start with a simple project? I am well-versed in ZBrush and learn for a while Blender.
    or should I start with a simple project?
    33234.png
     
  9. Hi Phillipp,
    that 3d scan is not optimized for usage in real-time game engines.
    It's not rigged, that means it has no skeleton and no joints, so it wouldn't be possible to apply animations to it. Because the Model is not in a Standard T-pose it will also be a little harder to get all bones and joints aligned perfectly. If they are not in the correct positions, all animations won't like they are supposed to. Here's a quick tutorial for rigging in blender to get you started:

    I did not download it, but from the fact that it's a 3d scan, i assume it will also be to detailed and would need some cleanup (reducing of polygons) to get it working smoothly in a game.

    So in summary it would need some time and effort on your side, before you can actually use it. I would recommend to go for something simpler, that is "ready to use" if you are new to this. The Asset Store is a good starting point, they also have lot's of free assets: https://assetstore.unity.com/?price=0-0&orderBy=1

    Best regards
    Daniel
     
    Rocco und ShyCoconut-VR gefällt das.