Hi Kap-Soo
All segments has a property named Axes0 this is the segments initial
orientation matrix, if not specifying this the default value will be used.
To facilitate the kinematic assembly of the model all segments orientations
are set using the joint angles in the mannequin.any file.
This is done through a model “hardcode” of the model kinematics. It starts
out by setting the pelvis in its right position then the sacrum is position,
then L5 and so on. In this way all segment are positioned correctly, the
angles used are always the angles from the mannequin file.
Looking at the example it the calculation for calculating the orientation of
the hand, to do so it starts out on the radius segment and work its way
through the nodes and the joint…
I have added some comment line by line.
ref.Right.ShoulderArm.Seg.Hand.Axes0 = //this is what we want to
calculate the orientation of the hand segment wrt to global coordinates
ref.Right.ShoulderArm.Seg.Radius.Axes0* //first we need to have the
orientation of the radius segment this is the basis for our calculation
ref.Right.ShoulderArm.Seg.Radius.wj.ARel* //the wj node is the first node
used for our joint it is rotated wrt to radius this rotation is specified by
Arel
ref.Right.ShoulderArm.Seg.Radius.wj.RotNode.ARel* //this is a node placed
inside the wj node it is also rotated wrt to wj, on the right side this
rotation is zero but for the left side it is changed this is done to have
flexion to the same for left and right side
//RotMat(0.0,y)*
RotMat((pi/180)JointPos.Right.WristFlexion,y) //now we have to the
rotation of the joint it self the first axis of the joint is the y axis so
we rotated by a certain amount specified in the mannequin file
RotMat((pi/180)JointPos.Right.WristAbduction,z) //now we have to the
rotation of the joint it self the Second axis of the joint is the y axis so
we rotated by a certain amount specified in the mannequin file
ref.Right.ShoulderArm.Seg.Hand.wj.RotNode.ARel’* //this is a node placed
inside the wj node again this node id just used for the left right issue
ref.Right.ShoulderArm.Seg.Hand.wj.ARel’; //this is the node used for the
wrist joint on the hand segment it also may have a orientation we need to
account for
It is rather complicated sequence of transformations and it has been made in
this way to make it user friendly for normal use, normally you simply set
the angels in the Mannequin file and then these transformations finds the
Axes0 matrix automatically, alternatively you would need to write the 3x3
matrix for each segment.
As I have understood your problem you have removed a number of segments in
the spine and then these segments are missing in the initialposition file, I
would recommend just to out-comment the segment you have removed from this
file and then keep the rest, otherwise all segments has no initial
orientation.
It is difficult to remove segments from the spine if you still want to have
the muscles in the arms because they insert on different vertebraes in the
spine.
Also the initial position vector in the spine rely on that other segments
are defined so this also makes it difficult to remove segments.
I would start out as simple as possible without muscles and the arms, hen
remove one segment at the time and do the needed changes to make it load. I
would start from the head segment and move downwards, due to the way the
initial positions are calculated, they also start with the pelvis segment
and move upwards…
Hope this helps you move on, otherwise please do not hesitate to write
again.
Best regards
Søren, AnyBody Support
From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of kapsoo.han
Sent: 12 February 2009 10:43
To: anyscript@yahoogroups.com
Subject: [AnyScript] Modifying the existing model
Hi all,
I am trying to make another model from the repository. For example, I
would like to fix the upper and lower extremity of whole body model to
be just lump of mass and graphical effect and remain the spine parts
in Repository.6.1.Block. I changed the joints to fixed joints and
removed muscles and commented out InitialPositions.any due to linking
errors of objects. After that, the initial arm and hands are distorted.
When I see inside the InitialPositions.any, the structure is like as
below but I can’t understand what these mean.
//right hand
ref.Right.ShoulderArm.Seg.Hand.Axes0 =
ref.Right.ShoulderArm.Seg.Radius.Axes0*
ref.Right.ShoulderArm.Seg.Radius.wj.ARel*
ref.Right.ShoulderArm.Seg.Radius.wj.RotNode.ARel*
//RotMat(0.0,y)*
RotMat((pi/180)JointPos.Right.WristFlexion,y)
RotMat((pi/180)JointPos.Right.WristAbduction,z)
ref.Right.ShoulderArm.Seg.Hand.wj.RotNode.ARel’*
ref.Right.ShoulderArm.Seg.Hand.wj.ARel’;
I figured out “ref.Right.ShoulderArm.Seg.Radius.Axes0*” is main part
to rotate hand 90 degrees but can’t find how it works.
Q1. could you please explain what these mean.
Q2. could you give me some tips or instruction when I change the model
like this because many objects are interlinked so removing one or two
objects or variables cause many errors.
Thanks
[Non-text portions of this message have been removed]