Я представляю это так:
1) есть координатная сетка X Y Z
2) есть камера (через которую юзер видит объект)
3) считаем угол между плоскостью камеры и плоскостями координатной сетки
5) который угол меньше, в той плоскости и начинаем таскать объект (конечно не забыв транслировать экранные координаты в координаты на той плоскости)
Ну и до кучи сделать 3 стрелочки (как во всех 3d-редаторах), которые будут дублировать оси X Y Z. Если кликнули в стрелку, то считать, что таскаем вдоль этого вектора.