Kamera: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Dietsch (Diskussion | Beiträge)
Florian (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 160: Zeile 160:
### Verwerfe (sog. Culling) alle projizierten Primitive die außerhalb des sichtbaren Bereichs liegen und schneide die die ihn überkreuzen zurecht (sog. Clipping).
### Verwerfe (sog. Culling) alle projizierten Primitive die außerhalb des sichtbaren Bereichs liegen und schneide die die ihn überkreuzen zurecht (sog. Clipping).
### Zeichne die Primitive. Dies erfolgt bei aktuellen Grafikkarten mittels Rasterisierung.
### Zeichne die Primitive. Dies erfolgt bei aktuellen Grafikkarten mittels Rasterisierung.
== Kameraberechnungen in XNA ==
; Berechnung der View Matrix:
<source lang="csharp">
Vector3 position;
Vector3 target;
Vector3 orientation;
Matrix orientationMatrix = Matrix.CreateFromYawPitchRoll(this.orientation.Y, this.orientation.X, this.orientation.Z);
//Berechnung der View Matrix für den Blick auf eine Zielposition
Matrix viewMatrix = Matrix.CreateLookAt(this.position, this.target, Vector3.Up);
//Oder alternativ Berechnung der View Matrix anhand der Orientierung der Kamera
Matrix viewMatrix = Matrix.CreateLookAt(this.position, this.position + this.orientationMatrix.Forward, Vector3.Up);
</source>
; Berechnung der Projection Matrix:
<source lang="csharp">
float fieldOfView;
float aspectRatio;
float nearPlane;
float farPlane;
Matrix projectionMatrix = Matrix.CreatePerspectiveFieldOfView(this.fieldOfView, this.aspectRatio, this.nearPlane, this.farPlane);
</source>
; Berechnung des View Frustums, z.B. zum Cullen nicht sichtbarer Objekte:
<source lang="csharp">
Matrix viewProjectionMatrix = this.viewMatrix * this.projectionMatrix;
BoundingFrustum viewFrustum = new BoundingFrustum(viewProjectionMatrix);
</source>


== Referenzen ==
== Referenzen ==


# '''Real-Time Cameras: A Guide for Game Designers and Developers''' von Mark Haigh-Hutchinson
# '''Real-Time Cameras: A Guide for Game Designers and Developers''' von Mark Haigh-Hutchinson
# http://msdn.microsoft.com/en-us/library/bb975157.aspx
# http://msdn.microsoft.com/en-us/library/bb975157.aspx [[Kategorie:Code-Beispiele]]