In versions 10.2+, you can use `SlicedContourPlot3D` potential1 = Plot3D[x + y - x y, {x, -5, 5}, {y, -5, 5}, ClippingStyle -> None, Mesh -> None, ColorFunction -> (ColorData["Rainbow"][#3] &), PlotStyle -> Directive[Opacity[0.9]], PlotTheme -> "Detailed"]; We can use `PlotRange[potential1]` to get the x, y, and z ranges. {xrange, yrange, zrange} = PlotRange[potential1]; contours = SliceContourPlot3D[x + y - x y, z == zrange[[1]], {x, xrange[[1]], xrange[[2]]}, {y, yrange[[1]], yrange[[2]]}, {z, zrange[[1]], zrange[[2]]}, Contours -> 15, PlotPoints -> 50, ColorFunction -> "TemperatureMap"]; Show[potential1, contours, ImageSize -> 500, Lighting -> "Neutral", PlotRange -> All, BoxRatios -> {1, 1, .6}, FaceGrids -> {Back, Left}, ViewPoint -> {4, -4, 2}] [![enter image description here][1]][1] **Update:** _I need ContourPlot3D be transparent, Only curves appear_ Use `ContourShading -> None` or ``ContourShading -> Opacity[0]` (and remove `ColorFunction-> "TemperatureMap"`) in `SliceContourPlot3D` to get [![enter image description here][2]][2] _If I changed range of x,y∈[0,1] does not give the desired result_ This is what I get when I use `{x, 0, 1}` and `{y, 0, 1}` in both `Plot3D` and `SliceContourPlot3D`: [![enter image description here][3]][3] [1]: https://i.sstatic.net/hgI6x.png [2]: https://i.sstatic.net/Vts4G.png [3]: https://i.sstatic.net/I3u6M.png