iOS и ARKit | Поместите привязку, связанную с положением камеры

В настоящее время я сталкиваюсь со странной проблемой при размещении привязки, связанной с положением камеры.

Мой план состоит в том, чтобы обнаружить QRCode, используя VNDetectBarcodesRequest Vision, и поместить якорь в его положение. Поскольку маркер должен быть размещен на вертикальной поверхности, а тесты ARKit не дадут идеальных результатов, я хочу рассчитать координаты трехмерного мира самостоятельно.

После обнаружения маркера и вычисления координат (относительно камеры) я получаю следующие данные:

ВЕРХНИЙ ЛЕВЫЙ УГОЛ
X: -0.118102
Y: 0,0749305
Z: 0,205272
В ПРАВОМ ВЕРХНЕМ УГЛУ
X: -0,0681018
Y: 0,0733161
Z: 0,205272
ПРАВЫЙ НИЖНИЙ УГОЛ
X: -0,0690218
Y: 0,0254211
Z: 0,205272
НИЖЕ ЛЕВОЙ УГОЛ
X: -0.117036
Y: 0,0267367
Z: 0,205272

Маркер 5 см х 5 см, и вы можете ясно видеть, что ширина видна по разности координаты x угла.

После этого я хочу разместить привязку AR с матрицей преобразования и, следовательно, использовать следующий код с x, y и z из списка выше:

  transformations.append(matrix_identity_float4x4)
  transformations[i].columns.3.x = coordinates[i].x
  transformations[i].columns.3.y = coordinates[i].y
  transformations[i].columns.3.z = -coordinates[i].z
  transformations[i] = camera.transform * transformations[i]

Но когда я сейчас смотрю на вычисленную матрицу преобразования и, в частности, на последний столбец, потому что другие одинаковы для каждого угла, координаты переключаются. Матрицы для верхнего левого и верхнего правого угла имеют почти одинаковое значение x, но различаются по координате y.

Я понятия не имею, откуда это взялось, потому что до расчета это кажется правильным.

Я что-то упустил или в моем коде есть ошибки?

Заранее спасибо!

С уважением
юлианский

0 ответов

Другие вопросы по тегам