AR plane scanning implementation in mobile app

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
AR plane scanning implementation in mobile app
Medium
~2-3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Implementing AR Plane Scanning in Mobile Application

Plane detection — foundation of most AR scenarios: furniture placement, measurements, floor navigation. Without stable plane detection, AR object "floats" and doesn't feel real to user. Basic plane detection is straightforward, but making it feel "stands like real" is not.

Platform APIs and Their Real Limitations

ARKit (iOS). ARWorldTrackingConfiguration with planeDetection: [.horizontal, .vertical]. ARKit returns ARPlaneAnchor with ARPlaneGeometry — plane mesh, which updates as scanning progresses. Problem: first few seconds ARKit returns small rectangle, which aggressively changes size and orientation. Place object immediately — it "jumps" at next update.

Solution — minimum confidence threshold and debounce on updates. ARPlaneAnchor has no explicit confidence field, but plane size (extent) serves as indirect maturity indicator: don't show placement UI until extent.x < 0.3 and extent.z < 0.3 meters.

ARCore (Android). Plane with TrackingState.TRACKING and PlaneType.HORIZONTAL_UPWARD_FACING / VERTICAL. ARCore additionally provides Plane.getSubsumedBy() — when two planes merge. This breaks logic if anchors were tied to original planes — need to transfer Anchor to subsuming plane.

Vertical planes. ARKit reliably detects vertical planes on textured surfaces (wallpapered wall — good, monochrome white wall — bad). ARCore works even less confidently with vertical detection. For products where wall mounting critical (pictures, shelves), better combine plane detection + LiDAR (iPhone 12 Pro+) to reconstruct missing geometry.

LiDAR and Its Impact on Scanning Quality

On LiDAR devices (iPhone 12 Pro, 13 Pro, 14 Pro, 15 Pro, iPad Pro), ARKit builds dense environment mesh via ARMeshAnchor. Plane detection with LiDAR works differently: planes derived from mesh, not from visual SLAM. This gives:

  • Plane detection in 1-2 seconds instead of 5-10
  • Stable boundaries even on monochrome surfaces
  • Correct step, ramp, sloped plane detection

For apps where LiDAR devices are primary audience (professional surveying, repair, construction), switching between ARWorldTrackingConfiguration and config with sceneReconstruction: .mesh yields quality jump.

Visualizing Scan Progress

User doesn't know they need to "move camera" — need clear hint. Typical patterns:

  • Animated scanning beam from bottom of screen
  • Plane outline that "grows" as detection progresses
  • Text instruction with auto-hide after first successful detection

For drawing plane boundaries in RealityKit — ModelEntity with wireframe material tied to PlaneAnchor. In SceneKit — SCNNode with SCNGeometry from ARPlaneGeometry.boundaryVertices. In ARCore Scenekit/Filament — own mesh from Plane.getPolygon().

Typical Production Problems

Plane "breaks" at rapid camera movement — tracking state transitions to LIMITED(.excessiveMotion). Need to block placement and show warning, not crash.

On dark surfaces (dark laminate, black rug) ARKit and ARCore lose features for visual SLAM. Warning via ARCamera.TrackingState.Reason.insufficientFeatures — mandatory to handle and report to user.

Timeline

Basic plane detection with visual hint and object placement — 5-8 days. Refinement for LiDAR, multi-plane selection, ARWorldMap saving — another 5-7 days. Cost depends on target devices and visual complexity.