У меня есть веб-камера, указывающая на стол на уклоне, и с ним я отслеживаю маркеры. У меня есть transformMatrix в OpenSceneGraph, и его часть перевода содержит относительные координаты от отслеживаемого объекта к камере. Поскольку камера направлена на уклон, когда я перемещаю маркер по таблице, оси Y и Z обновляются, хотя все, что я хочу обновить, это ось Z, потому что высота маркера не меняет только его расстояние до камера. Это приводит к тому, что когда проектировать модель на маркере в OpenSceneGraph, модель слегка выключена, и когда я перемещаю маркер, значения Y и Z обновляются некорректно.Трансформация координат C++
Итак, я предполагаю, что мне нужна матрица трансформации, с которой я умножаю каждую точку, чтобы у меня была новая система координат, которая лежит ортогонально на поверхности стола. Что-то вроде этого: A * v1 = v2 v1 - это координаты камеры, а v2 - мои «координаты таблицы» Итак, теперь я выбрал 4 балла для «калибровки» моей системы. Поэтому я поместил маркер в верхний левый угол экрана и определил v1 как текущие координаты камеры и v2 как (0,0,0), и я сделал это для 4 разных точек. И затем, беря линейные уравнения, получаемые от наличия неизвестной Матрицы и двух известных векторов, я решил матрицу.
Я думал, что значения, которые я получил бы для матрицы, были бы значениями, необходимыми для умножения координат камеры, чтобы модель правильно обновилась на маркере. Но когда я умножаю известные координаты камеры, которые я собрал раньше, с матрицей, я не получил ничего близкого к тому, что были под мои координаты «таблицы».
Является ли мой aproach совершенно неправым, я просто что-то вложил в уравнения? (решена с помощью wolframalpha.com) Есть ли более простой или лучший способ сделать это? Любая помощь будет принята с благодарностью, как я бы потерял и под какое-то время давление: -/ Спасибо, David
Если это какая-либо помощь, я использую osgART, который объединяет отслеживание ArToolkits и видеоплагин с OpenSceneGraph. – 2009-09-14 12:46:26
Проверьте свою алгебру ... вы, возможно, вычисляете инверсию своего преобразования? – Ryan