Motion: How to randomly pick and place dust/hair PNGs? - per frame.

I'm new to Apple Motion and need need guidence - I've tried to find an answer via Google - but AI etc was no help.


I wish to make a generator/effect for FCPX that places dust and hairs on footage. I've made all the objects (over 100) as transparent pngs, to scale.


While the application of dust and hairs is pretty obvious, I'll outline what needs to happen...


I've imported the whole set of 100+ png objects into a group in Motion.


Now I need to randomly pick from those objects and randomly place them within the frame, each to be seen for a duration of one frame only.


The pngs should not be scaled, they need to remain 1:1, be the pixel size I saved them at.


The frequency needs controlling, picking more than one png to be seen randomly on the frame at once. So if a value of 4 is set, some frames show no pngs applied, some frames show 1 randomly picked and positioned png, some frames show 2 randomly picked and positioned pngs, up to 4 randomly picked and positioned pngs.


I've treid Behaviour, Randomize X&Y, but this just moves the whole group of pngs around together randomly within a restricted area of the frame (why can't I select whole frame?). Particle Emitters seem to have no 1-frame control and are more about slowly moving objects over seconds. In fact I haven't cracked how to randomly pick pngs from the group of 100+, I imported.


How do I randomly spray my png objects all over the frame - with controls for density and frequency?

Posted on Apr 20, 2026 1:56 AM

Reply
Question marked as Top-ranking reply

Posted on Apr 20, 2026 2:56 PM

To randomly "pick" images for individual frames, you will need to go through some really tedious work to set it up. Ready?


For each of your 100 images, make them ALL 1 frame long. Afterwards, distribute them all in time so that they don't overlap. If you're using a 30fps project at the default 10 seconds, that's 300 frames. You can go through the list of images and move the playhead forward 1 frame with the Right Arrow key, then type the 'i' key to set the image's in point. To make the task slightly easier, select the bottom most image in the group and starting with the playhead on frame 0, type the "up arrow" key (to select the next image *up* the layers list), type the "right arrow" key (to move the playhead forward one frame) then the 'i' key to set an in point for that layer. Repeat the "↑, →, i" sequence until finished.


The next thing you want to do is select the Group containing the images. Check to make sure that the time length of the group is the same length as all the images combined in the group (100 frames.) If the timing is correct, Clone the group (type the 'k' key).


You said you tried making an Emitter and weren't satisfied with the result, but I'm going to recommend you stay with the Emitter. It's probably the best/easiest option to use.


For the Emitter Source, use the Clone layer you created. Set the Shape to Rectangle and the Arrangement to Random Fill.


Set the Width/Height of the Size parameter to your project size.


For a similar project I did, I set the Emission Angle to 270º (which is a "straight down" direction — not that there should be any movement, but "ya never know" ;)


Set the Birth Rate to 0 and the Birth Rate Randomness to ... say... 100 (to start — more later).

Initial number 0.

I'll cover Life later — but set it to 0.1 to start, for now.

Set Life Randomness, Speed, Speed Randomness to 0.


For variation, you'll want to set the Angle Randomness to 360 or something greater.


That's the basics.


Turn OFF Play Frames and select Random Start Frame. [Every time you click the Random Seed, you will change up the order and variation of the playback.]


Key parameters for variation:


Life and Birth Rate Randomness. Life is how long the image will appear in Playback. Birth Rate Randomness will be how many different hair images will be displayed per single frame in playback.


The Life parameter you choose will be determined by the Frame Rate of your project. Life, regardless of project Frame Rate is in Seconds. If you set Life in a 30fps project to 1/30 (0.03333333333333 [use all 14 digits!]), the emitted object will appear for exactly 1 frame. If ALL your projects in Final Cut Pro are 30fps, then this will work as created. You may find this is not exactly what you want, so the best option is to make this parameter available to be able to adjust "to taste" — up to 3 or 4 frames in playback makes the image more noticeable and it's nearly impossible to tell it's more than just a frame or two.


