[38ba34]: / Tools / ModelUtilities / HumanEnvironmentInteraction / Class_Interface_Hand.any

Download this file

773 lines (702 with data), 38.0 kB

#class_template EC_RHand_Kin_BallJoint_Dyn_None(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "BallJoint" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber = 0) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;     
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_BallJoint_Dyn_Support1P(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "BallJoint" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = ON,
  UserInputCalcReacNodesNumber= 1) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_BallJoint_Dyn_ExternalForce(AnyFolder& RefHumanModel, HumanSegConnectNodeName, HumanSegApplyingForceNodeName, UseGlobalApplyingForceOnOff, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "BallJoint" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = ON,
  UserInputApplyingForceNodeName = HumanSegApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber= 0) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;     
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_RevoluteJoint_Dyn_None(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "RevoluteJoint" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber= 0) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;     
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_RevoluteJoint_Dyn_Support3P(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "RevoluteJoint" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = ON,
  UserInputCalcReacNodesNumber= 3) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_RevoluteJoint_Dyn_ExternalForce(AnyFolder& RefHumanModel, HumanSegConnectNodeName, HumanSegApplyingForceNodeName, UseGlobalApplyingForceOnOff, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "RevoluteJoint" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = ON,
  UserInputApplyingForceNodeName = HumanSegApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber= 0) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;     
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_3PointsOnPlane_Dyn_None(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "3PointsOnPlane" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber= 3) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;     
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_3PointsOnPlane_Dyn_Support3P(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "3PointsOnPlane" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = ON,
  UserInputCalcReacNodesNumber= 3) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_3PointsOnPlane_Dyn_ExternalForce(AnyFolder& RefHumanModel, HumanSegConnectNodeName, HumanSegApplyingForceNodeName, UseGlobalApplyingForceOnOff, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "3PointsOnPlane" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = ON,
  UserInputApplyingForceNodeName = HumanSegApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber= 0) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;     
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_2PointsOnLine_Dyn_None(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "2PointsOnLine" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber= 2) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;     
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_2PointsOnLine_Dyn_Support2P(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "3PointsOnPlane" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = ON,
  UserInputCalcReacNodesNumber= 2) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_2PointsOnLine_Dyn_ExternalForce(AnyFolder& RefHumanModel, HumanSegConnectNodeName, HumanSegApplyingForceNodeName, UseGlobalApplyingForceOnOff, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "2PointsOnLine" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = ON,
  UserInputApplyingForceNodeName = HumanSegApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber= 2) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;     
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_None_Dyn_Support1P(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "None" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = ON,
  UserInputCalcReacNodesNumber= 1) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_None_Dyn_Support2P(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "None" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = ON,
  UserInputCalcReacNodesNumber= 2) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_None_Dyn_Support3P(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "None" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = ApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = ON,
  UserInputCalcReacNodesNumber= 3) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_None_Dyn_ExternalForce(AnyFolder& RefHumanModel, HumanSegConnectNodeName, HumanSegApplyingForceNodeName, UseGlobalApplyingForceOnOff, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "None" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = ON,
  UserInputApplyingForceNodeName = HumanSegApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = UseGlobalApplyingForceOnOff,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber = 0) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_FixJoint_Dyn_Support(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "FixJoint" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = HumanSegApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = OFF,
  UserInputCalcReacOnOff = ON,
  UserInputCalcReacNodesNumber = 0) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};

#class_template EC_RHand_Kin_FixJoint_Dyn_None(AnyFolder& RefHumanModel, HumanSegConnectNodeName, AnyRefFrame& RefTarget, TargetNormalDir)
{      
  AnyFolder& RefHumanSeg = RefHumanModel.BodyModel.Right.ShoulderArm.Seg.Glove;
  AnyFolder& RefHumanSegConnectNode = RefHumanSeg.HumanSegConnectNodeName;
  #var AnyVec3 HumanSegConnectNode_Offset_sRel = {0, 0, 0};
  #var AnyMat33 HumanSegConnectNode_Offset_ARel = {{1,0,0},{0,1,0},{0,0,1}};
  
  #var AnyVec3 ApplyingForce = {0, 0, 0} ;
  #var AnyVec3 ApplyingMoment = {0, 0, 0} ;
  
  #var AnyVar ReacVolumeHeightLimitLow = -0.05 ;
  #var AnyVar ReacVolumeHeightLimitHigh = 0.05 ;
  #var AnyVar ReacVolumeRadiusLimit = 0.1 ;
  #var AnyVar ReacForceFrictionCoeff = 0.5 ;  
  #var AnyVar ReacForceMaxStrength = 3000 ;
  #var AnyVar ReacForceVisualScaleFactor = 1;
  
  ClassDefineHumanEnvironmentConnection HumanEnvConnectionDef(
  UserInputConnectionType = "FixJoint" ,
  UserInputHumanSegType = "Hand",
  UserInputRefHumanSeg = .RefHumanSeg,
  UserInputHumanSegSingleConnectiontNodeName = ConnectionNode,
  UserInputTargetName = .RefTarget,
  UserInputTargetNormalDir = TargetNormalDir,
  UserInputApplyingForceOnOff = OFF,
  UserInputApplyingForceNodeName = HumanSegApplyingForceNodeName,
  UserInputUseGlobalApplyingForceOnOff = OFF,
  UserInputCalcReacOnOff = OFF,
  UserInputCalcReacNodesNumber = 0) = 
  {
    UserInputConnectNodeInHumanSeg_Offset_sRel = .HumanSegConnectNode_Offset_sRel;
    UserInputConnectNodeInHumanSeg_Offset_ARel = .HumanSegConnectNode_Offset_ARel;    
    UserInputApplyingForce = .ApplyingForce ;
    UserInputApplyingMoment = .ApplyingMoment ;
    UserInputReacVolumeHeightLimitLow = .ReacVolumeHeightLimitLow ;
    UserInputReacVolumeHeightLimitHigh = .ReacVolumeHeightLimitHigh ;
    UserInputReacVolumeRadiusLimit = .ReacVolumeRadiusLimit ;
    UserInputReacForceFrictionCoeff = .ReacForceFrictionCoeff ;
    UserInputReacForceMaxStrength = .ReacForceMaxStrength ;
    UserInputReacForceVisualScaleFactor = .ReacForceVisualScaleFactor ;
  };
};