How can I populate a model with smaller models? My mission here is to use this Atlas model as a rough container of lego figurines. There are at least two sub-objectives that need to be accomplished:

Fill Atlas object with particles represented by the figurines and then remove container.
Animate removal of container so that the figurines may all fall to the floor.
Generate random assortment of figurines and/or material properties (maybe just color) to populate the container.

Really not sure how to start, but I was thinking maybe there was a way to automate this via Python that will allow me to quickly form a 3d array of these duplicates and apply a random color transformation with each iteration. Alternatively, I thought of iterating through the coordinates of the Atlas and inserting a Lego object with appropriate spacing. If there is a simpler method, pleeease advise! I know filling the container is different from just stacking as an array and will probably affect the physics of the animation. Thank you for any feedback!
Take the Atlas figure, duplicate and apply a displace modifier that makes it smaller (just by a little bit). Use this to spawn particles from source: volume. This prevents any minifigs from sticking out through Atlas. This image shows roughly how the shape would change with a displace modifier. It would not be hollowed out like with a solidify modifier.

Create a particle system. Under render options choose render as object. Select the minifig as the object to render. Play around with particle scale and rotation until it looks good. Apply the particle system under modifiers. Now you have a whole bunch of minifigs filling Atlas.
Select all of the minifigs. Then Object&gt;Rigid Body&gt;Add Active. Now the minifigs will bounce off of each other and whatever objects you set as passive rigid bodies.
Under the material for the minifigs, add an object info node. Use the &quot;random&quot; input from this into a hue/saturation node in order to randomly alter the color of each individual minifig.