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

Нормальный чамфер

Тема в разделе "MAXScript", создана пользователем kolts, 10 мар 2011.

Модераторы: Savin Denis
  1. kolts

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

    С нами с:
    05.02.2008
    Сообщения:
    448
    Симпатии:
    0
    Баллы:
    17
    Хочу сделать макс скриптом нормальный чамфер с сегментами чтоб при создании были квады. Выкладывайте свои соображения. Вот мои:
    Скрипт делает следующие действия Пока только для двух сегментов. Думаю с вашей помощью или сам сделаю и для большего количества
    1. Делает chamfer выделенным ребрам
    2. Выделяет новые полигоны
    3. Делает им tesselate ,tension 2
    4. В конце имею выделенные крайние ребра чамфера и перпендикулярные им
    Эти перпендикулярные ребра надо убрать.
    Вот сам скрипт:
    a = polyop.getnumfaces $
    polyop.chamferEdges $ (polyop.getEdgeSelection $) 2
    polyop.Setfaceselection $ #{a+1..(polyop.getnumfaces $)}
    $.tessTension = 2
    $.EditablePoly.tessellate #Face
    redrawViews()
    Так вот как убрать эти ребра.
    [​IMG]
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Попробуй так:
    Код:
    if(classof $ == Editable_Poly)then
    (
    a = polyop.getNumFaces $ 
    $.EditablePoly.chamferEdges 2.0
    polyop.SetFaceSelection $ #{a+1..(polyop.getnumfaces $)} 
    $.tessTension = 2 
    $.EditablePoly.tessellate #Face 
    
    fs=polyop.getFaceSelection $; es1=polyop.getEdgeSelection $
    $.ConvertSelection #Face #Edge; es2=polyop.getEdgeSelection $;
    polyop.Setfaceselection $ fs
    $.ConvertSelection #Face #Edge requireAll:true;es3=polyop.getEdgeSelection $;
    polyop.SetEdgeSelection $ (es1-(es2-es3)); 
    
    $.ConvertSelection #Edge #Vertex 
    $.Remove selLevel:#Edge
    $.Remove selLevel:#Vertex
    
    completeRedraw();
    )
     
  3. kolts

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

    С нами с:
    05.02.2008
    Сообщения:
    448
    Симпатии:
    0
    Баллы:
    17
    Пока сделал так
    NumFaces = polyop.getnumfaces $
    rollout QuadChamfer "QuadChamfer" width:102 height:83
    (
    spinner ChamferAmount "" pos:[16,18] width:67 height:16
    button ChamferBtn "Chamfer" pos:[17,44] width:67 height:22
    on ChamferBtn pressed do
    (
    undo "Quad chamfer" on
    (
    polyop.chamferEdges $ (polyop.getEdgeSelection $) ChamferAmount.value
    polyop.Setfaceselection $ #{NumFaces+1..(polyop.getnumfaces $)}
    $.tessTension = ChamferAmount.value
    $.EditablePoly.tessellate #Face
    local A = polyop.getedgeselection $
    setfaceselection $ #{1..NumFaces}
    polyop.setEdgeSelection $ (polyop.getEdgesUsingFace $ (polyop.getFaceSelection $))
    local BB = polyop.getEdgeSelection $
    polyop.setEdgeSelection $ (A - BB)
    C = polyop.getVertsUsingEdge $ (polyop.getEdgeSelection $)
    $.Remove ()
    polyop.setvertSelection $ C
    subobjectlevel = 1
    $.Remove ()
    redrawViews()
    )
    )
    )
    createdialog QuadChamfer

    Буду модифицировать
     
Модераторы: Savin Denis

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