Мазмуну:

MEMES үчүн кеңейтилген реалдуулук колдонмосун түзөлү!: 8 кадам
MEMES үчүн кеңейтилген реалдуулук колдонмосун түзөлү!: 8 кадам

Video: MEMES үчүн кеңейтилген реалдуулук колдонмосун түзөлү!: 8 кадам

Video: MEMES үчүн кеңейтилген реалдуулук колдонмосун түзөлү!: 8 кадам
Video: Become A Master Of SDXL Training With Kohya SS LoRAs - Combine Power Of Automatic1111 & SDXL LoRAs 2024, Ноябрь
Anonim
MEMES үчүн кеңейтилген реалдуулук колдонмосун түзүүгө мүмкүнчүлүк бериңиз!
MEMES үчүн кеңейтилген реалдуулук колдонмосун түзүүгө мүмкүнчүлүк бериңиз!

Бул Нускамада биз мемдерди издөө үчүн Google API колдонгон Unity3Dдеги Android жана IOS үчүн кеңейтилген реалдуулук колдонмосун түзөбүз. Биз Юнитте Vuforiaнын жер учагын аныктоону колдонобуз, андыктан бул мобилдик тиркеме Android жана IOSтун көпчүлүк колдонуучулары үчүн иштейт. Vuforia колдонуу бизге сүрөттөрдүн бир жерде илинишине мүмкүндүк берет, андыктан биз бул сүрөттөр талаасында жүрө алабыз жана объекттер ошол жерде калышат.

Биз ошондой эле жаңы IBM Watson API'ди сынап көрөбүз, андыктан биз бул үндөрдү үнүбүз менен жасай алабыз жана алардын табигый тилде иштөөсүн колдойбуз.

Ошентип, жаман кабар бул APIлердин бири да бекер эмес, бирок жакшы кабар экөө тең акысыз. Google атайын издөө APIси сизге күнүнө 100 акысыз издөө берет, ал эми IBM Watson API сизге биринчи айды бекер берет.

Кыскача айтканда, бул колдонмо биздин сөздү Unity микрофонунан алат, муну IBM Watson серверлерине жөнөтөт, ал бизге текстти кайтарат. Андан кийин биз бул текстти алып, Google серверлерине жөнөтөбүз, ал бизге JSON түрүндөгү сүрөт URL'леринин тизмесин кайтарып берет.

1 -кадам: Биримдикте IBM Watson SDK орнотуу

Биримдикте IBM Watson SDK орнотуңуз
Биримдикте IBM Watson SDK орнотуңуз

Watson APIге жетүү үчүн, алгач алардын сайтынан ишеним грамоталарын алышыңыз керек. Console.bluemix.net баракчасына өтүңүз, түзүңүз жана катталыңыз жана кириңиз. IBM эсебиңизге барып, булут куюучу уюмдарга өтүңүз жана жаңы мейкиндикти түзүңүз. Эми тактаңызга өтүңүз жана кызматтарды карап чыгуу үчүн чыкылдатыңыз, текст кызматына сөздү кошуңуз, анткени биз муну колдонобуз. Регионду, уюмду жана мейкиндикти тандап, долбоорду түзүңүз. Эми сиз API ишеним грамоталарын түбүндө көрөсүз.

Эгерде сизде жок болсо, Unity'ди жүктөп алыңыз жана Unityдеги активдер дүкөнүнөн IBM Watson SDK импорттоңуз. Биз муну бош оюн объектисин түзүү менен текшере алабыз жана аны IBM Watson деп атайбыз жана мисал агым скриптин кошо алабыз. Бул скрипт мурунтан эле биримдиктен аудио жаздырууга жана аны иштетүү үчүн Уотсондун серверлерине жөнөтүүгө коюлган.

Азырынча биз бул мисал скриптин колдонобуз, анткени бизде дагы көп иштер бар, бирок, балким, кийинки жолу биз Уотсонго тереңирээк кире алабыз, анткени мен Vision API менен бир нерсе кылгым келет.

2 -кадам: IBM Watson Text to Speech сынагынан өтүңүз

IBM Уотсондун текстин сүйлөөгө сыноо
IBM Уотсондун текстин сүйлөөгө сыноо

