Bu sayfada, Merhaba Sahne Formu örnek uygulamasındaki kodu inceleyerek önemli kavramlar açıklanmaktadır. Not:
Bu örnekte Sceneform ve ARCore kullanılmaktadır.
Sceneform'u ARCore olmadan kullanmak için ARCore bağımlılığı ve CAMERA izin gereksinimlerini göz ardı ederken aşağıdaki adımları uygulayın. Uygulamanızın düzeninde Sahneyi Oluşturma bölümünde açıklandığı gibi
SceneView
aracını kullanın.Bu örnek uygulama, Artırılmış Gerçeklik (AR) Gerekli uygulama olarak yazılmıştır.
AR İsteğe Bağlı ve AR Gerekli uygulamaları hakkında daha fazla bilgi edinmek için ARCore'u Etkinleştirme sayfasını inceleyin.
Projenizde Sceneform'u kullanmaya başlamak için şunları yapmanız gerekir:
- Sceneform eklentisini içe aktarma
- Projenizin
build.gradle
dosyalarını yapılandırın AndroidManifest.xml
cihazınızı güncelleyin- Çalışma zamanı denetimleri gerçekleştirme ve sahne görünümü oluşturma
- Oluşturulabilir oluşturma
- Sahneyi oluşturun
Sceneform eklentisini projenize aktarın
Sceneform eklentisi, yüklendikten sonra Android Studio'daki AR uygulamaları için Sceneform SDK'da 3D öğeleri içe aktarıp görüntüleyebilir ve oluşturabilirsiniz. Android Studio'nun 3.1 ve daha yeni sürümlerini kullanmanız gerekir.
Eklentiyi yüklemek için:
Android Studio'da Eklentiler ayarlarını açın:
Windows: Dosya > Ayarlar > Eklentiler > Veri Havuzlarına Göz At
macOS: Android Studio > Tercihler > Eklentiler
Veri depolarına göz at'ı tıklayın ve Google Sahne Araçları'nı (Beta) yükleyin.
Projenizin build.gradle
dosyalarını yapılandırın
build.gradle
projenizde Google Maven deposunun bulunduğundan emin olun:allprojects { repositories { google() …
Uygulamanızdaki
build.gradle
öğeleri, en güncel ARCore ve Sceneform kullanıcı deneyimi bağımlılıklarını ekleyerek güncelleyin. Ayrıca proje ayarlarınızın her iki kitaplıkla da uyumlu olduğundan emin olun.android { … defaultConfig { // Sceneform requires minSdkVersion >= 24. minSdkVersion 24 … } // Sceneform libraries use language constructs from Java 8. // Add these compile options if targeting minSdkVersion < 26. compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { … // Provides ARCore Session and related resources. implementation 'com.google.ar:core:1.15.0' // Provides ArFragment, and other UX resources. implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.15.0' // Alternatively, use ArSceneView without the UX dependency. implementation 'com.google.ar.sceneform:core:1.15.0' }
AndroidManifest.xml
öğenizi güncelleyin
AndroidManifest.xml
öğesini, uygulamanızın
(AR İsteğe bağlı) ARCore ve CAMERA erişimi kullandığını veya gerektirdiğini (AR Gerekli) gösterecek şekilde değiştirin:
<!-- Both "AR Optional" and "AR Required" apps require CAMERA permission. -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- Sceneform requires OpenGL ES 3.0 or later. -->
<uses-feature android:glEsVersion="0x00030000" android:required="true" />
<!-- Indicates that app requires ARCore ("AR Required"). Ensures the app is
visible only in the Google Play Store on devices that support ARCore.
For "AR Optional" apps remove this line. -->
<uses-feature android:name="android.hardware.camera.ar" />
<application>
…
<!-- Indicates that app requires ARCore ("AR Required"). Causes the Google
Play Store to download and install Google Play Services for AR along
with the app. For an "AR Optional" app, specify "optional" instead of
"required".
-->
<meta-data android:name="com.google.ar.core" android:value="required" />
</application>
Çalışma zamanı kontrolleri gerçekleştirme ve sahne görünümü oluşturma
Sceneform'u kullanmaya başlamanın ve sahne görünümü oluşturmanın en kolay yolu, gerekli ARCore çalışma zamanı denetimlerini gerçekleştirdikten sonra ARCore oturum yönetimini otomatik olarak işleyen bir ArFragment
kullanmaktır:
AR için Google Play Hizmetleri'nin uyumlu bir sürümünün yüklü olup olmadığını kontrol eder. Bu sayede kullanıcıdan gerektiği şekilde yükleme veya güncelleme yapmasını isteyebilir
Uygulamanın kameraya erişimi olup olmadığını kontrol eder ve henüz izin verilmediğinde kullanıcıdan izin ister
Uygulamanızın ek izin istemesi gerekiyorsa veya AR oturumunun nasıl ve ne zaman oluşturulduğunu özelleştirmek isterseniz bunun yerine şunları yapabilirsiniz:
Ek izin istemek için
ArFragment
adlı bir alt sınıf oluşturun.Doğrudan
ArSceneView
kullanın veya genişletin. Güneş Sistemi örnekte gösterildiği gibi, uygulamanızın ARCore oturumunu manuel olarak oluşturmak için ARCore sürüm kontrolü vesetupSession()
çağrıları yapması gerekir.
Kontroller başarılı olduktan sonra ArFragment
şunlar oluşturulur:
getArSceneView()
üzerinden erişilebilen ve aşağıdaki özelliklere sahip birArSceneView
:Oturumdaki kamera görüntülerini yüzeye işler
Kullanıcılara, artırılmış gerçeklik deneyimini sağlamak için telefonlarını nasıl taşımaları gerektiğini gösteren yerleşik bir Sceneform kullanıcı deneyimi animasyonu oluşturur.
Öne çıkanlar, varsayılan
PlaneRenderer
kullanılarakPlanes
algılandı
getSession()
üzerinden erişilebilen bir ARCoreSession
Uygulamanızda ArFragment
kullanmak için
Merhaba Sahne Formu örneğinde belirtildiği gibi,
activity_ux.xml
bölümünde
gösterildiği gibi etkinliğinizin düzenine ekleyin:
<fragment android:name="com.google.ar.sceneform.ux.ArFragment"
android:id="@+id/ux_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Oluşturulabilir oluşturma
Renderable
, sahnenin herhangi bir yerine yerleştirilebilen ve örgü, malzeme ve dokulardan oluşan 3D modeldir.
Oluşturulabilir şu kaynaklardan oluşturulabilir:
Standart Android
ViewRenderable
'lar 3D düzende düz 2D kartlar olarak oluşturulur ve dokunarak dokunma özelliğini korur.3D öğe dosyaları (OBJ, {8/}, glTF) Android Studio eklentisi kullanılarak içe aktarılabilir, dönüştürülebilir ve önizlenebilir. Daha fazla bilgi için 3D Öğeleri İçe Aktarma ve Önizleme konusuna bakın.
Temel şekiller ve malzemeler, çalışma zamanında daha karmaşık nesneler oluşturmak için programatik olarak birleştirilebilir.
Örnek uygulama, 3D andy.obj
öğe dosyasından oluşturulabilir. Bu öğe içe aktarıldığında, Sceneform eklentisi eklentiyi uygulamak ve içe aktarılan model için bir sceneform.asset()
girişi eklemek üzere uygulamayı build.gradle
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.
res/raw/andy
kaynağı, ModelRenderable
oluşturmak için kullanılır:
private ModelRenderable andyRenderable;
@Override
protected void onCreate(Bundle savedInstanceState) {
…
ModelRenderable.builder()
.setSource(this, R.raw.andy)
.build()
.thenAccept(renderable -> andyRenderable = renderable)
.exceptionally(
throwable -> {
Log.e(TAG, "Unable to load Renderable.", throwable);
return null;
});
}
Sahneyi Oluşturma
ARSceneView
öğesine Scene
eklenmiş.
Sahne, üretilecek sanal nesneler olan Node
öğelerinin bulunduğu, ağaç benzeri bir veri yapısıdır.
Burada Andy oluşturma işlemi, doğrudan kök Sahne düğümüne eklenir:
Node node = new Node();
node.setParent(arFragment.getArSceneView().getScene());
node.setRenderable(andyRenderable);
Her düğüm, Sceneform'un oluşturulması için gereken tüm bilgileri (konumu, yönü ve oluşturulabilir nesnesi dahil) içerir ve onunla etkileşime girer (çakışma şekli ve etkinlik dinleyicileri dahil).
Düğümler diğer düğümlere eklenerek üst-alt ilişkisi oluşturabilir. Bir düğüm başka bir düğümün alt parçası olduğunda, vücudunuz hareket ettiğinde kollarınız nasıl hareket ettiği gibi üst düğümüyle birlikte hareket eder, döner ve ölçeklenir. Bir düğümün birden fazla alt öğesi, ancak yalnızca bir üst öğesi olabilir, dolayısıyla ağaç benzeri bir yapı oluşturur. Bu yapı, sahne grafiği olarak bilinir.
Sceneform her karede sahneyi Kamera'nın bakış açısından oluşturur (ARCore hareket izleme tarafından yönlendirilir). Uygulamanız, dokunma ve hareket etkinliklerini izleyerek, düğümlere karşı isabet testleri gerçekleştirerek ve bağlayıcılar yerleştirerek sahneyle etkileşime girebilir. Daha fazla bilgi için Sahneyi Oluşturma ve Etkileşim Kurma bölümüne bakın.