Render.ru
Поддержать

SpherePush modifier

Chebu

Знаток
Рейтинг
59
Модификатор SpherePush:

что делает: Модификатор "вытесняет" каждую вершину объекта, к которому применён, от опорных точек (pivot) заданных пользователем объектов с заданным радиусом. Воздействующими объектами могут служить любые объекты сцены, в примере это point_helper. Воздействующие объекты можно анимировать.

зачем нужен: Писал для вторичных анимаций у персонажа (перекатывающийся кадык при глотании; раздутая щека, когда что-то находится во рту; анимация живота и т.д.).

Видео на ютуб:


как использовать:
1)копируем код
2)создаём новый файл, называем его spherePush.ms
3)открываем файл spherePush.ms текстовым редактором. Например, блокнотом.
4)вставляем скопированный код.
5)файл кладём в 3dsmax_root\scripts\startup, где 3dsmax_root - дирректория, в которую у вас установлен 3DsMax
6)перегружаем макс, если был запущен, модификатор SpherePush должен появиться в списке доступных.

надеюсь, кому-нибудь пригодится

plugin simpleMod spherePush

name:"spherePush"

classID:#(0x329a4c0e, 0x652226e6)

(     
    parameters main rollout:params
    (
        nodes type:#nodeTab tabSizeVariable:true
        radius type:#floatTab tabSizeVariable:true 
    
        an type:#integer animatable:true
        
        on nodes tabChanged ar1 ar2 ar3 do
        (
            if (ar1==#refDeleted) do (deleteItem nodes ar2)
        )
    )
    
    rollout params "Parameters" width:162 height:280
    (
        listbox lbx1 "nodes" pos:[8,5] width:144 height:8
        button btn2 "remove" pos:[81,137] width:51 height:25
        pickbutton btn3 "add" pos:[37,136] width:40 height:26
        spinner spn1 "selection radius" pos:[11,169] width:144 height:16 range:[0,10000,0]
        
        fn updateList = 
        (
            items = #()
            for n in nodes do append items n.name
            
            lbx1.items = items
        )
        
        fn updateListSelection = 
        (
            sel = lbx1.selection
            spn1.enabled = (sel != 0)
            if(sel != 0) do
            (
                spn1.controller = radius[sel].controller
                spn1.value = radius[sel]
            )
        )
        
        on params open do
        (
            updateList()
            updateListSelection()
        )
        
        on lbx1 selected sel do
        (
            updateListSelection()
        )
        
        on btn2 pressed do
        (
            if(lbx1.selection>0) do 
            (
                deleteItem nodes lbx1.selection
                updateList()
                updateListSelection()
            )
        )
        on btn3 picked obj do
        (
            if( (findItem nodes obj) == 0) do
            (
                append nodes obj
                append radius 25
                updateList()
                updateListSelection()
            )
        )
        on spn1 changed val do
        (
            if (lbx1.selection != 0) do
            (
                radius[lbx1.selection] = spn1.value
            )
        )
    )
    
    on map i p do
    (
        for nID = 1 to nodes.count do
        (
            vec = p-nodes[nID].pos 
            dist = length vec
            if(dist<radius[nID]) do p += ((radius[nID]-dist)*vec/dist)
        )
        
        p
    )
    
    on create do
    (
        an.controller = linear_float()
        at time 10000 
        (
            animate on
            (
                an = 10000.0f
            )
        )
    )

)

Feodor

Мастер
Рейтинг
457
Спасибо, простенькая но иногда бывает очень необходимая вещь.

kolts

Активный участник
Рейтинг
16
А кто видел скрипт похожий на этот но чтоб можно было использовать любой объект, и чтоб деформировалось исходя из формы этого объекта, то есть деформатор для мышц, очень бесит что в максе его нет, сами мышцы сделать не проблема а вот деформатора нет

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
бесит что в максе его нет, сами мышцы сделать не проблема а вот деформатора нет
Кто тебе такое сказал ?

Стандартно для этого дела используется Skin Wrap, в Max8 на доп диске был отличный пример рига Maxine.

CAT который будет включен уже в следующую версию макса:
Мускулы+Клиджин(Видео),
Другие видео примеры.

Другие инструменты для работы с мускулатурой от внешних разработчиков:
ACT
Skin FX
Di-O-Matic Hercules

kolts

Активный участник
Рейтинг
16
Кто тебе такое сказал ?
Я открывал макс и смотрел)) Хотелось бы деформацию как в skin fx

kolts

Активный участник
Рейтинг
16
Не представляю как потом деформировать меш катовскими мышцами

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Да точно также, с патчем теоретически должна быстрей считаться деформация.
А колиджин позволит придать любую форму для особо хитрых мышц.

Wats

Знаток
Рейтинг
25
Скрипт безусловно полезный, вот только непойму чем вам Space Warp Displace не угодил? Им подобный эффект спокойно решается 🙄