Boolean problem with a sparse particle array

:sick: Help:
* I want to invert a sparse particle array.
* There are two objects:
1 a cube
2 a cubic particle mesh of sheroids (collapsed into a polygon mesh)
* The Boolean operator, be it the modifier or the creator either :poop: crashes C3D, results in a :devilish: void screen or just shows :rolleyes: one of the Boolean components.

* Basically, I want the result to be a cuboid Swiss cheese with interconnected holes in it. The solid cheesy bit will then be the basis of some biological modelling.
* Of course, this works faultlessly when I replace the particle mesh with individual spheres. However, this is not really an option as I will have to animate the cheesy voids (structure, distribution and sizes) to show morphologic processes.
* Thank you for any ideas


Screenshot 2019-11-24 at 19.25.45.png


* PS: Sorry, I had to reduce the size of my sample .jas to an absolute minimum as this forum does not even allow an upload of 150kBytes.
 

Attachments

  • Sparse3DArray.jas.zip
    15.3 KB · Views: 230
I'm trying to comprehend. Do you want to animate the holes in the "Swiss cheese" for position and scale?
Can't you just animate the individual spheres in the Boolean?
 
Hello ZooHead
* Yes, animating the spheres (= voids) in the Boolean is my aim in this. However, I can´t get the Boolean to function to show the subtracted cheesy bits of the cube.
* I do not want to show the spheres as 3D meshes floating in a cube, I need to show them as holes submersed in a solid cubic block.
 
Wow... cool, not what I expected.

The animated holes worked for me.
I keyframed the Boolean for rotation of all spheres and keyed one sphere individually.

holy_cheese.gif
 
I doubt I will have a solution but maybe I can help by asking a few questions to clarify what you intend to do. I cannot grasp the concept.

I opened the .jas file to make sure I correctly visualized your basic idea. The overlapping spherical voids in post #1 don’t look like the top picture in post #4, which is a tube with a voronoi-type structure. I have posted some tutorials that show how to make the tube, but the process is completely different from an animated Boolean using spheres.

The bottom picture in post #4 is also confusing. Which part is the relevant structure, the pores in the walls or the tubules in the foreground?

I have wasted a lot of time trying to make/fake 3D voronoi structures that accurately resemble cells. Voronoi structures that are ubiquitous in nature are impossible to mimic using C3D. I have requested this function on the forum Wish List*. This would extend C3D’s usefulness to people making organic models, a whole new user base of scientists. I would guess Helmut would be the first to make good use of this. It would also expand the range of possible designs for the rest of us, from 3D printers to architects. Some of my attempts started with a particle mesh of crumpled balls that I animated with gravity into a cubic container so they settled into a box full of gravel. A Boolean subtraction resulted in Swiss cheese, but I never got a 3D texture resembling bread or sponge.

It will be interesting to see how this forum thread progresses.

*https://www.cheetah3d.com/forum/index.php?threads/13259/post-115531

Edit: Zoohead, can you attach your file?
 
I´m neither sure why the converted Particle-mesh don´t work for you inside the Boolean-modifier for example like it does here - nor if it´s useful in your concept:
SwissCheese.gif


Cheers
Frank
 
* Thank you, everybody.
* After more experiments I must conclude that this combination of box + instances (of whatever) does not function consistently in a Boolean.
* None of the subsequent instantiations can be a component of a stable Boolean topology:
1 Ring
2 Array
3 Chain
4 Particle Array / Mesh / Spline
* Frequently C3D crashes, sometimes the Boolean is not executed at all, occasionally it works but more often there is a random result, ie I get a few voids but most of the instantiations are totally ignored.
* It seems as if infinitesimal transforms (1/1000th of a grid interval / a minute fraction of an angle) can cause a specific topology to function or to generate a false Boolean.
* Random result
* Note that the Boolean is actually executed properly but the circular "covers" are not subtracted.
* Oddly enough, trivial changes (eg toggle ghosted) recreates the Boolean and results in a differing distribution of voids.
Screenshot 2019-11-25 at 17.57.17.png

* Same as above, shifted by 0.001
Screenshot 2019-11-25 at 17.58.03.png


* It seems that the concept, Booleans incorporating instances, for unknown reasons can not be realised in C3D V7.
* As mentioned above and proven by ZooHead + others, individual voids work as expected in a Boolean construct. Unfortunately, flexible and dynamic parametrisation is not available in this concept. I absolutely need such keyframing to reflect biological processes of some complexity.

:unsure: Back to square one for some additional brainstorming. Some infusions of fermented medication will be applied to treat chronic frustrations :sick:
 

Attachments

  • Screenshot 2019-11-25 at 17.57.17.png
    Screenshot 2019-11-25 at 17.57.17.png
    141.8 KB · Views: 225
* Good catch, Frank!
* I may have discovered one reason for the Boolean inconsistencies mentioned above. I will check my theory in more tests and report if verified (or falsified).
 
1 False Booleans seem to be the result of a close proximity between adjoining meshes of the instanced 2ndary elements in a Boolean operator. It appears as if the Boolean operation (add / sub / intersect) is executed properly, but C3D can´t determine which bisected submeshes need be removed. This "confusion" can also be seen in the view port where meshes are shown with subtle differences of colour.
2 Where no such proximity occurs (as in Frank´s sample above) the Boolean is stable.
3 Where parameters of instances are animated individual meshes can come into contact and Boolean functions fail to execute. The relative spatial distribution of the secondary instances must be carefully analysed before any Boolean is implemented to ensure that a correct result is calculated.

SS1.png


SS2.png


SS3.png
 
Back
Top