Shape transform with boundary condition (without mechanical FEM) problem

Hi there! I’m currently working on an automated ligament reconstruction project, and I need some guidance from the community. In the attached image, you can see several ligaments connecting two bones in a standard position. After slightly moving one bone, the intersection surface mesh (boundary condition) of these two parts should remain the same. I’m looking for a method or component that can transform/morph the original ligament into a different shape to accommodate the translated bone (as shown in another image),
without relying on Finite Element Simulation (FEM).

imgunt
imgt

So far, I’ve come up with two potential approaches, but both involve processing outside of Grasshopper:

  1. FEM simulation for ligament mesh reconstruction (not preferred): Using FEM, I could predict the shape change, calculate the translation of each node, and reconstruct the mesh with translated points. However, individual shape variances exist within each bone set, and most collected data lacks ligament shape information. Additionally, the volume is expected to be different, which contradicts the small volume change assumption in mechanical finite element methods. In summary, I’m seeking a geometry-based model rather than a mechanics-based one.

  2. Statistical shape method for ligament mesh reconstruction: By leveraging several ligament models extracted from Blender z-anatomy, I can apply Procrustes analysis and Principal Component Analysis to create a statistical shape model, generating a new model using the derived components. In the past, I’ve executed this process by calling an executable from a separate folder and reading the output.

I’m currently developing the second approach using Python and will proceed with it if no better alternatives exist within Grasshopper. As a Grasshopper novice, I’d greatly appreciate any suggestions or more direct solutions to address this problem. Thanks in advance for your help!

Ligamentgeneration.gh (538.3 KB)

make connection curve across two meshes.gh (829.2 KB)

I think you need to make it in two steps:
First, build a connection curve across two meshes that have fixed anchor points relative to the parent meshes.
Second, make or transform the ligament according to that connection curve. So curve stretches, it stretches.

Your file is complicated and has plugins I never use. So I make a new file to show you how to make the first step. It has plugins.

Honeycam 2023-05-07 23-56-55

2 Likes