Coordinates and Units!

The global coordinates system is shown as attached

While the local coordinates system of the force plates exchanged (Y & Z) correct?
The force plates in a C3D file adopts also Z-axis perpendicular to the force plate surface.
Does AnyBody adapt to this change in the Y and Z axis when importing C3D file?..Forces (Fy & Fz) and moments (My & Mz)

If the units of the input C3D file are in N.mm, how to scale it in AnyBody to Nm?

I tried in Mokka to scale it but AnyBody still reads it in N.mm
I know how to scale marker points from mm to m and where to adjust that, but I couldn't find the command to adjust the units of the moments of the force plate.

When it comes to the labels of the hip joint and LSJ coordinates, does it Corresponds to the global coordinates as summarised below?

X Antero Posterior

Y Proximo Distal

Z Mediolateral

I am not sure what you are asking here. The AnyScript code which sets up the force plates does take into account the force plate information in the C3D file. The coordinate system in your picture is most likely the global (lab) coordinate system.

If you want to see the force plate coordinate system (Segment) then find the object:
Main.EnvironmentModel.ForcePlates.Plate2.ForcePlate.ForcePlateSeg
in the model tree and click F11 to quickly visualize its coordinate system.

If the units of the input C3D file are in N.mm, how to scale it in AnyBody to Nm?

I tried in Mokka to scale it but AnyBody still reads it in N.mm
I know how to scale marker points from mm to m and where to adjust that, but I couldn't find the command to adjust the units of the moments of the force plate.

It should not be necessary to change the scaling of the analog channels if your MoCap system have saved the data correctly according to the C3D specifications. Data is often saved in mm and moments in N.mm. When anybody converts the creates the moments from the analog data the "C3DObject.PointScaleFactor" variable is automatically applied.

So this is probably why you are confused. Since the analog channels can contain all kind of data. Hence it is loaded as raw values. Instead the conversion factor is used by the force plate code when the moment is created.
Since all of this is implemented in AnyScript you can see exactly where this happens or change it if you want:

Look at the following file:
ammr\Tools\AnyMoCap\ForcePlates\ForcePlateTypes.any

For force plate type 2 and 4 this happens at line 320:

  AnyMoment3D Moment = 
  {
    AnyRefFrame  &ref=.ForcePlateSeg.TransducerLocation ;
    Mlocal=.OnOff*{
           .load(.NetEffectMeasure.t)[3],
           .load(.NetEffectMeasure.t)[4],
           .load(.NetEffectMeasure.t)[5]
       }*C3D_OBJECT.PointsScaleFactor;

The load() functions are interpolation functions created earlier from the raw analog data. The final moment is scaled with the PointScaleFactor

When it comes to the labels of the hip joint and LSJ coordinates, does it Corresponds to the global coordinates as summarised below?

What labels are you referring to and what is LSJ coordinates?

This topic was automatically closed 125 days after the last reply. New replies are no longer allowed.