Hi all, I'm trying to create an effect of biological cells multiplying on an arbitrary surface, all squishing together nicely and interacting with each other. Currently, I've gotten nowhere with any part of this. My first thought was to
create a surface to try and cover with cells
scatter points on the surface
copy a sphere (the basic cell) to those points - at this stage the cell is small in scale
spring constrain each copied cell to it's starting location
make the cells FEM organic tissue
grow the size of the cell until they start to squash together nicely
Basically, none of this works, or I don't know how to do it. My first problems are
The radius of the simulated FEM cells does not grow, even though the original cell is keyframed. I've tried setting the default operation of the FEM solver to Set Always, but this did nothing.
What I basically did in here is copying multiple spheres in SOP and used that as FEM object in DOP, the next thing to do is scale all of the spheres in SOP into a different NULL which I called OUT_TARGET_SIZE.
And as last you should take the solid object node in DOP, and in geometry use the “OUT_TARGET_SIZE” null as your rest position, which will make your object grow..
What I basically did in here is copying multiple spheres in SOP and used that as FEM object in DOP, the next thing to do is scale all of the spheres in SOP into a different NULL which I called OUT_TARGET_SIZE.
And as last you should take the solid object node in DOP, and in geometry use the “OUT_TARGET_SIZE” null as your rest position, which will make your object grow..
The part I'm confused about is the foreach. Why is this necessary? Why doesn't the FEM solver just respect the sphere size? (I know what a foreach does, I just don't know why the xform and point SOPs are doing)
I want to scale the spheres individually, (you can also use a second Copy SOP instead but I chose a different way) the xform SOP inside the foreach is used to scale every sphere from the center with centroid() expression.
The point sop is actually very important when using FEM, your target needs to have velocity attributes, I used the normals as my velocity attribute. This way the sphere scales in the direction of the normals.
Oh thats weird, in one of my earlier tests Houdini told me the target required a velocity attribute. I must have passed that onto this setup also so sorry for the confusion.
The “OUT_REST_SIZE” null is the target scale for the spheres to scale to. You can actually animate this node, the FEM does take in account what is the rest position.
What I basically did is I've created a small sphere for simulation, and used a bigger sphere for rest position. What FEM will do with this: it tries to go to rest position, since the start of the sphere is small it will grow to the bigger rest position.
OK, I've tried to duplicate this, but I've immediately run into trouble. I've used the peak node to create a target size for the sphere, I go to solid>Organic tissue, but as soon as I set the rest geometry the FEM solver gives me one of two errors:
Object “sphereobject1”: integer point attribute “initialpid” is missing.
It complains about the number of vertices in the object being different from the number of simulated vertices.
I have no idea what caused either of these messages or what to do about them. This is very frustrating.
Let me know how you get on guys. In the mean time, I'm going to try and figure out how to get the cells to stay fixed to an arbitrary surface. If you have any suggestions, please let me know