Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen
3 Fehlerbehandlung
4 Erweiterte Grundlagen
5 Objektorientierte Programmierung
6 Wichtige Klassen in .NET
7 Weitere Elemente eines Windows-Programms
8 Datenbank-Anwendungen mit ADO.NET
9 Internet-Anwendungen mit ASP.NET
10 Zeichnen mit GDI+
11 Beispielprojekte
12 Windows Presentation Foundation
13 Windows Store-Apps für Windows 8
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
C Inhalt der Buch-DVD
D Der Autor
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Einstieg in Visual Basic 2012 von Thomas Theis
Ideal für Programmiereinsteiger geeignet
Buch: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Rheinwerk Computing
579 S., 3., aktualisierte und erweiterte Auflage 2013, brosch., mit DVD
24,90 Euro, ISBN 978-3-8362-1959-4
Pfeil 12 Windows Presentation Foundation
Pfeil 12.1 Layout
Pfeil 12.2 Steuerelemente
Pfeil 12.3 Frame-Anwendung
Pfeil 12.4 Datenbindung
Pfeil 12.5 Zweidimensionale Grafik
Pfeil 12.6 Dreidimensionale Grafik
Pfeil 12.7 Animation
Pfeil 12.8 WPF und Windows Forms
Pfeil 12.8.1 Windows Forms in WPF
Pfeil 12.8.2 WPF in Windows Forms

Rheinwerk Computing - Zum Seitenanfang

12.6 Dreidimensionale Grafik

Zum Verständnis von dreidimensionalen Grafiken in WPF-Anwendungen ist ein wenig Theorie nicht zu umgehen. In diesem Abschnitt wird erläutert, wie ein 3D-Körper auf die zwei Dimensionen eines Bildschirms oder eines Buchs abgebildet wird, so dass die dritte Dimension für den Betrachter erkennbar wird.

Im Projekt WPFDreiDWuerfel wird ein Würfel im dreidimensionalen Raum dargestellt. Die Kantenlänge des Würfels ist 2, das Zentrum des Würfels ist der Nullpunkt des Koordinatensystems. Das Koordinatensystem hat eine x-Achse von links nach rechts, eine y-Achse von unten nach oben und eine z-Achse, die »hinter dem Bildschirm« beginnt und auf den Betrachter zuläuft.

Der Betrachter sieht die drei vorderen Seiten des Würfels, wie in Abbildung 12.8. Die Seiten des Würfels sind jeweils aus zwei Dreiecken aufgebaut. Dreiecke sind die Grundelemente zur Erstellung von 3D-Körpern in der WPF. Der Betrachter kann sich den Würfel per Tastendruck auch von hinten anschauen (v = vorne, h = hinten).

Bei allen Projekten, in denen 3D-Körper erzeugt werden, ist der Namespace System.Windows.Media.Media3D für die Steuerung per Programmcode zusätzlich notwendig.

Abbildung

Abbildung 12.8 Drei Seiten eines Würfels

Der Aufbau im XAML-Code:

<Window ... KeyDown="Window_KeyDown">
<Viewport3D>
<Viewport3D.Camera>
<OrthographicCamera x:Name="oc" Position="1,3,5"
LookDirection="-1,-3,-5" Width="6"/>
</Viewport3D.Camera>

<Viewport3D.Children>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight x:Name="dl" Color="White"
Direction="-1,-3,-5" />
</ModelVisual3D.Content>
</ModelVisual3D>

<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>

<GeometryModel3D.Material>
<DiffuseMaterial Brush="LightGray" />
</GeometryModel3D.Material>

<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>

<GeometryModel3D.Geometry>
<MeshGeometry3D Positions=
"-1,1,1 –1,-1,1 1,-1,1 1,1,1
1,1,1 1,-1,1 1,-1,-1 1,1,-1
–1,1,-1 –1,1,1 1,1,1 1,1,-1"
TriangleIndices="0,1,2 2,3,0
4,5,6 6,7,4
8,9,10 10,11,8"/>
</GeometryModel3D.Geometry>

</GeometryModel3D>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D.Children>
</Viewport3D>
</Window>

Listing 12.13 Projekt »WPFDreiDWuerfel«, XAML-Code

Falls innerhalb des Fensters eine Taste heruntergedrückt wird, dann reagiert darauf die Ereignismethode Window_KeyDown.

Zunächst muss eine Kamera aufgestellt werden, mit deren Hilfe die 3D-Körper gesehen werden. Dabei sind die Position und die Blickrichtung wichtig. In diesem Projekt »schwebt« die Kamera an der Position 1, 3, 5, also schräg rechts oben vor der Blattebene. Die Blickrichtung (engl. LookDirection) wird mit –1, –3, –5 angegeben. Die Kamera blickt also zum gegenüberliegenden Punkt hinter der Blattebene, durch den Nullpunkt hindurch. Der Würfel selber liegt um den Nullpunkt herum, also kann der Betrachter ihn sehen. Innerhalb des Projekts können Position und Blickrichtung per Tastendruck geändert werden.

Es wird ein gerichtetes Licht vom Typ DirectionalLight verwendet. Es strahlt aus einer bestimmten Richtung, die mithilfe der Eigenschaft Direction vom Typ Vector3D angegeben wird. Hier wurde die gleiche Richtung wie die Blickrichtung genommen. Die drei sichtbaren Seiten des Würfels werden von diesem Licht aus unterschiedlichen Winkeln beleuchtet, daher erscheinen sie für den Betrachter in verschiedenen Farbtönen. Die Farbe des Lichts ist Weiß (Eigenschaft Color), dies ist das Licht mit der höchsten Intensität.

Das Material für die Vorderseite ist diffus und hellgrau. Über die Eigenschaft BackMaterial wird eine rote Farbe für die Rückseite gewählt. Der Betrachter kann den 3D-Körper somit auch von hinten sehen.

Die Form wird über ein Objekt des Typs MeshGeometry3D bestimmt. Darin stehen die Dreiecke, aus denen eine dreidimensionale Form aufgebaut wird. Wichtige Eigenschaften sind:

  • Positions, vom Typ Point3DCollection, beinhaltet eine Auflistung von Point3D-Objekten, also Punkten im dreidimensionalen Raum. Jedes Point3D-Objekt besteht aus einer Gruppe von drei double-Zahlen für die x-, y- und z-Koordinate des Punkts. Wie in einer Auflistung üblich, sind die Elemente nummeriert, beginnend bei 0. Diese Nummern werden benötigt für die Eigenschaft TriangleIndices.
  • TriangleIndices, vom Typ Int32Collection, besteht aus Gruppen von drei ganzen Zahlen. Eine Gruppe ergibt ein Dreieck. Die drei ganzen Zahlen geben an, welche Point3D-Objekte der Auflistung Positions für das Dreieck verwendet werden.

Die Auflistung der Point3D-Objekte für die Eigenschaft Positions umfasst in diesem Projekt 12 Elemente. Aus diesen Elementen werden mithilfe der Eigenschaft TriangleIndices sechs Dreiecke gebildet. Der Umlaufsinn jedes Dreiecks wurde so gewählt, dass der Betrachter alle Vorderseiten sieht. Jeweils zwei Dreiecke bilden eine der drei sichtbaren Seiten des Würfels. Im Einzelnen sind dies:

  • die hellgraue vordere Seite, Indizes 0 (links oben), 1 (links unten), 2 (rechts unten) und 2, 3 (rechts oben), 0
  • die schwarze rechte Seite, Indizes 4 (vorne oben), 5 (vorne unten), 6 (hinten unten) und 6, 7 (hinten oben), 4
  • die dunkelgraue obere Seite, Indizes 8 (links hinten), 9 (links vorne), 10 (rechts vorne) und 10, 11 (rechts hinten), 8

Die Klasse mit der Ereignismethode:

Imports System.Windows.Media.Media3D
Class MainWindow
Private Sub Window_KeyDown(sender As Object,
e As KeyEventArgs)
If e.Key = Key.V Then
oc.Position = New Point3D(1, 3, 5)
oc.LookDirection = New Vector3D(-1, –3, –5)
dl.Direction = New Vector3D(-1, –3, –5)
Title = "WPFDreiDWuerfel, von vorne"
ElseIf e.Key = Key.H Then
oc.Position = New Point3D(-1, –3, –5)
oc.LookDirection = New Vector3D(1, 3, 5)
dl.Direction = New Vector3D(1, 3, 5)
Title = "WPFDreiDWuerfel, von hinten"
End If
End Sub
End Class

Listing 12.14 Projekt »WPFDreiDWuerfel«, Programmcode

Die Eigenschaft Key liefert das Element der Enumeration Key zu der betätigten Taste. Nach dem Betätigen einer der beiden Tasten v oder h werden die Position und die Blickrichtung der orthographischen Kamera und die Richtung des gerichteten Lichts geändert.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Rheinwerk-Shop: Einstieg in Python






 Einstieg in Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern