Autor Wątek: [Irrlicht] Mapa Voxeli  (Przeczytany 3267 razy)

Offline Smokeing

  • Użytkownik

# Listopad 14, 2011, 19:18:25
Witam.

Na koniec semestru muszę napisać klon minecrafta z możliwością edycji świata na programowanie u mnie w technikum.
Silnik który mam wykorzystać to Irrlicht.

Gdy do silnika załaduję 20k cube'ów jako osobne SceneNode wydajność drastycznie spada w okolice 5FPS.

Pomyślałem że lepszym sposobem byłoby zrobienie CustomSceneNode.
Tylko w takim razie najlepiej byłoby podzielić świat na kawałki i to te kawałki wyświetlać (Nawet w oryginalnym MC tak mają: chunk)

Wszystko jest ok jeśli mam tylko teren i wtedy logiczne jest że te kwadraty można zastąpić jedną bryłą. Co natomiast jeśli wyrenderuję sobie coś na wzór jaskini gdzie patrząc z perspektywy jednego chunka są dwie bryły niepołączone ze sobą?



Jak ten cały podział odnosi się do detekcji kolizji?
Nie mam żadnej wiedzy na ten temat więc proszę o wyjaśnienie czy jest to brane z BoundingBox czy jakoś inaczej.

Z góry dziękuję za odpowiedź
smokeing

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline FoToN

  • Użytkownik

# Listopad 14, 2011, 19:38:51
http://forum.warsztat.gd/index.php?topic=23419.0 <- tutaj jest parę moich projektów, w tym prototyp klona minecrafta. Możesz sobie podpatrzeć co nieco (kolizji tam nie pisałem, ale daje zarys jak to można zorganizować).

Nie wiem w czym problem z tą jaskinią.

Licz kolizje tylko dla najbliższych chunk'ów (a z nich też lepiej wyciągnąć co bliższe kostki).

Offline Vxx

  • Użytkownik

# Listopad 15, 2011, 10:47:17
Może przyda się jeszcze jedno demko, pisane na szybko. Są proste kolizje, usuwanie bloków (i błędny update chunków....), wczytywanie mapy z tga, odrzucanie niewidocznych kawałków świata itd.
http://www.sendspace.pl/file/1b0cb9992de6effe4bc43de
Część kodu przepisana jest z Lamecrafta (by Drakon): http://code.google.com/p/lamecraft/source/checkout
« Ostatnia zmiana: Listopad 15, 2011, 10:49:50 wysłana przez Vxx »

Offline Smokeing

  • Użytkownik

# Listopad 17, 2011, 00:57:37
Dzięki wielkie!