Scatter tutorial with Particle Flow

After a while unpublished, for professional reasons, I have decided to post a tutorial on how to scatter different objects.

This tutorial serves to scatter several elements in a scene, such as grass, trees, rocks, leaves … It has 2 levels, level 1 is the basic particle flow (flat surfaces) and level 2 advanced particle flow (curved surfaces).

We will use the native 3d studio max particle system.



To begin with, we have the surface to scatter, (a plane) and the object that we will be scattering, in this case a teapot with material assigned.

You can also uses proxies as a particles if you want to scatter a heavy polycount object, but in this case our teapot is very light so it isn’t necessary, also particle flow has different types of visualization methods to don’t overwhelm the viewport with geometry.

Let’s open the particle flow, click number 6 or Graph Editors/Particleview.

Once opened, click the right mouse button in the gray area and choose New/ParticleSystem/ StandardFlow (like this).


We will change Emit Stop Value from 30 to 0, now all particles are generated in the initial frame. With the amount option we can control the quantity of particles scattered.

The next step is assign the object that will contain particles. To do this, change the following element Object Position by Position Icon. To change this, right click above Object Position and select insert/operator/object position. Once changed, go to the right panel and in the Emitter object section, select Add and click the surface to scatter (in this case the plane).

In section Uniqueness, Seed value changes the distribution of the dispersion, to change, click New.

The next step is delete the item Speed001, select right-click Delete.

The next element, Rotation, on the right panel in orientation matrix section, select Random Horizontal. This causes the scattered objects to rotate randomly 360°.

To give a little random inclination to each of the elements, we can set a value of 5 or 10 in the divergence.

Select element shape 001 and change it to shape instance, right button insert/operator/shape instance. In the Particle Geometry Object section, select none and click the object of the scene we want to scatter.

The value of the Scale, scale particles respect to the original. Below, Variation, with which we can input how the scale varies respect to the original.

Finally, Display controls how Particle Flow shows the scattered elements. In the type can choose the display type.


Particle Flow by default, shows 50 percent of elements dispersed in the view port. To view all elements, select PF Source and the right menu in the section of Quantity Multiplier change the value of Viewport % from 50 to 100.


At level 2 we will add a number of variables for Particle Flow to act in certain areas, is perpendicular to the normals, density control, etc…

Location, with this section of the element, Position Object, we can modify the following options.

Make the Particle Flow acting on a given area.

If we choose selected faces in the location drop-down menu, and we select the faces of the element that will contain the scatter, with the poligon subobject of the editablepoly, the Particle Flow only makes us the scatter in the selected polygons.

We can define the area of action in the Particle Flow by polygons, edge or vertex.

The Surface Offset parameter allow us to control the minimum and maximum displacement in the z axis of the objects scattered.

The Density by Material allows to control the density of the scatter with a black and white texture if we assign a grayscale texture on the material of the plane.

The Spacing controls the distance between particles, to make it all more evenly distributed.. The separation depends basically on three values:

Distance, Attempts max and the amount.

Distance: more value, more evenly distributed will be

Attempts max: more value, more evenly distributed will stay.

To get a more or less uniform dispersion, play with these three values.

View video for see the previous examples.


If we have a curved surface, as explained so far, is not possible to align the objects with normals. To align objects to normals we will:

Insert a Speed by surface below the Position Object, in Surface Geometry of Speed by Surface click add and select the curved surface of the scene, in the section of Direction make sure surface normals is selected.

In the Rotation element, change Random Horizontal to Speed Space and change the angle of the Y axis to 90.

Finally, insert the icon Speed under the item Rotation and modify the Speed Value from 300 to 0. This is so that the particles have no movement if accidentally we move the time line.


We can add the item Scale for more control, it will let us add random scale values to the scattered particles.

I hope you liked it. Thanks.

Tutorial made by Toni Fresnedo



Scatter tutorial with Particle FlowToni Fresnedo

12 comments on "Scatter tutorial with Particle Flow"

  1. Thank for you tutorial Toni, it helped me but I got stuck in the part that I most wanted to learn and had no clue of how do it in pflow, when I tell to pflow align the teapot by normal it doesn’t affect nothing.
    Can you tell me what I’m doing wrong?

    • Naturally that I can help you, I think the problem is that the Speed of your Speedbysurface is to 0, and so is disabled. To activate, we must give a value, if you see on my screenshot, this value is 300, if will you give this value should work.
      I hope I have helped, if it is not, ask again.

      • Thanks a lot my friend, now it worked, I think I have messed too much with the other options and when I did it correct didn’t worked so I just needed a clean start.
        Again, thank you.

  2. Tx, Toni, excellent info here. I’ve used it a few times on simple objects like bushes or trees for distant vegetation. Something I’m attempting now is to scatter some leaves in my scene foreground. All goes fine, the leaves are there, scattered nicely and all is well… except for one thing. All the leaves are standing straight up, in other words, not lying flat on the ground. I’ve moved the axis of the original model around, turned the model opposite to what I want and still they stand up.
    Any ideas on what’s gone wrong?

    • Hi pixel, sorry for the late reply….
      for your problem, think that changing the angle of the Y axis, in the Rotation element menu, you be solved!, begin to zero and then try others values, if still does not work try with the values ​​of x or z.


  3. Thanks so much for posting this! I never used PFlow before and thanks to your tutorial, I was able to create something in a few hours. I am covering an object with sequins and it looks good. My only problem I have is objects overlapping each other. I tried “Keep apart” with no luck. Any suggestions? Thanks again!

    • I’m sorry to reply so late, but i did not see the comment.
      i dont know if can get what you ask me, but you could try, playing with deflectors and collision.
      Sorry for the late reply!


      • Darlene on

        Hi, No worries. I ended up having to ditch using PFlow for this and ended up using the paint on object tools in 3DS Max which worked well and was a lot easier to set up quickly.

  4. Hi thanks for this guide. I’m newish to max but in maya I can do something similiar to this but I can use a black and white texture map to drive where I want my objects to scatter. Can I do something like this with pflow?

  5. Niccolò Dipaola on

    thank you very much for this tutorial! is very interesting.
    I would just to ask you if it would be possible to use the polygons ID as distribution criterion. I applied to the scatter surface an multi sub object material and assign the id I want in the position panel (location:surface, density: grayscale, use subMtl:1 or 2) but it definitely doesn’t work.
    Even with the normal scattering I can’t use ID as distribution crierion.
    Many thanks

Leave a Reply

Your email address will not be published. Required fields are marked *

What is 14 + 6 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

This site uses Akismet to reduce spam. Learn how your comment data is processed.