Google ARCore உடன் பெரிதாக்கப்பட்ட ரியாலிட்டி Android பயன்பாட்டை உருவாக்கவும்

நூலாசிரியர்: Laura McKinney
உருவாக்கிய தேதி: 7 ஏப்ரல் 2021
புதுப்பிப்பு தேதி: 1 ஜூலை 2024
Anonim
Google ARCore உடன் பெரிதாக்கப்பட்ட ரியாலிட்டி Android பயன்பாட்டை உருவாக்கவும் - பயன்பாடுகள்
Google ARCore உடன் பெரிதாக்கப்பட்ட ரியாலிட்டி Android பயன்பாட்டை உருவாக்கவும் - பயன்பாடுகள்

உள்ளடக்கம்


3 டி மாடல்களை இறக்குமதி செய்கிறது, காட்சி சொருகி

வழக்கமாக, 3 டி மாடல்களுடன் பணிபுரிய நிபுணர் அறிவு தேவைப்படுகிறது, ஆனால் சீன்ஃபார்ம் சொருகி வெளியீட்டில் கூகிள் ஜாவாவைப் பயன்படுத்தி 3D மாடல்களை வழங்குவதை சாத்தியமாக்கியுள்ளது - மற்றும் இல்லாமல் OpenGL கற்க வேண்டும்.

நிலையான ஆண்ட்ராய்டு விட்ஜெட்டுகள், வடிவங்கள் அல்லது பொருட்கள் அல்லது .OBJ அல்லது .FBX கோப்புகள் போன்ற 3D சொத்துகளிலிருந்து ரெண்டர்டேபிள்களை உருவாக்க நீங்கள் பயன்படுத்தக்கூடிய உயர்நிலை API ஐ காட்சி வடிவ சொருகி வழங்குகிறது.

எங்கள் திட்டத்தில், Android ஸ்டுடியோவில் .OBJ கோப்பை இறக்குமதி செய்ய காட்சி காட்சி செருகுநிரலைப் பயன்படுத்துவோம். காட்சி வடிவத்தைப் பயன்படுத்தி நீங்கள் ஒரு கோப்பை இறக்குமதி செய்யும் போதெல்லாம், இந்த சொருகி தானாகவே இருக்கும்:

  • சொத்து கோப்பை .sfb கோப்பாக மாற்றவும். இது இயக்கநேர-உகந்த காட்சி பைனரி வடிவம் (.sfb), இது உங்கள் APK இல் சேர்க்கப்பட்டு பின்னர் இயக்க நேரத்தில் ஏற்றப்படும். மென்ட்கள், பொருட்கள் மற்றும் அமைப்புகளைக் கொண்ட ரெண்டரபிள் ஒன்றை உருவாக்க இந்த .sfb கோப்பைப் பயன்படுத்துவோம், மேலும் அவை வளர்ந்த காட்சியில் எங்கும் வைக்கப்படலாம்.
  • .Sfa கோப்பை உருவாக்கவும். இது ஒரு சொத்து விளக்கக் கோப்பு, இது .sfb கோப்பின் மனிதனால் படிக்கக்கூடிய விளக்கத்தைக் கொண்ட உரை கோப்பு. மாதிரியைப் பொறுத்து, .sfa கோப்பிற்குள் உரையைத் திருத்துவதன் மூலம் அதன் தோற்றத்தை மாற்றலாம்.


எழுதும் நேரத்தில், சீன்ஃபார்ம் சொருகி இன்னும் பீட்டாவில் இருந்தது என்பதை அறிந்து கொள்ளுங்கள், எனவே இந்த சொருகி பயன்படுத்தும் போது பிழைகள், பிழைகள் அல்லது பிற விசித்திரமான நடத்தைகளை நீங்கள் சந்திக்க நேரிடும்.

காட்சி சொருகி நிறுவுகிறது

காட்சி சொருகிக்கு Android ஸ்டுடியோ 3.1 அல்லது அதற்கு மேற்பட்டது தேவைப்படுகிறது. நீங்கள் பயன்படுத்தும் Android ஸ்டுடியோவின் எந்த பதிப்பைப் பற்றி உங்களுக்குத் தெரியாவிட்டால், கருவிப்பட்டியிலிருந்து “Android ஸ்டுடியோ> Android ஸ்டுடியோ பற்றி” என்பதைத் தேர்ந்தெடுக்கவும். அடுத்தடுத்த பாப்அப்பில் உங்கள் Android ஸ்டுடியோ நிறுவலைப் பற்றிய சில அடிப்படை தகவல்கள் உள்ளன, அதன் பதிப்பு எண் உட்பட.

காட்சி சொருகி நிறுவ:

  • நீங்கள் மேக்கில் இருந்தால், Android ஸ்டுடியோ கருவிப்பட்டியிலிருந்து “Android ஸ்டுடியோ> விருப்பத்தேர்வுகள்…” என்பதைத் தேர்ந்தெடுத்து, இடது கை மெனுவிலிருந்து “செருகுநிரல்களை” தேர்வு செய்யவும். நீங்கள் விண்டோஸ் கணினியில் இருந்தால், “கோப்பு> அமைப்புகள்> செருகுநிரல்கள்> களஞ்சியங்களை உலாவுக” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “காட்சி வடிவம்” என்பதைத் தேடுங்கள். “Google காட்சி கருவிகள்” தோன்றும்போது, ​​“நிறுவு” என்பதைத் தேர்ந்தெடுக்கவும்.
  • கேட்கும் போது Android ஸ்டுடியோவை மறுதொடக்கம் செய்யுங்கள், உங்கள் சொருகி பயன்படுத்த தயாராக இருக்கும்.


காட்சி யுஎக்ஸ் மற்றும் ஜாவா 8: உங்கள் திட்ட சார்புகளை புதுப்பித்தல்

இந்த திட்டம் முழுவதும் நாங்கள் பயன்படுத்தும் சார்புகளைச் சேர்ப்பதன் மூலம் ஆரம்பிக்கலாம். உங்கள் தொகுதி-நிலை build.gradle கோப்பைத் திறந்து, எங்கள் தளவமைப்பில் நாங்கள் பயன்படுத்தும் ArFragment ஐக் கொண்ட Sceneform UX நூலகத்தைச் சேர்க்கவும்:

சார்புநிலைகள் {செயல்படுத்தல் கோப்பு மரம் (dir: libs, include :) செயல்படுத்தல் androidx.appcompat: appcompat: 1.0.2 செயல்படுத்தல் androidx.constraintlayout: கட்டுப்படுத்துதல்: 1.1.3 testImplementation junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: எஸ்பிரெசோ-கோர்: 3.1.1 // காட்சி யுஎக்ஸ் யுஎக்ஸ் வளங்களை வழங்குகிறது, இதில் அர்ஃப்ராக்மென்ட் // செயல்படுத்தல் "com.google.ar.sceneform.ux: sceneform-ux: 1.7.0" செயல்படுத்தல் "com. android.support:appcompat-v7:28.0.0 "}

காட்சி வடிவம் ஜாவா 8 இலிருந்து மொழி கட்டமைப்பைப் பயன்படுத்துகிறது, எனவே எங்கள் திட்டத்தின் மூல இணக்கத்தன்மை மற்றும் இலக்கு இணக்கத்தன்மையை ஜாவா 8 க்கு புதுப்பிக்க வேண்டும்:

தொகுத்தல் விருப்பங்கள் {sourceCompatibility JavaVersion.VERSION_1_8 இலக்கு இணக்கத்தன்மை JavaVersion.VERSION_1_8}

இறுதியாக, நாம் காட்சி சொருகி பயன்படுத்த வேண்டும்:

சொருகி விண்ணப்பிக்கவும்: com.google.ar.sceneform.plugin

உங்கள் பூர்த்தி செய்யப்பட்ட build.gradle கோப்பு இதுபோன்றதாக இருக்க வேண்டும்:

சொருகி விண்ணப்பிக்கவும்: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.arcoredemo" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runcr ஜாவாவெர்ஷன். . ar.sceneform.ux: sceneform-ux: 1.7.0 "செயல்படுத்தல்" com.android.support:appcompat-v7:28.0.0 "plug சொருகி விண்ணப்பிக்கவும்: com.google.ar .sceneform.plugin

ArFragment உடன் அனுமதிகளைக் கோருகிறது

எங்கள் பயன்பாடு சாதனத்தின் கேமராவைப் பயன்படுத்தி அதன் சுற்றுப்புறங்களை பகுப்பாய்வு செய்ய மற்றும் 3D மாதிரிகளை உண்மையான உலகில் நிலைநிறுத்தும். எங்கள் பயன்பாடு கேமராவை அணுகுவதற்கு முன், அதற்கு கேமரா அனுமதி தேவைப்படுகிறது, எனவே உங்கள் திட்டத்தின் அறிக்கையைத் திறந்து பின்வருவனவற்றைச் சேர்க்கவும்:

அண்ட்ராய்டு 6.0 பயனர்களுக்கு அனுமதி மூலம் அனுமதி அடிப்படையில் அனுமதி வழங்க, மறுக்க மற்றும் திரும்பப்பெறும் திறனை வழங்கியது. இது பயனர் அனுபவத்தை மேம்படுத்தும்போது, ​​Android டெவலப்பர்கள் இப்போது இயக்க நேரத்தில் அனுமதிகளை கைமுறையாகக் கோர வேண்டும், மேலும் பயனரின் பதிலைக் கையாள வேண்டும். நல்ல செய்தி என்னவென்றால், Google ARCore இல் பணிபுரியும் போது, ​​கேமரா அனுமதியைக் கோருவதும் பயனரின் பதிலைக் கையாளுவதும் செயல்படுத்தப்படுகிறது தானாக.

உங்கள் பயன்பாட்டில் கேமரா அனுமதி உள்ளதா என்பதை ArFragment கூறு தானாகவே சரிபார்த்து, AR அமர்வை உருவாக்கும் முன் தேவைப்பட்டால் அதைக் கோருகிறது. எங்கள் பயன்பாட்டில் நாங்கள் ArFragment ஐப் பயன்படுத்துவதால், கேமரா அனுமதியைக் கோர நாங்கள் எந்த குறியீடும் எழுதத் தேவையில்லை.

AR தேவையா அல்லது விருப்பமா?

AR செயல்பாட்டைப் பயன்படுத்தும் இரண்டு வகையான பயன்பாடுகள் உள்ளன:

1. AR தேவை

ஒரு நல்ல பயனர் அனுபவத்தை வழங்க உங்கள் பயன்பாடு Google ARCore ஐ நம்பியிருந்தால், அது ARCore ஐ ஆதரிக்கும் சாதனங்களுக்கு மட்டுமே பதிவிறக்கம் செய்யப்படுவதை உறுதி செய்ய வேண்டும். உங்கள் பயன்பாட்டை “AR தேவை” என்று குறித்தால், சாதனம் ARCore ஐ ஆதரித்தால், அது Google Play கடையில் மட்டுமே தோன்றும்.

எங்கள் விண்ணப்பத்திலிருந்து செய்யும் ARCore தேவை, மேனிஃபெஸ்டைத் திறந்து பின்வருவனவற்றைச் சேர்க்கவும்:

கோட்பாட்டில் ARCore ஐ ஆதரிக்கும் சாதனத்தில் உங்கள் பயன்பாடு பதிவிறக்கம் செய்யப்படுவதற்கான வாய்ப்பும் உள்ளது, ஆனால் உண்மையில் ARCore நிறுவப்படவில்லை. எங்கள் பயன்பாட்டை “AR தேவை” எனக் குறித்தவுடன், இலக்கு சாதனத்தில் ஏற்கனவே இல்லையென்றால், Google Play தானாகவே ARCore ஐ உங்கள் பயன்பாட்டுடன் பதிவிறக்கி நிறுவும்.

உங்கள் பயன்பாடு Android ஆக இருந்தாலும் கூட: தேவை = ”உண்மை” என்பதை அறிந்து கொள்ளுங்கள் இன்னும் உங்கள் பயன்பாட்டைப் பதிவிறக்கியதிலிருந்து பயனர் ARCore ஐ நிறுவல் நீக்கியிருக்கலாம் அல்லது அவற்றின் ARCore இன் பதிப்பு காலாவதியானது என்பதால், இயக்க நேரத்தில் ARCore இருக்கிறதா என்பதைச் சரிபார்க்க வேண்டும்.

நல்ல செய்தி என்னவென்றால், நாங்கள் ArFragment ஐப் பயன்படுத்துகிறோம், இது ARCore நிறுவப்பட்டதா என்பதை உருவாக்குவதை தானாகவே சரிபார்க்கிறது ஒவ்வொரு AR அமர்வு - எனவே மீண்டும், இது நாம் கைமுறையாக செயல்படுத்த வேண்டியதில்லை.

2. AR விருப்பத்தேர்வு

உங்கள் பயன்பாட்டில் AR அம்சங்களை உள்ளடக்கியிருந்தாலும், அதன் முக்கிய செயல்பாட்டை வழங்குவதற்கு அவசியமில்லை என்றால், நீங்கள் இந்த பயன்பாட்டை “AR விருப்பத்தேர்வு” என்று குறிக்கலாம். உங்கள் பயன்பாட்டை இயக்க நேரத்தில் Google ARCore இருக்கிறதா என்பதைச் சரிபார்த்து, அதை முடக்கவும் ARCore ஐ ஆதரிக்காத சாதனங்களில் AR அம்சங்கள்.

நீங்கள் “AR விருப்பத்தேர்வு” பயன்பாட்டை உருவாக்கினால், ARCore செய்யும் இல்லை ARCore ஐ ஆதரிக்க தேவையான அனைத்து வன்பொருள் மற்றும் மென்பொருள்களும் சாதனத்தில் இருந்தாலும், உங்கள் பயன்பாட்டுடன் தானாக நிறுவப்படும். உங்கள் “AR விருப்பத்தேர்வு” பயன்பாட்டிற்கு ARCore இருக்கிறதா மற்றும் புதுப்பித்ததா என்பதைச் சரிபார்க்க வேண்டும், மேலும் தேவைப்படும்போது சமீபத்திய பதிப்பைப் பதிவிறக்கவும்.

உங்கள் பயன்பாட்டிற்கு ARCore முக்கியமானதாக இல்லாவிட்டால், பின்வருவனவற்றை உங்கள் அறிக்கையில் சேர்க்கலாம்:

மேனிஃபெஸ்ட் திறந்திருக்கும் போது, ​​மெயின்ஆக்டிவிட்டி நோக்குநிலை மாற்றங்களை அழகாக கையாளுகிறது என்பதை உறுதிப்படுத்த நான் Android: configChanges மற்றும் android: screenOrientation ஐ சேர்க்கிறேன்.

உங்கள் மேனிஃபெஸ்டில் இதையெல்லாம் சேர்த்த பிறகு, பூர்த்தி செய்யப்பட்ட கோப்பு இதுபோன்றதாக இருக்க வேண்டும்:

உங்கள் தளவமைப்பில் ArFragment ஐச் சேர்க்கவும்

ஒவ்வொரு AR அமர்வின் தொடக்கத்திலும் பல முக்கிய ARCore பணிகளை தானாகவே கையாளுவதால், நான் ARCore இன் ArFragment ஐப் பயன்படுத்துவேன். மிக முக்கியமாக, ARCore இன் இணக்கமான பதிப்பு சாதனத்தில் நிறுவப்பட்டுள்ளதா என்பதையும், தற்போது பயன்பாட்டில் கேமரா அனுமதி உள்ளதா என்பதையும் ArFragment சரிபார்க்கிறது.

உங்கள் பயன்பாட்டின் AR அம்சங்களை சாதனம் ஆதரிக்க முடியும் என்று ArFragment சரிபார்க்கப்பட்டதும், இது ஒரு ArSceneView ARCore அமர்வை உருவாக்குகிறது, மேலும் உங்கள் பயன்பாட்டின் AR அனுபவம் செல்ல தயாராக உள்ளது!

வழக்கமான Android துண்டு போலவே, நீங்கள் தளவமைப்பு கோப்பில் ArFragment துண்டுகளை சேர்க்கலாம், எனவே உங்கள் activity_main.xml கோப்பைத் திறந்து “com.google.ar.sceneform.ux.ArFragment” கூறுகளைச் சேர்க்கவும்.

கூகிளின் பாலி பயன்படுத்தி 3D மாடல்களைப் பதிவிறக்குகிறது

நீங்கள் ரெண்டரபிள்ஸை உருவாக்க பல்வேறு வழிகள் உள்ளன, ஆனால் இந்த கட்டுரையில் நாங்கள் ஒரு 3D சொத்து கோப்பைப் பயன்படுத்துகிறோம்.

அனிமேஷன்களுடன் அல்லது இல்லாமல் .OBJ, .glTF மற்றும் .FBX வடிவங்களில் 3 டி சொத்துக்களை காட்சி வடிவம் ஆதரிக்கிறது. இந்த ஆதரவு வடிவங்களில் ஒன்றில் நீங்கள் 3D மாடல்களைப் பெறக்கூடிய இடங்கள் ஏராளமாக உள்ளன, ஆனால் இந்த டுடோரியலில் கூகிளின் பாலி களஞ்சியத்திலிருந்து பதிவிறக்கம் செய்யப்பட்ட .OBJ கோப்பைப் பயன்படுத்துவேன்.

பாலி வலைத்தளத்திற்குச் சென்று, நீங்கள் பயன்படுத்த விரும்பும் சொத்தை .OBJ வடிவத்தில் பதிவிறக்கவும் (நான் இந்த டி-ரெக்ஸ் மாதிரியைப் பயன்படுத்துகிறேன்).

  • கோப்புறையை அவிழ்த்து விடுங்கள், அதில் உங்கள் மாதிரியின் மூல சொத்து கோப்பு (.OBJ, .FBX, அல்லது .glTF) இருக்க வேண்டும். மாதிரியைப் பொறுத்து, இந்த கோப்புறையில் .mtl, .bin, .png, அல்லது .jpeg வடிவங்களில் உள்ள கோப்புகள் போன்ற சில மாதிரி சார்புகளும் இருக்கலாம்.

அண்ட்ராய்டு ஸ்டுடியோவில் 3D மாடல்களை இறக்குமதி செய்கிறது

உங்கள் சொத்து கிடைத்ததும், அதை காட்சி சொருகி பயன்படுத்தி Android ஸ்டுடியோவில் இறக்குமதி செய்ய வேண்டும். இது பல படி செயல்முறை ஆகும்:

  • “மாதிரி தரவு” கோப்புறையை உருவாக்கவும். மாதிரி நேரம் என்பது உங்கள் APK இல் சேர்க்கப்படாத வடிவமைப்பு நேர மாதிரி தரவுகளுக்கான புதிய கோப்புறை வகையாகும், ஆனால் இது Android ஸ்டுடியோ எடிட்டரில் கிடைக்கும்.
  • அசல் .OBJ சொத்து கோப்பை உங்கள் “மாதிரி தரவு” கோப்புறையில் இழுத்து விடுங்கள்.
  • .OBJ கோப்பில் காட்சி வடிவ இறக்குமதி மற்றும் மாற்றத்தை செய்யவும், இது .sfa மற்றும் .sfb கோப்புகளை உருவாக்கும்.

இது மிகவும் நேரடியானதாகத் தோன்றினாலும், இல்லை .OBJ கோப்பை நேரடியாக உங்கள் திட்டத்தின் “ரெஸ்” கோப்பகத்தில் இழுத்து விடுங்கள், ஏனெனில் இது உங்கள் APK இல் மாதிரியை தேவையின்றி சேர்க்கும்.

Android ஸ்டுடியோ திட்டங்களில் இயல்பாக “மாதிரி தரவு” கோப்புறை இல்லை, எனவே நீங்கள் கைமுறையாக ஒன்றை உருவாக்க வேண்டும்:

  • உங்கள் திட்டத்தின் “பயன்பாட்டு” கோப்புறையைக் கட்டுப்படுத்தவும்.
  • “புதிய> மாதிரி தரவு அடைவு” என்பதைத் தேர்ந்தெடுத்து “மாதிரி தரவு” என்ற கோப்புறையை உருவாக்கவும்.
  • நீங்கள் முன்பு பதிவிறக்கிய 3D மாதிரி கோப்புகளுக்கு செல்லவும். மூல சொத்து கோப்பை (.OBJ, .FBX, அல்லது .glTF) கண்டுபிடித்து அதை “சாம்பிள் டேட்டா” கோப்பகத்தில் இழுத்து விடுங்கள்.
  • உங்கள் மாதிரியில் ஏதேனும் சார்புகள் உள்ளதா என்பதைச் சரிபார்க்கவும் (.mtl, .bin, .png, அல்லது .jpeg வடிவங்களில் உள்ள கோப்புகள் போன்றவை). இந்த கோப்புகளில் ஏதேனும் ஒன்றை நீங்கள் கண்டால், அவற்றை “மாதிரி தரவு” கோப்புறையில் இழுத்து விடுங்கள்.
  • Android ஸ்டுடியோவில், உங்கள் 3D மாதிரி மூல கோப்பை (.OBJ, .FBX, அல்லது .glTF) கட்டுப்படுத்தவும் என்பதைக் கிளிக் செய்து, பின்னர் “இறக்குமதி காட்சி சொத்து” என்பதைத் தேர்ந்தெடுக்கவும்.

  • அடுத்தடுத்த சாளரம் சீன்ஃபார்ம் உருவாக்கவிருக்கும் கோப்புகளைப் பற்றிய சில தகவல்களைக் காண்பிக்கும், இதன் விளைவாக .sfa கோப்பு உங்கள் திட்டத்தில் சேமிக்கப்படும்; நான் “மூல” கோப்பகத்தைப் பயன்படுத்தப் போகிறேன்.
  • நீங்கள் உள்ளிட்ட தகவலில் நீங்கள் மகிழ்ச்சியடையும்போது, ​​“முடி” என்பதைக் கிளிக் செய்க.

இந்த இறக்குமதி உங்கள் திட்டத்தில் சில மாற்றங்களைச் செய்கிறது. உங்கள் build.gradle கோப்பைத் திறந்தால், காட்சி சார்பு சொருகி திட்ட சார்பாக சேர்க்கப்பட்டுள்ளதை நீங்கள் காண்பீர்கள்:

சார்புநிலைகள் {classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: சொருகி: 1.7.0 // குறிப்பு: உங்கள் பயன்பாட்டு சார்புகளை இங்கே வைக்க வேண்டாம்; அவை தனித்தனி தொகுதி build.gradle கோப்புகளில் // சேர்ந்தவை}}

உங்கள் தொகுதி-நிலை build.gradle கோப்பைத் திறக்கவும், நீங்கள் இறக்குமதி செய்த 3 டி மாடலுக்கான புதிய sceneform.asset () உள்ளீட்டைக் காண்பீர்கள்:

சொருகி விண்ணப்பிக்கவும்: com.google.ar.sceneform.plugin // இறக்குமதியின் போது நீங்கள் குறிப்பிட்ட “மூல சொத்து பாதை” // sceneform.asset (sampledata / dinosaur.obj, // இறக்குமதியின் போது நீங்கள் குறிப்பிட்ட “பொருள் பாதை” // இயல்புநிலை , // இறக்குமதியின் போது நீங்கள் குறிப்பிட்ட “.sfa வெளியீட்டு பாதை” // sampledata / dinosaur.sfa, // இறக்குமதியின் போது நீங்கள் குறிப்பிட்ட “.sfb வெளியீட்டு பாதை” // src / main / assets / dinosaur)

உங்கள் “மாதிரி தரவு” மற்றும் “மூல” கோப்புறைகளைப் பார்த்தால், அவை முறையே புதிய .sfa மற்றும் .sfb கோப்புகளைக் கொண்டிருப்பதைக் காண்பீர்கள்.

Android ஸ்டுடியோவின் புதிய காட்சி பார்வையாளரில் .sfa கோப்பை நீங்கள் முன்னோட்டமிடலாம்:

  • Android ஸ்டுடியோ மெனு பட்டியில் இருந்து “காண்க> கருவிகள் விண்டோஸ்> பார்வையாளர்” என்பதைத் தேர்ந்தெடுக்கவும்.
  • இடது கை மெனுவில், உங்கள் .sfa கோப்பைத் தேர்ந்தெடுக்கவும். உங்கள் 3D மாடல் இப்போது பார்வையாளர் சாளரத்தில் தோன்றும்.

உங்கள் 3D மாதிரியைக் காண்பி

எங்கள் அடுத்த பணி AR சூழலை அதன் சுற்றுப்புறங்களைப் புரிந்துகொண்டு உருவாக்குகிறது, மேலும் பயனர்கள் 3D மாதிரிகளை பெரிதாக்கப்பட்ட காட்சியில் வைக்க அனுமதிக்கிறது.

இதற்கு நாம் பின்வருவனவற்றைச் செய்ய வேண்டும்:

1. ஒரு ArFragment உறுப்பினர் மாறியை உருவாக்கவும்

AR அமர்வை உருவாக்குவதில் ஈடுபட்டுள்ள கனரக-தூக்குதலில் பெரும்பகுதியை ArFragment செய்கிறது, எனவே இந்த பகுதியை எங்கள் மெயின் ஆக்டிவிட்டி வகுப்பு முழுவதும் குறிப்பிடுவோம்.

பின்வரும் துணுக்கில், நான் ArFragment க்கு ஒரு உறுப்பினர் மாறியை உருவாக்கி, அதை onCreate () முறையில் துவக்குகிறேன்:

தனியார் ArFragment arCoreFragment; VerOverride பாதுகாக்கப்பட்ட வெற்றிடத்தை onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); ... ... ...} setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // துண்டு மேலாளரைப் பயன்படுத்தி துண்டைக் கண்டுபிடி // getSupportFragmentManager (). findFragmentById (R.id.main_fragment);

2. ஒரு மாடல் ரெண்டரபிள் உருவாக்க

நாம் இப்போது எங்கள் .sfb கோப்பை ஒரு மாடல் ரெண்டரபில் மாற்ற வேண்டும், இது இறுதியில் எங்கள் 3D பொருளை வழங்கும்.

இங்கே, எனது திட்டத்தின் ரெஸ் / ரா / டைனோசர் .sfb கோப்பில் இருந்து ஒரு மாடல் ரெண்டரபிள் உருவாக்குகிறேன்.

தனியார் மாடல் ரெண்டரபிள் டினோ ரெண்டரபிள்; ... ... ... ModelRenderable.builder () .setSource (இது, R.raw.dinosaur) .பில்ட் () .அப்போது ஏற்றுக்கொள்ளுங்கள் (ரெண்டரபிள் -> dinoRenderable = renderable). விதிவிலக்காக (வீசக்கூடிய -> {Log.e ( TAG, "ரெண்டரபிள் ஏற்ற முடியவில்லை"); பூஜ்யமாகத் திரும்பு;}); }

3. பயனர் உள்ளீட்டிற்கு பதிலளிக்கவும்

தட்டு, இழுத்தல், கிள்ளுதல் மற்றும் திருப்ப சைகைகளுக்கு அர்ஃப்ராக்மென்ட் உள்ளமைக்கப்பட்ட ஆதரவைக் கொண்டுள்ளது.

எங்கள் பயன்பாட்டில், பயனர் ஒரு 3D மாதிரியை ARCore விமானத்தில் சேர்ப்பார், அந்த விமானத்தைத் தட்டுவதன் மூலம்.

இந்தச் செயல்பாட்டை வழங்க, ஒரு விமானத்தைத் தட்டும்போது போதெல்லாம் ஒரு அழைப்பை நாங்கள் பதிவு செய்ய வேண்டும்:

arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Plane plane, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;}

4. உங்கள் மாதிரியை நங்கூரமிடுங்கள்

இந்த கட்டத்தில், நாங்கள் ஒரு ArSceneView ஐ மீட்டெடுக்கப் போகிறோம், அதை ஒரு AnchorNode உடன் இணைக்கப் போகிறோம், இது காட்சியின் பெற்றோர் முனையாக செயல்படும்.

சாதனத்தின் கேமரா படங்களை ஒழுங்கமைத்தல் மற்றும் AR அனுபவத்தைத் தொடங்க பயனர் தங்கள் சாதனத்தை எவ்வாறு வைத்திருக்க வேண்டும் மற்றும் நகர்த்த வேண்டும் என்பதை நிரூபிக்கும் ஒரு காட்சி யுஎக்ஸ் அனிமேஷனைக் காண்பிப்பது உட்பட பல முக்கியமான ARCore பணிகளைச் செய்வதற்கு ArSceneView பொறுப்பாகும். ArSceneView அது கண்டறிந்த எந்த விமானங்களையும் முன்னிலைப்படுத்தும், பயனர் தங்கள் 3D மாடல்களை காட்சிக்குள் வைக்க தயாராக உள்ளது.

ARSceneView கூறு அதனுடன் இணைக்கப்பட்ட ஒரு காட்சியைக் கொண்டுள்ளது, இது ஒரு பெற்றோர்-குழந்தை தரவு கட்டமைப்பாகும், இது வழங்கப்பட வேண்டிய அனைத்து முனைகளையும் கொண்டுள்ளது.

ஆங்கர்நோட் வகையின் ஒரு முனையை உருவாக்குவதன் மூலம் நாங்கள் தொடங்கப் போகிறோம், இது எங்கள் ArSceneView இன் பெற்றோர் முனையாக செயல்படும்.

எல்லா நங்கூர முனைகளும் ஒரே உண்மையான உலக நிலையில் உள்ளன, எனவே ஒரு நங்கூரம் முனையை உருவாக்குவதன் மூலம், எங்கள் 3D மாதிரிகள் பெரிதாக்கப்பட்ட காட்சியில் நிலையானதாக இருப்பதை உறுதிசெய்கிறோம்.

எங்கள் நங்கூர முனையை உருவாக்குவோம்:

ஆங்கர்நோட் ஆங்கர்நோட் = புதிய ஆங்கர்நோட் (நங்கூரம்);

GetArSceneView () ஐப் பயன்படுத்தி ஒரு ArSceneView ஐ மீட்டெடுக்கலாம், மேலும் அதை AnchorNode உடன் இணைக்கலாம்:

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

5. நகரும், அளவிடுதல் மற்றும் சுழற்றுவதற்கான ஆதரவைச் சேர்க்கவும்

அடுத்து, நான் டிரான்ஸ்ஃபார்மபிள்நோட் வகையின் ஒரு முனையை உருவாக்கப் போகிறேன். பயனர் சைகைகளின் அடிப்படையில், முனைகளை நகர்த்துவதற்கும், அளவிடுவதற்கும், சுழற்றுவதற்கும் டிரான்ஸ்ஃபார்மபிள்நோட் பொறுப்பு.

நீங்கள் ஒரு உருமாற்றக்கூடிய முனையை உருவாக்கியதும், அதை நீங்கள் ரெண்டரபிள் உடன் இணைக்க முடியும், இது பயனர் தொடர்புகளின் அடிப்படையில் மாதிரியை அளவிட மற்றும் நகர்த்துவதற்கான திறனை வழங்கும். இறுதியாக, நீங்கள் டிரான்ஸ்ஃபார்மபிள்நோட்டை ஆங்கர்நோடோடு இணைக்க வேண்டும், இது குழந்தை-பெற்றோர் உறவில், டிரான்ஸ்ஃபார்மபிள்நோட்டை உறுதி செய்கிறது மற்றும் பெரிதாக்கப்பட்ட காட்சியில் ரெண்டரபிள் நிலையானது.

டிரான்ஸ்ஃபார்மபிள்நோட் டிரான்ஸ்ஃபார்மபிள்நோட் = புதிய டிரான்ஸ்ஃபார்மபிள்நோட் (arCoreFragment.getTransformationSystem ()); // டிரான்ஸ்ஃபார்மபிள் நோட்டை ஆங்கர்நோடோடு இணைக்கவும் // டிரான்ஸ்ஃபார்மபிள்நோட்.செட் பெற்றோர் (ஆங்கர்நோட்); transformableNode.setRenderable (dinoRenderable); // கணுவைத் தேர்ந்தெடுக்கவும் // உருமாற்றம் செய்யக்கூடியது. தேர்வு (); }); }

பூர்த்தி செய்யப்பட்ட முதன்மை செயல்பாடு

மேலே உள்ள அனைத்தையும் செய்த பிறகு, உங்கள் முதன்மை செயல்பாடு இதுபோன்றதாக இருக்க வேண்டும்:

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.Anchor; இறக்குமதி com.google.ar.core.HitResult; இறக்குமதி com.google.ar.core.Plane; இறக்குமதி com.google.ar.sceneform.AnchorNode; இறக்குமதி com.google.ar.sceneform.rendering.ModelRenderable; இறக்குமதி com.google.ar.sceneform.ux.ArFragment; இறக்குமதி com.google.ar.sceneform.ux.TransformableNode; பொது வகுப்பு மெயின்ஆக்டிவிட்டி AppCompatActivity ஐ நீட்டிக்கிறது {தனியார் நிலையான இறுதி சரம் TAG = MainActivity.class.getSimpleName (); தனிப்பட்ட நிலையான இறுதி இரட்டை MIN_OPENGL_VERSION = 3.0; // ModelRenderable க்கு ஒரு உறுப்பினர் மாறியை உருவாக்கவும் // தனியார் ModelRenderable dinoRenderable; // ArFragment // private ArFragment arCoreFragment க்கு உறுப்பினர் மாறியை உருவாக்கவும்; EquRequiresApi (api = VERSION_CODES.N) ver ஓவர்ரைடு பாதுகாக்கப்பட்ட வெற்றிடத்தை onCreate (மூட்டை சேமிக்கப்பட்டதுஇன்ஸ்டான்ஸ்ஸ்டேட்) {super.onCreate (saveInstanceState); if (! checkDevice ((இது))) {திரும்ப; } setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // துண்டு மேலாளரைப் பயன்படுத்தி துண்டைக் கண்டுபிடி // getSupportFragmentManager (). findFragmentById (R.id.main_fragment); if (Build.VERSION.SDK_INT> = VERSION_CODES.N) {// ModelRenderable ஐ உருவாக்குங்கள் // ModelRenderable.builder () .setSource (இது, R.raw.dinosaur) .பில்ட் () ). விதிவிலக்காக (// பிழை ஏற்பட்டால் ... // வீசக்கூடியது -> {//... பின்வருவனவற்றை Logcat இல் அச்சிடுக // Log.e (TAG, "ரெண்டரபிள் ஏற்ற முடியவில்லை"); பூஜ்யமாகத் திரும்புக;} ); } // onTap நிகழ்வுகளைக் கேளுங்கள் // arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Plane plane, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;} Anchor anchor = hitResult.createAnchor (); வகை ஆங்கர்நோட் // ஆங்கர்நோட் ஆங்கர்நோட் = புதிய ஆங்கர்நோட் (நங்கூரம்); // ஆங்கர்நோட்டை காட்சிக்கு இணைக்கவும் // anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ()); டிரான்ஸ்ஃபார்மபிள்நோட் டிரான்ஸ்ஃபார்மபிள்நோட் = புதிய டிரான்ஸ்ஃபார்மபிள்நோட் (arCoreFragment.getTransformationSystem ()); // டிரான்ஸ்ஃபார்மபிள் நோட்டை ஆங்கர்நோடோடு இணைக்கவும் // டிரான்ஸ்ஃபார்மபிள்நோட்.செட்பெரண்ட் (ஆங்கர்நோட்); // ரெண்டரபிள் இணைக்கவும் / உருமாறும் நோட்.தேர்வு ();}); } பொது நிலையான பூலியன் செக்டேவிஸ் (இறுதி செயல்பாட்டு செயல்பாடு) {// சாதனம் Android மார்ஷ்மெல்லோ அல்லது அதற்கு முந்தையதாக இயங்கினால் ... // if (Build.VERSION.SDK_INT <VERSION_CODES.N) {//... பின்வருவனவற்றை அச்சிடுக Logcat // Log.e (TAG, "காட்சிக்கு Android N அல்லது அதற்கு மேற்பட்டது தேவை"); activity.finish (); பொய்யாகத் திரும்பு; } சரம் openGlVersionString = ((ActivityManager) activity.getSystemService (Context.ACTIVITY_SERVICE)) .getDeviceConfigurationInfo () // OpenGL ES இன் பதிப்பைச் சரிபார்க்கவும் // .getGlEsVersion (); // சாதனம் OpenGL ES 3.0 ஐ விட குறைவாக இயங்கினால் ... // if (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) {//.. பின்னர் பின்வருவனவற்றை Logcat இல் அச்சிடுக // Log.e (TAG, " OpenGL ES 3.0 அல்லது அதற்கு மேற்பட்டது தேவை "); activity.finish (); பொய்யாகத் திரும்பு; true உண்மைக்குத் திரும்பு; }}

பூர்த்தி செய்யப்பட்ட திட்டத்தை கிட்ஹப்பிலிருந்து பதிவிறக்கம் செய்யலாம்.

உங்கள் Google ARCore பெரிதாக்கப்பட்ட ரியாலிட்டி பயன்பாட்டை சோதிக்கிறது

இயற்பியல், ஆதரவு Android சாதனத்தில் உங்கள் பயன்பாட்டை சோதிக்க இப்போது நீங்கள் தயாராக உள்ளீர்கள். ARCore ஐ ஆதரிக்கும் சாதனம் உங்களிடம் இல்லையென்றால், Android ARulator இல் உங்கள் AR பயன்பாட்டைச் சோதிக்க முடியும் (கொஞ்சம் கூடுதல் உள்ளமைவுடன், அடுத்த பிரிவில் நாங்கள் அதை உள்ளடக்குவோம்).

உங்கள் திட்டத்தை சோதிக்க a உடல் Android சாதனம்:

  • இலக்கு சாதனத்தில் உங்கள் பயன்பாட்டை நிறுவவும்.
  • கேட்கும் போது, ​​உங்கள் சாதனத்தின் கேமராவிற்கு பயன்பாட்டு அணுகலை வழங்கவும்.
  • ARCore பயன்பாட்டை நிறுவ அல்லது புதுப்பிக்கும்படி கேட்கப்பட்டால், “தொடரவும்” என்பதைத் தட்டவும், பின்னர் நீங்கள் ARCore இன் சமீபத்திய மற்றும் சிறந்த பதிப்பை இயக்குகிறீர்கள் என்பதை உறுதிப்படுத்த உரையாடலை முடிக்கவும்.
  • நீங்கள் இப்போது ஒரு கேமரா காட்சியைக் காண வேண்டும், ஒரு சாதனத்தை வைத்திருக்கும் கையின் அனிமேஷனுடன் முடிக்கவும். கேமராவை ஒரு தட்டையான மேற்பரப்பில் சுட்டிக்காட்டி, அனிமேஷனால் நிரூபிக்கப்பட்டபடி, உங்கள் சாதனத்தை வட்ட இயக்கத்தில் நகர்த்தவும். சில தருணங்களுக்குப் பிறகு, தொடர்ச்சியான புள்ளிகள் தோன்ற வேண்டும், இது ஒரு விமானம் கண்டறியப்பட்டதைக் குறிக்கிறது.

  • இந்த புள்ளிகளின் நிலை குறித்து நீங்கள் மகிழ்ச்சியடைந்ததும், அவற்றைத் தட்டவும் - உங்கள் 3D மாதிரி இப்போது நீங்கள் தேர்ந்தெடுத்த விமானத்தில் தோன்றும்!

  • மாதிரியைச் சுற்றி உடல் ரீதியாக நகர்த்த முயற்சிக்கவும்; உங்கள் சூழலைப் பொறுத்து, அதைச் சுற்றியுள்ள 360 டிகிரிகளை நீங்கள் செய்ய முடியும். உண்மையான உலக ஒளி மூலங்களுடன் பொருந்தக்கூடிய நிழலை பொருள் செலுத்துகிறதா என்பதையும் நீங்கள் சரிபார்க்க வேண்டும்.

Android மெய்நிகர் சாதனத்தில் ARCore ஐ சோதிக்கிறது

Android மெய்நிகர் சாதனத்தில் (AVD) உங்கள் ARCore பயன்பாடுகளை சோதிக்க, உங்களுக்கு Android Emulator பதிப்பு 27.2.9 அல்லது அதற்கு மேற்பட்டது தேவை. உங்கள் AVD இல் உள்ள Google Play கடையில் நீங்கள் உள்நுழைந்திருக்க வேண்டும், மேலும் OpenGL ES 3.0 அல்லது அதற்கு மேற்பட்டவை இயக்கப்பட்டிருக்க வேண்டும்.

உங்கள் AVD இல் OpenGL ES 3.0 அல்லது அதற்கு மேற்பட்டது தற்போது இயக்கப்பட்டுள்ளதா என்பதை சரிபார்க்க:

  • உங்கள் AVD ஐ சாதாரணமாக தொடங்கவும்.
  • புதிய டெர்மினல் சாளரத்தை (மேக்) அல்லது கட்டளை வரியில் (விண்டோஸ்) திறக்கவும்.
  • கோப்பகத்தை மாற்றவும் (“சிடி”) எனவே டெர்மினல் / கட்டளை வரியில் உங்கள் Android SDK இன் “adb” திட்டத்தின் இருப்பிடத்தை சுட்டிக்காட்டுகிறது, எடுத்துக்காட்டாக எனது கட்டளை இதுபோல் தெரிகிறது:

சிடி / பயனர்கள் / ஜெசிகாதோர்ன்ஸ்பை / நூலகம் / ஆண்ட்ராய்டு / எஸ்.டி.கே / இயங்குதள-கருவிகள்

  • உங்கள் விசைப்பலகையில் “Enter” விசையை அழுத்தவும்.
  • அடுத்த கட்டளையை டெர்மினலில் நகலெடுத்து / ஒட்டவும், பின்னர் “Enter” விசையை அழுத்தவும்:

./adb logcat | grep eglMakeCurrent

டெர்மினல் “ver 3 0” அல்லது அதற்கு மேற்பட்டதை அளித்தால், OpenGL ES சரியாக உள்ளமைக்கப்படுகிறது. டெர்மினல் அல்லது கட்டளை வரியில் 3.0 ஐ விட முந்தைய எதையும் காண்பித்தால், நீங்கள் OpenGL ES 3.0 ஐ இயக்க வேண்டும்:

  • உங்கள் AVD க்கு மாறவும்.
  • Android முன்மாதிரியுடன் மிதக்கும் “விரிவாக்கப்பட்ட கட்டுப்பாடு” பொத்தான்களின் துண்டுகளைக் கண்டுபிடித்து, பின்னர் “அமைப்புகள்> மேம்பட்டது” என்பதைத் தேர்ந்தெடுக்கவும்.
  • “OpenGL ES API நிலை> ரெண்டரர் அதிகபட்சம் (OpenGL ES 3.1 வரை)” க்கு செல்லவும்.
  • முன்மாதிரி மறுதொடக்கம்.

டெர்மினல் / கட்டளை வரியில் சாளரத்தில், பின்வரும் கட்டளையை நகலெடுத்து / ஒட்டவும், பின்னர் “Enter” விசையை அழுத்தவும்

./adb logcat | grep eglMakeCurrent

நீங்கள் இப்போது “ver 3 0” அல்லது அதற்கும் அதிகமான முடிவைப் பெற வேண்டும், அதாவது OpenGL ES சரியாக உள்ளமைக்கப்பட்டுள்ளது.

இறுதியாக, உங்கள் AVD ARCore இன் மிக சமீபத்திய பதிப்பை இயக்குகிறது என்பதை உறுதிப்படுத்தவும்:

  • ARCore இன் GitHub பக்கத்திற்குச் சென்று, முன்மாதிரிக்கான ARCore இன் சமீபத்திய வெளியீட்டைப் பதிவிறக்கவும். எடுத்துக்காட்டாக, மிக சமீபத்திய வெளியீட்டை எழுதும் நேரத்தில் “ARCore_1.7.0.x86_for_emulator.apk”
  • உங்கள் இயங்கும் ஏ.வி.டி மீது APK ஐ இழுத்து விடுங்கள்.

உங்கள் திட்டத்தை ஒரு AVD இல் சோதிக்க, உங்கள் பயன்பாட்டை நிறுவி, கேட்கும் போது AVD இன் “கேமரா” க்கு அணுகலை வழங்கவும்.

உருவகப்படுத்தப்பட்ட அறையின் கேமரா காட்சியை நீங்கள் இப்போது பார்க்க வேண்டும். உங்கள் பயன்பாட்டைச் சோதிக்க, இந்த மெய்நிகர் இடத்தைச் சுற்றி, உருவகப்படுத்தப்பட்ட தட்டையான மேற்பரப்பைக் கண்டுபிடித்து, இந்த மேற்பரப்பில் ஒரு மாதிரியை வைக்க கிளிக் செய்க.

“விருப்பம்” (மேகோஸ்) அல்லது “ஆல்ட்” (லினக்ஸ் அல்லது விண்டோஸ்) விசைகளை அழுத்திப் பிடிப்பதன் மூலம் மெய்நிகர் கேமராவை மெய்நிகர் அறையைச் சுற்றி நகர்த்தலாம், பின்னர் பின்வரும் விசைப்பலகை குறுக்குவழிகளைப் பயன்படுத்தலாம்:

  • இடது அல்லது வலது பக்கம் நகர்த்தவும். A அல்லது D ஐ அழுத்தவும்.
  • கீழே அல்லது மேலே நகர்த்தவும். Q அல்லது E ஐ அழுத்தவும்.
  • முன்னோக்கி அல்லது பின்னால் நகர்த்தவும். W அல்லது S ஐ அழுத்தவும்.

மெய்நிகர் காட்சியைச் சுற்றி “விருப்பம்” அல்லது “Alt” ஐ அழுத்துவதன் மூலம் உங்கள் சுட்டியைப் பயன்படுத்தலாம். இது முதலில் கொஞ்சம் கஷ்டமாக உணர முடியும், ஆனால் நடைமுறையில் நீங்கள் மெய்நிகர் இடத்தை வெற்றிகரமாக ஆராய முடியும். உருவகப்படுத்தப்பட்ட விமானத்தைக் கண்டறிந்ததும், உங்கள் 3D மாதிரியை இந்த மேற்பரப்பில் வைக்க வெள்ளை புள்ளிகளைக் கிளிக் செய்க.

மடக்குதல்

இந்த கட்டுரையில், ARCore மற்றும் Sceneform சொருகி பயன்படுத்தி ஒரு எளிய பெரிதாக்கப்பட்ட ரியாலிட்டி பயன்பாட்டை உருவாக்கியுள்ளோம்.

உங்கள் சொந்த திட்டங்களில் Google ARCore ஐப் பயன்படுத்த முடிவு செய்தால், கீழேயுள்ள கருத்துகளில் உங்கள் படைப்புகளைப் பகிர்ந்து கொள்ளுங்கள்!

புதுப்பிப்பு # 3: ஏப்ரல் 26, 2019 வெள்ளிக்கிழமை காலை 10:28 மணிக்கு. ET: ஒன்பிளஸ் 7 யு.கே. வெளியீடு முழுமையாக விற்றுவிட்டதாக ஒன்பிளஸ் உறுதிப்படுத்தியுள்ளது! யு.கே. ஒன்பிளஸ் ரசிகர்களுக்கு இது ஒரு துரதிர...

ஒன்பிளஸ் தனது ஒன்பிளஸ் 7 தொடரை இன்று பின்னர் அறிமுகப்படுத்த உள்ளது. புதிய குடும்பத்தில் இரண்டு ஒன்பிளஸ் ஸ்மார்ட்போன்கள், ஒரு ஒன்பிளஸ் 7 மற்றும் ஒரு ஆடம்பரமான ஒன்பிளஸ் 7 ப்ரோ மாடல் ஆகியவை அடங்கும்....

புதிய கட்டுரைகள்