1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

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

Тема в разделе "3ds max", создана пользователем xim_max, 15 июн 2015.

  1. xim_max

    xim_max Активный участник

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

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.255
    Симпатии:
    173
    Баллы:
    65
    Я не знаю, как это сделать, но для частных случаев можно написать скрипт.
    Пример. Выделяем 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
    
     
    Последнее редактирование: 16 июн 2015
    xim_max нравится это.
  3. xim_max

    xim_max Активный участник

    С нами с:
    07.05.2015
    Сообщения:
    101
    Симпатии:
    1
    Баллы:
    13
    [off]
    мне больше непонятно, зачем это сделано... лишнее.
    вот Игорь, очень уважаю вас, скриптописцев, и ценю ваш труд, спасибо и низкий поклон вам, но уже с корела это совсем не смешно. так в кореле хотя бы скрипты пишут на что-то более-менее сложное, что действительно разрабы в потоке рутины не отследили, но в 3дмаксе -- на самые простейшие вещи.
    тем более сейчас, в учебном классе, я эти скрипты на чужом компе применить не смогу.
    но вот понять, почему нет штатных средств на то или иное элементарное, и в то же время другое элементарное добавляет лишнее -- мозга осилить не хватает. и зла. вспоминается монолог руслана белого про российский автопром, что мол ни один владелец бмв не знает как его машина выглядит снизу. в дтп и сиджи (которые нис по-русски) ситуация обратная. пока русский не напишет к ним кучу скриптов, ничего нормально работать не будет. впрочем, это опять риторика.
    и ещё раз спасибо и низкий поклон.[/off]
     
  4. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.255
    Симпатии:
    173
    Баллы:
    65
    Почему? Кто-то запрещает? Тогда примените его потом на своем компе.
     
  5. xim_max

    xim_max Активный участник

    С нами с:
    07.05.2015
    Сообщения:
    101
    Симпатии:
    1
    Баллы:
    13
    ну это само собой. но так жаждую штатных средств. элементарных. вроде где-то уже писал, что лет 10 назад забросил самоизучение 3дмакса, т.к. долго не мог найти как быстро соединить две точки, а когда наконец нашёл как это делается, понял, что быстро делать это нереально (как минимум, выискивать нужные операторы в простынях командной панели). а я привык работать быстро. за то и ценили.
    за 10 лет по сути ничего не поменялось, но работодатели требуют этот 3дмакс сами не зная зачем, тренд знаете ли )) и приходится мириться и искать окольные пути, хотя все задачи для полиграфии, ожидаемые от 3дМ, с лёгкостью решаются в связке корел-фотошоп (ну либо ил).
     
    Последнее редактирование: 16 июн 2015
  6. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.255
    Симпатии:
    173
    Баллы:
    65
    Объясните как вы быстро соединяете две точки в кореле?
    Вы используете горячие клавишы, чтобы соединить две точки?

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

    AlexHover Активный участник

    С нами с:
    22.03.2015
    Сообщения:
    35
    Симпатии:
    2
    Баллы:
    7
    А какие артефакты возникают? Точка получается одна, и да, она не Corner, но она Bezier Corner, и все выглядит так же как и до.. (галочку объема тыкал разумеется)
     
  8. xim_max

    xim_max Активный участник

    С нами с:
    07.05.2015
    Сообщения:
    101
    Симпатии:
    1
    Баллы:
    13
    странный вопрос. один клик лкм, либо два для извращенцев через пкм )) можно в настройках и шоткат повесить, но мне одного клика на одной всегда видной кнопке вполне достаточно.

    00.jpg

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


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

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

    xim_max Активный участник

    С нами с:
    07.05.2015
    Сообщения:
    101
    Симпатии:
    1
    Баллы:
    13
    Странно, не удалось повторить, т.к. два раза после Weld двух узлов они так и остались corner. Как понять логику, когда узел изменится и в какой режим (точнее, тип его)? И с какой целью это изменение происходит?
     
  10. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.255
    Симпатии:
    173
    Баллы:
    65
    Написал скрипт-макрос, чтобы можно повесить шоткат и создать кнопку на панеле инструментов.
    Запускаем скрипт.
    Меню 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 нравится это.
  11. xim_max

    xim_max Активный участник

    С нами с:
    07.05.2015
    Сообщения:
    101
    Симпатии:
    1
    Баллы:
    13
    [off]
    Игорь, не перестаёшь радовать :)
    Моя подпись — первая в петиции увольнения всех гореразрабов 3дмаха и назначения тебя главным 3дмах-билгейтсом (с тим куком не решился сравнивать)))
    [/off]
     
  12. Boris Kulagin

    Boris Kulagin Мастер

    С нами с:
    01.08.2000
    Сообщения:
    1.396
    Симпатии:
    130
    Баллы:
    232
    про fuse/weld - просто включите automatic welding.

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

    AlexHover Активный участник

    С нами с:
    22.03.2015
    Сообщения:
    35
    Симпатии:
    2
    Баллы:
    7
    Мне интересно увидеть какие завихрения возникают. Просто потому что повторить такого не смог. Узел становится Bezier Corner и выглядит точно также.
     
  14. xim_max

    xim_max Активный участник

    С нами с:
    07.05.2015
    Сообщения:
    101
    Симпатии:
    1
    Баллы:
    13
    зачем? эта команда для создания замкнутых сплайнов, а не для автоматического слияния двух точек уже созданных.
    я так понял касательных и скосов углов? а зачем их копировать и куда потом вставлять?

    Я тоже, но, повторюсь, у меня не получилось, но тему создал когда это увидел у других людей, которые сварили точки, и решил проблему только возвращением корнера.
     
  15. Boris Kulagin

    Boris Kulagin Мастер

    С нами с:
    01.08.2000
    Сообщения:
    1.396
    Симпатии:
    130
    Баллы:
    232
    Правда? Знаете, у вас какое-то свое понимание макса, оригинальное. :)

    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.
     
  16. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.255
    Симпатии:
    173
    Баллы:
    65
    Лучше один раз увидеть, чем сто раз услышать.
    Порог-Threshold измеряется в пикселях экрана, а не в 3D единицах.

     
    xim_max нравится это.
  17. xim_max

    xim_max Активный участник

    С нами с:
    07.05.2015
    Сообщения:
    101
    Симпатии:
    1
    Баллы:
    13
    у меня пока никакого понимания, пока я читаю что пишут в сети (на русском) и по возможности это проверяю. если работает так, как нужно мне, умолкаю и не продолжаю тему.
    спасибо, завтра попробую. но не особо понял зачем 5 сердечек-примеров.
     
  18. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.255
    Симпатии:
    173
    Баллы:
    65
    Для сравнения скорости работы. Не обращайте внимание на количество сердечек-примеров.
     
  19. xim_max

    xim_max Активный участник

    С нами с:
    07.05.2015
    Сообщения:
    101
    Симпатии:
    1
    Баллы:
    13
    Получилось, правда порог в пикселах напрягает, интуитивно не поймешь, сколько изначально выставить. И, если это правда пикселы, то почему можно вводить мантиссу, пиксел врооде не может быть дробным.
    И, коли уж можно оффтопить, то прям здесь ещё один ламерский вопрос: с соединением точек разобрались, а вот как теперь при необходимости разъединить, одну в две? Только рядышком рефайнуть две дополнительные точки и среднюю удалить?
     
  20. Boris Kulagin

    Boris Kulagin Мастер

    С нами с:
    01.08.2000
    Сообщения:
    1.396
    Симпатии:
    130
    Баллы:
    232
    break

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

Поделиться этой страницей