Right now I'm working on improving a section of an app that we are redesigning on my workplace.
Basically it's an app that runs on a tablet and the specific part of the app that I present here is an option to rotate up/down and sideways a 3D representation of a physical object.
Initially the interface is like this:
The problem here are:
You could use a slider for each axis with a button on each side to increment the angle just one degree (as the user needs precision). Also if the user wants an specific angle he can enter it in the number input (which should auto-update with the slider, and the other way round).
The most comfortable 3D design packages I used allows to use a concept that is very intuitive and friendly both to mouse and touchscreen.
You select the rotation icon, then point on any place of the screen and drag. The system behaves as you are pushing a transparent sphere that contains your drawing. It is easy for people to understand what is going on. Specially if you draw a wireframe or arrows representing the transparent sphere that is being touched by the user.
Analog concepts can be done for translation and zoom.
Blender, for instance, has an 3D cursor that controls the center of rotation. The anoying part is how to tell the package when you want to set the cursor position, select an object or do some operation. But if I understood your case this is not really necessary.