Я пытаюсь использовать новый ARKit для замены другого подобного решения. Это очень здорово! Но я не могу понять, как программно перемещать ARAnchor. Я хочу медленно перемещать якорь слева от пользователя.
Создание якоря на 2 метра перед пользователем:
var translation = matrix_identity_float4x4
translation.columns.3.z = -2.0
let transform = simd_mul(currentFrame.camera.transform, translation)
let anchor = ARAnchor(transform: transform)
sceneView.session.add(anchor: anchor)
позже, перемещая объект влево/вправо пользователя (по оси x)...
anchor.transform.columns.3.x = anchor.transform.columns.3.x + 0.1
повторяется каждые 50 миллисекунд (или что-то еще).
Вышеприведенное не работает, потому что transform является свойством get-only.
Мне нужен способ изменить положение AR-объекта в пространстве относительно пользователя таким образом, чтобы сохранить AR-образность неповрежденным - это означает, что если вы перемещаете свое устройство, объект AR будет перемещаться, но также не будет "застрять" на фотоаппарате, как будто он просто нарисован, но движется, как будто вы увидите, как человек движется во время ходьбы - они движутся, и вы двигаетесь, и это выглядит естественно.
Обратите внимание, что область действия этого вопроса связана только с тем, как перемещать объект в пространстве по отношению к пользователю (ARAnchor), а не по отношению к плоскости (ARPlaneAnchor) или к другой обнаруженной поверхности (ARHitTestResult).
Спасибо!