Я хотел перевести набор опорных точек на контур в набор соответствующих целевых точек. На каждом контуре имеется всего 8 очков.Выровнять 2 набора трехмерных точек в Unity с помощью метода разложения сингулярных значений (SVD)
Для расчета перевода вектора вращения &, я использую библиотеку Math.Net ЦИФРЫ выполнить расчет SVD - Идея пришла от this URL (стр 3-7):
Но как-то Я заметил, что преобразование, проведенное с использованием результата расчета SVD, кажется неточным. Результат, как показано ниже:
преобразование должно двигаться опорные точки целевых точек как можно ближе, но как было подчеркнуто, она движется далеко от целевой точки.
Кроме того, я также сделал простой тест, по которому я рассчитал центроид для обоих контуров и выполнил вывод: (TargetCentroid - RefCentroid = переводный вектор). Конечный результат преобразования такой же, как и через SVD.
Я сделал что-то не так? Может ли кто-нибудь предложить лучшее решение для преобразования точки ref в целевую точку?
Edit: преобразование 1. одежды от эталонной модели для различных целевых моделей
umm .. просто отрегулируйте ** шкалу ** в инспекторе. если вы прикрепляете маркер к локтю, после настройки ** шкалы **, маркер будет в новом правильном положении. – Fattie
@JoeBlow Это должно выполняться «на лету» во время выполнения. Проблема заключается в том, что все целевые модели масштабируются (0,0,0), несмотря на размер во время импорта. Фитинг не должен быть жестко закодирован, так как размер целевых моделей отличается. – mcmc
Это должно выполняться «на лету» во время выполнения? ** Unity работает во время выполнения **. конечно, просто отрегулируйте «Трансформацию» в чуваке кода. – Fattie