Arcore-unity-sdk: Vertical Surfaces (Walls) Detection

Created on 10 Oct 2017  路  13Comments  路  Source: google-ar/arcore-unity-sdk

Hi,

ARCore can effectively detect horizontal surfaces. I was curious to know whether anyone has found a way to detect vertical surfaces. My app is basically trying to detect various walls and augment objects on walls.

Has anyone found any solution?

Thanks.

feature request

Most helpful comment

Hi, Vertical Planes is one of the new features released in ARCore Unity SDK v1.2.0

All 13 comments

This isn't currently supported but it's a feature request we've received from a number of folks. We'll share more if/when we have a robust solution in ARCore.

is there any hacky solution available?

@nathanmartz Has this issue been resolved? I see you also closed the related google-ar/arcore-android-sdk#47 as a dupe of this issue.

You're right, that's confusing. I'll leave it open since this is a common request but not currently supported.

There is actually a hack with very unstable results, but the idea is simple: Regression.
Out of the point cloud, you can pretty much use regression algorithms to see how well can they fit in a plane, Which would lead to not only vertical, but virtually any plane. While this is prone to a huge range of error, the fact that not all points have 100% confidence makes it even worse (And i'm guessing this is probably why it's not a feature in either ARKit nor ARCore for now)

I did an experiment, where I took the closest point to the center of the screen (projected point, that is) and added the few closest points to that center (In world space) to a list and applied ransac plane fitting algorithm to try fit these set of points into a plane. The idea was to find the normal of the point I'm looking at. Obviously this would not work at all when looking at a corner, when the central point has no neighbours, but when looking at a framed image (with good visual features, good amount of points) at the wall, I was able to get a very noisy - yet correct, normal vector. I guess the noise is related to how accurate the cloud point is, the number and distance of points (basically the cluster of points that I chose arbitrarily, where it should have based on a solid clustering algo) and finally, a filter is probably needed to get rid of the noise.

I dropped it because it was an overkill for what I was trying to achieve and simply didn't have to the time to dig in more into the idea, but it's definitely a good first lead.

I hope they are working on it as well as tracking the specific anchors such as printed-images or QR-codes

ARKit now has vertical planes and image tracking. I hope ARCore implements the same.

Would be great! I really need this to detect walls for science projects in architecture & construction.

Is this trouble solved with arcore 2 preview?

I have been able to track the vertical plane and image in arcore 2 preview and current ARKit stable version.
But, I'm sorry. It is difficult to publish the source code.

Instead, I introduce the article and project, these have been the most helpful article and project for vertical planes and image tracking.
(But, written in japanese)

https://qiita.com/rakusan/items/8e3ba031acb31fd7a26c
https://github.com/rakusan/ARKitPlaneDetectionExample

Also, these are implemented by ARKit.
However, you can also get the Cloud Points on ARCore, and after that, do the same things.

Is this solved with ARcore 1.0?

Hi, ARCore 1.0 doesn't support vertical surfaces.

Hi, Vertical Planes is one of the new features released in ARCore Unity SDK v1.2.0

Was this page helpful?
0 / 5 - 0 ratings