I will say for tree sims that i’ve found a lot of the suggestions from this paper from this year’s siggraph to be really helpful: storage.googleapis.com/pirk.io/projects/stressful/index.html
Here’s the method that seems to work for me! The input is a connected set of tree edges, with pscales, and branch_ids: Generate a bunch of fake tree strands (i use find shortest path from every point in the tree, back to the root). Generate an orientation frame along the findshortest path curves (orient along curve). Randomly rotate the resulting normals strand wise (so every normal in a strand is rotated the same amount). Then I offset the resulting curves along the normal multiplied by pscale and a random value from 0-1 per strand Then you randomly resample them and subdivide ( i wrote my own stupid little subdivide node, just to add exactly one point at the midpoint between any two points on a given strand). Then you make glue constraints between nearest subdivided points on the same branch (taking advantage of our branch_id attribute). And then lastly you can embed your original tree curves into this as well with glue constraints, so you an easily extract it post sim.
But this seems to do a good job of letting you really get stiff results with vellum, like a wire solver. And then you can inject forces at brinch tips (leaves) and ideally the forces will propagate.
i find that the random resampling and subdivision is like incredibly important to add structure to the wires. Because otherwise the distribution of glue constraints is too regular, and it causes the whole thing to buckle
Oh and in my case i would turn off self collisions because i didnt want to recompute pscales for the strands out of laziness. But you’ll need to compute non intersecting pscales if you want to keep self collision on
I’ll see if i have any time today to whip up an example
Attachments in this post:
http://fx-td.com/houdiniandchill/wp-content/uploads/discord/20251808/08/25/image.png