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

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

Тема в разделе "Моделирование", создана пользователем Ion Burungiu, 11 сен 2014.

Модераторы: He77ga, Артер
  1. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    How can i move vertex but to remain in the same plan? I tried to use constraints but it don't help me. Вы можете отвечать на русском, спасибо
    [​IMG]
     
  2. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
  3. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
  4. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    спасибо, и как он работает?
     
  5. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    или как сделать align для некоторых полигонов с один references?
     
  6. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Работает нормально.
    Тема: Editable poly, выравнивание вершины. Сообщение 32.
     
  7. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    сапосибо, есть ли способ двинуты вертекс так чтобы они не выходили йз плано полигона?
     
  8. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Скрипт Polygon Coordinate System не подходит для вашего случая?
     
  9. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    я пробовал и у меня не вышло с ним, может я что то не сделаю как надо
     
  10. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Может быть.
    Нужно скачать файл 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.
     
  11. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
  12. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
  13. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
  14. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
  15. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Понятно. Спасибо.
    Способ 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"
     
  16. Ion Burungiu

    Ion Burungiu Пользователь сайта

    С нами с:
    24.07.2007
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    2
    Спасибо
     
Модераторы: He77ga, Артер

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