Render.ru

Быстрое копирование координат вертексов

Bender Bending

Активный участник
Рейтинг
5
#1
Накопилось несколько вопросов
1 Вот тут подумал, бывают такие случаи когда надо скопировать координаты одной точки и присвоить другой.
Нашел скрипт CopyPasteAdv который обеспечивает эти функции, но он к сожалению для 6 версии а я работаю в 2010 максе. Кто знает можно ли этот скрипт как то адаптировать под новую версию макса. Или же есть более простые способы решения проблемы.

2 Можно ли убрать Application Button и вообще Caption Bar полностью.

3 Можно ли сделать вертикальный тулбар так что бы кнопки располагались в 2 ряда а не в один

Заранее спасибо
 

GoodMan

Мастер
Рейтинг
260
#2
1. Скрипты как правило не зависят от версии МАХ-а. Т.е. у них полная прямая совместимость.. Ну за исключением случаев использования сторонних или очень специфических функций - которые могут меняться от версии к версии..
К тому же я не припомню сильных различий в базовых классах и соотв. им функциях 6-го и 12-го МАХ-ов..
 

Bender Bending

Активный участник
Рейтинг
5
#3
GoodMan
Да понятно но в данном случае не пашет совсем, выкидывает ошибку при попытке скопировать координаты.
Может кто знающий подправит? Вот ссылка:
http://www.3dtrue.com/max/20.html
 

kolts

Активный участник
Рейтинг
16
#4
Полезный скрипт кстати часто приходится копировать координаты особенно при риггинге
 

GoodMan

Мастер
Рейтинг
260
#5
Какую ошибку пишет?
У меня все работает нормально в МАХ-2010.. За исключением того что скрипт немного не доделан. В частности странно что не используется функция <update> для перерисовки меша после изменения координат вертексов.. Хотя кто знает - может её ещё не было когда писался скрипт..

В остальном скрипт полностью рабочий. Конечно при условии что ты знаешь чем отличается mesh от poly.. Т.к. с поли-объектами он не работает (<polyOPS.> оператора тогда ещё наверное небыло, или автор поленился сделать скрипт универсальным для объектов разных классов <mesh> и <poly>)
 

Bender Bending

Активный участник
Рейтинг
5
#6
Вот блин облом, я чего-то на эту немаловажную деталь внимания и не обратил. Действительно с мешами работает а с поликами нет. Только учитывая что работать приходится с полигонами, этот скрипт бесполезен
 

GoodMan

Мастер
Рейтинг
260
#7
ну да..

Можно в принципе переделать и под poly - заменив все соотв. операторы..
А можно и конвертировать туда-сюда - геометрия должна сохраняться..
 

kolts

Активный участник
Рейтинг
16
#8
Для костей частенько приходится применять тоже, я смотрел этот скрипт не думал что там все так сложно. Мне казалось, что должно быть полегче.
 

GoodMan

Мастер
Рейтинг
260
#9
Как раз сложного там ничего и нет.. :)

Просто он написан для mesh, а уже позже стали появляться полигоны в МАХ-е. Теперь мешами никто не пользуется.. Хотя они бывает и быстрее чем поли обсчитываются в определенных модификаторах (например в физике).. По крайней мере мне так кажется..

К тому-же поли в МАХ-е тоже не совсем настоящие, т.е. они не такие как у программ специально предназначенных для моделинга только полигонами, и программ которые собственно зародили концепцию полигонов типа: Mirai и Nendo
 

Bender Bending

Активный участник
Рейтинг
5
#10
Ну конвертация туда сюда это абсолютно не серьезно. А вот по поводу заменить операторы это уже более реально.
 

kolts

Активный участник
Рейтинг
16
#11
Да я напутал я думал он просто копирует координаты объекта что на самом деле очень легко
 

Bender Bending

Активный участник
Рейтинг
5
#12
Усе нашел похожий скрипт только для полимешей кому интересно вот ссылка
http://www.rubengarza.com/maxscript-S02-VertTool.htm
 

GoodMan

Мастер
Рейтинг
260
#13
Такую тулзу можно написать за 5 мин.
На "экспортный вариант" с красивыми менюшками UI уйдет не больше часа..

Учите скрипты - это не так сложно как выглядит на первый взгляд..
 

kolts

Активный участник
Рейтинг
16
#14
Увидел там chamfer и пришло на ум что можно сделать вместо caddy старые менюшки :)
 

Shanaya

Пользователь сайта
Рейтинг
2
#15
Побуду некропостером)
Скрипт выше юзала, он прекрасен, но интересно, есть ли где скрипт, который копирует координаты не одного вертекса, а нескольких выделенных? И может скопировать эти координаты вертексам другого объекта, при условии, что индексы вертексов у этих объектов совпадают? Например, такую штуку удобно было бы применять в морфинге, но почему-то такого найти я не смогла, видимо, реализовать это не так просто, как мне думалось :).
В максе я ещё новичок, а программированием в последний раз занималась ещё в универе, и благополучно всё забыла. Попытаюсь сама реализовать нечто подобное, но если такое уже есть, то зачем страдать?) Может, кто сталкивался?
 

igorznag

Мастер
Рейтинг
103
#16
скрипт, который копирует координаты не одного вертекса, а нескольких выделенных? И может скопировать эти координаты вертексам другого объекта, при условии, что индексы вертексов у этих объектов совпадают?
Пример для базового объекта Editable Poly:
Код:
try destroydialog test catch(); rollout test "Test"
(
    button btn_copy "Copy" pos:[5,5] width:50
    button btn_paste "Paste" pos:[60,5] width:50
    local verts_coord=#()
    on btn_copy pressed do
    (
        if selection.count==1 then
        (
            obj=selection[1]
            co=modpanel.getCurrentObject()
            if classof co==Editable_Poly then
            (
                vs=(polyop.getVertSelection co) as array; verts_coord=#()
                for v in vs where not (polyop.isVertDead co v) do
                (
                    v_coord=polyop.getVert co v node:obj
                    append verts_coord #(v,v_coord)
                )--for v in vs where not (polyop.isVertDead co v) do
            )--if classof co==Editable_Poly then
        )--if selection.count ==1 then  
    )--    on btn_copy pressed do
  
    on btn_paste pressed do
    (
        undo on
        (  
            if selection.count==1 then
            (
                obj=selection[1]
                co=modpanel.getCurrentObject()
                if classof co==Editable_Poly then
                (
                    n=polyop.getNumVerts co
                    for v=1 to n where not (polyop.isVertDead co v) do
                    (
                        for vc in verts_coord where v==vc[1] do
                        (
                            polyop.setVert co v vc[2]  node:obj
                        )--for vc in verts_coord where v==vc[1] do
                    )--for v in vs where not (polyop.isVertDead co v) do
                )--if classof co==Editable_Poly then
            )--if selection.count ==1 then  
        )--undo on
    )--    on btn_paste pressed do
  
);createdialog test 120 30
 
Сверху