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
appklasörünün birsampledataklasörü içerdiğini doğrulayın.Klasörü oluşturmak için Proje penceresinde
appklasörünü sağ tıklayın ve Yeni > Örnek Veri Dizini'ni seçin.sampledataklasörü, Android Studio projenizin bir parçası olsa da içerikleri APK'nıza dahil edilmeyecek.3D model kaynak öğe dosyanızı (
*.obj,*.fbxveya*.gltf) ve tüm bağımlılarını (*.mtl,*.bin,*.png,*.jpgvb.)sampledataklasörüne kopyalayın.Bu kaynak dosyaları, projenizin
assetsveyaresklasö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.gradleve*.sfaile*.sfbdosyaları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*.matdosyasının yolunu kullanmasını söyler.
.sfa Çıkış Yolu Varsayılanı kullanın veya sampledataklasö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ı *.fbxanimasyon 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.gradleekler:dependencies { … classpath 'com.google.ar.sceneform:plugin:1.15.0' }app's
build.gradledosyanızıapply pluginsatı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.gradleadlı 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
*.sfadosyası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.*.sfadosyası, öğ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>,*.sfadosyasını Sceneform ikili öğe (*.sfb) dosyasında derler.Bu
*.sfbdosyası, 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:
*.sfametin 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
*.sfbdosyasını günceller. - Güncellenmiş öğeyi önizlemek için
*.sfbdosyası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
*.matdosyasını belirtin.
Daha önce içe aktarılan bir öğeyi güncellemek için:
*.sfaiçeriği özelleştirilmediyse mevcut*.sfave*.sfbdosyaları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*.sfadosyasını açın vesourceözelliğini özel malzeme*.matdosyanı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

