Von Arnold Schlegel

Estimated reading time: 4 Minuten

Techblog

AR + VR: Versionsverwaltung und Projektstruktur in Git managen

Für unseren ShowCase beim IT-Innovation Summit 2017 haben wir AR- und VR-Technologien kombiniert: Ein Softwareentwickler bewegt sich mit Hilfe einer HTC Vive frei in SoftwareCity, einer virtuellen Software-Stadt. Die anderen Teilnehmer folgen ihm mit der Microsoft HoloLens. Durch die Kombination aus Virtual- und Augmented-Reality-Brillen wird der Austausch über die Software zur Stadtführung. Mehr gibt es…

Techblog

Für unseren ShowCase beim IT-Innovation Summit 2017 haben wir AR- und VR-Technologien kombiniert: Ein Softwareentwickler bewegt sich mit Hilfe einer HTC Vive frei in SoftwareCity, einer virtuellen Software-Stadt. Die anderen Teilnehmer folgen ihm mit der Microsoft HoloLens. Durch die Kombination aus Virtual- und Augmented-Reality-Brillen wird der Austausch über die Software zur Stadtführung. Mehr gibt es im Blog von Christian Langenmair und Stefan Kassal hier. Grundlage für die Stadtführung ist eine Code-Visualisierung

Bei der Entwicklung gab es auf zwei große Herausforderungen, mit denen wir nicht gerechnet hatten: die Projektstruktur und die Versionsverwaltung mit Git. 

Herausforderung Projektstruktur

Unsere erste Herausforderung war es, das Projekt so zu strukturieren, dass die VR- und AR- Projekte sich nicht gegenseitig behindern. Wir haben uns für eine Unterteilung in drei Teilprojekte und einen gemeinsamen Ordner entschieden.

  • Das Teilprojekt SoftwareCity AR fasst spezifische Assets und Projekteinstellungen für die HoloLens zusammen.
  • Das Teilprojekt SoftwareCity VR enthält nur die VR-spezifischen Assets für die Vive und Projekteinstellungen.
  • Der HoloLensSimulator ist ein Testprojekt für die Software-Entwicklung: Es wird zu Testzwecken für die Kommunikation zwischen VR und AR verwendet. So prüft man zum Beispiel auch ohne HoloLens, ob die Position des VR-Trägers, des „Vive Guys“, korrekt übertragen wird. Gerade bei Tests stört man so die Kollegen nicht, die am AR-Projekt arbeiten.
  • Der Shared Folder enthält Komponenten, die für alle drei Projekte relevant sind, zum Beispiel SoftwareCity Builder oder die Positionssynchronisierung.

Dieser Projektaufbau war nötig, da VRTK, das Unity Package für Virtual Reality, nicht kompatibel mit HoloLens ist. Es kann also nur VR-Seitig-verwendet werden. Die Projekteinstellungen für die HoloLens sind dagegen nicht sinnvoll für die VR-Seite.

Alle drei Projekte greifen auf gemeinsame Ressourcen im Shared Folder zu, in unserem Beispiel den Code der SoftwareCity. Für den Zugriff auf die Inhalte dieses Shared Folders verwenden wir symbolische Links. Alle spezifischen Assets für VR oder AR sind im jeweiligen Teilprojekt abgelegt.

Herausforderung Versionsverwaltung

Die zweite große Herausforderung war das Einrichten von Git: Unity erzeugt für jedes Gameobject ein Metafile neu, wenn dieses nicht schon vorhanden ist. Die Standard-Einstellung im Git war – zumindest bei uns – dass Metafiles nicht synchronisiert werden. Bis wir das herausgefunden hatten, hat es eine Weile gedauert…

Unser Tipp: Es lohnt sich, das Gitignore File gleich zu Beginn richtig einzurichten. So werden alle wichtigen Dateien, auch aus Unity, versioniert.

Unity richtet man dafür so ein:

  1. Edit=>Project Settings =>Editor=> Version Control Mode auf Visible Meta Files setzen
  2. Im gleichen Menü: Asset Serialization auf Force Text setzen

Das Gitignore File könnte für ein Unity-Projekt so aussehen:

# =============== #

# Unity generated #

# =============== #

Temp/

Library/

 

# ===================================== #

# Visual Studio / MonoDevelop generated #

# ===================================== #

ExportedObj/

obj/

*.svd

*.userprefs

/*.csproj

*.pidb

*.suo

/*.sln

*.user

*.unityproj

*.booproj

 

# ============ #

# OS generated #

# ============ #

.DS_Store

.DS_Store?

._*

.Spotlight-V100

.Trashes

ehthumbs.db

Thumbs.db

Viel Spaß beim Ausprobieren!

Mehr Tipps zum Ausprobieren gibt es im Blog von Ihno Lübbers und Jonas Mattes. Sie beschreiben, wie die Interaktion in AR und VR programmiert wird.


Von Arnold Schlegel