Სარჩევი:

AR ობიექტების განთავსება GPS კოორდინატებზე დამატებით რეალობაში: 8 ნაბიჯი (სურათებით)
AR ობიექტების განთავსება GPS კოორდინატებზე დამატებით რეალობაში: 8 ნაბიჯი (სურათებით)

ვიდეო: AR ობიექტების განთავსება GPS კოორდინატებზე დამატებით რეალობაში: 8 ნაბიჯი (სურათებით)

ვიდეო: AR ობიექტების განთავსება GPS კოორდინატებზე დამატებით რეალობაში: 8 ნაბიჯი (სურათებით)
ვიდეო: CS50 2014 - Week 10 2024, ივლისი
Anonim
AR ობიექტების განთავსება დამატებით რეალობაში GPS კოორდინატებზე
AR ობიექტების განთავსება დამატებით რეალობაში GPS კოორდინატებზე

ეს ინსტრუქცია გადის მობილური აპლიკაციის შესაქმნელად AR ობიექტების GPS კოორდინატებთან ARkit და ARCore კოორდინატებთან Unity3D გამოყენებით. მე გაგიმხელთ პროექტის შექმნისას, რომელიც მე გავაკეთე Mapbox– ის გამოყენებით, რაც საშუალებას გვაძლევს მონიშნოთ შეტყობინებები GPS– ის კონკრეტულ ადგილას და ჩავწეროთ ისინი GameSparks– ის მონაცემთა ბაზაში.

ყველა პროგრამა და პროექტი, რომელსაც ჩვენ აქ გამოვიყენებთ, უფასოა.

ჩამოტვირთეთ Unity 3D აქ, თუ ის უკვე არ გაქვთ:

unity3d.com/

ნაბიჯი 1: დაბრკოლებები…

დაბრკოლებები…
დაბრკოლებები…

ასე რომ, ეს არ არის ყველაზე მარტივი აპლიკაცია მობილური GPS და მობილური კომპასის ამჟამინდელი შეზღუდვებით.

სიმართლე გითხრათ, ობიექტები გამოჩნდება იქ, სადაც ისინი სავარაუდოდ დროის 50% -ს ითვლიან. ასე რომ, შედეგები არ არის დიდი, მაგრამ ისინი უფრო ზუსტი ხდებიან ობიექტებთან მიახლოებისას.

ასეა თუ ისე, მე ვფიქრობ, რომ GPS– ზე დაფუძნებული AR– ის უკეთესი გზა ამ ეტაპზე იქნება ისეთი რუკის გამოყენება, როგორიც არის pokemon go, და როდესაც მიუახლოვდები ობიექტს, კამერა იხსნება და ხედავ მხოლოდ იმ ობიექტს შენს წინ. მომავალში მსურს გავაკეთო სრული გაკვეთილი მსგავსი მარტივი განხორციელების შესახებ.

ნებისმიერ შემთხვევაში, მე ადრე გამოვიყენე Mapbox და ვიცი, რომ მათ აქვთ კონვერტაციის კლასი, რომელსაც აქვს GPS კოორდინატების Unity მსოფლიო კოორდინატებად გადაქცევის ფუნქციები. ვიფიქრე, რომ მხოლოდ GPS კოორდინატების გადაცემა შემიძლია და ისინი გამოჩნდნენ იქ, სადაც მე მინდოდა. არ მუშაობდა.

საგნები ერთმანეთთან შედარებით სწორად ჩანს, მაგრამ ისინი არასოდეს ყოფილან სწორ ადგილას. ასე რომ, მე ჩავატარე კვლევა და აღმოვაჩინე, რომ ჩემი ერთიანობის კამერა საჭიროებდა ჭეშმარიტ ჩრდილოეთს, რათა ობიექტები გამოჩნდეს სწორ ადგილას.

პრობლემა ის არის, რომ თქვენს ტელეფონში კომპასი არასოდეს არის ზუსტი.

ნაბიჯი 2: სულელური კომპასი

სულელური კომპასი
სულელური კომპასი
სულელური კომპასი
სულელური კომპასი

მთავარი პრობლემა ის არის, როდესაც კამერებს მოშორებით ათავსებთ ობიექტებს, თუკი თქვენი ტელეფონის იდეა ჭეშმარიტი ჩრდილოეთის შესახებ გამორთულია თუნდაც რამდენიმე გრადუსით, მანძილზე არსებული საგნები ძალიან შორს გამოჩნდება.

მე თითქმის უარი ვთქვი ამ წამოწყებაზე, მაგრამ მეგობარმა მითხრა ამ GitHub პროექტის შესახებ:

github.com/mapbox/mapbox-ar-unity

ეს არის მცდელობა, გააკეთოს "მსოფლიო მასშტაბის" AR Mapbox– დან, სადაც ობიექტები მიმაგრებულია GPS კოორდინატებზე ისე, რომ გაძლიერებული რეალობის გამოცდილებამ შეიძლება იმუშაოს გარეთ დიდ მანძილზე, ვიდრე თქვენს სახლში პატარა ოთახში.

მათი პროექტი იყენებს AR პოზიციის დელტას და GPS პოზიციის დელტას, რათა გამოთვალოს კუთხე, რომელიც გადაინაცვლებს AR კამერიდან ჭეშმარიტ ჩრდილოეთამდე. ასე რომ, ძირითადად აიღეთ ერთი GPS კითხვა, როდესაც მომხმარებელი იწყებს აპლიკაციას და მიეცით უფლება გაიარონ სწორი ხაზი და აიღონ სხვა GPS კითხვა. შემდეგ ამ ორი წერტილით შეგიძლიათ თქვათ რომელი მიმართულებით მიდიოდა ის ადამიანი (ვთქვათ, რომ მათი კამერა მიუთითებს იმ მიმართულებით, სადაც ისინი დადიან). მათ აღმოაჩინეს, რომ ეს უფრო ზუსტი იყო, ვიდრე ტელეფონში კომპასის გამოყენება.

სხვა საკითხი, რომლის გადაწყვეტასაც ისინი ცდილობენ არის დრიფტი ARKIT– ით. თვალყურის დევნება კარგია პატარა ოთახის შიგნით, მაგრამ როდესაც გარედან შორ მანძილზე დადიხართ AR ობიექტები მთავრდება იქით, სადაც ისინი უნდა იყვნენ.

ნაბიჯი 3: საბოლოოდ გამოსავალი

საბოლოოდ გამოსავალი!
საბოლოოდ გამოსავალი!

მაპბოქსის ეს პროექტი გვთავაზობს გზას, რათა მივიღოთ საიმედო მიმართულება ჭეშმარიტი ჩრდილოეთის მიმართ, ასე რომ დარჩა მხოლოდ ობიექტების განთავსება მსოფლიოში.

მე დავასრულე ეს მაგალითი ოდნავ, რომ შემეძლოს ტექსტური შეტყობინების მონიშვნა GPS– ის კონკრეტულ ადგილას და შემდეგ დავწერო ეს ინფორმაცია GameSparks– ის მონაცემთა ბაზაში. ეს არის ის, რაც მე ვაპირებ გაჩვენოთ როგორ გამოიყენოთ.

ამ პროექტის ერთადერთი პრობლემა ის არის, რომ თქვენ უნდა მიიღოთ კარგი გასწორება, სანამ ის იქნება გამოყენებული.

გასწორებას ვგულისხმობ იმაში, რომ მას შემდეგ, რაც Mapbox იყენებს პოზიციის დელტებს სათაურის გამოსათვლელად, როდესაც თქვენ პირველად გახსნით აპლიკაციას და თქვენ უნდა დარწმუნდეთ, რომ აღმოჩენილია მიწის სიბრტყე და შემდეგ იარეთ სწორი ხაზით ცოტა ხნით, სანამ არ გამოითვლება სწორი გასწორება.

ამ თვალსაზრისით UX არის კიდევ ერთი დაბრკოლება, მაგრამ პროექტის გაუმჯობესებისას ისინი აძლევენ მაგალითს, თუ როგორ უნდა მოათავსოთ კუბურები მომხმარებლის წინ, რათა გაიარონ კარგი განლაგება.

ახლა, როდესაც თქვენ იცით ამ პროექტის შეზღუდვები, ნება მომეცით გაჩვენოთ როგორ გამოიყენოთ იგი ისე, რომ ბიჭებმა შეძლონ თამაში. საბოლოო ჯამში, თქვენ უნდა შექმნათ mapbox ანგარიში და სათამაშო პარკების ანგარიში, რომლებიც ორივე უფასოა. მე ვიყენებდი თამაშების პარკებს მხოლოდ იმისთვის, რომ შემეძლო GPS კოორდინატების შენახვა სადმე, რადგან ტესტირების დროს თქვენ ხშირად გადატვირთავთ და განაახლებთ აპს.

ასევე, ეს უნდა მუშაობდეს როგორც ARkit- თან, ასევე ARcore– თან, მაგრამ მე მხოლოდ iPhone მაქვს ამ მომენტში, ეს იყო ის, რისი გამოცდაც შემეძლო.

ნაბიჯი 4: მოდით აპლიკაცია მუშაობდეს

მოდით აპლიკაცია იმუშაოს!
მოდით აპლიკაცია იმუშაოს!

პირველ რიგში გადმოწერეთ ეს პროექტი GitHub– დან:

შეინახეთ ფაილი თქვენს სამუშაო მაგიდაზე და გახსენით იგი Unity– ში.

გადადით ფაილზე, შექმენით პარამეტრები და შეცვალეთ თქვენი პლატფორმა ან Android ან IOS.

ახლა გადადით Mapbox.com– ზე და შექმენით ანგარიში, თუ უკვე არ გაქვთ.

აიღეთ თქვენი API გასაღები და დაბრუნდით Unity– ში, დააწკაპუნეთ Mapbox ჩანართზე ზედა და დააწკაპუნეთ კონფიგურაციაზე. ჩასვით თქვენი API გასაღები იქ.

ახლა შექმენით ანგარიში GameSparks.com– ზე და დააწკაპუნეთ ღილაკზე ზედა მარჯვნივ ახალი პროგრამის შესაქმნელად.

დაარქვით მას რაც გინდათ და დააკოპირეთ თქვენი API გასაღები და პროგრამის საიდუმლოება. დაბრუნდით Unity– ში და იპოვეთ GameSparks ჩანართი ზედა ნაწილში. დააწკაპუნეთ კონფიგურაციაზე და ჩასვით თქვენი რწმუნებათა სიგელები იქაც.

ნაბიჯი 5: დააინსტალირეთ GameSparks

GameSparks- ის კონფიგურაცია
GameSparks- ის კონფიგურაცია

სანამ აპლიკაცია იმუშავებს, ჩვენ გვჭირდება მონაცემთა ბაზის კონფიგურაცია.

GameSparks იყენებს noSQL- ს, ასე რომ ჩვენ ჯერ უნდა შევქმნათ კოლექცია და დავამატოთ მოვლენები, რომლებსაც ჩვენი აპლიკაცია იყენებს სერვერიდან წასაკითხად, დასაწერად და წასაშლელად.

ჯერ შექმენით ახალი კოლექცია GameSparks ვებსაიტზე და დაარქვით მას როგორც გინდათ.

ახლა ჩვენ უნდა შევქმნათ 3 ღონისძიება.

პირველი რაც აპლიკაციამ უნდა გააკეთოს არის შეტყობინების ობიექტის ჩაწერა მონაცემთა ბაზაში.

შეტყობინებას აქვს გრძედი, გრძედი და შემდეგ ტექსტი.

ასე რომ, გადადით კონფიგურატორზე და დაამატეთ ახალი მოვლენა. შექმენით მოკლე კოდი "SAVE_GEO_MESSAGE".

ჩაწერეთ რაც გინდათ სახელისა და აღწერისთვის.

დაამატეთ მოკლე კოდი 3 ატრიბუტისთვის:

"LAT" "LON"

"ტექსტი"

დააყენეთ თითოეული მონაცემის ტიპი სტრიქონზე და დააყენეთ ნაგულისხმევი მნიშვნელობა 0. გახადეთ თითოეული მათგანის ნაგულისხმევი აგრეგაციის ტიპი "გამოყენებული სკრიპტში".

ნაბიჯი 6: დაამატეთ საბოლოო მოვლენები…

დაამატეთ საბოლოო ღონისძიებები…
დაამატეთ საბოლოო ღონისძიებები…

აპლიკაციამ ასევე უნდა ჩატვირთოს ყველა შეტყობინება მონაცემთა ბაზიდან და წაიკითხოს ისინი Unity– ში, როდესაც აპლიკაცია დაიწყება, ასე რომ ჩვენ შეგვიძლია მოვათავსოთ AR შეტყობინებები, რომლებიც ინახება მონაცემთა ბაზაში.

