CurvSurf FindSurface™ ARSceneKitDemo for iOS (Swift)
This demo app demonstrates a real-time AR SceneKit application using FindSurface to search point clouds, which ARKit provides, for geometry shapes. The source code of this app is based on the Xcode Augmented Reality (SceneKit, iOS) template project.
Unlike the older version of this demo, you don't need to download or setup the binary path for your project since the library is provided as a Swift package.
This demo app requires the LiDAR sensor to get a point cloud from ARKit.
- Apple iPad Pro LiDAR or newer devices with LiDAR sensor.
- Apple iPhone 12 Pro or newer devices with LiDAR sensor.
- Apple iPhone 12 Pro Max or newer devices with LiDAR sensor.
NOTE: Based on our internal testing, we believe there are at least two practical “generations” of LiDAR depth range across iPhone models. On iPhone 12 Pro, LiDAR depth values were not produced beyond 5 m. On iPhone 16 Pro and iPhone 17 Pro, depth can be observed beyond 5 m, but it still appears to top out at roughly ~10 m.
We suspect a hardware revision introduced this step change at some point, around iPhone 15 Pro, but we have not found an official Apple source that documents the range change or a per-model maximum distance. Please treat these figures as empirical observations under our test conditions rather than guaranteed specifications.
No code changes are required. The app will automatically benefit from the extended depth range on devices that provide it. For best results, validate on the newest hardware available.
Compared to the gui demo, this demo has the following differences:
- Rendering AR objects and animations around detected geometry surfaces;
- The code related to AR object rendering uses SceneKit framework.
The following descriptions start from the lower-left corner of the picture above and proceed counterclockwise.
- Feature types of surfaces to detect (plane/sphere/cylinder only).
- Confidence levels to filter point cloud (e.g., the "
C.Med" option means filtering out the points having "low" confidence). - The opacity of the point cloud and radius indicators.
- Invoke FindSurface to search for geometric surfaces and place a virtual object on the surface if found.
- Remove all the virtual objects
- Radius indicators.
- The seed radius indicator (the white circle) is controlled by pinching the screen.
- The picking radius indicator (the red circle) is controlled by dragging the screen vertically.
- The focusing point (the blue box) indicates the aim of the target object, to choose a seed point.
- 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).
The list of the virtual objects and the places to find them are as follows:
| Geometry | Description |
|---|---|
| Plane (vertical wall) |
A television displaying the camera stream. |
| Plane (horizontal floor) |
CurvSurf's pull-up banner. |
| Plane (horizontal ceiling) |
CurvSurf's round hanging banner. |
| Plane (sloped) |
A directional sign with the CurvSurf logo. |
| Sphere & Cylinder | An animation effect that makes the FindSurface logo go around along the circumference of the surface. |
The original scene


