You need a structure like this (I think):
PlayerRootNode(spatial)
—> Camera 1
—> Viewport
—> —> Camera 2
Then you’ll need to display the viewport texture in your GUI. Camera2 will only show nodes that are parented to Viewport, so that should allow you to show whatever you want (weapons, hands, etc) even when your up against a wall.
You can see the 3D in 2D demo and/or the 2D in 3D demo for some ideas on how to go about using two cameras/viewports.