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
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
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