что делает: Модификатор "вытесняет" каждую вершину объекта, к которому применён, от опорных точек (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
)
)
)
)
А кто видел скрипт похожий на этот но чтоб можно было использовать любой объект, и чтоб деформировалось исходя из формы этого объекта, то есть деформатор для мышц, очень бесит что в максе его нет, сами мышцы сделать не проблема а вот деформатора нет
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Chebu
что делает: Модификатор "вытесняет" каждую вершину объекта, к которому применён, от опорных точек (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
kolts
Savin Denis
Стандартно для этого дела используется Skin Wrap, в Max8 на доп диске был отличный пример рига Maxine.
CAT который будет включен уже в следующую версию макса:
Мускулы+Клиджин(Видео),
Другие видео примеры.
Другие инструменты для работы с мускулатурой от внешних разработчиков:
ACT
Skin FX
Di-O-Matic Hercules
kolts
kolts
Savin Denis
А колиджин позволит придать любую форму для особо хитрых мышц.
Wats