Вписываем UV-развертку в границы области UV

Для того чтобы быстро вписать всю UV-развертку, или отдельный выделенный остров, в границы области UV при помощи Blender Python API можно сделать несложный скрипт.

Добавим в сцену куб, сделаем для него развертку и случайным образом сдвинем и отмасштабируем ее. Теперь нам нужно вписать ее в границы UV-области, т.е. сделать так, чтобы координаты всех точек развертки лежали в пределах от 0.0 до 1.0 по осям X и Y.

Работать с координатами развертки нужно из объектного режима.

Получим указатель на текущий активный слой UV-развертки.

И отфильтруем только выделенные точки.

Мы можем получить координаты всех выделенных точек развертки через их свойство “uv”.

Для начала сдвинем все выделенные точки до левой и нижней границ UV-области.

Для этого нам нужно найти точки с минимальными координатами по X и Y осям.

И вычесть найденные значения из координат каждой выделенной точки. Это сдвинет их все до упора вниз и влево в области UV.

Теперь нам нужно растянуть развертку вправо и вверх так, чтобы хотя бы по одной оси (X или Y) развертка занимала всю область UV.

Найдем теперь точки с максимальными координатами по этим осям.

Чтобы развертка растянулась так, чтобы занимать область от 0.0 до 1.0 по каждой оси, нам нужно умножить координаты всех точек на отношение 1 к текущей максимальной координате.

Остается произвести умножение.

Однако если мы это сделаем так,  развертка будет искажена.

Если мы хотим избежать искажения развертки, нам нужно умножать координаты точек на минимальное из двух значений по X и Y осям.

И вот теперь мы можем произвести умножение.

Вернувшись в режим редактирования меша,

мы увидим, что теперь развертка, или ее выделенная часть, четко вписана в область UV с координатами от 0.0 до 1.0.

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии