విషయము
- పాలీతో 3 డి ఆస్తులను ప్రదర్శిస్తోంది
- 3 డి మోడలింగ్ ప్రాజెక్ట్ను సృష్టిస్తోంది
- Google క్లౌడ్ ప్లాట్ఫాం ఖాతాను సృష్టించండి
- మీ పాలీ API కీని పొందండి
- ప్రాజెక్ట్ డిపెండెన్సీలు: ఇంధనం, పి 3 డి మరియు కోట్లిన్ పొడిగింపులు
- మీ API కీని కలుపుతోంది
- ఆస్తిని తిరిగి పొందడం
- రెండవ స్క్రీన్ను సృష్టిస్తోంది: నావిగేషన్ను కలుపుతోంది
- 3 డి కాన్వాస్ను నిర్మించడం
- P3D యొక్క కాన్వాస్పై గీయడం
- మీ ప్రాజెక్ట్ను పరీక్షిస్తోంది
- చుట్టి వేయు
- సంబంధిత
వర్చువల్ రియాలిటీ (విఆర్) లేదా ఆగ్మెంటెడ్ రియాలిటీ (ఎఆర్) మొబైల్ అనువర్తనం కోసం మీకు గొప్ప ఆలోచన ఉందా, కానీ మీ దృష్టిని ఎలా జీవంలోకి తీసుకురావాలో తెలియదా?
మీరు అనుభవజ్ఞుడైన 3 డి ఆర్టిస్ట్ అయిన Android డెవలపర్ కాకపోతే, లీనమయ్యే, 360 డిగ్రీల అనుభవాన్ని అందించడానికి అవసరమైన అన్ని ఆస్తులను సృష్టించడం చాలా కష్టమైన ప్రక్రియ.
3D మోడళ్లను రూపొందించడానికి మీకు సమయం, వనరులు లేదా అనుభవం లేనందున, లేదు మీరు గొప్ప VR లేదా AR మొబైల్ అనువర్తనాన్ని నిర్మించలేరని అర్థం! వరల్డ్ వైడ్ వెబ్లో భారీగా 3 డి వనరులు అందుబాటులో ఉన్నాయి, అంతేకాకుండా మీ Android అనువర్తనాల్లో ఈ ఆస్తులను డౌన్లోడ్ చేసి, అందించాల్సిన అన్ని API లు, ఫ్రేమ్వర్క్లు మరియు లైబ్రరీలు ఉన్నాయి.
తదుపరి చదవండి: మీరు ఇప్పుడు డేడ్రీమ్ VR ఉపయోగించి ఏదైనా వెబ్సైట్ను సందర్శించవచ్చు. అది కూడా ఒకటి.
ఈ వ్యాసంలో, మేము వేలాది 3D ఆస్తులను మీ చేతివేళ్ల వద్ద ఉంచే ఆన్లైన్ రిపోజిటరీ మరియు API పాలీని చూడబోతున్నాం. ఈ వ్యాసం ముగిసే సమయానికి, మీరు రన్టైమ్లో 3 డి పాలీ ఆస్తిని తిరిగి పొందే అనువర్తనాన్ని సృష్టించారు, ఆపై దాన్ని ఆండ్రాయిడ్ లైబ్రరీ కోసం జనాదరణ పొందిన ప్రాసెసింగ్ ఉపయోగించి అందిస్తారు.
పాలీతో 3 డి ఆస్తులను ప్రదర్శిస్తోంది
మీరు ఎప్పుడైనా యూనిటీ అభివృద్ధిలో మునిగితే, అప్పుడు పాలీ రిపోజిటరీ యూనిటీ అసెట్ స్టోర్ మాదిరిగానే ఉంటుంది - పాలీలోని ప్రతిదీ ఉచితం తప్ప!
పాలీ యొక్క చాలా 3D నమూనాలు క్రియేటివ్ కామన్స్ లైసెన్స్ క్రింద ప్రచురించబడ్డాయి, కాబట్టి మీరు సృష్టికర్తకు తగిన క్రెడిట్ ఇచ్చినంత వరకు ఈ ఆస్తులను ఉపయోగించడానికి, సవరించడానికి మరియు రీమిక్స్ చేయడానికి మీకు స్వేచ్ఛ ఉంది.
పాలీ యొక్క అన్ని 3D నమూనాలు డేడ్రీమ్ మరియు ARCore వంటి Google యొక్క VR మరియు AR ప్లాట్ఫారమ్లకు అనుకూలంగా ఉండేలా రూపొందించబడ్డాయి, అయితే మీరు వాటిని ఎక్కడైనా ఉపయోగించుకోవచ్చు మరియు మీకు కావలసినవి - సమర్థవంతంగా, మీరు వాటిని ఆపిల్ యొక్క ARKit తో కూడా ఉపయోగించవచ్చు!
పాలీ ఆస్తులను తిరిగి పొందడం మరియు ప్రదర్శించడం విషయానికి వస్తే, మీకు రెండు ఎంపికలు ఉన్నాయి. మొదట, మీరు మీ కంప్యూటర్కు ఆస్తులను డౌన్లోడ్ చేసి, ఆపై వాటిని Android స్టూడియోలోకి దిగుమతి చేసుకోవచ్చు, కాబట్టి అవి మీ అప్లికేషన్తో రవాణా చేయబడతాయి మరియు దాని APK పరిమాణానికి దోహదం చేస్తాయి లేదా మీరు పాలీ API ని ఉపయోగించి రన్టైమ్లో ఈ ఆస్తులను తిరిగి పొందవచ్చు.
క్రాస్-ప్లాట్ఫాం, REST- ఆధారిత పాలీ API, పాలీ యొక్క భారీ 3D నమూనాల సేకరణకు ప్రోగ్రామాటిక్, చదవడానికి మాత్రమే ప్రాప్యతను అందిస్తుంది. మీ APK తో ఆస్తులను కట్టడం కంటే ఇది చాలా క్లిష్టంగా ఉంటుంది, అయితే రన్టైమ్లో పాలీ ఆస్తులను తిరిగి పొందడం ద్వారా అనేక ప్రయోజనాలు ఉన్నాయి, ముఖ్యంగా ఇది మీ APK పరిమాణాన్ని అదుపులో ఉంచడానికి సహాయపడుతుంది, ఇది మీ అప్లికేషన్ను ఎంత మంది డౌన్లోడ్ చేసుకోవాలో ప్రభావితం చేస్తుంది.
మీ వినియోగదారులకు మరింత ఎంపిక ఇవ్వడానికి మీరు పాలీ API ని కూడా ఉపయోగించవచ్చు, ఉదాహరణకు మీరు మొబైల్ గేమ్ను అభివృద్ధి చేస్తుంటే, అప్పుడు మీరు మీ వినియోగదారులను శ్రేణి మోడల్ల నుండి ఎంచుకోవడానికి అనుమతించవచ్చు.
మీరు పాలీ మోడళ్లను సవరించడానికి స్వేచ్ఛగా ఉన్నందున, మీరు మీ వినియోగదారులను వారు ఎంచుకున్న పాత్రను సర్దుబాటు చేయడానికి కూడా అనుమతించవచ్చు, ఉదాహరణకు జుట్టు లేదా కంటి రంగును మార్చడం ద్వారా లేదా విభిన్న ఆయుధాలు మరియు కవచాలు వంటి ఇతర పాలీ ఆస్తులతో కలపడం ద్వారా. ఈ విధంగా, అనుభవాన్ని వ్యక్తిగతీకరించడానికి చాలా స్కోప్తో, మరియు తులనాత్మకంగా తక్కువ పని కోసం, 3D ఆస్తుల శ్రేణిని అందించడానికి పాలీ API మీకు సహాయపడుతుంది. ఈ 3D మోడళ్లన్నింటినీ చక్కగా తీర్చిదిద్దడానికి మీరు టన్ను సమయం గడిపినట్లు మీ వినియోగదారులకు నమ్మకం కలుగుతుంది!
3 డి మోడలింగ్ ప్రాజెక్ట్ను సృష్టిస్తోంది
అనువర్తనం మొదట ప్రారంభించినప్పుడు ఒక నిర్దిష్ట పాలీ ఆస్తిని తిరిగి పొందే అనువర్తనాన్ని మేము సృష్టించబోతున్నాము, ఆపై యూజర్ యొక్క అభ్యర్థన మేరకు ఆ ఆస్తిని పూర్తి స్క్రీన్ మోడ్లో ప్రదర్శిస్తాము.
ఈ ఆస్తిని తిరిగి పొందడంలో మాకు సహాయపడటానికి, నేను కోట్లిన్ మరియు ఆండ్రాయిడ్ కోసం HTTP నెట్వర్కింగ్ లైబ్రరీ అయిన ఇంధనాన్ని ఉపయోగిస్తాను. మీకు నచ్చిన సెట్టింగ్లతో క్రొత్త ప్రాజెక్ట్ను సృష్టించడం ద్వారా ప్రారంభించండి, కానీ ప్రాంప్ట్ చేసినప్పుడు “కోట్లిన్ మద్దతును చేర్చండి.”
పాలీ API కి మీరు చేసే అన్ని కాల్లు తప్పనిసరిగా API కీని కలిగి ఉండాలి, ఇది మీ అనువర్తనాన్ని గుర్తించడానికి మరియు వినియోగ పరిమితులను అమలు చేయడానికి ఉపయోగించబడుతుంది. అభివృద్ధి మరియు పరీక్ష సమయంలో, మీరు తరచుగా అనియంత్రిత API కీని ఉపయోగిస్తారు, కానీ ఈ అనువర్తనాన్ని విడుదల చేయడానికి మీకు ఏమైనా ప్రణాళికలు ఉంటే, మీరు తప్పనిసరిగా Android- నిరోధిత API కీని ఉపయోగించాలి.
పరిమితం చేయబడిన కీని సృష్టించడానికి, మీరు మీ ప్రాజెక్ట్ యొక్క SHA-1 సంతకం ప్రమాణపత్రాన్ని తెలుసుకోవాలి, కాబట్టి ఈ సమాచారాన్ని ఇప్పుడే తీసుకుందాం:
- Android స్టూడియో యొక్క “Gradle” టాబ్ని ఎంచుకోండి (ఇక్కడ కర్సర్ క్రింది స్క్రీన్షాట్లో ఉంచబడుతుంది). ఇది “గ్రాడిల్ ప్రాజెక్ట్స్” ప్యానెల్ తెరుస్తుంది.
- “గ్రాడిల్ ప్రాజెక్ట్స్” ప్యానెల్లో, మీ ప్రాజెక్ట్ యొక్క ‘రూట్’ విస్తరించడానికి డబుల్ క్లిక్ చేసి, ఆపై “టాస్క్లు> ఆండ్రాయిడ్> సంతకం నివేదిక” ఎంచుకోండి. ఇది Android స్టూడియో విండో దిగువన కొత్త ప్యానెల్ను తెరుస్తుంది.
- ‘టోగుల్ టాస్క్స్ ఎగ్జిక్యూషన్స్ / టెక్స్ట్ మోడ్’ బటన్ను ఎంచుకోండి (కర్సర్ కింది స్క్రీన్షాట్లో ఉంచబడిన చోట).
“రన్” ప్యానెల్ ఇప్పుడు మీ ప్రాజెక్ట్ గురించి దాని SHA-1 వేలిముద్రతో సహా చాలా సమాచారాన్ని ప్రదర్శించడానికి నవీకరించబడుతుంది.
Google క్లౌడ్ ప్లాట్ఫాం ఖాతాను సృష్టించండి
అవసరమైన API కీని పొందడానికి, మీకు Google క్లౌడ్ ప్లాట్ఫాం (GPC) ఖాతా అవసరం.
మీకు ఖాతా లేకపోతే, ఉచిత పేజీ కోసం ప్రయత్నించండి క్లౌడ్ ప్లాట్ఫామ్కు వెళ్లడం ద్వారా మరియు సూచనలను అనుసరించడం ద్వారా మీరు 12 నెలల ఉచిత ట్రయల్ కోసం సైన్ అప్ చేయవచ్చు. క్రెడిట్ కార్డ్ లేదా డెబిట్ కార్డ్ అవసరమని గమనించండి, కానీ తరచుగా అడిగే ప్రశ్నల పేజీ ప్రకారం, ఇది మీ గుర్తింపును ధృవీకరించడానికి మాత్రమే ఉపయోగించబడుతుంది మరియు “మీ ఉచిత ట్రయల్ సమయంలో మీకు ఛార్జీ లేదా బిల్ చేయబడదు.”
మీ పాలీ API కీని పొందండి
మీరు సైన్ అప్ చేసిన తర్వాత, మీరు పాలీ API ని ప్రారంభించి, మీ కీని సృష్టించవచ్చు:
- జిసిపి కన్సోల్కు వెళ్ళండి.
- ఎగువ-ఎడమ మూలలో ఉన్న చెట్లతో ఉన్న చిహ్నాన్ని ఎంచుకుని, “API లు & సేవలు> డాష్బోర్డ్” ఎంచుకోండి.
- “API లు మరియు సేవలను ప్రారంభించండి” ఎంచుకోండి.
- ఎడమ చేతి మెనులో, “ఇతర” ఎంచుకోండి.
- “పాలీ API” కార్డును ఎంచుకోండి.
- “ప్రారంభించు” బటన్ క్లిక్ చేయండి.
- కొన్ని క్షణాల తరువాత, మీరు క్రొత్త స్క్రీన్కు తీసుకెళ్లబడతారు; సైడ్-మెనూని తెరిచి “API లు & సర్వీసెస్> ఆధారాలు” ఎంచుకోండి.
- తదుపరి పాపప్లో, “కీని పరిమితం చేయండి” ఎంచుకోండి.
- మీ కీకి విలక్షణమైన పేరు ఇవ్వండి.
- “అనువర్తన పరిమితులు” కింద “Android అనువర్తనాలు” ఎంచుకోండి.
- “ప్యాకేజీ పేరు మరియు వేలిముద్రను జోడించు” ఎంచుకోండి.
- మీ ప్రాజెక్ట్ యొక్క SHA-1 వేలిముద్రను “సంతకం-సర్టిఫికేట్ వేలిముద్ర” ఫీల్డ్లోకి కాపీ / పేస్ట్ చేయండి.
- మీ ప్రాజెక్ట్ యొక్క ప్యాకేజీ పేరును నమోదు చేయండి (ఇది మీ మానిఫెస్ట్లో మరియు ప్రతి తరగతి ఫైల్ ఎగువన కనిపిస్తుంది).
- “సేవ్ చేయి” క్లిక్ చేయండి.
మీరు ఇప్పుడు మీ ప్రాజెక్ట్ యొక్క “క్రెడెన్షియల్స్” స్క్రీన్కు తీసుకెళ్లబడతారు, దీనిలో మీరు సృష్టించిన పాలీ-ఎనేబుల్ చేసిన API కీతో సహా మీ అన్ని API కీల జాబితాను కలిగి ఉంటుంది.
ప్రాజెక్ట్ డిపెండెన్సీలు: ఇంధనం, పి 3 డి మరియు కోట్లిన్ పొడిగింపులు
పాలీ ఆస్తులను తిరిగి పొందడానికి మరియు ప్రదర్శించడానికి, మాకు కొన్ని అదనపు లైబ్రరీల నుండి సహాయం అవసరం:
- ఇంధన. పాలీకి ప్రస్తుతం అధికారిక Android టూల్కిట్ లేదు, కాబట్టి మీరు దాని REST ఇంటర్ఫేస్ను ఉపయోగించి API తో నేరుగా పని చేయాలి. ఈ ప్రక్రియను సరళంగా చేయడానికి, నేను ఇంధన HTTP నెట్వర్కింగ్ లైబ్రరీని ఉపయోగిస్తాను.
- Android కోసం ప్రాసెసింగ్. పాలీ ఆస్తిని ప్రదర్శించడానికి నేను ఈ లైబ్రరీ యొక్క P3D రెండరర్ను ఉపయోగిస్తాను.
మీ ప్రాజెక్ట్ యొక్క build.gradle ఫైల్ను తెరిచి, ఈ రెండు లైబ్రరీలను ప్రాజెక్ట్ డిపెండెన్సీలుగా జోడించండి:
డిపెండెన్సీలు {అమలు ఫైల్ ట్రీ (చేర్చండి :, dir: libs) అమలు "org.jetbrains.kotlin: kotlin-stdlib-jre7: $ kotlin_version" అమలు com.android.support:appcompat-v7:27.1.1 // ఇంధన లైబ్రరీని జోడించండి / / అమలు com.github.kittinunf.fuel: fuel-android: 1.13.0 // Android ఇంజిన్ కోసం ప్రాసెసింగ్ను జోడించండి // అమలు org.p5android: ప్రాసెసింగ్-కోర్: 4.0.1}
మా కోడ్ను మరింత సంక్షిప్తీకరించడానికి, నేను కోట్లిన్ ఆండ్రాయిడ్ ఎక్స్టెన్షన్స్ని కూడా ఉపయోగిస్తాను, కాబట్టి మేము బిల్డ్.గ్రాడిల్ ఫైల్ తెరిచినప్పుడు ఈ ప్లగ్ఇన్ను చేర్చుదాం:
ప్లగ్ఇన్ వర్తించు: కోట్లిన్-ఆండ్రాయిడ్-పొడిగింపులు
చివరగా, మేము ఇంటర్నెట్ నుండి ఆస్తిని తిరిగి పొందుతున్నందున, మా అనువర్తనానికి ఇంటర్నెట్ అనుమతి అవసరం. మీ మానిఫెస్ట్ తెరిచి, కింది వాటిని జోడించండి:
మీ API కీని కలుపుతోంది
మా అనువర్తనం పాలీ నుండి ఆస్తిని అభ్యర్థించిన ప్రతిసారీ, దీనికి చెల్లుబాటు అయ్యే API కీని చేర్చాలి. నేను ప్లేస్హోల్డర్ వచనాన్ని ఉపయోగిస్తున్నాను, కానీ మీరు తప్పక అనువర్తనం ఎప్పుడైనా పని చేయబోతున్నట్లయితే ఈ ప్లేస్హోల్డర్ను మీ స్వంత API కీతో భర్తీ చేయండి.
నేను చెక్కును కూడా జతచేస్తున్నాను, తద్వారా మీరు “ఇన్సర్ట్-మీ-ఎపిఐ-కీ” వచనాన్ని మార్చడం మరచిపోతే అప్లికేషన్ హెచ్చరికను ప్రదర్శిస్తుంది:
android.os.Bundle import android.support.v7.app.AppCompatActivity class MainActivity: AppCompatActivity () {కంపానియన్ ఆబ్జెక్ట్ {const val APIKey = "INSERT-YOUR-API-KEY" fun సరదాగా ఓవర్రైడ్ చేయండి (సేవ్ఇన్స్టాన్స్స్టేట్: బండిల్?) { super.onCreate (saveInstanceState) setContentView (R.layout.activity_main) // API కీ “INSERT” తో ప్రారంభమైతే ... // if (APIKey.startsWith ("INSERT")) {// అప్పుడు ఈ క్రింది తాగడానికి ప్రదర్శించండి… .// Toast.makeText (ఇది, "మీరు మీ API కీని నవీకరించలేదు", టోస్ట్. LENGTH_SHORT) .షో ()} else {... ... ...
ఆస్తిని తిరిగి పొందడం
మీరు గూగుల్ పాలీ సైట్లో ఏదైనా ఆస్తిని ఎంచుకోవచ్చు, కాని నేను ఈ గ్రహం భూమిని ఉపయోగిస్తాను.
మీరు దాని ఐడిని ఉపయోగించి ఒక ఆస్తిని తిరిగి పొందుతారు, ఇది URL స్లగ్ చివరిలో కనిపిస్తుంది (మునుపటి స్క్రీన్ షాట్లో హైలైట్ చేయబడింది). మేము ఈ ఆస్తి ID ని పాలీ API హోస్ట్తో మిళితం చేస్తాము, ఇది “https://poly.googleapis.com/v1.”
android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.widget.Toast import com.github.kittinunf.fuel.android.extension.responseJson దిగుమతి com.github.kittinunf.fuel .http డౌన్లోడ్ దిగుమతి com.github.kittinunf.fuel.http దిగుమతి kotlinx.android.synthetic.main.activity_main. * దిగుమతి java.io.File class MainActivity: AppCompatActivity () {తోడు వస్తువు {const val APIKey = "INSERT-YOUR-API -KEY "val propertyURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "fun సరదాగా సృష్టించండి (సేవ్ చేసిన ఇన్స్టాన్స్స్టేట్: బండిల్?) {Super.onCreate (saveInstanceState) setContentView (R.layout.activity_main APIKey.startsWith ("INSERT")) {Toast.makeText (ఇది, "మీరు మీ API కీని నవీకరించలేదు", టోస్ట్. LENGTH_SHORT) .షో ()} else {
తరువాత, మేము httpGet () పద్ధతిని ఉపయోగించి ఆస్తి URL కు GET అభ్యర్థన చేయాలి. ప్రతిస్పందన రకం తప్పనిసరిగా JSON అని కూడా నేను నిర్దేశిస్తున్నాను:
android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.widget.Toast import com.github.kittinunf.fuel.android.extension.responseJson దిగుమతి com.github.kittinunf.fuel .http డౌన్లోడ్ దిగుమతి com.github.kittinunf.fuel.http దిగుమతి kotlinx.android.synthetic.main.activity_main. * దిగుమతి java.io.File class MainActivity: AppCompatActivity () {తోడు వస్తువు {const val APIKey = "INSERT-YOUR-API -KEY "val propertyURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "fun సరదాగా సృష్టించండి (సేవ్ చేసిన ఇన్స్టాన్స్స్టేట్: బండిల్?) {Super.onCreate (saveInstanceState) setContentView (R.layout.activity_main APIKey.startsWith ("INSERT")) {Toast.makeText (ఇది, "మీరు మీ API కీని నవీకరించలేదు", Toast.LENGTH_SHORT) .షో ()} else {// సర్వర్ కాల్ చేయండి, ఆపై డేటాను ఉపయోగించి డేటాను పాస్ చేయండి “ListOf” పద్ధతి // propertyURL.httpGet (listOf (APIKey కి "కీ"). ResponseJson {request, response, result -> // ప్రతిస్పందనతో ఏదైనా చేయండి // result.fold ({val as set = it.obj ()
ఆస్తి OBJ, GLTF మరియు FBX వంటి అనేక ఆకృతులను కలిగి ఉండవచ్చు. ఆస్తి OBJ ఆకృతిలో ఉందని మేము గుర్తించాలి.
ఈ దశలో, మనం డౌన్లోడ్ చేయాల్సిన అన్ని ఫైల్ల పేరు మరియు URL ని కూడా తిరిగి పొందుతున్నాను,
ఆస్తి యొక్క ప్రాధమిక ఫైల్ (“రూట్”) తో పాటు ఏదైనా అనుబంధ పదార్థం మరియు ఆకృతి ఫైల్స్ (“వనరులు”) తో సహా.
మా అనువర్తనం ఆస్తిని సరిగ్గా తిరిగి పొందలేకపోతే, అది వినియోగదారుకు తెలియజేసే అభినందించి త్రాగుటను ప్రదర్శిస్తుంది.
android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.widget.Toast import com.github.kittinunf.fuel.android.extension.responseJson దిగుమతి com.github.kittinunf.fuel .http డౌన్లోడ్ దిగుమతి com.github.kittinunf.fuel.http దిగుమతి kotlinx.android.synthetic.main.activity_main. * దిగుమతి java.io.File class MainActivity: AppCompatActivity () {తోడు వస్తువు {const val APIKey = "INSERT-YOUR-API -KEY "val propertyURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "fun సరదాగా సృష్టించండి (సేవ్ చేసిన ఇన్స్టాన్స్స్టేట్: బండిల్?) {Super.onCreate (saveInstanceState) setContentView (R.layout.activity_main APIKey.startsWith ("INSERT")) {Toast.makeText (ఇది, "మీరు మీ API కీని నవీకరించలేదు", టోస్ట్. LENGTH_SHORT) .షో ()} else {// ఆస్తి URL కు // GET అభ్యర్థన చేయండి // ఆస్తి URL. httpGet (listOf (APIKey కి "కీ"). responseJson {request, response, result -> // ప్రతిస్పందనతో ఏదైనా చేయండి // result.fold ({val property = it.obj () var objectURL: స్ట్రింగ్? = శూన్య వర్ మెటీరియల్ లైబ్రరీ పేరు: స్ట్రింగ్? = శూన్య వర్ మెటీరియల్ లైబ్రరీ యుఆర్ఎల్: స్ట్రింగ్? = శూన్య // “ఫార్మాట్లు” శ్రేణిని ఉపయోగించి ఆస్తి ఆకృతిని తనిఖీ చేయండి // వాల్ అసెట్ఫార్మాట్స్ = ఆస్తి.జెట్జోన్అర్రే ("ఫార్మాట్లు") // అన్ని ఫార్మాట్ల ద్వారా లూప్ చేయండి // కోసం (నేను 0 లో ఆస్తిఫార్మాట్స్.లెంగ్త్ () వరకు { val currentFormat = propertyFormats.getJSONObject (i) // ఈ వనరు యొక్క ఫార్మాట్ రకాన్ని గుర్తించడానికి ఫార్మాట్ టైప్ ఉపయోగించండి. ఫార్మాట్ OBJ అయితే… .// if (currentFormat.getString ("formatType") == "OBJ") {//...ఈ వనరు యొక్క 'రూట్' ఫైల్ను తిరిగి పొందండి, అంటే OBJ ఫైల్ // objectURL = currentFormat. getJSONObject ("root") .getString ("url") // అన్ని రూట్ ఫైల్ యొక్క డిపెండెన్సీలను తిరిగి పొందండి // materialLibraryName = currentFormat.getJSONArray ("వనరులు") .getJSONObject (0) .getString ("relativePath") materialLibraryURL = currentFormat.getJS ("వనరులు") .getJSONObject (0) .getString ("url") విచ్ఛిన్నం}} objectURL !!. httpDownload (). గమ్యం {_, _ -> ఫైల్ (filesDir, "globeAsset.obj")}. ప్రతిస్పందన {_ , _, result -> result.fold ({}, {// మీరు OBJ ఫైల్ను గుర్తించడం లేదా డౌన్లోడ్ చేయలేకపోతే, లోపం ప్రదర్శించండి // Toast.makeText (ఇది, "వనరును డౌన్లోడ్ చేయలేకపోయింది", టోస్ట్. LENGTH_SHORT ) .షో ()})} మెటీరియల్ లైబ్రరీ యుఆర్ఎల్ !!. httpDownload (). గమ్యం {_, _ -> ఫైల్ (ఫైల్స్ డిర్, మెటీరియల్ లైబ్రరీ నేమ్)} .ప్రయోగం {_, _, ఫలితం -> ఫలితం.ఫోల్డ్ ({}, ast టోస్ట్. makeText (ఇది, "వనరును డౌన్లోడ్ చేయడం సాధ్యం కాలేదు", అభినందించి త్రాగుట. LENGTH_SHORT) .షో ()})}}, { Toast.makeText (ఇది, "వనరును డౌన్లోడ్ చేయడం సాధ్యం కాలేదు", టోస్ట్. LENGTH_SHORT) .షో ()})}}}
ఈ సమయంలో, మీరు మీ Android స్మార్ట్ఫోన్ లేదా టాబ్లెట్ లేదా Android వర్చువల్ పరికరం (AVD) లో ప్రాజెక్ట్ను ఇన్స్టాల్ చేస్తే, అప్పుడు ఆస్తి విజయవంతంగా డౌన్లోడ్ అవుతుంది, అయితే అనువర్తనం దీన్ని ప్రదర్శించదు. దీన్ని ఇప్పుడే పరిష్కరించుకుందాం!
రెండవ స్క్రీన్ను సృష్టిస్తోంది: నావిగేషన్ను కలుపుతోంది
మేము ఆస్తిని పూర్తి స్క్రీన్ మోడ్లో ప్రదర్శించబోతున్నాము, కాబట్టి ట్యాప్ చేసినప్పుడు, పూర్తి స్క్రీన్ కార్యాచరణను ప్రారంభించే బటన్ను చేర్చడానికి మా main_activity.xml ఫైల్ను నవీకరించండి.
ఇప్పుడు MainActivity.kt ఫైల్ చివరికి onClickListener ని చేర్చుదాం:
android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.widget.Toast import com.github.kittinunf.fuel.android.extension.responseJson దిగుమతి com.github.kittinunf.fuel .http డౌన్లోడ్ దిగుమతి com.github.kittinunf.fuel.http దిగుమతి kotlinx.android.synthetic.main.activity_main. * దిగుమతి java.io.File class MainActivity: AppCompatActivity () {తోడు వస్తువు {const val APIKey = "INSERT-YOUR-API -KEY "val propertyURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "fun సరదాగా సృష్టించండి (సేవ్ చేసిన ఇన్స్టాన్స్స్టేట్: బండిల్?) {Super.onCreate (saveInstanceState) setContentView (R.layout.activity_main APIKey.startsWith ("INSERT")) {Toast.makeText (ఇది, "మీరు మీ API కీని నవీకరించలేదు", Toast.LENGTH_SHORT) .షో ()} else {propertyURL.httpGet (listOf ("key" to APIKey)). responseJson {request, response, result -> result.fold ({val property = it.obj () var objectURL: String? = null var materialLibraryName: string? = null var materialLibraryURL: Str ING? = శూన్య విలువ ఆస్తిఫార్మాట్స్ = ఆస్తి.జెట్జోన్అర్రే ("ఫార్మాట్లు") (నేను 0 లో ఆస్తిఫార్మాట్స్.లెంగ్త్ () వరకు) {వాల్ కరెంట్ఫార్మాట్ = అసెట్ఫార్మాట్స్ ) ) .getJSONObject (0) .getString ("url") విచ్ఛిన్నం}} objectURL !!. httpDownload (). గమ్యం {_, _ -> ఫైల్ (filesDir, "globeAsset.obj")}. ప్రతిస్పందన {_, _, ఫలితం -> result.fold ({}, {Toast.makeText (ఇది, "వనరును డౌన్లోడ్ చేయడం సాధ్యం కాలేదు", Toast.LENGTH_SHORT) .షో ()})} materialLibraryURL !!. HttpDownload (). గమ్యం {_, _ -> ఫైల్ (filesDir, materialLibraryName)}. ప్రతిస్పందన {_, _, ఫలితం -> result.fold ({}, {Toast.makeText (ఇది, "వనరును డౌన్లోడ్ చేయలేకపోయింది", టోస్ట్. LENGTH_SHORT) .షో ()})}}, {Toast.makeText (ఇది, "వనరును డౌన్లోడ్ చేయడం సాధ్యం కాలేదు", టోస్ట్. LENGTH_SHORT) .sh ow ()})} // ఒక బటన్ను అమలు చేయండి // displayButton.setOnClickListener {val ఉద్దేశం = ఉద్దేశం (ఇది, రెండవ కార్యాచరణ :: class.java) ప్రారంభ కార్యాచరణ (ఉద్దేశం); }}}
3 డి కాన్వాస్ను నిర్మించడం
ఇప్పుడు, మేము మా ఆస్తిని పూర్తి స్క్రీన్ మోడ్లో ప్రదర్శించే కార్యాచరణను సృష్టించండి:
- మీ ప్రాజెక్ట్ యొక్క MainActivity.kt ఫైల్పై నియంత్రణ-క్లిక్ చేసి, “క్రొత్త> కోట్లిన్ ఫైల్ / క్లాస్” ఎంచుకోండి.
- “కైండ్” డ్రాప్డౌన్ తెరిచి, “క్లాస్” ఎంచుకోండి.
- ఈ తరగతికి “సెకండ్ యాక్టివిటీ” అనే పేరు ఇవ్వండి, ఆపై “సరే” క్లిక్ చేయండి.
3D వస్తువును గీయడానికి, మాకు 3D కాన్వాస్ అవసరం! నేను Android యొక్క లైబ్రరీ యొక్క P3D రెండరర్ కోసం ప్రాసెసింగ్ను ఉపయోగించబోతున్నాను, అంటే పాప్లెట్ క్లాస్ను విస్తరించడం, సెట్టింగులు () పద్ధతిని అధిగమించడం మరియు పూర్తి స్క్రీన్ () పద్ధతికి వాదనగా P3D ని పాస్ చేయడం. మేము పాలీ ఆస్తిని PShape వస్తువుగా సూచించే ఆస్తిని కూడా సృష్టించాలి.
ప్రైవేట్ ఫన్ డిస్ప్లేఅసెట్ () {val కాన్వాస్ 3 డి = ఆబ్జెక్ట్: పాప్లెట్ () poly var పాలీఅసెట్: పిషాప్? = శూన్య ఓవర్రైడ్ సరదా సెట్టింగులు () {పూర్తి స్క్రీన్ (PConstants.P3D)}
తరువాత, సెటప్ () పద్ధతిని భర్తీ చేయడం ద్వారా, లోడ్షాప్ () పద్ధతిని పిలవడం ద్వారా, మరియు .obj ఫైల్ యొక్క సంపూర్ణ మార్గాన్ని దాటడం ద్వారా మేము PShape ఆబ్జెక్ట్ను ప్రారంభించాలి.
సరదా సెటప్ను భర్తీ చేయండి () {polyAsset = loadShape (ఫైల్ (filesDir, "globeAsset.obj"). సంపూర్ణ మార్గం)}
P3D యొక్క కాన్వాస్పై గీయడం
ఈ 3D కాన్వాస్పై గీయడానికి, మేము డ్రా () పద్ధతిని భర్తీ చేయాలి:
ఫన్ డ్రా () {నేపథ్యం (0) ఆకారం (పాలీఅసెట్)}}
అప్రమేయంగా, పాలీ API నుండి తిరిగి పొందిన చాలా ఆస్తులు చిన్న వైపున ఉన్నాయి, కాబట్టి మీరు ఇప్పుడు ఈ కోడ్ను అమలు చేస్తే, మీ స్క్రీన్ కాన్ఫిగరేషన్ను బట్టి మీరు ఆస్తిని కూడా చూడలేరు. 3D దృశ్యాలను సృష్టించేటప్పుడు, మీరు సాధారణంగా కస్టమ్ కెమెరాను సృష్టిస్తారు, తద్వారా వినియోగదారు సన్నివేశాన్ని అన్వేషించవచ్చు మరియు మీ 3D ఆస్తులను పూర్తి 360 డిగ్రీల నుండి చూడవచ్చు. ఏదేమైనా, ఇది ఈ వ్యాసం యొక్క పరిధికి మించినది, కాబట్టి నేను తెరపై సౌకర్యవంతంగా సరిపోతుందని నిర్ధారించుకోవడానికి నేను ఆస్తి పరిమాణం మరియు స్థానాన్ని మానవీయంగా మారుస్తాను.
ప్రతికూల విలువను స్కేల్ () పద్ధతికి పంపడం ద్వారా మీరు ఆస్తి పరిమాణాన్ని పెంచవచ్చు:
స్థాయి (-10f)
అనువాద () పద్ధతి మరియు క్రింది కోఆర్డినేట్లను ఉపయోగించి మీరు వర్చువల్ 3D స్థలంలో ఆస్తి స్థానాన్ని సర్దుబాటు చేయవచ్చు:
- X. ఆస్తిని క్షితిజ సమాంతర అక్షంతో పాటు ఉంచుతుంది.
- వై ఆస్తిని నిలువు అక్షం వెంట ఉంచుతుంది.
- Z. ఇది “లోతు / ఎత్తు” అక్షం, ఇది 2D వస్తువును 3D వస్తువుగా మారుస్తుంది. సానుకూల విలువలు వస్తువు మీ వైపుకు వస్తున్నాయనే అభిప్రాయాన్ని సృష్టిస్తాయి మరియు ప్రతికూల విలువలు వస్తువు మీ నుండి దూరం అవుతున్నాయనే అభిప్రాయాన్ని సృష్టిస్తాయి.
పరివర్తనాలు సంచితమైనవని గమనించండి, కాబట్టి ఫంక్షన్ తర్వాత జరిగే ప్రతిదీ ప్రభావాన్ని పొందుతుంది.
నేను ఈ క్రింది వాటిని ఉపయోగిస్తున్నాను:
అనువదించండి (-50f, -100f, 10f)
పూర్తయిన కోడ్ ఇక్కడ ఉంది:
ఫన్ డ్రా () {నేపథ్యం (0) స్కేల్ (-10 ఎఫ్) అనువదించండి (-50 ఎఫ్, -100 ఎఫ్) // ఆకారం () పద్ధతి // ఆకారం (పాలీఅసెట్)}}
తరువాత, మేము సంబంధిత లేఅవుట్ ఫైల్ను సృష్టించాలి, ఇక్కడ మేము 3D కాన్వాస్ను ఫ్రేమ్లేఅవుట్ విడ్జెట్గా చేర్చుతాము:
- మీ ప్రాజెక్ట్ యొక్క “res> లేఅవుట్” ఫోల్డర్ను నియంత్రించండి-క్లిక్ చేయండి.
- “లేఅవుట్ వనరుల ఫైల్” ఎంచుకోండి.
- ఈ ఫైల్కు “activity_second” పేరు ఇవ్వండి, ఆపై “OK” క్లిక్ చేయండి.
ఇప్పుడు మన వద్ద “ఆస్తి_వ్యూ” ఫ్రేమ్లేఅవుట్ ఉంది, దాని గురించి మన సెకండ్ యాక్టివిటీకి తెలియజేయాలి! SecondActivity.kt ఫైల్కు తిరిగి తిప్పండి, క్రొత్త PFragment ఉదాహరణను సృష్టించండి మరియు దానిని మా “ఆస్తి_వ్యూ” విడ్జెట్ దిశలో సూచించండి:
android.os.Bundle దిగుమతి android.support.v7.app.AppCompatActivity దిగుమతి kotlinx.android.synthetic.main.activity_second. * దిగుమతి ప్రాసెసింగ్ .android.PFragment దిగుమతి ప్రాసెసింగ్. .షాప్ దిగుమతి java.io.File క్లాస్ సెకండ్ యాక్టివిటీ: AppCompatActivity () fun సరదాగా సృష్టించు (సేవ్ చేసిన ఇన్స్టాన్స్స్టేట్: బండిల్?) {Super.onCreate (saveInstanceState) setContentView (R.layout.activity_second) displayAsset ()} private fun displayAsset canvas3D = object: PApplet () poly var polyAsset: PShape? = శూన్య ఓవర్రైడ్ సరదా సెట్టింగులు () {పూర్తి స్క్రీన్ (PConstants.P3D) fun సరదా సెటప్ను ఓవర్రైడ్ చేయండి () {polyAsset = loadShape (ఫైల్ (filesDir, "globeAsset.obj"). .
చివరి దశ, మీ మానిఫెస్ట్కు రెండవ కార్యాచరణను జోడిస్తోంది:
మీ ప్రాజెక్ట్ను పరీక్షిస్తోంది
మేము ఇప్పుడు పూర్తి చేసిన ప్రాజెక్ట్ను పరీక్షించడానికి సిద్ధంగా ఉన్నాము! దీన్ని మీ Android పరికరం లేదా AVD లో ఇన్స్టాల్ చేయండి మరియు మీకు క్రియాశీల ఇంటర్నెట్ కనెక్షన్ ఉందని నిర్ధారించుకోండి. అనువర్తనం ప్రారంభించిన వెంటనే, ఇది ఆస్తిని డౌన్లోడ్ చేస్తుంది మరియు మీరు “డిస్ప్లే అసెట్” బటన్ను నొక్కడం ద్వారా దాన్ని చూడవచ్చు.
మీరు ఈ పూర్తి ప్రాజెక్ట్ను GitHub నుండి డౌన్లోడ్ చేసుకోవచ్చు.
చుట్టి వేయు
ఈ వ్యాసంలో, రన్టైమ్లో 3 డి ఆస్తిని తిరిగి పొందడానికి పాలీ ఎపిఐని ఎలా ఉపయోగించాలో మరియు ఆండ్రాయిడ్ లైబ్రరీ కోసం ప్రాసెసింగ్ ఉపయోగించి ఆ ఆస్తిని ఎలా ప్రదర్శించాలో చూశాము. VR మరియు AR అభివృద్ధిని ఎక్కువ మందికి అందుబాటులో ఉంచే అవకాశం పాలీ API కి ఉందని మీరు అనుకుంటున్నారా? దిగువ వ్యాఖ్యలలో మాకు తెలియజేయండి!
సంబంధిత
- గూగుల్ 2018 లో “వందల మిలియన్ల” ఆండ్రాయిడ్ పరికరాలకు AR అనువర్తనాలను తీసుకువస్తుంది
- AI మరియు యంత్ర అభ్యాసం గురించి గూగుల్ మీకు ఉచితంగా నేర్పుతుంది
- Google కార్డ్బోర్డ్ కోసం 15 ఉత్తమ VR ఆటలు
- Google కార్డ్బోర్డ్ కోసం 10 ఉత్తమ VR అనువర్తనాలు
- గూగుల్ ఫుచ్సియా అంటే ఏమిటి? ఇది కొత్త ఆండ్రాయిడ్?
- గూగుల్ డ్యూప్లెక్స్ అంటే ఏమిటి? - లక్షణాలు, విడుదల తేదీ మరియు మరిన్ని
- కేవలం 7 నిమిషాల్లో Android కోసం VR అనువర్తనాన్ని ఎలా సృష్టించాలి
- మొబైల్ VR హెడ్సెట్లు - మీ ఉత్తమ ఎంపికలు ఏమిటి?