Finding a Surface
In order to find a plane, ARCore searches for a wall, ceiling, or floor by finding several points that are part of the same flat surface.
Show users how to find a surface using their phone. Use illustrations or animations to show users how to scan properly. This can help users understand to hold their phone toward the surface that they’re trying to detect, to move the phone in a clockwise or circular motion, and to search for surfaces that aren’t too dim or too bright.
As users move their phones, give instant feedback to show they’ve successfully detected a surface.
Vertical surfaces can be harder to detect than horizontal surfaces.
Vertical surfaces reflect light, and they’re often painted a single color, both of which can cause detection failures.
ARCore is able to detect vertical surfaces. In certain cases, though, they might take a little longer to locate.
Confirm surface detection
When a user successfully finds a surface, tell them what to do next.
You can give them an object to place, encourage them to explore the space, or something else.
To encourage the user, build their confidence, and reduce frustration:
- Design seamless transitions. When the user moves quickly, ARCore might lose its tracking. Design smooth, subtle transitions between surface finding and detection.
- Aim for visual consistency. The visuals used for instructions, surface detection, and within the experience itself should share a single consistent look. Aim for visual harmony in all parts of your experience.
- Use progressive disclosure. Let users know about changes in system status in a timely and relevant way. Using visual highlighting or displaying text to help communicate that a surface has been successfully detected.
Use surface visualization to help users with object placement
Highlight surfaces that have been detected and are ready for object placement.
Visually highlight only the surface that the user is viewing or pointing at. Avoid highlighting multiple surfaces at once, and create visual distinctions between different planes.
Communicate error states clearly and help users recover quickly
Provide feedback when something has gone wrong, and give the user an actionable path to resolution. Give simple, short tasks. Walk the user through correcting the error state, one step at a time.
Error states can include:
- Trouble detecting a surface
- Trouble scanning a surface
- If the phone isn’t moving to enable detection
- If the user isn’t moving the phone properly to detect surfaces