I thought that if I drag a humanoid model to my screen and set all bone rotations to X=0,Y=0,Z=0 that it should be in the T-Pose however, that doesn’t seem to be the case. It seems when I change the right shoulder or right arm rotation that the arm then points the other way INTO the body. It seems the proper rotation for those needs to be 0,180,0 for it to look right, yet the hand pointing in the same direction needs 0,0,0.
What is going on here?! Is there some assumption or missing piece of data I’m missing here? Stock animations work fine, so it must be something I am doing wrong.
It depends entirely on how you boned and rigged the asset in your 3d program of choice.
If the bones were all set to identity rotations when they were skinned, then 0,0,0 might well give you a T-pose, but if they were rotated to something sensible, eg. with a local axis pointing at a child bone, then this will not ever be the case,
If it’s an asset that you bought off the store, then you’ll have to go and edit it yourself.
Thanks for the reply. Then how does whatever is driving the animation controller manage to align them properly? Somewhere then there must be information in the imported data that gives the orientations necessary to form it into a standard pose for the animator to start it’s work?
It’s probably something along the lines of (assumed its trying to orient the shoulder) rotating me such that my child (elbow) is along the 1,0,0 direction.
This becomes more complicated when shoulder has more than one child.
You can make a prefab of a t-posed character, using the avatar config to enforce T-pose, then drag the character from the hierarchy tab, into the project directory (aparently).
Alternatively, with a bit of editorscripting, you could enforce T-pose, then examine each bone and store the orientations into some component, to be copied back in whenever you want.