Render.ru

Создание модификатора

Erik_945

Знаток
Рейтинг
36
#1
Собственно вопрос вот в чем - хочется сделать из нескольких инструментов полимоделинга (коннект, бевел , инсерт и оутлайн) модификаторы, чтобы их параметры можно было подредактировать после применения.
То есть модификатор должен цеплять выделенные подобъекты (полигоны, ребра или вертексы) из стека, и предоставлять гуи для настройки соответствующих параметров.
Это можно как-то сделать, и если да, то как?
 

LastJedi

Знаток
Рейтинг
27
#2
Насколько я могу судить, средствами MAXScript такое сделать не получится, а вот на C++ написать вполне реально. Задача не слишком сложная, наверняка, кто-нибудь уже делал что-то подобное. Стоит поискать в сети…
 
Последнее редактирование:

Владислав Бодюл

Активный участник
Рейтинг
15
#3
Бевел и инсет (а инсет это вроде тот-же бевел без смещения по нормали) легко сделать. Оутлайт это два бевела, а с коннектом будет немного сложно. В свое время долго с ним намучился.
В общем если операции реально сделать в EditMesh, то и в модификаторе тоже. Работать всё это будет в максах с версии 2016 и выше с помощью класса SimpleMeshMod.
 

Владислав Бодюл

Активный участник
Рейтинг
15
#4
Пример оутлайна и инсета.

Код:
plugin simpleMeshMod Face_Outline
name:"Face Outline"
classid:#(0x22e03523, 0x7ba0f7bd)
(
    parameters main rollout:params
    (
        amount type:#worldUnits ui:spnAmount
    )
   
    rollout params "Parameters"
    (
        spinner spnAmount "Amount:" range:[-1e7, 1e7, 0]
    )
   
    on modifyMesh do
        meshop.bevelFaces mesh #selection 0 amount;
)
Код:
plugin simpleMeshMod Face_Inset
name:"Face Inset"
classid:#(0x68f31dec, 0x3247f1a)
(
    parameters main rollout:params
    (
        amount type:#worldUnits ui:spnAmount
    )
    
    rollout params "Parameters"
    (
        spinner spnAmount "Amount:" range:[0, 1e7, 0]
    )
    
    on modifyMesh do
        extrudeface mesh #selection amount 0 dir:[0, 0, 0];
)
 
Последнее редактирование:

LastJedi

Знаток
Рейтинг
27
#5
Да, совсем я забыл про SimpleMeshMod
Тогда вот от меня Bevel :)
Код:
plugin simpleMeshMod Face_Bevel
    name:"Face Bevel"
    classID:#(0x4b16e241, 0x391f202a)
(
    parameters main rollout:params
    (
        Height ui:spn_Height default:10.0 type:#worldUnits animatable:true
        Outline ui:spn_Outline default:10.0 type:#worldUnits animatable:true
        Direction ui:rb_Direction default:1 type:#integer animatable:true
    ) 

    rollout params "Parameters"
    (
        spinner spn_Height "Height:" range:[-1e7, 1e7, 10.0] type:#worldUnits
        spinner spn_Outline "Outline:" range:[-1e7, 1e7, 10.0] type:#worldUnits
        radiobuttons rb_Direction labels:#("Group Normals", "Local Normals")
    ) 

    on modifyMesh do
    (
        dir = case Direction of
        (
            1: #common
            2: #independent
        )
        
        meshop.extrudeFaces mesh mesh.selectedFaces Height Outline dir:dir
    )
)
 
Сверху