When you change the ViewPoint
, it's trying to do the following:
{2,v,2} = {2.1, 2.5, 2.3} (* where 2.1, 2.5, and 2.3 are whatever random values your rotation produced *)
which isn't going to work. You can use the second argument of Dynamic
to provide a custom setter function.
Manipulate[
Plot3D[Sin[n x y], {x, 0, 3}, {y, 0, 3},
ViewPoint -> Dynamic[{2, v, 2}, (v = Clip[#[[2]], {-2, 2}]) &],
SphericalRegion -> True, Ticks -> None], {n, 1, 4}, {v, -2, 2}]