เฟรามเวิร์ก ARKit เป็นแพลตฟอร์มความจริงเสริมของ Apple ที่ช่วยให้นักพัฒนาสร้างแอปพลิเคชัน AR สำหรับ iOS โดยไม่ต้องมีความรู้เลิกลึกด้านคอมพิวเตอร์วิชัน ตามข้อมูลจาก Apple ARKit Documentation, 2025 เฟรามเวิร์กใช้ Visual-Inertial Odometry เพื่อติดตามตำแหน่งของอุปกรณ์ในพื้นที่ได้อย่างแม่นยำโดยไม่ต้องใช้เครื่องหมายภายนอก ความเข้าใจความหมายของฉาก ช่วยให้สามารถระบุระนาบแนวราบแนวนอนและแนวตั้ง กำหนดแสงไฟ้ และวางวัตถุเสมือนในสภาพแวดล้อมจริง
ประเด็นสำคัญ
ARKit เป็นเฟรามเวิร์กความจริงเสริมของ Apple ที่ประกาศในงาน WWDC 2017 พร้อมกับ iOS 11 มันรวมความสามารถของกล้อง, โปรเซสเซอร์การเคลื่อนไหว M-ซีรีส์ และเครื่องคำนวณประสาทของชิป A เพื่อมอบประสบการณ์ AR ที่สมจริงโดยไม่ต้องใช้ฮาร์ดแวร์เฉพาะทาง — แค่ iPhone หรือ iPad
ARKit ใช้ Visual-Inertial Odometry (VIO) ซึ่งรวมข้อมูลจากกล้อง และเซนเซอร์เฉือยเชื่อง Core Motion เพื่อติดตามการเคลื่อนไหวของอุปกรณ์ในพื้นที่ได้อย่างแม่นยำ VIO ช่วยให้เฟรามเวิร์กให้เข้าใจว่าอุปกรณ์อยู่ที่ใดเมื่อทีบเปรียบเทียบกับสภาพแวดล้อมโดยไม่ต้องใช้ GPS หรือเครื่องหมายภายนอก
ตามข้อมูลจาก Apple WWDC 2024 ARKit 6 รองรับบนอุปกรณ์ที่มีชิป A12 ขึ้นไป (iPhone XS, iPad Pro 2018+) จำนวนแอป AR ใน App Store เกิน 15,000 แอป และพื้นที่รวมของระนาบที่ระบุในเซสชัน AR ทั้งหมดเกิน 100 พันล้านตารางเมตร
ตลอดหกรุ่น ARKit ได้รับการปรับปรุงที่สำคัญ: ARKit 1.0 (iOS 11) — การติดตามพื้นฐานและการระบุระนาบระนาบ; ARKit 2.0 — เซสชัน AR ที่แบ่งปันผ่าน ARWorldMap และการตรวจจับวัตถุ 3D; ARKit 3.0 — การติดตามร่างกายมนุษย์ การแยกผู้คน และกล้องหน้าและหลังพร้อมกัน
ARKit 4.0 เปิดตัว เครื่องสแกน LiDAR สำหรับการกำหนดความลึกและการบดบังวัตถุทันที พร้อมทั้ง Location Anchor สำหรับการเชื่อมโยงเนื้อหา AR กับพิกัด GPS ARKit 6 เพิ่มวิดีโอ 4K แบบ HDR, Plane Estimation โดยใช้ LiDAR และการจัดการบดบังที่ดีขึ้น
import ARKit
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal, .vertical]
configuration.environmentTexturing = .automatic
let arView = ARSCNView(frame: view.bounds)
arView.session.run(configuration)
arView.debugOptions = [.showFeaturePoints]
view.addSubview(arView)
ARKit ทำงานผ่านวงโลของเซสชัน AR ซึ่งเริ่มด้วยการกำหนดค่าและวิเคราะห์สตรีมวิดีโอจากกล้องอย่างต่อเนื่อง แต่ละเฟรมเมื่อ เฟรามเวิร์กจะคำนวณตำแหน่งของอุปกรณ์ (6 ระดับอิสระภาพ) อัพเดตแผนที่ของระนาบที่ระบุได้ และปรับตำแหน่งของวัตถุเสมือน — ทั้งหมดที่ 60 เฟรมต่อวินาที
กระบวนการ VIO ประกอบด้วยสองไฟป์ไลน์ขนาน: อะลกอริทึมการวัดระยะทางสายตา ติดตามการเคลื่อนไหวของจุดเฉพาะระหว่างเฟรม ในขณะที่เซนเซอร์เฉือยเชื่อง Core Motion ทำนายการเคลื่อนไหวในช่วงสั้น เมื่อกล้องเคลื่อนที่อย่างรวดเร็วหรือภาพเบลอ การรวมสองวิธีให้ความแม่นยำในการติดตามสูงถึง 1 เซนติเมตร
ตามข้อมูลจาก Apple ARKit ประมวลผลจุดเฉพาะสูงถึง 500 จุดต่อเฟรม และแผนที่สภาพแวดล้อม (ARWorldMap) สามารถมีเส้นผ่านศูนย์ได้ถึง 100 เมตร การสแกนสภาพแวดล้อมและสร้างแผนที่ใช้เวลาประมาณ 2–3 วินาทีหลังเริ่มเซสชัน — ระหว่างนี้ ARKit จะสะสมข้อมูลจากกล้องและเซนเซอร์
ARAnchor เป็นวัตถุสำคัญสำหรับการวางเนื้อหา เมื่อ ARKit ระบุระนาบระนาบ มันจะสร้าง ARPlaneAnchor ที่ระบุตำแหน่ง, ขนาด และทิศทางของพื้นผิว นักพัฒนาตอบสนองต่อดีเลเกต session(_:didAdd:) และวางวัตถุ 3D ในตำแหน่งของระนาบที่ตรวจพบโดยใช้ SceneKit หรือ RealityKit
สำหรับการเพิ่มความสามารถในการ ลาก วัตถุ จะใช้ ARHitTestResult: เมื่อสัมผัสหน้าจอ จะมีการทดสอบแบบ hit-test ผ่านเฟรม ARKit ซึ่งคืนจุดตัดกันของรังสีกับระนาบที่ระบุได้ จุดที่พบจะถูกแปลงเป็น ARAnchor และวัตถุจะถูกยึดไว้ในตำแหน่งนั้น
func renderer(
_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor
) {
guard let planeAnchor = anchor
as? ARPlaneAnchor else { return }
let boxNode = SCNNode(
geometry: SCNBox(
width: planeAnchor.extent.x,
height: 0.01,
length: planeAnchor.extent.z,
chamferRadius: 0
)
)
node.addChildNode(boxNode)
}
ARKit มอบชุดเทคโนโลยีที่ทำให้ความจริงเสริมมีความสมจริงและทำงานได้: การติดตามการเคลื่อนไหวด้วย 6 ระดับอิสระภาพ, ความเข้าใจฉากผ่านการระบุระนาบระนาบและขอบเขต, การประมาณแสงสำหรับการใส่เงาที่ถูกต้อง, การบดบังผู้คน และพื้นผิวสะท้อนแสงโดยอาศัยแผนที่สภาพแวดล้อม
การจับการเคลื่อนไหว (ARKit 3+) — เทคโนโลยีในการติดตามร่างกายมนุษย์แบบรีาลไทมผ่านกล้อง ช่วยให้สามารถเคลื่อนไหวตัวละครด้วยการเคลื่อนไหวของผู้ใช้โดยไม่ต้องใช้เซนเซอร์ภายนอก: ระบุข้อต่อ 18 ข้อง่ายที่ 60 Hz ใช้ในแอฝิตเนส และการสร้างต้นแบบแอนิเมชัน
เซสชัน AR ที่แบ่งปัน (ARKit 2+) ช่วยให้อุปกรณ์หลายเครื่องสามารถเห็นวัตถุเสมือนชนิดเดียวกันในพื้นที่ที่แบ่งปัน ARWorldMap จะบันทึกแผนที่สภาพแวดล้อมซึ่งจะถูกส่งต่อไปยังอุปกรณ์อื่นๆ ผ่านเครือข่าย Apple อ้างตัวอย่างความแม่นยำในการซิงโครไนซ์: iPhone 12 Pro สองเครื่องในห้องเดียวกันเห็นวัตถุโดยมี ความเคลื่อนเพียงไม่เกิน 2 เซนติเมตร
เครื่องสแกน LiDAR ที่ติดตั้งใน iPhone 12 Pro และรุ่นใหม่ขึ้นไป เปลี่ยนแปลงความสามารถของ ARKit อย่างสิ้นเชิง แทนที่จะกำหนดความลึกโดยซอฟต์แวร์ผ่านการวิเคราะห์ภาพ LiDAR จะให้แผนที่ความลึกทันทีด้วยความแม่นยำสูงถึง 3 เซนติเมตรในระยะไกลสูงถึง 5 เมตร ซึ่งช่วยให้ ARKit สามารถระบุระนาบระนาบได้ทันทีโดยไม่ต้องสแกนกล้องล่วงหน้า
ด้วย LiDAR, ARKit สามารถกำหนดการ บดบัง ของวัตถุ: วัตถุเสมือนสามารถซ่อนอยู่หลังเก้าอี้หรือโต๊ะจริง นอกจากนี้ Scene Reconstruction จะสร้างเมช 3D ของสภาพแวดล้อมแบบรีาลไทม์ — มากถึง 10 ล้านโพลีกอนต่อห้อง ใช้สำหรับจำลองฟิสิกส์การชนกันและแสงส่องที่สมจริง
// การกำหนดค่า LiDAR
let lidarConfig = ARWorldTrackingConfiguration()
lidarConfig.planeDetection = [.horizontal]
lidarConfig.sceneReconstruction = .mesh
arView.session.run(lidarConfig)
// การตรวจจับการแตะบนระนาบ
override func touchesBegan(
_ touches: Set<UITouch>,
with event: UIEvent?
) {
let location = touches.first?.location(in: arView)
guard let hitPoint = location else { return }
let results = arView
.raycastQuery(
from: hitPoint,
allowing: .existingPlaneInfinite,
alignment: .horizontal
)
}
การผนวก ARKit เริ่มด้วยข้อกำหนดขั้นต่ำ: Xcode 15+, iOS 17 SDK, อุปกรณ์ที่มีชิป A12 Bionic หรือใหม่กว่า ต้องเพิ่มคีย์ NSCameraUsageDescription ใน Info.plist — ARKit ใช้กล้องสำหรับการติดตามและแสดงฉาก AR หากไม่มีคีย์นี้ แอปจะคราชเมื่อเริ่มเซสชัน AR
สำหรับการเรอร์เดอร์เนื้อหา iOS มีสามเฟรามเวิร์ก: SceneKit สำหรับกราฟิก 3D ระดับความซับซ้อนปานกลาง, RealityKit สำหรับการเรอร์เดอร์แบบสมจริงด้วยวัสดุ PBR และ Metal สำหรับประสิทธิภาพสูงสุด RealityKit เป็นตัวเลือกที่แนะนำสำหรับโปรเจกใหม่ เพราะมันมีการสนับสนุนในตัวสำหรับคุณสมบัติ ARKit, แอนิเมชัน และฟิสิกส์
ตามข้อมูลจาก Apple เวลาโดยเฉลี่ย ในการผนวกหน้าจอ AR พื้นฐานเข้ากับแอปที่มีอยู่แล้วใช้เวลาประมาณ 2 ชั่วโมง สำหรับนักพัฒนา iOS ที่มีประสบการณ์ ปัญหาหลักเกิดขึ้นเมื่อทำงานกับการซ้อนทับองค์ประกอบ UI บนฉาก AR และการจัดการขั้นตอนของเซสชัน AR — สาย, การสลับแอป, หรือการสูญเสียการติดตามในที่แสงน้อย
ARKit อาจสูญเสียการติดตามในหลายสถานการณ์: แสงสว่างไม่เพียงพอ (น้อยกว่า 100 ลักซ์), ขาดจุดเฉพาะ (ผนังสีเดียว), การเคลื่อนไหวกล้องที่รวดเร็ว, หรือสิ่งกีดขววเลนส์ ARSessionDelegate มีเมธอดสำหรับจัดการกับสถานการณ์เหล่านี้ — แนะนำให้แสดงคำแนะนำแก่ผู้ใช้: “เลื่อนอุปกรณ์ช้าลง” หรือ “เปิดแสงไฟ้”
สำหรับการกู้คืนหลังความล้มเหลว ARKit จะเริ่มการ กำหนดตำแหน่งใหม่ โดยอัตโนมัติ — มันจะพยายามจับคู่กระแสวิดีโอปัจจุบันกับแผนที่สภาพแวดล้อมที่บันทึกไว้ หากไม่สามารถกำหนดตำแหน่งใหม่ได้ เซสชันจะเริ่มใหม่ด้วยการกำหนดค่าใหม่ แนะนำให้บันทึก ARWorldMap เมื่อออกจากแอปเพื่อการคืนสภาพฉาก AR ได้อย่างรวดเร็วเมื่อกลับมา
class ARViewController: UIViewController {
let arView = ARSCNView()
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal]
config.frameSemantics = .personSegmentation
arView.session.run(config)
}
func sessionWasInterrupted(
_ session: ARSession
) {
showAlert("เซสชันถูกขัดจังหวาย")
}
}
คำถามที่พบบ่อย
ARKit ทำงานบนอุปกรณ์ Apple ที่มี ชิป A12 Bionic ขึ้นไป: iPhone XS, XR, 11, 12, 13, 14, 15, 16 และ SE (รุ่นที่ 2 และ 3), iPad Pro 2018+, iPad Air 2020+, iPad mini 2021+ สำหรับฟีเจอร์ LiDAR ต้องใช้ iPhone 12 Pro/Pro Max, iPhone 13 Pro/Pro Max, iPhone 14 Pro/Pro Max, iPhone 15 Pro/Pro Max และ iPad Pro 2020+
ได้ ARKit สามารถใช้งานโดยตรงกับ Metal แต่ต้องเขียนเชยเดอร์และการเรอร์เดอร์แบบกำหนดเอง SceneKit และ RealityKit มีโซลูชันที่พร้อมใช้งานโดยมีการผนวก ARKit ในระดับเฟรามเวิร์ก สำหรับมือใหม่ RealityKit เป็นตัวเลือกที่ดีที่สุด เพราะจัดการฟังก์ชัน ARKit โดยอัตโนมัติ
ARKit ประเมิน แสงสว่างฉาก โดยอัตโนมัติผ่านกล้อง และให้ข้อมูลเกี่ยวกับทิศทาง, ความเข้ม และอุณหภูมิของแหล่งกำเนิดแสงผ่าน AREnvironmentProbeAnchor ซึ่งช่วยให้วัตถุเสมือนสามารถทอดเงาได้อย่างถูกต้องและสะท้อนสภาพแวดล้อม สร้างการผสานที่สมจริงกับโลกจริง
ARKit ทำงานเฉพาะบน iOS และใช้ Visual-Inertial Odometry ในการติดตาม ในขณะที่ ARCore ของ Google ทำงานบน Android และใช้ Motion Tracking ของตัวเองโดยอาศัย IMU และกล้อง ARKit มีข้อดีเนื่องจากการผนวกฮาร์ดแวร์กับชิป Apple ในขณะที่ ARCore มอบความสามารถข้ามแพลตฟอร์มผ่าน Cloud Anchors
ได้ ARKit เหมาะสำหรับ เกม AR SceneKit และ RealityKit รองรัฟิซิกส์ (SCNPhysicsBody, PhysicsSimulation), แอนิเมชัน, เสียง และอนุภาค ตัวอย่างที่รู้จักดีได้แก่ Pokémon GO (ใช้เอนจินของตัวเองกับ ARKit), Angry Birds AR และ Lego AR Studio ARKit ยังรองรับเซสชันหลายผู้เล่นผ่าน ARWorldMap
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม