Нахождение изокривой из триангуляции с известным uv во всех вершинах

У меня есть трехмерная триангулированная сетка, которая похожа на изогнутый лист бумаги тем, что имеет 4 ребра и живет в трехмерном пространстве. Края могут быть разной длины и изгибаться по-разному, но теоретически их можно постоянно трансформировать, чтобы они выглядели как лист бумаги. Координата uv была назначена каждой вершине, а диапазон значений u и v находится в диапазоне от 0 до 1. Некоторые вершины явно находятся на границе. Для нижней границы u находится в диапазоне [0,1], а v равно 0. Вершины верхней границы имеют u в пределах [0,1] и v = 1. Левая и правая границы имеют u = 0 или u = 1 (соответственно ) с v в пределах [0,1].

Теперь подумайте об «изокривой», где u = 0,5. Это будет «линия» (или набор отрезков?) снизу вверх от «середины» поверхности. Как мне это найти?

Или, скажем, я хотел найти 3D-координату, соответствующую uv-координате (0,2,0,7). Как бы я туда попал?

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


person PeteUK    schedule 16.05.2014    source источник


Ответы (1)


По сути, оба ваших вопроса сводятся к одному и тому же: как преобразовать координаты UV и XYZ.

Это проблема интерполяции. Рассматривая один треугольник в вашей сетке, вы знаете координаты UV и XYZ в трех вершинах. Таким образом, у вас есть нужный объем данных для интерполяции X, Y, Z как линейных функций U, V:

X(U,V) = a0 + a1*U + a2*V
Y(U,V) = b0 + b1*U + b2*V
Z(U,V) = c0 + c1*U + c2*V

Затем возникает проблема, как определить коэффициенты ai,bi,ci. Это можно сделать, решив набор линейных уравнений на основе заданных данных вершины. Например, коэффициенты X для данного треугольника можно найти, решив:

[X1]   [1 U1 V1]   [a0]
[X2] = [1 U2 V2] * [a1]
[X3]   [1 U3 V3]   [a2]

Когда у вас есть все эти коэффициенты для каждого треугольника в сетке, вы можете определить координату XYZ для любой пары UV:

1. Locate the triangle that contains the UV point.
2. Evaluate the X(U,V),Y(U,V),Z(U,V) functions for the given triangle.
person Darren Engwirda    schedule 16.05.2014
comment
Спасибо за ваш ответ. Точно. - person PeteUK; 19.05.2014