02.11.2013 Aufrufe

Würfelsimulator

Würfelsimulator

Würfelsimulator

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

PDA-Programmieren • "<strong>Würfelsimulator</strong>" • SS10 • Simon Brennecke • Ivo Torp • Klaus Manneck<br />

device.RenderState.ZBufferEnable = true;<br />

device.RenderState.CullMode = Cull.CounterClockwise;<br />

device.Lights[0].Type = LightType.Point;<br />

device.Lights[0].Diffuse = Color.White;<br />

device.Lights[0].AmbientColor = new ColorValue(0, 1, 0);<br />

device.Lights[0].Position = new Vector3(0.49f, 0.49f, 0.49f);<br />

device.Lights[0].Attenuation0 = 0;<br />

device.Lights[0].Attenuation1 = 0.75f;<br />

device.Lights[0].Attenuation2 = 0;<br />

device.Lights[0].Range = 100;<br />

device.Lights[0].Specular = Color.White;<br />

device.Lights[0].Update();<br />

device.Lights[0].Enabled = true;<br />

device.RenderState.Ambient = Color.FromArgb(0x20, 0x20, 0x20);<br />

device.RenderState.Lighting = true;<br />

Backface Culling ist ein Verfahren, um jene Polygone, die gerade nicht sichtbar sind (weil sie auf<br />

der Rückseite des Würfels sind) nicht mit zu rendern. Ob ein Polygon ausgeblendet wird, wird<br />

durch die Reihenfolge der Eckpunkte angegeben. Hier speziell werden Polygone ausgelassen,<br />

dessen Punkte (nach der Transformation in Bildschirmkoordinaten) gegen den Uhrzeigersinn<br />

verteilt sind.<br />

Für die Beleuchtung wird eine Lichtquelle definiert. Diese enthält Typ, Farbe, Position und<br />

Reichweite. Es wird nach dem Aktivieren des Lichts und der Beleuchtung (Lighting) von DirectX<br />

automatisch angewendet. Dieses einfache Beleuchtungsmodell kann keine Schatten werfen, sondern<br />

nur die Helligkeit von Polygonen ändern, je nach dem, wie genau die Normale des Polygons zur<br />

Lichtquelle ausgerichtet ist.<br />

Nun muss nur noch eine „Kamera“ gesetzt werden. Diese besteht aus ein paar Matrizen, welche,<br />

multipliziert mit den eigentlich zu rendernden Daten multipliziert werden, um entsprechend die<br />

Position und Drehung einer Kamera zu imitieren. Auch hier macht DirectX die meiste Arbeit :<br />

device.Transform.View =<br />

Matrix.LookAtRH(<br />

new Vector3(-0.5f, 0.0f, +0.5f),<br />

new Vector3(0.0f, 0.0f, 0.0f),<br />

new Vector3(0.0f, 0.0f, 1.0f));<br />

device.Transform.Projection =<br />

Matrix.PerspectiveFovRH(<br />

(float)Math.PI / 2.0f,<br />

(float)targetForm.ClientSize.Width/(float)targetForm.ClientSize.Height,<br />

0.1f, 40.0f );<br />

Seite 28 / 37

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!