When I try to set pose bone's head in keyframe, I knew that the bone's head is just read only, so I have to convert the bone's head to bone's location or matrix, after searching a lot of information,I know this furmula:


now I want to change pbone.head and keep armature.matrix_world constant, so how do I get pbone.matrix?

  • 1
    $\begingroup$ Related My understanding is pb.head = pb.matrix.translation, or in other words keyframe pose bone location (when not connected) Moving the pose bone doesn't effect the world matrix of its armature object. The matrix world of the object is used to calc the global transform of the local data, in this case pose bones. blender.stackexchange.com/questions/109815/… $\endgroup$
    – batFINGER
    Oct 12, 2018 at 12:18
  • $\begingroup$ yes, now I just want to set the value of pbone.head to be half of its original value, but in pose mode, the value is read only, so is there any way to do that? Thank you very much. $\endgroup$
    – Heixue
    Oct 12, 2018 at 12:31
  • $\begingroup$ Please elaborate on this in question. If the bone is not connected, set pb.location if it is then would need to adjust the parent bone, such that its tail is where the head is to be. Possible Duplicate $\endgroup$
    – batFINGER
    Oct 12, 2018 at 12:39
  • $\begingroup$ The problem I actually had at work is to scale my animations in three dimensional space and not in time. For example, if I want to apply a giant's motion data to a little man or scale a giant to small man, there will be some problems , such as the slightly open legs of the giant becoming split legs of the little man, the keyframe just record the rotation and location of the bone, and the rotation data is right, but the location data is wrong, so I want to scale the location of all the bone, and set the zoom center as the center of the foot, so in my scripts $\endgroup$
    – Heixue
    Oct 12, 2018 at 12:54
  • $\begingroup$ so in my scripts, I just get the global coordinates of the bones by "pbone.head" and want to scale the data, but I don't know how to set the value back. I'm sorry that my English is not good. I don't know whether I can describe it clearly $\endgroup$
    – Heixue
    Oct 12, 2018 at 13:04


You must log in to answer this question.

Browse other questions tagged .