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

51

10.01.2005, 22:57

uh, ich war heut schon zu müde...
bin eh rum gefahren, habs aber nicht gecheckt dass die würfel schwarz sind ;)

52

10.01.2005, 23:40

so... hab jetzt die Würfel mal mit einem Material belegt und das bringt zumindest, dass ich die Würfel mit ihrer Textur wieder sehen kann... allerdings bleiben sie komplett unbeeindruckt von der Farbe des Ambient light..
und mein Spot-light ist auch noch nicht zu sehen.

53

11.01.2005, 02:43

so... ein bißchen rumexperimentiert mit den Lichtern, aber folgende Sachen stimmen immer noch nicht:

1)mein Spotlicht verhält sich wie ein Punktlicht (egal welche Werte Theta und Phi annehmen)

2)mein Ambient-Light scheint es überhaupt nicht zu geben... obwohl es auf ein satt leuchtendes Grün sein sollte, haben alle Würfel außerhalb der Reichweite des Lichts nur ein blaß schimmernden Rot-Ton (ihre Eigenleucht-Farbe)

3)das scheint irgendwie an meiner Hardware zu liegen, evtl kennt jemand das Problem:
sobald ich eine Specularfarbe (Glanzfarbe) beim Material und beim Licht einstelle, und wenn sie noch so gering ist, erstrahlt der komplette Gegenstand nurnoch in dieser Farbe.
Das Problem habe ich auch beim Beispiel aus Kapitel 2.7 (Beleuchtung), es tritt aber nicht auf, wenn ich die Beleuchtung von der Software regeln lasse.
Hier 2 ScreenShots:

Hardware alles glänzt viel zu stark
Software der normale Glanzeffekt, allerdings wird hier der Boden "verschluckt" und taucht nur ab und an auf

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

54

11.01.2005, 18:15

lol :-D

is mir gar nicht aufgefallen, dass du kein material gesetzt hast...
kommt vermutlich daher, dass ich alles mit shadern mach ;)

zeig mal her welche werte dein material hat...

55

11.01.2005, 22:55

und ich hab erst gedacht: ne, sowas auffälliges wie Material kanns net sein... das hätte jemand bemerkt :D
Dachte als Neuling, das geht auch ohne Material. Aber im Nachhinein ist es einleuchtend das man beides braucht :)

also, zu den Werten:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Light.Diffuse = tbColor(0.0f, 1.0f, 0.0f);
Light.Ambient = tbColor(0.1f, 0.0f, 0.0f);
Light.Specular = tbColor(0.0f, 0.0f, 0.0f);
Light.Position = tbVector3(0.0f, 0.0f, 20.0f);
Light.Direction = tbVector3(sinf(fNumSecsPassed * 10), 0.0f, cosf(fNumSecsPassed * 10));
Light.Range = 30.0f;
Light.Attenuation0 = 1.0f;
Light.Attenuation1 = 1.0f;
Light.Attenuation2 = 1.0f;
Light.Theta = 0.1f;
Light.Phi = 0.2f;
Light.Falloff = 0.5f;

Material.Diffuse = tbColor(0.5f, 0.5f, 0.5f);
Material.Ambient = tbColor(0.2f, 0.2f, 0.2f);
Material.Emissive = tbColor(0.4f, 0.0f, 0.0f);
Material.Specular = tbColor(0.0f, 0.0f, 0.0f);
Material.Power = 0.1f;


Wenn ich die Specular-Farbe bei beiden nur auf:

tbColor(0.0000000000001f, 0.0f, 0.0f)

oder dergleichen stelle, dann sind alle Würfel nurnoch rot (so wie das Beispiel von den beiden Screens aus dem letzten post zeigt).

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

56

