Render.ru

Массовое совмещение полигонов в unwrap

Олег Верушкин

Активный участник
Рейтинг
5
#1
Бывают такие ситуации, когда в unwrap работаешь над мелкими конструкциями, для которых предполагается нанести потом одну и ту же текстуру. Пример на картинке.

Здесь требуется совместить все полигоны в одну точку, чтоб он выглядел просто как один единственный прямоугольник. Это ещё часть изображения. Там таких ещё десятки! Возможно ли это как-то сделать быстро? Потому что совмещать их вручную, да ещё чтоб было точно - просто ад.
 

^_^

Знаток
Рейтинг
52
#2
в таких случаях проще делать наоборот - создаёшь модель, делаешь юви, и размножаешь модели (юви будут совпадать)

В проге UVLayout есть возможность, в 3д максе по моему нет.

Ну почему, быстренько подвинул все в одно место, чтоб приблизительно совпадало (с небольшой погрешностью), потом делаешь для каждой точки align verticaly и align horizontaly в quick transform в едиторе. В случае прямоугольных деталей (как у тебя) можно выделять несколько горизонтальных точек жать сравнять по вертикале и наоборот.
 
Рейтинг
82
#3
Если я правильно понял, необходим "Normal Mapping" -например "Box Mapping" или "Diamond Mapping"(или другой) в зависимости от требуемого результата.
 

Вложения

Олег Верушкин

Активный участник
Рейтинг
5
#4
Ну почему, быстренько подвинул все в одно место, чтоб приблизительно совпадало (с небольшой погрешностью), потом делаешь для каждой точки align verticaly и align horizontaly в quick transform в едиторе. В случае прямоугольных деталей (как у тебя) можно выделять несколько горизонтальных точек жать сравнять по вертикале и наоборот.
Попробую!
 

igorznag

Мастер
Рейтинг
103
#5
Здесь требуется совместить все полигоны в одну точку, чтоб он выглядел просто как один единственный прямоугольник.
Объясните подробнее как вы вручную делаете совмещение полигонов.
Возможно ли это как-то сделать быстро?
Попробуйте такой вариант. Пример:
Выделяем один объект с модификатором Unwrap UVW и в окне Edit UVWs выделяем нужные полигоны.
Запускаем скрипт. В новом окне нажимаем кнопку Align.
Код:
rollout test "Align"
(
    radiobuttons rb_size "Size" labels:#("First", "Normalize") pos: [5,5]
    radiobuttons rb_pos "Position" labels:#("Selection center", "Editor center") pos:[5,55]
    button btn_align "Align"
    on btn_align pressed do
    (
        undo on
        (
            m=modpanel.getcurrentobject()
            if classof m==Unwrap_UVW then
                (
                    m.edit();
                    m.setTVSubObjectMode 3
                    m.selectElement()
                    sf_ba=m.getSelectedFaces();
                    sf_ba_init=m.getSelectedFaces();
                    uv_size_x=1; uv_size_y=1; cluster_first=1; uv_pos=m.getSelCenter()
                    for i=1 to 100 do
                        (
                            minx=1e9;miny=1e9;maxx=-1e9;maxy=-1e9
                            if sf_ba.numberset>0 then
                                (
                                    sf_a=sf_ba as array
                                    m.selectFaces #{sf_a[1]}
                                    m.setTVSubObjectMode 3; m.selectElement()
                                    sf_temp=m.getSelectedFaces()
                                    m.setTVSubObjectMode 1; m.GetSelectionFromFace()
                                    sv=m.getSelectedVertices() as array
                                    for v in sv do
                                        (
                                            c=m.getVertexPosition slidertime v
                                            if c[1]<minx then minx=c[1]; if c[1]>maxx then maxx=c[1]
                                            if c[2]<miny then miny=c[2]; if c[2]>maxy then maxy=c[2]
                                        )
                                    cluster_size_x=maxx-minx; cluster_size_y=maxy-miny
                                    if cluster_first==1 and rb_size.state==1 then
                                        (uv_size_x=cluster_size_x; uv_size_y=cluster_size_y;cluster_first=0)
                                    m.scaleSelectedXY (1.0*uv_size_x/cluster_size_x) (1.0*uv_size_y/cluster_size_y) [0,0,0]
                                    if rb_pos.state==2 then uv_pos=0.5
                                    m.moveSelected (-m.getSelCenter()+uv_pos)
                                    sf_ba-=sf_temp
                                )--if sf_ba.numberset>0 then
                        )--or i=1 to 100 do
                    m.setTVSubObjectMode 3; m.selectFaces sf_ba_init
                )
        )--undo on
    )--    on btn_align pressed do
); createdialog test 110 135 style:#(#style_minimizebox,#style_titlebar,#style_sysmenu)
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
 

INCUS

Знаток
Рейтинг
29
#6
С разрешения автора темы, напишу здесь, потому как сейчас буду заниматься развёрткой похожих объектов. Хочу поговорить про Stitch. Как известно это работает только с одним выделенным ребром.Если выделить сразу несколько, то Stitсh всё равно притянет нужный кластер только к одному из рёбер. Так вот вопрос, можно ли как-то реализовать в Максе массовый Stitch ?
Например, есть цветок ромашка. Все лепестки в редакторе развёртки расположены по отдельности от круглой сердцевины. Возможно ли, что бы я выделив Border кластера сердцевины(я уже нашёл возможность такой команды, клавиша 8), и нажать "СуперПупер Stitch", который притянет к выделенным рёбрам сразу все лепестки ромашки?
 

igorznag

Мастер
Рейтинг
103
#8
Возможно ли, что бы я выделив Border кластера сердцевины(я уже нашёл возможность такой команды, клавиша 8), и нажать "СуперПупер Stitch", который притянет к выделенным рёбрам сразу все лепестки ромашки?
Можно выделить полигоны-face вместо Border кластера сердцевины?
Если да, тогда "общие" ребра-edge сердцевины и лепестков имеют одинаковую длину?
Если да, тогда попробуйте такой вариант. Пример:
Выделяем один объект с модификатором Unwrap UVW.
В окне Edit UVWs выделяем полигоны сердцевины.
Запускаем скрипт. В новом окне нажимаем кнопку Stitch.
Код:
try(destroyDialog igorznag_stitch)catch()
rollout igorznag_stitch "Stitch"
(
button btn_stitch "Stitch"; width:70 on btn_stitch pressed do
(
if subobjectlevel==3 then
(
co=modpanel.getCurrentObject()
if classof co==Unwrap_UVW then
(
subobjectlevel=1; co.faceToVertSelect()
for i=1 to ((co.getSelectedVertices()).numberset) do
(co.faceToVertSelect(); co.stitchVerts true 0)
subobjectlevel=3
)--if classof co==Unwrap_UVW then
)--if subobjectlevel==3 then
)-- on btn_stitch pressed do
); createdialog igorznag_stitch 80 30
 

INCUS

Знаток
Рейтинг
29
#9
Игорь.
Очень даже не плохо работает.
Спасибо.
1) Если ещё допилишь Undo, что бы не нужно было быть таким настойчивым для полной отмены операции.
2) Если каждый притягиваемый "лепесток" автоматом будет масштабироваться соответственно ребру, выделенного полигона, которое притягивает лепесток.
3) То !!! Закину денег. Кошелёк я твой знаю, от меня не спрячешься)))
 

igorznag

Мастер
Рейтинг
103
#11
Игорь.
Очень даже не плохо работает.
Спасибо.
1) Если ещё допилишь Undo, что бы не нужно было быть таким настойчивым для полной отмены операции.
2) Если каждый притягиваемый "лепесток" автоматом будет масштабироваться соответственно ребру, выделенного полигона, которое притягивает лепесток.
Теперь Undo работает. Добавил Scale. Время вычислений увеличилось.
Хотел добавить другие возможности, но Unwrap как всегда тормозит.

Если работает неплохо, тогда попробуйте очередной вариант скрипта:
Выделяем один объект с модификатором Unwrap UVW.
В окне Edit UVWs выделяем Edge-Border сердцевины.
Запускаем скрипт. В новом окне нажимаем кнопку Stitch.
3) То !!! Закину денег. Кошелёк я твой знаю, от меня не спрячешься)))
Для вас не подходит Multi Stitch в скрипте PolyUnwrapper или опять проблемы с процедурой покупки?
 

Вложения

INCUS

Знаток
Рейтинг
29
#12
Работает нормально. Теперь у меня более гибкий инструмент. Спасибо.
Проблем с процедурами тоже нет.
Только что отправил деньго. Ура.
 

^_^

Знаток
Рейтинг
52
#13
Сколько денег если не секрет?
Интересно как цениться написание скриптов.
 
Сверху