5
$\begingroup$

Many years ago when I started using Cinema 4D, I was inspired by the artist collective Zeitguised. (Their work is incredible, highly recommending Googling them.)

Using C4D's Mograph interface I was able to easily create this type of object (a volume filled tightly with primitives), but I've never found an elegant solution to doing it in Blender:

enter image description here enter image description here

I've ruled out the idea of using Geometry nodes because there doesn't seem to be an elegant way to pack geometry without overlap. (Setting instancing to poisson disc doesn't really work for non-round objects being packed edge to edge without overlap.)

I figured I'd bring this to the community and see what solutions you guys would come up with.

NOTE: The steps for creating such an object in C4D would be as follows:

  1. Create volume mesh
  2. Create object(s) to pack into mesh
  3. Tag the objects for packing as 'Rigid Body'
  4. Fill the volume mesh with the objects using a Mograph modifier
  5. Play the simulation until the rigid bodies 'settle' into place, packed tightly together
  • I've outlined the steps above just in case there is a similar workflow to Blender that I'm not aware of. If it was possible to assign Rigid Body dynamics to particles then this solution would work quite well but sadly Blender just isn't there yet.
$\endgroup$
3
  • $\begingroup$ blender.stackexchange.com/questions/80690/… $\endgroup$ Dec 3, 2022 at 22:54
  • $\begingroup$ @DuarteFarrajotaRamos Cool solution, but doesn't really answer the 'fill volume' part of the question $\endgroup$ Dec 4, 2022 at 2:16
  • 1
    $\begingroup$ @GlenCandle Duarte's answer does fill volume, it's just that it does so with little 'chaos' - it's all cylinders with varying radius but same orientation. Give your cylinders random orientations in the same way they are given random scale, change the container and that's pretty much all you need to do. Except in his answer the container has an open top and gravity is condensing objects, in your case perhaps you want to turn the gravity off, make the container water-tight and make the objects grow during the simulation… $\endgroup$ Dec 4, 2022 at 16:27

1 Answer 1

7
$\begingroup$

As far as I know, the particle system doesn't support self-collision of instances. There are some workarounds for perfect spheres, but that's about it. I suspect we could get better solutions before the new year is out with the new simulation nodes, but in the meantime here's a simple idea: Let's say you have a bunch of objects; with the help of Geometry Nodes, you could delete the ones that's left outside a certain object's volume:

That's the easy part. If you now:

  • Put an Empty right in the middle of those objects, enable its Force Field, and set a negative value for its Strength so it's an attractive force instead of repelling

enter image description here

  • Enable Rigid Body for all your objects (here they're just spheres, but they could be anything),
  • Scale them into different sizes for variety. You can use Object menu > Transform > Randomize Transform > Scale (Scale Even),
  • Press Play on the Timeline and let the simulation run,

they should end up in a spherical pile bunched up around the Empty, hopefully the smaller objects filling the spaces in between the bigger ones. Combined with the Geometry Nodes setup above, you can get a result like this:

enter image description here

My machine is pretty old so I couldn't play around with it too much, but I'm guessing you could come pretty close to the C4D result with a bit of trial and error—though not as easily or neatly, unfortunately.

$\endgroup$
1
  • $\begingroup$ Hey @Kuboå I love this! Very creative solution. I will do some experimentation with other geometries and see how tightly the objects can be packed into the volume. Thanks for sharing! $\endgroup$ Dec 5, 2022 at 1:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .