Kodierung für die HoloLens mit Unity 5 – Teil 2:Erstellen eines einfachen „Hello World“-Projekts

Kodierung für die HoloLens mit Unity 5 – Teil 2:Erstellen eines einfachen „Hello World“-Projekts

Letztes Mal habe ich mir die Einrichtung meiner Entwicklungsumgebung angesehen, damit ich für den Microsoft HoloLens-Emulator entwickeln kann. Dieses Mal werde ich ein Projekt in Unity erstellen, ein einfaches primitives Objekt hinzufügen und etwas C# verwenden, um etwas Interessantes mit diesem Objekt zu machen.

Erstellen eines neuen Unity 5-Projekts

Wenn Sie Unity korrekt installiert haben, wird Ihnen nach dem ersten Öffnen von Unity 5 HTP ein Bildschirm wie der folgende angezeigt.

Klicken Sie auf die Schaltfläche „Neues Projekt“, und der Bildschirm sollte sich ähnlich wie unten ändern. Ich habe für mein Projekt den Namen „HelloWorld“ gewählt und es auf meinem Desktop gespeichert.

Nachdem ich den Namen und den Speicherort des neuen Unity-Projekts eingegeben hatte, klickte ich auf die Schaltfläche „Projekt erstellen“ und Unity zeigt den folgenden Bildschirm. Dies ist ein (fast) leeres Projekt, das nur die Hauptkamera des Projekts und das standardmäßige Richtungslicht enthält.

Der nächste Schritt besteht darin, die Szene mit einigen Einstellungen zu aktualisieren, die für eine HoloLens-App sinnvoll sind.

Aktualisieren der Szene für die HoloLens

Die Standardkamera wird etwa 10 m hinter dem Ursprungspunkt der Szene eingestellt. Wir werden einige Änderungen an dieser Kamera vornehmen, indem wir die Registerkarte "Inspektor" auf der rechten Seite verwenden.

  • Zuerst habe ich die Position der Kamera auf (0, 0, 0) geändert, was bedeutet, dass X =0, Y =0 und Z =0;
  • Als Nächstes habe ich im Abschnitt Kamera den Dropdown-Wert Markierungen löschen in Vollfarbe geändert .
  • Schließlich ändere ich die Hintergrundeigenschaft in Schwarz (R =0, G =0, B =0, A =0).

Diese sorgen dafür, dass sich die Kamera – also der Punkt, durch den wir mit der HoloLens die Welt betrachten werden – am Ursprungspunkt befindet.

Außerdem haben wir die Standard-Skybox (d. h. das Hintergrundbild) entfernt, und alle in unserer Szene schwarz gerenderten Pixel erscheinen in der HoloLens transparent.

Würfel hinzufügen

Nachdem wir die Szene für die HoloLens konfiguriert haben, ist es an der Zeit, unserer Szene ein einfaches Objekt hinzuzufügen.

Zuerst klicken wir mit der rechten Maustaste auf unseren Hierarchiebereich auf der linken Seite, wählen „3D-Objekt“ und dann „Würfel“ aus dem erscheinenden Untermenü aus.

In der Mitte der Szene sollte ein einfacher Würfel erscheinen, wie im Bild unten. Wenn das Bild nicht an der richtigen Stelle angezeigt wird, vergewissern Sie sich, dass das Würfelobjekt im Menü „Hierarchie“ auf derselben Einrückungsebene wie die Hauptkamera und das Richtungslicht angezeigt wird.

Material erstellen

Ich möchte, dass mein Würfel etwas interessanter ist als nur ein grauer Block – ich möchte, dass er eine rote Farbe hat. In Unity können wir dies erreichen, indem wir ein Material erstellen Asset und Hinzufügen dieser Komponente zum grauen Würfel.

