I tried to parent newly created objects to an object parented to a bone, the new object does rotate together with the object if all the armature moves(even with it assigned to a single bone), but it does not do action bone rotation or any of that…besides I can still accept a few duplicated optimized armatures for animated objects, but I’m having to use them even for not animated objects(ex: player hair, which just has to follow the head bone), that is a lot of unnecessary armature duplicates to take.
and I am starting to get tired…
I will check if I can get each bone position, rotation and scale, if yes I may still have a chance.
EDIT:
I maybe saw something I can use in the BGE API docs, not sure thought:
pag 1328 - class bge.types.BL_ArmatureChannel(PyObjectPlus)
EDIT2:
Yes, I think maybe that is it.
armature_game_object.channels[bone.name].desired_check
There is thought a lot of stuff in BL_ArmatureChannel, but I just need the ones necessary to check the action affected bone position, rotation and scale; then if needed conversion math(if not better), and from that rotate the objects I want which do not require complex animation(like the character head, which needs only to follow 1 single bone), no workaround objects needed.
EDIT3:
I think what I need is here:
self.head_mat = self.player.channels[8].channel_matrix
doing the below I can get which bone is which number:
for bone in range(len(self.player.channels)):
print(bone, self.player.channels[bone])
But it is a 4x4 matrix, I have no idea what its contents mean and how to use it so I can:
self.player_head.localOrientation = [bone_rotX, bone_rotY, bone_rotZ]
EDIT4:
I was experimenting with .pose_tail, it gave nice results
Also I really think I should submit a bug report about this.