[38ba34]: / Body / AAUHuman / Arm / HandSeg.any

Download this file

154 lines (117 with data), 10.2 kB

// This file contains segment inertia properties and geometry used for muscle wrapping.
// The file includes a number of segment files which contains muscles attachment points and 
// bonylandmarks.



AnySeg Hand ={
  
  AnyMat33 Mirror={{1,0,0},{0,1,0},{0,0,..Sign}};
  
  AnyFunTransform3D &Scale=..Scaling.Hand.ScaleFunction;
  r0=.WristJointSeg.RadialUlnarDeviation.sRel*.WristJointSeg.Axes0'+.WristJointSeg.r0 - Ref.wj.sRel * Axes0';//.Radius.wj.sRel*.Radius.Axes0'+.Radius.r0+; 
  
  #include "../DrawSettings/Nodes.any"
  
  AnyFolder &Data = ..ModelParameters.HandSeg.SimpleHandSeg;
  
  AnyVar MassS = ..MassScaling.Hand.MassScale;
  
  AnyVar MassStandard = ..StandardParameters.Hand.Mass; // Veeger1997 subject no.4. 
  
  Mass = MassS*MassStandard;
  
  AnyVar LengthStandard = 0.1;// Guesstimate..
  
  AnyVar Length = 0.1; // Guesstimate..
  AnyVar Radius = (Mass/(pi*Length*..StandardParameters.Hand.Density))^0.5;
  
  AnyVar Ixx = 0.25*Mass*Radius*Radius + 1/12*Mass*Length*Length;
  AnyVar Iyy = 0.5*Mass*Radius*Radius;
  AnyVar Izz = Ixx; 
  Jii = {Ixx,Iyy,Izz};
  
  sCoM=Scale(Data.sCoM_pos);
  JaboutCoMOnOff = On;
  
  AnyRefNode AnatomicalFrame = {};
  AnyRefNode& MoCapMarkerFrameAMMR24 = AnatomicalFrame; ///< For backwards Compatibility with AMMR 2.4 MoCap Marker protocols
  AnyRefNode& ScalingNode = AnatomicalFrame;
  AnyFunTransform3D& GeomScale = Scale;
  
  // Not used or duplicated in the Ref folder (kept for now)
  //AnyRefNode Hand     ={ sRel=.Scale({-0.1,0,.0})*.Mirror;};
  //AnyRefNode PalmJoint={ sRel=.Scale({-0.08,-0.02,0.0})*.Mirror;};
  //AnyRefNode Thumb3joint={ sRel=.Scale({0.0,0,0.05})*.Mirror;};
  
  AnyRefNode Ref={
  
   AnyRefNode wj={ sRel=..Scale(..Data.wj_pos*..Mirror);
     //Note:STC Issue for scaling 
     ARel = {{1,0,0},
       {0,....Sign*1,0},
       {0,0,....Sign*1}
     }; 
   };
   
   AnyRefNode PalmJoint                                 = { sRel = ..Scale(..Data.PalmJoint_pos                                *..Mirror); };
   AnyRefNode Hand                                      = { sRel = ..Scale(..Data.Hand_pos                                     *..Mirror); };
   AnyRefNode Via1_Extensor_Indicis                     = { sRel = ..Scale(..Data.Via1_Extensor_Indicis_pos                    *..Mirror); };
   AnyRefNode I_Extensor_Indicis                        = { sRel = ..Scale(..Data.I_Extensor_Indicis_pos                       *..Mirror); };
   AnyRefNode I_Extensor_Pollicis_Longus                = { sRel = ..Scale(..Data.I_Extensor_Pollicis_Longus_pos               *..Mirror); };
   AnyRefNode Via1_Extensor_Pollicis_Longus             = { sRel = ..Scale(..Data.Via1_Extensor_Pollicis_Longus_pos            *..Mirror); };
   AnyRefNode I_Extensor_Pollicis_Brevis                = { sRel = ..Scale(..Data.I_Extensor_Pollicis_Brevis_pos               *..Mirror); };
   AnyRefNode Via1_Extensor_Pollicis_Brevis             = { sRel = ..Scale(..Data.Via1_Extensor_Pollicis_Brevis_pos            *..Mirror); };
   AnyRefNode I_Abductor_Pollicis_Longus                = { sRel = ..Scale(..Data.I_Abductor_Pollicis_Longus_pos               *..Mirror); };
   AnyRefNode Via1_Abductor_Pollicis_Longus             = { sRel = ..Scale(..Data.Via1_Abductor_Pollicis_Longus_pos            *..Mirror); };
   AnyRefNode I_Extensor_Carpi_Ulnaris                  = { sRel = ..Scale(..Data.I_Extensor_Carpi_Ulnaris_pos                 *..Mirror); };
   AnyRefNode I_Extensor_Carpi_Radialis_Brevis          = { sRel = ..Scale(..Data.I_Extensor_Carpi_Radialis_Brevis_pos         *..Mirror); };
   AnyRefNode Via_Extensor_Carpi_Radialis_Brevis        = { sRel = ..Scale(..Data.Via_Extensor_Carpi_Radialis_Brevis_pos       *..Mirror); };
   AnyRefNode I_Extensor_Carpi_Radialis_Longus          = { sRel = ..Scale(..Data.I_Extensor_Carpi_Radialis_Longus_pos         *..Mirror); };
   AnyRefNode I_Flexor_Carpi_Ulnaris                    = { sRel = ..Scale(..Data.I_Flexor_Carpi_Ulnaris_pos                   *..Mirror); };
   AnyRefNode I_Flexor_Carpi_Radialis                   = { sRel = ..Scale(..Data.I_Flexor_Carpi_Radialis_pos                  *..Mirror); };
   AnyRefNode Via_Flexor_Carpi_Radialis                 = { sRel = ..Scale(..Data.Via_Flexor_Carpi_Radialis_pos                *..Mirror); };
   AnyRefNode I_Palmaris_Longus                         = { sRel = ..Scale(..Data.I_Palmaris_Longus_pos                        *..Mirror); };
   AnyRefNode Via_Palmaris_Longus                       = { sRel = ..Scale(..Data.Via_Palmaris_Longus_pos                      *..Mirror); };
   AnyRefNode I_Flexor_Digitorum_Superficialis_Digit2   = { sRel = ..Scale(..Data.I_Flexor_Digitorum_Superficialis_Digit2_pos  *..Mirror); };
   AnyRefNode I_Flexor_Digitorum_Superficialis_Digit3   = { sRel = ..Scale(..Data.I_Flexor_Digitorum_Superficialis_Digit3_pos  *..Mirror); };
   AnyRefNode I_Flexor_Digitorum_Superficialis_Digit4   = { sRel = ..Scale(..Data.I_Flexor_Digitorum_Superficialis_Digit4_pos  *..Mirror); };
   AnyRefNode I_Flexor_Digitorum_Superficialis_Digit5   = { sRel = ..Scale(..Data.I_Flexor_Digitorum_Superficialis_Digit5_pos  *..Mirror); };
   AnyRefNode Via_Flexor_Digitorum_Superficialis_Digit5 = { sRel = ..Scale(..Data.Via_Flexor_Digitorum_Superficialis_Digit5_pos*..Mirror); };
   AnyRefNode Via_Flexor_Digitorum_Superficialis_Digit4 = { sRel = ..Scale(..Data.Via_Flexor_Digitorum_Superficialis_Digit4_pos*..Mirror); };
   AnyRefNode Via_Flexor_Digitorum_Superficialis_Digit3 = { sRel = ..Scale(..Data.Via_Flexor_Digitorum_Superficialis_Digit3_pos*..Mirror); };
   AnyRefNode Via_Flexor_Digitorum_Superficialis_Digit2 = { sRel = ..Scale(..Data.Via_Flexor_Digitorum_Superficialis_Digit2_pos*..Mirror); };
   AnyRefNode I_Flexor_Digitorum_Profundus_Digit2       = { sRel = ..Scale(..Data.I_Flexor_Digitorum_Profundus_Digit2_pos      *..Mirror); };
   AnyRefNode I_Flexor_Digitorum_Profundus_Digit3       = { sRel = ..Scale(..Data.I_Flexor_Digitorum_Profundus_Digit3_pos      *..Mirror); };
   AnyRefNode I_Flexor_Digitorum_Profundus_Digit4       = { sRel = ..Scale(..Data.I_Flexor_Digitorum_Profundus_Digit4_pos      *..Mirror); };
   AnyRefNode I_Flexor_Digitorum_Profundus_Digit5       = { sRel = ..Scale(..Data.I_Flexor_Digitorum_Profundus_Digit5_pos      *..Mirror); };
   AnyRefNode Via_Flexor_Digitorum_Profundus_Digit5     = { sRel = ..Scale(..Data.Via_Flexor_Digitorum_Profundus_Digit5_pos    *..Mirror); };
   AnyRefNode Via_Flexor_Digitorum_Profundus_Digit4     = { sRel = ..Scale(..Data.Via_Flexor_Digitorum_Profundus_Digit4_pos    *..Mirror); };
   AnyRefNode Via_Flexor_Digitorum_Profundus_Digit3     = { sRel = ..Scale(..Data.Via_Flexor_Digitorum_Profundus_Digit3_pos    *..Mirror); };
   AnyRefNode Via_Flexor_Digitorum_Profundus_Digit2     = { sRel = ..Scale(..Data.Via_Flexor_Digitorum_Profundus_Digit2_pos    *..Mirror); };
   AnyRefNode I_Extensor_Digitorum_Digit2               = { sRel = ..Scale(..Data.I_Extensor_Digitorum_Digit2_pos              *..Mirror); };
   AnyRefNode I_Extensor_Digitorum_Digit3               = { sRel = ..Scale(..Data.I_Extensor_Digitorum_Digit3_pos              *..Mirror); };
   AnyRefNode I_Extensor_Digitorum_Digit4               = { sRel = ..Scale(..Data.I_Extensor_Digitorum_Digit4_pos              *..Mirror); };
   AnyRefNode I_Extensor_Digitorum_Digit5               = { sRel = ..Scale(..Data.I_Extensor_Digitorum_Digit5_pos              *..Mirror); };
   AnyRefNode Via_Extensor_Digitorum_Digit5             = { sRel = ..Scale(..Data.Via_Extensor_Digitorum_Digit5_pos            *..Mirror); };
   AnyRefNode Via_Extensor_Digitorum_Digit4             = { sRel = ..Scale(..Data.Via_Extensor_Digitorum_Digit4_pos            *..Mirror); };
   AnyRefNode Via_Extensor_Digitorum_Digit3             = { sRel = ..Scale(..Data.Via_Extensor_Digitorum_Digit3_pos            *..Mirror); };
   AnyRefNode Via_Extensor_Digitorum_Digit2             = { sRel = ..Scale(..Data.Via_Extensor_Digitorum_Digit2_pos            *..Mirror); };
   AnyRefNode Via_Extensor_Digiti_Minimi                = { sRel = ..Scale(..Data.Via_Extensor_Digiti_Minimi_pos               *..Mirror); };
   AnyRefNode I_Extensor_Digiti_Minimi                  = { sRel = ..Scale(..Data.I_Extensor_Digiti_Minimi_pos                 *..Mirror); };
   AnyRefNode Via_Flexor_Pollicis_Longus                = { sRel = ..Scale(..Data.Via_Flexor_Pollicis_Longus_pos               *..Mirror); };
   AnyRefNode I_Flexor_Pollicis_Longus                  = { sRel = ..Scale(..Data.I_Flexor_Pollicis_Longus_pos                 *..Mirror); };
   
   Via1_Extensor_Pollicis_Longus       = {ARel=.ARel0;};
   Via1_Extensor_Pollicis_Brevis       = {ARel=.ARel0;};
   I_Extensor_Carpi_Ulnaris            = {ARel=.ARel0;}; 
   Via_Extensor_Carpi_Radialis_Brevis  = {ARel=.ARel0;};   
   I_Extensor_Carpi_Radialis_Longus    = {ARel=.ARel0;};
   Via_Extensor_Digitorum_Digit5       = {ARel=.ARel0;};
   Via_Extensor_Digitorum_Digit4       = {ARel=.ARel0;};
   Via_Extensor_Digitorum_Digit3       = {ARel=.ARel0;};
   Via_Extensor_Digitorum_Digit2       = {ARel=.ARel0;};
   I_Extensor_Digiti_Minimi            = {ARel=.ARel0;};
   Via_Extensor_Digiti_Minimi          = {ARel=.ARel0;};
    
   
   AnyFloat ARel0 = RotMat(...Sign*pi/2,y)*RotMat(...Sign*pi/2,x);  // used for the SPLine.InitWrapPosVectors 
     
   
   //It is used for wrapping of the flexor muscles.
   AnyRefNode FlexorMuscleCyl = { 
 
     sRel = ..Scale(..Data.FlexorMuscleCyl_pos*..Mirror);
     AnyVec3 P3 = ..Scale(..Data.FlexorMuscleCyl_P3_pos*..Mirror);
     AnyVec3 P2 = ..Scale(..Data.FlexorMuscleCyl_P2_pos*..Mirror);
     
     //Calculate orientation of the cylinder
     ARel=RotMat(sRel,P3,P2)*RotMat(-90/180*pi, z)*RotMat(-90/180*pi, y);            
     
     AnySurfCylinder cyl = { 
       Radius=vnorm(.sRel-.P3);
       Length= vnorm(.sRel-.P2);
     };
   };
  
};//end Ref
  
  AnyDrawSurf DrwSurf = {
    FileName = ...STL.FileNameHand;
    RGB = ...ColorRef.Segments;
    ScaleXYZ = ({1,1.0,1})*.Mirror;
    AnyFunTransform3D &Scale = .Scale;
    Opacity = ...BonesOpacity.Hand;
  };
}; // End hand