--- a
+++ b/Tools/GRFPrediction/CreateFootNodes.any
@@ -0,0 +1,108 @@
+#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);
+  
+  
+};
+
+
+
+
+
+  
\ No newline at end of file