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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

29.10.2006, 18:22

ich weis ja net, aber ich kann in deinem code nirgendwo eine stelle entdecken wo du die normalvektoren in deinen vertices füllst...

es reicht nicht einfach D3DFVF_NORMAL anzugeben, du musst schon auch werte für die normalvektoren angeben...

12

29.10.2006, 19:40

ahhh und siehe da, es passiert etwas. Vielen Dank.

13

01.11.2006, 19:04

bei diesen lichtern geht mir irgendwie kein licht auf....

das directional light funktioniert jetzt, aber die anderen licht arten kriege ich nicht zum laufen.

Habs jetzt mal mit dem Pointlight probiert.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
D3DLIGHT9 pLight;
        ZeroMemory(&pLight, sizeof(D3DLIGHT9));




        pLight.Type = D3DLIGHT_POINT;
        pLight.Diffuse.r  = 1.0f;
        pLight.Diffuse.g  = 1.0f;
        pLight.Diffuse.b  = 1.0f;
  

        pLight.Ambient.r  = 1.0f;
        pLight.Ambient.g  = 0.3f;
        pLight.Ambient.b  = 0.4f;

        pLight.Specular.r = 1.0f;
        pLight.Specular.g = 1.0f;
        pLight.Specular.b = 1.0f;


        D3DXVECTOR3 vecPos;

        vecPos = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
        D3DXVec3Normalize( (D3DXVECTOR3*)&pLight.Position, &vecPos);

        pLight.Range = 100.0f;
        
        pLight.Attenuation0 = 0.1f;
        g_pD3DDevice->SetLight(0, &pLight);

        g_pD3DDevice->LightEnable(0, TRUE);



Aber es passiert nichts, der range ist eigentlich weit genug, als das mein viereck beleuchtet werden müsste.....woran könnte das noch liegen das mein dreieck schwarz bleibt..?

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

14

01.11.2006, 19:09

Das ist Absicht, dass die Position der Lichtquelle im Ursprung (0, 0, 0) liegt?

Ausserdem ist das ein Ortsvektor. Den solltest du nicht normalisieren (was für den 0-Vektor auch gar nicht geht)

Ob das dein Problem löst, kann ich aber nicht sagen :)

Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

15

01.11.2006, 19:23

Zitat von »"rklaffehn"«

Das ist Absicht, dass die Position der Lichtquelle im Ursprung (0, 0, 0) liegt?

Ausserdem ist das ein Ortsvektor. Den solltest du nicht normalisieren (was für den 0-Vektor auch gar nicht geht)

Ob das dein Problem löst, kann ich aber nicht sagen :)

Gruss,
Rainer


ohman, was wann normalisiert werden muss, gucke ich mir besser nochmal an....danke.

wenn die position auf 0,0,0 gesetzt ist, dann ist die lichtquelle IM würfel - sofern ich diesen nicht woanders hin positioniere....richtig?

dankeschonmal für den tipp

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

16

01.11.2006, 19:30

"Atten = 1/( att0i + att1i * d + att2i * d2)"

Zu der Berechnung von Lichtstärke. Also Verpass mal Attenuation1 auch mal einen Wert und an deiner Stelle würde ich die Werte lieber zuklein als zugroß ansetzen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

17

08.11.2006, 20:41

hallo,

noch ein kleines problem mit dem spotlight.

ich hab das light gesetzt, allerdings wird der cube nur dann beleuchtet, wenn sich grade eine ecke zu mir dreht. (siehe screenshots, zu kompliziert das so zu erklären)

beleuchtet, einen ecke ist grade zum betrachter gedreht:
http://i105.photobucket.com/albums/m239/souljumper/pic1.png

nicht beleuchtet
http://i105.photobucket.com/albums/m239/souljumper/pic2.png

so hab ich das licht gesetzt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
        D3DLIGHT9 pLight;
        ZeroMemory(&pLight, sizeof(D3DLIGHT9));
        pLight.Type = D3DLIGHT_SPOT;
        pLight.Diffuse.r  = 1.0f;
        pLight.Diffuse.g  = 1.0f;
        pLight.Diffuse.b  = 1.0f;
  

        pLight.Ambient.r  = 1.0f;
        pLight.Ambient.g  = 0.3f;
        pLight.Ambient.b  = 0.4f;

        pLight.Specular.r = 0.5f;
        pLight.Specular.g = 0.5f;
        pLight.Specular.b = 0.5f;


        D3DXVECTOR3 vecPos;

        vecPos = D3DXVECTOR3(0.0f, 0.0f, -4.0f);
        pLight.Position = vecPos;
        
        D3DXVECTOR3 vecDir;
        vecDir = D3DXVECTOR3(0.0f, 0.0f, 1.0f);
        D3DXVec3Normalize( (D3DXVECTOR3*)&pLight.Direction, &vecDir);

        pLight.Range = 1000.0f;
        pLight.Attenuation0 = 0.1f;
        pLight.Attenuation1 = 0.5f;
        pLight.Attenuation2 = 0.1f;

        pLight.Falloff = 1.0f;

        pLight.Theta = 0.7f;
        pLight.Phi   = 1.0f;

        g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, TRUE);
        g_pD3DDevice->SetRenderState(D3DRS_COLORVERTEX, FALSE);
        g_pD3DDevice->SetRenderState(D3DRS_SPECULARENABLE, TRUE);

        
        g_pD3DDevice->SetLight(0, &pLight);

        g_pD3DDevice->LightEnable(0, TRUE);


Woran könnte das liegen? cih will eigentlich, das ein punkt die ganze zeit beleuchtet wird.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

08.11.2006, 20:49

vermutlich an den normalvektoren. wenn du da im würfelfall den mittelwert nimmst, dann passiert genau das -> vertices duplizieren...

19

12.11.2006, 17:06

Zitat von »"dot"«

vermutlich an den normalvektoren. wenn du da im würfelfall den mittelwert nimmst, dann passiert genau das -> vertices duplizieren...


verstehe ich ehrlich gesagt nicht so ganz, wie dupliziere ich mir den die vertices?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

12.11.2006, 17:21

ich nehme an der würfel auf dem bild hat 8 vertices -> die normalvektoren an den ecken sind nur der mittelwert aller 6 faces die sich den vertex teilen und schauen schräg nach außen.

lösung:
du musst verhindern, dass sich mehrere faces einen vertex teilen, also 3 mal den gleichen vertex mit verschiedenen normalvektoren machen und dem entsprechenden face zuweisen.

Werbeanzeige