# Hexagonal meshing in Plot3D

How can I include hexagonal meshing on a Plot3D such as this?

Plot3D[Sin[x], {z, -3, 3}, {x, -4 \[Pi], 4 \[Pi]}]


Using rm-rf's hextile yet again

hexTile[n_, m_] := With[{hex = Polygon[Table[{Cos[2 Pi k/6] + #, Sin[2 Pi k/6] + #2},
{k, 6}]] &}, Table[hex[3 i + 3 ((-1)^j + 1)/4, Sqrt/2 j], {i, n}, {j, m}] /.
{x_?NumericQ, y_?NumericQ} :> 2 π {x/(3 m), 2 y/(n Sqrt)}

ClearAll[plot3DwHexMesh]
plot3DwHexMesh[f_, n_: 20, m_: 20, s_: Yellow, o : OptionsPattern[]] :=
Graphics3D[hexTile[n, m] /. Polygon[l_] :>
{s, Polygon[l], Polygon[{Pi/5, 0} + {-1, 1} # & /@ l]} /.
Polygon[l_List] :> Polygon[{#, #2, f[#, #2]} & @@@ l], o,
Axes -> False, PlotRange -> All, Lighting -> "Neutral"]


Examples:

plot3DwHexMesh[Sin[#] &] plot3DwHexMesh[Sin[# + #2] &, 20, 20,
Directive[Orange, Opacity[0.8], Specularity[White, 30]],  Boxed -> False] • The problem with this, and every variant I tried using hexTile, is that I couldn't find a way to respect the original PlotRange. plot3DwHexMesh should, ultimately, take the x and y range into consideration, and show the Axes with the correct values. – Jason B. Jan 23 '18 at 21:32
• @JasonB, right; I was puzzling over exactly those challenges. Not easy. Hence False as the default option value for Axes:) – kglr Jan 23 '18 at 21:40