If you're trying to animate the sphere in the way you described, you need to interpolate between the two rotations. I haven't tried this, so you'll have to experiment on your own, but, you should be able to use Quaternion.Lerp or Quaternion.Slerp to achieve this.
Slerp (sphericall interpolation), for example, takes in two quaternions - one representing the initial rotation, and another one representing the target rotation:
Quaternion Slerp(Quaternion initial, Quaternion final, float t);
The t parameter ranges from 0 - initial rotation, to 1 - final rotation.
Assuming the sphere is untransformed (not rotated) to begin with, you can use Quaternion.identity as the initial rotation, otherwise, use transform.localRotation, where transform is the sphere's transform.
Since your point on the sphere is represented by a vector, you can use Quaternion.FromToRotation to get the quaternion representing the final rotation.
Quaternion FromToRotation(Vector3 fromDirection, Vector3 toDirection);
This will produce a rotation that, when applied to the sphere, reorients your point so that it's "looking" in the toDirection.
the black point is Vector3 in world space
The fromDirection and toDirection vectors need to be expressed in (sphere's) local space (unless your sphere happens to sit at [0, 0, 0]). To get a vector in local space, just subtract (vector in world space) - (sphere's location).
The toDirection is just (camera location) - (sphere's location). I'm not sure if you need to normalize these vectors (probably not).
Finally, you'd apply the interpolation over time; you'll have to calculate t so that it reaches 1 after your desired animation time has elapsed:
elapsedAnimTime += deltaTime; float t = elapsedAnimTime / desiredTotalAnimTime; transform.localRotation = Quaternion.Slerp(initial, final, t);
Note that you'll (probably) have to put in some conditions to stop animating after t reaches 1.
Because it's a quaternion, it should reorient your sphere using the "shortest path" (it won't go through some weird angle).
transform.position.forward. \$\endgroup\$sphere.transform.position + (blackSpot - sphere.transform.position).normalized * distance; camera.transform.LookAt(sphere.transform);\$\endgroup\$