home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Maximum 3D 3
/
m3d-p3.iso
/
3DS_MAX
/
3DSMAX.2_0
/
SCRIPTS
/
TREEPLNT.MS
< prev
next >
Wrap
Text File
|
1997-10-19
|
3KB
|
84 lines
utility trails "Treeplanter"
(
local master, trailer, trail,
start = animationRange.start.frame,
end = animationRange.end.frame
group "Planter"
(
pickbutton pick_master "Pick Planter"
label master_name
)
group "Plants"
(
pickbutton pick_trailer "Pick Trees"
label trailer_name
checkbox use_selection "Use current selection"
radiobuttons copy_type
labels:#("instance", "ref.", "copy")
default:1
)
spinner offsetx "Offset x:" range:[-1000, 1000, 0]
spinner offsety "Offset y:" range:[-1000, 1000, 0]
spinner offsetz "Offset z:" range:[-1000, 1000, 0]
checkbox offset_is_exclude "Offset is exclusion zone"
spinner randomx "Randomize x:" range:[0, 1000, 0]
spinner randomy "Randomize y:" range:[0, 1000, 0]
spinner randomz "Randomize z:" range:[0, 1000, 0]
spinner start_frame "Start frame:" type:#integer range:[start, end, start]
spinner end_frame "End frame:" type:#integer range:[start, end, end]
spinner frame_step "Step:" type:#integer range:[1, 1000, 5]
spinner copy_count "# Copies:" type:#integer range:[1, 1000, 1]
label blank
button create_trail "Plant Trees"
button delete_trail "Delete Trees"
on trails open do
( master_name.text = trailer_name.text = ""; trail = #() )
on pick_master picked obj do
( master = obj; master_name.text = master.name )
on pick_trailer picked obj do
( trailer = obj; trailer_name.text = trailer.name )
on use_selection changed state do
( if state then trailer_name.text = ""; pick_trailer.enabled = not state )
on delete_trail pressed do
( delete trail; trail = #() )
on create_trail pressed do
if master != undefined and ((use_selection.checked and selection.count > 0) or
trailer != undefined) then
(
trail = #()
for t in start_frame.value to end_frame.value by frame_step.value do
at time t
for i = 1 to copy_count.value do
(
local offset = [offsetx.value, offsety.value, offsetz.value]
if offset_is_exclude.checked then
(
offset.x = (offset.x + randomx.value) * (if random 0 1 == 0 then -1 else 1)
offset.y = (offset.y + randomy.value) * (if random 0 1 == 0 then -1 else 1)
offset.z = (offset.z + randomz.value) * (if random 0 1 == 0 then -1 else 1)
)
offset += [random (-randomx.value) randomx.value,
random (-randomy.value) randomy.value,
random (-randomz.value) randomz.value]
local item = if use_selection.checked
then selection[random 1 selection.count] else trailer
local copy = instance item pos:master.pos
rotate copy (inverse master.transform.rotationpart)
coordsys master
(
local bump = offset / (coordsys world master.scale)
move copy bump
)
append trail copy
)
)
)