PRZED PUBLIKACJĄ

Kompresja GLB i zgodność przeglądarek modeli

Rozszerzenie .glb nie gwarantuje, że każda aplikacja załaduje zawartość pliku. Sprawdź rozszerzenia użyte w wyniku i przetestuj aplikację docelową.

Dopasuj ustawienia do modułu ładowania

UstawienieWymagania ładowania
ZachowawczyObsługa kwantyzacji geometrii; mogą być też używane transformacje tekstur.
Meshopt standardowy / wysoka kompresjaObsługa dekodera EXT_meshopt_compression.
Tekstury KTX2Obsługa KHR_texture_basisu i transkoder Basis.
Tekstury WebPObsługa EXT_texture_webp i dekodowanie WebP.

Wymagania mogą się łączyć. Panel wyników podaje informacje o zgodności konkretnego pliku. Nasz podgląd zawiera dekodery, więc działający podgląd nie dowodzi, że są one skonfigurowane w Twojej aplikacji.

Profile domyślnie używają kwantyzacji geometrii. Jej wyłączenie może usunąć wymóg jej obsługi, ale Meshopt lub przekonwertowane tekstury nadal wymagają właściwych modułów ładowania. Sprawdź rozszerzenia zgłoszone dla rzeczywistego wyniku.

Korzystanie z Three.js

Dla geometrii skompresowanej przez Meshopt zarejestruj dekoder za pomocą GLTFLoader.setMeshoptDecoder(). Dla tekstur KTX2 skonfiguruj KTX2Loader, wykryj obsługę przez renderer i podłącz go przez setKTX2Loader(). Udostępniaj zgodne pliki transkodera wraz z aplikacją i korzystaj z dokumentacji używanej wersji Three.js.

dokumentację GLTFLoader · dokumentację KTX2Loader

Przykład: oryginał się ładuje, ale eksport Mniejszy plik już nie

Zachowaj oryginalne tekstury i wyeksportuj to samo źródło dwa razy: raz z profilem Zachowawczy, a raz z Mniejszy plik. Jeśli tylko drugi plik nie działa w aplikacji, sprawdź zgłoszone rozszerzenia i błąd ładowania przed zmianą geometrii. Porównanie zawęża problem do zmienionych wymagań ładowania; nie dowodzi, że każda awaria wynika z braku dekodera.

Dla wyniku z EXT_meshopt_compression w Three.js zarejestruj MeshoptDecoder przed ładowaniem. Potem spróbuj ponownie załadować ten sam eksport. Gdy nie można zmienić aplikacji docelowej, rozwiązaniem zastępczym jest eksport bez kompresji, kosztem potencjalnie większego pliku.

Przykład: oryginalne tekstury działają, ale KTX2 nie działa po wdrożeniu

Nie zmieniaj geometrii i porównaj tekstury oryginalne z KTX2. W aplikacji Three.js sprawdź, czy podłączono KTX2Loader i wywołano detectSupport. Sprawdź żądania basis_transcoder.js i basis_transcoder.wasm. Odpowiedź 404 lub strona HTML aplikacji pod tymi adresami wskazuje na problem z udostępnianiem plików, a nie z jakością tekstur.

Po poprawieniu modułu ładowania lub ścieżki zasobów ponownie sprawdź ten sam plik KTX2, również na docelowym urządzeniu mobilnym. Plik działający w podglądzie tej strony spełnia wymagania tego podglądu; przeglądarka modeli w produkcji nadal musi spełnić własne wymagania ładowania.

Nazwy, extras i zachowanie sceny

Trzy opcje zachowywania są domyślnie włączone. Pozostaw je włączone, jeśli aplikacja szuka obiektów lub materiałów po nazwie albo odczytuje extras. Nie gwarantują identycznych indeksów węzłów, hierarchii, próbek animacji ani własnych atrybutów. Optymalizacja może łączyć i porządkować dane oraz zmieniać precyzję.

Sprawdź zaznaczanie, zmianę materiałów, odtwarzanie animacji, morph targets i transformacje obiektów w rzeczywistej aplikacji. Zachowanie extras nie służy zachowaniu dowolnych własnych rozszerzeń.

Ograniczenia wejścia

Usługa odrzuca dane skompresowane Draco, zasoby zewnętrzne i nieobsługiwane wymagane rozszerzenia. Nieznane opcjonalne rozszerzenia mogą zostać pominięte. W razie potrzeby wyeksportuj z aplikacji źródłowej nieskompresowany GLB z zasobami osadzonymi.

Listę rozszerzeń i opis optymalizacji silnika znajdziesz w oficjalnej dokumentacji gltfpack. Usługa internetowa stosuje dodatkową walidację i limity zasobów.

Ładowanie modeli gltfpack w Three.js →

Otwórz optymalizator ↗