FindSurface-GUIDemo-iOS (Swift)

CurvSurf FindSurfaceâ„¢ GUIDemo for iOS (Swift)


This demo app demonstrates a real-time application using FindSurface to search point clouds, which ARKit provides, for geometry shapes.

FindSurfaceFramework is required to build the source code into a program. Download the framework here and refer to here for an instruction about how to setup your project to build it with the framework.


This demo app requires the LiDAR sensor to get a point cloud from ARKit.

  • Apple iPad Pro LiDAR
  • Apple iPhone 12 Pro
  • Apple iPhone 12 Pro Max
  • Apple iPhone 13 Pro
  • Apple iPhone 13 Pro Max


Compared to the basic demo, the gui demo has the following features:

  • Real-time detection of surfaces in camera scenes;
  • Using input point cloud data provided by ARKit;
  • Detected surfaces rendered in overlay (AR rendering);
  • GUI interfaces to manipulate the app’s settings (e.g., confidence, smoothed depth, feature types).

User Interface


  1. Feature types of surfaces to detect.
  2. Hide/show the point cloud on the screen.
  3. Confidence levels to filter point cloud (e.g., the “Medium” option means filter out the points having “low” confidence).
  4. Point cloud scanning mode.
    • “Fixed” means that FindSurface takes about 20k points from ARKit as an input for each frame.
    • “Accumulate” means it takes about 500 points from ARKit as an input for each frame and accumulates them into a 500k points-sized buffer in a FIFO manner. The points are not accumulated unless the camera has a movement.
  5. Switch between smoothed scene depths and scene depths (ARKit option).
  6. Enable/disable FindSurface to start searching geometric shapes.
  7. Keep a snapshot of the currently found geometric shape.
  8. Undo the latest snapshot.
  9. Remove all snapshots.
  10. Radius indicators.
    • The seed radius indicator (the white circle), controlled by pinching the screen.
    • The picking radius indicator (the red circle), controlled by dragging the screen vertically.
    • The focusing point (the blue box) indicates the aim to the target object, to choose a seed point.
  11. Points shown on the screen are the visualization of the points provided by ARKit, of which colors indicate confidence levels (green, blue, and red mean high, medium, and low, respectively).

Output Examples

A sphere is detected


Points are hidden


Accumulated points