Render.ru

Ищу скрипт типа xPose Zbrush'a

Астэт

Активный участник
Рейтинг
5
#1
Как можно в максе получить скрипт типа xpose От Zbrush'а, этот скрипт должен раздвигать в сторону группу выделенных объектов, причем хайполи и лоуполи наложены друг на друга, это надо, чтобы при запекании нормалей не было косяков с наложениями.
 

Астэт

Активный участник
Рейтинг
5
#3
Да нужная функция есть судя по видео, но не работает на 15максе почему то, мог бы ктонибудь вырезать код explode функции и сделать простейшее меню типа такого
Мне ничего кроме этой функции не нужно. это вроде просто, взять меши с префиксом _HP и _LP и растащить их в разные стороны
ч1я.jpg
 

igorznag

Мастер
Рейтинг
103
#4
Пример: Каждому объекту low соответствует только один объект high.
Код:
rollout explode_test "Explode test"
(
edittext et_lp_pref "LP" text:"LP_" fieldWidth:50 pos:[5,5]
edittext et_hp_pref "HP" text:"HP_" fieldWidth:50 pos:[90,5]
spinner sp_step "Step" fieldWidth:50 range:[0.01,1e9,1] type:#worldunits pos:[5,37]
button bnt_explode "Explode" pos:[100,30] width:70 height:30
on bnt_explode pressed do
(
undo on
(
lp_pref=et_lp_pref.text;hp_pref=et_hp_pref.text;step=sp_step.value; lpa=#();hpa=#()
if lp_pref!="" and hp_pref!="" then
(
for o in objects where (findString o.name lp_pref==1 and o.name.count>lp_pref.count) do 
(
append lpa o;
hp_temp=getnodebyname (hp_pref+(substring o.name (hp_pref.count+1) o.name.count)) all:true
if hp_temp.count==1 then append hpa hp_temp[1]
)--for o in objects where (
if lpa.count>0 and hpa.count>0 and lpa.count==hpa.count then
(
objs_center=[0,0,0]
for i=1 to hpa.count do objs_center+=hpa[i].center; objs_center/=hpa.count
objs_intersect=0
for i=1 to hpa.count do for j=1 to hpa.count where i!=j do
if intersects hpa[i] hpa[j] then objs_intersect=1
while objs_intersect==1 do 
(
objs_intersect=0
for i=1 to hpa.count do
(
dirv=normalize(hpa[i].center-objs_center)
hpa[i].pos+=dirv*step; lpa[i].pos+=dirv*step
for i=1 to hpa.count do for j=1 to hpa.count where i!=j do
if intersects hpa[i] hpa[j] then objs_intersect=1
)--for i=1 to hpa.count do
)--while objs_intersect==1
)--if lpa.count>0 and hpa.count>0 and lpa.count==hpa.count then
)--if lp_pref!="" and hp_pref!="" then
)--undo on
)--on bnt_explode pressed do
); createdialog explode_test 180 65
 
Сверху