home *** CD-ROM | disk | FTP | other *** search
/ Maximum 3D 3 / m3d-p3.iso / 3DS_MAX / 3DSMAX.2_0 / SCRIPTS / TREEPLNT.MS < prev    next >
Text File  |  1997-10-19  |  3KB  |  84 lines

  1. utility trails "Treeplanter"
  2. (
  3.     local  master, trailer, trail,
  4.            start = animationRange.start.frame,
  5.            end = animationRange.end.frame
  6.  
  7.     group "Planter"
  8.     (
  9.         pickbutton pick_master "Pick Planter"
  10.         label master_name
  11.     )
  12.  
  13.     group "Plants"
  14.     (
  15.         pickbutton pick_trailer "Pick Trees"
  16.         label trailer_name
  17.         checkbox use_selection "Use current selection"
  18.         radiobuttons copy_type
  19.             labels:#("instance", "ref.", "copy")
  20.             default:1
  21.     )
  22.  
  23.     spinner offsetx "Offset x:" range:[-1000, 1000, 0]
  24.     spinner offsety "Offset y:" range:[-1000, 1000, 0]
  25.     spinner offsetz "Offset z:" range:[-1000, 1000, 0]
  26.     checkbox offset_is_exclude "Offset is exclusion zone"
  27.     spinner randomx "Randomize x:" range:[0, 1000, 0]
  28.     spinner randomy "Randomize y:" range:[0, 1000, 0]
  29.     spinner randomz "Randomize z:" range:[0, 1000, 0]
  30.  
  31.     spinner start_frame "Start frame:" type:#integer range:[start, end, start]
  32.     spinner end_frame "End frame:" type:#integer range:[start, end, end]
  33.     spinner frame_step "Step:" type:#integer range:[1, 1000, 5]
  34.     spinner copy_count "# Copies:" type:#integer range:[1, 1000, 1]
  35.  
  36.     label blank 
  37.     button create_trail "Plant Trees"
  38.     button delete_trail "Delete Trees"
  39.  
  40.     on trails open do
  41.         ( master_name.text = trailer_name.text = ""; trail = #() )
  42.     on pick_master picked obj do
  43.         ( master = obj; master_name.text = master.name )
  44.     on pick_trailer picked obj do
  45.         ( trailer = obj; trailer_name.text = trailer.name )
  46.     on use_selection changed state do
  47.         ( if state then trailer_name.text = ""; pick_trailer.enabled = not state )
  48.     on delete_trail pressed do
  49.         ( delete trail; trail = #() )
  50.  
  51.     on create_trail pressed do
  52.         if master != undefined and ((use_selection.checked and selection.count > 0) or
  53.            trailer != undefined) then
  54.         (
  55.             trail = #()
  56.             for t in start_frame.value to end_frame.value by frame_step.value do
  57.                 at time t
  58.                     for i = 1 to copy_count.value do
  59.                     (
  60.                         local offset = [offsetx.value, offsety.value, offsetz.value]
  61.                         if offset_is_exclude.checked then
  62.                         (
  63.                            offset.x = (offset.x + randomx.value) * (if random 0 1 == 0 then -1 else 1)
  64.                            offset.y = (offset.y + randomy.value) * (if random 0 1 == 0 then -1 else 1)
  65.                            offset.z = (offset.z + randomz.value) * (if random 0 1 == 0 then -1 else 1)
  66.                         )
  67.                         offset += [random (-randomx.value) randomx.value,
  68.                                    random (-randomy.value) randomy.value,
  69.                                    random (-randomz.value) randomz.value]
  70.                         local item = if use_selection.checked
  71.                                         then selection[random 1 selection.count] else trailer
  72.                         local copy = instance item pos:master.pos
  73.                         rotate copy (inverse master.transform.rotationpart)
  74.                         coordsys master 
  75.                         (
  76.                             local bump = offset / (coordsys world master.scale)
  77.                             move copy bump
  78.                         )
  79.                         append trail copy
  80.                     )
  81.         )
  82. )
  83.  
  84.