Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

03.09.2003, 16:32

Licht - Reichweite ?

Hallo,

ich schreibe ein Programm, in dem sich mehrere Objekte befinden. Als Maßeinheit hatte ich 1.0f = 1m. Dazu ein direktionales Licht und alles lief (fast) wie es sollte.

Nun wollte ich die Maßeinheit auf mm umstellen. Also alle Zahlenangaben mit 1000 multipliziert. Alles funktioniert wie vorher - nur bleiben jetzt die Objekte schwarz. Dabei verwende ich ein direktionales Licht, bei dem es ja keine Reichweite gibt. Wo könnte sonst der Fehler sein?


Otto

2

03.09.2003, 19:40

Warte mal, Directional und Pointlight hatten doch ne Reichweite, das 3. hatte keine oder ?

3

04.09.2003, 01:14

Directional Light hat keine eichweite, da es Lichtquellen wie die Sonne Simulieren soll. Point und Spot Licht haben eine Reichweite.

Warum deine Objekte Schwarz bleiben weis ich allerdings auch nett.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

4

04.09.2003, 13:56

Es ist doch völlig egal, welche maßeinheit verwendet wird!
1.0f bleibt 1!!!
Hasst du vielleicht vergessen auch die Reichweite des Lichtes mit 1000 zu multiplizieren?

Anonymous

unregistriert

5

04.09.2003, 17:40

Zitat

Hasst du vielleicht vergessen auch die Reichweite des Lichtes mit 1000 zu multiplizieren?

Directional Light hat keine Reichweite, daher muss man diese auch nicht mit 1000 multiplizieren...

Hast Du vielleicht auch die Normalen verändert? Das solltest Du sein lassen, da Du falsche Ergebnisse bei der Lichtberechnung bekommst, wenn die Normalenvektoren nicht die Länge 1.0f haben.


- LongingForDeath

Anonymous

unregistriert

6

05.09.2003, 09:21

Meine Objekte haben eine genormte Größe. Ihre tatsächliche Größe bestimme ich durch Skalierung, Translation und Rotation.

Wie gesagt, bei 1.0f = 1m gehts wunderbar, bei 10.0f = 1m wird das Licht schon dunkler, bei 100.0f = 1m ist noch minimal was zu erkennen, aber bei 1000.0f = 1m ist es dunkel.

Direktionales Licht hat ja eigentlich keine Reichweite. Ich habe trotzdem mal die Range hochgesetzt, aber trotzdem brachte es nichts. Die Normalenvektoren sind auf 1 normiert.

Otto

Anonymous

unregistriert

7

05.09.2003, 11:20

Wenn Du die Größe der Objekte mit einer Skalierungsmatrix änderst, änderst Du damit auch die Länge der Vertexnormalen. Um das zu verhindern hast Du zwei Möglichkeiten.

1) Du aktivierst den Renderstate D3DRS_NORMALIZENORMALS.
2) Du schreibst einen eigenen Vertexshader, bei dem Du eine Normalisierung der Vertexnormalen durchführst.


- LongingForDeath

Anonymous

unregistriert

8

05.09.2003, 11:59

Zitat von »"LongingForDeath"«

Wenn Du die Größe der Objekte mit einer Skalierungsmatrix änderst, änderst Du damit auch die Länge der Vertexnormalen. Um das zu verhindern hast Du zwei Möglichkeiten.

1) Du aktivierst den Renderstate D3DRS_NORMALIZENORMALS.
2) Du schreibst einen eigenen Vertexshader, bei dem Du eine Normalisierung der Vertexnormalen durchführst.


- LongingForDeath


Vielen Dank für den Tip. Jetzt läufts


Otto

Werbeanzeige