Skip to content

Muscles fail to wrap around wrapping cylinders after scaling #3043

Open
@suhlrich

Description

@suhlrich

When scaling a body with non-uniform scale factors (scale_x != scale_y != scale_z), wrap cylinders can have muscles that no longer wrap around them after scaling.

Since a PathPoint is scaled linearly by the ScaleSet, and the radius of a WrapCylinder is scaled by an average of multiple ScaleSet components, sometimes the WrapCylinder scales more than the PathPoint and causes the muscle to no longer wrap.

As a simple example, if a PathPoint were located at (1,0,0), the WrapCylinder z axis was (0,0,1) and its radius was 1, and the scale set was (1,2,1), the PathPoint would not move, but the radius of the WrapCylinder would increase to 1.5, moving the PathPoint from the surface of the cylinder to inside it.

Attached are files replicate the problem for the iliacus. This issue is common for iliacus, psoas, and gmax muscles in this model.
WrappingIssue.zip

In theory, you'd want all points on a wrapping surface to scale linearly with the scale set like Points do, but I can't think of a way to ensure this by adjusting the cylinder length and radius. A cumbersome solution would be to search across many poses after scaling and check for large pre-post-scaling changes in moment arms or muscles that pass through their wrapping surfaces. This would be quite slow.

image

@antoinefalisse

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions