Hi,
i successfully rotated the thorax by extending the thoracic scale function with an additional rotation.
//original trunk scaling:
AnyFolder Trunk = {
AnyVar GeomScale = (..AnthroSegmentLengths.TrunkHeight / ..StandardParameters.Trunk.Height);
AnyFunTransform3DLin ScaleFunction = {
ScaleMat ={{.GeomScale,0,0},{0,.GeomScale,0},{0,0,.GeomScale}};
Offset = {0,0,0};
};
};
// modified trunk scaling including a rotation on the sagittal plane be RotCorrTh1_12°.
AnyFolder TrunkModified = {
AnyFunTransform3DLin ScaleFunction= {
PreTransforms = {&..Trunk.ScaleFunction};
ScaleMat = RotMat(RotCorrTh1_12 *pi/180, z) ;
Offset = {0, 0, 0};
};
};
This is to create a different spinal shape. But now i have a problem with the connection of the thorax and the upper extremities including scapula and clavicula. The cervical spine including skull makes no problems, since it is connected by a joint to the thoracic C7T1 joint node. (Of course further adjustments are necessary to avoid a sharp bend.)
But with respect to the location and orientation of scapula and clavicula i have some problems. When i leave their scale functions unchanged, their locations do not fit to the new thorax location.
The two segments use scale functions which are based on the thoracic scale function.
AnyFolder Scapula = {
AnyFunTransform3DLin ScaleFunction = {
//AnyMat33 ARel ={{0.588988, 0.186879, 0.786238}, {-0.159489, 0.980641, -0.113609}, {-0.792248, -0.058482, 0.607391}};
AnyMat33 ARel ={{0.561294, -0.097357, -0.821870}, {0.151325, 0.988389, -0.013736}, {0.813664, -0.116660, 0.569509}}';
ScaleMat = ARel*..Trunk.ScaleFunction.ScaleMat*(ARel');
Offset = {0,0,0}*ARel';
};
};
Therefore i thought i could just let scapula and clavicula scale functions be based on the modified trunk scale function.
ScaleMat = ARel*..TrunkModified.ScaleFunction.ScaleMat*(ARel');
But then still, scapula and clavicula are not transformed (rotated) as expected, and left and right segments are transformed differently.
Do my problems arise from the asymmetry ARel? What is the meaning of this matrix, and what is the meaning of multiplying Trunk.ScaleFunction.ScaleMat from left and right with ARel? How can i find out the correct ARel for the modified trunk scaling?
Thanks a lot,
Thomaz