3D User Interfaces: Theory and Practice