Бул скрипт UI текст объектисин издеп жатат, андыктан жаңы UI баскычын түзүүгө мүмкүнчүлүк бериңиз, бул бизге керектүү текстти берет, биз баскычты кийинчерээк колдонобуз. Кенепти экран өлчөмү менен масштабдаштырыңыз жана баскычтын өлчөмүн бир аз өзгөртүңүз. Аны сол жактын астына бекиңиз. Бул текстти бош уячага сүйрөңүз. Сценарийди ачыңыз жана IBM Watson грамоталарын кошууга, "resultsField" текстинин кайда колдонулганын табууга жана аны "alt.transcriptке" гана коюуга уруксат бериңиз, анткени биз бул текстти googleде издөө үчүн колдонобуз. Эми муну текшерүүдөн мурун, биз тексттин көлөмүн динамикалуу кылып алышыбыз керек, ошондуктан биз айткандарыбыз кутуга туура келет. Текстке кайтып келип, эң ылайыктуу кылып коюңуз. Текшерүү үчүн кээ бир текстти териңиз. Азыр биз ойнотууну басканда, биздин сөздөр Уотсондун Текстинен APIге текстке которулат.

3 -кадам: Google Custom Search API орнотуу

Google Custom Search API орнотуу
Google Custom Search API орнотуу

Биз кылышыбыз керек болгон кийинки нерсе - Google'дун ыңгайлаштырылган издөө api'син Unityде колдонуу үчүн орнотуу. Жогорку денгээлде биз Unityдан Google серверлерине HTTP суранычы менен кайрылабыз, ал бизге JSON форматында жооп кайтарат.

Ошентип, Google Custom Search JSON API орнотуу барагына өтүңүз, API ачкычын алуу жана жаңы колдонмо түзүү үчүн чыкылдатыңыз. Муну ачык кармаңыз. Эми биз башкаруу панелине бара алабыз. Сайттар издей турган нерселерди киргизиңиз, каалаганына ат коюп, түзүү дегенди басыңыз.

Башкаруу панелин чыкылдатып, кээ бир өзгөртүүлөрдү киргизели: биз негизинен мемдерди издеп, сүрөт издөөнү күйгүзгүбүз келет. Издөө үчүн сайттардын астында, аны бүт желеге которуңуз. Баарын сактоо үчүн жаңыртууну басыңыз.

Эми Google api изилдөөчүсүн таап, ыңгайлаштырылган издөө APIсине өтүңүз. Бул бизге Google'дан алган JSON жообун форматтоого мүмкүнчүлүк берет. Андыктан азырынча суроо үчүн каалаган нерсени киргизиңиз, издөө тутумуңуздун идентификаторун киргизиңиз, 1ди чыпкасына коюңуз, андыктан кайталанбасын, 10дун астына сан астына коюңуз, анткени бул бир убакта кайтарып бере турган жыйынтыктардын максималдуу саны, издөө түрүнө сүрөттү киргизиңиз, анткени биз кайтып келүүнү каалайбыз. Баштоо үчүн 1 киргизиңиз, жана акыры талаалар астына "пункттар/шилтеме" коюңуз, анткени кайтарылган ар бир нерсе үчүн биз сүрөт шилтемесин гана каалайбыз. Эми сиз аткарууну басканда, биз 10 сонун сүрөт шилтемеси кайтарылганын көрөсүз.

Эми биз бул сүрөттөрдү Биримдикке алышыбыз керек.

4 -кадам: Vuforia'ны Биримдикте орнотуңуз

Биримдикте Vuforia орнотуңуз
Биримдикте Vuforia орнотуңуз

Келгиле, Vuforia менен иштейли, ошондо биз алардын учакты жерден аныктоосун колдоно алабыз. Учурдагы көрүнүштү сактап, курулуш жөндөөлөрүнө өтүңүз. Платформаңызды Android же IOSко которуңуз, эгер IOS тутумуңузга таңгак идентификатору үчүн бир нерсе койсоңуз, камера менен микрофондун колдонулушунун сүрөттөмөсүн кошуңуз. XR орнотуулары астында Vuforia кеңейтилген реалдуулукту текшериңиз.

Эми сахнада негизги камераны өчүрүп, Vuforia ARCamera кошуңуз. Конфигурация бөлүмүнө өтүп, көз салуу режимин позицияга өзгөртүңүз. Бардык маалымат базаларын белгилебеңиз, анткени бизге кереги жок.

Эми учак тапкычты кошуңуз жана биз анын демейки жүрүм -турумун жокко чыгарышыбыз керек, анткени биз жердин учак баскычын бир гана жолу жайгаштыргыбыз келет, андыктан Vuforia веб -сайтында бир жолу Deploy Stage скриптин табууга мүмкүндүк берет. Ошол сценарийди Биримдикке алып келип, учакты табуучуга коюп, ошол жерде болгон эски сценарийди алып салыңыз. Режимди интерактивдүү кылып өзгөртүп, "UnInteractiveHitTest" функциясы ошол Биримдик окуясына чакырылганын текшериңиз. Биз бул жерде жүргөндө, жерге тегиздикти тапкандан кийин, мурда жасаган баскычты активдүү кылып, анын демейки абалын активдүү эмес деп коёлу. Эми сахнага жердеги учакты коюп, аны абанын ортосуна алмаштырыңыз, анткени биз бардык сүрөттөрдүн абада калкып жүрүшүн каалайбыз. Бул жер учагын учак тапкычтын бош уячасына сүйрөңүз.

5 -кадам: Сүрөт Prefab түзүү

Сүрөт Prefab түзүү
Сүрөт Prefab түзүү

Бул бөлүктөрдүн бардыгын чогултууну баштоодон мурун, биз сүрөт жүктөлгөн сайын жасала турган даяр объектти түзүшүбүз керек. Ошентип, жер учак баскычынын астында бош оюн объектисин түзүңүз жана аны "picPrefab" деп атаңыз. Бала катары квадратты түзүңүз жана аны 2ге масштабтаңыз, анын уун 180 градуска буруңуз, ошондо ата -энелердин көк жебе катары көрсөтүлгөн алдыга карай вектору төрттүктүн алдыңкы бөлүгү болуп саналат.

"PictureBehavior" деп аталган жаңы скрипт түзүңүз жана аны picPrefab'ибизге кошуңуз.

Эми бул сүрөттүн префабрын активдериңиздин папкасына сүйрөңүз, биз муну ар бир сүрөттү койобуз.

Биздин "PictureBehavior" скрипти мындай болушу керек:

System. Collections колдонуу;

