Przejdź do treści
Darmowy audyt

Konfiguratory 3D Problem i rozwiązanie

Model 3D z programu CAD jest za ciężki do konfiguratora w przeglądarce - jak go przygotować

Autor: Bartosz Gromek Zaktualizowano: 7 min czytania

W skrócie

  • Objaw: model wyeksportowany z programu CAD lub BIM ładuje się długo, konfigurator przycina przy obracaniu, a na telefonie karta przeładowuje się albo pokazuje pusty ekran.
  • Przyczyna: plik konstrukcyjny zawiera każdą śrubę, otwór i ukryte części, krzywizny zamienione na gęstą siatkę trójkątów oraz mnóstwo osobnych obiektów, których klient i tak nie zobaczy.
  • Rozwiązanie: usuń niewidoczne części, uprość geometrię, powtarzalne elementy rysuj jako instancje, zapisz model jako GLB z kompresją Draco lub Meshopt i teksturami KTX2, a przy produktach o zmiennych wymiarach rozważ model budowany w kodzie.

Nie masz czasu? Zrobimy to za Ciebie - Konfigurator 3D na stronę od 3 500 zł netto

Model z programu CAD jest za ciężki do konfiguratora, bo powstał do produkcji, a nie do wyświetlania: zawiera każdą śrubę, otwór i spaw, a przeglądarka na telefonie musi to wszystko pobrać, zapisać w pamięci karty graficznej i narysować przy każdym obrocie. Rozwiązaniem nie jest mocniejszy serwer, tylko osobna, lekka wersja modelu w formacie glTF/GLB albo model budowany w kodzie z parametrów produktu.

Po czym poznać, że model z CAD jest za ciężki?

Najprościej po zachowaniu konfiguratora na telefonie średniej klasy. Jeśli model ładuje się wyraźnie dłużej niż reszta strony, a obracanie przycina, przyczyną jest zwykle sam plik, a nie kod konfiguratora.

  • plik modelu waży więcej niż wszystkie zdjęcia na stronie razem, choć produkt jest prosty, np. garaż albo wiata,
  • na komputerze konfigurator działa płynnie, a na telefonie przycina albo karta przeładowuje się w trakcie,
  • narzędzia przeglądarki pokazują bardzo dużą liczbę trójkątów i osobnych obiektów w scenie,
  • po zmianie koloru albo wymiaru obraz zatrzymuje się na chwilę.

Dlaczego model z programu CAD nie nadaje się wprost do przeglądarki?

Bo program konstrukcyjny opisuje produkt z dokładnością potrzebną w warsztacie, a przeglądarka potrzebuje tylko tego, co widać z kilku metrów. Każdy detal, którego klient nie zobaczy, i tak trzeba pobrać, rozpakować i narysować.

Każda śruba i każdy otwór

Pliki STEP, IGES czy eksporty z programów do konstrukcji stalowych zawierają wkręty, nakrętki, otwory montażowe, uszczelki i łączniki. Przy hali stalowej to ogromna liczba drobnych części na ramach, płatwiach i ryglach. Klient ogląda bryłę, kolor, dach i bramy, a żadnej z tych śrub nie rozróżni na ekranie telefonu.

Krzywizny zamienione na trójkąty

Przeglądarka nie rysuje powierzchni opisanych matematycznie, tylko siatkę trójkątów. Przy eksporcie każdy otwór, zaokrąglenie i przetłoczenie blachy trapezowej zamienia się w gęstą siatkę, a domyślne ustawienia eksportu dają zwykle dokładność potrzebną do produkcji, a nie do ekranu.

Ukryte części i mnóstwo osobnych obiektów

Model złożeniowy zawiera elementy schowane wewnątrz innych: kotwy, wzmocnienia pod blachą, wewnętrzne części zamków i zawiasów. Do tego każdy element jest osobnym obiektem z własnym materiałem, a każdy taki obiekt to osobne polecenie rysowania dla karty graficznej. Pliki BIM w formacie IFC dokładają jeszcze dane, które w konfiguratorze są zbędne, np. właściwości materiałowe i opisy elementów.

Jednostki, osie i materiały

Format glTF przyjmuje metry i oś Y skierowaną w górę, a programy CAD często pracują w milimetrach i z osią Z w górę. Źle przeliczony model jest tysiąc razy za duży albo leży na boku. Materiały z CAD rzadko mają parametry potrzebne do realistycznego wyświetlania, więc i tak trzeba je przygotować od nowa jako materiały PBR.

Jak przygotować model z CAD do konfiguratora 3D?

Model z CAD traktuj jako źródło wymiarów, a do konfiguratora przygotuj osobną, uproszczoną wersję w formacie GLB. Poniżej najważniejsze techniki, od tych, które zwykle dają najwięcej.

Technika Co daje Przykład
Usunięcie niewidocznych części Mniej geometrii do pobrania i rysowania Śruby, kotwy, wnętrza zamków, wzmocnienia pod blachą
Uproszczenie geometrii Mniej trójkątów przy podobnym wyglądzie Przetłoczenia blachy jako tekstura z mapą normalnych zamiast pełnej siatki
Łączenie obiektów Mniej poleceń rysowania Elementy w tym samym materiale jako jedna siatka
Instancje Jeden model rysowany wiele razy naraz Płatwie, rygle, słupki ogrodzenia, arkusze blachy trapezowej
Kompresja Draco lub Meshopt Mniejszy plik geometrii do pobrania Cały model zapisany jako GLB
Tekstury KTX2 Mniej pamięci karty graficznej na telefonie Faktura blachy, drewna, podłoża pod obiektem
Poziomy szczegółów (LOD) Prostsza wersja, gdy obiekt jest daleko Widok całej hali z dużej odległości

Instancje mają największe znaczenie przy halach stalowych i ogrodzeniach, w których te same elementy powtarzają się dziesiątki razy. Zamiast zapisywać każdą płatew jako osobną kopię geometrii, konfigurator przechowuje jeden model i listę pozycji, a karta graficzna rysuje wszystkie kopie w jednym poleceniu. W three.js służy do tego InstancedMesh, a w formacie glTF rozszerzenie EXT_mesh_gpu_instancing.

Kompresja Draco zwykle mocniej zmniejsza plik geometrii, a Meshopt szybciej się rozpakowuje. Obie wymagają dekodera w przeglądarce, więc warto porównać je na własnym modelu i patrzeć na czas pojawienia się modelu na telefonie, a nie tylko na rozmiar pliku. Tekstury KTX2 pozostają skompresowane także w pamięci karty graficznej, czego nie dają pliki JPG i PNG. Całość można przygotować np. narzędziem glTF-Transform.

Od producenta potrzebne są zwykle: plik CAD lub rysunki z wymiarami, przekroje profili, rodzaje blach i pokryć, zdjęcia detali z bliska oraz próbki kolorów. Lepiej przekazać je na starcie w komplecie, bo brak rysunku bramy czy zdjęcia obróbki potrafi zatrzymać przygotowanie modelu, a dorabianie detali po fakcie oznacza ponowną optymalizację całego pliku.

Kiedy lepiej zbudować model w kodzie, zamiast konwertować CAD?

Gdy produkt zmienia wymiary. Jeśli klient wpisuje szerokość, długość i wysokość, model parametryczny budowany w kodzie z reguł produktu jest lżejszy i łatwiejszy w utrzymaniu niż zestaw przekonwertowanych plików dla kolejnych rozmiarów.

Przy hali stalowej konfigurator może ustawić ramy w zadanym rozstawie, dodać płatwie i rygle jako instancje i pokryć ściany blachą o długości wyliczonej z wymiarów. Pliki z CAD przydają się wtedy jako źródło przekrojów profili, rozstawów i detali, a gotowe modele GLB zostają tylko dla elementów o stałej formie, np. bram, drzwi, okien i świetlików. Jak takie podejście wygląda przy obiektach wielkogabarytowych, pokazujemy na stronie konfiguratora 3D hal stalowych.

Co sprawdzić przed wgraniem modelu? Lista kontrolna

  • model nie zawiera śrub, kotew ani części schowanych wewnątrz innych,
  • jednostką są metry, oś Y wskazuje górę, a punkt zero leży na poziomie podłoża,
  • elementy w tym samym materiale są połączone, a powtarzalne zapisane jako instancje,
  • plik jest w formacie GLB z kompresją Draco lub Meshopt,
  • tekstury mają umiarkowaną rozdzielczość i są zapisane w KTX2, a kolory w sRGB,
  • materiały mają ustawioną chropowatość i metaliczność,
  • model działa płynnie na telefonie średniej klasy, nie tylko na komputerze.

Ustal na początku, kto przygotowuje lekką wersję modelu i do kogo należą pliki źródłowe. Gdy produkt się zmieni, poprawka zaczyna się od pliku CAD, a lekka wersja powinna dać się odtworzyć według tej samej, spisanej procedury.

Modele, tekstury i sposób ich ładowania planujemy razem z całym wdrożeniem konfiguratora 3D na stronę. Ten problem jest jednym z naszej listy 50 problemów z konfiguratorem 3D produktu, w której opisujemy też tekstury, kolory i działanie konfiguratora na telefonach.

Jak to rozwiązać krok po kroku

Model 3D z programu CAD jest za ciężki do konfiguratora w przeglądarce - jak go przygotować - https://codescriptum.pl/blog/model-3d-z-cad-za-ciezki-do-przegladarki/

  1. Zrób listę elementów, które klient musi widzieć i zmieniać (bryła, dach, bramy, drzwi, okna, kolory), i oznacz wszystko inne w modelu CAD jako do usunięcia.
  2. Wyeksportuj model do formatu siatkowego z dokładnością dobraną do ekranu, a nie do produkcji, i sprawdź jednostki oraz kierunek osi.
  3. Usuń niewidoczne części, uprość zaokrąglenia i przetłoczenia (detale zastąp teksturą z mapą normalnych) i połącz elementy o tym samym materiale.
  4. Powtarzalne elementy, np. płatwie, rygle, słupki i arkusze blachy, zapisz jako jeden model rysowany w wielu pozycjach (instancje).
  5. Przygotuj materiały PBR i tekstury w umiarkowanej rozdzielczości, a potem zapisz model jako GLB z kompresją Draco lub Meshopt i tekstury jako KTX2, np. narzędziem glTF-Transform.
  6. Jeśli produkt ma zmienne wymiary, zleć model parametryczny budowany w kodzie, a pliki GLB zostaw tylko dla elementów o stałej formie.
  7. Przetestuj ładowanie i obracanie na telefonie średniej klasy przez internet mobilny i spisz procedurę przygotowania modelu, żeby dało się ją powtórzyć przy zmianie produktu.

Jak sprawdzić, że zadziałało

Otwórz konfigurator na telefonie średniej klasy przez internet mobilny. Model pojawia się szybko po uruchomieniu, obracanie jest płynne, zmiana koloru i wymiaru nie zatrzymuje obrazu, a karta nie przeładowuje się po kilku minutach używania. W narzędziach przeglądarki plik modelu jest wyraźnie mniejszy niż przed optymalizacją.

Usługa CodeScriptum

Konfigurator 3D na stronę

od 3 500 zł netto

  • Model 3D produktu z wymiarami, kolorami i dodatkami
  • Cena na żywo z Twojego cennika i zapytanie z konfiguracją
  • Pełny kod u Ciebie, bez abonamentu

Najczęściej zadawane pytania

W jakim formacie zapisać model 3D do konfiguratora w przeglądarce?

Najlepiej w glTF, w wersji binarnej GLB. To otwarty format Khronos Group przygotowany do przesyłania i wyświetlania modeli, obsługiwany przez three.js, z kompresją geometrii (Draco, Meshopt) i tekstur (KTX2).

Czy da się wgrać do konfiguratora plik STEP albo IFC bez przeróbki?

Taki plik da się przekonwertować, ale efekt zwykle jest za ciężki dla telefonu, bo zawiera każdą śrubę i ukryte części. Plik CAD lub BIM traktuj jako źródło wymiarów i przygotuj z niego osobną, uproszczoną wersję.

Draco czy Meshopt: którą kompresję wybrać?

Draco zwykle daje mniejszy plik geometrii, a Meshopt szybciej się rozpakowuje w przeglądarce. Najlepiej sprawdzić obie na własnym modelu i porównać czas pojawienia się modelu na telefonie, a nie tylko rozmiar pliku.

Czy uproszczony model nie będzie wyglądał gorzej?

Z odległości, z jakiej klient ogląda garaż czy halę, różnicy zwykle nie widać, bo drobne detale przejmują tekstury i mapy normalnych. O realistycznym wyglądzie bardziej decydują materiały, oświetlenie i cień niż liczba trójkątów.

Kto powinien przygotować lekką wersję modelu?

Wykonawca konfiguratora albo grafik 3D, na podstawie plików CAD, rysunków i zdjęć od producenta. Zapisz w umowie, kto to robi, w jakim formacie i do kogo należą pliki po wdrożeniu.

Źródła

  1. glTF: otwarty format modeli 3D (Khronos Group) (otwiera się w nowej karcie) khronos.org
  2. KTX: format skompresowanych tekstur (Khronos Group) (otwiera się w nowej karcie) khronos.org
  3. three.js: InstancedMesh (dokumentacja) (otwiera się w nowej karcie) threejs.org
  4. three.js: LOD, poziomy szczegółów (dokumentacja) (otwiera się w nowej karcie) threejs.org
  5. Draco: kompresja geometrii 3D (Google) (otwiera się w nowej karcie) google.github.io
  6. glTF-Transform: optymalizacja plików glTF (otwiera się w nowej karcie) gltf-transform.dev

Podobne problemy

O autorze

Bartosz Gromek

Założyciel CodeScriptum, technologia i rozwój

Założyciel CodeScriptum - firmy technologicznej z Łodzi, działającej od 2022 roku. Odpowiada za technologię i rozwój, a projekty realizuje razem z zespołem specjalistów od stron, sklepów internetowych, systemów CRM, integracji, AI i marketingu. Na blogu opisuje problemy, z którymi zgłaszają się klienci CodeScriptum, i sprawdzone sposoby ich rozwiązania.

Newsletter

Konkretne porady raz na jakiś czas

Nowe problemy i rozwiązania z bloga, zmiany w przepisach dla sklepów i stron oraz sprawdzone sposoby na więcej klientów z internetu. Bez spamu, wypis jednym kliknięciem.