best workflow for working with slow TissueSolverVellum
1480 6 1- jmbrodsky
- Member
- 10 posts
- Joined: April 2024
- Offline
Hi! I'm currently working with the TissueSolverVellum node and simulating the tissue/core pass is very slow. Several hours to sim 100 frames of anim.
What's the best workflow to iterate faster with the TissueSolverVellum node?
I'm caching out the TissueSolidify node as suggested in https://www.sidefx.com/docs/houdini/muscles/workflow.html [www.sidefx.com]
but it's still super slow.
That doc mentioned suggested using a Blast node to sim just portions of the tissue mesh at a time. What's the best way to do that?
Lastly, I tried using a Group Create node to select the points of the hand and exclude them from the sim however the hand just goes limb like an empty glove lol. I'll attach a screen grab Is that the correct result? Maybe I misunderstood the reason for that
What's the best workflow to iterate faster with the TissueSolverVellum node?
I'm caching out the TissueSolidify node as suggested in https://www.sidefx.com/docs/houdini/muscles/workflow.html [www.sidefx.com]
but it's still super slow.
That doc mentioned suggested using a Blast node to sim just portions of the tissue mesh at a time. What's the best way to do that?
Lastly, I tried using a Group Create node to select the points of the hand and exclude them from the sim however the hand just goes limb like an empty glove lol. I'll attach a screen grab Is that the correct result? Maybe I misunderstood the reason for that
- johm
- Staff
- 138 posts
- Joined: Dec. 2010
- Offline
If the tissue solve is taking a long time it's probably trying to resolve collisions (unnecessary collisions). But this is just my guess.
Are there portions of your internal geometry intersecting with the tissue exterior? I ask because in your mp4 attachment, it looks like you might have solidified the tissue *after* deleting portions of the surface geometry?
If you are using Blast to delete sections of your tissue, you may want to group all the points on the blast boundary and include them in the rigid points group (at least temporarily while your solving with a section of your tissue).
I believe the mention of using a Blast sop in the documentation was not trying to suggest a workflow where multiple pieces are solved one at a time. Rather, the Blast workflow is only meant to serve as an expedited testing workflow. ie, it's quicker to simulate with a small section of tissue before committing to the whole creature.
Regarding the limp hand, are there bones in that area? The Rigid Group is simply given a stiffer attachment between the surface points and the internal geometry. If there are no bones, there's nothing to attach to.
Are there portions of your internal geometry intersecting with the tissue exterior? I ask because in your mp4 attachment, it looks like you might have solidified the tissue *after* deleting portions of the surface geometry?
If you are using Blast to delete sections of your tissue, you may want to group all the points on the blast boundary and include them in the rigid points group (at least temporarily while your solving with a section of your tissue).
I believe the mention of using a Blast sop in the documentation was not trying to suggest a workflow where multiple pieces are solved one at a time. Rather, the Blast workflow is only meant to serve as an expedited testing workflow. ie, it's quicker to simulate with a small section of tissue before committing to the whole creature.
Regarding the limp hand, are there bones in that area? The Rigid Group is simply given a stiffer attachment between the surface points and the internal geometry. If there are no bones, there's nothing to attach to.
- jmbrodsky
- Member
- 10 posts
- Joined: April 2024
- Offline
Hi John! I packed up all the alembics and the hip file in a zip [drive.google.com]. It would be amazing if you could take a look at it and making suggestions how I could speed up the tissue solve? I was messing around with the blast node trying to sim just part of the tissue but you can disable that. One thing I ran into was I ran a shrink wrap on the tissue model to suck it down to the muscle to model my own core surface... There isn't much clearance in places between the core and the tissue surface. I actually had to pull the core surface in a bit and it sinks below the muscle in places.
I'm curious. Do we need a core layer and surface or could we get away with just having a tissue tet/surface riding on the muscle sim?
thanks!
Jeff
I'm curious. Do we need a core layer and surface or could we get away with just having a tissue tet/surface riding on the muscle sim?
thanks!
Jeff
- johm
- Staff
- 138 posts
- Joined: Dec. 2010
- Offline
Just for clarity:
Internal Geometry (muscles and bones) is both collision geometry, and an attachment target.
The Core attaches to the internal geometry.
The Core uses an attachment stiffness multiplied by the corefalloff attribute. Zero corefalloff means the core will not attach to the bones. Corefalloff of 1.0 means it's firmly attached.
The Core has collisions disabled.
Tissue (tetrahedrons) are attached to the Core. This attachment is weighted by the Tissue Attach Stiffness property. Tissue tetrahedrons have collisions disabled.
Tissue tetrahedrons are more often than not occupying the same space as the muscles and bones. Since the tissue tets do not collide with anything, this is allowed.
The Tissue Surface (triangles) have collisions enabled.
Tissue Surface has an attachment to the muscles and bones which is weighted by the Surface Attach Stiffness property.
The Rigid Group is a special point group that has collisions disabled, and a separate attachment stiffness to the muscles and bones.
Internal Geometry (muscles and bones) is both collision geometry, and an attachment target.
The Core attaches to the internal geometry.
The Core uses an attachment stiffness multiplied by the corefalloff attribute. Zero corefalloff means the core will not attach to the bones. Corefalloff of 1.0 means it's firmly attached.
The Core has collisions disabled.
Tissue (tetrahedrons) are attached to the Core. This attachment is weighted by the Tissue Attach Stiffness property. Tissue tetrahedrons have collisions disabled.
Tissue tetrahedrons are more often than not occupying the same space as the muscles and bones. Since the tissue tets do not collide with anything, this is allowed.
The Tissue Surface (triangles) have collisions enabled.
Tissue Surface has an attachment to the muscles and bones which is weighted by the Surface Attach Stiffness property.
The Rigid Group is a special point group that has collisions disabled, and a separate attachment stiffness to the muscles and bones.
- johm
- Staff
- 138 posts
- Joined: Dec. 2010
- Offline
jmbrodsky
I'm curious. Do we need a core layer and surface or could we get away with just having a tissue tet/surface riding on the muscle sim
If you use the TissueSolver, then yeah, you have to use that setup.
(...But that's not 100% true. So long as you understand the relationships I just outlined above, you can break rules accordingly. For instance, the TissueSolver will still work technically if you blast the core and core surface upstream from the solver. But the muscle and bone attachment will be strictly coming from the surface triangles.)
The SkinSolver on the other hand is intended to work more like the outermost layer of tissue.
I have tried a Skinsolver directly over Frankenmuscles and it worked out pretty well.
- johm
- Staff
- 138 posts
- Joined: Dec. 2010
- Offline
The biggest improvement in speed will come from reducing the heft of the Internal Geometry. Fewer points/prims will result in faster collision detection and sliding.
You can reduce the pointcount on the animated bones substantially and not lose much at all. It would help speed up your muscle sim as well. The muscle sim could be lower rez also, but you may want or need them to be higher rez for quality reasons. (I personally go as low rez as I can since muscles get buried deep below the skin anyway). In that case, use a PolyReduce with a PointDeform to down-rez post sim.
I also reshaped your core surface geo to something that I think will give you better results. ie a little more space for tissue action.
You can reduce the pointcount on the animated bones substantially and not lose much at all. It would help speed up your muscle sim as well. The muscle sim could be lower rez also, but you may want or need them to be higher rez for quality reasons. (I personally go as low rez as I can since muscles get buried deep below the skin anyway). In that case, use a PolyReduce with a PointDeform to down-rez post sim.
I also reshaped your core surface geo to something that I think will give you better results. ie a little more space for tissue action.
- jmbrodsky
- Member
- 10 posts
- Joined: April 2024
- Offline
-
- Quick Links