Xtremebergi
Lt. Junior Grade
- Registriert
- Feb. 2008
- Beiträge
- 312
Hallo, zusammen
Ich programmiere zurzeit in C# mit dem DirectX SDK (nicht XNA) und bin vor kurzem
auf etwas Seltsames gestoßen.
Anscheinend bleiben die Lichter, die man z. B. mit "device.Lights[0].Type = ..." definiert,
von den World-Matrix-Transformationen (z. B. device.Transform.World = Matrix.RotationX )
völlig unberührt.
Zum Beispiel:
Ich habe z. B. als 3D-Objekt eine Bodenplatte und positioniere die Kamera so,
als ob man "draufsteht". Das Licht ist directional und scheint schräg auf den Boden. Wenn ich nun "hinunter schaue" bzw "auf den Boden schaue" (mit device.Transform.World *= Matrix.RotationX(...)) dann wird er immer dunkler.
Also anscheinend wird nur der Boden gedreht aber das licht bleibt unverändert, sodass die Kamera nun im Schatten der Bodenplatte ist.
Ich hoffe man kann sich das halbwegs vorstellen^^
Ich hab zur Sicherheit noch 3 Bilder angehängt.
Nun eben meine Frage: Wie kann ich das beheben? Es würde theoretisch gehen, indem ich nicht mit der Welt-Matrix-Transformation rotiere sondern die Kamera rotiere (device.Transform.View) aber ich hab gelesen dass es normalerweise mit der Transform.World-Variante gemacht wird. Kann man die Lichter "fixieren"? Muss man sie explizit mitrotieren?
Danke im Voraus!
Xtremebergi
Ich programmiere zurzeit in C# mit dem DirectX SDK (nicht XNA) und bin vor kurzem
auf etwas Seltsames gestoßen.
Anscheinend bleiben die Lichter, die man z. B. mit "device.Lights[0].Type = ..." definiert,
von den World-Matrix-Transformationen (z. B. device.Transform.World = Matrix.RotationX )
völlig unberührt.
Zum Beispiel:
Ich habe z. B. als 3D-Objekt eine Bodenplatte und positioniere die Kamera so,
als ob man "draufsteht". Das Licht ist directional und scheint schräg auf den Boden. Wenn ich nun "hinunter schaue" bzw "auf den Boden schaue" (mit device.Transform.World *= Matrix.RotationX(...)) dann wird er immer dunkler.
Also anscheinend wird nur der Boden gedreht aber das licht bleibt unverändert, sodass die Kamera nun im Schatten der Bodenplatte ist.
Ich hoffe man kann sich das halbwegs vorstellen^^
Ich hab zur Sicherheit noch 3 Bilder angehängt.
Nun eben meine Frage: Wie kann ich das beheben? Es würde theoretisch gehen, indem ich nicht mit der Welt-Matrix-Transformation rotiere sondern die Kamera rotiere (device.Transform.View) aber ich hab gelesen dass es normalerweise mit der Transform.World-Variante gemacht wird. Kann man die Lichter "fixieren"? Muss man sie explizit mitrotieren?
Danke im Voraus!
Xtremebergi
Anhänge
Zuletzt bearbeitet: