Silnik 3d w java + octree ver 0.1

3

Witam,

Od około 2 tygodni pisze silnik 3d w java, doszedłem do etapu, w którym można już cos zademonstrować więc umieściłem filmik na youtube prezentujący obecne możliwości.

W planach mam:

  • skończyć pełną obsługę tworzenia nowych obiektów, obecnie częściowo działa(Można tworzyć nowe elementy w już istniejących przestrzeniach drzew ósemkowych) - nie jest zaprezentowane na filmie. Drzewa ósemkowe są tworzone metoda od dołu do góry co sprawia że mapa może składać sie z kilku drzew ósemkowych, które dodatkowo zorganizowane są w tablicach przestrzeni co pozwala szybko wykluczać małe drzewa podczas analizy i jednocześnie zmniejsza liczbę zbędnych węzłów. W przypadku otwartych map powinno powstawać więcej małych drzew które szybko będą filtrowane przez tablice przestrzeni. Dla zabudowanych map powinny powstawać duże drzewa ósemkowe.
  • usuwanie obiektów zasłoniętych przez inne
  • Dodanie teksturowania
  • praca nad lightmapami.
  • generowanie map widoczności

Celem silnika jest szybkie i proste edytowanie map w czasie rzeczywistym z dynamicznym usuwanie obiektów niewidocznych dla kamery. Dodatkowo ma umożliwiać stworzenie map widoczności(podczas zapisu mapy w trybie edycji), które pozwolą na dodatkowe statyczne odfiltrowanie niewidocznych obiektów będąc w trybie grania.

Czekam na opinie i sugestie.

0

update :

0

Trochę dziwnie brzmi chwalenie się w tytule wątku że macie octree :>.
Ale skoro już to jakieś pytanie o te drzewa - tworzycie je dynamicznie, czy pregenerujecie drzewo podczas tworzenia sceny (inaczej - robicie reballancing drzewa żeby było cały czas zrównoważone)?

Macie jakieś benchmarki może :>?

0
msm napisał(a):

Trochę dziwnie brzmi chwalenie się w tytule wątku że macie octree :>.

To akurat dość istotna informacja, determinuje jak będzie działać silnik. W końcu jest sporo metod organizacji przestrzeni i każda ma swoje charakterystyczne cechy, plusy i minusy.

msm napisał(a):

Ale skoro już to jakieś pytanie o te drzewa - tworzycie je dynamicznie, czy pregenerujecie drzewo podczas tworzenia sceny (inaczej - robicie reballancing drzewa żeby było cały czas zrównoważone)?

Drzewa są tworzone w pełni dynamicznie, tak jak widać to na filmiku, jest to rzeczywista prędkość app. Kiedy tworzysz nowe graniastosłupy automatycznie wszystko jest rozbijane na drzewa ósemkowe, kiedy usuwasz to również nody mogą być cięte, usuwane itd. Minimalną jednostką cięcia jest jeden mały sześcian jaki pokazuje sie na siatce przy zaznaczaniu. Tak na marginesie, cięcie zajmuje mało czasu, eliminacja ścian / nodów wypełniających które są zasłonięte na stałe i nigdy nie będą widoczne. To zajmuje praktycznie cały czas tego progressbar. Dodam że cięcie(+analiza widoczności) wykonywane jest równolegle na kilku wątkach.
reballancing raczej nie ma sensu w drzewach ósemkowych, mają pokryć całą przestrzeń tnąc się na równe cube :D poza tym przechodzi sie je tylko kiedy są w POV.

msm napisał(a):

Macie jakieś benchmarki może :>?

Do tego jeszcze trochę czasu trzeba, na razie użycie GPU jest w przedziale 1-4% :D Wszystko przez używanie glBegin(..). Cóż etap developerski. Teraz w zasadzie głównym celem będzie odciążyć CPU i zainteresować się VBO żeby karta sie troche pomęczyła.

Docelowo ma to być silnik, ktory będzie pracować jako edytor na PC, natomiast jako gra na telefonie z androidem. Tak ze dynamiczne octree maja działac wydajnie na PC, natomiast na telefonie to juz będzie inna bajka... pewnie będę generować PVSy

Btw.
Jeszcze nie mam rozdwojenia jaźni :D

0

Docelowo to ma być nowy lepszy Minecraft?

0

Docelowo to ma być silnik z funkcją edytora. Z tym że podczas rozgrywki przynajmniej na telefonach nie przewiduje możliwości edytowani mapy. Zastosowanie raczej : platformówki 3d, FPP, gry logiczne z grafiką 3d itp.

0

tym razem dodatkowe cienie i światło:

1 użytkowników online, w tym zalogowanych: 0, gości: 1