CommonLibF4
CommonLibF4 copied to clipboard
[Question] Head world position
I'm writing UI plugin and trying to display UI widget near to actor's head position. I've tried to use TESObjectREFR::Get3D() and TESObjectREFR::GetFaceNodeSkinned. Both returns NiAVObject that points to "feets" of actor's model when actor is staying, but points to the center (approximately) of model when actor is lying down.
Do you have any idea how to obtain actor's head world position?
I would look at Actor::GetEyeVector
Thanks. But it seems usless for my purposes An example of coordinates:
staying
world pos {-35234.382813, 41025.136719, 3220.069824}
eye pos {-35234.382813, 41025.136719, 3324.390869}
Z diff is about 124
lying down
world pos {-35461.015625, 40947.492188, 3219.156006}
eye pos {-35461.015625, 40947.492188, 3323.477051}
Z diff is about 124 too
ok, I guess I've found solution
- Get
NiAVObject
byTESObjectREFR::Get3D
. It should beNiNode
actually - Recursively find
NiAVObject
for Head in it. In my case it was [/Root/COM_Override/COM/SPINE1/SPINE2/Chest/Neck/Head]
An example coordinates: staying actor:
world pos {-34596.410156, 40947.843750, 3213.797119}
eye pos {-34596.410156, 40947.843750, 3324.402100}
[/Root/COM_Override/COM/SPINE1/SPINE2/Chest/Neck/Head]:{-34596.074219, 40958.359375, 3324.402100}
laying down actor:
world pos {-35461.015625, 40947.492188, 3219.156006}
eye pos {-35461.015625, 40947.492188, 3329.760986}
[/Root/COM_Override/COM/SPINE1/SPINE2/Chest/Neck/Head]:{-35486.519531, 40915.753906, 3260.565430}