Impor dan lihat pratinjau aset 3D

Pelajari cara mengimpor model 3D, mengonversinya menjadi format Sceneform, dan melihat pratinjau di Android Studio.

Impor aset 3D baru

Sceneform mendukung aset 3D dalam format berikut:

  • OBJ
  • glTF (animasi tidak didukung)
  • FBX, dengan atau tanpa animasi.

Ikuti langkah-langkah berikut untuk mengimpor aset 3D baru:

  1. Pastikan folder app project Anda berisi folder sampledata.

    Untuk membuat folder tersebut, klik kanan folder app di jendela Project, lalu pilih New > Sample Data Directory.

    Folder sampledata adalah bagian dari project Android Studio Anda, tetapi kontennya tidak akan disertakan dalam APK Anda.

  2. Salin file aset sumber model 3D Anda (*.obj, *.fbx, atau *.gltf), dan semua dependensinya (*.mtl, *.bin, *.png, *.jpg, dll.) ke dalam folder sampledata.

    Jangan menyalin file sumber ini ke folder assets atau res project Anda, karena akan menyebabkan file tersebut disertakan dalam APK yang tidak perlu.

  3. Klik kanan aset sumber model 3D dan pilih Import Sceneform Asset untuk memulai proses impor.

    Nilai digunakan oleh entri sceneform.asset() dalam build.gradle aplikasi, dan menentukan tempat file *.sfa dan *.sfb akan dibuat dalam project Anda.

    Jika Anda mengimpor model untuk pertama kalinya, gunakan nilai default.

    Kolom Deskripsi
    Jalur Aset Sumber Nama file aset model 3D OBJ, FBX, atau glTF yang akan diimpor.
    Jalur Material default memberi tahu Sceneform untuk menggunakan bahan default bawaan atau jalur ke file *.mat bahan kustom.
    Jalur Output .sfa Gunakan default, atau tentukan jalur lain pada folder sampledata.

    File .sfa akan dibuat jika tidak ada. Atribut ini dapat diubah untuk mengontrol beberapa aspek proses impor.

    Hal ini memastikan bahwa *.sfa tidak disertakan dalam APK Anda secara tidak berurutan.

    Jalur Output.sfb Secara default, folder src/main/assets/ digunakan, yang memungkinkan penggunaan nama file aset arbitrer.

    Jika nama file (tanpa ekstensi file) adalah ID resource yang valid (misalnya R.raw.filename), Anda dapat menggunakan folder src/main/res/raw/ jika mau.

    Lihat Ringkasan resource aplikasi Android untuk mengetahui informasi selengkapnya tentang penggunaan folder assets/ dan res/ pada aplikasi Anda.

    File Animasi

    Jika Anda mengimpor *.fbx file animasi, klik tanda plus (+) dan tambahkan file lainnya satu per satu.

  4. Klik Finish untuk memulai proses impor.

Untuk mengimpor aset Anda, plugin akan melakukan hal berikut:

  1. Menambahkan plugin gradle Sceneform ke build.gradle project's jika belum ada:

    dependencies {
        …
        classpath 'com.google.ar.sceneform:plugin:1.15.0'
    }
    
  2. Memperbarui file build.gradle aplikasi untuk menyertakan baris apply plugin, dan entri sceneform.asset() untuk aset yang baru diimpor:

    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.
    

    Entri baru di build.gradle aplikasi membuat dua tugas gradle:

    • createAsset-<asset-name> akan membuat file definisi aset (*.sfa) Sceneform jika belum ada.

      Tugas ini tidak akan menimpa file *.sfa yang ada, yang berarti perubahan apa pun yang Anda buat pada file SFA setelah impor tidak akan ditimpa.

      File *.sfa adalah file teks yang berisi deskripsi yang lengkap dan dapat dibaca oleh manusia tentang setelan impor aset. Referensi ini merujuk pada model dan tekstur dalam aset sumber Anda, serta menentukan material dengan menyediakan parameter material untuk material berbasis fisik Sceneform.

    • compileAsset-<asset-name> mengompilasi file *.sfa menjadi file aset biner Sceneform (*.sfb).

      File *.sfb ini akan di-build pada APK aplikasi Anda dan dimuat pada runtime untuk membuat render.

    Untuk informasi selengkapnya, lihat Referensi Plugin Sceneform Gradle.

  3. Membuka *.sfa di jendela teks dan *.sfb di jendela Pelihat.

Memperbarui aset 3D yang sebelumnya diimpor

Saat Anda memperbarui file aset sumber model OBJ, FBX, atau glTF yang sebelumnya diimpor (*.obj, *.fbx, atau *.gltf), entri sceneform.asset() yang sesuai di aplikasi build.gradle Anda menyebabkan plugin menghasilkan file *.sfb yang diperbarui secara otomatis, berdasarkan parameter *.sfa saat ini.

Untuk melakukan iterasi pada parameter untuk aset yang sudah diimpor:

  • Ubah file teks *.sfa menggunakan referensi format file SFA sebagai panduan.
  • Simpan perubahan Anda. Hal ini menyebabkan aset dikompilasi ulang dan memperbarui file *.sfb.
  • Lihat pratinjau aset yang diperbarui dengan mengklik dua kali file *.sfb untuk membuka jendela Viewer aset.

Jika Anda memperbarui aset yang sebelumnya diimpor yang menyertakan data animasi, impor setiap file *.fbx yang diperbarui satu per satu menggunakan tanda plus (+) di bagian Animation Files pada dialog impor.

Definisi aset Gradle

Proses impor akan menambahkan file animasi *.fbx di akhir file 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'])

Membuat Renderable

Setelah aset dikompilasi ke dalam format *.sfb, Anda dapat mem-build ModelRenderable dan melampirkannya ke node dalam scene sebagai berikut:

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;
    });

Menggunakan materi kustom

Materi default Sceneform membuat developer mudah memperoleh hasil yang terlihat bagus. Anda juga dapat menggunakan bahan khusus untuk menyesuaikan tampilan aset secara mendalam.

Untuk menetapkan materi kustom ke aset Anda:

  1. Buat file definisi material kustom (*.mat), menggunakan [Referensi Material Kustom](/sceneform/Develop/custom-material sebagai panduan.

  2. Terapkan materi kustom ke aset:

    Saat mengimpor aset baru:

    Untuk memperbarui aset yang diimpor sebelumnya:

    • Jika konten *.sfa belum disesuaikan, hapus file *.sfa dan *.sfb yang ada dan entri sceneform.asset() di build.gradle aplikasi, lalu impor ulang aset. Hal ini memastikan bahwa atribut *.sfa dan parameter material yang dibuat ulang akan cocok dengan atribut yang didukung oleh bahan kustom Anda.

    • Untuk mempertahankan penyesuaian *.sfa yang Anda buat, buka file *.sfa dan ubah atribut source ke jalur file *.mat materi kustom Anda, lalu sesuaikan atribut *.sfa dan parameter material secara manual agar sesuai dengan materi kustom Anda.