Talaan ng mga Nilalaman:
- Hakbang 1: Magsimula ng isang Bagong Proyekto
- Hakbang 2: I-set up natin si Vuforia
- Hakbang 3: Magdagdag ng isang Bagong Script
- Hakbang 4: Idagdag Natin ang Kotse
- Hakbang 5: Ilagay ang Kotse sa Langit
- Hakbang 6: Mga Pintuan ng Lambo
- Hakbang 7: Pagpe-play ng Video sa AR
- Hakbang 8: Ilagay ang App sa Iyong Telepono
Video: Augmented Reality Vuforia 7 Ground Plane Detection .: 8 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Ang augmented reality ng Vuforia na SDK para sa Unity 3D ay gumagamit ng ARCore at ARKit upang makita ang mga ground plane sa AR. Gagamitin ng tutorial ngayon ang kanilang katutubong pagsasama sa Unity upang makagawa ng isang AR app para sa Android o IOS. Magkakaroon kami ng isang kotse na mahulog mula sa kalangitan patungo sa lupa, at ang mga pintuan nito ay awtomatikong magbubukas kapag malapit kami. Susuriin din namin ang paggawa ng video sa AR. Upang sundin, kakailanganin mong i-install ang Unity 3D sa iyong computer (libre ito). Ang mga tagubiling ito ay para sa kabuuang mga nagsisimula upang mas detalyado namin ang lahat!
Ang pinakamagandang bahagi tungkol sa SLAM ng Vuforia ay ang dami ng mga iOS at Android device na sinusuportahan nito. Ang isang buong listahan ng aparato ay matatagpuan dito:
library.vuforia.com/articles/Solution/grou…
Hakbang 1: Magsimula ng isang Bagong Proyekto
Mag-download ng Unity 3D mula dito kung wala mo ito:
Tiyaking mag-install ng suporta para sa Vuforia Augmented Reality at Android o IOS depende sa kung aling aparato ang mayroon ka.
Buksan ang Unity at magsimula ng isang bagong proyekto ng Unity, tawagan ito kung ano ang gusto mo.
Hinahayaan munang lumabas ang app na naka-set up upang mabuo upang hindi namin kalimutan. Kaya, i-save ang eksena at tawagan itong "pangunahing".
Pumunta sa file, itayo ang mga setting, at ilipat ang iyong build platform sa Android o IOS. Mag-navigate sa mga setting ng XR sa mga setting ng player at suriin ang Vuforia Augmented Reality Suportado.
Kung ang iyong sa Android ay hindi mo na kailangang gumawa ng iba pa, ngunit sa IOS pumunta sa iba pang mga setting at siguraduhing maglagay ng isang bagay para sa iyong tagatukoy ng bundle. Gamitin ang format na "com. YourCompanyName. YourAppName."
Ilagay sa anumang bagay para sa paglalarawan ng paggamit ng camera at baguhin ang target na minimum na bersyon ng pagbuo ng hindi bababa sa 9.0.
Halos doon at ngayon ay i-set up natin ang lahat.
Hakbang 2: I-set up natin si Vuforia
Ngayon ay i-set up natin ang lahat.
Pumunta sa gameobject sa tuktok na menu at i-click ang ARCamera. Tanggalin ngayon ang pangunahing camera mula sa iyong eksena.
Piliin ang ARCamera at sa kanang bahagi sa inspektor i-click ang Open Vuforia Configuration. I-click ang koleksyon ng mga dataset at alisan ng check ang lahat dahil hindi kami gumagamit ng anumang mga target sa imahe dito.
Mag-click sa aparato tracker at i-click ang track ng aparato magpose. Baguhin ang pagsubaybay mula sa paikot patungo sa posisyonal.
Bumalik ngayon sa tab ng object ng laro at i-click ang Vuforia, Ground Plane, at tagahanap ng Plane. Naglalagay ito ng mga script na makahanap ng aming ground plane.
Ang huling bagay na kailangan namin ay ang yugto ng ground plane, kaya't pumunta muli sa object ng laro sa tuktok na menu, at i-click ang Vuforia, Ground Plane, at piliin ang Ground Plane Stage. Ngayon ang anumang bagay na anak natin dito ay lalabas sa AR.
Hakbang 3: Magdagdag ng isang Bagong Script
Ang default na pag-uugali ng pagtuklas ng ground plane na ito ay upang maglagay ng isang bagong bagay sa tuwing pinindot mo ang screen. Ang nais namin ay muling iposisyon ang object sa tuwing pipilitin mo ang screen. Kaya't mag-right click sa iyong folder ng mga assets at lumikha ng isang bagong script na C #. Tawagin itong "DeployStageOnce" at palitan ang lahat ng may ganitong code:
gamit ang System;
gamit ang UnityEngine; gamit ang Vuforia; pampublikong klase DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; pribadong PositionalDeviceTracker _deviceTracker; pribadong GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("Dapat tukuyin ang AnchorStage"); bumalik; } AnchorStage. SetActive (false); } public void Gumising () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } public void OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } pribadong walang bisa na OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker (); } public void OnInteractiveHitTest (HitTestResult resulta) {if (resulta == null || AnchorStage == null) {Debug. LogWarning ("Ang pagsubok sa hit ay hindi wasto o hindi itinakda ang AnchorStage"); bumalik; } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), resulta); kung (anchor! = null) {AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (totoo); } kung (_previousAnchor! = null) {Wasakin (_previousAnchor); } _previousAnchor = anchor; }}
Upang matiyak na magagamit ang script na ito kailangan naming tawagan ang function na OnInteractiveHitTest () kaya bumalik sa Pagkakaisa at i-click ang object ng laro ng tagahanap ng eroplano. Baguhin ang mode mula Awtomatiko patungo sa Interactive. I-drag ang script na ginawa lang namin sa object ng laro ng tagahanap ng eroplano. Alisin ang script ng ContentPositioningBehaviour. Makakakita ka ng isang lugar para sa isang object ng laro sa script ng DeployStageOnce, i-drag ang tagahanap ng eroplano doon, at hanapin ang script na ito, piliin ang pagpapaandar ng OnInteractiveHitTest mula sa tuktok ng listahan. Ngayon ang aming pagpapaandar ay tatawagan tuwing mag-click ang gumagamit sa screen!
Hakbang 4: Idagdag Natin ang Kotse
I-download ang libreng modelong 3D na kotse mula dito (Siguraduhing makuha ang bersyon ng.obj):
www.turbosquid.com/3d-models/max-exterior-…
Gayundin, i-download ang tunog na ito dahil i-play namin ito kapag ang kotse ay tumama sa lupa:
freesound.org/people/PaulMorek/sounds/1967…
I-unzip ang parehong mga file na iyon at i-drag ang mga ito sa iyong folder ng mga assets.
Mag-click sa kotse at tumingin sa kanan, baguhin ang Gumamit ng Mga Naka-embed na Materyales upang Gumamit ng Mga Panlabas na Materyales (Legacy) mula sa drop down na menu sa itaas. Ngayon ay mababago namin ang kulay ng lahat ng mga materyales sa kotse.
I-drag ang kotse papunta sa yugto ng iyong eroplano sa lupa na ginagawang isang bata. Palitan ang scale ng.035 sa x, y, at z.
Ngayon dumaan sa bawat isa sa mga kotse na laro ng bata at baguhin ang kanilang mga materyales sa anumang kulay na gusto mo.
Magdagdag ng isang matibay na sangkap ng katawan sa root game object ng kotse at magdagdag din ng isang collider ng kahon, sukatin ito upang takpan nito ang buong kotse. Magdagdag din ng isang collider ng kahon sa yugto ng eroplano sa lupa at sukatin ito kaya't ilang beses na mas malawak kaysa sa yugto ng eroplano sa lupa. Sa ganitong paraan mahuhulog namin ang kotse sa kalangitan at tatama ito sa lupa gamit ang built in na physics engine ng Unity.
Hakbang 5: Ilagay ang Kotse sa Langit
Magdagdag ng isang sangkap ng mapagkukunan ng audio sa bagay ng ugat ng laro ng kotse, i-drag ang tunog ng pag-crash ng kotse sa lugar ng audio clip na ito.
Ngayon kailangan naming gumawa ng isang script na ilalagay ang kotse sa hangin kapag pinindot ng gumagamit ang screen at pagkatapos ay pinapatugtog ang tunog ng pag-crash nang tumama ang kotse sa lupa. Kaya, mag-right click sa folder ng mga assets at lumikha ng isang bagong script na C # at tawagan itong "CarController."
Palitan ang lahat ng code doon ng:
gamit ang System. Collection;
gamit ang System. Collection. Generic; gamit ang UnityEngine; pampublikong klase CarController: MonoBehaviour {pribadong bool soundPlayed = false; // Update ay tinatawag na isang beses bawat frame na walang bisa Update () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} pampublikong walang bisa na MoveCar () {transform.localPosition + = bagong Vector3 (0, 10, 0); transform.eulerAngles + = bagong Vector3 (5, 20, 5); soundPlayed = false; } IEnumerator DelayPlaySound () {magbabalik ng bagong WaitForSeconds (.2f); GetComponent (). Play (); }}
Idagdag ang paggalaw ng MoveCar sa kaganapan ng OnInteractiveHitTest tulad ng larawan sa itaas. Ngayon ay tatawagin ito kapag nag-click ang gumagamit sa screen.
Hakbang 6: Mga Pintuan ng Lambo
Kaya't kung palawakin mo ang object ng laro ng kotse at hanapin ang mga pintuan, mapapansin mo ang parehong mga pinto ay isang solong mata. Kung nais naming buksan ang mga pintuan ang aming pagpipilian lamang ay ang mga pintuan ng Lambo na bukas nang patayo. Upang magawa ang trabahong ito kailangan muna nating baguhin ang kanilang pivot point.
Gumawa ng isang walang laman na object ng laro na isang bata ng kotse. I-drag ang mga pinto at gawin silang isang anak ng bagong object ng laro. Ilipat ang object ng laro ng magulang sa kung saan dapat ang pivot point, sa pamamagitan ng mga bisagra ng pinto. Ngayon ilipat ang mga pinto ng bata pabalik sa lugar. Ngayon kapag pinaikot namin ang mga pintuan ng magulang, ang pivot point ay nasa tamang lugar.
Gagawa kami ng isang script na magbubukas ng mga pintuan kapag malapit ka sa kotse ngunit bago namin gawin iyon kailangan namin ng isang paraan upang "ma-trigger" ang kaganapan. Magdagdag ng isang collider ng kahon sa iyong pinto na bagay ng laro ng magulang at sukatin ito upang dumaan ito ng kaunting paraan sa sasakyan sa magkabilang direksyon. Suriin ang "isTrigger". Magdagdag ngayon ng isang collider ng kahon sa pangunahing camera at sukatin ito nang naaangkop. Suriin din ang "isTrigger". Magdagdag ng isang matibay na sangkap ng Katawan sa iyong camera at alisan ng check ang "useGravity". Sa iyong camera na napili, baguhin ang tag na ito sa "MainCamera" sa tuktok ng inspector.
Magdagdag ng isang bagong script na tinatawag na "LamboDoorBehaviour" at idagdag ang code sa ibaba. I-drag ang script sa magulang ng iyong pintuan.
gamit ang System. Collection;
gamit ang System. Collection. Generic; gamit ang UnityEngine; pampublikong klase LamboDoorBehaviour: MonoBehaviour {pribadong float currAngle = 0; pribadong float naisAngle = 0; // Update ay tinatawag na isang beses bawat frame void Update () {currAngle = Mathf. LerpAngle (currAngle, naisAngle, Time.deltaTime * 3f); transform.localEulerAngles = bagong Vector3 (currAngle, 0, 0); } pampublikong walang bisa OpenDoors () {naisAngle = 60f; } pampublikong walang bisa na CloseDoors () {naisAngle = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}
Ang script na ito ay magdudulot sa iyong mga pintuan ng mabagal na pagbukas kapag malapit mo na ang mga ito sa AR sa pamamagitan ng paggamit ng function na Lerp () sa pagkakaisa na nag-uugnay sa pagitan ng dalawang puntos (o sa kasong ito ng dalawang mga anggulo).
Hakbang 7: Pagpe-play ng Video sa AR
Ang huling bagay na kailangan naming gawin ay ang pag-play ng video sa AR.
Mag-right click sa anumang object ng laro na isang bata ng iyong kotse at lumikha ng isang 3D na object, Quad. Tiyakin nitong ang quad ay isang bata ng iyong sasakyan. Posisyon at baguhin ang laki ng quad na ito na umaangkop sa loob ng dash ng iyong kotse at mukhang naroroon ito. Ito ang ilalabas namin ang video.
Magdagdag ng isang sangkap ng video player sa iyong quad. Baguhin ang mapagkukunan sa URL at hanapin ang isang matapang na link sa isang. MP4 file o i-drag ang isang video file sa iyong folder ng mga assets at pagkatapos ay i-drag ang clip na iyon sa walang laman na puwang. Kung nais mong mag-stream sa isang video mula sa isang URL, ang Instragram ay isang mahusay na mapagkukunan. Mag-right click sa anumang video sa Instagram sa Google Chrome at i-click ang siyasatin. Hanapin ang div na naglalaman ng video at kopyahin ang link mula doon (Mayroon akong pamamaraang ito na nakalarawan sa itaas).
Tiyaking suriin ang loop kung nais mong maglaro ng higit sa isang beses. Magdagdag ng isang sangkap ng mapagkukunan ng audio sa object ng laro na ito at baguhin ang pinagmulan ng output sa mapagkukunan ng audio sa video player. I-drag ang iyong bagong nilikha na mapagkukunan ng audio sa puwang na iyon.
Sa wakas tapos na tayo!
Hakbang 8: Ilagay ang App sa Iyong Telepono
Kung nagtatayo ka para sa Android maaari ka lamang pumunta sa file at ma-hit ang build at tumakbo gamit ang iyong telepono na naka-plug in.
Kung nagtatayo ka sa isang iPhone o at iPad, tiyaking mag-download ng Xcode mula sa app store. Gayundin, mag-sign up para sa isang libreng apple developer account mula sa www.apple.developer.com. Pumunta sa file at pindutin ang build. Buksan ang file na nilikha mula sa Xcode at isaksak ang iyong telepono. Piliin ang iyong koponan sa pag-unlad at pindutin ang pindutan ng pag-play.
Maaaring kailanganin mong ilipat ang camera nang kaunti ngunit bigyan ito ng isang segundo at tapikin ang screen at dapat mong makita ang iyong kotse na mahulog mula sa kalangitan papunta sa lupa! Ngayon ay maaari kang maglakad sa loob at panoorin ang pag-play ng iyong video sa dashboard!
Magsaya at ipaalam sa akin kung mayroon kang anumang mga katanungan sa mga komento!
Inirerekumendang:
Augmented Reality Telepono Gear: 7 Mga Hakbang
Augmented Reality Telepono Gear: Mura, Madali, Cool
Augmented Reality Puzzle: 11 Mga Hakbang
Augmented Reality Puzzle: kamangha-manghang mga laro ng palaisipan. Mayroong mga puzzle ng lahat ng uri, ang tipikal na jigsaw puzzle, ang maze, na may mga token at kahit mga video game ng ganitong uri (halimbawa, Captain Toad). Kinakailangan ng mga larong puzzle ang manlalaro na magdisenyo ng diskarte sa paglutas ng problema.
Arduino Glass - Open Source Augmented Reality Headset: 9 Mga Hakbang (na may Mga Larawan)
Arduino Glass - Open Source Augmented Reality Headset: Naisaalang-alang mo ba ang pagkuha ng isang augmented reality headset? Nagustuhan mo rin ba ang posibilidad na madagdagan ang katotohanan at tiningnan ang tag ng presyo na may nasirang puso? Oo, ako rin! Ngunit hindi ito nakapagpigil doon. Pinatubo ko ang aking tapang at sa halip,
Pag-aayos ng Koneksyon sa Ground Plane: 3 Mga Hakbang
Pag-aayos ng Koneksyon sa Ground Plane: Ano ang magagawa mo kung ang lupa ay hindi konektado sa ground plane? Maaari itong mangyari kung binago mo ang isang circuit sa EagleCAD at tinanggal ang isang segment ng wire (net) sa eskematiko na pupunta sa lupa. Ang software ay maaaring awtomatikong palitan ang pangalan ng iba pang mga dulo ng wi
Ang paglalagay ng mga AR Object sa GPS Coordinates sa Augmented Reality: 8 Hakbang (na may Mga Larawan)
Ang paglalagay ng mga AR Object sa GPS Coordinates sa Augmented Reality: Ang itinuturo na ito ay magtutungo sa paggawa ng isang mobile app para sa paglalagay ng mga AR object sa mga coordinate ng GPS na may ARkit at ARCore gamit ang Unity3D. Dadalhin kita sa pamamagitan ng pagse-set up ng isang proyekto na ginawa ko gamit ang Mapbox na nagpapahintulot sa amin na i-tag ang mga mensahe sa partikular na G