781 lines (706 with data), 32.6 kB
/*
This file redirects all scaling functions to the functions defined i the scaling law provided by the user.
This file also enables custom scaling by allowing the functions to be overridden.
*/
#ifndef SILENCE_CUSTOM_SCALING_MESSAGES
#define SILENCE_CUSTOM_SCALING_MESSAGES 0
#endif
AnyFolder Scaling = {
AnyFolder& Scaling = .ScalingLaw;
AnyFolder &StandardParameters = Scaling.StandardParameters;
AnyFolder &MassScaling = Scaling.MassScaling;
AnyFolder &StrengthScaling = Scaling.StrengthScaling;
AnyFolder &FiberLengthScaling = Scaling.FiberLengthScaling;
AnyFolder GeometricalScaling = {
AnyFolder Right = {
AnyFolder Foot = {
#if BM_LEG_MODEL & (BM_FOOT_MODEL != _FOOT_MODEL_NONE_) & BM_LEG_RIGHT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Right.Leg.Seg.Foot.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Foot.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Foot' segment is enabled!";
};
#endif
};
};
AnyFolder Talus = {
#if BM_LEG_MODEL & (BM_FOOT_MODEL != _FOOT_MODEL_NONE_) & BM_LEG_RIGHT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Right.Leg.Seg.Talus.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Talus.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Talus' segment is enabled!";
};
#endif
};
};
AnyFolder Patella = {
#if BM_LEG_MODEL & BM_LEG_RIGHT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Right.Leg.Seg.Patella.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Patella.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Patella' segment is enabled!";
};
#endif
};
};
AnyFolder Shank = {
#if BM_LEG_MODEL & BM_LEG_RIGHT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Right.Leg.Seg.Shank.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Shank.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Shank' segment is enabled!";
};
#endif
};
};
AnyFolder Thigh = {
#if BM_LEG_MODEL & BM_LEG_RIGHT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Right.Leg.Seg.Thigh.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Thigh.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Thigh' segment is enabled!";
};
#endif
};
};
AnyFolder Clavicula = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Clavicula.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Clavicula' segment is enabled!";
};
#endif
};
};
AnyFolder Scapula = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Scapula.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Scapula' segment is enabled!";
};
#endif
};
};
AnyFolder Humerus = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Humerus.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Humerus' segment is enabled!";
};
#endif
};
};
AnyFolder Ulna = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Ulna.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Ulna' segment is enabled!";
};
#endif
};
};
AnyFolder Radius = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Radius.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Radius' segment is enabled!";
};
#endif
};
};
AnyFolder Hand = {
// required by detailed hand, to be optimized
// Todo: Restructure this part so the hand model directly refer to
// Main.HumanModel.Anthropometrics.SegmentDimensions.Left/Right
#if BM_SCALING == _SCALING_XYZ_
AnyVar LengthScale = ...Scaling.GeometricalScaling.Right.Hand.LengthScale;
AnyVar WidthScale = ...Scaling.GeometricalScaling.Right.Hand.WidthScale;
#else
AnyVar HandLength = ...Scaling.GeometricalScaling.Right.Hand.HandLength;
AnyVar HandBreadth = ...Scaling.GeometricalScaling.Right.Hand.HandBreadth;
#endif
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Right.Hand.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Right.Hand' segment is enabled!";
};
#endif
};
};
};//Right
AnyFolder Left = {
AnyFolder Foot = {
#if BM_LEG_MODEL & (BM_FOOT_MODEL != _FOOT_MODEL_NONE_) & BM_LEG_LEFT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Left.Leg.Seg.Foot.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Foot.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Foot' segment is enabled!";
};
#endif
};
};
AnyFolder Talus = {
#if BM_LEG_MODEL & (BM_FOOT_MODEL != _FOOT_MODEL_NONE_) & BM_LEG_LEFT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Left.Leg.Seg.Talus.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Talus.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Talus' segment is enabled!";
};
#endif
};
};
AnyFolder Patella = {
#if BM_LEG_MODEL & BM_LEG_LEFT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Left.Leg.Seg.Patella.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Patella.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Patella' segment is enabled!";
};
#endif
};
};
AnyFolder Shank = {
#if BM_LEG_MODEL & BM_LEG_LEFT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Left.Leg.Seg.Shank.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Shank.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Shank' segment is enabled!";
};
#endif
};
};
AnyFolder Thigh = {
#if BM_LEG_MODEL & BM_LEG_LEFT & (BM_LEG_MODEL != _LEG_MODEL_LEG_)
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3D &TSeg2ScaleFrame = ....BodyModel.Left.Leg.Seg.Thigh.Scale.T0;
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Thigh.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Thigh' segment is enabled!";
};
#endif
};
};
AnyFolder Clavicula = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Clavicula.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Clavicula' segment is enabled!";
};
#endif
};
};
AnyFolder Scapula = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Scapula.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Scapula' segment is enabled!";
};
#endif
};
};
AnyFolder Humerus = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Humerus.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Humerus' segment is enabled!";
};
#endif
};
};
AnyFolder Ulna = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Ulna.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Ulna' segment is enabled!";
};
#endif
};
};
AnyFolder Radius = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Radius.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Radius' segment is enabled!";
};
#endif
};
};
AnyFolder Hand = {
// required by detailed hand, to be optimized
// Todo: Restructure this part so the hand model directly refer to
// Main.HumanModel.Anthropometrics.SegmentDimensions.Left/Right
#if BM_SCALING == _SCALING_XYZ_
AnyVar LengthScale = ...Scaling.GeometricalScaling.Left.Hand.LengthScale;
AnyVar WidthScale = ...Scaling.GeometricalScaling.Left.Hand.WidthScale;
#else
AnyVar HandLength = ...Scaling.GeometricalScaling.Left.Hand.HandLength;
AnyVar HandBreadth = ...Scaling.GeometricalScaling.Left.Hand.HandBreadth;
#endif
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity TSeg2ScaleFrame = {};
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &.....ScalingLaw.GeometricalScaling.Left.Hand.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Left.Hand' segment is enabled!";
};
#endif
};
};
};//Left
// Common law for the upper body
// *****************************
AnyFolder PelvisSeg = {
#if BM_LEG_TRUNK_INTERFACE == _MORPH_LEG_TO_TRUNK_
AnyFunTransform3DIdentity TSeg2ScaleFrame = {
PreTransforms = {
&....BodyModel.Trunk.SegmentsLumbar.PelvisSeg.InterfaceMorphingDef.IM_Leg_To_Trunk_Unscaled,
&....BodyModel.Trunk.SegmentsLumbar.PelvisSeg.AnatomicalFrame.Scale_Leg_Pelvis.ScaleAfterInterfaceMorphingDef.Scale.T0
};
};
#else
//options: BM_LEG_TRUNK_INTERFACE == _MORPH_NONE_ && BM_LEG_TRUNK_INTERFACE == _MORPH_TRUNK_TO_LEG_
AnyFunTransform3DIdentity TSeg2ScaleFrame = {
PreTransforms = {
&....BodyModel.Trunk.SegmentsLumbar.PelvisSeg.InterfaceMorphingDef.IM_Leg_To_Trunk_Unscaled,
&....BodyModel.Trunk.SegmentsLumbar.PelvisSeg.AnatomicalFrame.Scale_Leg_Pelvis.ScaleAfterInterfaceMorphingDef.Scale.T0
};
};
#endif
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &....ScalingLaw.GeometricalScaling.Pelvis.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Pelvis' segment is enabled!";
};
#endif
};
};
AnyFolder Thorax = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &....ScalingLaw.GeometricalScaling.Thorax.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Thorax' group is enabled!";
};
#endif
};
};
AnyFolder Head = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &....ScalingLaw.GeometricalScaling.Head.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Head' group is enabled!";
};
#endif
};
};
AnyFolder SkullSeg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Head.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'SkullSeg' segment is enabled!";
};
#endif
};
};
AnyFolder ThoraxSeg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Thorax.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'ThoraxSeg' segment is enabled!";
};
#endif
};
};
AnyFolder C1Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Cervical.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'C1Seg' segment is enabled!";
};
#endif
};
};
AnyFolder C2Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Cervical.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'C2Seg' segment is enabled!";
};
#endif
};
};
AnyFolder C3Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Cervical.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'C3Seg' segment is enabled!";
};
#endif
};
};
AnyFolder C4Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Cervical.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'C4Seg' segment is enabled!";
};
#endif
};
};
AnyFolder C5Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Cervical.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'C5Seg' segment is enabled!";
};
#endif
};
};
AnyFolder C6Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Cervical.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'C6Seg' segment is enabled!";
};
#endif
};
};
AnyFolder C7Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Cervical.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'C7Seg' segment is enabled!";
};
#endif
};
};
AnyFolder Cervical = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &...Scaling.GeometricalScaling.Cervical.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Cervical' group is enabled!";
};
#endif
};
};
AnyFolder L1Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Lumbar.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'L1Seg' segment is enabled!";
};
#endif
};
};
AnyFolder L2Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Lumbar.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'L2Seg' segment is enabled!";
};
#endif
};
};
AnyFolder L3Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Lumbar.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'L3Seg' segment is enabled!";
};
#endif
};
};
AnyFolder L4Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Lumbar.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'L4Seg' segment is enabled!";
};
#endif
};
};
AnyFolder L5Seg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Default = &..Lumbar.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'L5Seg' segment is enabled!";
};
#endif
};
};
AnyFolder SacrumSeg = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyObjectPtr Custom ??= Default;
AnyObjectPtr Default = &..PelvisSeg.ScaleFunction;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'SacrumSeg' segment is enabled!";
};
#endif
};
};
AnyFolder Lumbar = {
/// The rigid body transform from segmental to scaling reference frame
AnyFunTransform3DIdentity& TSeg2ScaleFrame = .PelvisSeg.TSeg2ScaleFrame;
AnyFunTransform3D ScaleFunction = {
AnyMat33 ScaleMat = ...Scaling.GeometricalScaling.Lumbar.ScaleFunction.ScaleMat; ///< This is needed because the old buckle implementation expects this
AnyObjectPtr Default = &...Scaling.GeometricalScaling.Lumbar.ScaleFunction;
AnyObjectPtr Custom ??= Default;
PreTransforms = {Custom};
#if !SILENCE_CUSTOM_SCALING_MESSAGES
AnyMessage custom_scaling_notice = {
TriggerConst = neqfun(.Default, .PreTransforms[0]);
Message = "Custom scaling for 'Lumbar' group is enabled!";
};
#endif
};
};
};
};