3D modelleri içe aktarmayı, Sceneform biçimine dönüştürmeyi ve Android Studio'da önizlemeyi öğrenin.
Yeni 3D öğeleri içe aktarma
Sceneform, aşağıdaki biçimlerde 3D öğeleri destekler:
- OBJ
- glTF (animasyonlar desteklenmez)
- WebGL, animasyonlar içeren veya içermeyen.
Yeni bir 3D öğeyi içe aktarmak için şu adımları uygulayın:
Projenizin
app
klasörünün birsampledata
klasörü içerdiğini doğrulayın.Klasörü oluşturmak için Proje penceresinde
app
klasörünü sağ tıklayın ve Yeni > Örnek Veri Dizini'ni seçin.sampledata
klasörü, Android Studio projenizin bir parçası olsa da içerikleri APK'nıza dahil edilmeyecek.3D model kaynak öğe dosyanızı (
*.obj
,*.fbx
veya*.gltf
) ve tüm bağımlılarını (*.mtl
,*.bin
,*.png
,*.jpg
vb.)sampledata
klasörüne kopyalayın.Bu kaynak dosyaları, projenizin
assets
veyares
klasörüne kopyalamayın. Aksi takdirde bu dosyalar APK'nıza gereksiz şekilde dahil edilir.İçe aktarma işlemine başlamak için 3D model kaynak öğesini sağ tıklayın ve Sahne Öğesini İçe Aktar'ı seçin.
Değerler uygulamadaki
sceneform.asset()
girişi tarafından kullanılırbuild.gradle
ve*.sfa
ile*.sfb
dosyalarının projenizde nerede oluşturulacağını belirler.Bir modeli ilk kez içe aktarıyorsanız varsayılan değerleri kullanın.
Alan Açıklama Kaynak Öğe Yolu İçe aktarılacak OBJ, {8/} veya glTF 3D model öğesinin dosya adı. Malzeme Yolu default
, Sceneform'a yerleşik varsayılan malzemeyi veya özel malzeme*.mat
dosyasının yolunu kullanmasını söyler.
.sfa Çıkış Yolu Varsayılanı kullanın veya sampledata
klasörünün altında başka bir yol belirtin.Eksikse .sfa dosyası oluşturulur. İçe aktarma işleminin bazı yönlerini kontrol etmek için değiştirilebilir.
Bu,
*.sfa
’nın gereksiz bir şekilde APK'nıza eklenmemesini sağlar..sfb Çıkış Yolu Varsayılan olarak rastgele öğe dosya adlarının kullanılmasına olanak tanıyan src/main/assets/
klasörü kullanılır.Dosya adı (dosya uzantısı olmadan) geçerli bir kaynak tanımlayıcısıysa (ör.
R.raw.filename
) isterseniz bunun yerinesrc/main/res/raw/
klasörünü kullanabilirsiniz.Uygulamanızda
assets/
veres/
klasörlerini kullanma hakkında daha fazla bilgi için Android'in Uygulama kaynaklarına genel bakış sayfasına göz atın.Animasyon Dosyaları *.fbx
animasyon dosyasını içe aktarıyorsanız artı işaretini (+) tıklayın ve geri kalan dosyaları tek tek ekleyin.İçe aktarma işlemini başlatmak için Son'u tıklayın.
Eklenti, öğenizi içe aktarmak için aşağıdakileri yapar:
Henüz yoksa Sceneform gradle eklentisini projenize
build.gradle
ekler:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }
app's
build.gradle
dosyanızıapply plugin
satır ve yeni içe aktarılan öğe içinsceneform.asset()
girişi içerecek şekilde günceller: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.
build.gradle
adlı uygulamadaki bu yeni girişler iki tane gradyan görevi oluşturur:createAsset-<asset-name>
henüz yoksa Sceneform öğe tanımı (*.sfa
) dosyası oluşturur.Bu görev, mevcut bir
*.sfa
dosyasının üzerine yazılmaz. Bu, içe aktarma işleminden sonra SFA dosyasında yaptığınız değişikliklerin üzerine yazılacağı anlamına gelmez.*.sfa
dosyası, öğenin içe aktarma ayarlarının tam, kullanıcılar tarafından okunabilen bir açıklamasını içeren bir metin dosyasıdır. Kaynak öğenizdeki modellere ve dokulara referans verir ve Sceneform'un fiziksel tabanlı malzemeleri için malzeme parametreleri sağlayarak malzemeleri tanımlar.compileAsset-<asset-name>
,*.sfa
dosyasını Sceneform ikili öğe (*.sfb
) dosyasında derler.Bu
*.sfb
dosyası, uygulamanızın APK'sında yerleşik olarak bulunur ve oluşturulabilirliği oluşturmak için çalışma zamanında yüklenir.
Daha fazla bilgi için Sceneform Gradle Plugin referansı sayfasına bakın.
*.sfa
öğesini bir metin penceresinde,*.sfb
öğesini bir Görüntüleyen penceresinde açar.
Daha önce içe aktarılan bir 3D öğeyi güncelleme
Daha önce içe aktarılmış bir OBJ, veya glTF modeli kaynak öğe dosyasını (*.obj
, *.fbx
ya da *.gltf
) güncellediğinizde uygulamanızın build.gradle
öğesindeki ilgili sceneform.asset()
girişi, eklentinin mevcut *.sfa
parametrelerine göre otomatik olarak güncellenmiş bir *.sfb
dosyası oluşturmasına neden olur.
Zaten içe aktarılmış bir öğenin parametrelerini tekrarlamak için:
*.sfa
metin dosyasını, rehber olarak SFA dosya biçimi referansını kullanarak değiştirin.- Değişikliklerinizi kaydedin. Bu, öğenin yeniden derlenmesini sağlar ve
*.sfb
dosyasını günceller. - Güncellenmiş öğeyi önizlemek için
*.sfb
dosyasını çift tıklayarak Görüntüleyici öğesini açın.
Animasyon verileri içeren önceden içe aktarılmış bir öğeyi güncelliyorsanız içe aktarma iletişim kutusunun Animasyon Dosyaları bölümündeki artı (+) işaretini kullanarak güncellenen *.fbx
dosyalarının her birini tek tek içe aktarın.
Gradyan tanımları
İçe aktarma işlemi, build.gradle
dosyasının sonuna *.fbx
animasyon dosyalarını ekler.
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'])
Oluşturulabilir Oluştur
Öğe *.sfb
biçiminde derlendikten sonra ModelRenderable
oluşturup sahnedeki bir düğüme aşağıdaki şekilde ekleyebilirsiniz:
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;
});
Özel materyaller kullanma
Sceneform's varsayılan materyaller geliştiricilerin harika sonuçlar almasını kolaylaştırır. Öğelerinizin görünümünü özelleştirmek için özel materyaller de kullanabilirsiniz.
Öğenize özel bir materyal atamak için:
[Özel Materyal Referansı](/sceneform/develop/custom-material) rehber olacak şekilde özel malzeme tanımı (
*.mat
) dosyası oluşturun.Özel materyali öğeye uygulayın:
Yeni bir öğeyi içe aktarırken:
- İçe aktarma işlemi sırasında özel malzeme
*.mat
dosyasını belirtin.
Daha önce içe aktarılan bir öğeyi güncellemek için:
*.sfa
içeriği özelleştirilmediyse mevcut*.sfa
ve*.sfb
dosyalarını, ayrıca uygulama'dakisceneform.asset()
girişini silin ve ardından öğeyi yeniden içe aktarın. Bu şekilde, yeniden oluşturulan*.sfa
özellikleri ile malzeme parametrelerinin, özel malzemenizin desteklediği parametrelerle eşleşmesi sağlanır.Yaptığınız
*.sfa
özelleştirmeyi korumak için*.sfa
dosyasını açın vesource
özelliğini özel malzeme*.mat
dosyanızın yoluyla değiştirin. Daha sonra,*.sfa
özelliklerini ve malzeme parametrelerini özel malzemenizle eşleşecek şekilde manuel olarak ayarlayın.
- İçe aktarma işlemi sırasında özel malzeme