შექმენით სხვა ღონისძიება და დაარქვით მას "LOAD_MESSAGE"

ამ მოვლენას არ სჭირდება რაიმე ატრიბუტი. ხელახლა ჩაწერეთ რაც გინდათ სახელისა და აღწერისთვის.

იგივე გააკეთეთ სხვა ღონისძიებისთვის და დაარქვით მას "REMOVE_MESSAGES"

ამას არც რაიმე ატრიბუტი სჭირდება.

ახლა საბოლოო რამ, რაც უნდა გავაკეთოთ, არის დაამატოთ "ღრუბლოვანი კოდი" ან სერვერის კოდი, რომელიც იძახება, როდესაც თითოეული მოვლენა იწყება ჩვენი აპლიკაციიდან.

ნაბიჯი 7: დაამატეთ ღრუბლის კოდი

GameSparks– ში გადადით კონფიგურატორზე და ღრუბლის კოდზე.

ჩვენ უნდა დავამატოთ სკრიპტი თითოეულ მოვლენას, რომელიც ახლახან გავაკეთეთ.

LOAD_MESSAGE ღონისძიებაში დაამატეთ ეს კოდი და შეინახეთ:

var messageData = Spark.runtimeCollection ("GeoMessage");

var კურსორი = messageData.find ();

var allMessages = ;

while (კურსორი. აქვს შემდგომი ()) {

var obj = კურსორი. შემდეგი ();

წაშლა (obj ["_id"]);

allMessages.push (obj);

}

Spark.setScriptData ("all_Messages", allMessages); // დააბრუნე ყველა მონაცემი

REMOVE_MESSAGES ღონისძიებაში დაამატეთ ეს კოდი:

var messageData = Spark.runtimeCollection ("GeoMessage");

messageData.remove ({});

ბოლოს SAVE_MESSAGES ღონისძიებაში დაამატეთ ეს:

var geoMessageList = Spark.runtimeCollection ("GeoMessage");

var messageLat = Spark.getData (). LAT;

var messageLon = Spark.getData (). LON;

var messageText = Spark.getData (). TEXT;

var currentMessage = {

"messLat": messageLat,

"messLon": messageLon,

"messText": messageText,

};

geoMessageList.insert (currentMessage);

ნაბიჯი 8: ჩვენ მზად ვართ

ჩვენ გავაკეთეთ!
ჩვენ გავაკეთეთ!

ეს პროექტი იყენებს თქვენი მოწყობილობის უნიკალურ პირადობის მოწმობას GameSparks სერვერთან ერთად, ასე რომ თქვენ შეგიძლიათ დაუბრუნდეთ Unity– ს და დააწკაპუნოთ თამაშზე, ხოლო კონსოლში უნდა ნახოთ „მოწყობილობა დამოწმებული…“

ახლა გადადით ფაილზე, შექმენით პარამეტრები და დააჭირეთ მშენებლობას. თუ თქვენ არასოდეს შექმენით აპლიკაცია Android ან IOS– ისთვის, შეიძლება დაგჭირდეთ განვითარების ანგარიშის შექმნა Google– ში ან Apple– ში.

მას შემდეგ რაც აპლიკაცია თქვენს ტელეფონზეა, ჯერ უნდა დარწმუნდეთ, რომ ARKit ან ARCore ამოიცნობს მიწის სიბრტყეს. ახლა დააწკაპუნეთ ჟურნალის ღილაკზე ქვედა მარცხენა კუთხეში. გაიარეთ რამდენიმე ნაბიჯი წინ და ნახავთ "გამოთვლილ გასწორებას", რომელიც გამოდის ღია ცისფერში. ახლა უნდა გამოჩნდეს ინტერფეისის ღილაკები და თუ თქვენს მონაცემთა ბაზაში ჩაიტვირთება შეტყობინებები, ისინი განთავსდება მსოფლიოში.

ახალი GPS AR შეტყობინების დასანიშნად სადმე მიდიხართ იმ ადგილას, სადაც გსურთ იყოს შეტყობინება და დააწკაპუნეთ შეტყობინების ხატზე ეკრანის ზედა მარჯვენა კუთხეში. ჩაწერეთ თქვენთვის სასურველი შეტყობინება და დააჭირეთ ღილაკს pin!

გირჩევთ: