Есть ли какой-либо алгоритм для того, чтобы проецировать изображения на неплоскую поверхность?

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

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

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

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

5
задан Community 8 February 2017 в 14:21
поделиться

3 ответа

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

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

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

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

1
ответ дан 15 December 2019 в 00:59
поделиться

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

0
ответ дан 15 December 2019 в 00:59
поделиться

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

3
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: