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

Как сколапсировать две вершины средствами max script?

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

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

    Ofigelof Пользователь сайта

    С нами с:
    01.08.2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    Пишу скрипт который объединяет все вершины объекта имеющие одинаковые координат.
    Пока есть только это, выдаёт ошибку.
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.254
    Симпатии:
    172
    Баллы:
    65
    Выдели все вершины объекта (EditablePoly) и на панели Modify в свитке Edit Vertices нажми кнопку Weld (установи Weld Threshold = 0.001) Или тебя не устраивает как работает Weld?
     
  3. Ofigelof

    Ofigelof Пользователь сайта

    С нами с:
    01.08.2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    2
    ЭЭ ну хотелось бы услышать, как это можно сделать через макс скрипт, просто ради интереса...
     
  4. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.254
    Симпатии:
    172
    Баллы:
    65
    Если через MaxScript, тогда можно использовать автоматическую функцию weldVertsByThreshold. Вариант1:
    Код:
    function colapse obj= 
    ( 
    if(classof obj==Editable_Poly)then
    (
    obj.weldThreshold=0.001
    polyOp.weldVertsByThreshold obj #{1..obj.numVerts}
    )
    )
    Если использовать твой алгоритм, тогда попробуй так:Вариант2
    Код:
    function colapse obj= 
    ( 
    if(classof obj==Editable_Poly)then
    (
    For index = 1 to obj.NumVerts do  
    (
    For index2 = 1 to obj.NumVerts do  
    ( 
    if(index<=obj.NumVerts and index2<=obj.NumVerts)then
    (
    if length(obj.verts[index].pos-obj.verts[index2].pos)<=0.001 then
    ( 
    polyOp.collapseVerts obj #{index, index2} 
    )
    )
    
    )
    )
    )
    )
    
    Во время соединения вершин в цикле с помощью collapseVerts количество вершин объекта уменьшается и номера вершин меняются автоматически. Поэтому с одного раза не удается соединить все вершины. Для варианта2 нужно использовать функцию colapse несколько раз. Это можно сделать с помощью While и проверять произошло ли соединения или нет. Вариант2 является медленным и неэффективным из-за большого количества операций.
     
Модераторы: Savin Denis

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