PTCInc / vuforia-engine

Bug and feedback issue tracker for the Vuforia Engine SDK
https://developer.vuforia.com
19 stars 0 forks source link

Making the whole Ground Plane underlying "plane" visible #93

Open tsoen opened 4 months ago

tsoen commented 4 months ago

Describe your feature When using the Ground Plane feature, we would like to show directly to the user to whole area available to add objects on it (the plane). For now, the feature only works by doing repeated automatic (or interactive) hit tests on "something", which we assume is a Plane detected by the Vuforia system. Instead of having to perform a hit test at a particular place to know if there is a plane or not, is there a way to directly show / get the coordinates / mesh of the whole plane detected ?

Use-case description The user needs to know in advance where he can place objects or not. Currently, he would have to tap at a random point on the screen so we can then perform a hit test and then give him feedback if there is a plane or not there.

Business impact User experience.

Workaround For now, we are thinking of constantly doing automatic hit tests and saving the coordinates of the successful hits, then constructing the plane ourselves... but this implies the user must move his device around the whole area.

ptc-emaggio commented 4 months ago

if you are using Unity this feature is already available in AR Foundation https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.1/manual/features/plane-detection/arplanemanager.html and Engine can work next to it https://developer.vuforia.com/library/unity-extension/vuforia-engine-and-ar-foundation

would that work for you?

tsoen commented 4 months ago

Hello @ptc-emaggio, Thank you for the suggestion, unfortunately our solution is built for Android and UWP (Windows tablets), which AR Foundation does not support... (we may also have plans for devices such as Hololens and Magic Leap, which is not supported either as stated in https://developer.vuforia.com/library/unity-extension/vuforia-engine-and-ar-foundation).

Also, adding AR Foundation would decrease the quality of the application : "NOTE: Combining Vuforia Engine and AR Foundation in the same scene does add performance overhead and latency. While this is barely noticeable on iOS devices; on Android, this will result in higher latency and less stable tracking of Vuforia targets. In any case, we recommend using Vuforia Engine and AR Foundation together only if capabilities of both are needed. For best performance and lowest latency, use Vuforia Engine without AR Foundation."

ptc-emaggio commented 4 months ago

Doing multiple hit-tests to figure out the plane extent might work on iOS and Android because internally ARKit/ARCore are indeed using an explicit plane estimate. However on UWP, Ground Plane hit-test behavior is significantly different and the workaround might not be viable.

tsoen commented 4 months ago

I have not tested it yet, but how is it different in UWP ? Won't the PlaneFinderBehaviour give us the HitTestResults with the position of the hit ? This should be enough to construct the plane incrementally ?

Do you have any other suggestion to our use-case ?

Regards

ptc-emaggio commented 4 months ago

On UWP the implementation is different from the other platforms and has more limited functionality. On UWP Engine assumes a single infinite horizontal plane. The height of this infinite plane is estimated on the first hit-test but the plane extent is never computed. Any hit test following the first one will always "hit" this infinite plane.

It might be possible to re-estimate the plane height by enabling and disabling the PlaneFinder behavior between hit-tests. However, this might not be practical as some device motion is needed every time to re-triangulate the plane height.