Google ARCore ile artırılmış gerçeklik Android uygulaması oluşturun

Yazar: Laura McKinney
Yaratılış Tarihi: 7 Lang L: none (month-011) 2021
Güncelleme Tarihi: 1 Temmuz 2024
Anonim
Google ARCore ile artırılmış gerçeklik Android uygulaması oluşturun - Uygulamaların
Google ARCore ile artırılmış gerçeklik Android uygulaması oluşturun - Uygulamaların

İçerik


Sceneform eklentisi ile 3B modelleri içe aktarma

Genellikle, 3B modellerle çalışmak uzmanlık bilgisi gerektirir, ancak Sceneform eklentisinin piyasaya sürülmesiyle Google, 3B modellerin Java kullanarak oluşturulmasını mümkün kılmıştır. olmadan OpenGL'yi öğrenmek zorunda.

Sceneform eklentisi, standart Android widget'larından, şekillerden veya malzemelerden veya .OBJ veya .FBX dosyaları gibi 3D varlıklardan Renderdables oluşturmak için kullanabileceğiniz üst düzey bir API sağlar.

Projemizde, bir .OBJ dosyasını Android Studio'ya içe aktarmak için Sceneform eklentisini kullanıyor olacağız. Sceneform kullanarak bir dosyayı ne zaman içe aktarsanız, bu eklenti otomatik olarak:

  • Öğe dosyasını bir .sfb dosyasına dönüştürün. Bu, APK'nıza eklenen ve daha sonra çalışma zamanında yüklenen çalışma zamanı için optimize edilmiş bir Sceneform İkili biçimidir (.sfb). Bu .sfb dosyasını, kafesler, malzemeler ve dokulardan oluşan ve artırılmış sahnenin herhangi bir yerine yerleştirilebilen bir Renderable oluşturmak için kullanacağız.
  • Bir .sfa dosyası oluşturun. Bu, .sfb dosyasının insan tarafından okunabilir bir açıklamasını içeren bir metin dosyası olan bir varlık açıklama dosyasıdır. Modele bağlı olarak, .sfa dosyasının içindeki metni düzenleyerek görünümünü değiştirebilirsiniz.


Yazma sırasında Sceneform eklentisinin hala beta sürümünde olduğunu, bu eklentiyi kullanırken hatalarla, hatalarla veya başka garip davranışlarla karşılaşabileceğinizi unutmayın.

Sceneform eklentisini yükleme

Sceneform eklentisi Android Studio 3.1 veya üstünü gerektirir. Hangi Android Studio sürümünü kullandığınızdan emin değilseniz, araç çubuğundan “Android Studio> Android Studio Hakkında” seçeneğini seçin. Sonraki açılır pencerede, sürüm numarası da dahil olmak üzere Android Studio kurulumunuz hakkında bazı temel bilgiler bulunur.

Sceneform eklentisini yüklemek için:

  • Mac kullanıyorsanız, Android Studio araç çubuğundan “Android Studio> Tercihler…” öğesini seçin, ardından soldaki menüden “Eklentiler” i seçin. Windows PC kullanıyorsanız, "Dosya> Ayarlar> Eklentiler> Depolara göz at" ı seçin.
  • “Sceneform” ifadesini arayın. “Google Sceneform Araçları” göründüğünde, “Install” seçeneğini seçin.
  • İstendiğinde Android Studio'yu yeniden başlatın; eklentiniz kullanıma hazır olacaktır.


Sceneform UX ve Java 8: Proje bağımlılıklarınızı güncelleme

Bu proje boyunca kullanacağımız bağımlılıkları ekleyerek başlayalım. Modül düzeyinde build.gradle dosyanızı açın ve düzenimizde kullanacağımız ArFragment'i içeren Sceneform UX kütüphanesini ekleyin:

bağımlılıklar {application fileTree (dir: libs, include:) uygulama androidx.appcompat: appcompat: 1.0.2 uygulama androidx.constraintlayout: kısıtlama: 1.1.3 testImplementation junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1 // Sceneform UX, ArFragment // application "com.google.ar.sceneform.ux: sceneform-ux: 1.7.0" uygulama "com dahil olmak üzere UX kaynakları sağlar. android.support:appcompat-v7:28.0.0 "}

Sceneform, Java 8'deki dil yapılarını kullanır, bu nedenle projemizin Kaynak Uyumluluğu ve Hedef Uyumluluğunu Java 8'e güncellememiz gerekir:

compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}

Son olarak, Sceneform eklentisini uygulamamız gerekiyor:

eklentiyi uygula: com.google.ar.sceneform.plugin

Tamamlanan build.gradle dosyanız şöyle görünmelidir:

eklenti uygulayın: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.arcoredemo" minSdkVersion 23 targetSdkVersion 28 versionCode 1 sürümAdı "1.0" testInstrumentationRunner "androidx.test.nalprope.nprope.nalprope.nklpn.nalfx.nalprope.nfrprope.nalprope_tnprntnalpnnnnnnnnflo_depper_dnnl"] " JavaVersion.VERSION_1_8} buildTypes {release {minifyEnabled yanlış proguardFiles getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} bağımlılıklar {application fileTree (dir: libs, include:) uygulama androidx.appcompat: appcompat: 1.0. .2 uygulama androidx.constraintlayout: kısıtlama: 1.1.3 testUygulama junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1 uygulama "com.google. ar.sceneform.ux: sceneform-ux: 1.7.0 "uygulama" com.android.support:appcompat-v7:28.0.0 "} eklentiyi uygula: com.google.ar .sceneform.plugin

ArFragment ile izin isteme

Uygulamamız çevreyi analiz etmek ve 3D dünyasını gerçek dünyaya yerleştirmek için cihazın kamerasını kullanacaktır. Uygulamamız kameraya erişmeden önce, kameranın iznini gerektirir, bu nedenle projenizin Manifestosunu açın ve aşağıdakileri ekleyin:

Android 6.0, kullanıcılara izinleri izin alınarak izin verme, reddetme ve iptal etme olanağı verdi. Bu, kullanıcı deneyimini geliştirirken, Android geliştiricilerin artık çalışma zamanında izinleri manuel olarak istemesi ve kullanıcının yanıtını alması gerekiyor. İyi haber şu ki, Google ARCore’da çalışırken, kameradan izin isteme ve kullanıcının yanıtını kullanma sürecinin uygulanması. otomatik olarak.

ArFragment bileşeni, uygulamanızın kamera iznine sahip olup olmadığını otomatik olarak kontrol eder ve ardından AR oturumu oluşturmadan önce gerekirse onu ister. Bizim app ArFragment kullanacağımızdan, kamera izni istemek için herhangi bir kod yazmamıza gerek yok.

AR Gerekli veya İsteğe Bağlı?

AR işlevini kullanan iki tür uygulama vardır:

1. AR Gerekli

Uygulamanız, iyi bir kullanıcı deneyimi sunmak için Google ARCore’a güveniyorsa, yalnızca ARCore’u destekleyen cihazlara indirildiğinden emin olmanız gerekir. Uygulamanızı "AR Gerekli" olarak işaretlerseniz, cihaz ARCore'u destekliyorsa, yalnızca Google Play mağazasında görünür.

Bizim uygulamadan beri yapar ARCore, Manifest'i açın ve aşağıdakileri ekleyin:

Ayrıca, başvurunuzun teoride ARCore'u destekleyen bir cihaza indirilebilme olasılığı vardır, ancak aslında ARCore kurulu değildir. Uygulamamızı “AR Gerekli” olarak işaretledikten sonra, Google Play, hedef cihazda henüz mevcut değilse, ARCore uygulamasını otomatik olarak indirip yükler.

Uygulamanızın android olmasına rağmen, yalnızca şunu unutmayın: yine ARCore'un çalışma zamanında mevcut olup olmadığını kontrol etmeniz gerekir, çünkü uygulamanızı indirdiğinden beri kullanıcının ARCore'u kaldırmış olma ihtimali vardır veya ARCore'un sürümlerinin güncelliğini yitirmiştir.

İyi haber şu ki, oluşturmadan önce ARCore'un yüklü olduğunu ve güncel olduğunu otomatik olarak kontrol eden ArFragment'i kullanıyoruz. her AR oturumu - bir kez daha, bu manuel olarak uygulamak zorunda olmadığımız bir şey.

2. AR İsteğe Bağlı

Uygulamanızın sahip olması gereken ancak temel işlevselliğini sağlamak için gerekli olmayan AR özellikleri varsa, bu uygulamayı “AR İsteğe Bağlı” olarak işaretleyebilirsiniz. Uygulamanız Google ARCore'un çalışma zamanında mevcut olup olmadığını kontrol edebilir ve devre dışı bırakabilir. ARCore'u desteklemeyen cihazlardaki AR özellikleri.

“AR İsteğe Bağlı” bir uygulama oluşturursanız, ARCore değil ARCore'u desteklemek için gereken tüm donanıma ve yazılıma sahip olsa bile, uygulamanızla birlikte otomatik olarak kurulmalıdır. “AR İsteğe Bağlı” uygulamanızın, ARCore'un mevcut ve güncel olup olmadığını kontrol etmesi ve en son sürümü gerektiğinde ve gerektiğinde indirmesi gerekir.

ARCore uygulamanız için önemli değilse, aşağıdakileri Manifest'inize ekleyebilirsiniz:

Manifest'i açarken, MainActivity'nin oryantasyon değişikliklerini zarif bir şekilde ele almasını sağlamak için android: configChanges ve android: screenOrientation öğesini de ekliyorum.

Tüm bunları Manifestinize ekledikten sonra, tamamlanan dosya şöyle görünmelidir:

Mizanpajınıza ArFragment ekleyin

ARCore’un ArFragment özelliğini kullanacağım, çünkü her AR oturumunun başlangıcında bir dizi önemli ARCore görevini otomatik olarak ele alıyor. En önemlisi, ArFragment cihaza uyumlu bir ARCore sürümünün yüklü olduğunu ve uygulamanın şu anda kamera iznine sahip olduğunu kontrol eder.

ArFragment, cihazın uygulamanızın AR özelliklerini destekleyebileceğini doğruladıktan sonra, bir ArSceneView ARCore oturumu oluşturur ve uygulamanızın AR deneyimi kullanıma hazırdır!

ArFragment parçasını normal bir Android Fragmanı gibi bir düzen dosyasına ekleyebilirsiniz, bu nedenle activity_main.xml dosyanızı açın ve bir "com.google.ar.sceneform.ux.ArFragment" bileşenini ekleyin.

Google’ın Poly’sini kullanarak 3D modelleri indirme

Yenilenebilirler oluşturmanın birkaç farklı yolu vardır, ancak bu makalede bir 3B varlık dosyası kullanacağız.

Sceneform, .OBJ, .glTF ve .FBX formatlarındaki 3D varlıklarını animasyonlu veya animasyonsuz olarak destekler. Bu desteklenen biçimlerden birinde 3B modeller alabileceğiniz birçok yer var, ancak bu eğitimde Google’ın Poly deposundan indirilen bir .OBJ dosyası kullanacağım.

Poly web sitesine gidin ve kullanmak istediğiniz varlığı .OBJ formatında indirin (Bu T-Rex modelini kullanıyorum).

  • Modelinizin kaynak varlık dosyasını (.OBJ, .FBX veya .glTF) içermesi gereken klasörü açın. Modele bağlı olarak, bu klasör ayrıca .mtl, .bin, .png veya .jpeg biçimlerindeki dosyalar gibi bazı model bağımlılıklarını içerebilir.

3D modelleri Android Studio'ya içe aktarma

Varlığınıza sahip olduğunuzda, Sceneform eklentisini kullanarak Android Studio'ya aktarmanız gerekir. Bu, şunları gerektiren çok adımlı bir işlemdir:

  • Bir “sampledata” klasörü oluşturun. Örnek veriler, APK'nıza dahil edilmeyen ancak Android Studio düzenleyicide bulunabilecek tasarım tasarımı örnek verileri için yeni bir klasör türüdür.
  • Orijinal .OBJ varlık dosyasını sürükleyip "sampledata" klasörünüze bırakın.
  • Sceneform içe aktarma ve dönüştürmesini, .sfa ve .sfb dosyalarını oluşturacak olan .OBJ dosyasında gerçekleştirin.

Daha basit görünse de, yok .OBJ dosyasını doğrudan projenizin "res" dizinine sürükleyin ve bırakın; bu, modelin gereksiz yere APK'nıza eklenmesine neden olur.

Android Studio projeleri varsayılan olarak "örnek veri" klasörü içermez, bu nedenle el ile bir tane oluşturmanız gerekir:

  • Projenizin “app” klasörünü Control tuşunu basılı tutarak tıklayın.
  • “Yeni> Örnek Veri Dizini” seçeneğini seçin ve “örnek veri” adlı bir klasör oluşturun.
  • Daha önce indirdiğiniz 3D model dosyalarına gidin. Kaynak varlık dosyasını (.OBJ, .FBX veya .glTF) bulun ve ardından “sampledata” dizinine sürükleyip bırakın.
  • Modelinizin herhangi bir bağımlılığı olup olmadığını kontrol edin (.mtl, .bin, .png veya .jpeg formatlarındaki dosyalar gibi). Bu dosyalardan herhangi birini bulursanız, daha sonra bunları “sampledata” klasörüne sürükleyip bırakın.
  • Android Studio'da, 3D model kaynak dosyanızı (.OBJ, .FBX veya .glTF) Control tuşunu basılı tutarak tıklayın ve ardından “Sceneform Asset'i İçe Aktar” ı seçin.

  • Sonraki pencerede, Sceneform'un üreteceği dosyalar hakkında bazı bilgiler görüntüler; bunlar, ortaya çıkan .sfa dosyasının projenizde nerede depolanacağı dahil; Ham dizini kullanacağım.
  • Girdiğiniz bilgilerden memnun olduğunuzda, “Son” düğmesini tıklayın.

Bu içe aktarma, projenizde birkaç değişiklik yapar. Build.gradle dosyanızı açarsanız, Sceneform eklentisinin proje bağımlılığı olarak eklendiğini göreceksiniz:

bağımlılıklar {classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: eklenti: 1.7.0 // NOT: Uygulama bağımlılıklarınızı buraya yerleştirmeyin; bunlar // tek tek modül build.gradle dosyalarına aittir}}

Modül düzeyinde build.gradle dosyanızı açın, içe aktarılan 3D modeliniz için yeni bir sceneform.asset () girişi bulacaksınız:

uygulama eklentisi: com.google.ar.sceneform.plugin // İçe aktarma sırasında belirttiğiniz “Kaynak Varlık Yolu” // sceneform.asset (sampledata / dinosaur.obj, // İçe aktarma sırasında belirttiğiniz “Malzeme Yolu” // Varsayılan , // İçe aktarma sırasında belirlediğiniz “.sfa Çıkış Yolu” // sampledata / dinosaur.sfa, // İçe aktarma sırasında belirlediğiniz “.sfb Çıkış Yolu” // src / main / asset / dinosaur)

“Sampledata” ve “raw” klasörlerinize bakarsanız, sırasıyla yeni .sfa ve .sfb dosyaları içerdiklerini göreceksiniz.

Android Studio’nun yeni Sceneform Viewer’ında .sfa dosyasını önizleyebilirsiniz:

  • Android Studio menü çubuğundan “Görünüm> Araçlar Windows> Görüntüleyici” yi seçin.
  • Soldaki menüden .sfa dosyanızı seçin. 3D modeliniz şimdi Viewer penceresinde görünmelidir.

3B modelinizi görüntüleyin

Bir sonraki görevimiz, çevresini anlayan ve kullanıcının 3B modelleri genişletilmiş bir sahneye yerleştirmesine izin veren bir AR oturumu oluşturmak.

Bu, aşağıdakileri yapmamızı gerektirir:

1. Bir ArFragment üye değişkeni oluşturun

ArFragment, bir AR oturumu oluşturmada yer alan ağır kaldırma işlemlerinin çoğunu gerçekleştirir, bu yüzden bu parçayı MainActivity sınıfımız boyunca referans göstereceğiz.

Aşağıdaki kod parçasında, ArFragment için bir üye değişkeni yaratıyorum ve ardından onCreate () yönteminde başlatıyorum:

özel ArFragment arCoreFragment; @ Override korumalı geçersiz onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); ... ... ...} setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Parça yöneticisini kullanarak parça bulucu // getSupportFragmentManager (). findFragmentById (R.id.main_fragment);

