~This moves the viewpoint before applying orientation, so looking down is equivalent to face-planting, which isn't ideal.~ Adjusting the viewpoint by Graph::get_relative_up after rotation so the camera rotates in-place makes more sense, but suffers from sharp discontinuities when crossing between nodes, presumably due to relying on the discrete NodeState::up_direction. We should come up with a properly smooth notion of "up".
~This moves the viewpoint before applying orientation, so looking down is equivalent to face-planting, which isn't ideal.~ Adjusting the viewpoint by
Graph::get_relative_up
after rotation so the camera rotates in-place makes more sense, but suffers from sharp discontinuities when crossing between nodes, presumably due to relying on the discreteNodeState::up_direction
. We should come up with a properly smooth notion of "up".