I do some similar tinkering for VR/XR interaction. The basic idea is:
a) build a separate Coin3D scenegraph just for menu items,
b) do picking action (SoRayPickingAction) for "menu scenegraph", find what menu item was hit
c) if nothing was hit, perform picking action for "world" scenegraph
d) check what was hit, use SoDetail to find which part of shape was hit, find normal face (that will be useful for rendering manipulators)
e) find corresponding TopoShape using getViewProviderByPath (similar to this https://forum.freecadweb.org/viewtopic.php?t=25355 )