[770c98]: / Tools / GRFPrediction / CreateFootNodes.any

Download this file

108 lines (87 with data), 4.3 kB

#ifdef  __CREATE_CC_NODE__
#undef __CREATE_CC_NODE__
#endif

#define __CREATE_CC_NODE__(IDX) NodesBaseFrame = { AnyRefNode Node##IDX = {sRel = ..Targets[IDX]; AnyDrawNode Drw = { Visible=...NodesVisible; RGB = ...NodesRGB; ScaleXYZ= ...NodesScale; Opacity = ...NodesOpacity; }; };}; AnyRefNode &Node##IDX = NodesBaseFrame.Node##IDX




#class_template CreateFootContactNodes25 (AnySeg &foot_ref, 
                                        NAME = "",
                                        CONTACT_POINT_OFFSET_DIST = 0)
{
    #var AnySwitchVar NodesVisible = On;
    #var AnyInt NodesRGB = {1, 0, 1};
    #var AnyVec3 NodesScale =  0.005*{1, 1, 1};
    #var AnyVar NodesOpacity = 1;
  
    AnyVec3 NewCoordSys_sRel = foot_ref.HeelContactNodeLow.sRel;
    AnyMat33 NewCoordSys_ARel = RotMat(foot_ref.HeelContactNodeLow.sRel,
                                       foot_ref.ToeMedialContactNode.sRel,
                                       foot_ref.ToeLateralContactNode.sRel)
                                * RotMat(-pi/2*foot_ref.Sign, x);
    AnyMat33 ProjectionMat = {{1, 0, 0}, {0, 0, 0}, {0, 0, 1}}; // Projection to XZ plane!
    AnyVar Offset_Dist = CONTACT_POINT_OFFSET_DIST;
    AnyVec3 Offset_Vec = {0, -1, 0};
  
    AnyFloat Sources = 
    {
      foot_ref.HeelContactNodeLow.sRel, 
      foot_ref.ToeMedialContactNode.sRel, 
      foot_ref.ToeLateralContactNode.sRel, 
      foot_ref.BigToeNode.sRel,
      foot_ref.MedialMalleolus.sRel, 
      foot_ref.LateralMalleolus.sRel,
      foot_ref.SubTalarJoint.sRel, 
      foot_ref.MetatarsalJoint1Node.sRel, 
      foot_ref.MetatarsalJoint2Node.sRel, 
      foot_ref.MetatarsalJoint3Node.sRel, 
      foot_ref.MetatarsalJoint4Node.sRel, 
      foot_ref.MetatarsalJoint5Node.sRel, 
      foot_ref.Scale((5*foot_ref.StdPar.ToeMedialContactNode+5*foot_ref.StdPar.BigToeNode)/10), 
      foot_ref.Scale((5*foot_ref.StdPar.ToeLateralContactNode+5*foot_ref.StdPar.BigToeNode)/10),
      foot_ref.Scale((5*foot_ref.StdPar.HeelContactNodeLow+5*foot_ref.StdPar.ToeMedialContactNode)/10), 
      foot_ref.Scale((2.5*foot_ref.StdPar.HeelContactNodeLow+7.5*foot_ref.StdPar.ToeMedialContactNode)/10), 
      foot_ref.Scale((5*foot_ref.StdPar.HeelContactNodeLow+5*foot_ref.StdPar.ToeLateralContactNode)/10), 
      foot_ref.Scale((2.5*foot_ref.StdPar.HeelContactNodeLow+7.5*foot_ref.StdPar.ToeLateralContactNode)/10), 
      foot_ref.Scale((7.5*foot_ref.StdPar.HeelContactNodeLow+2.5*foot_ref.StdPar.ToeLateralContactNode)/10), 
      foot_ref.Scale((8.5*foot_ref.StdPar.HeelContactNodeLow+1.5*foot_ref.StdPar.ToeLateralContactNode)/10), 
      foot_ref.Scale((-1.5*foot_ref.StdPar.HeelContactNodeLow+11.5*foot_ref.StdPar.ToeLateralContactNode)/10), 
      foot_ref.Scale((4*foot_ref.StdPar.HeelContactNodeLow+6*foot_ref.StdPar.BigToeNode)/10),
      foot_ref.FlexorHallucisLongusViaNode7.sRel, 
      foot_ref.FlexorDigitorumLongusViaNode8.sRel, 
      foot_ref.ExtensorDigitorumLongus1Node.sRel    
    };
    AnyInt Sources_Sizes = SizesOf(Sources);
    AnyFloat Unit_Array = iarr(1, Sources_Sizes[0])*0 + 1 ;

    AnyFloat Targets = 
    ( Sources - (NewCoordSys_sRel'*{Unit_Array})')* NewCoordSys_ARel * ProjectionMat 
    + (Offset_Dist*Offset_Vec'*{Unit_Array})';
  
  foot_ref = {
    AnyRefNode ConditionalContact_Nodes##NAME =
    {
      sRel = ..NewCoordSys_sRel ;
      ARel = ..NewCoordSys_ARel ;  
    };
  };
  
  
  
  AnyFolder &NodesBaseFrame = foot_ref.ConditionalContact_Nodes##NAME;
  
      __CREATE_CC_NODE__(0 );
      __CREATE_CC_NODE__(1 );
      __CREATE_CC_NODE__(2 );
      __CREATE_CC_NODE__(3 );
      __CREATE_CC_NODE__(4 );
      __CREATE_CC_NODE__(5 );
      __CREATE_CC_NODE__(6 );
      __CREATE_CC_NODE__(7 );
      __CREATE_CC_NODE__(8 );
      __CREATE_CC_NODE__(9 );
      __CREATE_CC_NODE__(10);
      __CREATE_CC_NODE__(11);
      __CREATE_CC_NODE__(12);
      __CREATE_CC_NODE__(13);
      __CREATE_CC_NODE__(14);
      __CREATE_CC_NODE__(15);
      __CREATE_CC_NODE__(16);
      __CREATE_CC_NODE__(17);
      __CREATE_CC_NODE__(18);
      __CREATE_CC_NODE__(19);
      __CREATE_CC_NODE__(20);
      __CREATE_CC_NODE__(21);
      __CREATE_CC_NODE__(22);
      __CREATE_CC_NODE__(23);
      __CREATE_CC_NODE__(24);
  
  
};