Geographic routing is of interest for sensor networks because a point-to-point primitive is an important building block for data-centric applications. While there is a significant body of work on geographic routing algorithms for twodimensional (2D) networks, geographic routing for practical three-dimensional (3D) sensor networks is relatively unexplored. We show that existing 2D geographic routing algorithms like CLDP/GPSR and GDSTR perform poorly in practical 3D sensor network deployments and describe GDSTR-3D, a new 3D geographic routing algorithm that uses 2-hop neighbor information in greedy forwarding and 2D convex hulls to aggregate node location information. We compare GDSTR-3D to existing algorithms, including CLDP/GPSR, GDSTR, AODV, VRR and S4, both in a real wireless sensor testbed and with TOSSIM simulations to show that GDSTR-3D is highly scalable, requires only a modest amount of storage and achieves routing stretch close