Как просто вычислить компас для размещения объекта на севере с помощью ARCore - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь разместить виртуальный объект в 2 метрах от устройства в северном направлении, используя значение компаса, но мне не удается получить фиксированную точку в пространстве.

Объект скользит, когда я поворачиваю устройство вокруг оси Y. Например, когда я поворачиваюсь влево, объект практически вращается в противоположном направлении, он появится на экране слева и исчезнет справа.

Я использую C # Xamarin Android, Huawei P20 Pro, и я попробовал много предложений из того, что Google показал мне для проблемы северной арки.

Я чувствую, что что-то упустил в своей ротационной работе, но я просто не могу его найти ...

Я откатился до самого простого теста:

if (camera.TrackingState == TrackingState.Tracking)
{
    // Calculate difference angle from magnetic north
    Quaternion qr = Quaternion.CreateFromAxisAngle(Vector3.UnitY, (float) toRadian(angleFromNorth));

    // Clear anchor
    mAnchors.Clear();

    // Position relative to phone only with compass value rotation
    Vector3 posObject = Vector3.Transform(new Vector3(0, 0, -2), qr);
    Pose pos = Pose.MakeTranslation(posObject.X, 0, posObject.Z);

    // Add anchor
    Anchor anchor = mSession.CreateAnchor(pos);
    mAnchors.Add(anchor);
}
...