2. Modelden Kurtarılabilir Bir Model Oluşturun

Şimdi .sfb dosyamızı ModelRenderable biçimine dönüştürmemiz gerekiyor, bu da sonunda 3D nesnemizi oluşturacak.

Burada, projemin res / raw / dinosaur .sfb dosyasından bir ModelRenderable oluşturuyorum:

özel ModelRenderable dinoRenderable; ... ... ... ModelRenderable.builder () .setSource (this, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable). İstisnai olarak (fırlatılabilir -> {Log.e ( TAG, "kiralanamaz yüklenemiyor"); return null;}); }

3. Kullanıcı girişine cevap verin

ArFragment, dokunma, sürükleme, sıkıştırma ve çevirme hareketleri için yerleşik desteğe sahiptir.

Bizim uygulamada, kullanıcı o uçağa bir dokunuş vererek, bir ARCore Düzlemine bir 3D model ekleyecektir.

Bu işlevselliği sağlamak için, bir uçağa dokunulduğunda çağrılacak olan bir geri çağrıyı kaydetmemiz gerekir:

arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Düzlem düzlemi, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;}

4. Modelinizi bağlayın

Bu adımda, bir ArSceneView alacak ve Scene’nin ana düğümü görevi görecek olan bir AnchorNode’a ekleyeceğiz.

ArSceneView, cihazın kamera görüntülerini oluşturmak ve kullanıcının AR deneyimini başlatmak için cihazını nasıl tutması ve taşıması gerektiğini gösteren bir Sceneform UX animasyonu göstermesi de dahil olmak üzere birkaç önemli ARCore görevi yapmaktan sorumludur. ArSceneView, kullanıcının 3D modellerini sahneye yerleştirmesi için hazır olduğunu tespit ettiği tüm uçakları da vurgulayacaktır.

ARSceneView bileşeni, kendisine eklenmesi gereken tüm Düğümleri içeren bir ebeveyn-çocuk veri yapısı olan, kendisine eklenmiş bir Sahne'ye sahiptir.

ArSceneView’ın ana düğümü görevi görecek olan AnchorNode türünde bir düğüm oluşturarak başlayacağız.

Tüm bağlantı düğümleri aynı gerçek dünya konumunda kalır, bu nedenle bir bağlantı düğümü oluşturarak, 3B modellerimizin genişletilmiş sahnede sabit kalmasını sağlıyoruz.

Bağlantı düğümümüzü oluşturalım:

AnchorNode anchorNode = new AnchorNode (çapa);

Daha sonra getArSceneView () kullanarak bir ArSceneView alabilir ve AnchorNode'a ekleyebiliriz:

anchorNode.setParent (arCoreFragment.getArSceneView () getScene ().);

5. Hareket, ölçekleme ve döndürme desteği ekleyin

Ardından, TransformableNode türünde bir düğüm oluşturacağım. TransformableNode, kullanıcı hareketlerine bağlı olarak düğümleri taşımaktan, ölçeklendirmekten ve döndürmekten sorumludur.

Bir Dönüştürülebilir Düğümü oluşturduktan sonra, Renderable ürününü ekleyebilirsiniz; bu, modele kullanıcı etkileşimi temelinde ölçeklendirme ve taşıma olanağı sunar. Son olarak, TransformableNode'u sağlayan bir alt-ebeveyn ilişkisinde, TransformableNode'u AnchorNode'a bağlamanız gerekir. ve Yenilenebilirler, artırılmış sahnede yerinde sabit kalır.

TransformableNode transformableNode = new TransformableNode (arCoreFragment.getTransformationSystem ()); // transformableNode'u anchorNode'a bağlayın // transformableNode.setParent (anchorNode); transformableNode.setRenderable (dinoRenderable); // Düğümü seçin // transformableNode.select (); }); }

Tamamlanan MainActivity

Yukarıdakilerin tümünü yaptıktan sonra, MainActivity'niz şöyle görünmelidir:

android.app.Activity içeri aktar; android.app.ActivityManager içeri aktar; androidx.appcompat.app.AppCompatActivity dosyasını içe aktar; android.content.Context dosyasını içe aktarın; android.net.Uri'yi içe aktarın; android.os.Build'i içe aktarın; android.os.Build.VERSION_CODES dosyalarını içe aktarın; android.os.Bundle alma; android.util.Log dosyasını içe aktarın; android.view.MotionEvent dosyasını içe aktarın; androidx.annotation.RequiresApi dosyasını içe aktarın; com.google.ar.core.Anchor dosyasını içe aktarın; com.google.ar.core.HitResult alma; com.google.ar.core.Plane dosyasını içe aktarın; com.google.ar.sceneform.AnchorNode dosyasını içe aktarın; com.google.ar.sceneform.rendering.ModelRenderable olarak içe aktarın; com.google.ar.sceneform.ux.ArFragment'i içe aktarın; com.google.ar.sceneform.ux.TransformableNode dosyasını içe aktarın; genel sınıf MainActivity, AppCompatActivity süresini uzatır {private static final String TAG = MainActivity.class.getSimpleName (); özel statik final çift MIN_OPENGL_VERSION = 3.0; // ModelRenderable için bir üye değişkeni oluşturun // private ModelRenderable dinoRenderable; // ArFragment için bir üye değişkeni yaratın // private ArFragment arCoreFragment; @RequiresApi (api = VERSION_CODES.N) @ Override korumalı geçersiz onCreate (BundI savedInstanceState) {super.onCreate (savedInstanceState); if (! checkDevice ((this)))) {return; } setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Parça yöneticisini kullanarak parçayı bulun // // getSupportFragmentManager (). findFragmentById (R.id.main_fragment); if (Build.VERSION.SDK_INT> = VERSION_CODES.N) {// Model Modelini Yaratın // ModelRenderable.builder () .setSource (this, R.raw.dinosaur) .build () .thenAccept (bu, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable =) ) .exceptionally (// Bir hata oluşursa ... // throwable -> {//... daha sonra aşağıdakileri Logcat // Log.e (TAG, "Yenilenebilir yüklenemiyor");; return null; ); } // onTap olaylarını dinleyin // arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Düzlem düzlemi, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;} Anchor anchor = hitResult.createAnchor (); // Build a AnchorNode tipindeki düğüm // AnchorNode anchorNode = new AnchorNode (anchor); // AnchorNode'u Sahneye bağlayın // anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ()); // TransformableNode türünde bir düğüm oluşturun // TransformableNode transformableNode = new TransformableNode (arCoreFragment.getTransformationSystem ()); // TransformableNode'u AnchorNode'a bağlayın // transformableNode.setParent (anchorNode); // Renderable // ekleyin / // / transformableNode.select ();}); } public static boolean checkDevice (final Activity etkinliği) {// Cihaz Android Marshmallow kullanıyorsa veya daha eskise ... // if (Build.VERSION.SDK_INT <VERSION_CODES.N) {//...sonra aşağıdakileri yazdırın: Logcat // Log.e (ETİKET, "Sceneform Android N veya üstü gerektirir"); ) (Activity.finish; false döndürmek; } String openGlVersionString = ((ActivityManager) activity.getSystemService (Context.ACTIVITY_SERVICE)) .getDeviceConfigurationInfo () // OpenGL ES versiyonunu kontrol edin // .getGlEsVersion (); // Aygıt OpenGL ES 3.0 ... 'dan daha az bir şey çalıştırıyorsa, if (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) {//...sonra şunu yazın: Logcat // Log.e (TAG, " OpenGL ES 3.0 veya daha yenisini gerektirir "); ) (Activity.finish; false döndürmek; } doğru dönüş; }}

Tamamlanan projeyi GitHub'dan indirebilirsiniz.

Google ARCore artırılmış gerçeklik uygulamanızı test etme

Artık, uygulamanızı fiziksel, desteklenen bir Android cihazda test etmeye hazırsınız. ARCore'u destekleyen bir cihaza sahip değilseniz, AR uygulamanızı Android Emulator'da test etmek mümkündür (bir sonraki bölümde ele alacağımız biraz ekstra yapılandırma ile).

Projenizi test etmek için fiziksel Android cihazı:

  • Uygulamanızı hedef cihaza yükleyin.
  • İstendiğinde, uygulamanın cihazınızın kamerasına erişmesine izin verin.
  • ARCore uygulamasını kurmanız veya güncellemeniz istenirse, “Devam” düğmesine dokunun ve ardından en son ARCore sürümünü çalıştırdığınızdan emin olmak için diyalogu tamamlayın.
  • Şimdi, bir cihazı tutan elin animasyonu ile birlikte bir kamera görüntüsü görmelisiniz. Kamerayı düz bir yüzeye doğrultun ve cihazınızı animasyonda gösterildiği gibi dairesel hareketlerle hareket ettirin. Birkaç dakika sonra, bir uçağın tespit edildiğini belirten bir dizi nokta görünmelidir.

  • Bu noktaların konumundan memnun olduğunuzda, onlara bir dokunuş verin - 3D modeliniz şimdi seçtiğiniz düzlemde görünmelidir!

  • Modelin etrafında fiziksel olarak hareket etmeyi deneyin; çevrenize bağlı olarak, etrafındaki 360 derecenin tamamını yapabiliyor olabilirsiniz. Ayrıca, nesnenin gerçek dünya ışık kaynakları ile tutarlı bir gölge yarattığını da kontrol etmelisiniz.

Android Sanal Aygıtta ARCore'u Test Etme

ARCore uygulamalarınızı bir Android Sanal Cihazda (AVD) test etmek için Android Emulator sürüm 27.2.9 veya daha üstü gerekir. AVD'nizdeki Google Play mağazasında da oturum açmış ve OpenGL ES 3.0 veya üstünü etkinleştirmiş olmalısınız.

AVG'nizde OpenGL ES 3.0 veya daha yüksek bir sürümün etkin olup olmadığını kontrol etmek için:

  • AVD'nizi normal şekilde başlatın.
  • Yeni bir Terminal penceresi (Mac) veya bir Komut İstemi (Windows) açın.
  • Dizini (“cd”) değiştirin, böylece Terminal / Komut İstemi Android SDK’nizin “adb” programının bulunduğu yere işaret eder, örneğin komutum şöyle görünür:

Cd / Kullanıcılar / jessicathornsby / Kütüphane / Android / sdk / platform araçları

  • Klavyenizdeki “Enter” tuşuna basın.
  • Bir sonraki komutu kopyalayıp Terminal'e yapıştırın ve “Enter” tuşuna basın:

./adb logcat | grep eglMakeCurrent

Terminal, “ver 3 0” veya daha yüksek bir değer verirse, OpenGL ES doğru şekilde yapılandırılır. Terminal veya Komut İstemi 3.0'dan daha eski bir şey görüntülerse, OpenGL ES 3.0'ı etkinleştirmeniz gerekir:

  • AVD'nize geri dönün.
  • Android Emulator ile birlikte yüzen “Extended Control” düğmelerinin şeridini bulun ve ardından “Settings> Advanced” öğesini seçin.
  • “OpenGL ES API seviyesi> Maksimum Renderer (OpenGL ES 3.1'e kadar”) gidin.
  • Öykünücüyü yeniden başlatın.

Terminal / Komut İstemi penceresinde, aşağıdaki komutu kopyalayın / yapıştırın ve sonra “Enter” tuşuna basın

./adb logcat | grep eglMakeCurrent

Şimdi “ver 3 0” veya üstü bir sonuç almalısınız, bu da OpenGL ES'nin doğru bir şekilde yapılandırıldığı anlamına gelir.

Son olarak, AVD'nizin ARCore'un en son sürümünü çalıştırdığından emin olun:

  • ARCore’un GitHub sayfasına gidin ve öykünücüsü için en son ARCore sürümünü indirin. Örneğin, en son sürümün yazıldığı sırada “ARCore_1.7.0.x86_for_emulator.apk” oldu.
  • APK’yı çalışan AVD’nize sürükleyip bırakın.

Projenizi bir AVD'de test etmek için uygulamanızı yükleyin ve istendiğinde AVD’nin “kamerasına” erişim sağlayın.

Şimdi simüle edilmiş bir odanın kamera görüntüsünü görmelisiniz. Uygulamanızı test etmek için bu sanal alanın etrafında hareket edin, benzetilmiş bir düz yüzey bulun ve bu yüzeye bir model yerleştirmek için tıklayın.

“Opsiyon” (macOS) veya “Alt” (Linux veya Windows) tuşlarını basılı tutup aşağıdaki klavye kısayollarından birini kullanarak sanal kamerayı sanal odanın etrafında hareket ettirebilirsiniz:

  • Sola veya sağa hareket ettirin. A veya D düğmesine basın.
  • Aşağı veya yukarı hareket ettirin. Q veya E düğmesine basın.
  • İleri ya da geri git. W veya S düğmesine basın.

Ayrıca “Option” veya “Alt” tuşlarına basarak ve ardından farenizi kullanarak sanal sahnenin etrafında “hareket edebilirsiniz”. Bu ilk başta biraz tıknaz hissedebilir, ancak pratikle sanal alanı başarıyla keşfedebilmelisiniz. Simüle edilmiş bir düzlem bulduğunuzda, 3D modelinizi bu yüzeye yerleştirmek için beyaz noktaları tıklayın.

Sarma

Bu yazıda, ARCore ve Sceneform eklentisini kullanarak basit bir artırılmış gerçeklik uygulaması oluşturduk.

Google ARCore'u kendi projelerinizde kullanmaya karar verirseniz, yarattıklarınızı aşağıdaki yorumlarda paylaştığınızdan emin olun!

Tam bu dakika, var 180.000'den fazla ZipRecruiter’de elektrik mühendiliği işleri açın. Bir inyal arıyoranız, yeni bir kariyere geçmek, bunu uçurtmanınıza çarpan yıldırım o...

Elder croll franchie'ındaki en on giriş nihayet erken erişime açık ve bu dizinin geri kalanından oldukça uzak. Elder croll: Blade, Tamriel'i avucunuzun içine ıkar ve izi memleke...

Daha Fazla Detay