Birth Rate Randomness will provide from 0 to x-number of Clone layer frames in one frame of playback.


The best way to set up both of these parameters is with a Rig > Slider so you can set minimum and maximum values.


Right click on the Emitter's Life parameter and Add To Rig — Create new Rig — Add to New Slider.

For the minimum Slider value, set the Life to 0.02. For the maximum Slider value, set the Life to... I went with 0.15 (however, my project setting was 60fps, so you might want to go with half of those value — but try them out to be sure!!)


Right click on the Birth Rate Randomness and Add to Rig — Rig — Add to New Slider. At the minimum Slider value, set 0. At the maximum Slider value, set 1000 (again, try this out — if you're in a 30fps, try 500).


You will want these controls available in Final Cut since templates applied to projects in FCP tend to be "conformed".


But wait, there's more!


I don't recommend using a Generator template. In Final Cut, if you expand the Generator longer in the storyline, everything slows down and if you make it shorter, everything speeds up unless you using Timing markers like Project Loop End. I recommend creating an Effect for Final Cut. If you need to use it like a generator, then use an Adjustment Layer and apply the effect to that. You also have the extra benefit of being able to make Effects Presets of the instances you apply (saving the parameter settings you apply).


I know this was probably a lot to take in. Hope it helps!







7 replies
Question marked as Top-ranking reply

Apr 20, 2026 2:56 PM in response to level-100

To randomly "pick" images for individual frames, you will need to go through some really tedious work to set it up. Ready?


For each of your 100 images, make them ALL 1 frame long. Afterwards, distribute them all in time so that they don't overlap. If you're using a 30fps project at the default 10 seconds, that's 300 frames. You can go through the list of images and move the playhead forward 1 frame with the Right Arrow key, then type the 'i' key to set the image's in point. To make the task slightly easier, select the bottom most image in the group and starting with the playhead on frame 0, type the "up arrow" key (to select the next image *up* the layers list), type the "right arrow" key (to move the playhead forward one frame) then the 'i' key to set an in point for that layer. Repeat the "↑, →, i" sequence until finished.


The next thing you want to do is select the Group containing the images. Check to make sure that the time length of the group is the same length as all the images combined in the group (100 frames.) If the timing is correct, Clone the group (type the 'k' key).


You said you tried making an Emitter and weren't satisfied with the result, but I'm going to recommend you stay with the Emitter. It's probably the best/easiest option to use.


For the Emitter Source, use the Clone layer you created. Set the Shape to Rectangle and the Arrangement to Random Fill.


Set the Width/Height of the Size parameter to your project size.


For a similar project I did, I set the Emission Angle to 270º (which is a "straight down" direction — not that there should be any movement, but "ya never know" ;)


Set the Birth Rate to 0 and the Birth Rate Randomness to ... say... 100 (to start — more later).

Initial number 0.

I'll cover Life later — but set it to 0.1 to start, for now.

Set Life Randomness, Speed, Speed Randomness to 0.


For variation, you'll want to set the Angle Randomness to 360 or something greater.


That's the basics.


Turn OFF Play Frames and select Random Start Frame. [Every time you click the Random Seed, you will change up the order and variation of the playback.]


Key parameters for variation:


Life and Birth Rate Randomness. Life is how long the image will appear in Playback. Birth Rate Randomness will be how many different hair images will be displayed per single frame in playback.


The Life parameter you choose will be determined by the Frame Rate of your project. Life, regardless of project Frame Rate is in Seconds. If you set Life in a 30fps project to 1/30 (0.03333333333333 [use all 14 digits!]), the emitted object will appear for exactly 1 frame. If ALL your projects in Final Cut Pro are 30fps, then this will work as created. You may find this is not exactly what you want, so the best option is to make this parameter available to be able to adjust "to taste" — up to 3 or 4 frames in playback makes the image more noticeable and it's nearly impossible to tell it's more than just a frame or two.


Birth Rate Randomness will provide from 0 to x-number of Clone layer frames in one frame of playback.


The best way to set up both of these parameters is with a Rig > Slider so you can set minimum and maximum values.


Right click on the Emitter's Life parameter and Add To Rig — Create new Rig — Add to New Slider.

For the minimum Slider value, set the Life to 0.02. For the maximum Slider value, set the Life to... I went with 0.15 (however, my project setting was 60fps, so you might want to go with half of those value — but try them out to be sure!!)


Right click on the Birth Rate Randomness and Add to Rig — Rig — Add to New Slider. At the minimum Slider value, set 0. At the maximum Slider value, set 1000 (again, try this out — if you're in a 30fps, try 500).


You will want these controls available in Final Cut since templates applied to projects in FCP tend to be "conformed".


But wait, there's more!


I don't recommend using a Generator template. In Final Cut, if you expand the Generator longer in the storyline, everything slows down and if you make it shorter, everything speeds up unless you using Timing markers like Project Loop End. I recommend creating an Effect for Final Cut. If you need to use it like a generator, then use an Adjustment Layer and apply the effect to that. You also have the extra benefit of being able to make Effects Presets of the instances you apply (saving the parameter settings you apply).


I know this was probably a lot to take in. Hope it helps!







Apr 21, 2026 7:49 PM in response to level-100

Hey, this is a cool project idea. Reading through the thread, fox_m gave you some solid advice on the emitter approach, and Luis had a good point about the image sequence workflow too.


One thing I'd add that might help you get the per-frame randomness you're after: have you looked at using Motion's built-in Particle Cell Layer option within the emitter? Instead of cloning a group, you can actually import your PNGs as particle cells directly. When you set the emitter's Cell Layer to "Random," it'll pick a different image from your cell stack for each particle birth. Combine that with a Birth Rate of 1 per frame and Life set to 1/30 (for 30fps), and you should get exactly one randomly chosen PNG appearing for a single frame at a time.


For controlling how many show up per frame, you can add a Randomness slider to the Birth Rate and play with that. A Birth Rate of 4 with some randomness should give you that 0-4 PNGs per frame behavior you described.


Also, if you haven't already, check out the "Replicator" object in Motion. It's similar to an emitter but works a bit differently and might give you more control over per-frame timing if the emitter approach feels limiting.


As for After Effects, it does have more powerful scripting options, but honestly Motion should be able to handle this without needing to switch apps. Stick with what fox_m suggested and tweak the emitter settings. You should get there!

Apr 21, 2026 4:00 AM in response to fox_m

...just rereading, and the issue I immeditely had with the emiiter was for the life of an object to appear for just 1 frame only, you mention this issue, and having to use 0.03333333 seconds etc, and if another fps than this calc, then objects might appear for 2 frames, this isn't good enough - sorry to be pedantic.


I experimented with Flash Frame applied to a sequential set of pngs (I numbered the pngs 001 002 003 etc, and imported them as a set, tick box option on import). This flashes up a different png per frame in the centre of the screen, great. Then I applied Randomize behaviour to Position XY. This kinda worked, but the scaling seemed to be from the lower right corner of the XY spread - I could recentre though - but was banking on using this scaling to reduce density (have objects appear out of frame to reduce their number) also generally it denser in the centre of the frame than the outsides - but kinda ok. I tried Randomize on Opacity (to try and knock out some instances) but Opacity didn't work as expected. So that experiment while nearly there, didn't seem worth pursuing... thought maybe there would be something more to the point.


I'm still looking for a per frame solution (rather than timed over seconds). I actualy just bought Motion for this job alone, and now realise it probably can't manage it, spraying random pngs over the frame with control of frequency and density - I presumed this might be pretty basic stuff! - but doesn't look like there's a ready route to this. Does Adobe Premier (After Effects?) have more powerful 'coding' ability to do this kind of thing? - not that I want to jump ship, but FCPX often keeps tripping me up (been using it for 10+ years).


Apr 21, 2026 7:37 PM in response to level-100

@level-100


Human vision is variable over the range of the population. When I was a kid — late 1950s/early 1960s, I could see subliminal advertising, which was weird because nobody else in my family could see what I was seeing on the television. My point being, you may think you can see a one frame object, but many won't. Also, hairs that get caught up in film playback can get "caught" in the film gate and be visible for many frames (even seconds of time).


The overall idea of an effect like this is to make it seem as natural or "real" as possible. Some variability also provides an illusion of uniqueness (albeit: similarity). Also some consideration for those who may not have the visual "speed" as you have. You haven't specified how long a "frame" is for your project. In 24 fps, 1 frame is 2.5 times longer than 1 frame of 60fps.


I haven't used AE in over 25 years. Back in 2002 I hardly think its capabilities were anywhere near what they may be today. I couldn't tell you if the "coding" ability is worthwhile. Back in those days, I preferred LiveMotion (which Adobe killed not too long after - 2005 I think.) I used to watch AE tutorials and try to do the projects in Motion instead. I usually was able to recreate a scene in Motion *much* easier than what I was seeing in the AE tutorial... for whatever that's worth... I will admit though, that Motion probably cannot do *everything* AE is capable of. [I cut off all my association with Adobe products as soon as they went completely over to the "subscription model".]


As for the Opacity issue you might have been having, realize that Opacity has a 100% range — fading can be observable even in just a couple of frames. If you apply a Quantize behavior to the value, you can set it up to be 100% and ***any other value*** (from 0 to 99.99999 [5 decimal places]) will be evaluated at 0%. You might have to Link a null object's opacity to control the Opacity of the image and place the Quantize *after* the Link. It's like an instant "switch". You can set up a Randomness on the Opacity (of the "controller" parameter if you use a null object) with a range of, say, 98% to 102% giving you somewhat "even odds" that a hair may appear, or "weight" the calculation to reduce or increase the number of appearances... (In Motion, there's no such thing as an Opacity > 100% even if you apply higher values with behaviors or keyframes.)






Apr 21, 2026 3:19 AM in response to fox_m

...this is gold! - I really didn't expect such a spot-on and detailed reply, thought there might be lots of replies based on misunderstandings to get around!... so many thanks for the time you put into your focused reply.


I'll go through it step by step over the weekend. I understand the bones of it (though I'm still learning, rapidly), and yes I can see some manual work ahead, but I'm up for that.


I'll come back here, probably next week, and update how I got along.

Apr 21, 2026 3:26 AM in response to fox_m

As always, great answer, Fox!


I wonder if, to avoid the tedious work of making each image one frame long, and the concomitant huge group that causes, one could instead do a simple pre-processing: import the stills as an image sequence and export them as a movie file (it would probably have to be made ProRes 4444 in order to keep the Alpha channel); then use this instead of the 100 separate stills.

It seems to that the rest of the process would still work, and probably faster too (besides having a much simpler timeline)./

Do you think this would work?

Apr 21, 2026 4:41 PM in response to Luis Sequeira1

@Luis


Yes it will work. You're skilled enough with Automator to create a droplet application that will rename files contained in a separate folder for an Image Sequence to be used in Motion and/or FCP (I did it! But mine is a "for sale" product, so I can't say anything about it). That is the easiest way.


The problem with ProRes 4444 is the size of the resultant file. I'm not sure if you've already got all those PNGs that adding 4x4 to the mix would make any difference. Consider that if you're creating a template that is stored on your main hard drive in ~/user/Movies/Motion Templates — that the media you add to the template is *saved* into the template's Media folder with the template. Whichever setup uses the least memory would probably be best.


When I made my Film Hair Effect, I hand-drew all the hair shapes and only used 14 different shapes (to be scaled and rotated randomly). Its Media folder is empty!

Motion: How to randomly pick and place dust/hair PNGs? - per frame.

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.