Render.ru

Weld без превращения corner-а в bezier или smooth

xim_max

Активный участник
Рейтинг
13
#1
Заметил ещё одну неприятность, и как побороть её опять гугл не подсказывает.
Мало того, чтоб соединить две точки в одну, надо нажать две кнопки -- Fuse и потом Weld (не считая более сложного высчитывания лимита расстояния между точками), так после этого прямые линии становятся кривыми, и ладно ещё углами безье, так только что превратилась в smooth. Но мне в 100 случаях из 100 нужно, чтоб две линии от угла оставались прямыми!
Есть ли способ, чтоб прямые линии оставались прямыми после Weld и не возникало необходимости потом нажимать ещё третью кнопку -- возвращения узлу Corner?
Более того, вижу у менее внимательных соседей по группе, что они не замечают или не понимают что происходит, сварив две точки опорного сплайна, и он визуально остался прямой, а на самом деле уже кривая безье, и например при придании объёма вкладкой Rendering на его месте появляются лишние артефакты -- ребра и завихрения.
Спасибо.
 

igorznag

Мастер
Рейтинг
100
#2
чтоб соединить две точки в одну
не возникало необходимости потом нажимать ещё третью кнопку -- возвращения узлу Corner?
Я не знаю, как это сделать, но для частных случаев можно написать скрипт.
Пример. Выделяем 2 конечные вершины сплайна.
Запускаем скрипт. В новом окне нажимаем кнопку "Collapse".
1.jpg
Код:
try destroydialog igorznag_spline_collapse catch()
rollout igorznag_spline_collapse "Spline"
(
    button btn_collapse "Collapse"; on btn_collapse pressed do undo on
    (
        co=modPanel.getCurrentObject()
        if selection.count==1 and (classof co==SplineShape or classof co==line) then
        (
            s=selection[1]; sel_knots_count=0;sel_knots_open_count=0; sel_knots_open_sp=#()
            for i=1 to (numSplines s) do
            (
                n=numKnots s i; si_sel_verts=getKnotSelection s i
                for j=1 to si_sel_verts.count do
                (
                    if (si_sel_verts[j]==1 or si_sel_verts[j]==n) and (isClosed s i)==false do 
                    (sel_knots_open_count+=1; append sel_knots_open_sp i)
                    sel_knots_count+=1
                )--for j=1 to si_sel_verts.count do
            )--for i=1 to ns do
            if sel_knots_count==2 and sel_knots_open_count==2 then
            (
                weldSpline s 1e9; 
                if sel_knots_open_sp[1]==sel_knots_open_sp[2] then  
                    setKnotType s sel_knots_open_sp[1] 1 #corner
                else     for i=1 to (numSplines s) do
                (
                    si_sel_verts=getKnotSelection s i
                    for j=1 to si_sel_verts.count do setKnotType s i si_sel_verts[j] #corner
                )--for i=1 to (numSplines s) do
                updateshape s; completeredraw();
            )--if sel_knots_count==2 and sel_knots_open_count==2 then
        )--if selection.count==1 and (class
    )--on btn_collapce pressed do
); createdialog igorznag_spline_collapse 70 30
 
Последнее редактирование:

xim_max

Активный участник
Рейтинг
13
#3
[off]
Я не знаю, как это сделать
мне больше непонятно, зачем это сделано... лишнее.
вот Игорь, очень уважаю вас, скриптописцев, и ценю ваш труд, спасибо и низкий поклон вам, но уже с корела это совсем не смешно. так в кореле хотя бы скрипты пишут на что-то более-менее сложное, что действительно разрабы в потоке рутины не отследили, но в 3дмаксе -- на самые простейшие вещи.
тем более сейчас, в учебном классе, я эти скрипты на чужом компе применить не смогу.
но вот понять, почему нет штатных средств на то или иное элементарное, и в то же время другое элементарное добавляет лишнее -- мозга осилить не хватает. и зла. вспоминается монолог руслана белого про российский автопром, что мол ни один владелец бмв не знает как его машина выглядит снизу. в дтп и сиджи (которые нис по-русски) ситуация обратная. пока русский не напишет к ним кучу скриптов, ничего нормально работать не будет. впрочем, это опять риторика.
и ещё раз спасибо и низкий поклон.[/off]
 

xim_max

Активный участник
Рейтинг
13
#5
Тогда примените его потом на своем компе.
ну это само собой. но так жаждую штатных средств. элементарных. вроде где-то уже писал, что лет 10 назад забросил самоизучение 3дмакса, т.к. долго не мог найти как быстро соединить две точки, а когда наконец нашёл как это делается, понял, что быстро делать это нереально (как минимум, выискивать нужные операторы в простынях командной панели). а я привык работать быстро. за то и ценили.
за 10 лет по сути ничего не поменялось, но работодатели требуют этот 3дмакс сами не зная зачем, тренд знаете ли )) и приходится мириться и искать окольные пути, хотя все задачи для полиграфии, ожидаемые от 3дМ, с лёгкостью решаются в связке корел-фотошоп (ну либо ил).
 
Последнее редактирование:

igorznag

Мастер
Рейтинг
100
#6
не мог найти как быстро соединить две точки
Объясните как вы быстро соединяете две точки в кореле?
Вы используете горячие клавишы, чтобы соединить две точки?

В этом видеоуроке, используют 2 способа:
1. Выделяем точку и перемещаем её близко к второй точке.
2. Выделяем две точки и нажимаем кнопку "Соединить два узла".
Вы какой способ используете?
 

AlexHover

Активный участник
Рейтинг
7
#7
А какие артефакты возникают? Точка получается одна, и да, она не Corner, но она Bezier Corner, и все выглядит так же как и до.. (галочку объема тыкал разумеется)
 

xim_max

Активный участник
Рейтинг
13
#8
Объясните как вы быстро соединяете две точки в кореле?
странный вопрос. один клик лкм, либо два для извращенцев через пкм )) можно в настройках и шоткат повесить, но мне одного клика на одной всегда видной кнопке вполне достаточно.

00.jpg

А какие артефакты возникают?
я ж написал
как минимум лишние рёбра по диагонали, а у одной девушки просто несколько полигонов перекрутилось. подошёл, вернул узлу корнер -- и всё исчезло. скрины естественно пока не просите. часа через два буду там, на курсах, попытаюсь повторить и сфотографировать.


UPD
упс :eek: а зачем мне видеоурок по корелу? я в нём более 20 лет профессионально... ещё в 3 начинал (не Х3, а просто 3)), сам кого хочешь ему научу...
ветка-то по 3дмаксу и все вопросы у меня по нему.

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

xim_max

Активный участник
Рейтинг
13
#9
часа через два буду там, на курсах, попытаюсь повторить и сфотографировать.
Странно, не удалось повторить, т.к. два раза после Weld двух узлов они так и остались corner. Как понять логику, когда узел изменится и в какой режим (точнее, тип его)? И с какой целью это изменение происходит?
 

igorznag

Мастер
Рейтинг
100
#10
можно в настройках и шоткат повесить, но мне одного клика на одной всегда видной кнопке вполне достаточно.
Написал скрипт-макрос, чтобы можно повесить шоткат и создать кнопку на панеле инструментов.
Запускаем скрипт.
Меню Customize > Customize UI > Category:"_igorznag" > Создаем кнопку и назначаем шоткат.
Код:
macroScript igorznag_collapse_spline category:"_igorznag" buttonText:"Collapse"
(
    on execute do
    (
        co=modPanel.getCurrentObject()
        if selection.count==1 and (classof co==SplineShape or classof co==line) then
        (
            s=selection[1]; sel_knots_count=0;sel_knots_open_count=0; sel_knots_open_sp=#()
            for i=1 to (numSplines s) do
            (
                n=numKnots s i; si_sel_verts=getKnotSelection s i
                for j=1 to si_sel_verts.count do
                (
                    if (si_sel_verts[j]==1 or si_sel_verts[j]==n) and (isClosed s i)==false do
                    (sel_knots_open_count+=1; append sel_knots_open_sp i)
                    sel_knots_count+=1
                )--for j=1 to si_sel_verts.count do
            )--for i=1 to ns do
            if sel_knots_count==2 and sel_knots_open_count==2 then
            (
                weldSpline s 1e9;
                if sel_knots_open_sp[1]==sel_knots_open_sp[2] then 
                    setKnotType s sel_knots_open_sp[1] 1 #corner
                else     for i=1 to (numSplines s) do
                (
                    si_sel_verts=getKnotSelection s i
                    for j=1 to si_sel_verts.count do setKnotType s i si_sel_verts[j] #corner
                )--for i=1 to (numSplines s) do
                updateshape s; completeredraw();
            )--if sel_knots_count==2 and sel_knots_open_count==2 then
        )--if selection.count==1 and (class
    )--on execute do
)--macroScript igorznag_collapse_spline category:"_igorznag" buttonText:"Collapse"
 

xim_max

Активный участник
Рейтинг
13
#11
[off]
Игорь, не перестаёшь радовать :)
Моя подпись — первая в петиции увольнения всех гореразрабов 3дмаха и назначения тебя главным 3дмах-билгейтсом (с тим куком не решился сравнивать)))
[/off]
 
Рейтинг
280
#12
про fuse/weld - просто включите automatic welding.

Кстати, про корел - есть ли в кореле копи/паст усов, fillet и chamfer?
 

AlexHover

Активный участник
Рейтинг
7
#13
Мне интересно увидеть какие завихрения возникают. Просто потому что повторить такого не смог. Узел становится Bezier Corner и выглядит точно также.
 

xim_max

Активный участник
Рейтинг
13
#14
просто включите automatic welding.
зачем? эта команда для создания замкнутых сплайнов, а не для автоматического слияния двух точек уже созданных.
я так понял касательных и скосов углов? а зачем их копировать и куда потом вставлять?

Мне интересно увидеть какие завихрения возникают.
Я тоже, но, повторюсь, у меня не получилось, но тему создал когда это увидел у других людей, которые сварили точки, и решил проблему только возвращением корнера.
 
Рейтинг
280
#15
зачем? эта команда для создания замкнутых сплайнов, а не для автоматического слияния двух точек уже созданных.
Правда? Знаете, у вас какое-то свое понимание макса, оригинальное. :)

End Point Auto-Welding group
Automatic Welding
When Automatic Welding is turned on, an endpoint vertex that is placed or moved within the threshold distance of another endpoint of the same spline is automatically welded.
 

igorznag

Мастер
Рейтинг
100
#16
зачем? эта команда для создания замкнутых сплайнов, а не для автоматического слияния двух точек уже созданных.
Лучше один раз увидеть, чем сто раз услышать.
Порог-Threshold измеряется в пикселях экрана, а не в 3D единицах.

 

xim_max

Активный участник
Рейтинг
13
#17
у вас какое-то свое понимание макса, оригинальное.
у меня пока никакого понимания, пока я читаю что пишут в сети (на русском) и по возможности это проверяю. если работает так, как нужно мне, умолкаю и не продолжаю тему.
Лучше один раз увидеть, чем сто раз услышать.
спасибо, завтра попробую. но не особо понял зачем 5 сердечек-примеров.
 

xim_max

Активный участник
Рейтинг
13
#19
Получилось, правда порог в пикселах напрягает, интуитивно не поймешь, сколько изначально выставить. И, если это правда пикселы, то почему можно вводить мантиссу, пиксел врооде не может быть дробным.
И, коли уж можно оффтопить, то прям здесь ещё один ламерский вопрос: с соединением точек разобрались, а вот как теперь при необходимости разъединить, одну в две? Только рядышком рефайнуть две дополнительные точки и среднюю удалить?
 
Рейтинг
280
#20
break

off. Вообще, тема сплайнов в максе достаточно неоднозначная, у меня на курсе в группе как правило процентов 30 человеков смотрят на это с унылыми лицами, но их лица просветляются, когда они узнают что есть импорт AI :)
 
Последнее редактирование:
Сверху