Słownik wizualizacji 3D
Build time: co to jest w programowaniu i w renderze 3D
Build time to czas, jaki system poświęca na „złożenie” czegoś przed wykonaniem. W programowaniu oznacza kompilację kodu. W renderowaniu 3D to etap przygotowania sceny: wczytywanie geometrii, budowanie struktur przyspieszających, obliczanie pamięci podręcznych oświetlenia, a w silnikach czasu rzeczywistego – budowanie oświetlenia przed wygenerowaniem obrazu.
Czas budowania (build time) w ujęciu ogólnym: tworzenie oprogramowania
W tworzeniu oprogramowania build time (czas budowania lub czas kompilacji) to czas między poleceniem kompilacji a wygenerowaniem pliku wykonywalnego lub pakietu końcowego. W tym czasie kompilator sprawdza składnię, rozwiązuje zależności, optymalizuje kod i generuje artefakty. Narzędzia takie jak Maven, Gradle, Webpack czy Vite automatyzują ten proces.
Termin ten przeciwstawia się także runtime (czasowi wykonania). Coś „zdefiniowane w build time” jest ustalone podczas kompilacji; coś „zdefiniowane w runtime” jest rozwiązywane dopiero, gdy program działa. Ta sama logika dotyczy renderowania: część pracy wykonuje się przed obliczeniem obrazu, a część w jego trakcie.
W praktyce: Render Fabrik to studio wizualizacji architektonicznych dla deweloperów i architektów w całej Europie, z wyceną w ciągu 24 godzin.
Czym jest build time w renderowaniu 3D
Po naciśnięciu przycisku renderowania silnik nie zaczyna od razu rysować pikseli. Najpierw przygotowuje scenę. Ten etap przygotowania to build time, który w niektórych programach jest pokazywany jako „preparing scene”, „building BVH”, „parsing scene” lub „building light cache”. Do najczęstszych zadań należą:
- Wczytywanie sceny: ładowanie modeli, proxy, tekstur i materiałów do pamięci.
- Struktura przyspieszająca (BVH): organizowanie milionów wielokątów w hierarchię, dzięki której ray tracing szybko znajduje obiekty trafiane przez każdy promień.
- Displacement i podział: generowanie dodatkowej geometrii dla wypukłości i wygładzonych powierzchni.
- Obliczenia wstępne oświetlenia: irradiance map, light cache lub inne pamięci podręczne oświetlenia globalnego, jeśli wybrana metoda z nich korzysta.
- Kompilacja shaderów: w silnikach GPU i czasu rzeczywistego materiały są przekształcane w programy wykonywane przez kartę graficzną.
Build time w silnikach czasu rzeczywistego
W silnikach takich jak Unreal Engine i Unity build time ma jeszcze bardziej konkretne znaczenie. Polecenie „Build Lighting” oblicza oświetlenie statyczne i zapisuje wynik w lightmapach, czyli teksturach zawierających gotowe światło i cień. Dzięki temu scena działa w czasie rzeczywistym bez ponownego wykonywania tych obliczeń. Do builda zalicza się też kompilację shaderów, generowanie poziomów szczegółowości (LOD) i pakowanie projektu do dystrybucji, na przykład w interaktywnym spacerze.
Wraz z dynamicznymi systemami oświetlenia, takimi jak Lumen w Unreal Engine 5, większość tych obliczeń wstępnych przestała być obowiązkowa, co skraca build time kosztem większego obciążenia podczas działania.
Build time, render time i czas całkowity: różnice
| Etap | Co się dzieje | Od czego zależy |
|---|---|---|
| Build time | Przygotowanie sceny przed pierwszym pikselem | Ilość geometrii, tekstur, displacement, pamięci podręcznych oświetlenia |
| Render time | Właściwe obliczenie obrazu | Rozdzielczość, liczba próbek, złożoność światła i materiałów |
| Postprodukcja | Korekta kolorów, kompozycja i poprawki | Liczba przebiegów renderowania i poziom wykończenia |
W przypadku pojedynczego obrazu build time stanowi zwykle niewielką część całkowitego czasu. W animacji może mieć większe znaczenie, ponieważ powtarza się przy każdej klatce, gdy scena się zmienia. Dlatego optymalizacja przygotowania ma znaczenie w filmach 3D liczących setki lub tysiące klatek.
Jak skrócić build time: dobre praktyki
- Używanie proxy: drzewa, samochody i ciężkie meble wstawiane są jako proxy, ładowane na żądanie.
- Instancjonowanie powtarzalnych obiektów: sto identycznych krzeseł powinno być instancjami jednego modelu, a nie stu niezależnych kopii.
- Ograniczenie displacement: rzeczywiste wypukłości stosować tylko tam, gdzie kamera widzi z bliska; w oddali wystarczy mapa normalnych.
- Optymalizacja tekstur: rozdzielczości dopasowane do odległości kamery i odpowiednie formaty zmniejszają obciążenie pamięci.
- Ponowne wykorzystanie cache: w animacjach z ruchomą kamerą i statyczną sceną obliczyć cache oświetlenia raz i użyć ponownie.
- Porządkowanie sceny: usuwać ukryte obiekty, zapomniane warstwy i nieużywane materiały.
Częstym błędem jest próba przyspieszenia renderowania tylko przez obniżenie jakości obrazu, podczas gdy wąskie gardło leży w przygotowaniu: źle zorganizowane sceny mogą spędzać więcej czasu na budowaniu struktury niż na obliczaniu światła.
Build time w pracy studia wizualizacji
W projektach architektonicznych sceny łączą budynek, otoczenie, roślinność, ludzi i pojazdy. Dobra organizacja tych elementów utrzymuje build time pod kontrolą i uwalnia czas na to, co najważniejsze: światło, materiały i kadrowanie. Dotyczy to zarówno wizualizacji zewnętrznych 3D z dużą ilością roślinności, jak i doświadczeń w czasie rzeczywistym, takich jak interaktywna makieta wirtualna, w których build decyduje o płynności nawigacji. Inne terminy techniczne znajdują się w glosariuszu.
Często zadawane pytania
Czy build time i render time to to samo?
Nie. Build time to przygotowanie sceny przed obliczeniami; render time to samo obliczenie obrazu. Wiele programów pokazuje oba czasy oddzielnie w dzienniku lub oknie postępu.
Dlaczego mój render zatrzymuje się na „preparing scene”?
Zwykle z powodu nadmiaru geometrii, displacement na dużych obszarach, zbyt ciężkich tekstur lub źle skonfigurowanych proxy. Przejrzenie tych punktów zazwyczaj rozwiązuje problem.
Co to jest „Build Lighting” w Unreal Engine?
To polecenie, które wstępnie oblicza statyczne oświetlenie sceny i zapisuje je w lightmapach. Po zakończeniu builda scena działa w czasie rzeczywistym z już rozwiązanym światłem i cieniem.
Czy mocniejsza karta graficzna skraca build time?
Częściowo tak, szczególnie w kompilacji shaderów i budowaniu BVH w silnikach GPU. Jednak odczyt plików, pamięć i organizacja sceny również mają duże znaczenie.