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

EtapCo się dziejeOd czego zależy
Build timePrzygotowanie sceny przed pierwszym pikselemIlość geometrii, tekstur, displacement, pamięci podręcznych oświetlenia
Render timeWłaściwe obliczenie obrazuRozdzielczość, liczba próbek, złożoność światła i materiałów
PostprodukcjaKorekta kolorów, kompozycja i poprawkiLiczba 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

  1. Używanie proxy: drzewa, samochody i ciężkie meble wstawiane są jako proxy, ładowane na żądanie.
  2. Instancjonowanie powtarzalnych obiektów: sto identycznych krzeseł powinno być instancjami jednego modelu, a nie stu niezależnych kopii.
  3. Ograniczenie displacement: rzeczywiste wypukłości stosować tylko tam, gdzie kamera widzi z bliska; w oddali wystarczy mapa normalnych.
  4. Optymalizacja tekstur: rozdzielczości dopasowane do odległości kamery i odpowiednie formaty zmniejszają obciążenie pamięci.
  5. Ponowne wykorzystanie cache: w animacjach z ruchomą kamerą i statyczną sceną obliczyć cache oświetlenia raz i użyć ponownie.
  6. 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.

Zapytaj o wycenę