Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

XNA 3D Tutorial Anzeigen eines Objektes. Inhalt Lernen Sie, wie Sie Modelle implementieren. Initializing Lernen Sie, wie Sie Modelle aus der Content Directory.

Ähnliche Präsentationen


Präsentation zum Thema: "XNA 3D Tutorial Anzeigen eines Objektes. Inhalt Lernen Sie, wie Sie Modelle implementieren. Initializing Lernen Sie, wie Sie Modelle aus der Content Directory."—  Präsentation transkript:

1 XNA 3D Tutorial Anzeigen eines Objektes

2 Inhalt Lernen Sie, wie Sie Modelle implementieren. Initializing Lernen Sie, wie Sie Modelle aus der Content Directory laden können. Contentloading Lernen Sie wie man Modelle zeichnet. Zeichnen

3 Initializing Das Initialisieren eines 3D-Objektes ist, wenn man XNA sowie so schon in 2D ausprobiert hat, ganz einfach: Zunächst fügen Sie in ihre Klasse, welche automatisch bei der Projekterstellung erstellt wird, folgende Zeile ein: Model myModel;

4 Contentloading Nachdem Sie die Objektinstanz vom TypModel erstellt haben, muss das Modell aus der Content-Directory (Contentordner im Projekt) geladen werden. Dies erledigt sich durch folgende Zeile, welche Sie in die LoadContent-Methode, der vorherig genannten Klasse, einfügen: myModel = Content.Load (filename); Statt filename schreiben Sie einfach den Namen ihres Modelles zwischen die Anführungszeichen

5 Zeichnen Nun kommt der eigentlich komplizierteste Part in der ganzen Sache – Das Zeichnen. Aber keine Angst es ist nicht so schwer, wie es aussieht. Hier zunächst der Code: foreach(ModelMesh mesh in myModel.Meshes) { foreach(BasicEffect effect in mesh.Effects) { effect. EnableDefaultLighting(); effect.World = Matrix.Identity; effect.View = Matrix.CreateLookAt(new Vector3(0, 0, -5), Vector3.Zero, Vector3.Up); effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), GraphicsDevice.Viewport.AspectRatio, 0.1f, 1000f); } mesh.Draw(); }

6 Zeichnen-Fortsetzung Um nun kurz zu erklären was in diesem Code passiert: Zunächst werden 2 Schleifen durchgegangen. Die erste Schleife zählt alleModelmesh aus, übergibt diese an die zweite Schleife und zeichnet diese zum Schluss noch mittels der Funktion: Draw() des Mesh-Objektes.

7 Zeichnen-Fortsetzung In der 2 Schleife werden alle Effekte des aktuellen Meshes aus der vorherigen Schleife gesetzt. Zunächst wird mittels der Funktion EnableDefaultLightning() das Standartlicht auf das Objekt gesetzt. Danach wird die Eigenschaft World desBasicEffect-Objektes belegt, welche ich in der nächsten Seite nochmals genauer erklären werde.

8 Zeichnen-Fortsetzung Die Eigenschaft World wird in dem hier verwendeten Beispiel mit Matrix.Identity belegt, was bedeutet dass das Objekt an Position 0,0,0 mit keiner spezifischen Rotation oder Skalierung gezeichnet wird. Denn die World-Eigenschaft des Objektes bestimmt dessen, wie oben genannt, Rotation, Position und Skalierung. Wollen Sie z. B. die Position des Objektes verändern geben Sie statt Matrix.Identity,Matrix.CreateTranslation(new Vector3(x,y,z)) ein Statt x,y,z müssen natürlich die Koordinaten eingegeben werden.

9 Zeichnen-Fortsetzung Als nächstes wird die View-Eigenschaft belegt. Dazu wird wieder eine neue Matrix erstellt, wobei der erste Parameter, die Position der Kamera darstellt, der zweite Parameter den Punkt auf den die Kamera gerichtet ist und der dritte Parameter der Orientierungspunkt der Kamera. In der nächsten Seite zeige ich ein Bild, welches das besser beschreiben kann.

10 Zeichnen-Fortsetzung Das sollte das vorhererzählte nochmals gut verdeutlichen. Natürlich können für die Kamera auch andere Koordinaten genommen werden.

11 Zeichnen-Fortsetzung Als letztes wird die Projection-Eigenschaft belegt, welches wieder eine Matrix benötigt. Hierzu wird die CreatePerspectiveFieldOfView- Methode verwendet. Die Parameter dieser Methode sind leicht erklärt. Der erste Parameter ist für die Spannweite der Kamera verantwortlich, also hier 45°. Diese muss allerdings in das Bogenmaß umgerechnet werden. Das übernimmt derMathHelper mit der Funktion ToRadians() für uns.

12 Zeichnen-Fortsetzung Der zweite Parameter ist das Fensterformat. Im Standartfall ist das 4:3. Man bekommt das Fensterformat über die AspectRatio- Eigenschaft des Viewport-Objektes. Andernfalls kann man auch einfach die Fensterbreite durch die Fensterhöhe teilen. Durch das Bildschirmformat wird bestimmt, wie das Bild auf das Fenster projiziert werden muss.

13 Zeichen-Fortsetzung Der 3. und der 4. Parameter sind zuständig für die sogenannte NearPlane und die sogenannte FarPlane. Die NearPlane zeigt dem Programm, ab welcher Nähe abgeschnitten werden soll. Die FarPlane bestimmt, ab welcher Weite abgeschnitten werden soll. Um das ganze nochmals zu verdeutlichen, zeige ich wieder auf der nächsten Seite ein Bild, welches die NearPlane und die FarPlane nochmals erklären soll.

14 Zeichnen-Fortsetzung Hier kann man gut erkennen, wie NearPlane und FarPlane behandelt werden. Alle Objekte, die vor NearPlane und nach FarPlane sind, kann man nicht sehen. Der Grund, warum so was gemacht wird, ist ganz einfach: Da viele Spiele mehr als 1000 Objekte enthalten, würde, wenn man alle Objekte zeichnen lassen würde, wahrscheinlich der eigene PC abstürzen, weil das Rendern viel zu viel Arbeitsspeicher benötigen würde.

15 Zusammenfassung Wenn Sie nun Alles Richtig gemacht haben, müsste ihr Objekt korrekt angezeigt werden. Sie sollten jetzt probieren ein wenig mit den Eigenschaften desBasicEffect-Objektes rumzuspielen. Ich werde zudem auch ein Tutorial hochstellen, welches zeigt wie man Texturen auf Objekten anzeigt, oder mit dem Licht rumspielt.

16 Ende Nun das ist alles was ihr eigentlich braucht. Ich hoffe ihr habt nun alles gut verstanden und könnt dies auch nun gut für eigene Projekte verwenden. Falls ihr noch Fragen über dieses Tutorial oder allgemeine Fragen über XNA habt, könnt ihr mir auch gerne eine Mail schicken. Meine E-Mailadresse ist carl.peuthert@freenet.de


Herunterladen ppt "XNA 3D Tutorial Anzeigen eines Objektes. Inhalt Lernen Sie, wie Sie Modelle implementieren. Initializing Lernen Sie, wie Sie Modelle aus der Content Directory."

Ähnliche Präsentationen


Google-Anzeigen