Есть ли алгоритм проецирования изображений на неплоскую поверхность? - PullRequest
5 голосов
/ 18 февраля 2010

Есть ли алгоритм проецирования изображений на неплоскую (деформированную) поверхность?

Не слишком сильно деформируется. Это действительно стеклянная поверхность, покрытая высококачественной, прочной калькой. У меня есть трехмерная модель этого. Как я могу текстурировать это с проектором? projection

Я хочу написать программу на C \ C ++ \ C # для Windows, которая могла бы текстурировать любую поверхность, заданную трехмерной моделью, с помощью проектора.

Мне нужен алгоритм или библиотеки с открытым исходным кодом, содержащие алгоритмы.

Ответы [ 3 ]

3 голосов
/ 18 февраля 2010

Да, есть алгоритм. Если вы действительно не захотите реализовать это самостоятельно, вероятно, вам будет легче позволить существующей реализации 3D-графики выполнить работу - и OpenGL, и DirectX позволят вам применить текстуру к поверхности 3D модель. В руководствах NeHe приведен пример базовой идеи с использованием OpenGL.

1 голос
/ 18 февраля 2010

Не совсем понятно, какой алгоритм будет использовать стандартная библиотека текстурирования, и, вероятно, это не является истинной проекцией, поэтому, если важна точность, вам нужно сделать это самостоятельно (или исследовать, какие конкретные алгоритмы используются для данной библиотеки).

Основной алгоритм прост. В основном вам просто нужно найти, где линия, выходящая из вашей точки проекции, пересекает вашу поверхность. Более подробно:

  1. Определитесь с точкой проекции
  2. Выберите ряд линий, исходящих из вашей точки проекции, которые дадут вам необходимое разрешение на искривленной поверхности
  3. Определите, где эти линии пересекают вашу поверхность (точный метод будет зависеть от вашего представления поверхности)
  4. Предположим, что ваше плоское изображение находится где-то между точкой проекции и искривленной поверхностью, найдите пересечение линии с плоской поверхностью и присвойте это значение местоположению на искривленной поверхности.

С другой стороны, если ваша поверхность описана математически, для этого может быть простое уравнение, как, например, если вы отображали плоскость на сферу.

0 голосов
/ 19 февраля 2010

Это называется коррекцией искажения изображения.

...