Autor Wątek:  Wielkość submodeli.  (Przeczytany 3206 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline youBy

  • Deweloper
  • Wiadomości: 6164
  • Co tam?
    • Zobacz profil
    • Automat Weryfikujący Regulację i Lambdę
  • Otrzymane polubienia: 870
Wielkość submodeli.
« dnia: 07 Sierpnia 2009, 11:37:50 »
Ważne ogłoszenie:
ze względu na sposób wczytywania modeli do symulatora należy unikać zbyt dużych submodeli. Jest to najprawdopodobniej związane z liczeniem wektorów normalnych powierzchni i wierzchołków. Czas tej operacji jest proporcjonalny do kwadratu liczby wierzchołków. Jeden submodel wielkości kilkudziesięciu tysięcy trójkątów jest w stanie skutecznie zablokować proces wczytywania na kilka-kilkanaście minut.
Zalecam nieprzekraczanie 5 tysięcy trójkątów i ustalenie limitu na 10 tysięcy.
Xoov
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 339
Odp: Wielkość submodeli.
« Odpowiedź #1 dnia: 07 Sierpnia 2009, 12:27:41 »
Chodzi o samo wczytywanie, czy ma to również wpływ na renderowanie?

Jeśli te obliczenia są jednorazowe dla modelu, to może dałoby się wyniki zapisać?
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline youBy

  • Deweloper
  • Wiadomości: 6164
  • Co tam?
    • Zobacz profil
    • Automat Weryfikujący Regulację i Lambdę
  • Otrzymane polubienia: 870
Odp: Wielkość submodeli.
« Odpowiedź #2 dnia: 07 Sierpnia 2009, 12:46:45 »
Raczej tylko na wczytywanie. Nie wiem, czy w skryptach można dostać się do wektora normalnego danego wierzchołka. Jeśli tak, można by napisać nowy format zawierający te wektory.
Xoov
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.

Offline Edward666

  • Zasłużony dla Symulatora
  • Wiadomości: 77
    • Zobacz profil
  • Otrzymane polubienia: 0
Odp: Wielkość submodeli.
« Odpowiedź #3 dnia: 09 Sierpnia 2009, 21:35:03 »
Można by to skutecznie przyspieszyć robiąc najprostszą binakrę z samymi normalnymi. Nadać jej nazwę obiektu i inne rozszrzenie (np. *.norm)

Wczytując obiekt sprawdzane by było istnienie pliku z tą samą nazwą i rozszerzeniem *.norm, jeśli tak to wczytuje z binarki jesli nie - liczy normalne standardowo i zapisuje w pliku *.norm.

Miało by to zaletę, że tych plików nie musiało by być w paczkach, nie było by ingerencji w format (zwiększanie tekstowych formatów nie ma sensu bo to następne spowolnienie). Po modernizacji geometrii obiektu kasowało by się plik z normalnymi i ok. Można by też zrobić "refresh" całości wyszukując w katalogu z Maszyną pliki *.norm i kasując hurtem.

To tylko luźna propozycja, ale pół godziny nad kodem szybko by się zwróciło przy odpalaniu Maszyny. A co najważniejsze dotychczasowe modele były by z tym w 100% kompatybilne.


« Ostatnia zmiana: 10 Sierpnia 2009, 18:34:43 wysłana przez Edward666 »

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 339
Odp: Wielkość submodeli.
« Odpowiedź #4 dnia: 07 Sierpnia 2011, 14:26:56 »
Według stan na sierpień 2011, zostało uruchomione wczytywanie modeli z plików binarnych (E3D). Plik E3D jest tworzony jednorazowo z pliku T3D, podczas jego wczytywania. Teoretycznie istnieje również możliwość zapisania pliku E3D bezpośrednio z edytora 3D (potrzebny jest odpowiednie skrypt albo wtyczka).

W związku z powyższym limit ilości trójkątów nie obowiązuje, gdyż wektory normalne dla modelu z pliku T3D liczone są jednorazowo, a następnie zapisywane w E3D. Nawet jeśli by to miało trwać kilkanaście minut, nie ma to potem wpływu na czas wczytania pliku E3D.


Z drugiej strony wspomnę, iż wąskim gardłem dla wydajności (FPS) jest nadmierna ilość submodeli. Jeśli to tylko możliwe (czyli gdy nie ma animacji ani zapalania świateł), należy łączyć submodele w jeden duży. A zamiast tekstur uniwersalnych używać jednej tekstury, na którą zostaną przeniesione potrzebne wzory. Jest to opłacalne nawet kosztem większej ilości trójkątów. Dla obecnych kart graficznych różnica rzędu ±1000 trójkątów w jednym submodelu jest praktycznie niezauważalna.
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni