particleVector Sample Script

Description

The following sample script assigns Vector values to the particleVector channel.

Can Be Used With:

Can be used in a Script_Operator to control the Target Point position of a Find_Target Test.

Effect:

Takes a scene geometry object, gets the position of its first vertex, adds a random offset to it, and assigns to the particleVector channel of all particles. In result, all particles stream towards the vertex because the Find_Target is set to read the particleVector channel and send all particles to the position in the channel:

EXAMPLE

   --The ChannelsUsed handler defines the channels
   --to be made available to the script.
   --For the list of all channels, see
   --Interface: MaxscriptParticleContainer
   --The parameter pCont passed to the handler
   --contains the Particle Container the script is applied to
   on ChannelsUsed pCont do
   (
       --Enable the Vector channel:
       pCont.useVector = true
   )

   --The Init handler is called on initialization.
   --It is not used in this case.
   on Init pCont do
   (
       --Define a global variable with unique name and store the
       --scene object which also has a unique name in it
       global obj_19680217 = $Sphere_19680217
       --If the scene object does not exist, create a sphere,
       --give it the unique name and assign to the global variable
       if obj_19680217 == undefined then
       obj_19680217 = Sphere name:"Sphere_19680217"
   )

   --The Proceed handler contains the main script
   --applied to the Particles.
   --The parameter pCont passed to the handler
   --contains the Particle Container the script is applied to:
   on Proceed pCont do
   (
       --Get the current number of particles
       count = pCont.NumParticles()

       --Loop from 1 to the number of particles:
       for i in 1 to count do
       (

           --Set the particle index in the container to the current i value.
           --This makes the i-th particle in the container the current one
           pCont.particleIndex = i

           --Get the position of the first vertex of the scene object.
           vpos = (getVert obj_19680217.mesh 1)

           --Add a random variation between -1 and +1 to all 3 axes
           vpos += random [-1,-1,-1] [1,1,1]

           --Set the particleVector channel value to the calculated value
           pCont.particleVector = vpos
       )--end i loop
   )--end Proceed

   --The Release handler is used to do cleanup work.
   --Not used in this case.
   on Release pCont do
   (
   )