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

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

1

11.11.2011, 23:38

Irrlicht und Directional Light

Hey,
hat jemand Erfahrung mit Irrlicht? Bin grad dabei etwas zu basteln und das Directional Light macht extreme Probleme. Im Netz finde ich dazu leider so gut wie nichts hilfreiches. Es wirkt für mich so, als wenn das Licht eine Quelle hätte, was bei einem DL ja normalerweise nicht der Fall ist. Nun bei Irrlicht sind Lichter ja als ILightSceneNode zusammen gefasst. Von daher könnte ich auch eine Position angeben. Wenn ich das mache, ändert sich jedoch nichts am Ergebnis. Es wirkt für mich so als wenn es immer an Position 0,0,0 wäre.

C-/C++-Quelltext

1
2
3
4
5
6
7
    ILightSceneNode* light = smgr->addLightSceneNode();
    SLight& l = light->getLightData();
    l.Position = vector3df(0,100,0);
    l.Type = ELT_DIRECTIONAL;
    l.Direction = vector3df(0,1,0);
    l.DiffuseColor = SColorf(128,128,128);
    l.AmbientColor = SColorf(0,0,0);


Habe mit den Werten relativ viel rum gespielt. Das ist jetzt so einer der letzten Versuche gewesen. Jemand vielleicht ne Idee? Die Doku ist was das angeht leider ziemlich mau.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

2

12.11.2011, 11:52

Was ist denn überhaupt das Problem?

Ich kenne mich nicht besonders mit Irrlicht aus, aber ich denke SColorf nimmt floats und somit Farben von 0...1, d.h. du müsstest für 128 0.5 verwenden.

EDIT:
Hier ist die Dokumentation dazu

EDIT2:
Beim lesen der Doku ist mir einiges aufgefallen:
- Du müsstest warscheinllich noch setLightData nutzen
- Type ist ReadOnly; den Type musst du mit setLightType setzen

Schorsch

Supermoderator

  • »Schorsch« ist der Autor dieses Themas

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

13.11.2011, 17:37

Ob ich nun erst eine Referenz auf LightData hole und dann dort die Werte setze, oder die Werte direkt über Setter setze, ist relativ egal. Bzw so kommt es mir vor;) setLightData muss ich normal nicht setzen, da getLightData eine Referenz zurückliefert. Habe ich allerdings auch versucht. Den link kannte ich an sich schon, aber trotzdem danke dafür. Habe auch noch mal genauer nachgelesen und konnte nun ein bisschen mehr rumspielen. Wirklich überzeugend ist das Ergebnis aber absolut nicht. Von Irrlicht selbst gibts wie gesagt leider relativ wenig zu Directional Lights. Laut google soll man auch nicht die Rotation/Direction ändern, sondern die Position. Finde ich auch sehr merkwürdig aber ich probiere da mal ein bisschen weiter.
Aber wie gesagt, wenn sich jemand mit Irrlicht ein bisschen auskennt, wäre ein bisschen Hilfe wirklich freundlich, da das Verhalten von DL's hier in meinen Augen sehr komisch ist. Eine kurze Erklärung würde da sicher helfen.
Zu den Werten, es macht an sich ja Sinn, dort einen Wert zwischen 0 und 1 zu erwarten, ist alldings nicht so. Wie gesagt, das Verhalten ist mir auch nicht ganz schlüssig.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige