please post a simplified example if possible.
Or if you're concerned about confidentiality, you could submit a bug on the support page.
Found 91 posts.
Search results Show results as topic list.
Technical Discussion » Muscle sim - Tissue surface not colliding with muscles
- johm
- 138 posts
- Offline
Rigging » paint a vertex map for Muscle Constraint Properties weight?
- johm
- 138 posts
- Offline
While you can influence the MuscleToBone attachments somewhat, you cannot be entirely explicit with the points and primitives being constrained. The target primitives can be declared in a group, or multiple groups, but the muscle points rely on a muscle_id and a weight/mask.
When constraints use the Attachment Candidates parameter, they build a dictionary attribute that uses a {index:value} structure. The index must be a valid muscle_id, and the value can be any primitive group, ad-hoc or explicit. You can look at the candidates dictionary in the detail attributes of the geometry spreadsheet to help debug if you feel it's misbehaving. One frequently overlooked setting is to make sure your declare a valid muscle_id in the Group Parameter on the MuscleConstraintProperties tab(s). This is where the index key is acquired.
If you want to be more "specific" about which area of a muscle connects to which bone primitives, I suppose you could rely on Frankenmuscles to give you multiple muscle_ids within a single muscle tet mesh. But admittedly, this isn't a perfect solution.
When constraints use the Attachment Candidates parameter, they build a dictionary attribute that uses a {index:value} structure. The index must be a valid muscle_id, and the value can be any primitive group, ad-hoc or explicit. You can look at the candidates dictionary in the detail attributes of the geometry spreadsheet to help debug if you feel it's misbehaving. One frequently overlooked setting is to make sure your declare a valid muscle_id in the Group Parameter on the MuscleConstraintProperties tab(s). This is where the index key is acquired.
If you want to be more "specific" about which area of a muscle connects to which bone primitives, I suppose you could rely on Frankenmuscles to give you multiple muscle_ids within a single muscle tet mesh. But admittedly, this isn't a perfect solution.
Edited by johm - Jan. 17, 2024 13:50:55
Houdini Indie and Apprentice » Muscles/Tissues systems with external collision
- johm
- 138 posts
- Offline
It's possible to re-enable softbody dynamics on the cached muscle and bone geometry being supplied to the TissueSolver.
By toggling TissueSolver > Advanced > Relax Internal Geometry you enable a pin constraint that attaches the muscle and bone geometry to the incoming animated positions. If a pin stiffness attribute exists on the cached geometry, it can modulate the pin attachment strength. With a weakened attachment strength, collisions and other forces will push the cached geometry away from its animation.
In the flipbook below, the external collision object is pushing on the tissue surface. By painting a pinstiffness attribute on the cached muscle geometry, the collider is able to affect the otherwise rigid cache as a softbody. On the right, you can see the displaced muscles extracted from the sim.
By toggling TissueSolver > Advanced > Relax Internal Geometry you enable a pin constraint that attaches the muscle and bone geometry to the incoming animated positions. If a pin stiffness attribute exists on the cached geometry, it can modulate the pin attachment strength. With a weakened attachment strength, collisions and other forces will push the cached geometry away from its animation.
In the flipbook below, the external collision object is pushing on the tissue surface. By painting a pinstiffness attribute on the cached muscle geometry, the collider is able to affect the otherwise rigid cache as a softbody. On the right, you can see the displaced muscles extracted from the sim.
Technical Discussion » Muscle Vellum Solver no caching sim (houdini 19)
- johm
- 138 posts
- Offline
hi LaylaLDP
Unfortunately the cheetah asset is not freely available to test with since a full Ziva license is required.
Maybe you could zip up a small sequence of files output from the bone animation as well as your source muscle surfaces?
Also, it looks like you have FileCache nodes upstream in your muscle configuration that are reading sequeces of geo files? The chain of sops that process your muscles should *not* be time-dependent.
Unfortunately the cheetah asset is not freely available to test with since a full Ziva license is required.
Maybe you could zip up a small sequence of files output from the bone animation as well as your source muscle surfaces?
Also, it looks like you have FileCache nodes upstream in your muscle configuration that are reading sequeces of geo files? The chain of sops that process your muscles should *not* be time-dependent.
Houdini Indie and Apprentice » Deprecated muscle system vs New
- johm
- 138 posts
- Offline
Hi Lucas, sorry but the old system is no longer available. The Inflate SOP (muscle displace) is still alive though.
Technical Discussion » Need Help Ensuring Cohesive Deformation of Anatomical Models
- johm
- 138 posts
- Offline
When you say "...anatomical components are starting to separate..." are you still referring to the refitting process on the initial static model? Or are you point-deforming using an animated target mesh?
...ie is your initial refit used to generate a static output => which is then used as the source mesh in your animated deform? Or are you doing the refit and animation all in one step?
In some cases you may get better results by using two separate PointDeform SOPs. One to do *only* the Capture step, and the other to do only the Deform.
Another trick you might use would be to use the outer skin to deform only the skeletal bones. And if that's looking acceptable, then combine your skin and bones, and use them together as your deformation mesh. This would sandwich all the other anatomical elements inbetween. -sort of a simpler, stripped-down volumetric approach.
...ie is your initial refit used to generate a static output => which is then used as the source mesh in your animated deform? Or are you doing the refit and animation all in one step?
In some cases you may get better results by using two separate PointDeform SOPs. One to do *only* the Capture step, and the other to do only the Deform.
Another trick you might use would be to use the outer skin to deform only the skeletal bones. And if that's looking acceptable, then combine your skin and bones, and use them together as your deformation mesh. This would sandwich all the other anatomical elements inbetween. -sort of a simpler, stripped-down volumetric approach.
Edited by johm - Oct. 20, 2023 13:48:30
Technical Discussion » Musculoskeleton and character mesh are different
- johm
- 138 posts
- Offline
I hope I understand your question...
If you have an animation skeleton (a joint hierarchy) refit to match your target character, and you have the anatomical skeleton (the modeled bone surfaces) also refit to match your target character, then the joint transforms should drive the bone surfaces as you'd expect. Re-weighting should not be necessary.
If you have an animation skeleton (a joint hierarchy) refit to match your target character, and you have the anatomical skeleton (the modeled bone surfaces) also refit to match your target character, then the joint transforms should drive the bone surfaces as you'd expect. Re-weighting should not be necessary.
Technical Discussion » Musculoskeleton and character mesh are different
- johm
- 138 posts
- Offline
you would need to use a combination of TopoTransfer and PointDeform like in the following diagram.
TopoTransfer will conform your source skin topology to the shape of your variant models. You would use landmark locations to ensure feature correspondence is maintained.
Once you have generated a transferred topology (probably best to stash the output as it may be expensive to regenerate), then this will serve as a target, ie Deformed Point Lattice, for the PointDeform SOP to operate on the muscle, bones, or kinefx skel geometry.
Some cleanup may still be necessary, but this approach will get you most of the way there.
TopoTransfer will conform your source skin topology to the shape of your variant models. You would use landmark locations to ensure feature correspondence is maintained.
Once you have generated a transferred topology (probably best to stash the output as it may be expensive to regenerate), then this will serve as a target, ie Deformed Point Lattice, for the PointDeform SOP to operate on the muscle, bones, or kinefx skel geometry.
Some cleanup may still be necessary, but this approach will get you most of the way there.
Edited by johm - Oct. 6, 2023 11:44:30
Technical Discussion » Some advice about muscle and scale of character?
- johm
- 138 posts
- Offline
Technical Discussion » Rigging in the muscle system
- johm
- 138 posts
- Offline
acdum1857
1. In the muscle system, where should the rigging be on the body or on the bones?
In a full simulation of muscle and tissue these are the broad steps:
-rigging and animation is applied to the skeletal bones surfaces only.
-muscles are made solid from your muscle surfaces in a static rest position.
-The solid muscles are then constrained to the animated bones (bone surfaces) and cached to disk as a sequence of geometry files.
-the Muscle Solver is run to perform the simulation
-Tissue is built as a solid from your creature surface.
-the solid tissue is constrained to your muscle and bone geometry in a static rest position.
-The Tissue Solver is run to simulate the tissue which is constrained to the cached muscle and bone animation.
So the short answer is, you animate the bones. The bones drive everything else.
acdum1857
2. Is it possible to import geometry (body/bones) from a rigged object without rigging errors?
If so, where should this import be? Is it the 'Object Merge' at the start of the muscle pass?
Short answer is, yes. It's possible.
The Object Merge named: Import_Animated_Bone_Surfaces should point to the sop that displays the animated bones.
And question 3 is probably answered in #1 above.
The video tutorial is also not applicable to the SOP based workflow we've had since Houdini 19. That video demonstrates the outdated Object-Level workflow.
Technical Discussion » Muscle Constaints, Muscle to Bones
- johm
- 138 posts
- Offline
MuscleToBone Tangent Stiffness should now be working correctly as of Houdini 19.5.585.
Technical Discussion » Muscle Constaints, Muscle to Bones
- johm
- 138 posts
- Offline
A fix for this issue has been recently been made. However, unfortunately, it may not be available until H20.0.
MuscleToBone Tangent Stiffness should now be working correctly as of Houdini 19.5.585.
MuscleToBone Tangent Stiffness should now be working correctly as of Houdini 19.5.585.
Edited by johm - April 13, 2023 13:21:04
Technical Discussion » [Muscles & Tissue] Fast moving character
- johm
- 138 posts
- Offline
It seems like you've tried just about everything I'd suggest. Could you perhaps file a bug with a hip file for us to investigate?
Are the muscles gradually being left behind? Or are you describing what happens immediately on the init frame? If it's the latter, are you using a MusclePreroll SOP to blend your bone animation from tpose to init pose?
Thanks
Are the muscles gradually being left behind? Or are you describing what happens immediately on the init frame? If it's the latter, are you using a MusclePreroll SOP to blend your bone animation from tpose to init pose?
Thanks
Technical Discussion » Trying 19.5 muscle system
- johm
- 138 posts
- Offline
It doesn't look like you have any MuscleToBone constraints?
Do you have a MuscleConstraintProperties node in your setup? Is the MuscleToBone constraint stiffness too low?
Do you have a MuscleConstraintProperties node in your setup? Is the MuscleToBone constraint stiffness too low?
Technical Discussion » Muscle sim - how to control skin attachment
- johm
- 138 posts
- Offline
On TissueSolidify, use the Outliers Visualization Guide to help with setting the layer depth correctly. Or at least to highlight where problem areas exist. This may be a case of having the Surface Offset value pushing the outer surface of the tissue into the muscles.
Technical Discussion » Muscle sim - how to control skin attachment
- johm
- 138 posts
- Offline
Hi Ritchy
You'll need to paint a mask for the area, and use the mask with a TissueProperties node. In the TissueProperties node, set the Surface and Solid Layer Attach Stiffness values to zero. You should also probably set the Sliding Limit Stiffness to zero to have the tissue completely detached.
Future versions of TissueProperties may include parameters that would cull attach costraints that exceed a maximum distance.
But for now, you'll have to rely on zero stiffness attachments.
Also:
Looking at your screen captures, it looks like the tissue and muscle geometries are not aligned. ie, I would expect to *not* see any muscle geometry poking through to the outside of the tissue.
You might need to look at your tpose positions and make sure the muscles and bone are situated within the tissue.
Note that constraints are built with your tissue and muscles and bones all positioned according to their tpose. Once the constraints are established they are the transformed to your start frame.
You'll need to paint a mask for the area, and use the mask with a TissueProperties node. In the TissueProperties node, set the Surface and Solid Layer Attach Stiffness values to zero. You should also probably set the Sliding Limit Stiffness to zero to have the tissue completely detached.
Future versions of TissueProperties may include parameters that would cull attach costraints that exceed a maximum distance.
But for now, you'll have to rely on zero stiffness attachments.
Also:
Looking at your screen captures, it looks like the tissue and muscle geometries are not aligned. ie, I would expect to *not* see any muscle geometry poking through to the outside of the tissue.
You might need to look at your tpose positions and make sure the muscles and bone are situated within the tissue.
Note that constraints are built with your tissue and muscles and bones all positioned according to their tpose. Once the constraints are established they are the transformed to your start frame.
Technical Discussion » simulating flesh- vellum
- johm
- 138 posts
- Offline
The VellumPostProcess node can be used to weld the fractured seams.
Edited by johm - May 16, 2022 15:06:22
Technical Discussion » simulating flesh- vellum
- johm
- 138 posts
- Offline
The SkinSolver in Houdini 19.0 treats skin as a softbody encased in a layer of triangles. This gives you maximum flexibility in driving different looks. ie, your skin can buckle and fold and preserve volume without necessarily looking like a thin garment. The ability to tear or break skin/tissue apart is not currently supported out-of-the-box with the Tissue and Skin nodes. However, they are released as HDAs, so they could be opened up and customized.
Technical Discussion » Deform Tissue With Custom Force?
- johm
- 138 posts
- Offline
hi, and welcome!
In H19.0 the core is treated simply as a means of attachment -in two senses. The core attaches to your input animation (muscles and bones), and, your tissue attaches to the core. Beyond the simple attachment constraints, the core doesn't really contribute in any dynamic way.
In regards to "inward" forces, there are a couple acting on the tissue layers:
-The core and tissue solids respond to the Shrinkage parameters on the Tissue Properties node and affect the Rest Scale of the tets. ie, shrinking the rest scale will effectively pull the tissue surface inward.
-The outer surface points on the tissue have an attachment rest scale (attaching to muscles and bones) that can also be adjusted to pull the outer surface inward. This constraint can offer the most when it comes to producing muscle definition.
The poly lines you referred to are used to generate the weight value that the core-to-animated_geometry attachment relies on. ie, core points closer to the reference lines will have a stronger attachment weight. There are Distance and Falloff parameters to control the weights on the Tissue Solidify Node.
What the quoted excerpt from the docs implies is that when you shrink the core rest scale, the points with a stiffer attachment weight will be constrained more rigidly, and the weaker weighted points will have more freedom to move and respond to the shrinking effect.
In H19.0 the core is treated simply as a means of attachment -in two senses. The core attaches to your input animation (muscles and bones), and, your tissue attaches to the core. Beyond the simple attachment constraints, the core doesn't really contribute in any dynamic way.
In regards to "inward" forces, there are a couple acting on the tissue layers:
-The core and tissue solids respond to the Shrinkage parameters on the Tissue Properties node and affect the Rest Scale of the tets. ie, shrinking the rest scale will effectively pull the tissue surface inward.
-The outer surface points on the tissue have an attachment rest scale (attaching to muscles and bones) that can also be adjusted to pull the outer surface inward. This constraint can offer the most when it comes to producing muscle definition.
The poly lines you referred to are used to generate the weight value that the core-to-animated_geometry attachment relies on. ie, core points closer to the reference lines will have a stronger attachment weight. There are Distance and Falloff parameters to control the weights on the Tissue Solidify Node.
What the quoted excerpt from the docs implies is that when you shrink the core rest scale, the points with a stiffer attachment weight will be constrained more rigidly, and the weaker weighted points will have more freedom to move and respond to the shrinking effect.
Technical Discussion » Creating Muscles in new Muscles System
- johm
- 138 posts
- Offline
tarincamarena
HI does anyone know a good way to fix minor intersections of the muscles? Also I cant get the skin pass to work at all. It just falls straight down and doesn't collide with the tissue pass?
At the present time you need to rely on a Boolean SOP to detect intersections and address fixes that way. You can also try moving muscles and bones into a non-intersecting state, and then simulating them back into position with collisions.
And please provide us with a hip file for the skin pass issue.
-
- Quick Links