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

Thomas

Frischling

  • »Thomas« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Ingolstadt

  • Private Nachricht senden

1

05.03.2005, 13:59

Problem mit Spotlicht

Hallo,

ich hab mal versucht, die Übungsaufgabe 1 im Kap. 2.9.5 so zu verändern, dass das Spotlicht zum Frontscheinwerfer wird, also sich an der Position der Kamera befindet und in die gleiche Richtung "zeigt".

Klappt auch soweit, nur das Problem ist folgendes:
Wenn sich die Kamera (und das Spotlicht) am Nullpunkt befindet, bekommen die Vertices im Lichtkegel nur die Hintergrundfarbe des Lichts ab.
Wenn sich die Kamera irgendwo anders befindet und in Richtung des Nullpunkts schaut, haben die Vertices zwischen Kamera und Nullpunkt die Streufarbe des Lichts, die weiter weg aber wieder nur die Hintergrundfarbe, auch wenn das Licht eine ziemlich große Reichweite hat und nicht abgeschwächt wird.
Wenn die Kamera vom Nullpunkt wegschaut, haben die Vertices wieder nur die Hintergrundfarbe ??? .

Ich hätte aber gern, dass das Spotlicht immer gleich ist, egal in welche Richtung man schaut.

Hoffentlich könnt ihr mir weiterhelfen.

Mfg
Thomas
Das Leben ist ein scheiß Spiel - aber saugute Grafik ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

05.03.2005, 22:12

also ich würd dir ja gerne helfen, aber ich kann nicht ganz nachvollziehen was du da oben beschreibst... ;)

ideal wär z.b. ein screenshot von dem problem

Thomas

Frischling

  • »Thomas« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Ingolstadt

  • Private Nachricht senden

3

06.03.2005, 10:56

Also, hab mal Screenshots gemacht:

So siehts aus, wenn man vom Nullpunkt wegschaut.
Und so, wenn man auf den Nullpunkt schaut.

Weiß is die Streufarbe und schwach gelb die Hintergrundfarbe des Lichts.
Das Leben ist ein scheiß Spiel - aber saugute Grafik ;)

Thomas

Frischling

  • »Thomas« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Ingolstadt

  • Private Nachricht senden

4

10.03.2005, 16:21

Kann mir denn keiner helfen?

Vielleicht hilft ja das weiter:
Das Spotlich hab ich wie folgt definiert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
g_Light.Type         = D3DLIGHT_SPOT;
g_Light.Diffuse      = tbColor(5.0f,5.0f,5.0f);
g_Light.Ambient      = tbColor(1.0f,1.0f,0.0f);
g_Light.Specular     = tbColor(10.0f,10.0f,10.0f);
g_Light.Position     = tbVector3(0.0f,0.0f,0.0f);
g_Light.Range        = 1000.0f;
g_Light.Attenuation0 = 1.0f;
g_Light.Attenuation1 = 0.0f;
g_Light.Attenuation2 = 0.0f;
g_Light.Falloff      = 1;
g_Light.Theta        = TB_DEG_TO_RAD(10);
g_Light.Phi          = TB_DEG_TO_RAD(30);


Die Richtung und Position wird in der Move-Funktion so festgelegt:

C-/C++-Quelltext

1
2
g_Light.Direction = tbVector3Normalize(tbVector3(sinf(g_fCamAngle),0,cosf(g_fCamAngle))); // Zur Sicherheit mal normalisiert

g_Light.Position  = g_vCamPosition;
Das Leben ist ein scheiß Spiel - aber saugute Grafik ;)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

10.03.2005, 16:33

Poste mal den kompletten Code. Vielleicht liegt der Fehler irgendwoanders.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

10.03.2005, 17:12

Zitat

g_Light.Specular = tbColor(10.0f,10.0f,10.0f);


???

was isn da los!?

Thomas

Frischling

  • »Thomas« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Ingolstadt

  • Private Nachricht senden

7

14.03.2005, 20:23

Erst mal: Tut mir leid, dass ich solang nich geschrieben hab, mein Computer war kaputt :( .

@dot:
Man kann bei Lichtern Farbwerte größer 1 benutzen, dann wird das Licht heller.

@all:
hab mal hier den Quellcode hochgeladen (Für den Post isser zu lang).
In der main.h is nur die Vertex-Struktur deklariert.

EDIT:
hab noch nen Screenshot gemacht, und zwar, wenn man schräge auf nen Würfel schaut, siehts so aus: Screenshot.
Das Leben ist ein scheiß Spiel - aber saugute Grafik ;)

Thomas

Frischling

  • »Thomas« ist der Autor dieses Themas

Beiträge: 7

Wohnort: Ingolstadt

  • Private Nachricht senden

8

24.03.2005, 11:35

Soo, hab das Problem jetz selbst gelöst... Es lag wie immer an der einfachsten Sache(Murphy's Law :-D ):

Es muss natürlich bei den Vertex-Normalen statt

C-/C++-Quelltext

1
pVertices[0].vNormal = vCube + tbVector3Normalize(tbVector3(-1.0f,  1.0f, -1.0f));

nur heißen

C-/C++-Quelltext

1
pVertices[0].vNormal = tbVector3Normalize(tbVector3(-1.0f,  1.0f, -1.0f));
Das Leben ist ein scheiß Spiel - aber saugute Grafik ;)

Werbeanzeige