สารบัญ:
- ขั้นตอนที่ 1: อุปสรรค…
- ขั้นตอนที่ 2: เข็มทิศโง่
- ขั้นตอนที่ 3: ในที่สุดก็มีทางออก
- ขั้นตอนที่ 4: ให้แอปทำงาน
- ขั้นตอนที่ 5: กำหนดค่า GameSparks
- ขั้นตอนที่ 6: เพิ่มกิจกรรมสุดท้าย…
- ขั้นตอนที่ 7: เพิ่มรหัสคลาวด์
- ขั้นตอนที่ 8: เสร็จแล้ว
วีดีโอ: การวางวัตถุ AR ที่พิกัด GPS ในความเป็นจริงยิ่ง: 8 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
คำแนะนำนี้กำลังจะไปที่การสร้างแอพมือถือสำหรับวางวัตถุ AR ที่พิกัด GPS ด้วย ARkit และ ARCore โดยใช้ Unity3D ฉันจะแนะนำคุณเกี่ยวกับการตั้งค่าโครงการที่ฉันสร้างโดยใช้ Mapbox ที่ช่วยให้เราสามารถแท็กข้อความที่ตำแหน่ง GPS เฉพาะและเขียนลงในฐานข้อมูล GameSparks
ซอฟต์แวร์และโครงการทั้งหมดที่เราจะใช้ที่นี่ฟรี
ดาวน์โหลด Unity 3D ที่นี่ หากคุณยังไม่มี:
unity3d.com/
ขั้นตอนที่ 1: อุปสรรค…
ดังนั้นนี่ไม่ใช่แอปที่ง่ายที่สุดในการสร้างข้อจำกัดในปัจจุบันของ GPS มือถือและเข็มทิศมือถือ
บอกตามตรงว่าวัตถุต่างๆ ปรากฏขึ้นในตำแหน่งที่ควรจะเป็นประมาณ 50% ของเวลาทั้งหมด ดังนั้นผลลัพธ์จึงไม่ค่อยดีนัก แต่จะแม่นยำยิ่งขึ้นเมื่อคุณเข้าใกล้วัตถุมากขึ้น
ไม่ว่าจะด้วยวิธีใด ฉันคิดว่าวิธีที่ดีกว่าสำหรับ AR ที่ใช้ GPS ณ จุดนี้ ก็คือการใช้แผนที่อย่างโปเกมอนโก และเมื่อคุณเข้าใกล้วัตถุ กล้องจะเปิดขึ้นและคุณจะเห็นเฉพาะวัตถุนั้นตรงหน้าคุณ ในอนาคต ฉันต้องการทำการสอนแบบเต็มรูปแบบเกี่ยวกับการปรับใช้ที่เรียบง่ายกว่านี้
ไม่ว่าในกรณีใดฉันเคยใช้ Mapbox มาก่อนและฉันรู้ว่าพวกเขามีคลาสการแปลงที่มีฟังก์ชันสำหรับการแปลงพิกัด GPS เป็นพิกัดโลกของ Unity ฉันคิดว่าฉันสามารถผ่านพิกัด GPS บางอย่างได้ และพวกมันจะปรากฏในที่ที่ฉันต้องการ ไม่ทำงาน
วัตถุปรากฏขึ้นอย่างถูกต้องสัมพันธ์กัน แต่ไม่เคยอยู่ในตำแหน่งที่ถูกต้อง ดังนั้นฉันจึงทำการค้นคว้าและพบว่า Unity Camera ของฉันจำเป็นต้องปรับให้ตรงกับทิศเหนือจริง เพื่อให้วัตถุปรากฏขึ้นมาถูกที่
ปัญหาคือเข็มทิศในโทรศัพท์ของคุณไม่แม่นยำเลย
ขั้นตอนที่ 2: เข็มทิศโง่
ปัญหาหลักคือเมื่อคุณวางวัตถุให้ห่างจากกล้อง หากโทรศัพท์ของคุณคิดว่าทิศเหนือจริงอยู่นอกเหนือแม้สองสามองศา วัตถุในระยะไกลก็จะปรากฏอยู่ไกลมาก
ฉันเกือบจะล้มเลิกกิจการนี้แล้ว แต่เพื่อนคนหนึ่งบอกฉันเกี่ยวกับโครงการ GitHub นี้:
github.com/mapbox/mapbox-ar-unity
นี่คือความพยายามในการสร้าง AR "ระดับโลก" จาก Mapbox โดยที่วัตถุจะยึดกับพิกัด GPS เพื่อให้ประสบการณ์ Augmented Reality ทำงานภายนอกได้ในระยะทางไกล แทนที่จะอยู่ภายในห้องเล็กๆ ในบ้านของคุณ
โครงการของพวกเขาใช้ AR Position deltas และ GPS Position deltas เพื่อคำนวณมุมซึ่งเป็นการชดเชยจากกล้อง AR ไปเป็นทิศเหนือจริง ดังนั้นโดยพื้นฐานแล้ว ให้อ่านค่า GPS หนึ่งครั้งเมื่อผู้ใช้เริ่มแอปและให้พวกเขาเดินเป็นเส้นตรงและอ่านค่า GPS อีกครั้ง จากนั้นด้วยสองจุดนี้ คุณจะสามารถบอกได้ว่าบุคคลนั้นกำลังเดินไปทางใด (สมมติว่ากล้องของพวกเขาชี้ไปในทิศทางที่พวกเขากำลังเดิน) พวกเขาพบว่าสิ่งนี้แม่นยำกว่าการใช้เข็มทิศในโทรศัพท์
ปัญหาอื่นที่พวกเขาพยายามแก้ไขคือการดริฟท์ด้วย ARkit การติดตามสามารถทำได้ในห้องเล็กๆ แต่เมื่ออยู่ข้างนอกในระยะทางไกล วัตถุ AR จะลอยไปไกลจากที่ที่ควรจะเป็น
ขั้นตอนที่ 3: ในที่สุดก็มีทางออก
ดังนั้นโปรเจ็กต์ Mapbox นี้จึงเสนอวิธีที่จะได้ทิศทางการหันที่เชื่อถือได้ซึ่งสัมพันธ์กับทิศเหนือจริง ดังนั้นสิ่งที่เหลืออยู่ก็คือการวางวัตถุในโลก
ฉันลงเอยด้วยการขยายตัวอย่างนี้เล็กน้อย เพื่อที่ฉันจะได้แท็กข้อความที่ตำแหน่ง GPS หนึ่งๆ แล้วเขียนข้อมูลนั้นลงในฐานข้อมูล GameSparks นั่นคือสิ่งที่ผมจะแสดงให้คุณเห็นถึงวิธีการใช้งาน
ปัญหาเดียวของโครงการนี้คือคุณต้องได้รับการจัดตำแหน่งที่ดีก่อนจึงจะสามารถใช้งานได้
สิ่งที่ฉันหมายถึงโดยการจัดตำแหน่งคือเนื่องจาก Mapbox ใช้เดลตาตำแหน่งในการคำนวณส่วนหัว เมื่อคุณเปิดแอปครั้งแรกและคุณต้องตรวจสอบให้แน่ใจว่ามีการตรวจพบระนาบพื้นแล้วเดินเป็นเส้นตรงชั่วขณะหนึ่งจนกว่าจะมีการคำนวณการจัดตำแหน่งที่เหมาะสม
ในแง่นี้ UX เป็นอุปสรรค์อีกประการหนึ่ง แต่ในการปรับปรุงโปรเจ็กต์ พวกเขาให้ตัวอย่างการวางคิวบ์ไว้ข้างหน้าผู้ใช้เพื่อเดินผ่านเพื่อให้แน่ใจว่ามีการจัดตำแหน่งที่ดี
ตอนนี้เมื่อคุณทราบข้อจำกัดของโปรเจ็กต์นี้แล้ว ให้ฉันแสดงวิธีใช้งานเพื่อให้เพื่อนๆ ได้เล่น ในที่สุดคุณจะต้องสร้างบัญชี mapbox และบัญชี gamesparks ซึ่งทั้งสองบัญชีนั้นฟรี ฉันใช้ gameparks เพื่อที่ฉันจะได้บันทึกพิกัด GPS ไว้ที่ไหนสักแห่ง เพราะในระหว่างการทดสอบ คุณจะต้องรีสตาร์ทและสร้างแอปใหม่ค่อนข้างบ่อย
นอกจากนี้ยังควรใช้งานได้กับทั้ง ARkit และ ARcore แต่ฉันมีเพียง iPhone ในขณะนี้เท่านั้นที่ฉันสามารถทดสอบได้
ขั้นตอนที่ 4: ให้แอปทำงาน
ก่อนอื่นให้ดาวน์โหลดโปรเจ็กต์นี้จาก GitHub:
บันทึกไฟล์ไปที่เดสก์ท็อปของคุณและเปิดขึ้นใน Unity
ไปที่ไฟล์ สร้างการตั้งค่า และเปลี่ยนแพลตฟอร์มของคุณเป็น Android หรือ IOS
ตอนนี้ไปที่ Mapbox.com และสร้างบัญชี หากคุณยังไม่มี
หยิบคีย์ API ของคุณแล้วกลับไปที่ Unity คลิกแท็บ Mapbox ที่ด้านบน แล้วคลิกกำหนดค่า วางคีย์ API ของคุณที่นั่น
ตอนนี้สร้างบัญชีบน GameSparks.com และคลิกที่ปุ่มด้านบนขวาเพื่อสร้างแอปใหม่
เรียกมันว่าอะไรก็ได้ที่คุณต้องการและคัดลอกคีย์ API และความลับของแอป กลับไปที่ Unity แล้วค้นหาแท็บ GameSparks ที่ด้านบน คลิกที่กำหนดค่าและวางข้อมูลประจำตัวของคุณที่นั่นเช่นกัน
ขั้นตอนที่ 5: กำหนดค่า GameSparks
ก่อนที่แอปจะทำงาน เราต้องกำหนดค่าฐานข้อมูลของเรา
GameSparks ใช้ noSQL ดังนั้นเราจึงต้องสร้างคอลเลกชันและเพิ่มเหตุการณ์ที่แอปของเราใช้ในการอ่าน เขียน และลบออกจากเซิร์ฟเวอร์ก่อน
ขั้นแรกให้สร้างคอลเลกชันใหม่บนเว็บไซต์ GameSparks และเรียกมันว่าอะไรก็ได้ที่คุณต้องการ
ตอนนี้เราต้องสร้าง 3 เหตุการณ์
สิ่งแรกที่แอปต้องทำคือเขียนวัตถุข้อความลงในฐานข้อมูล
ข้อความมีละติจูด ลองจิจูด แล้วตามด้วยข้อความของข้อความ
ไปที่ตัวกำหนดค่าและเพิ่มเหตุการณ์ใหม่ สร้างรหัสย่อ "SAVE_GEO_MESSAGE"
ใส่สิ่งที่คุณต้องการสำหรับชื่อและคำอธิบาย
เพิ่มรหัสย่อสำหรับ 3 คุณลักษณะ:
"ลัต" "ลอน"
"ข้อความ"
ตั้งค่าแต่ละประเภทข้อมูลเป็นสตริงและตั้งค่าเริ่มต้นเป็น 0 กำหนดให้ประเภทการรวมเริ่มต้นของแต่ละประเภทเป็น "ใช้ในสคริปต์"
ขั้นตอนที่ 6: เพิ่มกิจกรรมสุดท้าย…
แอปยังต้องโหลดข้อความทั้งหมดจากฐานข้อมูลและอ่านลงใน Unity เมื่อแอปเริ่มทำงาน เพื่อให้เราสามารถวางข้อความ AR ที่จัดเก็บไว้ในฐานข้อมูลได้
สร้างกิจกรรมอื่นและเรียกมันว่า "LOAD_MESSAGE"
เหตุการณ์นี้ไม่ต้องการแอตทริบิวต์ใด ๆ ใส่สิ่งที่คุณต้องการอีกครั้งสำหรับชื่อและคำอธิบาย
ทำสิ่งเดียวกันสำหรับกิจกรรมอื่นและเรียกมันว่า "REMOVE_MESSAGES"
สิ่งนี้ไม่จำเป็นต้องมีคุณลักษณะใด ๆ เช่นกัน
สิ่งสุดท้ายที่เราต้องทำคือเพิ่ม "รหัสระบบคลาวด์" หรือโค้ดฝั่งเซิร์ฟเวอร์ที่เรียกใช้เมื่อแต่ละเหตุการณ์เริ่มต้นจากแอปของเรา
ขั้นตอนที่ 7: เพิ่มรหัสคลาวด์
ใน GameSparks ไปที่ตัวกำหนดค่าและรหัสคลาวด์
เราจำเป็นต้องเพิ่มสคริปต์ในแต่ละเหตุการณ์ที่เราเพิ่งทำ
ในเหตุการณ์ LOAD_MESSAGE ให้เพิ่มรหัสนี้และบันทึก:
var messageData = Spark.runtimeCollection("GeoMessage");
เคอร์เซอร์ var = messageData.find();
var allMessages = ;
ในขณะที่ (เคอร์เซอร์.hasNext ()) {
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;
วาข้อความปัจจุบัน = {
"messLat": messageLat,
"messLon": ข้อความโหลน,
"messText": ข้อความข้อความ,
};
geoMessageList.insert (ข้อความปัจจุบัน);
ขั้นตอนที่ 8: เสร็จแล้ว
โปรเจ็กต์นี้ใช้ ID เฉพาะของอุปกรณ์ของคุณเพื่อตรวจสอบสิทธิ์กับเซิร์ฟเวอร์ GameSparks เพื่อให้คุณสามารถกลับไปที่ Unity แล้วคลิกเล่น และคุณจะเห็นในคอนโซล "อุปกรณ์ตรวจสอบสิทธิ์…"
ตอนนี้ไปที่ไฟล์สร้างการตั้งค่าแล้วคลิกสร้าง หากคุณไม่เคยสร้างแอปสำหรับ Android หรือ IOS คุณอาจต้องตั้งค่าบัญชีการพัฒนากับ Google หรือ Apple
เมื่อแอปอยู่ในโทรศัพท์ของคุณ คุณต้องตรวจสอบให้แน่ใจก่อนว่า ARKit หรือ ARCore ตรวจพบระนาบพื้น ตอนนี้คลิกปุ่มบันทึกที่มุมล่างซ้าย เดินไปข้างหน้าอีกสองสามก้าวแล้วคุณจะเห็น "การจัดตำแหน่งที่คำนวณ" ปรากฏขึ้นเป็นสีฟ้าอ่อน ตอนนี้ปุ่ม UI ควรปรากฏขึ้น และหากมีการโหลดข้อความใด ๆ ในฐานข้อมูลของคุณ ข้อความเหล่านั้นจะถูกนำไปวางไว้ในโลก
ในการแท็กข้อความ GPS AR ใหม่ ให้เดินไปที่ตำแหน่งที่คุณต้องการให้ข้อความอยู่ แล้วคลิกไอคอนข้อความที่ด้านบนขวาของหน้าจอ พิมพ์ข้อความที่ต้องการแล้วคลิกปุ่มปักหมุด!
แนะนำ:
สร้างแผนที่ที่กำหนดเองสำหรับ Garmin GPS ของคุณ: 8 ขั้นตอน (พร้อมรูปภาพ)
สร้างแผนที่ที่กำหนดเองสำหรับ Garmin GPS ของคุณ: หากคุณมี Garmin GPS ที่ออกแบบมาสำหรับการเดินป่าและกิจกรรมกลางแจ้งอื่นๆ (รวมถึงซีรี่ส์ GPSMAP, eTrex, Colorado, Dakota, Oregon และ Montana เป็นต้น) คุณไม่จำเป็นต้องทำ ชำระสำหรับแผนที่เปล่าที่โหลดไว้ล่วงหน้า อี
DIY GPS Tracker --- แอปพลิเคชั่น Python: 5 ขั้นตอน (พร้อมรูปภาพ)
DIY GPS Tracker --- แอปพลิเคชั่น Python: ฉันเข้าร่วมกิจกรรมปั่นจักรยานเมื่อสองสัปดาห์ก่อน เสร็จแล้วก็อยากเช็คเส้นทางและความเร็วที่ขี่ในตอนนั้น น่าเสียดายที่มันไม่ประสบความสำเร็จ ตอนนี้ฉันใช้ ESP32 เพื่อสร้างตัวติดตาม GPS และฉันจะใช้มันเพื่อบันทึกเส้นทางการปั่นจักรยานของฉัน
GPS Cap Data Logger: 7 ขั้นตอน (พร้อมรูปภาพ)
GPS Cap Data Logger: นี่คือโปรเจ็กต์สุดสัปดาห์ที่ยอดเยี่ยม หากคุณชอบการเดินป่าหรือขี่จักรยานเป็นเวลานาน และต้องการเครื่องบันทึกข้อมูล GPS เพื่อติดตามการเดินป่า/การขี่ทั้งหมดของคุณ… เมื่อคุณสร้างเสร็จแล้วและ ดาวน์โหลดข้อมูลจากโมดูล GPS ของ tr
ทุ่นอัจฉริยะ [GPS, Radio (NRF24) และโมดูลการ์ด SD]: 5 ขั้นตอน (พร้อมรูปภาพ)
ทุ่นอัจฉริยะ [GPS, วิทยุ (NRF24) และโมดูลการ์ด SD]: ชุดทุ่นอัจฉริยะนี้แสดงแผนภูมิความพยายาม (ทะเยอทะยาน) ของเราในการสร้างทุ่นทางวิทยาศาสตร์ที่สามารถวัดค่าที่มีความหมายเกี่ยวกับทะเลโดยใช้ผลิตภัณฑ์ที่มีขายทั่วไป นี่คือบทช่วยสอนที่ 2 ใน 4 ข้อ – ตรวจสอบให้แน่ใจว่าคุณได้รับข้อมูลล่าสุด และหากคุณต้องการ
วิธีเชื่อมต่อ DeLorme Earthmate GPS LT-20 กับ Google Earth ของคุณสำหรับแผนที่การติดตาม GPS ที่ยอดเยี่ยม: 5 ขั้นตอน
วิธีเชื่อมต่อ DeLorme Earthmate GPS LT-20 กับ Google Earth ของคุณสำหรับแผนที่การติดตาม GPS ที่ยอดเยี่ยม: ฉันจะแสดงวิธีเชื่อมต่ออุปกรณ์ GPS กับโปรแกรม Google Earth ยอดนิยมโดยไม่ต้องใช้ Google Earth Plus ฉันไม่มีงบประมาณมากดังนั้นฉันสามารถรับประกันได้ว่าจะถูกที่สุด