Starting from this Plot3D
:
Plot3D[
Exp[-x^2 - y^2],
{x, -3, 3},
{y, -3, 3},
PlotPoints -> 100,
PlotRange -> {0, 1},
PlotRangePadding -> None,
Mesh -> None,
PlotPoints -> 50,
BoxRatios -> {1, 1, 1},
Boxed -> False,
AxesLabel -> Automatic,
ViewPoint -> 100 {-2, -2, 3}
]
let me address the question of how to use both ColorFunction
and Specularity
at the same time.
The key to this is the following sentence in the documentation of ColorFunction
:
The function specified by ColorFunction must return color directives such as RGBColor and Hue or named colors such as Red and Blue.
Supplying this function to ColorFunction
will turn the plot red:
ColorFunction -> (Red &)
Adding Specularity
(White
is too harsh so I choose 60% white):
ColorFunction -> ({Specularity[GrayLevel[0.6], 10], Red} &)
Using an actual colour function instead of a single colour:
ColorFunction -> ({Specularity[GrayLevel[0.6], 10], Hue[.65 (1 - #3)]} &)

As we can't just modify the default lighting angle, changing ViewPoint
will alter where the reflection is with respect to the plot surface. (For example, try ViewPoint -> {-2, -2, 1}
, which is closer to that in the figure you provide, but then the reflection is no longer at the base.) You will have to experiment with Lighting
to create from scratch the lighting condition that gives you the reflection where you want for a particular ViewPoint
.
Plot3D[Exp[-x^2 - y^2], {x, -3, 3}, {y, -3, 3}, PlotPoints -> 50, PlotRange -> All, PlotRangePadding -> None, ColorFunction -> Function[{x, y, z}, Hue[.65 (1 - z)]], Mesh -> None, PlotPoints -> 50, Lighting -> "Neutral"]
$\endgroup$