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.
Я понятия не имею, откуда это взялось, потому что до расчета это кажется правильным.
Я что-то упустил или в моем коде есть ошибки?
Заранее спасибо!
С уважением
юлианский