Масштабирование полигонов в зависимости UV
Я разрабатываю систему декали для игры (наложение рисунка на одежду персонажа) и столкнулся с проблемой. Декалью является участок полигонов от модели одежды. И, алгоритм позволяет масштабировать, перемещать и вращать рисунок по всему участку. Я это делаю, изменяя значения UV координат. И, для того, чтобы не было тайлинга, точки, вышедшие за границы ( > 1.0 или < 0.0) я приравниваю к этим самым границам:
if (uv.u > 1.0f) {
uv.u = 1.0f;
}
else if (uv.u < 0.0f) {
uv.u = 0.0f;
}
if (uv.v > 1.0f) {
uv.v = 1.0f;
}
else if (uv.v < 0.0f) {
uv.v = 0.0f;
}
Это я делаю циклично для каждого вертекса. И, я уже даже вычислил, какие именно вертексы, переходят границы и при этом относятся к полигонам, на которых располагается текстура. Суть проблемы в следующем: при таком приравнивании рисунок искажается на границах. Единственный вариант, который появился у меня в голове - это перемещать эти вертексы для декали в 3D пространстве. Но, проблема в том, что осей-то у нас три, и находиться вертексы могут под разными углами, из-за чего не понятно, для какой из осей делать смещение, исходя из U или V. Ещё может быть такое, что у полигона границы переходят две вершины, и лишь не переходит. Очень надеюсь на вашу помощь, ибо я ума не приложу, как возможно сопоставить эти две вещи. Возможно, я ошибаюсь и существует другой метод. Но, растяжение это происходит на полигонах декали, а потому и думаю, что эти вершины следует как-то сужать.
