Dowiedz się, jak importować modele 3D, konwertować je do formatu Sceneform oraz wyświetlać ich podgląd w Android Studio.
Importowanie nowego zasobu 3D
Sceneform obsługuje zasoby 3D w tych formatach:
- Obj
- glTF (nieobsługiwane animacje)
- VPAID z animacjami lub bez nich.
Aby zaimportować nowy zasób 3D:
Sprawdź, czy folder
appprojektu zawiera foldersampledata.Aby utworzyć folder, kliknij prawym przyciskiem myszy folder
appw oknie Projekt, a następnie wybierz Nowy > przykładowy katalog danych.Folder
sampledatajest częścią projektu Android Studio, ale jego zawartość nie zostanie uwzględniona w pliku APK.Skopiuj do zasobu
sampledataplik zasobu modelu modelu 3D (*.obj,*.fbxlub*.gltf) i wszystkie jego zależności (*.mtl,*.bin,*.png,*.jpgitd.).Nie kopiuj tych plików źródłowych do folderu
assetsaniresprojektu, ponieważ spowoduje to niepotrzebne dodanie ich do pliku APK.Kliknij prawym przyciskiem myszy zasób źródłowy modelu 3D i wybierz Importuj zasób sceny, aby rozpocząć proces importowania.
Wartości są używane przez pozycję
sceneform.asset()w aplikacjachbuild.gradlei określają, gdzie zostaną wygenerowane pliki*.sfai*.sfbw projekcie.Jeśli importujesz model po raz pierwszy, użyj wartości domyślnych.
Pole Opis Źródłowa ścieżka do zasobu Nazwa pliku zasobu 3D OBJ, Anthos lub glTF do zaimportowania. Ścieżka materiałowa defaultinformuje Sceneform o wbudowanych materiałach domyślnych lub ścieżce do pliku niestandardowego*.mat.
Ścieżka wyjściowa.sfa Użyj ścieżki domyślnej lub podaj inną ścieżkę w folderze sampledata.W przypadku braku pliku .sfa zostanie wygenerowany. Można nim zmodyfikować, aby kontrolować niektóre aspekty procesu importowania.
Dzięki temu komponent
*.sfanie zostanie niepotrzebnie uwzględniony w pliku APK.Ścieżka wyjściowa.sfb Domyślnie używany jest folder src/main/assets/, który umożliwia używanie dowolnych nazw plików zasobów.Jeśli nazwa pliku (bez rozszerzenia) jest prawidłowym identyfikatorem zasobu (np.
R.raw.filename), zamiast tego możesz użyć folderusrc/main/res/raw/.Więcej informacji o korzystaniu z folderów
assets/ires/w aplikacji znajdziesz w artykule Omówienie zasobów aplikacji na Androidzie.Pliki animacji Jeśli importujesz pliki animacji
*.fbx, kliknij znak plusa (+) i dodaj pozostałe pliki pojedynczo.Kliknij Zakończ, aby rozpocząć proces importowania.
Aby zaimportować zasób, wtyczka wykonuje te czynności:
Dodaje wtyczkę Grace Sceneform do projektu
build.gradle, jeśli jeszcze nie istnieje:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }Zaktualizuj plik app's
build.gradle, aby zawierał wierszapply plugini wpissceneform.asset()dla nowo zaimportowanego zasobu:apply plugin: 'com.google.ar.sceneform.plugin' sceneform.asset('sampledata/models/andy.obj', // 'Source Asset Path' specified during import. 'default', // 'Material Path' specified during import. 'sampledata/models/andy.sfa', // '.sfa Output Path' specified during import. 'src/main/res/raw/andy') // '.sfb Output Path' specified during import.Te nowe wpisy w aplikacji's
build.gradletworzą 2 zadania Gradle:createAsset-<asset-name>tworzy plik definicji zasobu Scene(*.sfa), jeśli jeszcze nie istnieje.To zadanie nie zastąpi istniejącego pliku
*.sfa, co oznacza, że wszelkie zmiany wprowadzone w pliku SFA po jego zastąpieniu nie zostaną zastąpione.Plik
*.sfato plik tekstowy zawierający pełny, czytelny dla człowieka opis ustawień importu zasobu. Odwołuje się on do modeli i tekstur w zasobie źródłowym, a także określa materiały, dostarczając parametry materiałowe do sceny fizycznej.compileAsset-<asset-name>kompiluje plik*.sfado pliku binarnego Sceneform (*.sfb).Ten plik
*.sfbjest wbudowany w plik APK i uruchamiany w czasie działania, by utworzyć renderowaną wersję.
Więcej informacji znajdziesz w przewodniku po wtyczce Gradle platformy Sceneform.
Otwiera
*.sfaw oknie tekstowym, a*.sfbw oknie Viewer.
Aktualizowanie wcześniej zaimportowanego zasobu 3D
Gdy zaktualizujesz wcześniej zaimportowany plik źródłowy modelu OBJ, eCPC lub glTF (*.obj, *.fbx lub *.gltf), odpowiedni wpis sceneform.asset() w aplikacji build.gradle spowoduje automatyczne wygenerowanie zaktualizowanego pliku *.sfb na podstawie bieżących parametrów *.sfa.
Aby iterować parametry już zaimportowanego zasobu:
- Zmodyfikuj plik tekstowy
*.sfa, kierując się wskaźnikiem formatu pliku SFA. - Zapisz zmiany. Spowoduje to ponowne skompilowanie zasobu i zaktualizowanie pliku
*.sfb. - Wyświetl podgląd zaktualizowanego zasobu, klikając dwukrotnie plik
*.sfb, aby otworzyć okno Przeglądający.
Jeśli aktualizujesz wcześniej zaimportowany zasób, który zawiera dane animacji, zaimportuj każdy ze zaktualizowanych plików *.fbx pojedynczo za pomocą znaku plusa (+) w sekcji Pliki animacji w oknie dialogowym importowania.
Definicje zasobów Gradle
Podczas importu dodawane są wszystkie pliki animacji *.fbx na końcu pliku build.gradle.
sceneform.asset('sampledata/models/andy_dance.fbx',
'default',
'sampledata/models/andy_dance.sfa',
'src/main/res/raw/andy_dance',
['sampledata/models/andy_wave_r.fbx',
'sampledata/models/andy_wave_l.fbx'])
Utwórz mechanizm renderowania
Po skompilowaniu zasobu w formacie *.sfb możesz utworzyć ModelRenderable i załączyć go do węzła w scenie w następujący sposób:
ModelRenderable.builder()
// To load as an asset from the 'assets' folder ('src/main/assets/andy.sfb'):
.setSource(this, Uri.parse("andy.sfb"))
// Instead, load as a resource from the 'res/raw' folder ('src/main/res/raw/andy.sfb'):
//.setSource(this, R.raw.andy)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Log.e(TAG, "Unable to load Renderable.", throwable);
return null;
});
Używanie materiałów niestandardowych
Materiały domyślne – sceneforma – ułatwiają programistom uzyskanie atrakcyjnych wyników. Możesz też użyć materiałów niestandardowych, aby dostosować wygląd zasobów.
Aby przypisać materiały niestandardowe do zasobu:
Utwórz plik z niestandardową definicją materiału (
*.mat), kierując się [materiałem niestandardowym](/sceneform/develop/custom-material).Zastosuj do zasobu materiały niestandardowe:
Podczas importowania nowego zasobu:
- Określ plik niestandardowy materiału
*.matpodczas importowania.
Aby zaktualizować wcześniej zaimportowany zasób:
Jeśli treść
*.sfanie została dostosowana, usuń obecne pliki*.sfai*.sfboraz wpissceneform.asset()w aplikacjibuild.gradle, a następnie ponownie zaimportuj zasób. Dzięki temu wygenerowane atrybuty*.sfai parametry materiału będą zgodne z parametrami obsługiwanymi przez materiały niestandardowe.Aby zachować wszystkie wprowadzone dostosowania
*.sfa, otwórz plik*.sfai zmień atrybutsourcena ścieżkę do pliku niestandardowego*.mat, a następnie ręcznie dostosuj atrybuty*.sfai parametry materiału do swojego materiału niestandardowego.
- Określ plik niestandardowy materiału

