Rift DK2 & Unreal Engine 4 – Erste Schritte

Dieses Thema im Forum "VR Entwicklung" wurde erstellt von Cynger, 13. September 2014.

  1. Nachdem mein Umzug endlich weitestgehend erledigt ist und ich ein paar Tage Zeit hatte mal hier und da Rift DK2 Demos auszuprobieren, fand ich es an der Zeit, auch selbst mal ein wenig tätig zu werden. Schließlich habe ich nicht ohne Grund die Unreal Engine abonniert.

    Da ich gleich von Anfang an auch über ein paar Problemchen gestolpert bin dachte ich, ich eröffne einfach mal diesen Thread, in dem ich meine Erfahrungen protokolliere. Natürlich gehe ich in diesem Rahmen auch gern auf eure Fragen ein oder versuche zu helfen wo ich kann, so wie ich für das eine oder andere Problem sicherlich auch selbst Hilfe gebrauchen könnte.

    Dies sind wirklich erst einmal nur erste Schritte und zielt nicht direkt auf das ab, was ich letztlich gern entwickeln würde. Halt nur um zu lernen, wie was im Zusammenhang mit der Rift funktioniert.

    Mein Setup ist aktuell wie folgt:
    • Unreal Engine 4.4.2 (enthält libovr 0.4.1a)
    • Oculus Runtime 0.4.2 Beta
    • Rift DK2 Firmware 2.12
    • Rift im "Direct HMD Access"-Modus
    • GeForce GTX 780 (Grafiktreiber 340.52)
    • Intel Core i7 4790k

    0 – Vorbereitung
    Zunächst bin ich auf den Oculus Rift Eintrag im UnrealEngine-Wiki gestoßen. Dort war zum Einstieg insbesondere erst einmal interessant der Abschnitt zum VR-Template, welches ich mir daraufhin erst einmal heruntergeladen und wie dort angegeben in meine UE4-Installation integriert habe.

    Dann habe ich die UE4 gestartet und habe ein neues Projekt auf Basis dieses VR-Templates angelegt. So weit, so einfach.

    1 - Erste Startversuche
    Direktes Ausführen im Editor soll ja nicht gehen, es als Standalone-Version zu starten sollte jedoch eigentlich klappen. Also habe ich das Projekt eben einfach mal als Standalone gestartet (Play -> Standalone Game). Daraufhin wird das Spiel natürlich erst einmal nur auf dem Monitor ausgegeben. Um den VR-Modus zu starten soll man in die Konsole und dort "stereo on" eingeben, und das Spiel dann mit [Alt]+[Enter] in den Vollbildmodus schalten.

    1a - Konsolenprobleme
    Da fing dann schon mal das erste Problem an, die Konsole ließ sich nicht öffnen. Ist wohl das gleiche Problem wie bei vielen UE4-DK2-Demos, die Standard-Taste für die Konsole funktioniert nicht richtig bei deutschem Tastaturlayout. Also erst einmal die Taste umkonfiguriert. Dies geht im UE4-Editor über das Menü Edit -> Project Settings -> Input -> Console Key. Ich habe es der Einfachheit halber erstmal auf die [#]-Taste gelegt.

    1b - Direct-Modus-Probleme
    Also nächster Versuch: Start als Standalone Game. Und siehe da, die Konsole lässt sich öffnen und mit "stereo on" erhält man zumindest schon mal das typische verzerrte Bild der Rift. Das Wechseln in den Fullscreen-Modus bringt allerdings erst einmal gar nichts, die Rift bleibt einfach schwarz. *grml* Nach ein wenig herumprobieren funktioniert es auf einmal, aber auch nur bis zum nächsten Neustart des Rechners.

    Nach einigem Mehr an Herumprobierereien habe ich für mich zumindest einen Workaround gefunden: Es funktioniert immer sicher, wenn ich zuvor im Oculus Config Tool einmal die Demo Scene gestartet habe: Diese klappt immer auf Anhieb im Direct-Modus, und anschließend funktioniert es dann auch in meinem UE4-Projekt. Ist wohl ein typischer Fall von "ist halt nur ein Development Kit". ;)

    In diesem Zusammenhang habe ich dann auch bemerkt, dass man sich in der UE4-Konsole das "stereo on" auch sparen kann: Wenn ich das Beispiel in den Fullscreen-Modus schalte, aktiviert er automatisch den verzerrten Stereo-Modus. Also einfach als Standalone starten und dann in den Fullscreen gehen. So weit so schön.

    2 - Performance Probleme (Judder)
    So lief es dann zumindest, aber nicht unbedingt wie erwartet. Die Beispiel-Szene des VR-Templates ist ja nun wirklich nicht komplex, dennoch schwanken die FPS irgendwo zwischen 35 und 130. Mit der Folge, dass es aufgrund des immensen Judders völlig unbrauchbar und ungenießbar ist. Total unverständlich im ersten Moment, denn rein von der Leistung des Rechners her dürfte das eigentlich nicht passieren. Also musste ich erst einmal weiter schauen und Ideen sammeln, wie man dieses Problem beseitigen kann.

    Erste Idee: In Edit -> Project Settings -> General Settings erst einmal das "Smooth Frame Rate" abschalten, und "Min Desired Frame Rate" auf 300 (Standard 35!) gestellt, nur um da erst einmal in kein künstliches Limit zu laufen. Also nächster Versuch. Ergebnis: Gleichbleibend, gleiche FPS-Sprünge wie zuvor und Judder ohne Ende.

    Zweite Idee: In Edit -> Editor Preferences -> General -> Miscellaneous den Punkt "Use Less CPU when in Background" aktivieren. Ergebnis beim nächsten Version: BÄÄÄÄM, stabile 75FPS, kein Judder mehr spürbar. Offenbar stört die CPU-Auslastung des Editors wohl das daraus gestartete Standalone Game. Muss man auch erst einmal wissen.

    Nun funktioniert das Beispiel schon mal sehr gut und ist somit eine gute Ausgangsbasis. Allerdings sieht es natürlich weder besonders toll aus, noch kann man besonders viel darin machen.

    Dies zu ändern wäre dann erstmal der nächste Schritt. Allerdings muss ich dafür meine UE4-Kenntnisse erstmal wieder auffrischen bzw. erweitern, und mal schauen wie ich kostengünstig neue Meshes für die UE4 erzeugen kann (nein, Maya/3DS kann ich mir dann doch nicht leisten ^^). Vllt. mal mit Blender versuchen? Mal schauen... (Tipps werden gern angenommen :co: )
     
  2. Hast du denn mit dem UE4 zuvor schon mal gearbeitet? Dann würde ich erstmal die Epic Games eigenen YouTube Tutorials empfehlen, weil für nicht alles muss man neue Meshes erstellen. Gerade einfache Strukturen wie Wände etc. kann man prima in UE4 selbst erstellen, zeigen die Video Tutorials sehr gut.

    Ansonsten danke für deine Ausführung hier, sind hilfreiche Tipps über die hier sicherlich Einige selbst gestolpert wären. :)
     
  3. Na ja, habe vor einer Weile mal einen ganzen Schwung der Youtube-Videotutorials von Epic durchgearbeitet, kenne die also schon. Hab den Kanal sogar abonniert. Trotzdem danke für den Tipp. :)

    Ja, das Erstellen von Meshes mit dem UE4-Editor ist brauchbar (vor allem fürs Prototyping), aber für das was ich mir so vorstelle brauche ich auf Dauer auf jeden Fall noch ein halbwegs ordentliches 3D-Modellierungsprogramm.
     
  4. Dann viel Spaß, wenn du damit noch nie gearbeitet hast ist das eine extra Wissenschaft für sich, ganz ohne UE4 selbst. ;)

    Würde da eher mal überlegen ob du alles selbst machen musst oder nicht doch auf freies Material zurück greifst. Die ganzen Assets von Epic aus den ganzen Demos kann man ja frei verwenden wie man lustig ist. Nun ist ja auch der Marktplatz online, zwar noch wenig Inhalte drin, wird aber garantiert noch mehr werden. Ansonsten ist die Linksammlung hier zu kostenlosem Zeug sicherlich gut brauchbar:

    http://forum.unrealengine4.de/Thread/58-Texturen-und-andere-Links/

    Denke das klügste wäre erst mal sich in UE4 richtig einarbeiten und dann ein Prototyp mit dem vorhandenen Zeug erstellen. Ansonsten hat man am Ende zu viele Baustellen auf einmal. Hab das auch oft genug falsch gemacht. ;) Gehöre da klar zu den Leuten die zu viel auf einmal wollen... ausgerechnet in dem Bereich fehlt mir teilweise etwas die nötige Geduld. Aber gut, Jeder arbeitet anders. ^^
     
  5. Mit 3D-Modellierung kenne ich mich schon ein wenig aus. Hab an der Uni einiges mit Maya gemacht. Ist jetzt als Nicht-mehr-Student bloß nicht mehr so einfach leistbar. ;)

    Ansonsten wächst der Marktplatz ja langsam, da wird man sicher auf das Eine oder Andere zurückgreifen können mit der Zeit. Werde auch selbst sowieso erstmal nur das machen, was ich unbedingt machen muss.

    Weitere Einarbeitung in UE4 hat aber definitiv erstmal Priorität.
     
  6. Das wird in zwei Monaten mein neuer Lieblingsthread. Ich möchte ebenfalls im aktuellen UDK ein wenig zaubern.

    Zuletzte hatte ich mit dem Half-Life Editor "Worldcraft" zu tun. Das ist über 10 Jahre her. Damals war ich aber, wenn ich das so sagen darf, sehr erfolgreich und habe viele Half-Life/CounterStrike Maps entworfen und zusammen mit einer damaligen Entwicklercommunity verfeinert.

    Bis jetzt sehen die UDK Videos nach nichts anderem aus als eine schönere Form von Worldcraft.

    Im Gegenteil. Scheint als nehmen die vorhandenen Assets aus dem Katalog noch mehr arbeit ab. Damals musste man jeder geometrischen Form beibringen was genau sie für Eigenschaften hat und wie diese getriggert werden.

    Ich bin also gespannt. Werde mir jetzt 2 Monate soweit es geht Tutorials reinziehen und wenn DK2 dann da ist und ich die ersten Demos durch habe, mit dem "bauen" anfangen. Auf Code Ebene werde ich mich aber wohl vorerst nicht bewegen, das ist mir zu hart.

    Gruß
    Christian
     
  7. Für die Code Ebene ist ja Blueprint da, sozusagen der Coding Ersatz für eher kreative Leute, die es nicht so mit Programm Code haben. ;)

    Mit Blueprint muss man sich sowieso auseinander setzen, da es auch für Materialien etc. genutzt wird. Hab noch nie mit so etwas richtig gearbeitet und finde es daher am Anfang etwas schwer da durchzublicken, aber generell soll damit fast alles möglich sein, was auch mit C++ möglich ist und wenn nicht kann man Blueprint selbst mit C++ Plugins erweitern und mit der Community teilen (Marktplatz?). Daher ist bei UE4 vor allem eines wichtig: die Community. Um so mehr diese sich gegenseitig hilft desto leichter ist es später Dinge zu erstellen.

    Kann man nur hoffen, dass nicht zu viele Geld gierig werden und man für jeden "Mist" was zahlen muss, dann wird es nämlich schnell doch sehr teuer (wie heißt es so schön: Kleinvieh macht auch Mist). Aber hier und da werd ich sicherlich Geld ausgeben, grundsätzlich hab ich damit kein Problem, wenn die Preise fair bzw. mir es wert sind. ^^

    Ansonsten merke ich selbst gerade, wie wieder die Lust steigt mich mit UE4 zu beschäftigen. Ich hab da jedes Jahr so eine Art Sommerloch, wo ich zu kaum etwas richtig Lust habe und mich kaum motivieren kann. Scheint sich endlich dem Ende zu neigen, war lang genug dieses Jahr. ;)
     
  8. Rift DK2 & UE4 - Tag 2

    Tag 2 meiner ersten VR-Gehversuche mit der UE4.

    Performanceprobleme, die zweite...
    Ich habe mal ein wenig mit Partikelsystemen herumgespielt. Dabei jedoch gleich erst einmal festgestellt, wie nah man schon bei so einer simplen kleinen Szene an den Leistungsgrenzen operiert. Kaum war nämlich ein (einzelnes!) Partikelsystem aktiv, schon hatte ich - auf mittlere und kurze Entfernung - wieder extreme Performanceprobleme und entsprechendes Juddern.

    Schon erschreckend, allerdings ist es ja nicht unbedingt eine Unbekannte, dass die UE4 was das Stereo-Rendering angeht noch nicht unbedingt zu den optimiertesten Engines gehört. Ich hoffe da wird sich mit der Zeit auch noch etwas tun. Die GTX 780 ist ja nun keine langsame Karte, wird bei der einfachen Szene allerdings laut MSI Afterburner schon mehr oder weniger komplett ausgelastet.

    Ich konnte das Problem jedoch erst einmal reduzieren, indem ich die "Current Screen Percentage" (soweit ich das verstanden habe ist das eine Einstellung für Over- und Undersampling) von 130 auf 110 bzw. 100 reduziert habe. Hierbei ist zu erwähnen, dass das Bild auf dem DK2 bei Änderung dieser Einstellung hängen bleibt, die gespiegelte Variante auf dem Monitor jedoch nicht. Dieses Problem kann man jedoch ganz einfach lösen, indem man mit [Alt] + [Enter] den Vollbildmodus verlässt, und anschließend mit der selben Kombination erneut auf Vollbild zurück stellt.

    Alternativ hat es auch geholfen die Effektqualität zu verringern, qualitativ ist nämlich initial auch alles auf Max gestellt. Da muss man sich wohl ganz klar darauf einstellen ständig um das letzte Quentchen der Performance-Schraube kämpfen zu müssen, wenn man für VR entwickelt und dennoch eine halbwegs gute Grafikqualität erreichen will.

    Controller
    Außerdem hab ich mir übergangsweise mal einen XBox360 Wireless Controller for Windows "gegönnt". Meinem ersten Empfinden nach ganz ordentliches Gamepad. Hätte zwar nicht gedacht, dass ich mir mal ein Gamepad besorgen würde um damit dann in 1st Person zu spielen (bin doch eher der Tastatur + Maus Typ), aber wenn mich - zumindest übergangsweise - etwas dazu bringen kann, dann VR. ;) Irgendwann wird (neben Perception Neuron) dann sicherlich auch noch mal ein vernünftiger VR-Controller folgen (STEM oder sowas vllt.).

    Bis dahin ist das Pad aber praktisch um auch im Stehen neben meinem Schreibtisch in der VR navigieren zu können, ohne jedes Mal mit zu Maus & Tastatur laufen zu müssen. Die UE4 erkennt das Pad zum Glück auf Anhieb, man kann also ohne Anpassung herumlaufen, sich umdrehen, springen und das VR-Menü des VR-Templates aufrufen. Außerdem habe ich noch auf eine Taste die Funktion gelegt, mit der man das Positional Tracking (Position in Relation zur DK2-Kamera) zurücksetzen kann (wie in der Rift Schreibtisch-Demo-Szene wenn man auf "Reset" klickt). Das ist erstmal das Wichtigste, weitere Anpassungen kommen später mal.



    Macht so jedenfalls schon mal richtig Spaß darin zu basteln. :D
     
  9. Hast du denn schon ne Vorstellung was du basteln willst oder ist es aktuell nur "spielerei"

    Ich habe schon konkrete Vorstellungen, glaube aber das Projekt ist für meine Fähigekeiten zu ambitioniert. Wie sieht es aus mit Charakteranimationen von bspw. NPCs? Wie werden die in der Engine behandelt/eingefügt?
     
  10. Naja, es ist ja ein leichtes sich ein Projekt auszudenken das zu viel für einen selbst ist. Keine Kunst. Vor 10 Jahren wollte ich mal mit einem winzigen Team ein MMO entwickeln... ich glaub viel mehr muss ich dazu nicht sagen. :ROFLMAO:

    Ich werd mich erst mal weiter in UE4 selbst einarbeiten und dafür mein Partykeller Projekt weiter machen. Vor allem vor Blueprint graust es mir noch etwas, aber nicht so sehr wie vor C++. ^^

    Ich lerne am liebsten in dem ich mir angucke wie Andere etwas umgesetzt haben und ich die Funktionsweise dahinter verstehe. Von daher sind YouTube Tutorials natürlich interessant, wobei mir in Text/Bild Form fast lieber ist, da kann man besser mit seiner eigenen Geschwindigkeit ran gehen, auf YouTube wird man ja teilweise erschlagen so schnell wie manche Tuts dort sind. ^^


    @Cynger: ist ja auch das Standard PC Gamepad, dafür hat MS gesorgt. Ich hatte das Pad noch vor meiner XBox 360 (im übrigen läuft jedes XBox 360 Pad am PC, Wireless aber nur mit dem Wireless PC Empfänger, die Kabel Version ist aber P&P). ;)

    Selbst mit einer solchen Engine zu arbeiten zeigt einem erst mal wie schwer ist bei der Grafik Kompromisse einzugehen, da enttarnen sich viele als Grafik Huren. ^^