идеально раскрыта тема в скрипте test.ms, вот только бы кубиков побольше))..
Код:
rollout igorznag_displace_scatter "Displace_scatter" width:170 height:140
(
spinner sp_box_length "Length:" range:[0.0, 1e+9, 10] pos:[35,5] scale:0.001 fieldWidth:60
spinner sp_box_width "Width:" range:[0.0, 1e+9, 10] pos:[40,25] scale:0.001 fieldWidth:60
spinner sp_box_height "Height:" range:[0.0, 1e+9, 40] pos:[38,45] scale:0.001 fieldWidth:60
spinner sp_box_length_count "Length Count:" range:[0.0, 1e+9, 15] pos:[5,65] scale:1 fieldWidth:60 type:#integer
spinner sp_box_width_count "Width Count:" range:[0.0, 1e+9, 15] pos:[10,85] scale:1 fieldWidth:60 type:#integer
button btn_create "Create" pos:[60,110]
on btn_create pressed do
(
length_box=sp_box_length.value; width_box=sp_box_width.value
height_box=sp_box_height.value
boxes_length_count=sp_box_length_count.value
boxes_width_count=sp_box_width_count.value
obj=Plane pos:[0,0,0]; obj.length=length_box*boxes_length_count;
obj.width=width_box*boxes_width_count;
obj.lengthsegs=boxes_length_count; obj.widthsegs=boxes_width_count
om=obj.mesh; for i=1 to om.numfaces by 2 do
(
ac=Attachment node:obj align:false;theAKey=AttachCtrl.addNewKey ac 0f
pc=((meshop.getFaceCenter om i)+(meshop.getFaceCenter om (i+1)))/2
bc=meshop.getBaryCoords om i pc;theAKey.coord=[bc.x,bc.y]
theAKey.face=i-1;AttachCtrl.update ac
obj_box=Box height:height_box width:width_box length:length_box;
obj_box.pos.controller=ac
)
nm=noise type:1 size:50;animate on(at time 100 nm.phase=5)
dm=displace strength:30 map:nm;addmodifier obj dm;completeRedraw()
)--on btn_create pressed do
)
createdialog igorznag_displace_scatter