Render.ru

How can i move vertex but to remain in the same plan?

Ion Burungiu

Пользователь сайта
Рейтинг
2
#1
How can i move vertex but to remain in the same plan? I tried to use constraints but it don't help me. Вы можете отвечать на русском, спасибо
 

igorznag

Мастер
Рейтинг
103
#3

Ion Burungiu

Пользователь сайта
Рейтинг
2
#7
сапосибо, есть ли способ двинуты вертекс так чтобы они не выходили йз плано полигона?
 

igorznag

Мастер
Рейтинг
103
#10
я пробовал и у меня не вышло с ним, может я что то не сделаю как надо
Может быть.
Нужно скачать файл Cooper-PolyCoordinateSystem.rar. Потом нужно извлечь содержимое архива.
В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "Cooper-PolyCoordinateSystem.mcr"
Выполняем команду: меню Customize > Customize User Interface > вкладка Keyboard > Group=Main UI, Category=Cooper.
Назначаем комбинацию клавиш для "Polygon Coordinate System", например клавишу "M".
Создаем одну сферу и конвертируем ее в Editable Poly.
Выделяем сферу. Выделяем вершины нужного полигона. Нажимаем клавишу "M".
Выбираем сферу. Выбираем нужный полигон.
Перемещаем вершины вдоль оси X и/или Y.
 

igorznag

Мастер
Рейтинг
103
#15
Понятно. Спасибо.
есть ли способ двинуты вертекс так чтобы они не выходили йз плано полигона?
Способ 1.
Выделяем объект Editable Poly и добавляем модификатор Smooth.
Включаем Auto Smooth. Устанавливаем Threshold=0.
Во вкладке Create нажимаем кнопку Helpers.
В свитке Object Type нажимаем кнопку Grid и включаем AutoGrid.
Создаем объект grid на поверхности нужного полигона.
Выделяем объект grid и нажимаем правую кнопку мыши и выбираем Activate Grid.
В списке Reference Coordinate System выбираем пункт Grid.
Выделяем вершины из плоскости нужного полигона и перемещаем их по оси X или Y.
В конце работы удаляем модификатор Smooth.
Для каждой плоскости нужно повторить команды.
есть ли способ двинуты вертекс так чтобы они не выходили йз плано полигона?
Способ 2.
Выделяем один планарный полигон базового объекта Editable Poly.
Запускаем скрипт. В новом окне нажимаем кнопку Apply один или несколько раз.
Выделяем вершины из плоскости выделенного полигона и перемещаем их по оси X или Y.
Для каждой плоскости нужно повторить команды.
Код:
try destroydialog test catch()
rollout test "Test" width:80 height:40
(
label lb_edge_id "" pos:[50,5] width:45 visible:false
button btn_apply "Apply" pos:[5,5] width:65 height:30
on btn_apply pressed do
(
if(selection.count==1)then
(
obj=selection[1].baseobject
if(classof obj==Editable_Poly)then
(
fs_ba=polyop.getFaceSelection obj
fs_a=fs_ba as array
if(fs_a.count==1)then
(
ef=polyOp.getFaceEdges obj fs_a[1]
prev_edge_id=undefined
if(lb_edge_id.text!="")then prev_edge_id=lb_edge_id.text as integer
next_edge_id_index=ef[1]
if(prev_edge_id!=undefined)then
(
for i=1 to ef.count do
if (ef[i]==prev_edge_id and i<ef.count) then 
(next_edge_id_index=ef[i+1];exit)
)--if(prev_edge_id!=undefined)then
if(next_edge_id_index!=undefined)then
(
ev=polyOp.getEdgeVerts obj next_edge_id_index
ev1_coord=polyop.getVert obj ev[1] node:selection[1]
ev2_coord=polyop.getVert obj ev[2] node:selection[1]
ev1ev2=ev2_coord-ev1_coord
rightVector=normalize ev1ev2
faceNormal = polyop.getFaceNormal obj fs_a[1] node:selection[1]
upVector = normalize (cross rightVector faceNormal)
p=(ev1_coord+ev2_coord)/2
theMatrix = matrix3 rightVector -upVector faceNormal p
try delete $grid_poly_igorznag catch ()
g=grid name:"grid_poly_igorznag"; g.transform=theMatrix
g.length=(length ev1ev2)*2; g.width=g.length
g.grid=ceil(g.length/20.0); 
freeze g;hide g
toolmode.coordsys g; --setCoordCenter #system
--toolmode.coordsys #grid; activeGrid=g
--viewport.setType #view_grid; max zoomext sel;
redrawviews();
lb_edge_id.text=next_edge_id_index as string
)--if(next_edge_id_index!=undefined)then
)--if(fs_a.count==1)then
)--if(classof obj==Editable_Poly)then
)--if(selection.count==1)then
)--on btn_apply pressed do
); createdialog test
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
 
Сверху