Я получил матрицу камеры , установив соответствия между 3D-точками в пространстве и 2D-точками на экране (резекция)
Моя пользовательская матрица работает, но я невозможность применить эту матрицу к основной камере Unity так же, как я это делал в другом приложении. Для Unity кажется, что мне нужно разложить свою матрицу, чтобы получить положение, ориентацию, угол обзора и т. Д.
Я видел много тем об использовании пользовательских матриц на основной камере Unity, но во всех случаях они имелиматрица проекции отделена от матрицы модели камеры.
Это математика, лежащая в основе моего процесса получения моей пользовательской матрицы: https://math.stackexchange.com/questions/3388529/resectioning-problem-and-matrix-decomposition-what-am-i-missing>
Здесь я использую одно конкретное приложение (Unity), но я быв любом случае, буду рад разобраться с математикой.
Я сделал набросок Обработки для проверки своего кода, где я могу просто использовать свою пользовательскую матрицу для переопределения матрицы по умолчанию:
pushMatrix();
applyMatrix(customViewProjMatrix);
shape(model3d, 0, 0); //this is what I want to render
popMatrix();
Теперь моя матрица является продуктом матриц Вид и Проекция, поэтому я не смог найти способ использовать это на основной камере Unity, так как мне кажется, что они нужны мне для двух разных вещей.
Тем не менеев Unity, как и в приведенном выше коде, я могу создать несколько строк отладки, создав собственный шейдер.
GL.PushMatrix();
GL.LoadPixelMatrix ();
GL.MultMatrix (customViewProjMatrix);
GL.Color(Color.yellow);
GL.Begin(GL.LINES);
GL.Vertex3 (-5f, 5f, -5f);
GL.Vertex3 (-5f, -5f, -5f);
GL.End();
GL.PopMatrix();
Это просто для проверки моей матрицы, но не влияет на основную камеру, что является моей целью.
Я не могу, если я могу использовать свою матрицу так, как я получаюэто на Unity, так что любые предложения о том, как использовать мою собственную матрицу или другой метод для ее создания для единства будут оценены.