local coordinates problem in muscle force calculation

Dear experts:

I have a problem regarding local coor. and the corresponding transformation matrix needed when calculating muscle forces.

As shown in the tutorial (http://www.anybodytech.com/fileadmin/AnyBody/Docs/Tutorials/chap8_Finite_element_analysis/lesson3.html),
you can defined a local coordinates based on the anatomical part of your interest. The muscle forces will be calculated n this local coordinates - the locations of the muscle insertion points or Pos values will not change as the model moves, which is not the case if global coordinates are used.

Here comes the problem: to generate a FEA input file, the geometry or the meshes (.inp), which will be combined with the muscle / joint forces, are defined in the global coor. Therefore there is almost guaranteed to be a mismatch between the geometry (.inp) and the muscle forces we computed.

I was trying to solve above problem by transforming the mesh (*.inp) to the local coor. I think the following segment copied from my xml force file is a starting point: there are some matrixes defined at time index = 0, and I think some of them might be the transformation matrix connecting global and the local coor. at that specific time point. Can anyone let me know which one it is? or show me the correct way to do this?


Best regards


<!-- ==========Start of time-step =================== -->
<TimeSample index=“0”>
<t type=“float” value=“2.000000000000000e+000”/>
<Gravity type=“vector” x=“3.649992032449139e+000” y="-8.737211821424804e+000" z="-2.564134893216914e+000"/>
<Segment index=“0”>
<Name type=“string” value=“Main.Studies.HumanModel.BodyModel.Left.Leg.Seg.Shank”/>
<m type=“float” value=“2.883000000000000e+000”/>
<Jmatrix type=“matrix” nRow=“3” nCol=“3”>
</Jmatrix><rCoM type=“vector” x=“2.374133030849870e-002” y="-1.143380168122008e-001" z=“2.343257903539772e-003”/>
<r type=“vector” x="-5.000000000000003e-002" y=“4.500000000000002e-001” z=“1.999999999999998e-002”/>
<Axes type=“matrix” nRow=“3” nCol=“3”>
</Axes><rDot type=“vector” x="-1.211743165097565e+000" y=“4.027514818380557e-001” z=“7.685762770377194e-001”/>
<Omega type=“vector” x=“3.178608842197368e+000” y=“6.602155920056385e-001” z=“5.668407210068993e+000”/>
<rDDot type=“vector” x="-9.651065718824285e+000" y="-2.821212845479371e+001" z=“3.407489771149584e+000”/>
<OmegaDot type=“vector” x=“1.537237566709294e+000” y=“1.471735401938587e+001” z=“1.867563051282057e+001”/>
</Segment> <Forces count=“205”>


  1. Output the surface in the local (segmental) reference frame to generate your mesh.
  2. Use segmental reference for the output.

(3) if you do not want to remesh your model - you could create a transform from/to mesh to/from 1. by using landmarks, AnyFunTransform3DLin2 and Mode=VTK_LANDMARK_RIGIDBODY.


thanks Pavel.

I took your advice and now it works.

Thanks again!