Вау, действительно потрясающая работа и усилия, демонстрирующие разницу. И что такое действительно удивительный фреймворк ARKit. Вот это да.

бую новый 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 является свойством только для получения.

Мне нужен способ изменить положение объекта AR в пространстве относительно пользователя таким образом, чтобы сохранить восприятие AR без изменений - это означает, что если вы перемещаете свое устройство, объект AR будет двигаться, но также не будет "зависать" «к камере, как будто она просто нарисована, но движется так, как будто вы видите, как кто-то двигается, когда вы проходите мимо - он движется, а вы движетесь, и это выглядит естественно.

Обратите внимание, что область действия этого вопроса касается только того, как перемещать объект в пространстве относительно пользователя (ARAnchor), а не относительно плоскости (ARPlaneAnchor) или другой обнаруженной поверхности (ARHitTestResult).

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос