Render.ru

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

kolts

Активный участник
Рейтинг
16
#1
Хочу сделать макс скриптом нормальный чамфер с сегментами чтоб при создании были квады. Выкладывайте свои соображения. Вот мои:
Скрипт делает следующие действия Пока только для двух сегментов. Думаю с вашей помощью или сам сделаю и для большего количества
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()
Так вот как убрать эти ребра.
 

igorznag

Мастер
Рейтинг
103
#2
Попробуй так:
Код:
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();
)
 

kolts

Активный участник
Рейтинг
16
#3
Пока сделал так
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

Буду модифицировать
 
Сверху