Um ein Material zu erstellen, klicke ich mit der rechten Maustaste auf die Assets -Knoten im Projektfenster unten links auf dem Bildschirm. Aus dem erscheinenden Kontextmenü wähle ich „Erstellen“ und aus dem nächsten erscheinenden Menü „Material“ aus.

Ein neues Element wird erstellt und im Bedienfeld „Elemente“ angezeigt – der Cursor und der Fokus befinden sich auf diesem Element, und ich habe den Wert „Rot“ eingegeben. Außerdem erscheint eine graue Kugel in der unteren rechten Ecke. Im Inspector-Panel habe ich neben dem Label „Albedo“ auf die Farbauswahl geklickt. In dem angezeigten Popup habe ich eine rote Farbe ausgewählt, die die Farbe des Balls in der unteren rechten Ecke aktualisiert, wie unten gezeigt.

Nachdem ich nun ein Material erstellt habe, kann ich dieses dem Würfel zuweisen. Zuerst habe ich das Cube-Objekt im Hierarchie-Panel ausgewählt. Als nächstes zog ich das Material mit dem Namen „Red“ auf das Inspector-Panel auf der rechten Seite. Dies ist eine Oberfläche, auf die ich Komponenten ziehen und ablegen kann. Sobald ich das rote Material auf den Inspektor für den Würfel ziehe, wird der Würfel rot.

Bewegen des Würfels

Es ist nicht sehr nützlich, diesen Würfel um unseren Standpunkt herum zu haben – es ist sinnvoller, ihn vor unserem Standpunkt zu haben.

Der einfachste Weg, den Würfel zu bewegen, ist die Verwendung der ziehbaren Achse, die von den sichtbaren Flächen des Blocks nach außen zeigt. Ich klickte auf den blauen Pfeil – der der Z-Richtung entspricht – und zog ihn etwa 3,5 Einheiten nach vorne.

Nur um diesen Block optisch etwas interessanter zu machen, würde ich ihn gerne um seine Achsen drehen. Dazu klicke ich auf die Schaltfläche „Drehen“ in der oberen linken Ecke (es ist die dritte Schaltfläche in der Fünfergruppe und im Bild unten ausgewählt). Der rote Würfel ist jetzt von einer Reihe von Kreisen umgeben, anstatt von den drei Pfeilen. Sie können auf diese Kreise klicken und sie ziehen, um den Würfel zu drehen, wie unten gezeigt.

Das war es für den ersten Abschnitt. Sie können eine Vorschau dessen anzeigen, was Sie durch die HoloLens sehen werden, indem Sie auf die Wiedergabeschaltfläche oben in der Mitte des Bildschirms klicken, die so etwas wie den folgenden Bildschirm anzeigt. Der gedrehte Würfel schwebt in einer schwarzen Welt, direkt vor unserem Blickwinkel.

Schließlich habe ich die Szene durch Drücken von Strg+S gespeichert und HelloWorld eingegeben – Sie können dies im Assets-Panel sehen.

Erstellen Sie ein C#-Skript, um das Objekt rotieren zu lassen

Nehmen wir die Komplexität eine Stufe höher. Wir können C#-Skripte schreiben und sie auf Objekte in unserer virtuellen Welt anwenden.

Es ist sehr einfach, ein Skript zu erstellen – klicken Sie mit der rechten Maustaste auf die Assets-Notiz im Bedienfeld „Projekte“ und erstellen Sie ein C#-Skript aus den Kontextmenüs, wie unten gezeigt.

Ich habe ein Skript namens RotatorScript erstellt. Um dies zu bearbeiten, doppelklicke ich darauf. Dies öffnet VS2015 für mich, obwohl es bei Ihrer Installation möglicherweise MonoDevelop öffnet.

Ich habe den folgenden Code eingegeben:

using UnityEngine;
 
public class RotationScript : MonoBehaviour {
 
	public float YAxisRotationSpeed;
 
	// Update is called once per frame
	void Update () {
            this.transform.Rotate(0, YAxisRotationSpeed * Time.deltaTime, 0, Space.Self);
	}
}

