I’m new to AnyBody and confused about some questions:
(1) The usage of AnyFunTransform3DLinRef and AnyFunTransform3DLinRef2
I first downloaded the demo file “AnyFunTransform3DLinRef.any” in the AnyScript reference manual and then loaded “AnyFunTransform3DLinRef.any” into AnyBody.
I could observe the values of all variables from the Main Model Tree:
Vec_T1 in “using_AnyFunTransform3DLinRef” folder is {0,0,0}; Vec_T1 in “using_AnyFunTransform3DLinRef2” folder or “using_transf3D” folder is not {0,0,0}. Why? When model loading finished the Evaluation Moment - DesignVar should has already passed, so the Vec_T1 in “using_AnyFunTransform3DLinRef” folder should hold a value but not {0,0,0}.
In the AnyScript reference manual, for AnyFunTransform3DLinRef2, it is said:
“The limitation of this function, compared to AnyFunTransform3DLinRef and most other AnyFunTransform3D, is that the return values will be ready later (at the Evaluation Moment called PosVar) and thus cannot be used for typical scaling of model design (design scaling is evaluated at the earlier Evaluation Moment called DesignVar).”
I just wonder what exact time the Evaluation Moment - DesignVar is? I couldn’t find any information in the tutorial and the reference manual.
(2) For AnyFunTransform3DSTL, is it possible to use a point cloud as the SurfaceObjects0 to register to a STL surface? If possible, I can directly register the measured points to a STL surface got from CT scan images and find the corresponding closest points on the STL surface.
(3) For AnySphericalJoint, the member component Pos[0] gauges the angle rotating about the axis x of the joint reference frame, Pos[1] for axis y, Pos[2] for axis z. Is this correct? No information about this in the reference manual.
Thanks for your updates.
We found that there is a problem in using the AnyFunTransform3DLinRef class. And as you pointed out, you should be able to see the result of that function at the loading time of the model.
We will try to fix this problem as soon as we have time for this.
For AnyFunTransform3DSTL class, the SurfaceObjects0 and SurfaceObjects1 object should point the instances of AnySurfSTL class, not an array of points.
If you see the description of the AnySphericalJoint class in the reference manual, you will find one of its members ‘Orientation’.
And the type of ‘Orientation’ is AnyKinRotational, and for AnySphericalJoint the default type of this ‘Orienatation’ member is RotVector.
Then if you see the description of ‘AnyKinRotational’ class in the reference manual, you will see the decription of ‘RotVector’ type.
Cartesian rotation vector (Type = RotVector):
The Cartesian rotation vector measures a general 3-D orientation as a single rotation about a given axis. The rotation vector is a geometric vector that is parallel with this axis of rotation and its length is equal to angle of rotation. In must be emphasized that the velocity of the rotation vector is not equal to the angular velocity vector, except in the planar case where the axis of rotation is constant.
So you should understand of the meaning of the ‘Pos’ values in the AnySphericalJoint based on the definition of this ‘RotVector’ type of AnyKinRotational.
Thank you for your help.
I feel it is actually very hard to use some AnyBody classes properly only based on the information provided in the reference manual without demonstration. The AnySphericalJoint is an example of them.
Through analyzing the codes in the \Body\AAUHuman\Trunk\DiscStiffnessNormal.any of AMMR (the example SpineFixationWithForceDependentKinematics):
It sounds the AnySphericalJoint.Pos[0], Pos[1] and Pos[2] gauge the general 3-D rotation vector’s three component angles about x, y and z, respectively, but this cannot be explicitly confirmed by the reference manual information even carefully examining the AnyKinRotational description.