System. Collections. Generic колдонуу; UnityEngine колдонуу; public class PictureBehavior: MonoBehaviour {public Renderer quadRenderer; жеке Vector3 istediğinizPosition; void Start () {// camera transform. LookAt (Camera.main.transform) караңыз; Vector3 хүссэнAngle = жаңы Vector3 (0, transform.localEulerAngles.y, 0); transform.rotation = Quaternion. Euler (каалаганAngle); // абага күч каалооPosition = transform.localPosition; transform.localPosition += жаңы Vector3 (0, 20, 0); } void Update () {transform.localPosition = Vector3. Lerp (transform.localPosition, хүссэнPosition, Time.deltaTime * 4f); } public void LoadImage (string url) {StartCoroutine (LoadImageFromURL (url))); } IEnumerator LoadImageFromURL (string url) {WWW www = жаңы WWW (url); кирешелүүлүк www; quadRenderer.material.mainTexture = www.texture; }}

6 -кадам: Google API үчүн скрипт түзүңүз

Google API үчүн скрипт түзүңүз
Google API үчүн скрипт түзүңүз

Эми биздин "picPrefabдан" төрт рендерерге шилтемени сүйрөп баралы.

Бизде болгону эки сценарий калды, андыктан GoogleService.cs жана PictureFactroy.cs деп аталган C# скриптин түзөлү.

"GoogleService" ичине биздин өтүнүчтү жаратуучу бул кодду чаптаңыз:

System. Collections колдонуу;

System. Collections. Generic колдонуу; UnityEngine колдонуу; UnityEngine. UI колдонуу; коомдук класс GoogleService: MonoBehaviour {public PictureFactory pictureFactory; ачык текст buttonText; private const string API_KEY = "PUT API KEY BERE !!!!!"; public void GetPictures () {StartCoroutine (PictureRoutine ()); } IEnumerator PictureRoutine () {buttonText.transform.parent.gameObject. SetActive (false); сап суроо = buttonText.text; суроо = WWW. EscapeURL (суроо + "мемдер"); // эски сүрөттөрдү жок кылуу pictureFactory. DeleteOldPictures (); // камераны алдыга карай векторду сактоо үчүн, биз объектилер жайгаштырылып жатканда кыймылдай алабыз Vector3 cameraForward = Camera.main.transform.forward; // биз бир убакта 10 гана жыйынтык ала алабыз, андыктан ар бир 10 int rowNum = 1ден кийин баштоо санын өзгөртүү аркылуу прогрессибизди сактап калуубуз керек. for (int i = 1; i <= 60; i + = 10) {string url = "https://www.googleapis.com/customsearch/v1?q=" + query + "& cx = 011535004225295624669%3Afeb1gwic6bs & filter = 1 & num = 10 & searchType = image & start = " + i +" & field = items%2Flink & key = " + API_KEY; WWW www = жаңы WWW (url); кирешелүүлүк www; pictureFactory. CreateImages (ParseResponse (www.text), rowNum, cameraForward); rowNum ++; } кирешелүүлүк кайра WaitForSeconds (5f); buttonText.transform.parent.gameObject. SetActive (чыныгы); } Тизме ParseResponse (сап текст) {List urlList = new List (); сап urls = text. Split ('\ n'); foreach (сап линиясы urls) {if (line. Contains ("link")) {string url = line. Substring (12, line. Length-13); // png же jpg боюнча чыпкалоо Google тарабынан иштебейт окшойт, ошондуктан биз муну бул жерде жасайбыз: if (url. Contains (".jpg") || url. Contains (".png")) {urlList. Add (url); }}} кайтуу urlList; }}

7 -кадам: Биздин Сүрөт Фабрикасын түзүңүз

Биздин Сүрөт Фабрикасын түзүңүз
Биздин Сүрөт Фабрикасын түзүңүз

PictureFactory.cs ичинде биздин сүрөттөрдүн бардыгын түзүү үчүн бул кодду коюп, текстурасын URLден жүктөйт.

System. Collections колдонуу;

System. Collections. Generic колдонуу; UnityEngine колдонуу; коомдук класс PictureFactory: MonoBehaviour {public GameObject picPrefab; коомдук GoogleService googleService; public void DeleteOldPictures () {if (transform.childCount> 0) {foreach (Transform in this.transform) {Destroy (child.gameObject); }}} жалпы жараксыз CreateImages (ListurlList, int resultNum, Vector3 camForward) {int picNum = 1; Vector3 борбору = Camera.main.transform.position; foreach (string url in urlList) {Vector3 pos = GetPosition (picNum, resultNum, camForward); GameObject pic = Instantiate (picPrefab, pos, Quaternion.identity, this.transform); pic. GetComponent (). LoadImage (url); picNum ++; }} Vector3 GetPosition (int picNum, int rowNum, Vector3 camForward) {Vector3 pos = Vector3.zero; if (picNum <= 5) {pos = camForward + new Vector3 (picNum * -3, 0, rowNum * 3.5f); } else {pos = camForward + new Vector3 ((picNum % 5) * 3, 0, rowNum * 3.5f); } return pos; }}

8 -кадам: Биз бүттүк

Биз Бүттүк!
Биз Бүттүк!
Биз Бүттүк!
Биз Бүттүк!

GoogleService деп аталган бош оюн объектисин түзүңүз жана ага "GoogleSerivice" скриптин коюңуз.

"PictureFactory" скриптин жердин тегиздигине сүйрөңүз, анткени биздин бардык сүрөттөрүбүз бул оюн объектисинин балдары катары түзүлөт.

Тийиштүү шилтемелерди инспекторго сүйрөңүз, google кызматы үчүн дагы ушундай кылыңыз.

Биз кылышыбыз керек болгон акыркы нерсе, биздин "GetPictures" функциясы чакырылганын текшерүү. Ошентип, биздин баскычтын "onClick" окуясына барып, аны ошол жерден чакыралы.

Эми биз ойнотууну чыкылдатып, муну сынап көрө алабыз. Жер учак баскычын жана баскычты иштетүүнү тактаңыз. Бир сөз айтыңыз жана ошол текстти издөө үчүн баскычты басыңыз!

Эми бул колдонмону телефонуңузга алуу үчүн, аны сайып, File-> Build Settings бөлүмүнө өтүңүз. Куруп, чуркаңыз!

Суроолоруңуз болсо, комментарийлерде мага билдириңиз!

Сунушталууда: