Particle Skinner - Channel Paint

by John Rand from a scene file by Jeff Lim

Scene File: Max9_ParticleSkinner_ChannelPaint_Finished.max

This scene contains plane primitive, "ImpactObject", to which we will add a Particle Skinner modifier, to simulate impact deformations and a Dummy linked to a Spline using a path constraint controller . The impact areas will register collision data using the PhysX InterCollision Operator and pass on the impact information to a Data Test. This Data Test will process that information into ImpactObject's Particle Skinner vertex color channel.


Part 1 - Preparing the ImpactObject


Open the file Max9_ParticleSkinner_ChannelPaint_Start.max

Play the animation.

Open Particle View (Keyboard Shortcut 6) to create a new particle flow system.

  • Create a new PhysX Flow - this flow will be used to create the control point particles for the ImpactObject geometry
  • Remove the Spin operator
  • Select the Birth Grid
    • Grid Spacing - 10.0
    • Icon Size:
      • Length 0.0
      • Width 200.0
      • Height 200.0
  • Set the Shape operator to Cube - size 8.0
  • Add a Scale operator
    • Untick the Scale Factor Constrain Proportions checkbox
    • Set the Scale Factor - Y% to 30.0
  • Leave the PhysX Shape at default
  • Click the PhysX World operator
    • Press the "=>" -Access Driver Parameters- button
    • In the modify panel notice the PhysX World Driver is now selected, scroll down to advanced parameters, open the rollout
    • Set the Sub-frame Factor to 18 - to increase system accuracy
    • NOTE: a good rule of thumb for this setting, "Max Binds p/Particle" multiplied by 2 plus 2 or (MBP*2)+2

Reposition the Birth Grid to match the ImpactObject

  • X - 0.0
  • Y - 0.0
  • Z - 10.0

Now to add some PhysX attributes

  • Add a PhysX Drag operator - this will dampen all particle movement similar to a standard Drag Spacewarp
    • Linear Drag - 50.0
    • Angular Drag - 50.0
  • Add a PhysX Switch operator
    • Tick the Apply Anti-Gravity checkbox - we are shutting off the gravity for Event01 only

Add PhysX Tests, Glue and Collision

  • Add a PhysX Glue operator - to create binding. If we don't the ImpactObject will not retain its shape when hit
    • Set the type to Distance
    • Bind Distance - 15.0
    • Max Binds p/Particle - 8
    • Maximum Distance Limit - Relative% 120.0 - This is the default setting. Changing this value will increase the "stretching" of the binds
  • Add a PhysX InterCollision operator
    • Switch to "Particles In Events" - We need to gather data from particles generated in another event
    • You will need to come back to this operator after we create Event02 (the Birth Stream) and add it to the list
    • Tick the Report to Data Operator checkbox

It is time to set up the Data Test to gather the collision data

  • Add a Data Test operator and open the Data View (Edit Data Flow...)
    • Add a Input PhysX sub-operator - this will gather the particle collision
      • Set Collision Registration to Collided
      • Set the Type to With Particles
    • Add a new Vector sub-operator
      • Set the X Y & Z values to 1.0 - this will be the color, 1.0, 1.0, 1.0 translates to white
      • Wire the PhysX Input test to the Boolean of this Vector sub-operator
    • Add an Output New sub-op
      • Data Type - Vector
      • Wire the Vector the the Output New's data input
      • Rename it to "VColor"

Example of changing vector values to produce color:

We are finished building Event01. We will need to come back to the PhysX InterCollision operator later to enable Event02 when it is complete


The Birth Stream Event

  • Create a new birth event, Birth Stream
    • Emit Stop - 90
    • Rate - 15.0
    • Speed - 600
  • Wire the new event to the existing PF source 01 global node
  • Add a Shape operator - Sphere - Size 5.0
  • Add a PhysX Shape operator
    • Collide as: Sphere
  • Return to Event01 PhysX InterCollision operator and select Event02 in the list to enable collision registration
  • Copy and Paste/Instance the PhysX World operator from Event01
  • Select Event02 Display operator and set to Geometry
  • Select Event01 Display operator and set to None

Setup the ImpactObject with a Particle Skinner modifier.

  • Add a Particle Skinner modifier to "ImpactObject" from the modifier list
  • Add PF Source 01 to the Particle Skinner
  • Scroll down and open the Data Wiring rollout
    • Enable Use Data Channel
    • Press the Channel Button to bring up the Channel Dialog
    • Select and accept the VColor data channel
    • Click the Add button to populate the Particle Skinner Data To Mapping Channels listbox
  • Activate the Particle Skinner modifier

Finally Align the Birth Stream Icon to the Dummy_BirthStream helper and Link


Play the Animation