I'm displaying a mesh object in a WPF Viewport3D, and would like to be able to manipulate the view, using the mouse, in a similar fashion to many programs that display 3D models (e.g. openSCAD, STL viewers, blender, etc.).
I have a Point3D for the cameraPosition, and a Vector3D for the lookDirection. I also have a directional light source pointing in the lookDirection.
I had a go at each; zoom's the only one I got working alright, which is simply: cameraPosition = zoomFactor * (cameraPosition - lookedAtPoint) + lookedAtPoint; (I've set lookedAtPoint = cameraPosition - cameraPosition.toVector().length * lookDirection / lookDirection.length)
My results are not like those in real 3D model viewer software. Does anyone know the equations for pan, rotate and zoom normally used (given dX/dY/dScroll of the mouse)?