11.01.2005, 23:37

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Light.Diffuse = tbColor(1.0f, 1.0f, 1.0f); 
Light.Ambient = tbColor(0.2f, 0.2f, 0.2f); 
Light.Specular = tbColor(1.0f, 1.0f, 1.0f); 
Light.Position = tbVector3(0.0f, 0.0f, 20.0f); 
Light.Direction = tbVector3(sinf(fNumSecsPassed * 10), 0.0f, cosf(fNumSecsPassed * 10)); 
Light.Range = 50.0f; 
Light.Attenuation0 = 0.0f; 
Light.Attenuation1 = 0.2f; 
Light.Attenuation2 = 0.0f; 
Light.Theta = 0.1f; 
Light.Phi = 0.2f; 
Light.Falloff = 0.5f; 

Material.Diffuse = tbColor(1.0f, 1.0f, 1.0f); 
Material.Ambient = tbColor(0.2f, 0.2f, 0.2f); 
Material.Emissive = tbColor(0.4f, 0.0f, 0.0f); 
Material.Specular = tbColor(0.8f, 0.8f, 0.8f); 
Material.Power = 64.0f;


versuch mal sowas in der art...

achja, einen lichttyp setzen wär auch cool ;)

und z.b. bei punktlicht hilft dir deine direction nicht viel weiter...

du hattest vor allem die attenuation faktoren ziemlich aufgedreht und dafür die range zu klein, deswegen vermutlich war nicht gar viel zu sehen...

57

12.01.2005, 00:07

hab mal deine Einstellungen übernommen und wie gesagt: durch die Specular-Werte glänzt alles komplett in weiß!

Die Lichtquelle hatte ich auf

Light.Type = D3DLIGHT_SPOT;

stehen... hatte ich nur vergessen oben einzufügen. Hier nochmal ein ScreenShot:

Bild
an diesem Bild sieht man vor allen Probleme 1 und 3:
1)Das Dreieck was von mir rot umkreist wurde, habe ich exat an die Lichtquelle gesetzt... wie man sieht leuchtet die Lichtquelle schön alles in der Umgebung an, trotz der so kleinen Winkel

3)alles ist komplett weiß. (scheint aber an der Hardware zu liegen, da es wie gesagt auch bei dem Beispiel aus dem Buch auftritt

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

58

12.01.2005, 18:49

ich kann nicht glauben dass es ein hw oder treiber prob is...

was hast denn für ne graka und treiber? ( wird wohl kein exot sein oder ;) )

-gib dich zum testen mal mit pointlight zufrieden

-stell Material.Power noch weiter rauf ( 128.0f oder so )...

-stell attenuation1 weiter rauf ( 0.8f oder so, die andren attenuation werte bleiben auf 0 )

-experimentier mit den werten herum..

deine würfel haben wenig polygone und weiche kanten ( von den normalvektoren her ) was vermutlich auf die (ffp) beleuchtung unerwünschte auswirkungen hat...

59

12.01.2005, 19:00

GraKa ist GiForce4 TI 4200 und Treiberversion hab ich die neuste runtergeladen (6693) ... evtl mal einen zurück patchen? aber glaube ich eher nicht.

Wenns dir nichts ausmacht, dann teste mal das Beleuchtungsbeispiel von der CD (2.7 mein ich...) und guck ob es bei dir auch so hell ist.

Ich teste mal ein bißchen mit den Werten rum, wenn sich was tut meld ich mich wieder :)

/edit:

selbst Material-Power von 65536 ändert nichts daran, dass alle Würfel weiß strahlen... kann es mit irgend einem render-state zusammenhängen?

/edit2:

wollte gerade mal harte Kanten einbauen... aber geht das überhaupt? jeder Vector ist ja nur einmal gespeichert aber ich müsste jedem 3 verschiedene Normalvectoren zuweisen?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

60

12.01.2005, 20:11

argh...

da bin ich beim umstieg von dx 8 auf 9 auch reingefallen

unter dx9 is specular ligthing nämlich nicht default an...

du musst erst den renderstate D3DRS_SPECULARENABLE auf true setzen...

vielleicht hilft das was ;)

Werbeanzeige