Hello

‹Powrót do Know-how
Widok z góry na zespół budynków nad wodą: ceglane i zielone bryły z zielenią na dachach, skwery i ulice
‹ Wiedza

Wizmax Studio · Proces pracy

Optymalizacja dużych scen 3D: co sprawdzić, zanim viewport zwolni

Krystian Ciurkot

Krystian Ciurkot · Founder & CEO · 30 października 2026 · 30 min czytania

Optymalizacja dużych scen 3D zaczyna się tam, gdzie viewport zwalnia z 30 do 5 klatek na sekundę, a start renderu trwa ponad minutę. W naszych testach w 3ds Max i Corona pomagała stała kolejność: najpierw źródła ciężaru, potem porządkowanie z kontrolą zależności, na końcu profil renderu dopasowany do pytania.

Środowisko testów

3ds Max 2024

Corona 15 Hotfix 1, RailClone 7.1.1 Pro, Forest Pack 9.3.2 Pro

Rozdzielczość testów rozsiewów i RailClone

5120 × 2880

jedna ukończona próba na wariant

Pamięć stacji roboczej

192 GB RAM

i nadal pilnujemy zużycia

Autor

Krystian Ciurkot

Krystian Ciurkot

Founder & CEO · Virtual Masterplan

Zapytaj autora ›

W skrócie

Cztery rzeczy, które sprawdzamy w dużej scenie

  1. Tekstury 4K, umiarkowany displacement i lżejsze HDRI wystarczają w wielu kadrach. Wyjątek robimy dla powierzchni widocznej z bliska.

  2. Ciężar rozsiewów roślin i generatorów RailClone mierzymy w docelowej kamerze. Sama liczba obiektów go nie pokazuje.

  3. Obiekt niewidoczny w kadrze może być źródłem dla innego elementu. Przed usunięciem sprawdzamy zależności.

  4. Szybki profil służy do decyzji o kadrze. Wymagania finalnego renderu oceniamy osobno.

01Skala

Dlaczego duża scena 3D zwalnia podgląd i render

Optymalizacja dużych scen 3D wynika z prostej obserwacji. Przybywa geometrii, rosną pliki cache, kurczy się wolna pamięć RAM, a viewport - okno podglądu sceny - spada z 30 do 15, potem do 10 i do 5 klatek na sekundę. Przy większych scenach to zwykły etap pracy, nie awaria.

Pamięć nie rozwiązuje tego sama. W Wizmax pracujemy na stacjach z 192 GB RAM i przy ciężkich mapach oraz szczegółowej geometrii również taki zapas da się zużyć. Przy 128 GB margines jest mniejszy, ale zasada ta sama: RAM pozostaje ograniczeniem.

Liczy się też czas przygotowania renderu. Przykładowo: 20 testowych renderów dziennie, a każdy potrzebuje trzech dodatkowych minut na start i zakończenie. To godzina oczekiwania, która wraca przy każdej poprawce światła, materiału i kompozycji. Dlatego sposób pracy planujemy na początku projektu, a nie wtedy, gdy scena zaczyna się zacinać.

Przykład

Tak wygląda scena, w której podgląd prawie stoi

Viewport przy 2 FPS

01

Viewport przy 2 FPS

Na zrzucie widać rozległy model otoczenia: zabudowę, drogi i bibliotekę źródeł poza obszarem inwestycji, zaznaczone na turkusowo. Viewport pokazuje tu około 42,9 mln poligonów i 2 FPS. To zapis konkretnego stanu pracy, a nie kontrolowany pomiar porównawczy wydajności.

02Materiały

Tekstury 4K i lżejsze HDRI wystarczają częściej, niż się zakłada

Przejście z tekstur 8K na 4K oznacza cztery razy mniej pikseli. Rozmiar pliku i zużycie pamięci nie muszą spaść w tej samej proporcji, bo wpływają na nie format i kompresja, ale przy setkach map różnica bywa odczuwalna. Zwykle zaczynamy od 50-120 materiałów, a po dodaniu tekstur ludzi i roślin ich liczba rośnie. Przy podglądzie o dłuższym boku 500 px zmiany rozdzielczości mapy często nie zobaczymy. Wyjątek robimy dla jednego ważnego materiału, na przykład elewacji na pierwszym planie.

Drugie miejsce kontroli to displacement, czyli mapa, która faktycznie przesuwa geometrię powierzchni. W Coronie, programie liczącym obraz, łatwo przesadzić z parametrem Screen size: im mniejsza wartość, tym gęstsza geometria i większy koszt pamięci. Jeden materiał rzadko robi różnicę, kilkanaście podobnych powierzchni już tak. Drobne nierówności często wystarczy opracować bumpem, a Autobump pomaga zachować detal przy łagodniejszych ustawieniach. Efekt sprawdzamy w kadrze, nie w podglądzie materiału.

Podobnie jest z HDRI, mapą otoczenia, która oświetla scenę i odbija się w szkle. Mapy 16K lub 32K w wielu ujęciach nie są potrzebne, a lżejsze łatwiej zarządzać przy wielu wariantach światła. Gdy HDRI widać bezpośrednio w tle albo w dużym, ostrym odbiciu, utratę szczegółu da się zauważyć. Wtedy można rozdzielić rolę oświetlenia, tła i odbić przez environment overrides w Coronie.

Roślinność

Gęsty rozsiew roślin może liczyć się minutami

Rozsiew to automatyczne rozmieszczenie tysięcy kopii roślin lub drzew na powierzchni, u nas narzędziem Forest Pack. Kopie są instancjami, więc pamięć nie rośnie prostym mnożeniem. Rośnie jednak koszt liczenia ich materiałów, cieni i przezroczystości. Jedna roślina w ujęciu zewnętrznym potrafi mieć ponad milion trójkątów, a rzadko kończy się na jednej.

W rendach 5120 × 2880 jeden rozsiew potrzebował 85 s na start i 26 s na obliczenie obrazu. Gęsta próbka trawy z koniczynami wystartowała po 17 s, ale renderowała się 601 s i ukończyła tylko jeden przebieg, gdy pozostałe próbki po pięć. Każdy rozsiew wykadrowaliśmy osobno, na innych powierzchniach, więc to nie są równoważne warianty. Pokazują za to, że liczba obiektów nie zdradza, który rozsiew jest problemem.

Drugi wniosek dotyczy kamery. Z lotu ptaka pojedyncze źdźbło przestaje być czytelne, ważniejsze są kolor, zróżnicowanie powierzchni i gęstość. Prostszy zestaw roślin sprawdzamy więc w docelowej kamerze i rozmiarze publikacji. Dwa rozsiewy w jednej kamerze liczyły się osobno 74,8 i 33,0 s, razem 88,3 s. Drugi dodał 13,5 s, około 18%. Zajmują jednak inne powierzchnie, więc to nie dowód, że wariant v2 zawsze szybciej zastąpi ten sam fragment zieleni.

Gęsty rozsiew roślin może liczyć się minutami
Gęsty rozsiew roślin może liczyć się minutami

03RailClone

RailClone: Embedded i instancing działają osobno

RailClone generuje powtarzalne elementy, na przykład balustrady czy oznakowanie drogi. O jego koszcie decydują dwa osobne ustawienia. Cache Embedded zapisuje przygotowaną geometrię w scenie, więc nie trzeba jej budować od nowa, ale powiększa plik MAX. Use Instancing Engine pozwala współdzielić powtarzalne segmenty podczas renderowania. Wyłączenie automatycznej przebudowy to jeszcze inna funkcja. Warto je rozróżniać, zamiast traktować jak jeden przełącznik.

Tabela poniżej zbiera dwie próby na pojedynczych obiektach. Na balustradach Embedded skrócił render o około 25% względem wariantu bez cache, a szczyt pamięci raportowany przez Coronę spadł o około 67%. Obrazy były praktycznie identyczne pikselowo. Zbudowanie cache zajęło 85,5 s, więc zwraca się po czterech renderach niezmienionego obiektu. Na fragmencie kondygnacji samo Embedded prawie nie zmniejszyło pamięci. Dopiero instancing obniżył ją z 20,78 do 4,10 GB.

W większym zakresie sceny RailClone Embedded z instancingiem zapisał obraz w 148,9 s, a budynki zamienione na Corona Proxy w 146,6 s. Szczyt pamięci fizycznej procesu wyniósł odpowiednio 27,8 i 59,8 GiB. Plik MAX zmalał z około 3,57 do 2,50 GB, ale obok powstało około 1,01 GB proxy. Ciężar w dużej mierze zmienił miejsce. Po jednej próbie na wariant nie mówimy o przewadze czasowej.

Podgląd też kosztuje. Przy 33 obiektach RailClone tryb Boxes obniżył średni koszt odświeżenia z 3,79 do 2,02 ms, o około 47%. Test obejmował kontrolowany obrót widoku i nie gwarantuje konkretnego FPS przy ręcznej pracy. Pełny podgląd zostawiamy tam, gdzie naprawdę go potrzebujemy.

Pomiary

Dwie próby RailClone na pojedynczych obiektach

WariantCzas renderuSzczyt pamięci Corony
Balustrady: RailClone bez cache
91,2 s
14,23 GB
Balustrady: RailClone Embedded Cache
68,4 s
4,65 GB
Balustrady: Corona Proxy z Cache in RAM
75,5 s
21,07 GB
Balustrady: Corona Proxy bez Cache in RAM
88,2 s
12,50 GB
Kondygnacja: Editable Mesh
88,9 s
20,89 GB
Kondygnacja: Embedded bez instancingu
74,8 s
20,78 GB
Kondygnacja: Embedded z instancingiem
75,3 s
4,10 GB

Wewnętrzne testy Wizmax z 24-25 października 2026: 3ds Max 2024, Corona 15 Hotfix 1, RailClone 7.1.1 Pro. Rozdzielczość 5120 × 2880, pojedynczy obiekt, jeden ukończony pomiar na wariant. Czas obejmuje całe wywołanie renderu, bez budowania cache (85,5 s). Pamięć to wskazanie Corony, nie cały RAM procesu 3ds Max. Połowa sekundy różnicy między dwoma wariantami Embedded jest za mała, by wskazać szybszy.

04Porządek

Porządkowanie zaczyna się od sprawdzenia zależności

Biblioteka ustawiona obok modelu jest wygodna, ale z czasem zostają w niej elementy po usuniętych rozsiewach i starych wersjach. Nie wystarczy zaznaczyć wszystko, czego nie widać w kamerze, i usunąć. W raporcie z czyszczenia liczba węzłów sceny spadła z 4 617 do 3 493. Usunęliśmy 1 124 nieużywane elementy, około 24,3%, a kolejne 217 zostawiliśmy ze względu na zależności.

Potem uprościliśmy stosy 195 statycznych modeli i usunęliśmy 373 wpisy modyfikatorów, po sprawdzeniu geometrii i mapowania. Usunięcie UVW Map może zmienić ułożenie tekstur, a Edit Poly cofnąć edycje geometrii. Dlatego scalaliśmy wynik, a kopię modeli zapisaliśmy przed zmianą. W edytorze materiałów zostawiliśmy trzy widoki (MAT, HDRI, WNETRZA), a sześć usunęliśmy po zapisaniu kopii. Przypisania materiałów zachowano. To osobne etapy i bez pomiaru renderu nie przypisujemy im procentu przyspieszenia.

Raport narzędzia diagnostycznego to dopiero początek analizy. SiNi Forensic wskazał 69 brakujących wtyczek, ale kontrola przez API 3ds Max tego nie potwierdziła, więc nie usuwaliśmy ich zbiorczo. Pięć brakujących tekstur RailClone wymagało osobnego rozwiązania. Ustawienia konwertera dla V-Raya nie są receptą dla sceny w Coronie, a masowa zmiana UVW, displacementu czy widoczności źródeł może zepsuć potrzebny efekt.

Pułapka diagnostyczna

-35%

czas do zapisu pliku po wyłączeniu RC

Szybszy render, na którym zniknęło oznakowanie drogi

Cztery RailClone obsługiwały oznakowanie drogi. Same siatki nie były bezpośrednio renderowalne, ale ich geometria pozostawała potrzebna materiałowi. Po wyłączeniu generatorów czas do zapisu pliku spadł z 134,5 do 88,2 s (powtórzenie: 87,4 s), a przygotowanie sceny z geometrią z 84,2 do 2,4 s. Obraz stracił jednak pasy. To test diagnostyczny pokazujący koszt zależności, nie zmiana do wdrożenia. Lżejsze rozwiązanie, które zachowa oznakowanie, trzeba dopiero znaleźć.

Pomiar wewnętrzny, jedna scena, jedna ukończona próba i jedno powtórzenie. Około 61 s czasu całkowitego w wariantach bez RC nie przypisano wiarygodnie do konkretnej fazy.

05Profile renderu

Szybki test i finalny render odpowiadają na różne pytania

Przy ustawianiu kamery sprawdzamy kompozycję, przy odbiorze detalu - konkretną fakturę, balustradę albo odbicie. Uruchamianie za każdym razem tego samego długiego profilu spowalnia kolejne decyzje. W Camera 02 porównaliśmy trzy profile przy tej samej kamerze, geometrii, materiałach i oświetleniu, w natywnych 3072 × 1728 px i z wyłączonym displacementem.

Profil A (limit renderowania 10 min) skończył po 11 min 52 s z końcowym surowym szumem 8,05%. Profil B (5 min) po 6 min 19 s z 11,04%, a profil C (3 min) po 4 min 26 s z 14,41%. C był więc o około 63% krótszy od A. Zmieniliśmy jednak także limit, sposób odszumiania i próbkowanie, a wszystkie trzy próby zatrzymał limit czasu. To porównanie użyteczności profili, nie dowód, że tę samą jakość policzymy trzy razy szybciej. Również A pozostał zaszumiony.

Dlatego wolimy szybki profil roboczy i osobną ocenę wymagań finalnego materiału. Zbliżenia, trudne odbicia i druk mogą wymagać dokładniejszej kontroli. Wyników z nieruchomego kadru nie przenosimy na animację, gdzie trzeba sprawdzić stabilność detalu i odszumiania między klatkami.

Przed następnym renderem

Pytania, które zadajemy dużej scenie

Kolejność, która sprawdziła się w naszych testach. Każdy punkt weryfikujemy w docelowym kadrze.

  1. Czy ta rozdzielczość jest widoczna w kadrze?

    Tekstury, HDRI i displacement ograniczamy tam, gdzie obraz tego nie pokaże. Wyjątek: powierzchnie oglądane z bliska.

  2. Który rozsiew liczy się najdłużej?

    Mierzymy start i rendering osobno dla każdego rozsiewu i generatora, w docelowej kamerze.

  3. Czy Embedded i instancing sprawdzono osobno?

    Porównujemy czas i pamięć obu ustawień, a koszt budowania cache wliczamy do rachunku.

  4. Co zależy od obiektu, którego nie widać?

    Przed usunięciem sprawdzamy źródła rozsiewów, splajny RailClone i odniesienia materiałów. Kopię modeli zapisujemy wcześniej.

  5. Na jakie pytanie ma odpowiedzieć ten render?

    Kompozycję oceniamy szybkim profilem, detal i odbicia profilem finalnym.

  6. Czy wynik potwierdzono na własnej scenie?

    Nasze czasy to pojedyncze próby w otwartej sesji. Przed wdrożeniem ustawienia powtórz na własnym projekcie.

Masz dużą scenę do przygotowania? Opisz nam zakres i kadry.

Napisz do nas ›

06FAQ

Najczęstsze pytania

Rzadko we wszystkich materiałach. Przejście z 8K na 4K to cztery razy mniej pikseli, a przy podglądzie o dłuższym boku 500 px różnicy często nie widać. Wyjątek robimy dla powierzchni na pierwszym planie, na przykład elewacji.

Edytor materiałów też zbiera zbędne gałęzie

W Slate Material Editor, edytorze łączącym materiały i mapy w graf, z czasem przybywa widoków, kopii materiałów i elementów po wcześniejszych wariantach. Samo znalezienie właściwej gałęzi zajmuje wtedy więcej uwagi, niż powinno.

W naszej scenie zostawiliśmy trzy widoki (MAT, HDRI, WNETRZA), a sześć usunęliśmy po zapisaniu kopii ich materiałów i map. Usunięcie widoku nie usuwa materiału przypisanego do obiektu, więc przypisania i środowisko zostały. Zysk jest organizacyjny: mniej zakładek, prostsze szukanie. Nie mamy pomiaru, który przypisałby tej zmianie oszczędność czasu otwierania sceny lub renderu.

Graf Slate Material Editor: pionowe kolumny węzłów połączone gęstą siatką linii, po lewej lista materiałów i map
Graf materiałów przed porządkowaniem: sześć widoków usunęliśmy po zapisaniu kopii

07Pomiary

Jeden rozsiew liczył się 601 s, pozostałe najwyżej 33 s

Rozsiew Forest PackStart · rendering · całość
Realistyczna z koniczynami17,1 · 601,1 · 628,0 s, 1 przebieg (limit czasu)
FP LIB Dzika85,1 · 26,3 · 118,1 s
Naturalna z koniczynami00118,4 · 33,1 · 57,6 s
Okrywowe zielone10,5 · 6,9 · 23,3 s

Test wskazał rozsiew do naprawy

W zestawieniu dziesięciu rozsiewów wyróżnia się jeden: „Realistyczna z koniczynami” renderowała się 601,1 s i ukończyła tylko jeden przebieg. Pozostałe potrzebowały na rendering od 5,7 do 33,1 s. Powyżej pokazujemy ten rozsiew i trzy punkty odniesienia, a pełne zestawienie jest na planszy w sekcji o roślinności. Ten pomiar pozwolił nam wychwycić problem i naprawić Forest Pack w tej scenie. Ustalenie wykorzystamy też w następnych projektach. Raz popełniony błąd długo powiela się w kolejnych pracach. Dlatego pilnujemy porządku i rejestrujemy każdy element, który odbiega od standardu, zanim trafi do następnej sceny.

08Proxy

Proxy odciąża plik, a czas renderu zostaje podobny

Większy zakres sceny pokazał, że ciężar potrafi zmienić miejsce. RailClone Embedded z instancingiem zapisał obraz w 148,9 s, a budynki zamienione na Corona Proxy w 146,6 s. Szczyt pamięci fizycznej procesu wyniósł odpowiednio 27,8 i 59,8 GiB.

Plik MAX zmalał po konwersji z około 3,57 do 2,50 GB, ale obok powstało około 1,01 GB plików proxy. Proxy to obiekt wczytywany z osobnego pliku, więc odciąża plik sceny i viewport. Chaos opisuje je właśnie w tej roli, a nie jako automatyczny sposób na szybszy rendering. Przy wyborze porównujemy więc czas renderu, szczyt pamięci i miejsce na dysku, każde osobno.

Dwa rendery diagnostyczne tych samych budynków obok siebie: po lewej RailClone Embedded z instancingiem, po prawej Corona Proxy, z podpisami czasu i pamięci
Dwie konfiguracje budynków dają niemal ten sam czas zapisu obrazu

Wykres

Prawie ten sam czas, ponad dwa razy większy szczyt pamięci

Czas do obrazu i szczyt pamięci procesu

01

Czas do obrazu i szczyt pamięci procesu

Dwa wykresy słupkowe zestawiają te same konfiguracje budynków. RailClone Embedded z instancingiem: 148,9 s i 27,8 GiB. Corona Proxy: 146,6 s i 59,8 GiB. Czasy są niemal równe, a szczyt pamięci przy proxy jest ponad dwa razy większy. Dane pochodzą z jednej ukończonej próby na wariant.

Trzy etapy porządkowania, trzy osobne liczby

Węzły sceny w czyszczeniu biblioteki

4 617 → 3 493Usunięto 1 124 nieużywane elementy (około 24,3%), 217 zostawiono ze względu na zależności

Wpisy modyfikatorów w 195 statycznych modelach

373 → 0Po sprawdzeniu geometrii i mapowania, z kopią modeli sprzed zmiany

Podgląd 274 proxy

Point CloudWcześniej Full Mesh

Kontrola

Scalanie i raporty wymagają kontroli, nie masowych poprawek

Stos modyfikatorów scalamy po sprawdzeniu

01

Stos modyfikatorów scalamy po sprawdzeniu

Stos modyfikatorów to lista operacji nałożonych na obiekt. Gotowy model może mieć jednocześnie Edit Poly, UVW Map i CoronaDisplacementMod. Usunięcie UVW Map może zmienić ułożenie tekstur, a Edit Poly cofnąć edycje geometrii. Dlatego scalaliśmy wynik wybranych stosów i zapisaliśmy kopię modeli przed zmianą. Generatory Forest Pack i RailClone oraz współdzielone instancje zostały bez zmian. Wyłączenie displacementu na czas serii renderów było osobną decyzją.

Raport diagnostyczny to początek analizy

02

Raport diagnostyczny to początek analizy

SiNi Forensic wskazał 69 brakujących wtyczek, ale kontrola przez API 3ds Max tego nie potwierdziła, więc nie usuwaliśmy ich zbiorczo. Pięć brakujących tekstur RailClone wymagało osobnego rozwiązania. Ustawienia konwertera dla V-Raya nie są receptą dla sceny w Coronie. Masowa zmiana UVW, displacementu czy widoczności źródeł może zepsuć potrzebny efekt. Zrzut pokazuje moment diagnostyki, nie rekomendowany zestaw opcji.

09Trzy profile

Z daleka trzy profile wyglądają podobnie

Kadr z projektu

Całość do pliku zajęła 11 min 52 s, a końcowy surowy szum wyniósł 8,05%. Również ten profil pozostał zaszumiony.

Całość do pliku zajęła 6 min 19 s, a końcowy surowy szum wyniósł 11,04%.

Całość do pliku zajęła 4 min 26 s, a końcowy surowy szum wyniósł 14,41%. Profil C potrzebował jeszcze około 73,5 s przed rozpoczęciem próbkowania.

Podane czasy obejmują przygotowanie, rendering, odszumianie i zapis. W takiej skali różnice między profilami trudno ocenić, dlatego sprawdzamy je na wycinkach w skali 100%.

Detal

Wycinki 100% pokazują, co wygładza krótszy profil

Wycinki w skali 100% pokazują różnicę, której nie widać z daleka. Profile B i C mocniej wygładzają roślinność i zaszumione odbicia. Również A pozostaje zaszumiony i nie jest bezszumowym wzorcem. Podane czasy obejmują przygotowanie, rendering, odszumianie i zapis.

Dlatego wolimy szybki profil roboczy i osobną ocenę wymagań finalnego materiału. Oszczędzony czas ma sens wtedy, gdy obraz nadal pozwala podjąć właściwą decyzję. Zbliżenia, wymagające odbicia lub druk mogą potrzebować dokładniejszej kontroli. Wyników z nieruchomego kadru nie przenosimy automatycznie na animację, gdzie trzeba sprawdzić stabilność detalu i odszumiania między klatkami.

Wycinki 100% pokazują, co wygładza krótszy profil

Źródła i testy

Wykorzystano wewnętrzne raporty Wizmax z 24-25 października 2026: testy balustrad, kondygnacji, konfiguracji budynków, Forest Pack, podglądu RailClone, zależności oznakowania drogi, porządkowania sceny i Camera 02. Środowisko: 3ds Max 2024, Corona 15 Hotfix 1, RailClone 7.1.1 Pro, Forest Pack 9.3.2 Pro. Większość renderów to jeden ukończony pomiar wariantu w otwartej sesji, a viewport badano w trzech seriach na tryb. Zrzuty 3ds Max pokazują rzeczywiste etapy pracy i nie są osobnymi pomiarami. Linki prowadzą do dokumentacji producentów.

  1. Chaos: Autobump w Coroniesupport.chaos.com

    detal przy łagodniejszym displacemencie

  2. Chaos: konfiguracja HDRI w Coroniesupport.chaos.com

    environment overrides

  3. Chaos: proxy w Coroniesupport.chaos.com

    rola proxy w odciążaniu viewportu i pliku sceny

  4. iToo: ustawienia wyświetlania RailClonedocs.itoosoft.com

    tryby podglądu i ustawienia cache

Czytaj dalej.

Wszystkie artykuły ›
Wycena i procesIle kosztują wizualizacje architektoniczne? Od czego zależy wycenaWycena i procesJak przygotować brief do wizualizacji inwestycji - checklistaMarketing inwestycjiRender, rzut 3D, film czy spacer 360 - co lepiej sprzedaje inwestycję

Duży projekt

Przygotowujesz dużą wizualizację?

Opisz zakres sceny i planowane kadry. Ustalimy sposób pracy, zanim model urośnie.

Napisz do nas‹ Wróć do Wiedzy