Given that I have a an imported Blender model, consisting of a cylinder Mesh, and two connected Bones, each half the Mesh length (and vertices weighted accordingly):
How do I rotate the end Bone towards a selected target's position, such that the associated Mesh points towards the target?
When I first created the model in Blender, they were all aligned on the Zaxis, with no rotation. When I saved them to a .fbx file, I specified no rotation on any axis. For whatever reason, the children GameObjects all have a different orientation than the toplevel GO.
After importing, my Hierarchy looks like this:
oneTube (GameObject: standard rotation, x=0, y=0, z=0)

 armature (GameObject: rotation of x=0, y=180, z=0)



 oneBone (GameObject: rotation of x=90, y=90, z=0)







 twoBone (GameObject: rotation of x=0, y=180, z=180)




Things I have tried, and couldn't get to work:
The LookAt() function:
twoBone.transform.LookAt(tmpTarget.transform.position);
The LookAt() function on the target in the Bone's Local Coordinate Space:
Vector3 invPos = twoBone.InverseTransformDirection(tmpTarget.transform.position);
twoBone.transform.LookAt(invPos);
Assuming that the Bone object was facing along its Forward vector, and rotating from there:
Vector3 invPos = twoBone.InverseTransformDirection(tmpTarget.transform.position);
Vector3 newDir = invPos  twoBone.position;
Quaternion newRot = Quaternion.FromToRotation(twoBone.forward, newDir);
twoBone.rotation = newRot;
I also tried all three axis vectors up/right/forward, none of which worked. And I tried using the Normal to all three axis vectors, again no joy.
Which brings up another question  what direction is the Bone considered to be facing? How can I determine that from its Transform?