Keep rotation of not parented item carried by player relative to first person player camera

I have a player carrying item. I need to keep the rotation in sync with first person player camera when player rotating horizontaly and also vertically.
I’m able to keep horizontal rotation relative to player (transform):
first cache _rotation on item grab:
_rotation = _carriedRigidbody.rotation.eulerAngles - transform.eulerAngles;
then in update / fixed update add the stored rotation to the transform rotation:
_carriedRigidbody.rotation = Quaternion.Euler(transform.eulerAngles + _rotation);

Problem is I want to keep vertical rotation in sync with player camera as well = when player looks upwards or downwards.
Video how it behaves now. without any rotation restrictions (not desired):

the item must keep the same horizontal and vertical angles with player's camera when player turning any direction.

I finally figured it out. It’s ridiculously easy when thinking about it in a different fashion :).

  • use grabpoint parented in the player’s camera. This grabpoint of course keeps the relative position to the camera automatically

  • now on item grab initialize the grabpoint.rotation to the rotation of carried item (rigidbody.transform.rotation)

  • now in every frame set the rotation of the carried rigidbody to the rotation of the grab point. Pretty simple, isn’t it?

  • carried object is still not parented to the player camera which was desired (keeps up with grabpoint by lerping rigidbody.velocity to the grabpoint position)