Dynamiczny Lod Terenu

Problemy ze skryptami w BGE.
Awatar użytkownika
piter10p
Posty: 69
Rejestracja: 05 sie 2012, 20:48

Dynamiczny Lod Terenu

Postautor: piter10p » 27 paź 2012, 13:17

Kolejne mam pytanie! Jak zrobić ten "Dynamiczny Lod Terenu" czytałem o nim w newsie ale niestety nie mam zielonego pojęcia jak wykorzystać to w moim projekcie, mam bardzo dużą mapę z wieloma poligonami więc prosiłbym o pomoc. Chodzi mi głównie o to które pliki i skrypty skopiować i jak je zainstalować kostkami logiki w bge. :o
Trochę ciekawego podpisu.

Awatar użytkownika
janek
Posty: 237
Rejestracja: 19 lip 2012, 14:23
Lokalizacja: Gdańsk

Re: Dynamiczny Lod Terenu

Postautor: janek » 28 paź 2012, 9:38

Z tego co pamiętam to posiadasz blendera 2.49b. A na nim ten skrypt nie podziała :P Jeżeli chodzi o osobne budynki, to skrypt który niedawno podałem powinien działać. Jak nie, to postaram się to sprostować i napisać tutka :D

Awatar użytkownika
piter10p
Posty: 69
Rejestracja: 05 sie 2012, 20:48

Re: Dynamiczny Lod Terenu

Postautor: piter10p » 28 paź 2012, 10:34

używam najnowszego blendka :) i niestety robię mapę lasu więc jest od *** poligonów :evil:
Naprawdę bardzo mi zależy, ponieważ bez tego mój projekt upadnie :cry:
Proszę o pomoc :!:
Trochę ciekawego podpisu.

Awatar użytkownika
piter10p
Posty: 69
Rejestracja: 05 sie 2012, 20:48

Re: Dynamiczny Lod Terenu

Postautor: piter10p » 28 sie 2013, 22:58

Odnawiam temat. Bardzo mnie interesuje jak uzyskać taki "efekt". Proszę o odpowiedzi osób które potrafią wprowadzić Lod do gry o krotki poradnik albo podlinkowanie stron z poradnikami. ;)
Trochę ciekawego podpisu.

Aktyn
Posty: 18
Rejestracja: 22 wrz 2012, 14:10

Re: Dynamiczny Lod Terenu

Postautor: Aktyn » 29 sie 2013, 11:49

http://www.pasteall.org/blend/23722
Nigdy tego nie zastosowałem w praktyce ale to ci na pewno pomoże.

Krótko wyjaśnię choć można się tego samemu domyślić.
Skrypt z tego co widzę to jeden z najprostrzych na LoD i by zadziałał poprawnie musisz dla obiektu ustawić następujące opcje:
Property string o nazwie mesh (co można zmienić w skrypcie) a w okienku tekstowym property- nazwa siatki bez numerku, w tym przypadku lod.
Obiekt o największej ilości detali musi mieć do nazwy siatki dodany numerek 1, czyli jak w przyklłdzie lod1, następnie obiekt który ma trochę mniej polygonow z nazwa siatki lod2 i tak dalej do lod4. Obiekty z siatkami lod2 lod3 i lod4 musza byc na niewidocznej warstwie.
Kostki logiki w obiekcie jak widać - sensor always, controller python z sryptem i actuator replace mesh o nazwie replace co tez można zmienić w skrypcie.
Jeśli chcesz zmienić odległość w których widoczne są poszczególne poziomy lod wystarczy w skrypcie w linijkach if dist < ... zmienić liczbę.

Łatwo się zorientować po samym pliku co i jak działa, ale dla jasności opisałem

araagon
Posty: 244
Rejestracja: 19 lip 2012, 6:15

Re: Dynamiczny Lod Terenu

Postautor: araagon » 29 sie 2013, 12:55

Dynamiczny LOD dla obiektów jest niestety w powijakach w blenderze, te skrypty zamieniające obiekty działają dobrze do pewnego momentu, sprawdziłem empirycznie na swoim pliku i niestety z 1000 obiektów do takiej podmiany jest problem.
Nie widziałem tego pliku który zamieścił Aktyn ale podejrzewam że jest podobnie.
Główny problem jest taki, że zyskujemy trochę na Rasteraize a tracimy na Logic w przypadku niewielkiej ilości obiektów jest ok, jak mamy ich dużo to wszystko i tak zwalnia, spowodowane jest to tym iż mimo że obiekty są niewidoczne to nadal są przechowywane w pamięci karty graficznej. Przeglądałem kilka dyskusji na blenderartists i wynika z nich, że jak na razie z poziomu pythona nie ma możliwości czyszczenia pamięci karty.
Jak będę w domu to zamieszczę taki demonstracyjny plik z systemem LOD który pokazywałem niedawno.
Działa on na podobnej zasadzie ale jest wydajniejszy bo korzysta z duplikacji obiektu np drzewa za pomocą "Empty", ułatwia to prace bo nie trzeba się martwić o nazwy obiektów itd.
araagon

Awatar użytkownika
lukaszfito
Posty: 140
Rejestracja: 28 gru 2013, 1:37
Lokalizacja: Gdańsk
Kontaktowanie:

Re: Dynamiczny Lod Terenu

Postautor: lukaszfito » 30 gru 2013, 1:24

Mam nadzieję, że jeszcze robisz ten projekt piter10p, bo już się zadeklarowałem, że zrobię "gorącego tutka o LoDach zaawansowanych :shock: ", gdzie opisze skrypt wykorzystany do mojego projektu, gry Red End (na forum pod linkiem http://troman.pl/forum/viewtopic.php?t=254). Miałem dokładnie ten sam problem - projekt mógł upaść, bo gra nie wyrabiała z renderowaniem a nawet podmianą modeli obiektów. Kto chciałby grać w grę, która ma 2-3 klatki na sekundę, niech podniesie rękę :o !? Ja bym nie chciał.. Dlatego najpierw poszedłem na piwo (młodsi czytać "coca-cola" :!: ), a potem poszukałem rozwiązania. Przestudiowałem w lewo i prawo relacje związku Pythona z Blenderem (zajęło mi to chyba miesiąc - grę robię od maja 2013), napisałem własny system LoD i złamałem magiczny 1000 a w kolejnych miesiącach zwiększyłem wydajność dziesięciokrotnie. Dziś przygotowywałem plik projektu do tutka i całkiem przypadkiem (tak jak chciałeś) wyrenderowałem las :D .

Tutek pewnie pojawi się w nowym roku po sylwku, więc wszystko tam dokładnie wytłumaczę i będziecie mogli to przetestować :P . Chciałbym też zaznaczyć, że wszystko co wyczytał araagon o LoDach jest prawdą. Dla karty graficznej nawet bardzo odległy od zakresu widoczności obiekt jest przeliczany, bo jakaś jego część może znajdować się w zasięgu rysowania. Jednak każdy problem da się rozwiązać lub ominąć :D - najprostszy parametr "visible=False" i obiekt jest pomijany przy renderowaniu. Drugim problemem "magicznego tysiąca" nie jest sam Blenderowski Logic, lecz nieprzemyślana zależność skryptu i jego działaniu w Logic. Jeśli mamy 1000 obiektów, każdy z nich ma skrypt podmiany (składający się przykładowo z 20 linijek), który odpala się 60 razy na sekundę.. to nasza gra musi przejść przez 1 200 000 linijek kodu na sekundę - zmniejszenie tej liczby stało się moim kluczem do sukcesu :)

O pojawieniu się tutka poinformuje w tym wątku.

Awatar użytkownika
lukaszfito
Posty: 140
Rejestracja: 28 gru 2013, 1:37
Lokalizacja: Gdańsk
Kontaktowanie:

Re: Dynamiczny Lod Terenu

Postautor: lukaszfito » 26 sty 2014, 16:23

Miałem napisać jak pojawi się tutek o LoD-ach, więc piszę ;)

http://troman.pl/news/lod-system-sposob-zwiekszenia-wydajnosci-w-grach_ID61


Wróć do „Python”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość