Google एआरकोरसह एक वर्धित वास्तविकता Android अ‍ॅप तयार करा

लेखक: Laura McKinney
निर्मितीची तारीख: 7 Lang L: none (month-011) 2021
अद्यतन तारीख: 1 जुलै 2024
Anonim
Android में एक ऑगमेंटेड रियलिटी ऐप बनाएं | ऐप डेवलपमेंट ट्यूटोरियल | एंड्रॉइड स्टूडियो
व्हिडिओ: Android में एक ऑगमेंटेड रियलिटी ऐप बनाएं | ऐप डेवलपमेंट ट्यूटोरियल | एंड्रॉइड स्टूडियो

सामग्री


सीनफॉर्म प्लगइनसह 3 डी मॉडेल आयात करीत आहे

सहसा, 3 डी मॉडेल्ससह कार्य करण्यासाठी तज्ञांचे ज्ञान आवश्यक असते, परंतु सीनफॉर्म प्लगइनच्या रिलीझसह Google ने जावा वापरून 3 डी मॉडेल्स प्रस्तुत करणे शक्य केले आहे - आणि विना ओपनजीएल शिकणे.

सीनफॉर्म प्लगइन एक उच्च-स्तरीय API प्रदान करते जी आपण मानक Android विजेट्स, आकार किंवा सामग्रीमधून किंवा .OBJ किंवा .FBX फायली यासारख्या 3D मालमत्तांवरून रेंडरडेबल्स तयार करण्यासाठी वापरू शकता.

आमच्या प्रकल्पात, आम्ही एंड्रॉइड स्टुडिओमध्ये .OBJ फाइल आयात करण्यासाठी सीनफॉर्म प्लगिन वापरत आहोत. जेव्हा आपण सीनफॉर्म वापरुन फाइल आयात कराल तेव्हा हे प्लगइन स्वयंचलितपणे येईल:

  • मालमत्ता फाइलला .sfb फाईलमध्ये रूपांतरित करा. हे एक रनटाइम-ऑप्टिमाइझ केलेले दृश्य बायनरी स्वरूप (.sfb) आहे जे आपल्या APK मध्ये जोडले गेले आहे आणि नंतर रनटाइम वर लोड केले आहे. आम्ही ही .sfb फाईल रेंडेरेबल तयार करण्यासाठी वापरत आहोत, ज्यामध्ये मेस, साहित्य आणि पोत आहेत आणि संवर्धित दृश्यात कुठेही ठेवला जाऊ शकतो.
  • एक .sfa फाईल व्युत्पन्न करा. ही एक मालमत्ता वर्णन फाइल आहे, जी .sfb फाईलचे मानवी-वाचनीय वर्णन असलेली मजकूर फाइल आहे. मॉडेलवर अवलंबून, आपण .sfa फाईलमधील मजकूर संपादित करुन त्याचे स्वरूप बदलण्यास सक्षम होऊ शकता.


फक्त हे लक्षात घ्या की लेखनाच्या वेळी, सीनफॉर्म प्लगइन अद्याप बीटामध्ये होता, जेणेकरून आपल्याला हे प्लगइन वापरताना बग, त्रुटी किंवा इतर विचित्र वागणूक येऊ शकते.

सीनफॉर्म प्लगइन स्थापित करत आहे

सीनफॉर्म प्लगइनला Android स्टुडिओ 3.1 किंवा त्यापेक्षा जास्त आवश्यक आहे. आपण निश्चित करत नसल्यास आपण Android स्टुडिओची कोणती आवृत्ती वापरत आहात, टूलबार वरून “Android स्टुडिओ> Android स्टुडिओ बद्दल” निवडा. त्यानंतरच्या पॉपअपमध्ये त्याच्या आवृत्ती नंबरसह आपल्या Android स्टुडिओ स्थापनेबद्दल काही मूलभूत माहिती आहे.

सीनफॉर्म प्लगइन स्थापित करण्यासाठी:

  • आपण मॅकवर असल्यास, Android स्टुडिओ टूलबार वरून “Android स्टुडिओ> प्राधान्ये…” निवडा, तर डावीकडील मेनूमधून “प्लगइन” निवडा. आपण Windows PC वर असल्यास, नंतर “फाइल> सेटिंग्ज> प्लगइन्स> ब्राउझ करा भांडार” निवडा.
  • “सीनफॉर्म” शोधा. जेव्हा “गुगल सीनफॉर्म टूल्स” दिसतील तेव्हा “इंस्टॉल करा” निवडा.
  • सूचित केल्यास Android स्टुडिओ रीस्टार्ट करा आणि आपले प्लगइन वापरण्यास सज्ज असेल.


सीएनफॉर्म यूएक्स आणि जावा 8: आपले प्रकल्प अवलंबन अद्यतनित करीत आहे

या प्रकल्पामध्ये आम्ही वापरत असलेली अवलंबन जोडून प्रारंभ करूया. आपली मॉड्यूल-स्तरीय बिल्ड.gradle फाईल उघडा आणि सीनफॉर्म यूएक्स लायब्ररी जोडा, ज्यामध्ये आमच्या लेआउटमध्ये आम्ही वापरत असलेले अ‍ॅफ्रॅगमेंट आहे:

अवलंबित्व {अंमलबजावणी फाइलट्री (डिर: लिब्स, समाविष्ट:) अंमलबजावणी androidx.appcompat: appcompat: 1.0.2 अंमलबजावणी androidx.constraintlayout: प्रतिबंध androidTestImplementation androidx.test.espresso: एस्प्रेसो-कोर: 1.१.१ // सीनफॉर्म यूएक्स युएक्स संसाधने प्रदान करते, ज्यात एआरफ्रेमेन्ट // अंमलबजावणी "com.google.ar.sceneform.ux: सीनफॉर्म-ux: 1.7.0" अंमलबजावणी "कॉम आहे. android.support:appcompat-v7:28.0.0 "}

जाईन 8 मधील सीनफॉर्म भाषेच्या बांधकामाचा वापर करते, म्हणून आम्हाला आमच्या प्रकल्पाची स्त्रोत सुसंगतता आणि जावा 8 वर लक्ष्य सुसंगतता देखील अद्यतनित करण्याची आवश्यकता आहे:

कंपाईलऑप्शन {सोर्स कॉम्पॅटिबिलिटी जावा व्हर्शन. VERSION_1_8 लक्ष्यसंपूर्णता जावा संस्करण. VERSION_1_8}

शेवटी, आम्हाला सीनफॉर्म प्लगइन लागू करण्याची आवश्यकता आहे:

प्लगइन लागू करा: com.google.ar.sceneform.plugin

आपली पूर्ण बिल्ड.gradle फाईल यासारखी दिसली पाहिजे:

प्लगइन लागू करा: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "कॉम. जावाव्हर्शन.वार्शन_आयपी} बिल्डटाइप्स {रिलीझ {मिनिफाइनेबल खोटी प्रोगुआर्ड फाईल्स गेट डीफॉल्टप्रोगार्ड फाईल (प्रोगुअर्ड-एंड्रॉइड-ऑप्टिमाइझ.टीक्स्ट), प्रोगुअर्ड- रुल्स.प्रो}}} अवलंबन {अंमलबजावणी फाइलट्री (डिअर: लिब्स, समाविष्ट:) अंमलबजावणी एंड्रॉइडएक्स. .२ अंमलबजावणी androidx.constraintlayout: प्रतिबंध ar.sceneform.ux: देखावा-ux: 1.7.0 "अंमलबजावणी" com.android.support:appcompat-v7:28.0.0 "} प्लगइन लागू करा: com.google.ar .sceneform.plugin

एआरएफ्रेगमेंटसह परवानग्यांची विनंती करत आहोत

आमचा अनुप्रयोग यंत्राच्या कॅमेराच्या सभोवतालचे विश्लेषण करण्यासाठी आणि वास्तविक जगात 3 डी मॉडेल्सचे स्थान वापरेल. आमच्या अनुप्रयोगास कॅमेर्‍यावर प्रवेश करण्यापूर्वी, त्यास कॅमेरा परवानगी आवश्यक आहे, म्हणून आपल्या प्रकल्पाचे मॅनिफेस्ट उघडा आणि पुढील जोडा:

Android 6.0 ने वापरकर्त्यांना परवानगीद्वारे परवानगीनुसार परवानगी मंजूर करणे, नाकारणे आणि मागे घेण्याची क्षमता दिली. यामुळे वापरकर्त्याचा अनुभव सुधारला, Android विकसकांना आता रनटाइमवेळी व्यक्तिचलितपणे परवानग्यांची विनंती करावी लागेल आणि वापरकर्त्याचा प्रतिसाद हाताळावा लागेल. चांगली बातमी अशी आहे की Google एआरकोर काम करताना, कॅमेरा परवानगीची विनंती करण्याची आणि वापरकर्त्याची प्रतिक्रिया हाताळण्याची प्रक्रिया अंमलात आणली जाते आपोआप.

एआरफ्रॅगमेंट घटक आपल्या अ‍ॅपला कॅमेरा परवानगी आहे की नाही हे स्वयंचलितपणे तपासते आणि नंतर एआर सत्र तयार करण्यापूर्वी, आवश्यक असल्यास, विनंती करते. आम्ही आमच्या अ‍ॅपमध्ये एरफ्रेगमेंट वापरत असल्याने, आम्हाला कॅमेरा परवानगीची विनंती करण्यासाठी कोणताही कोड लिहिण्याची गरज नाही.

एआर आवश्यक किंवा पर्यायी?

एआर कार्यक्षमता वापरणारे दोन प्रकारचे अनुप्रयोगः

1. एआर आवश्यक

आपला अनुप्रयोग चांगला वापरकर्ता अनुभव देण्यासाठी Google एआरकोरवर अवलंबून असल्यास आपणास एआरकोरला समर्थन देणार्‍या डिव्हाइसवर फक्त कधीही डाउनलोड केले गेले आहे याची खात्री करणे आवश्यक आहे. आपण आपला अ‍ॅप “एआर आवश्यक” म्हणून चिन्हांकित केल्यास डिव्हाइस अ‍ॅरकोरला समर्थन देत असल्यास ते केवळ गुगल प्ले स्टोअरमध्ये दिसून येईल.

आमचा अर्ज असल्याने करते एआरकोर आवश्यक आहे, मॅनिफेस्ट उघडा आणि खालील जोडा:

अशीही शक्यता आहे की आपला अनुप्रयोग सिंगल सिद्धांतनुसार एआरकोरला समर्थन देणार्‍या डिव्हाइसवर डाउनलोड केला जाऊ शकतो, परंतु प्रत्यक्षात एआरकोर स्थापित केलेला नाही. एकदा आम्ही आमच्या अ‍ॅपला “एआर आवश्यक” म्हणून चिन्हांकित केले की लक्ष्यित डिव्हाइसवर आधीपासून उपलब्ध नसल्यास Google Play स्वयंचलितपणे आपल्या अ‍ॅपसह एआरकोर डाउनलोड करेल आणि स्थापित करेल.

फक्त लक्षात ठेवा की आपला अॅप Android आहे जरी: आवश्यक = "सत्य" आपण कराल अजूनही आपला अ‍ॅप डाउनलोड केल्यापासून वापरकर्त्याने एआरकोर विस्थापित केलेली असू शकते किंवा एआरकोरची त्यांची आवृत्ती कालबाह्य झाली आहे.

चांगली बातमी अशी आहे की आम्ही एआरफ्रेगमेंट वापरत आहोत, जे एआरकोर स्थापित केलेले आहे आणि आपोआप तयार करण्यापूर्वी अद्ययावत आहे हे तपासते प्रत्येक एआर सत्र - म्हणून पुन्हा एकदा, ही आम्हाला स्वहस्ते अंमलात आणण्याची आवश्यकता नाही.

2. एआर वैकल्पिक

आपल्या अ‍ॅपमध्ये एआर वैशिष्ट्ये समाविष्ट आहेत जी उत्कृष्ट आहेत परंतु त्याची मूलभूत कार्यक्षमता वितरीत करण्यासाठी आवश्यक नसल्यास आपण हा अनुप्रयोग "एआर पर्यायी" म्हणून चिन्हांकित करू शकता. आपला अ‍ॅप नंतर Google एआरकोर रनटाइमवर उपस्थित आहे की नाही हे तपासू शकतो आणि त्यास अक्षम करते एआरकोरला समर्थन देत नसलेल्या डिव्हाइसेसवरील एआर वैशिष्ट्ये.

आपण "एआर वैकल्पिक" अ‍ॅप तयार केल्यास एआरकोर मिळेल नाही आपल्या अनुप्रयोगासह स्वयंचलितपणे स्थापित व्हा, जरी डिव्हाइसमध्ये एआरकोरला समर्थन देण्यासाठी आवश्यक सर्व हार्डवेअर आणि सॉफ्टवेअर आहेत. आपल्या “एआर वैकल्पिक” अ‍ॅपला नंतर एआरकोर उपस्थित आणि अद्ययावत आहे की नाही हे तपासण्याची आणि आवश्यकतेनुसार नवीनतम आवृत्ती डाउनलोड करणे आवश्यक आहे.

आपल्या अ‍ॅपसाठी एआरकोर महत्त्वपूर्ण नसल्यास आपण आपल्या मॅनिफेस्टमध्ये पुढील गोष्टी जोडू शकता:

मी मॅनिफेस्ट उघडे असताना, मी मुख्य क्रियाकलाप हाताळण्याच्या अभिमुखतेत बदल घडवून आणण्यासाठी हे सुनिश्चित करण्यासाठी Android: कॉन्फिगर चेंज आणि अँड्रॉइड: स्क्रीनओरेन्टेशन देखील जोडत आहे.

आपल्या मॅनिफेस्टमध्ये हे सर्व जोडल्यानंतर, पूर्ण केलेली फाइल यासारखे काहीतरी दिसावी:

आपल्या लेआउटमध्ये एआरफ्रेमेंट जोडा

मी एआरकोरचा एआरफ्रेगमेंट वापरत आहे, कारण ते प्रत्येक एआर सत्राच्या सुरूवातीस बर्‍याच की एआरकोर कार्ये स्वयंचलितपणे हाताळते. विशेष म्हणजे, एआरफ्राममेंट तपासते की डिव्हाइसवर एआरकोरची एक सुसंगत आवृत्ती स्थापित आहे आणि अॅपला सध्या कॅमेरा परवानगी आहे.

एकदा अ‍ॅरफ्रॅगमेंटने हे सत्यापित केले की डिव्हाइस आपल्या अ‍ॅपच्या एआर वैशिष्ट्यांस समर्थन देऊ शकते, ते एक आर्स्न्यू व्ह्यू एआरकोर सत्र तयार करते आणि आपल्या अ‍ॅपचा एआर अनुभव जाण्यासाठी सज्ज आहे!

आपण नियमित Android फ्रॅगमेंट प्रमाणेच लेआउट फाईलमध्ये एआरफ्रेगमेंट तुकडा जोडू शकता, म्हणून आपली अ‍ॅक्टिव्हिटी_मेन.एक्सएमएल फाइल उघडा आणि “com.google.ar.sceneform.ux.ArFraament” घटक जोडा.

Google चे पॉली वापरुन 3 डी मॉडेल डाउनलोड करीत आहे

आपण रेंडेरेबल्स तयार करू शकता असे बरेच भिन्न मार्ग आहेत, परंतु या लेखात आम्ही 3 डी मालमत्ता फाइल वापरत आहोत.

एनिमेशनसह किंवा त्याशिवाय सीओफॉर्म .OBJ, .glTF आणि .FBX स्वरूपनात 3D मालमत्तांचे समर्थन करते. यापैकी एका समर्थित स्वरूपात आपण 3 डी मॉडेल्स मिळवू शकता अशी बरीच ठिकाणे आहेत, परंतु या ट्यूटोरियलमध्ये मी एक .OBJ फाइल वापरत आहे, Google च्या पॉली रिपॉझिटरीमधून डाउनलोड केली आहे.

पॉली वेबसाइटवर जा आणि आपण वापरू इच्छित असलेली मालमत्ता .OBJ स्वरूपात (मी हे टी-रेक्स मॉडेल वापरत आहे) डाउनलोड करा.

  • फोल्डर अनझिप करा, ज्यात आपल्या मॉडेलची स्त्रोत मालमत्ता फाइल (.OBJ, .FBX, किंवा .glTF) असावी. मॉडेलवर अवलंबून, या फोल्‍डरमध्‍ये .mtl, .bin, .png, किंवा .jpeg स्‍वरूपामधील फायली यासारख्या काही मॉडेल अवलंबन देखील असू शकतात.

Android स्टुडिओमध्ये 3 डी मॉडेल आयात करीत आहे

एकदा आपल्याकडे आपली मालमत्ता संपल्यानंतर, आपल्याला ते सीनफॉर्म प्लगइन वापरुन Android स्टुडिओमध्ये आयात करण्याची आवश्यकता आहे. ही एक बहु-चरण प्रक्रिया आहे ज्यासाठी आपल्याला हे आवश्यक आहे:

  • एक "सॅम्पलेडेटा" फोल्डर तयार करा. नमुनाडेटा हा डिझाइन टाइम सॅम्पल डेटासाठी एक नवीन फोल्डर प्रकार आहे जो आपल्या APK मध्ये समाविष्ट केला जाणार नाही, परंतु Android स्टुडिओ संपादकात उपलब्ध असेल.
  • मूळ .OBJ मालमत्ता फाइल आपल्या “सॅम्पलेडेटा” फोल्डरमध्ये ड्रॅग आणि ड्रॉप करा.
  • .OBJ फाईलवर सीनफॉर्म आयात आणि रूपांतरण करा, जे .sfa आणि .sfb फायली व्युत्पन्न करेल.

जरी हे अधिक सरळ वाटेल, करू नका .OBJ फाईल थेट आपल्या प्रोजेक्टच्या “रेस” निर्देशिकेमध्ये ड्रॅग आणि ड्रॉप करा, कारण यामुळे आपल्या APK मध्ये विनाकारण मॉडेलचा समावेश होईल.

Android स्टुडिओ प्रोजेक्टमध्ये डीफॉल्टनुसार "सॅम्पलेडेटा" फोल्डर नसते, तर आपल्याला व्यक्तिचलितपणे तयार करण्याची आवश्यकता असेल:

  • आपल्या प्रोजेक्टच्या “अ‍ॅप” फोल्डरवर कंट्रोल-क्लिक करा.
  • “नवीन> नमुना डेटा निर्देशिका” निवडा आणि “नमुनाडेटा” नावाचे फोल्डर तयार करा.
  • आपण यापूर्वी डाउनलोड केलेल्या 3D मॉडेल फायलींवर नेव्हिगेट करा. स्त्रोत मालमत्ता फाइल (.OBJ, .FBX, किंवा .glTF) शोधा आणि नंतर त्यास ड्रॅग करा आणि “नमुनाडेटा” निर्देशिकेत ड्रॉप करा.
  • आपल्या मॉडेलमध्ये काही अवलंबन आहेत की नाही ते तपासा (.mtl, .bin, .png, किंवा .jpeg स्वरूपनात फायली). आपल्‍याला यापैकी कोणतीही फाईल आढळल्यास, त्यांना ड्रॅग करा आणि “नमुनाडेटा” फोल्डरमध्ये ड्रॉप करा.
  • Android स्टुडिओमध्ये आपली 3 डी मॉडेल स्त्रोत फाइल (.OBJ, .FBX, किंवा .glTF) वर कंट्रोल-क्लिक करा आणि नंतर "आयात दृश्य मालमत्ता" निवडा.

  • त्यानंतरची विंडो सीनफॉर्म तयार करणार असलेल्या फायलींबद्दल काही माहिती दर्शविते, परिणामी .sfa फाइल आपल्या प्रकल्पात कोठे संग्रहित केली जाईल यासह; मी “कच्ची” निर्देशिका वापरणार आहे.
  • आपण प्रविष्ट केलेल्या माहितीसह आपण आनंदित होता तेव्हा “समाप्त” क्लिक करा.

हा आयात आपल्या प्रकल्पात काही बदल करतो. आपण आपली बिल्ड.gradle फाईल उघडल्यास, आपण सिंकफॉर्म प्लगइन एक प्रकल्प अवलंबित्व म्हणून जोडले गेलेले दिसेल:

अवलंबित्व {क्लासपाथ com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: प्लगइन: 1.7.0 // टीप: आपली अनुप्रयोग अवलंबिता येथे ठेवू नका; ते // संबंधित मॉड्यूल बिल्ट्राड्राईल फायलींमध्ये // belong belong चे आहेत

आपली मॉड्यूल-स्तरीय बिल्ड.gradle फाईल उघडा आणि आपल्याला आपल्या आयात केलेल्या 3 डी मॉडेलसाठी एक नवीन सीनफॉर्म.एसेट () प्रविष्टी सापडेल:

प्लगइन लागू करा: com.google.ar.sceneform.plugin // आपण आयात करताना निर्दिष्ट केलेला "स्त्रोत मालमत्ता पथ" // सीनफॉर्मॅट.एसेट (नमुनाडाटा / डायनासौर.ओबजे, // आपण आयात करताना निर्दिष्ट केलेला "मटेरियल पथ" // डीफॉल्ट , // आपण आयात करताना नमूद केलेला “.sfa आउटपुट पथ” // नमूनाडेटा / डायनासौर.एसफा, // आपण आयात करताना निर्दिष्ट केलेला “.sfb आउटपुट पथ” // src / मुख्य / मालमत्ता / डायनासोर)

आपण आपल्या “सॅम्पलेडेटा” आणि “कच्चे” फोल्डर्सवर नजर टाकल्यास तुम्हाला त्यामध्ये अनुक्रमे नवीन .sfa आणि .sfb फायली आढळतील.

आपण Android स्टुडिओच्या नवीन देखावा दर्शकामध्ये .sfa फाईलचे पूर्वावलोकन करू शकता:

  • Android स्टुडिओ मेनू बार वरून “पहा> साधने विंडोज> दर्शक” निवडा.
  • डावीकडील मेनूमध्ये आपली .sfa फाइल निवडा. आपले 3 डी मॉडेल आता दर्शक विंडोमध्ये दिसले पाहिजे.

आपले 3 डी मॉडेल प्रदर्शित करा

आमचे पुढील कार्य एक एआर सत्र तयार करीत आहे जे त्याचे सभोवतालचे वातावरण समजते आणि वापरकर्त्यास वर्धित दृश्यामध्ये 3 डी मॉडेल्स ठेवण्याची परवानगी देते.

यासाठी आम्हाला पुढील गोष्टी करण्याची आवश्यकता आहे:

1. एआरफ्रेगमेंट मेंबर व्हेरिएबल तयार करा

एआरफ्रॅगमेंट एआर सत्र तयार करण्यात मोठ्या प्रमाणात भार उचलत आहे, म्हणून आम्ही आमच्या मुख्य कृती वर्गामध्ये या भागाचा संदर्भ घेत आहोत.

पुढील स्निपेटमध्ये, मी अरफ्रेगमेंटसाठी मेंबर व्हेरिएबल तयार करत आहे आणि नंतर ते ऑनक्रिएट () पद्धतीत प्रारंभ करीत आहे:

खाजगी अरफ्रेगमेंट @ ओव्हरराइड संरक्षित शून्य ऑन क्रीएट (बंडल सेव्हिडइन्स्टेन्सस्टेट) {सुपर.ऑनक्रिएट (सेव्हिडइन्स्टेन्सस्टेट); ... ... ...} setContentView (R.layout.activity_main); arCoreFraament = (एआरफ्रेगमेंट) // फ्रॅगमेंट मॅनेजर वापरुन फ्रॅग्मेंट शोधा // getSupportFragmentManager (). FindFragmentById (R.id.main_fragment);

2. मॉडेलरेन्डेरेबल तयार करा

आम्हाला आता आमच्या .sfb फाईलचे मॉडेलरेंडेरेबलमध्ये रूपांतरण करण्याची आवश्यकता आहे, जी शेवटी आमचे 3 डी ऑब्जेक्ट प्रस्तुत करेल.

येथे मी माझ्या प्रकल्पाच्या रेस / रॉ / डायनासोर .sfb फाईलमधून मॉडेलरेंडेरेबल तयार करीत आहे:

खाजगी मॉडेलरेन्डेरेबल डिनोरेंडेरेबल; ... ... ... मॉडेलरेन्डेरेबल.बिल्डर () .सेटसोर्स (हे, आर. रॉडिनोसॉर) .बिल्ड () .केनअसेसेप्ट (प्रस्तुत करण्यायोग्य -> ​​डिनो रेंडेरेबल = रेन्डरेबल). एक्सेप्शनली (थ्रोबल -> {लॉग.e ( टॅग, "प्रस्तुत करण्यायोग्य लोड करण्यात अक्षम"); रिकाम्या रिकाम्या;}); }

3. वापरकर्त्याच्या इनपुटला प्रतिसाद द्या

एआरफ्रॅगमेंटमध्ये टॅप, ड्रॅग, चिमूटभर आणि पिळणे जेश्चरसाठी अंगभूत समर्थन आहे.

आमच्या अ‍ॅपमध्ये, वापरकर्त्याने त्या विमानाला टॅप देऊन एआरकोर प्लेनमध्ये 3 डी मॉडेल जोडला आहे.

ही कार्यक्षमता वितरित करण्यासाठी, आम्हाला एक कॉलबॅक नोंदविणे आवश्यक आहे जे जेव्हा विमान टॅप केले जाते तेव्हा विनंती केली जाईल:

#CoreFragment.setOnTapArPlaneListener ((HitResult हिट रिझल्ट, प्लेन प्लेन, मोशनएव्हंट मोशनइव्हेंट) -> {if (dinoRendeable == null) {परतावा;}

4. आपले मॉडेल अँकर

या चरणात, आम्ही एक आर्सीन व्ह्यू पुनर्प्राप्त करणार आहोत आणि त्यास अँकरनोडशी जोडणार आहोत, जे दृश्याचे मूळ नोड म्हणून काम करेल.

एआर अनुभवणे आरंभ करण्यासाठी, डिव्हाइसची कॅमेरा प्रतिमा प्रस्तुत करणे आणि वापरकर्त्याने त्यांचे डिव्हाइस कसे धरावे आणि कसे हलवावे हे दर्शविणारे एक सीनफॉर्म यूएक्स tionनिमेशन प्रदर्शित करण्यासह अनेक महत्त्वाची एआरकोर कार्ये करण्यास जबाबदार आहे. आर्सेन व्ह्यू व्ह्यू त्याच्या शोधात असलेल्या कोणत्याही विमानांना हायलाइट करेल, जे त्यांचे थ्रीडी मॉडेल्स दृश्यात ठेवण्यासाठी तयार आहेत.

एआरस्नीव्यू घटक घटकास त्यास जोडलेले देखावा आहे, जे प्रस्तुत करणे आवश्यक आहे असे सर्व नोड्स असलेली एक मूल-मूल डेटा रचना आहे.

आम्ही एंकरनोड प्रकारचा नोड तयार करुन प्रारंभ करणार आहोत, जो आमच्या आर्स्नेव्यूव्हचे मूळ नोड म्हणून कार्य करेल.

सर्व अँकर नोडस् त्याच वास्तविक जगाच्या स्थितीत राहतात, म्हणून अँकर नोड तयार करून आम्ही हे सुनिश्चित करत आहोत की आमचे थ्रीडी मॉडेल्स वर्धित दृश्यातच स्थिर राहतील.

चला आमचे अँकर नोड तयार करूया:

अँकरनोड अँकरनोड = नवीन अँकरनोड (अँकर);

त्यानंतर आम्ही getArSceneView () वापरुन आर्स्सीन व्ह्यू प्राप्त करू आणि अँकरनोडला जोडू.

अँकरनोड.सेटपॅरेन्ट (आर्कोअरफ्रेगमेंट.ेटएअरस्सीन व्ह्यू (). गेटसिन ());

5. हलविणे, स्केलिंग आणि फिरविणे यासाठी समर्थन जोडा

पुढे, मी ट्रान्सफॉर्मेबल नोड प्रकारचा नोड तयार करणार आहे. ट्रान्सफॉर्मेबल नोड वापरकर्त्याच्या जेश्चरवर आधारित नोड हलविणे, स्केलिंग आणि फिरविणे यासाठी जबाबदार आहे.

एकदा आपण ट्रान्सफॉर्मेबल नोड तयार केल्यावर आपण ते प्रस्तुत करण्यायोग्य संलग्न करू शकता, जे वापरकर्त्याच्या परस्परसंवादाच्या आधारे मॉडेलला स्केल आणि हलविण्याची क्षमता देईल. शेवटी, आपल्याला ट्रान्सफॉर्मेबल नोडला अँकरनोडशी जोडणे आवश्यक आहे, मुला-पालकांच्या नात्यात जे ट्रान्सफॉर्मेबल नोड सुनिश्चित करते आणि वाढीव दृश्यास्पद ठिकाणी प्रस्तुत करण्यायोग्य राहण्याची जागा निश्चित आहे.

ट्रान्सफॉर्मेबल नोड ट्रान्सफॉर्मेबलनेड = नवीन ट्रान्सफॉर्मेबल नोड (#CoreFragment.getTransformationSystem ()); // ट्रान्सफॉर्मेबल नोडला अँकरनोड // ट्रान्सफॉर्मेबलनोडे.सेटपेरेंट (अँकरनोड) शी कनेक्ट करा; transformableNode.setRenderable (dinoRenderable); // नोड निवडा // transformableNode.select (); }); }

पूर्ण केलेली क्रियाकलाप

वरील सर्व कामगिरी केल्यावर तुमची मेनएक्टिव्हिटी यासारखी दिसली पाहिजेः

android.app.Activity आयात करा; android.app.ActivityManager आयात करा; androidx.appcompat.app.appCompatActivity आयात करा; android.content.Context आयात करा; android.net.Uri आयात करा; android.os.Build आयात करा; android.os.Build.VERSION_CODES आयात करा; android.os.Bundle आयात करा; आयात करा android.util.Log; android.view.MotionEvent आयात करा; androidx.annotation.RequiresApi आयात करा; com.google.ar.core.Aunchor आयात करा; com.google.ar.core.HitResult आयात करा; com.google.ar.core.Plane आयात करा; com.google.ar.sceneform.AunchorNode आयात करा; com.google.ar.sceneform.rendering.ModelRenderable आयात करा; com.google.ar.sceneform.ux.ArFrament आयात करा; com.google.ar.sceneform.ux.TransformableNode आयात करा; पब्लिक क्लास मेनएक्टिव्हिटीने अ‍ॅपकॉम्पॅटएक्टिविटी वाढविली आहे {खासगी स्थिर अंतिम स्ट्रिंग TAG = मेनएक्टिव्हिटी. क्लास.गेट सिम्पलनेम (); खाजगी स्थिर अंतिम दुहेरी MIN_OPENGL_VERSION = 3.0; // मॉडेलरेन्डेरेबल // खासगी मॉडेलरेन्डेरेबल डिनोरेन्डेरेबलसाठी सदस्य व्हेरिएबल तयार करा; // एआरफ्रॅगमेंट // मेंबर व्हेरिएबल तयार करा // खासगी एआरफ्रॅगमेंट आर्कोरेफ्रेगमेंट; @RequiresApi (api = VERSION_CODES.N) @Override संरक्षित शून्य onCreate (बंडल सेव्हिडइन्स्टेन्सस्टेट) {सुपर.ऑनक्रिएट (सेव्हिडइन्स्टेन्सस्टेट); जर (! चेकडेव्हिस ((हा))) {परत; } सेटकॉन्टेव्ह व्ह्यू (आर. आऊट.एक्टिव्हिटी_मेन); arCoreFraament = (एआरफ्रेगमेंट) // फ्रॅगमेंट मॅनेजर वापरुन फ्रॅग्मेंट शोधा // getSupportFragmentManager (). FindFragmentById (R.id.main_fragment); if (बिल्ड.वार्शन.एसडीके.एन.टी. = = VERSION_CODES.N) {// मॉडेलरेन्डेरेबल // मॉडेलरेन्डेरेबल.बिल्डर () .सेटसोर्स तयार करा (हे, आर.आरडब्ल्यूडिनोसॉर) .बिल्ड () .थीनसेप्टेड (प्रस्तुत करण्यायोग्य -> ​​डिनरेंडेरेबल = रेन्डरेबल) ) .एक्सपेन्शनली (// एखादी त्रुटी आढळल्यास ... // थ्रोबल -> then //... नंतर खालील लॉगकैट // लॉग.पीवर मुद्रित करा (TAG, "प्रस्तुत करण्यायोग्य लोड करण्यास अक्षम"); रिटर्न शून्य;} ); } // ऑनटॉप इव्हेंटसाठी ऐका // आर्कोअरफ्रेगमेंट.सेटऑनटॅपअॅपरप्लेनलिस्टेनर ((हिट रिझल्ट हिट रिझल्ट, प्लेन प्लेन, मोशनएव्हंट मोशनइव्हेंट))> {जर (डिनो रेन्डेरेबल == नल) {रिटर्न; ch अँकर अँकर = हिटरास्ल्ट.क्रेटेन्ट अँकर () एंकरनॉड // अँकरनोड एंकरनोड = अँकरनोड (अँकर); // अँकरनोडला सीन // अँकरनोड.सेटपेरेंट (arCoreFragment.getArSceneView (). getScene ()); // टाईप ट्रान्सफॉर्मेबल नोड बनवा. ट्रान्सफॉर्मेबल नोड ट्रान्सफॉर्मेबल नोड = नवीन ट्रान्सफॉर्मेबल नोड (आर्कोअरफ्रेगमेंट.गेट ट्रान्सफॉर्मेशनसिस्टम ()); // अँकरनोड // ट्रान्सफॉर्मेबल नोड.सेटपेरेंट (अँकरनोड) वर ट्रान्सफॉर्मेबल नोड कनेक्ट करा; // प्रस्तुत करण्यायोग्य // ट्रान्सफॉर्मेबल नोड.सेटरेन्डेबल (डिनो रेन्डरेबल); / transformableNode.select ();}); stat पब्लिक स्टॅटिक बुलियन चेकडिव्हिस (अंतिम क्रियाकलाप क्रियाकलाप) {// डिव्हाइस Android मार्शमॅलो किंवा त्यापूर्वीचे चालवित असल्यास ... // जर (बिल्ड.व्हीर्शन.एसडीके. एनटी <VERSION_CODES.N) {//... त्यानंतर खालील मुद्रित करा लॉगकैट // लॉग.ए. (TAG, "देखावासाठी Android एन किंवा त्यापेक्षा जास्त आवश्यक आहे"); गतिविधि.फिनिश (); खोटे परत येणे; Open ओपनग्लवर्जनस्ट्रिंग = ((अ‍ॅक्टिव्हिमेनेजर) एक्टिविटी.जेटसिस्टम सर्व्हिस (संदर्भ .एक्टिव्हेटी_ सर्व्हिस)) .getDeviceConfigrationInfo () // ओपनजीएल ईएस // .getGlEsVersion () ची आवृत्ती तपासा; // जर डिव्हाइस ओपनजीएल ईएस 3.0.० पेक्षा कमी चालत असेल तर ... // जर (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) .. //... त्यानंतर लॉगकॅट // लॉग.टी (TAG, "वर खालील मुद्रित करा. ओपनजीएल ईएस 3.0 किंवा उच्च आवश्यक आहे "); गतिविधि.फिनिश (); खोटे परत येणे; true खरे परत येणे; }}

आपण पूर्ण प्रकल्प गिटहब वरून डाउनलोड करू शकता.

आपल्या Google एआरकोर वर्धित रिअलिटी अॅपची चाचणी घेत आहे

आपण आता आपल्या अनुप्रयोगास प्रत्यक्ष, समर्थित Android डिव्हाइसवर चाचणी घेण्यास तयार आहात. आपल्याकडे एआरकोरला समर्थन देणारे डिव्हाइस नसल्यास, Android एमुलेटरमध्ये आपल्या एआर अॅपची चाचणी घेणे शक्य आहे (थोड्या अतिरिक्त कॉन्फिगरेशनसह, ज्याचा आम्ही पुढील भागात समावेश करू).

आपल्या प्रोजेक्टची चाचणी घेण्यासाठी शारीरिक Android डिव्हाइस:

  • आपला डिव्हाइस लक्ष्य डिव्हाइसवर स्थापित करा.
  • सूचित केल्यास, अनुप्रयोगास आपल्या डिव्हाइसच्या कॅमेर्‍यावर प्रवेश द्या.
  • एआरकोर अ‍ॅप स्थापित किंवा अद्यतनित करण्यास सूचित केले असल्यास, “सुरू ठेवा” टॅप करा आणि नंतर आपण एआरकोरची नवीनतम आणि सर्वात चांगली आवृत्ती चालवित आहात हे सुनिश्चित करण्यासाठी संवाद पूर्ण करा.
  • आपण आता एखादा कॅमेरा व्यू पहा, डिव्हाइस हाताने हाताने अ‍ॅनिमेशनसह पूर्ण केले पाहिजे. अ‍ॅनिमेशनद्वारे दर्शविल्यानुसार, सपाट पृष्ठभागावर कॅमेरा दर्शवा आणि आपले डिव्हाइस परिपत्रक हालचालीमध्ये हलवा. काही क्षणांनंतर, बिंदूंची मालिका दिसली पाहिजे जे सूचित करते की विमान आढळले आहे.

  • एकदा आपण या ठिपक्यांच्या स्थितीसह आनंदी झाल्या की त्यांना एक टॅप द्या - आपले 3D मॉडेल आता आपल्या निवडलेल्या विमानात दिसावे!

  • मॉडेलभोवती फिरण्यासाठी प्रयत्न करा; आपल्या सभोवतालच्या आधारावर, आपण त्याच्या सभोवताल पूर्ण 360 डिग्री सक्षम करू शकता. आपण हे देखील पहावे की ऑब्जेक्ट वास्तविक जगाच्या प्रकाश स्रोतांशी सुसंगत अशी सावली टाकत आहे.

Android व्हर्च्युअल डिव्हाइसवर एआरकोरची चाचणी घेत आहे

अँड्रॉइड व्हर्च्युअल डिव्हाइस (एव्हीडी) मध्ये आपल्या एआरकोर अॅप्सची चाचणी घेण्यासाठी आपल्याला Android एमुलेटर आवृत्ती 27.2.9 किंवा त्यापेक्षा अधिक आवश्यक आहे. आपण आपल्या एव्हीडी वर Google Play स्टोअरमध्ये साइन इन केलेले असणे आवश्यक आहे आणि आपण ओपनजीएल ईएस 3.0 किंवा उच्च सक्षम केलेले असणे आवश्यक आहे.

सध्या आपल्या एव्हीडी वर ओपनजीएल ईएस 3.0.० किंवा त्यापेक्षा अधिक सक्षम आहे किंवा नाही हे तपासण्यासाठी:

  • सामान्य म्हणून आपली एव्हीडी लाँच करा.
  • नवीन टर्मिनल विंडो (मॅक) किंवा कमांड प्रॉम्प्ट (विंडोज) उघडा.
  • निर्देशिका ("सीडी") बदला म्हणून टर्मिनल / कमांड प्रॉमप्ट आपल्या Android एसडीकेच्या "bडब" प्रोग्रामच्या स्थानाकडे निर्देश करीत आहे, उदाहरणार्थ माझी कमांड अशी दिसते:

सीडी / यूजर्स / जेसीकाथोर्नस्बी / लायब्ररी / अँड्रॉइड / एसडीके / प्लॅटफॉर्म-टूल्स

  • आपल्या कीबोर्डवरील “एंटर” की दाबा.
  • पुढील आदेश टर्मिनलमध्ये कॉपी / पेस्ट करा आणि नंतर “एंटर” की दाबा:

./adb logcat | grep eglMakeCurrent

जर टर्मिनलने “ver 3 0” किंवा त्याहून अधिक रिटर्न दिले तर ओपनजीएल ईएस योग्यरित्या कॉन्फिगर केले आहे. जर टर्मिनल किंवा कमांड प्रॉमप्ट 3.0 पेक्षा पूर्वीचे काही दर्शवित असेल तर आपल्याला ओपनजीएल ईएस 3.0 सक्षम करण्याची आवश्यकता असेल:

  • आपल्या एव्हीडी वर परत स्विच करा.
  • Android एमुलेटरच्या बाजूने फ्लोट केलेल्या “विस्तारित नियंत्रण” बटणाची पट्टी शोधा आणि नंतर “सेटिंग्ज> प्रगत” निवडा.
  • “ओपनजीएल ईएस एपीआय पातळी> रेंडरर जास्तीत जास्त (ओपनजीएल ईएस 3..१ पर्यंत)” वर नेव्हिगेट करा.
  • एमुलेटर रीस्टार्ट करा.

टर्मिनल / कमांड प्रॉम्प्ट विंडोमध्ये खालील कमांड कॉपी / पेस्ट करा आणि नंतर “एंटर” की दाबा.

./adb logcat | grep eglMakeCurrent

आपल्याला आता “ver 3 0” किंवा त्याहून अधिकचा निकाल मिळावा, ज्याचा अर्थ म्हणजे ओपनजीएल ईएस योग्यरित्या कॉन्फिगर केले गेले आहे.

शेवटी, आपली एव्हीडी एआरकोरची सर्वात नवीनतम आवृत्ती कार्यरत असल्याचे सुनिश्चित करा:

  • एआरकोरच्या गिटहब पृष्ठाकडे जा आणि एमुलेटरसाठी एआरकोरची नवीनतम आवृत्ती डाउनलोड करा. उदाहरणार्थ, सर्वात अलीकडील प्रकाशन लिहिण्याच्या वेळी “एआरकोर_.7.०.०.x86_for_emulator.apk” होते
  • आपल्या चालू असलेल्या AVD वर APK ड्रॅग आणि ड्रॉप करा.

आपल्या प्रोजेक्टची एव्हीडीवर चाचणी घेण्यासाठी, आपला अनुप्रयोग स्थापित करा आणि सूचित केल्यावर त्यास एव्हीडीच्या “कॅमेरा” मध्ये प्रवेश द्या.

आपण आता नक्कल केलेल्या खोलीचे कॅमेरा दृश्य पहावे. आपल्या अनुप्रयोगाची चाचणी घेण्यासाठी, या आभासी जागेभोवती फिरणे, नक्कल सपाट पृष्ठभाग शोधा आणि या पृष्ठभागावर मॉडेल ठेवण्यासाठी क्लिक करा.

आपण व्हर्च्युअल रूमभोवती व्हर्च्युअल कॅमेरा हलवू शकता, “ऑप्शन” (मॅकोस) किंवा “ऑल्ट” (लिनक्स किंवा विंडोज) की दाबून आणि होल्ड करून आणि त्यानंतर खालील कीबोर्ड शॉर्टकटपैकी कोणतेही एक वापरुन:

  • डावीकडे किंवा उजवीकडे हलवा. ए किंवा डी दाबा.
  • खाली किंवा वर हलवा. क्यू किंवा ई दाबा.
  • पुढे किंवा मागे हलवा. डब्ल्यू किंवा एस दाबा.

आपण व्हर्च्युअल दृश्याभोवती "विकल्प" किंवा "Alt" दाबून आणि नंतर आपला माउस वापरुन "हलवणे" देखील करू शकता. हे प्रथम जरासा गोंधळ वाटेल, परंतु सराव करून आपण व्हर्च्युअल स्पेस यशस्वीरित्या एक्सप्लोर करण्यास सक्षम असावे. एकदा आपल्याला सिमुलेटेड प्लेन सापडल्यास, आपल्या पृष्ठभागावर आपले 3D मॉडेल ठेवण्यासाठी पांढरे ठिपके क्लिक करा.

लपेटणे

या लेखात, आम्ही एआरकोर आणि सीनफॉर्म प्लगइन वापरुन एक साधी वाढीव वास्तविकता अॅप तयार केला आहे.

आपण आपल्या स्वत: च्या प्रकल्पांमध्ये Google एआरकोर वापरण्याचे ठरविल्यास आपल्या टिप्पण्या खाली टिप्पण्यांमध्ये नक्की शेअर करा!

रिअलमेने शाओमीला 64 एमपी स्मार्टफोनसह भारतीय बाजारात पराभूत करण्याचे वचन दिले आणि हे रीअलमी एक्सटीने केले.अपस्टार्ट ब्रँडने आज डिव्हाइस भारतात लॉन्च केले आहे आणि आपल्याला वॉटरड्रॉप नॉचमध्ये क्वाड रियर...

यावेळी, समोर आणि मागे दोन्ही फोन गोरिल्ला ग्लास 5 मध्ये गुंडाळलेले आहेत. या एकट्याने फोनची हाताची भावना तसेच सामान्य बिल्ड गुणवत्ताही वाढविली आहे. फोनला विलासी वाटते आणि ग्रेडियंट्स पूर्णपणे चमकतात. आ...

प्रशासन निवडा