We are using the instant tracking in Unity and find the behavior of the Camera during the initialization phase to be undesirable.
Specifically, the distance of the camera from the origin appears to change non-linearly as the device approaches a view of the horizon.
This behavior makes is difficult to present any other view during initialization.
Is there a way to override the default initialization behavior?
Can you give some insight into the underlying algorithm so that we can have more control over the the tracking initialization?
We've done some investigation and find that the camera is moving to maintain the device height but remain pointed at the origin. This is a reasonable approach for initializing tracking on horizontal surfaces but does not work well when initializing on a vertical surface because the resulting camera distance approaches infinity as the device approaches the horizon. It is unlikely that there is going to be a better solution than placing the origin at the camera center when initializing on horizontal surfaces but it would be useful if developers have some control over the resulting scene scale when pointing the device at vertical surfaces.
Yes, you are correct that the camera behavior is currently designed for tracking on horizontal surfaces. However, we are considering alternative use cases, such as vertical surfaces, or manually setting origin, so we appreciate your feedback very much. In the mean time, you could try working with parent GameObject that you manually set relative to the camera.