Der obige Code macht eine Sache – jedes Mal, wenn der Frame von der Rendering-Engine aktualisiert wird, dreht sich das Objekt, auf das das Skript angewendet wird, ein wenig um seine eigenen Achsen. Speziell in diesem Fall habe ich die Drehung um die X-Achse und die Drehung um die Z-Achse auf Null festgelegt, und die Drehung um die Y-Achse ist YAxisRotationSpeed Grad pro Sekunde.

Der obige Code bezieht sich auf Time.deltaTime – Dies ist eine eingebaute Unity-Funktion, die uns sagt, wie lange es seit dem letzten Frame her ist. Also, wenn wir die Geschwindigkeit multiplizieren – YAxisRotationSpeed – nach der verstrichenen Zeit – Time.deltaTime – das Ergebnis ist die Gradzahl, um die unser Würfel gedreht werden soll.

Nachdem ich das Skript in Visual Studio gespeichert hatte, wechselte ich zurück zu Unity. Ich habe meinen Cube im Hierarchie-Panel ausgewählt und dann das RotationScript in den Inspector für den Cube gezogen. Auf der Eigenschaftsseite, die im Inspektor angezeigt wird, habe ich den Wert der „Y-Achsen-Rotationsgeschwindigkeit“ auf 50 geändert.

Wenn ich jetzt in Unity auf die Play-Schaltfläche klicke, kann ich die Spielansicht der Szene wieder sehen, aber dieses Mal dreht sich der Würfel um seine eigene Y-Achse.

Hallo Welt!

Mir kam der Gedanke, dass ich mit den einfachen Fähigkeiten, die ich in diesem Beitrag gelernt habe, etwas ziemlich Interessantes mit Unity machen könnte – statt eines rotierenden Würfels könnte ich der Szene eine Kugel hinzufügen, ein Material anwenden, das ein Bild der Erde ist, und zeigen ein rotierender Globus, was ein viel passenderes „Hello, World“-Projekt wäre. Ich könnte sogar eine zweite Kugel hinzufügen, um diese zu drehen, die den Mond darstellen könnte.

  • Als ersten Schritt habe ich auf das Cube-Objekt in meiner Hierarchie geklickt und es gelöscht. Dadurch wurde der rote Würfel aus meiner Szene entfernt.
  • Als Nächstes habe ich mit der rechten Maustaste auf das Hierarchiefenster geklickt und „Leere erstellen“ ausgewählt. Dadurch wurde ein leeres GameObject in der Hierarchie erstellt.
  • Mit Hilfe des Transform-Bedienfelds im Inspektor für das GameObject habe ich die Z-Position auf 4 geändert, wodurch das GameObject 4 m vor meinem Blickwinkel platziert wurde.

  • Als Nächstes habe ich mit der rechten Maustaste auf das GameObject in der Hierarchie geklickt und ein kugelförmiges 3D-Objekt hinzugefügt. Ich habe diese „Erde“ umbenannt und die X-, Y- und Z-Skalenwerte auf 2 geändert (d. h. ihre Größe verdoppelt). Beachten Sie, wie dies unter GameObject eingerückt ist und wie seine Position im Transform-Feld im Inspector bei (0, 0, 0) ist. Das bedeutet, dass sich sein Zentrum am Ursprung des übergeordneten GameObjects befindet und Änderungen an der Position es relativ zum übergeordneten GameObject verschieben.

  • Danach klickte ich erneut mit der rechten Maustaste auf das Spielobjekt in der Hierarchie und fügte eine weitere 3D-Kugel hinzu – ich nannte dieses Objekt „Mond“ und änderte die X-, Y- und Z-Skalierungswerte auf 0,5 (d. h. halbierte seine Größe ). Ich habe auch den Wert der X-Position auf 2 geändert, wodurch seine Mitte 2 m nach rechts von der Mitte des „Erde“-Objekts verschoben wurde.

  • Schließlich habe ich für diesen Teil das übergeordnete GameObject in der Hierarchieansicht ausgewählt und das „RotationScript“ auf die Inspector-Oberfläche gezogen. Auf der Eigenschaftsseite, die im Inspektor erscheint, ändere ich die „Y-Achsen-Rotationsgeschwindigkeit“ auf 50.

Wenn ich auf die Play-Schaltfläche drücke, kann ich die gerenderte Animation sehen und unten eine Szene davon zeigen.

Ich kann sehen, dass sich beide Objekte korrekt drehen – die größere zentrale Kugel dreht sich um ihre eigene vertikale Mittelachse, und die kleinere Kugel umkreist dieselbe Achse. Allerdings sieht es mit der Standardfarbe Weiß nicht sehr gut aus. Ich kann dies verbessern, indem ich einige kostenlose Assets aus dem Unity Asset Store verwende.

Herunterladen von Assets aus dem Unity Asset Store

Ich habe den Unity Asset Store über einen Browser – unter http://www.assetstore.unity3d.com – nach kostenlosen Renderings von Earth durchsucht und die unten gezeigte (und hier verlinkte) Ressource gefunden.

Ich habe auf die Schaltfläche „In Unity öffnen“ geklickt, wodurch meine Anwendung im Fokus auf Unity umgestellt wurde. Die Registerkarte „Asset Store“ war geöffnet, und ich konnte auf die Schaltfläche „Download“ klicken, um diese Ressource zu erwerben (ich habe eine Kompatibilitätswarnung darüber gesehen, wie diese mit Unity 4 erstellt wurde). Nach ein paar Popups wurde mir das folgende Fenster angezeigt und ich entschied mich für den Import einer der unten gezeigten Earth-Materialdateien.

Nachdem ich auf die Schaltfläche „Importieren“ geklickt hatte, erschien diese JPEG-Datei unter Verwendung ihrer ursprünglichen Verzeichnisstruktur in meiner Asset-Liste.

Ich konnte dies aus dem Ordner „Assets/EarthSimplePlanets/Textures“ im Projektfenster auswählen und die Datei „EarthSimple1.jpg“ auf die Inspector-Oberfläche für die Erdkugel ziehen, und die Oberfläche dieser Kugel wird aktualisiert, um viel ähnlicher auszusehen charakteristischere Welt.

Schließlich habe ich das GameObject aus der Hierarchie ausgewählt und die Z-Achse um -15 Grad geneigt, um eine leichte Planetenneigung zu erzielen. Nach dem Drücken der Play-Taste zeigt die Animation eine weiße Kugel, die sich um einen Planeten dreht.

Wir könnten dies weiter verbessern, indem wir weitere Assets aus dem Store für den Mond herunterladen – ein guter Kandidat ist die hier verlinkte Mondlandschaft – aber im Moment denke ich, dass dies in unserer Mixed-Reality-Welt mit HoloLens ziemlich gut aussehen wird.

Abschluss

Das war es für diesen Beitrag – bisher haben wir:

  • ein neues Projekt mit Unity erstellt
  • fügten dieser Welt einige primitive Objekte hinzu,
  • die Farbe dieser Objekte mit Materialien geändert
  • ein C#-Skript hinzugefügt, um dieses Objekt zu bewegen,
  • Objekte so angeordnet, dass sie eine Achse außerhalb des Objekts umkreisen, und
  • haben den Unity Asset Store verwendet, um Assets herunterzuladen, die unser Modell realistischer machen.

Beim nächsten Mal sprechen wir über die tatsächliche Bereitstellung für den HoloLens-Emulator – es gibt ein paar Tipps und Fallstricke, die ich mit Ihnen teilen möchte, um die Reise anderer Leute ein wenig reibungsloser zu gestalten als meine.