SO WIRD'S GEMACHT: Verschieben und das Ziel der Kamera

Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]

Können Sie zu verschieben und Ziel die Kamera in einer Szene Direct3D mithilfe von Transformationen anzeigen.

Hinweis

Verwaltete Direct3D mobile-Anwendungen erfordern Windows Mobile 5.0 Software für Pocket PCs und Smartphones.Finden Sie unter Externe Ressourcen für .NET Compact Framework für Informationen über Windows Mobile-Software und SDKs.

Ansicht Transformationen übersetzen Direct3D-Objekten aus Raum der Welt, Bildschirmfläche. Wenn Sie eine Transformation Ansicht durchführen, wird Ihre Bewusstsein für die Kamera (oder Viewer) Position, die Kamera Ziel und das Koordinatensystem ermöglicht Ihnen das Ergebnis auf dem Bildschirm bearbeiten und wird sichergestellt, dass Ihre Welt Speicherplatz Koordinaten in Bildschirmkoordinaten Speicherplatz ordnungsgemäß transformiert werden.

Raum der Welt basiert auf ein linkshändiges Koordinatensystem, in dem positiven y-Achse Werte, positiven x-Achse Werte nach rechts verschieben, und positiven z-Achse Werte aus einem hypothetischen Viewer verschieben verschoben werden. Umgekehrt verschieben in eine rechtshändige Koordinatensystem, positiven z-Achse Werte in Richtung der Viewer.

Das Gerät ’s Transform -Eigenschaft gibt eine Matrix-Struktur, die einen Transformationszustand beschreibt zurück. Verschieben und Ziel der Kamera, eine Ansichtstransformationsmatrix auf das Gerät-Objekt übergeben, mithilfe der LookAtLH-Methode, um die Transformation zu behandeln.

Im folgenden Beispiel ist die Kamera anfänglich hinter der Szene zu einem Zeitpunkt positiv auf die z-Achse beginnt und zielt auf einen Punkt in der Nähe der Ursprung. Da die Kamera hinter der Szene befindet, platzieren Sie positive z-Achse Werte Objekte näher zur Kamera anstelle von größerer Entfernung. Darüber hinaus platzieren positiven x-Achse Werte Objekte weiter nach links anstatt rechts.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht eine Ansicht Transformation für eine Anwendung, die animiert ein primitiver Feld Netz, die eine Lieferadresse darstellt. Code vollständiges Beispiel finden Sie in SO WIRD'S GEMACHT: Transformieren von Direct3D-Objekte.

Dieses Codebeispiel besteht aus mehrere Objekte, einschließlich der folgenden:

  • Ein primitiver Mesh-Objekt, eine Lieferadresse darstellt.

  • Device-Objekt.

                        ' Set up the view matrix. You can define a view matrix with a camera position,
                        ' a point to look at (camera target), and an "up" direction.
                        ' First vector passed to LookAtLH is the camera position.
                        ' Second vector passed to LookAtLH is the camera target.
                        ' Third vector passed to LookAtLH defines the "up" direction.
                        ' In this example, you set the camera seven units up along the z-axis ("behind"
                        ' the scene), down one unit, and left two units. You then point the camera
                        ' just above the origin and define "up" to be in the y-direction.
                        If
                        Not isShipDeparted Then
    device.Transform.View = Matrix.LookAtLH(New Vector3(- 2, - 1, 7), New Vector3(0, 1, 0), New Vector3(0, 1, 0))
Else    ' Handles movement of camera after     ' the ship "fires" the main engines.
    device.Transform.View = Matrix.LookAtLH(New Vector3(xCameraPosition, yCameraPosition, 7), New Vector3(0, 1, 0), New Vector3(0, 1, 0))
    xCameraPosition += 0.01F
    yCameraPosition += 0.01F
EndIf
                        // Set up the view matrix. You can define a view matrix with a camera position,
                        // a point to look at (camera target), and an 
                        "up" direction.
// First vector passed to LookAtLH is the camera position.// Second vector passed to LookAtLH is the camera target.// Third vector passed to LookAtLH defines the "up" direction.
// Here, you set the camera seven units up along the z-axis ("behind"// the scene), down one unit, and left two units. You then point the camera// just above the origin and define "up" to be in the y-direction.
if (!isShipDeparted)
{
    device.Transform.View = Matrix.LookAtLH(new Vector3(-2, -1, 7),
        new Vector3(0, 1, 0), new Vector3(0, 1, 0));
}
else
{
    // Handles movement of camera after // the ship "fires" the main engines.
    device.Transform.View = Matrix.LookAtLH(new Vector3(xCameraPosition, 
        yCameraPosition, 7), new Vector3(0, 1, 0), new Vector3(0, 1, 0));
    xCameraPosition += 0.01f;
    yCameraPosition += 0.01f;
}

Kompilieren des Codes

Dieses Beispiel muss der vollständige Beispielcode in SO WIRD'S GEMACHT: Transformieren von Direct3D-Objekte.

Siehe auch

Konzepte

.NET compact Framework Gewusst-wie-Themen

Weitere Ressourcen

Mobile Direct3D-Programmierung in .NET Compact Framework