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

Jens

Treue Seele

  • »Jens« ist der Autor dieses Themas

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

1

08.12.2003, 13:01

DX-Licht -> Spotlight scheint nicht in die richtige Richt

Hi Leute,
lange nix gehört von Euch ;-)

Wenn ich ein spotlight erzeuge:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ZeroMemory(&light, sizeof(light));
light.Type = D3DLIGHT_SPOT;
light.Range = 10.0f;
light.Diffuse.r = 0.5f;
light.Diffuse.g = 1.0f;
light.Diffuse.b = 0.5f;
light.Position  = D3DXVECTOR3(-1.0f, -1.0f, -2.0f);
light.Direction    = D3DXVECTOR3(-light.Position.x/2.0f, -light.Position.y/2.0f, -light.Position.z/2.0f);
light.Theta        = 0.5f;
light.Phi          = 1.0f;
light.Falloff      = 1.0f;
light.Attenuation0 = 0.0f;
light.Attenuation0 = 0.05f;
m_pd3dDevice->SetLight(1, &light);
m_pd3dDevice->LightEnable(1, TRUE);

dann müsste doch ein Körper, der auf Position 0,0,0 liegt von links oben vorn beleuchtet werden. Die Beleuchtungsquelle liegt also hinter der Kamera und scheint nach vorn. Wenn ich den Körper leicht animiere, zeigt sich dann die Reflexion aber ganz woanders.
Der Scheinwerfer scheint irgendwo unterhalb oder hinterm Objekt zu stehen (also die Beleuchtungsquelle).
Liegt das evtl an den Normalen?
Die habe ich eben noch mal kontrolliert, die zeigen alle nach außen.
Hat jemand einen Tipp?
Danke
Bis später...

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

2

08.12.2003, 21:05

Re: DX-Licht -> Spotlight scheint nicht in die richtige R

Zitat von »"Jens"«


Quellcode

1
light.Position  = D3DXVECTOR3(-1.0f, -1.0f, -2.0f);



Also wenn y < 0 is, dann ist die Lichtquelle auf jeden Fall *unter* dem Objekt. :wirbel:


EDIT: Wenn du auf jeden Fall die richtige Richtung willst, kannst ja einfach den Richtungsvektor von light.Position auf D3DXVECTOR3(0.0f, 0.0f, 0.0f) bilden (und am besten noch normalisieren - is immer gut ;))
Mozilla Firefox
The Browser - reloaded

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

08.12.2003, 21:25

Das hat er ja schon gemacht (nur das Dividieren durch 2 scheint mir sinnlos). Außerdem muss man immer bedenken, dass bei Lichtern die Weltmatrix keinen Einfluss hat. Die Positions- und Richtungsangaben sind also immer absolut!

Jens

Treue Seele

  • »Jens« ist der Autor dieses Themas

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

4

12.12.2003, 12:22

alles wieder klaro

Danke für Eure Hilfe.

Habe mich mit der Kameraposition a bissle verschätzt. Sie war falsch -> zu weit oben.

Das mit der Division durch zwei soll einfach nur veranlassen, dass bei Änderung der Position, die Richtung nicht direkt auf den Ursprung geleitet wird, sondern immer ein bisschen mehr in nach hinten (natürlich in Abhängigkeit von Pos)
Bis später...

Werbeanzeige