Kamera: Unterschied zwischen den Versionen
Aus Das Sopra Wiki
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]] | ||
