Цитата igorznag #19:
Цитата Сергей Попов #15:Не интересует применение додификатора FFD и скрипта для выравнивания вершин между 2мя выбранными.
Почему вас не интересует применение додификатора FFD и скрипта для выравнивания вершин между 2мя выбранными?
Вы тратите много времени или результат вас не устраивает?
Цитата Сергей Попов #15:Я заметил, что при использовании локальной системы координат крайние ребра с зажатым Shift выдавливаются не так как хотелось бы.
Попробуйте такой вариант:
Выделяем открытое-крайнее ребро базового объекта Editable Poly.
Запускаем скрипт. В новом окне нажимаем кнопку Apply.
Удерживая клавишу Shift, выдавливаем ребро.
Кнопку Apply нужно нажимать каждый раз, когда выделяется открытое ребро.
rollout igorznag_open_edge_coord "Open Edge Coord"
(
button btn_apply "Apply"; on btn_apply pressed do
(
undo off
(
if(selection.count==1)then
(
obj=selection[1].baseobject
if(classof obj==Editable_Poly)then
(
es_ba=polyop.getEdgeSelection obj
es_open_a=(es_ba*(polyOp.getOpenEdges obj)) as array
if(es_open_a.count>0)then
(
edge_index=es_open_a[1]
edge_faces=polyOp.getEdgeFaces obj edge_index
edge_verts=polyOp.getEdgeVerts obj edge_index
p1=polyop.getVert obj edge_verts[1] node:selection[1]
p2=polyop.getVert obj edge_verts[2] node:selection[1]
v2=normalize (p2-p1); c=(p1+p2)/2
v3=polyop.getFaceNormal obj edge_faces[1] node:selection[1]
fc=polyop.getFaceCenter obj edge_faces[1] node:selection[1]
v1=normalize (cross v3 v2)
fc_p1=normalize(fc-p1); if(dot fc_p1 v1 > 0)then v1=-v1
m=matrix3 v1 v2 v3 c
try delete $shift_plane_igorznag catch ()
sp=plane name:"shift_plane_igorznag" length:0 width:0
sp.lengthsegs=1; sp.widthsegs=1;sp.transform=m
sp.renderable=off;freeze sp; hide sp; toolmode.coordsys sp
)--if(es_open_a.count>0)then
)--if(classof obj=Editable_Poly)then
)--if(selection.count==1)then
)--undo off
)--on btn_apply pressed do
); createDialog igorznag_open_edge_coord
По поводу того, почему не пользоваться модификатором. Да , мне кажется, что тратится много времени, когда делаю модельку, очень отвлекает выделять и накладывать сверху модификатор, а потом опять жать convert to editable poly. Я просто исхожу из того, что возможно кто-то знает альтернативный путь решения стандартными средствами макса и не выходя за рамки функционала editable poly. Кстати за скрипт отдельное спасибо. А можно немного теории по поводу этого скрипта, хотелось бы узнать что он делает. И почему без него работает именно так, как оно работает. В скриптах я не разбираюсь совсем.
Цитата Сергей Попов #15:Не интересует применение додификатора FFD и скрипта для выравнивания вершин между 2мя выбранными.
Почему вас не интересует применение додификатора FFD и скрипта для выравнивания вершин между 2мя выбранными?
Вы тратите много времени или результат вас не устраивает?
Цитата Сергей Попов #15:Я заметил, что при использовании локальной системы координат крайние ребра с зажатым Shift выдавливаются не так как хотелось бы.
Попробуйте такой вариант:
Выделяем открытое-крайнее ребро базового объекта Editable Poly.
Запускаем скрипт. В новом окне нажимаем кнопку Apply.
Удерживая клавишу Shift, выдавливаем ребро.
Кнопку Apply нужно нажимать каждый раз, когда выделяется открытое ребро.
rollout igorznag_open_edge_coord "Open Edge Coord"
(
button btn_apply "Apply"; on btn_apply pressed do
(
undo off
(
if(selection.count==1)then
(
obj=selection[1].baseobject
if(classof obj==Editable_Poly)then
(
es_ba=polyop.getEdgeSelection obj
es_open_a=(es_ba*(polyOp.getOpenEdges obj)) as array
if(es_open_a.count>0)then
(
edge_index=es_open_a[1]
edge_faces=polyOp.getEdgeFaces obj edge_index
edge_verts=polyOp.getEdgeVerts obj edge_index
p1=polyop.getVert obj edge_verts[1] node:selection[1]
p2=polyop.getVert obj edge_verts[2] node:selection[1]
v2=normalize (p2-p1); c=(p1+p2)/2
v3=polyop.getFaceNormal obj edge_faces[1] node:selection[1]
fc=polyop.getFaceCenter obj edge_faces[1] node:selection[1]
v1=normalize (cross v3 v2)
fc_p1=normalize(fc-p1); if(dot fc_p1 v1 > 0)then v1=-v1
m=matrix3 v1 v2 v3 c
try delete $shift_plane_igorznag catch ()
sp=plane name:"shift_plane_igorznag" length:0 width:0
sp.lengthsegs=1; sp.widthsegs=1;sp.transform=m
sp.renderable=off;freeze sp; hide sp; toolmode.coordsys sp
)--if(es_open_a.count>0)then
)--if(classof obj=Editable_Poly)then
)--if(selection.count==1)then
)--undo off
)--on btn_apply pressed do
); createDialog igorznag_open_edge_coord
По поводу того, почему не пользоваться модификатором. Да , мне кажется, что тратится много времени, когда делаю модельку, очень отвлекает выделять и накладывать сверху модификатор, а потом опять жать convert to editable poly. Я просто исхожу из того, что возможно кто-то знает альтернативный путь решения стандартными средствами макса и не выходя за рамки функционала editable poly. Кстати за скрипт отдельное спасибо. А можно немного теории по поводу этого скрипта, хотелось бы узнать что он делает. И почему без него работает именно так, как оно работает. В скриптах я не разбираюсь совсем.
У вас получилось вернуть точку на плоскость с помощью скрипта из поста 5?
У вас получилось выдавливать крайние ребра с зажатым Shift в нужном напрвалении с помощью скрипта из поста 19?