AR Point Cloud questions

Hi!

I would like to ask some questions regarding how AR Point Cloud Manager and Ar Point Cloud work in order to apply to a project i am working on.

I am trying to track the feature points in the point cloud and then use them to place a gameobject in the middle of set points. (this math and logic is done)

What i don’t understand is that the feature point position doesn’t update when i move a real world object around.

  • Isn’t it suppose to track the features of said real-world object and by using the same identifier, update its position?
  • Why are feature points only created when the camera is moving around? Shouldn’t it work either way, and by that i mean, have the camera stationary and move the real-world object around?
  • I read in the documentation that feature point positions are “(…)are provided in point cloud space”, how can i convert them to world-space?

Also, i am not sure if this is a bug but "pointCloudsChanged" event never returns Added or Removed
It always returned Updated, shouldn’t it be returning the other 2 states?

Thank you in advance!!

  • For your first question, you’re probably thinking of object tracking. Point clouds are made with either LIDAR depth scans or “best guess” machine vision. A point doesn’t move once it is scanned.
  • Most devices determine point clouds by comparing image frames to find depth changes. If a camera isn’t moving, this comparison can’t happen. Most AR features work by building up an understanding of the environment, this is accomplished via moving around the device.
  • Point cloud space is generally the same space as XR origin / session space. All you should need to do with a default setup is inverse transform the point’s orientation into world space.

I will look into the “pointCloudsChanged” behavior and see if that’s a bug. What version of Unity and AR Foundation is your project built on?

This behavior is platform-specific. Some platforms may add all points to a single point cloud which would only be added on the first frame of the application and never removed.

Oh i see, so on Android it must ignore those 2 states, thanks!

Some softwares that are on the market have object tracking that work without moving the camera and it detects the object moving, how is that achieved if the point clouds aren’t updated?

I have made an object tracker by implementing my own algorithms and techniques but i rely on the point clouds generated each frame and because at times, the camera isn’t moving, if the object moves on its own, the tracking no longer is aligned correctly.
I know it is now off topic but if anyone could shed some light on how this is done, it would be highly appreciated!