Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Irrlicht] Oświetlenie zwykłego plane

Ostatnio zmodyfikowano 2012-10-11 20:10
Autor Wiadomość
SeaMonster131
Temat założony przez niniejszego użytkownika
[Irrlicht] Oświetlenie zwykłego plane
» 2012-10-11 19:20:05
Witam
Moim problemem jest oświetlenie płaskiej powierzchni, tj "plane". Tworzyłem sobie teren (grid 100x100) w Blenderze, zapisywałem go i oświetlenie działało dobrze. Niestety z powodu kolizji fps było na poziomie ok 40. Dlatego usunąłem zbędne wierzchołki (tak na oko :P) uzyskując coś takiego:
http://scr.hu/0ug/fuqy9
Więc jak widać, na środku terenu jest po prostu zwykły plane. Tym razem było już ~400 fps. Niestety po dodaniu światła uzyskałem coś takiego:
http://scr.hu/0ug/ad57z
Tam gdzie są wierzchołki, tam jest oświetlenie, natomiast plane jest nieoświetlony.
Światło tworzę w ten sposób:
C/C++
ISceneNode * nodeLight = man->addLightSceneNode( 0, vector3df( 0, 1000, 0 ), SColorf( 1.0f, 0.0f, 0.0f, 1.0f ), 100000.0f );

// oraz

nodeLight = man->addLightSceneNode( 0, vector3df( camera->getAbsolutePosition().X, camera->getAbsolutePosition().Y + 5000, camera->getAbsolutePosition().Z ),
SColorf( 1.0f, 1.0f, 1.0f, 0.0f ), 500.0f );

Macie jakiś pomysł, co mogę zrobić?
P-66646
ison
» 2012-10-11 19:36:05
Dziwne, że był aż taki spadek fps. Użyłeś OctTreeSceneNode czy zwykłego?
Terenu nie wczytuj jako model. Irrlicht wspiera heightmapy wczytywane z pliku (jako obrazek z wysokościami).
Co jest nie tak w tym oświetleniu? To czarne to trawa? Wygląda na to, że normale są skopane.
P-66648
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2012-10-11 19:42:18
Dziwne, że był aż taki spadek fps. Użyłeś OctTreeSceneNode czy zwykłego?
Użyłem zwykłego, ponieważ przy tym OctTree teren był niepoprawnie wyświetlany, a nie znalazłem rozwiązania na to :P A kod był żywcem skopiowany z tutka.

Terenu nie wczytuj jako model. Irrlicht wspiera heightmapy wczytywane z pliku (jako obrazek z wysokościami).
W sumie mógłbym tak zrobić. A będzie jakaś różnica w wydajności?

Co jest nie tak w tym oświetleniu? To czarne to trawa? Wygląda na to, że normale są skopane.
Tak, to czarne to trawa - ten wielki prostokąt, tj plane.
Co do normali, to dotychczas załatwiało sprawę:
terrain->setMaterialFlag( EMF_NORMALIZE_NORMALS, true );
P-66649
ison
» 2012-10-11 19:55:07
Jak niepoprawnie był wyświetlany?
Różnica w wydajności powinna być, poza tym zaoszczędzisz miejsce.
Zobacz czy ten plane da się oświetlić od dołu. Ustawiłeś
setMaterialFlag( EMF_LIGHTING, true );
?
P-66650
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2012-10-11 20:01:07
Omg.. Kiedy zwiększyłem intensywność światła do
100000000.0f
 to teren został oświetlony w całości.. A ja tu już kilka godzin się na tym głowię, jak tu rozwiązanie jest takie proste -.-

Jak niepoprawnie był wyświetlany?
Był..podzielony na kwadraty, coś takiego:
| | |
-----
| | |
-----
itd. I te kwadraty był puste, jedynie było widać te linie między nimi jak na rysunku oraz kwadrat na którym się stało był "pełny".

Różnica w wydajności powinna być, poza tym zaoszczędzisz miejsce.
Dobrze wiedzieć :)
P-66651
ison
» 2012-10-11 20:04:22
itd. I te kwadraty był puste, jedynie było widać te linie między nimi jak na rysunku oraz kwadrat na którym się stało był "pełny".
gdzieś ustawiłeś zły zfar, irrlicht uznawał, że te niewidoczne kwadraty są poza zasięgiem widzenia
P-66652
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2012-10-11 20:10:52
Oo, nie wiedziałem o tym. No dobra, to zaraz to zrobię. Dzięki wielkie @ison :)
P-66653
« 1 »
  Strona 1 z 1